# wdtools **Repository Path**: helloworldgo/wdtools ## Basic Information - **Project Name**: wdtools - **Description**: 吾在开发中积攒的一些工具,留以备用 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: https://gitee.com/yutiandou/wdtools - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2020-04-27 - **Last Updated**: 2020-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # wdtools #### 介绍 go语言开发的脚手架,所有功能均来自实际开发项目,且持续更新,持续集成, 全中文注释,get及用 #### 目录说明 1. wdcod:加密相关 ------------------------>哈希<------------------------------------------------- func Sha1(data []byte) string //Sha1 ..计算一段内容的sha1值40位 func FileSha1(file *os.File) string //FileSha1 ..计算一个文件的sha1值40位 func MD5(data []byte) string //MD5 ..计算一段内容的MD5值32位 func FileMD5(file *os.File) string //FileMD5 ..计算一个文件的md5值32位 ------------------->非对称加密相关<-------------------------------------------- func Getkeys(keypath string) //Getkeys ..在keypath目录下生成私钥和公钥 例:Getkeys("/home/go/src/test") func RSA_encrypter(buf []byte, msg []byte) []byte //RSA_encrypter ..使用读取后的公钥buf进行对msg进行加密 func RSA_encrypter_path(path string, msg []byte) []byte //RSA_encrypter_path 使用公钥文件进行加密 func RSA_decrypter(buf []byte, cipherText []byte) []byte //RSA_decrypter ..使用读取后的私钥进行解密 func RSA_decrypter_path(path string, cipherText []byte) []byte //RSA_decrypter_path ..使用私钥文件进行解密 func Signname(buf []byte, msg []byte) []byte //Signname 使用读取后的私钥签名,path是私钥路径,msg是要签名的信息 func Signname_path(path string, msg []byte) []byte //Signname_path 使用私钥文件签名,path是私钥路径,msg是要签名的信息 func VerifySign(buf []byte, signText []byte, plainText []byte) bool //VerifySign ..使用读取后的公钥进行签名数据验证 func VerifySign_path(path string, signText []byte, plainText []byte) bool //VerifySign_path ..使用公钥文件进行签名数据验证 2. wdevent: 事件相关 ----------------------->事件------------------------------------------------------------- func NewEvent() I_Event //新建事件 AddEvent(string, EventCall) //添加事件 string为事件名,EventCall为回调函数func(interface{}) RemoveEvent(string) //移除事件 ExecEvent(string, interface{}) //执行事件 Clear() //清理事件 ---------------------->定时事件<--------------------------------------------------------- func NewTimeEvent(cycletime time.Duration) T_Event //新建定时事件,cycletime 为轮询时间 AddEvent(string, int64, bool, func(int64)) //添加定时事件,string:事件名 int64:多少秒后触发 func(int64):回调函数,参数为当前Unix时间 RemoveEvent(string) //移除事件 Stop() //停止所有事件,结束计时轮训 Clear() //清理所有事件 3. wdfile:文件操作相关 func PathExists(path string) (bool, error) //PathExists ...判断路径是否存在 func GetFileSize(filename string) (result int64) //GetFileSize ..获取文件大小 func ReadFileByLoadPathorURL(pu string)(data []byte,err error) //ReadFileByLoadPathorURL 加载文件,文件是本地或网络资源 func OpenFileOrCreate(path string)(*os.File,error) //打开一个文件,若路径存在则打开,无则创建响应目录和文件 4. wdlog:日志相关 func SetLogLevel(level logLevel) //SetstdLevel ..设置日志等级 func SetLogOptions(opt logOptions) //SetstdOptions ..设置打印模块 func SetLogToTerminal() //SetLogToTerminal ..设置输出到控制台 func SetLogToFile(filepath string) //SetstdToFile 要将日志输出到那个文件 func SetLogToDirectory(path string,maxRows int,f func()) //SetstdToDirectory 设置输出目录 自动切割,maxRows为每个文件的最大行数,f为空 func StopWDLog() //StopWDLog ..停止日志输出 Debugf,Debugln,Warning,Error,Errorf,Errorln,Fatalf,Fatalln,FatalErr,PanicErr,Panicln,Panicf //日志输出函数 5. wdmail:邮件发送 func NewEMailMessage(host string, port int, user, passwd string) I_EMail //新建邮件 SetSrcAddress(address, name string) //SetSrcAddress ..设置邮件发送者地址,name为自定义邮箱别名,无则为“” SetdesAddress(des ...string) //SetdesAddress ..设置收件人地址,可以有很多个 SetCc(cc ...string) //SetCc ..设置抄送人 SetSubject(subject string) //SetSubject ..设置邮件主题 AddAttch(filepath string) //AddAttch ..追加附件 SetBody(context string) //SetBody ..设置正文 SetHeaders(h map[string][]string) //SetHeaders ..一个函数全部设置 //参考链接:https://godoc.org/gopkg.in/gomail.v2 Send() error 6. wdstruct:数据结构相关 -------------------->树<-------------------------------- NewAVLTree(data interface{}, myfunc comparator) (*AVLNode, error) //NewAVLTree 平衡二叉树,myfunc为比较算法,树的其他函数自行摸索,全部中文注释,这里懒得写了 -------------------->链表<------------------------------ New_Double_Link() I_DoduleLink_hand //New_Double_Link 新建双向连表,其他函数自行看代码,全部中文注释,这里懒得写了 -------------------->队列<------------------------------ New_Deque() I_Deque_Hand //New_Deque 新建双端队列,其他函数自行看代码,全部中文注释,这里懒得写了 -------------------->动态协程池<--------------------------- NewGrtnPool(args ...GrtnPoolOption) *GrtnPool //动态协成池,参数为函数选项式模式 SetGrtnMax(max int32) //设置最大协程数 SetGrtnFree(free int32) //设置空闲协程数 SetGrtnTaskLen(len int) //设置消费队列长度 SetGrtnPoolType(t GrtnPoolType) //设置协程工作类型,AsyncPool:异步阻塞模式,DealPool:处理模式,cpu利用率最大,不支持阻塞 Run() //协程池开始工作 GetGoroutineCount()int32 //获取当前工作协程个数 GetTaskCount()int //获取当前未处理任务数 Submit(f func()) //提交一个工作到协程池 TryClose() //不在接收任务,处理完剩余任务后关闭协程池 ForcedClose() //强制关闭 -------------------->固定对象池<------------------------------ NewObjectPool(max int32, objectcall I_Object_Pool) I_Object_Pool_Hand //NewObjectPool,新建持久对象池 max最大个数,objectcall生成对象的方法,区别sync.pool,本对象池不会动态销毁对象,直到池满。 Get() (obj interface{}) Give(obj interface{}) 7. wdsys:系统相关 GetLocalIP() //GetLocalIP ..获取本地ip地址 GetCpuPercent() (float64, int) //GetCpuPercent 获取Cpu使用率,逻辑盒数,该函数至少需要一秒才能返回 GetCpuLoad(la int) float64 //GetCpuLoad 获取cpu负载,1 5 15分钟的负载 GetMemoryInfo() (total, available, used uint64, percent float64) //GetMemoryInfo ..获取内存使用情况 总数 空闲 使用 使用率 GetDiskInfo() ([]disk.PartitionStat, error) //GetDiskInfo 获取分区信息 。。diskInfo, _ := disk.Usage(PartitionStat.Mountpoint) 获取使用情况 GetHostInfo() (info []string) //GetHostInfo 获取系统信息 //0:主机名称 例--->WIN-DJ748UMR6RC //1:运行时间 //2:开机时常 //3:运行系统 例--->windows //4:虚拟总线 例--->Microsoft Windows 7 Ultimate Service Pack 1 //5:总线家族 例--->Standalone Workstation //6:系统类型 例--->x86_64 //7:主机ID 例--->16f1ce85-3f15-4f57-b3e9-9057b0666d5a GeneratePprofFile(ptype pproftype, path string, start time.Duration, end time.Duration) error //GeneratePprofFile 生成监控文档 监控类型,生成文件路径,多久后开始,开始多久后结束 SystemQuit(call func()) //SystemQuit ..注册系统退出时的回调函数 //[获取系统信息,进行服务监控,非常详细,参考](https://blog.csdn.net/qq_25490573/article/details/103761814) 8. wdutil:不知道和什么相关 RunDaemon() //以守护模式运行 必须运行在函数最开启 RunDaemonByFlag() //根据参数 -d=true 运行为守护模式,默认false StructToData(obj interface{}) map[string]string //StructToData ..结构体转map DataToStructByTag(data map[string]string, obj interface{}, tag string) //DataToStructByTagSql 根据结构体中指定tag标签映射数据到结构体中并且转换类型 DataToStructByTagSql(data map[string]string, obj interface{}) //DataToStructByTagSql 根据结构体中sql标签映射数据到结构体中并且转换类型 RegexpFromStringS(src string, query string, number int) (result [][]string) //RegexpFromStringS ..从一个字符串中匹配一个正则表达式,详见代码注释 RegexpFromString(src string, query string, number int) (result []string) //RegexpFromString ..从一个字符串中匹配一个正则表达式 #### 使用说明 1. 详细使用说明见代码注释 2. 代码bug联系作者, 3. 包中的大多数都是实战上抽离出来的代码,可靠有效 4. 持续更新,未完待续 #### 参与贡献 1. 只有苦逼作者一个。。。 #### 作者联系方式 1. 邮箱:1443965173@qq.com 2. 电话:什么,想给我打电话,没门