我用 go 写了一个赛码器
目录
github 项目地址:https://github.com/nopdan/gosmq/
为什么要写赛码器
- 替代极速赛码器
目前最流行的赛码器「极速赛码器」对系统资源利用极低,内存只用到 10 多 MB,cpu 占用百分之几,速度极慢,10w 字文章要几十秒,上百万文章基本不可用。
- 练习 go 语言
这是我用 go 语言写的第一个项目
技术
- 文件读取和写入
- 字典树(TrieTree)
- 一个好看的包
go-pretty
- go1.16 新特性
go embed
文件读取
- 一次性读取
ioutil.ReadFile()
,性能最好 - 分片读取,适合读取二进制文件
bufio.NewReader()
buf.Read()
- 逐行读取
bufio.Scanner()
,Scanner 读取单行太长会报错buf.Readline()
文件写入
ioutil.WriteFile()
字符串拼接
+
号[]byte
bytes.Builder
strings.Builder
推荐
字典树
数组实现:空间换时间
链表实现:时间换空间
哈希实现:时空平衡
双数组字典树:速度快,空间少,构建时间长
其它:tail 节点,ac 自动机,fail 指针
命令行输出美化
如果你觉得这篇文章对你有所帮助,欢迎赞赏~
赞赏