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

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

历史更新

  • 20231103:第四期

  • 20231107:第五期

  • 20231117:第六期

  • 20231124:第七期

Prometheus vs. VictoriaMetrics (VM) | Last9

URL: https://last9.io/blog/prometheus-vs-victoriametrics/?ref=dailydevf40e424abee620d9b9789fcb770c0a40.png

对比了 Prometheus 和 VM 的区别50c8dd725a48b6b2f1c20edb7a3a51a6.png考虑到和云原生的环境的兼容性,那 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=dailydeva1e0fe9d0c2e7ce20650476b9f5e57cd.png

这是一个 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-1d5ac62557de7c4afdef2f3d7f8cbf7d56018372a986.png

多年前我也用 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-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: %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,来控制达到超时时间后退出所有的线程

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 来控制超时

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

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

f96d5f1b04486b3770c109a2d50c81df.jpeg

往期推荐

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

五分钟 k8s 实战-应用探针

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

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

五分钟k8s实战-Istio 网关

80d3e86998cc471fdc4cc27948995e9d.gif

点分享

73b9348d0a4983ba9c5fe37e48c0b49a.gif

点收藏

c136676783d0ef1a1bce95bf133a83f1.gif

点点赞

dd260484031197fab5a95bbf72b4bd7b.gif

点在看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/222401.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中碳CCNG:碳交易领域的革命者

在全球碳减排努力日益增强的背景下&#xff0c;中国碳中和发展集团有限公司&#xff08;简称中碳CCNG&#xff09;正以其创新的碳交易平台引领行业新趋势。中碳CCNG提供的一站式综合服务不仅包括碳信用的托管、买卖和抵消&#xff0c;而且通过其综合性数字平台&#xff0c;促进…

Mysql- 流程函数-(If, CASE WHEN)的使用及练习

目录 4.1 If函数语法格式 4.2 CASE WHEN 条件表达式格式 4.3 练习题1 4.4 练习题2 4.5 练习题3-行转列 4.6 牛客练习题 4.7 LeetCode练习题 4.1 If函数语法格式 IF(expr1,expr2,expr3) 解释&#xff1a; 如果表达式expr1true(expr1 <> 0 and expr1 <> NUL…

element-plus组件中的el-drawer的使用

在项目的制作过程中经常会用到弹窗组件&#xff0c;这里假设一种情况当你在一个页面需要多个弹窗组件的时候怎么样才能精准的打开和关闭对应的弹窗呐&#xff1f;&#xff1f; ① 绑定一个点击事件----【给点击事件传入一个下标】这里是打开事件 ② 使用element-plus中的 :befo…

Redis系列之keys命令和scan命令性能对比

项目场景 Redis的keys *命令在生产环境是慎用的&#xff0c;特别是一些并发量很大的项目&#xff0c;原因是Redis是单线程的&#xff0c;keys *会引发Redis锁&#xff0c;占用reids CPU&#xff0c;如果key数量很大而且并发是比较大的情况&#xff0c;效率是很慢的&#xff0c…

ActiveMQ 反序列化漏洞(CVE-2015-5254)

ActiveMQ 反序列化漏洞 Apache ActiveMQ是一种开源的消息代理&#xff08;message broker&#xff09;&#xff0c;被广泛用于应用程序之间的消息传递。它提供可靠的消息传递模式&#xff0c;如发布/订阅、点对点和请求/响应&#xff0c;非常适合构建分布式系统和应用程序集成…

感觉到自己思想扭曲了

突然觉得自己思想有点扭曲。 ​起因是近期备婚&#xff0c;需要给男方家人买衣服。问男朋友妹妹衣服预算多少&#xff0c;说是500内&#xff0c;然后想想自己这个新娘子&#xff0c;那一身衣服绞尽脑汁凑满减不到300。再联想到装饰新房&#xff0c;新房买家具&#xff0c;为了省…

为 3D 模型制作纹理的 9 种最佳方法

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 与普遍的看法相反&#xff0c;3D 模型的纹理创建更加简单。虽然对细节…

【PyQt学习篇 · ⑫】:QVBoxLayout和QHBoxLayout布局管理器的使用

文章目录 QVBoxLayout和QHBoxLayout的介绍.addStretch()的使用方法.setSpacing()方法的使用.setAlignment()的使用.setFixedSize()的使用QMainWindow中使用布局管理器 QVBoxLayout和QHBoxLayout的介绍 QVBoxLayout 和 QHBoxLayout 是 PyQt 中用于实现垂直和水平布局的两个布局…

CoreDNS实战(五)-接入prometheus监控

1 背景 Prometheus插件作为coredns的Plugins&#xff0c;默认情况下是内置在coredns中&#xff0c;如果是自己编译安装的版本&#xff0c;需要注意在编译安装的时候的plugin.cfg文件中添加了prometheus:metrics&#xff0c;这样才能确保编译成功。 # 首先我们检查一下运行的版…

Python-炸弹人【附完整源码】

炸弹人 炸弹人是童年的一款经典电子游戏&#xff0c;玩家控制一个类似"炸弹人"的角色&#xff0c;这个角色可以放置炸弹&#xff0c;并在指定的时间内引爆它们消灭敌人以达到目标&#xff0c;此游戏共设有两节关卡&#xff0c;代码如下&#xff1a; 运行效果&#x…

介绍几个有意思的 GitHub 仓库

大家好&#xff0c;我是风筝。 今天介绍几个很有意思的 github 开源项目&#xff0c;看过之后就会发现&#xff0c;github 果然深意暗藏。 GitHub对于程序员来说&#xff0c;再熟悉不过了&#xff0c;绝大多数时候&#xff0c;我们到上面都是为了学习高质量的源代码&#xff…

12 月 10 日,融云在 Google DevFest 上海站等你!

Welcome to DevFest!RongCloud2023 Google DevFest 上海站关注【融云全球互联网通信云】了解更多 时间&#xff1a;2023 年 12 月 10 日&#xff08;周日&#xff09;地点&#xff1a;上海市浦东新区新金桥路 1599 号&#xff0c;东方万国宴会中心 (下沉式广场)主讲&#xff1a…

Unity3D对CSV文件操作(创建、读取、写入、修改)

系列文章目录 Unity工具 文章目录 系列文章目录前言一、Csv是什么&#xff1f;二、创建csv文件2-1、构建表数据2-2、创建表方法2-3、完整的脚本&#xff08;第一种方式&#xff09;2-4、运行结果2-5、完整的脚本&#xff08;第二种方式&#xff09;2-6、运行结果2-7、想用哪种…

【性能测试】业务/吞吐量与存量数据设计关系+压测常见解决方案

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、性能测试中业务…

设计模式之GoF23介绍

深入探讨设计模式&#xff1a;构建可维护、可扩展的软件架构 一、设计模式的背景1.1 什么是设计模式1.2 设计模式的历史 二、设计模式的分类2.1 创建型模式2.2 结构型模式2.3 行为型模式 三、七大设计原则四、设计模式关系结论 :rocket: :rocket: :rocket: 在软件开发领域&…

软件工程之系统质量

从公众号转载&#xff0c;关注微信公众号掌握更多技术动态 --------------------------------------------------------------- 一 、质量标准化 1.什么是质量标准化 通过标准化各条业务线的研发流程&#xff0c;以做的比较好的业务线作为标准样板间&#xff0c;规范出一套标…

使用squid配置高匿代理

背景介绍 为什么要设置高匿代理&#xff1f; 在家和开放平台交互的时候&#xff0c;需要设置白名单&#xff0c;否则无法交互。家里的白名单一直变。 服务部署到服务器太麻烦&#xff0c;调试不方便。 于是就想通过代理的方式&#xff0c;让服务器替我发送这次请求&#xf…

使用Java语言进行账户登录和密码输入

一、操作原理 使用Scanner扫描器进行扫描&#xff0c;使用if语句、if-else语句和else进行账户和密码的验证。 二、相关代码 import java.util.Scanner; public class CheckLoginDemo {public static void main(String[] args){try (Scanner scan new Scanner(System.in)) …

方格取数问题

更好的阅读体验 方格取数。 题目&#xff1a;方格取数 设有 NN 的方格图&#xff0c;我们在其中的某些方格中填入正整数&#xff0c;而其它的方格中则放入数字0。如下图所示&#xff1a; 某人从图中的左上角 A 出发&#xff0c;可以向下行走&#xff0c;也可以向右行走&#x…

设备制造行业CRM:提升客户满意度,驱动业务增长

设备制造行业客户需求多样化、服务链路长&#xff0c;企业在关注APS、EMS等工业软件之余还要以客户为中心&#xff0c;做好客户服务。设备制造行业CRM管理系统是企业管理客户关系的利器&#xff0c;设备制造行业CRM的作用有哪些&#xff1f;一文带您看懂。 设备制造行业需要解…