技术阅读周刊第8️⃣期
技术阅读周刊,每周更新。
历史更新
Prometheus vs. VictoriaMetrics (VM) | Last9
URL: https://last9.io/blog/prometheus-vs-victoriametrics/?ref=dailydev
对比了 Prometheus 和 VM 的区别
考虑到和云原生的环境的兼容性,那 Prometheus 可能更合适些,毕竟是 CNCF 组织下的项目。
但如果考虑到性能、存储、资源占用性,VM 会更合适一些。
28 - Rust in Action: 10 Project Ideas to Elevate Your Skills
这是一个 Rust 的 newsletter,介绍了十个项目 idea 可以提高你的 Rust 的水平,我看了下这些项目也不怎么限制语言,任何语言都可以尝试下。
简易版的 grep 命令
简单:读取文件根据搜索条件输出搜索结果,涉及到的技术栈:- 文件 IO
- 正则表达式
- 命令行工具
短域名服务
中等:接收一个长域名,转换为一个短域名,访问短域名时可以自动重定向到长域名。- Web 框架
- 数据存储,可以是 SQLite/Redis
- 生成短链接的字符串算法
基于文本的冒险游戏
中等:用户可以探索房间,选择物品,解密等。- 输入输出
- 游戏结构体定义、以及状态流转。
基本的网络爬虫
简单:爬取一个网页然后提取指定的信息。- HTTP
- HTML 解析
- 字符串匹配、正则。
实时聊天应用
中等:支持多个人用户加入房间,可以给每个人发送消息。- 网络编程
- 多线程处理客户端连接
Markdown 解析为 HTML
中等:- 文本解析
- 文件 IO
简单的 HTTP 服务
中等:支持静态文件服务器,也可以处理 RESTful 请求。
Implementing a Bloom Filter in Go | by Francisco Escher | Nov, 2023 | ITNEXT
URL: https://itnext.io/bloom-filters-and-go-1d5ac62557de
多年前我也用 Java 写过一个布隆过滤器,本文作者介绍用 Go 来实现,不过原理都差不多。
布隆过滤器有以下特点:
- 用极少的内存可以存放大量的数据
- 存在误报的可能
- 但返回数据不存在时一定不存在
- 返回数据存在有一定概率是不存在的
所以基于以上特性就有了下面这些应用场景:
- 网络安全:可以快速判断 IP 释放在黑名单中
- web 缓存:判断请求是否在缓存中
- 数据库缓存,原理同上
- 语法检测:一些文本工具可以快速检测你输入的支付是否在字典里,不存在时进行提示
- 区块链认证
- 邮件过滤
Mastering Concurrency In Go — With Select, Goroutines, and Channels | by Yair Fernando | Better Programming
URL: https://betterprogramming.pub/concurrency-with-select-goroutines-and-channels-9786e0c6be3c
使用 select goroutine channel 掌握并发
利用 select 多个 channel,来控制最早完成的线程,同时抛弃其他线程
1 | func quickestApiResponse(functions []*Function) { |
利用 time.After 返回的 channel,来控制达到超时时间后退出所有的线程
1 | func main() { |
Context.Withtimeout 来控制超时
1 | ch := make(chan string) |
文章链接:
- https://last9.io/blog/prometheus-vs-victoriametrics/?ref=dailydev
- https://rust-trends.com/newsletter/rust-in-action-10-project-ideas-to-elevate-your-skills/?ref=dailydev
- https://itnext.io/bloom-filters-and-go-1d5ac62557de
- https://betterprogramming.pub/concurrency-with-select-goroutines-and-channels-9786e0c6be3c
#Newletters