- [feat] nazabits: new func ReadString, ReadBits32IgnErr, ReadStringIgnErr
- [opt] nazalog: windows平台下,日志级别字段不要携带颜色
- [chore] update go min ver 1.14 -> 1.18 to avoid github ci failed
- [fix] connection: not working set ModWriteChanSize
- [feat] taskpool: 增加Dispose方法,用于完全释放池内资源,包括所有协程
- [fix] connection: ModWriteChanSize为0时不应该开启异步发送协程
- [feat] nazalog: 增加Option.IsRotateHourly,日志可以按小时翻滚
- [fix] nazalog: 修复IsToStdout设置为false不生效的bug
- [feat] nazalog: 增加Option.HookBackendOutFn,业务方可以注册回调拿到最终的日志内存数据
- [opt] nazanet: UdpConnection当RAddr没有配置时,Write函数使用接收数据时的对端地址
- [opt] nazahttp: 解析first line失败时,返回的错误信息更完整
- [feat] nazanet: UdpConnection增加修改socket读写缓存区的函数
- [feat] bele: 增加小端uint16的一些函数
- [feat] nazasync: 增加一个竞争失败时非阻塞的Once
- [opt] nazabytes::Buffer: (1) NewBuffer的initCap参数支持用0初始化 (2) Grow函数扩容前的大小如果0则不打印debug日志 (3) 增加ResetAndFree函数,重置并不再持有底层内存块
- [fix] nazabytes: 修复扩容时bug
- [feat] nazajson: 增加序列化、反序列化json文件的函数
- [opt] nazabytes: 优化Buffer的扩容逻辑
- [fix] nazareflect: 修复两个无符号整型比较时的bug
- [feat] nazalog: 增加Init接口函数
- [test] filesystemlayer: 测试内存模式
- [chore] CI: 增加定时任务,增加测试覆盖率
- [doc] 更新README的徽章
- [fix] nazalog: windows 日志无法按天翻滚
- [feat] chartbar: 可配置隐藏Name和Num
- [opt] chartbar: 都是整数则不显示小数部分
- [opt] chartbar: 都是小整数则按原始值绘制
- [opt] nazahttp: 增强兼容性,解析http header时,存在没有冒号的行。把没有冒号的行内容判定为属于上一个header的value
- [feat] mock: 增加Sleep函数
- [fix] nazabytes: 修复Write函数错误写入的bug
- [feat] dataops: 增加SliceAllOf和SliceMinMax函数
- [refactor] nazabytes: 删除package nazastring,部分内容重构后移入package nazabytes中
- [fix] nazahttp: 修复ReadHttpHeader读取不完整就返回错误的bug
- [fix] nazahttp: 增加解析http header first line的兼容性
- [feat] nazaerrors: Wrap函数可填入补充信息
- [refactor] nazahttp: 丰富error信息
- [feat] package nazabytes: 新增包,提供Buffer struct
- [feat] package dataops: 新增包,用于处理数据,比如切片类型转换,计数等等
- [feat] package chartbar: 支持负数; 支持只绘制容器中的部分元素; 支持配置柱状图样式
- [refactor] 删除pkg/fake/time.go
- [feat] package mock: 新增的包,目前可以模拟标准库中的time.Now, time.NewTimer
- [refactor] 移除package/ic
- [refactor] package nazacolor: color包重命名为nazacolor
- [fix] package chartbar: 解决中文对齐问题
- [chore] min golang version 1.13 -> 1.14
- [feat] package chartbar: 可外部指定排序方式
- [feat] package connection: 增加Writev函数
- [feat] package color: 新包,控制台打印颜色相关
- [refactor] package nazalog: 颜色相关的改为依赖package color
- [feat] package nazajson: 新增函数CollectNotExistFields,用于收集json中所有不存在的字段
- [feat] package log: 暴露一些ASCII打印颜色的字符串常量
- [feat] package nazabits: 新增func ReadUeGolomb和ReadSeGolomb,分别读取无符号和有符号哥伦布编码数据
- [feat] package nazalog: Assert函数可选择填入描述信息
- [fix] package connection: 先关闭net.Close再发送通知消息至channel
- [feat] package nazahttp: header支持重复键值
- [feat] package chartbar: 新的package,用于在控制台绘制ascii柱状图
- [fix] package nazaatomic: arm32编译失败
- [feat] package nazasync: 优化Mutex的实现,更方便的定位Mutex的问题
- [refactor] 重构naza整个项目的命名规则,见 q191201771/lal#87
- [feat] nazalog: 新增日志级别LevelTrace,目前已有trace, debug, info, warn, error, fatal, panic
- [feat] nazalog: 新增日志级别LevelNothing,初始化成这个级别的Logger,不会打印任何内容
- [feat] nazalog: 提供一个Logger实例DummyLogger,该实例不打印任何内容
- [feat] nazalog: 新增SetGlobalLogger,业务方可以设置替换全局Logger
- [feat] nazalog: 新增GetGlobalLogger,业务方可以获取全局Logger,比如将全局Logger赋值给其他Logger使用
- [feat] filesystemlayer: 新的包,提供一层文件操作的抽象,可以使用内存替换磁盘作为存储
- [refactor] sync: Mutex中使用unique.SingleGenerator
- [perf] nazabits: 提高BitReader性能
- [feat] nazabits: 增加BitReader::SkipBits,SkipBytes函数,用于跳过数据
- [feat] nazabits: 增加BitReader::AvailBits函数,用于获取剩余可读bit数量
- [fix] nazaatomic: 匹配平台写错导致重定义
- [fix] package nazaatomic: mips mipsle两个32位的平台的64位原子整型使用mutex来避免崩溃
- [feat] package nazalog: Level和AssertBehavior两个枚举类型增加ReadableString返回对应的可读字符串
- [feat] package nazasync:新增的package,其中的Mutex可用于debug锁方面的问题
- [feat] 新增package crypto: 内部包含PKCS5和PKCS7的加密、解密函数,AES CBC的加密、解密函数
- [refactor] unique: 拆分成SingleGenerator,MultiGenerator,业务方可以使用多个SingleGenerator来获得更高的性能
- [feat] nazabits: BitReader,增加一种使用方式,可多次读取,最后判断是否发生错误
- [feat] nazalog: 增加配置项 1 是否在每行日志首部添加时间戳的信息 2 时间戳是否精确到毫秒 3 日志是否包含日志级别字段
- [fix] nazaatomic: uint64和int64,在32位系统时,使用mutex替代标准库中的atomic,避免崩溃,见文章:https://pengrl.com/p/21030/
- [feat] package nazaerrors: 增加Wrap函数,用于封装error
- [chore] 最低Go依赖版本提高至1.13
- [feat] package nazastring,增加SubSliceSafety函数,安全的获取切片的子切片
- [feat] package nazaerrors,增加CombineErrors函数,将多个error组合成一个
- [refactor] package nazahttp: 删除函数ReadHTTPRequest,新增函数ReadHTTPRequestMessage,函数ReadHTTPResponseMessage
- [fix] package taskpool: 全局对象解析task参数错误
- [feat] package nazahttp: 新增函数ReadHTTPRequest,读取HTTP请求并解析
- [feat] 新增package defertaskthread,用于执行延时任务
- [feat] func UnmarshalRequestJsonBody 反序列化http json body
- [feat] func PostJson 序列化json数据做http post
- [fix] package nazanet: 使用net.UDPConn方式初始化UDPConnection时,可以同时初始化RAddr远端地址
- [feat] package connection: 增加GetStat函数,用于获取连接读取、发送数据的总字节数
- [feat] package nazabits: 新增函数ReadBits64
- [feat] package nazanet: UDPConnection支持IPv6
- [refactor] package nazanet: UDPConnection构造函数支持更多配置
- package nazanet:
- [refactor] 重构UDPConnection,既可作为服务端连接,又可作为客户端连接
- package nazastring:
- [feat] 增加func DumpSliceByte
- package circularqueue:
- [feat] 新增package,底层基于切片实现的固定容量大小的FIFO的环形队列
- package nazanet:
- [feat] 这是一个新增的package,其中struct AvailUDPConnPool,可以从指定的UDP端口范围内,寻找可绑定监听的端口,绑定监听并返回
- [feat] 新增struct UDPConnection,对UDP连接对象的简易封装
- package bele:
- [feat] 新增func BEPutUint16, BEPutUint64
- package nazahttp:
- [fix] 当request line和status line存在多个空格时,解析错误
- package bininfo:
- [feat] 增加git tag信息
- package nazareflect:
- [feat] 新增package,提供三个函数IsNil,Equal,EqualInteger
- package connection:
- [feat] 增加连接关闭标志,使用channel发送数据时,如果连接已关闭,可以向调用方返回错误
- [feat] 增加Option.WriteChanFullBehavior,使用channel发送数据时,如果channel满了,可以配置是阻塞还是返回错误
- [fix] 设置wChan大小时,应该使用WriteChanSize而不是WriteBufSize
- [refactor] 不同错误返回不同的错误值
- [refactor] 去除一些debug日志
- package nazabits:
- [feat] BitReader的所有函数增加读取越界检查
- [feat] 增加BitReader::ReadGolomb函数,读取0阶指数哥伦布编码
- package nazahttp:
- [feat] nazahttp: 增加函数ReadHTTPHeader,ParseHTTPRequestLine,ParseHTTPStatusLine,读取HTTP头部信息
- [refactor] 函数GetHttpFile,DownloadHTttpFile重命名为GetHTTPFile,DownloadHTTPFile
- package lru:
- [feat] 新增package,一个基础的LRU缓存
- package nazahttp:
- [feat] 新增函数GetHttpFile,用于下载HTTP文件
- package nazabits:
- [fix] BitWriter::WriteBit如果原数据不为零值时,会错误覆盖非写入的位
- package nazabits:
- [feat] 新增 BitReader::ReadBits16,ReadBits32,ReadBytes函数
- package nazabits:
- [refactor] BitReader::ReadBits重命名为ReadBits8,BitWriter::WriteBits重命名为WriteBits8,WriteBits16
- [fix] BitWriter::WriteBit传入的值不为0和1时,只取最低位
- package nazabits:
- [feat] 增加BitReader用于按位读取,增加BitWriter用于按位写入
- [refactor] GetBit8等函数修改整型类型
- package nazalog:
- [feat] 新增WithPrefix函数,用于支持设置前缀,并且前缀可叠加,使得可以按repo ,package,对象等维度添加不同的前缀
- [feat] 新增Println等函数,方便替换标准库日志
- [perf] 减小锁粒度
- [test] 测试覆盖率增加至100%
- [refactor] 删除FatalIfErrorNotNil, PanicIfErrorNotNil, Outputf, writeShortFile四个函数函数
- package nazabits:
- [feat] 新增GetBit16,GetBits16函数
- package fake:
- [feat] 新增WithRecover函数
- [feat] 新增time.Now hook相关的接口
- [refactor] 重新命名os.Exit hook相关的接口
- package nazabits:
- [feat] 新增package,提供一些位运算函数
- package taskpool:
- [feat] 增加Option.MaxWorkerNum,可配置最大协程并发数量
- [feat] task任务函数可携带参数
- package nazalog:
- [feat] 新增Assert函数,并可配置断言失败后的行为
- package bele:
- [feat] 增加一些ReadXXX函数,从io.Reader中读取数据
- [feat] 新增BEUint64函数
- package ratelimit:
- [feat] 新增漏桶LeakyBucket和令牌桶TokenBucket,把以前的RateLimit删了
- package nazalog:
- [feat] 新增Sync函数,将日志刷盘
- [feat] panic和fatal前调用Sync
- [fix] 全局的Panic和Panicf忘记调用标准库中的panic
- [fix] 使用IsRotateDaily控制日志是否按天翻转,之前没有判断这个标志,导致总是按天翻转
- package nazahttp:
- [feat] 新增DownloadHttpFile函数,下载http保持为本地文件
- package snowflake
- [feat] 新增的包,分布式唯一性64位ID生成器
- package consistenthash:
- [feat] Nodes 接口返回 node 对应的 point 范围,供调用方判断 hash 是否均匀
- [feat] hash 函数可由外部配置
- [refactor] 增加 struct Option
- [refactor] 内部 point 类型 int -> uint32
- package bitrate:
- [feat]可配置 bitrate 返回时的单位
- [feat] unix 时间戳可选择由外部传入
- [refactor] struct Bitrate -> interface Bitrate
- [fix] 遍历切片时删除了元素导致崩溃
- package fake:
- [feat] 添加 func Exit,它是对 os.Exit 的封装,便于其他代码做单元测试
- package log:
- [test] 使用 fake.Exit
- 新增 package ratelimit:限速器,令牌桶
- 新增 package bitrate:计算带宽
- 新增 package fake
- 删除 package mockwriter
- 删除 package mockserver
demo/add_blog_license
:行尾增加两个空格,便于部分 markdown 解析器解析为为换行
- package ic:
- 新增的包,将整型切片压缩序列化成二进制字符切片
- package bininfo:
- 增加注释
- package assert:
- 增加注释
- package filebatch:
- 遍历读取文件发生错误时,不退出遍历,而是将错误在回调中返回给上层
- package connection:
- bugfix,初始化 write chan 相关的信息是通过 write chan 的配置,而不是 write buf 的配置
- package slicebytepool:
- 新增的包,一个 []byte 内存池
- package nazamd5:
- 新增的包,md5 操作
- package consistenthash:
- 新增的包,一致性hash
- package bufferpool:
- 删除 bufferpool 包
- demo/myapp:
- 用于演示 package bininfo 的使用
demo/add_blog_license
:- 修改 license 内容
- 其他:
- 统一error变量的命名方式及内容格式,涉及到的 package:filebatch, connection, taskpool, nazalog
- package bufferpool
- 新增的包,bytes.Buffer 池
- package nazaatomic
- 新增的包,对 sync.atomic 的再封装
- package taskpool
- 新增的包,协程池
- test.sh
- 做更多的 go tools 检查
demo/add_blog_license
- 修改许可证样式
- 检查许可证是否存在时,只检查声明两个字
demo/add_go_license
- 用户名和邮箱由命令行参数传入
- package filebatch:
- 新增的包,用于文件批处理操作
- 新增 demo/add_go_license:给 Go 仓库的所有go源码文件添加MIT许可证
- 新增 demo/add_blog_license:给我自己博客的所有文章尾部添加声明
- package nazastring:
- 新增 func SliceByteToStringTmp 和 func StringToSliceByteTmp,用于无拷贝的做string和[]byte的转换
- package log:
- rename -> package nazalog
- mkdir 0777 and create file 0666, append if file exist
- 配置使用 Option
- 配置默认值修改: 打印至控制台开关默认打开,打印源码文件行号开关默认打开
- package connection:
- erase func Printf
- 配置使用 Option
- package nazajson:
- 新增包,作为系统包 json 的补充
- 其它:
- repo name nezha -> naza
- package connection:
- 可配置使用 channel 进行异步发送:Config 中增加 WChanSize。增加 Flush, Done, ModWriteChanSize 三个方法
- package log:
- 增加 panic 相关的方法
- 其它:
- test.sh 中添加 gofmt 检查
- package log:
- 去除了对标准库中log的依赖
- 日志支持按天翻转
- 增加 ShortFileFlag 可配置是否打印源码文件及行号的信息
- 添加一个fatal日志级别,打印完后exit程序
- 当同时打印至控制台和文件时,打印至文件中的level字段也带颜色属性
- 增加 Out 接口
- 日志不再支持按固定大小翻转 [不兼容]
- 日志级别从0 -> 1开始 [不兼容]
- 删除 /pkg/errors [不兼容]
- package log:
- 增加 FatalIfErrorNotNil 接口函数,打印错误并退出程序
- 日志内容中的级别字段右对齐
- 日志内容中的源码文件名和行号放在整行日志的末尾
- 增加一些 benchmark
- package assert: 打印正确的源码文件名和行号信息 [bugfix]
- package bele: 增加一些 benchmark
- package unique:
- 不同的 key 使用不同的自增计数
- 增加一些 benchmark
- package mockserver: 模拟一些服务端,用于快速测试其它代码
- package mockwriter: 模拟 Writer 接口,用于快速测试其它代码
- 删除 /demo/connstat
- test.sh 脚本只测试 /pkg 目录下的源码
第一个版本