本文介绍: 技术阅读周刊,每周更新。历史更新20231103:第四期20231107:第五期20231117:第六期20231124:第七期Prometheus vs. VictoriaMetrics (VM) | Last9URL: https://last9.io/blog/prometheusvsvictoriametrics/?ref=dailydev对比了 Prometheus 和 VM 的区别

技术阅读周刊,每周更新。

历史更新

Prometheus vs. VictoriaMetrics (VM) | Last9

URL: https://last9.io/blog/prometheusvsvictoriametrics/?ref=dailydevf40e424abee620d9b9789fcb770c0a40.png

对比了 Prometheus 和 VM 的区别50c8dd725a48b6b2f1c20edb7a3a51a6.png考虑到和云原生环境兼容性,那 Prometheus 可能更合适些,毕竟是 CNCF 组织下的项目。 但如果考虑性能存储资源占用性,VM 会更合适一些。

28 – Rust in Action: 10 Project Ideas to Elevate Your Skills

URL: https://rusttrends.com/newsletter/rust-inaction-10-projectideas-to-elevate-yourskills/?ref=dailydeva1e0fe9d0c2e7ce20650476b9f5e57cd.png

这是一个 Rust 的 newsletter介绍了十个项目 idea 可以提高你的 Rust 的水平,我看了下这些项目也不怎么限制语言,任何语言可以尝试下。

Implementing a Bloom Filter in Go | by Francisco Escher | Nov, 2023 | ITNEXT

URL: https://itnext.io/bloomfiltersandgo-1d5ac62557de7c4afdef2f3d7f8cbf7d56018372a986.png

多年前我也用 Java 写过一个布隆过滤器,本文作者介绍用 Go 来实现,不过原理都差不多。

布隆过滤器有以下特点:

所以基于以上特性就有了下面这些应用场景

Mastering Concurrency In Go — With Select, Goroutines, and Channels | by Yair Fernando | Better Programming

URL: https://betterprogramming.pub/concurrency-withselectgoroutines-andchannels-9786e0c6be3c83af87760db25ca9d7ed0a906686ef69.png

使用 select goroutine channel 掌握并发

利用 select 多个 channel,来控制最早完成的线程,同时抛弃其他线程

func quickestApiResponse(functions []*Function) {
 var articles []*Article

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

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

 fmt.Printf("Articles %vn", articles)
}

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

func main() {  
 ch := make(chastruct{}, 1)  
 gfunc() {  
  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控制超时

ch := make(chastring)  
timeoutcancel := context.WithTimeout(context.Background(), 3*time.Second)  
defer cancel()  
gfunc() {  
 time.Sleep(time.Second * 4)  
  
 ch <- "done"  
}()  
  
select {  
casres := <-ch:  
 fmt.Println(res)  
case <-timeout.Done():  
 fmt.Println("timout", timeout.Err())  
}

文章链接

PS:最近也在更新视频号,也会有一些技术干货,动动小手帮主播点播关注3b744a8e654a7f6e09c1538d0ee6f34b.jpeg

f96d5f1b04486b3770c109a2d50c81df.jpeg

往期推荐

五分钟 k8s 实战-滚动更新与优雅停机

五分钟 k8s 实战-应用探针

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

升级到 Pulsar3.0 后深入了解 JWT 鉴权

五分钟k8s实战-Istio 网关

80d3e86998cc471fdc4cc27948995e9d.gif

分享

73b9348d0a4983ba9c5fe37e48c0b49a.gif

收藏

c136676783d0ef1a1bce95bf133a83f1.gif

点赞

dd260484031197fab5a95bbf72b4bd7b.gif

点在看

原文地址:https://blog.csdn.net/qq_18661793/article/details/134746219

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_30596.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注