util

package
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 1, 2024 License: MIT Imports: 23 Imported by: 0

Documentation

Overview

定义共享的基类和方法

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CalculateFileHash

func CalculateFileHash(file afero.File) ([]byte, error)

计算文件的SHA-256 hash

func CalculateHash

func CalculateHash(data []byte) []byte

计算[]byte的SHA-256 hash值

func CheckAndMkdir

func CheckAndMkdir(dirPath string) error

CheckAndMkdir 检查文件夹是否存在,不存在则新建

func CompareHashes added in v1.0.0

func CompareHashes(hash1, hash2 []byte) bool

CompareHashes 比较两个哈希值是否相等 参数:

  • hash1: []byte 第一个哈希值
  • hash2: []byte 第二个哈希值

返回值:

  • bool: 如果两个哈希值相等,返回 true;否则返回 false

func CopyFile added in v1.0.0

func CopyFile(opt *opts.Options, afe afero.Afero, srcSubDir, srcFileName, destSubDir, destFileName string) error

CopyFile 将文件从源路径复制到目标路径

func CreateFile added in v1.0.0

func CreateFile(opt *opts.Options, afe afero.Afero, subDir, fileName string) error

CreateFile 在指定子目录创建一个新文件

func DecodeFromBytes

func DecodeFromBytes(data []byte, result interface{}) error

DecodeFromBytes 使用 gob 解码将 []byte 转换为指定的数据结构

func Delete added in v1.0.0

func Delete(opt *opts.Options, afe afero.Afero, subDir, fileName string) error

Delete 删除指定的文件

func DeleteAll added in v1.0.0

func DeleteAll(opt *opts.Options, afe afero.Afero, subDir string) error

DeleteAll 删除所有文件

func EncodeToBytes

func EncodeToBytes(data interface{}) ([]byte, error)

EncodeToBytes 使用 gob 编码将任意数据转换为 []byte

func Exists added in v1.0.0

func Exists(opt *opts.Options, afe afero.Afero, subDir, fileName string) (bool, error)

Exists 检查指定的文件是否存在

func FromBytes

func FromBytes[T any](data []byte) (T, error)

FromBytes 泛型函数,用于将 []byte 转换回指定类型

func GenerateFileID added in v1.0.0

func GenerateFileID(checksum []byte) (string, error)

GenerateFileID 生成用于文件的FileID

func GenerateSecretFromPrivateKeyAndChecksum added in v1.0.0

func GenerateSecretFromPrivateKeyAndChecksum(ownerPriv *ecdh.PrivateKey, checksum []byte) ([]byte, error)

GenerateSecretFromPrivateKeyAndChecksum 使用私钥和文件校验和生成秘密

func GenerateSegmentID added in v1.0.0

func GenerateSegmentID(fileID string, index int) (string, error)

GenerateSegmentID 生成用于文件片段的SegmentID

func GenerateTaskID added in v1.0.0

func GenerateTaskID(ownerPriv *ecdh.PrivateKey) (string, error)

GenerateTaskID 生成任务ID 使用时间戳、私钥和随机数生成一个唯一的taskID 参数:

  • ownerPriv *ecdh.PrivateKey: 所有者的私钥

返回值:

  • string: 生成的taskID
  • error: 处理过程中发生的任何错误

func GetContentType added in v1.0.0

func GetContentType(file afero.File) (string, error)

GetContentType 获取 MIME 类型的方法

func GetFileChecksum added in v1.0.0

func GetFileChecksum(file afero.File) ([]byte, error)

GetFileChecksum 计算文件的校验和的方法

func JoinStrings added in v1.0.0

func JoinStrings(strs ...string) string

joinStrings 函数将任意数量的字符串参数组合成一个单一的字符串。 这里使用了变长参数,允许函数接受任意数量的字符串。 特别地,函数内部对字符串中的逗号和反斜杠进行了转义处理, 以确保它们不会影响最终组合字符串的解析。

func MarshalPrivateKey added in v1.0.0

func MarshalPrivateKey(privateKey *ecdh.PrivateKey) ([]byte, error)

MarshalPrivateKey 将ECDSA私钥序列化为字节表示 参数:

  • privateKey (*ecdh.PrivateKey): 输入的ECDSA私钥

返回值:

  • []byte: 私钥的字节序列
  • error: 失败时的错误信息

func MergeFieldsForSigning

func MergeFieldsForSigning(fields ...interface{}) ([]byte, error)

MergeFieldsForSigning 接受任意数量和类型的字段,将它们序列化并合并为一个 []byte。

func OpenFile added in v1.0.0

func OpenFile(opt *opts.Options, afe afero.Afero, subDir, fileName string) (*os.File, error)

OpenFile 打开指定子目录和文件名的文件

func Read added in v1.0.0

func Read(opt *opts.Options, afe afero.Afero, subDir, fileName string) ([]byte, error)

Read 从指定的文件读取数据

func RenameFile added in v1.0.0

func RenameFile(opt *opts.Options, afe afero.Afero, oldSubDir, oldFileName, newSubDir, newFileName string) error

RenameFile 重命名或移动文件

func SeparateHashFromData

func SeparateHashFromData(combinedData []byte) ([]byte, []byte, error)

SeparateHashFromData 从数据中分离出SHA-256哈希值和原始数据

func SplitString added in v1.0.0

func SplitString(combined string) ([]string, error)

splitString 函数将一个组合过的字符串分割成原始的字符串数组。 这个函数逆转了 joinStrings 函数的操作,正确处理了转义的逗号和反斜杠。

func ToBytes

func ToBytes[T any](data T) ([]byte, error)

ToBytes 泛型函数,用于将不同类型的数据转换为 []byte

func UnmarshalPrivateKey added in v1.0.0

func UnmarshalPrivateKey(privKeyBytes []byte) (*ecdh.PrivateKey, error)

UnmarshalPrivateKey 将字节序列反序列化为ECDSA私钥 参数:

  • privKeyBytes ([]byte): 私钥的字节表示

返回值:

  • *ecdh.PrivateKey: 反序列化后的ECDSA私钥
  • error: 失败时的错误信息

func WaitForStatusChange added in v1.0.0

func WaitForStatusChange(cond *sync.Cond, checkStatus func() bool)

waitForStatusChange 是一个通用的等待状态变化的函数。它接受一个条件变量和一个检查状态的函数。 它会阻塞调用它的goroutine直到checkStatus函数返回true。

func WalkFiles added in v1.0.0

func WalkFiles(opt *opts.Options, afe afero.Afero, subDir string, callback func(filePath string, info os.FileInfo) error) error

WalkFiles 遍历指定目录下的文件并执行回调函数

func Write added in v1.0.0

func Write(opt *opts.Options, afe afero.Afero, subDir, fileName string, data []byte) error

Write 写入数据到指定的文件

Types

type BitSet added in v1.0.0

type BitSet struct {
	// contains filtered or unexported fields
}

BitSet 实现一个简单的位集合,用于表示多个布尔值的集合。 bits 字节切片,用于存储位信息。

func NewBitSet added in v1.0.0

func NewBitSet(size int) *BitSet

NewBitSet 创建一个新的 BitSet 实例。 参数:

  • size: int 表示位集合的大小。

返回值:

  • *BitSet: 新创建的 BitSet 实例。

func (*BitSet) All added in v1.0.0

func (b *BitSet) All() bool

All 检查位集合中的所有位是否都为 1。 返回值:

  • bool: 如果所有位都为 1,返回 true;否则返回 false。

func (*BitSet) Any added in v1.0.0

func (b *BitSet) Any() bool

Any 检查位集合中是否有任意一位为 1。 返回值:

  • bool: 如果有任意一位为 1,返回 true;否则返回 false。

func (*BitSet) Clear added in v1.0.0

func (b *BitSet) Clear(i int)

Clear 将位集合中的某个位清零。 参数:

  • i: int 表示要清零的位的索引。

func (*BitSet) IsSet added in v1.0.0

func (b *BitSet) IsSet(i int) bool

IsSet 检查位集合中的某个位是否为 1。 参数:

  • i: int 表示要检查的位的索引。

返回值:

  • bool: 如果该位为 1,返回 true;否则返回 false。

func (*BitSet) None added in v1.0.0

func (b *BitSet) None() bool

None 检查位集合中的所有位是否都为 0。 返回值:

  • bool: 如果所有位都为 0,返回 true;否则返回 false。

func (*BitSet) Set added in v1.0.0

func (b *BitSet) Set(i int)

Set 设置位集合中的某个位为 1。 参数:

  • i: int 表示要设置的位的索引。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL