前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >技术阅读周刊第第8️⃣期

技术阅读周刊第第8️⃣期

作者头像
crossoverJie
发布2023-12-04 20:39:32
1160
发布2023-12-04 20:39:32
举报
文章被收录于专栏:crossoverJiecrossoverJie

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

URL: https://rust-trends.com/newsletter/rust-in-action-10-project-ideas-to-elevate-your-skills/?ref=dailydev

这是一个 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,来控制最早完成的线程,同时抛弃其他线程

代码语言:javascript
复制
func quickestApiResponse(functions []*Function) {
 var articles []*Article

 for _, function := range functions {
  function.Run()
 }

 select {
 case googleNewsResponse := <-google:
  fmt.Printf("Source: %s\n", googleNewsResponse.Source)
  articles = googleNewsResponse.Articles
 case freeNewsReponse := <-free:
  fmt.Printf("Source: %s\n", freeNewsReponse.Source)
  articles = freeNewsReponse.Articles
 }

 fmt.Printf("Articles %v\n", articles)
}

利用 time.After 返回的 channel,来控制达到超时时间后退出所有的线程

代码语言:javascript
复制
func main() {  
 ch := make(chan struct{}, 1)  
 go func() {  
  fmt.Println("do something...")  
  time.Sleep(4*time.Second)  
  ch<- struct{}{}  
 }()  
   
 select {  
 case <-ch:  
  fmt.Println("done")  
 case <-time.After(3*time.Second):  
  fmt.Println("timeout")  
 }  
}

Context.Withtimeout 来控制超时

代码语言:javascript
复制
ch := make(chan string)  
timeout, cancel := context.WithTimeout(context.Background(), 3*time.Second)  
defer cancel()  
go func() {  
 time.Sleep(time.Second * 4)  
  
 ch <- "done"  
}()  
  
select {  
case res := <-ch:  
 fmt.Println(res)  
case <-timeout.Done():  
 fmt.Println("timout", timeout.Err())  
}

文章链接:

  • 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
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-12-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 crossoverJie 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Prometheus vs. VictoriaMetrics (VM) | Last9
  • 28 - Rust in Action: 10 Project Ideas to Elevate Your Skills
  • Implementing a Bloom Filter in Go | by Francisco Escher | Nov, 2023 | ITNEXT
  • Mastering Concurrency In Go — With Select, Goroutines, and Channels | by Yair Fernando | Better Programming
    • 利用 select 多个 channel,来控制最早完成的线程,同时抛弃其他线程
      • 利用 time.After 返回的 channel,来控制达到超时时间后退出所有的线程
        • Context.Withtimeout 来控制超时
        相关产品与服务
        Prometheus 监控服务
        Prometheus 监控服务(TencentCloud Managed Service for Prometheus,TMP)是基于开源 Prometheus 构建的高可用、全托管的服务,与腾讯云容器服务(TKE)高度集成,兼容开源生态丰富多样的应用组件,结合腾讯云可观测平台-告警管理和 Prometheus Alertmanager 能力,为您提供免搭建的高效运维能力,减少开发及运维成本。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档