文盘Rust -- 生命周期问题引发的 static hashmap 锁

100编程书屋_孔夫子旧书网

2021年上半年,撸了个rust cli开发的框架,基本上把交互模式,子命令提示这些cli该有的常用功能做进去了。项目地址:https://github.com/jiashiwen/interactcli-rs。

春节以前看到axum已经0.4.x了,于是想看看能不能用rust做个服务端的框架。

春节后开始动手,在做的过程中会碰到各种有趣的问题。于是记下来想和社区的小伙伴一起分享。社区里的小伙伴大部分是DBA和运维同学,如果想进一步了解更底层的东西,代码入手是个好路数。

我个人认为想看懂代码先要写好代码,起码了解开发的基本路数和工程的一般组织模式。但好多同学的主要工作并不是专职开发,所以也就没有机会下探研发技术。代码这个事儿光看书是不管用的。了解一门语言最好的方式是使用它。

那么,问题来了非研发人员如何熟悉语言呢?咏春拳里有句拳谚:”无师无对手,桩与镜中求“。解释两句,就是在没有师兄弟练习的情况下,对着镜子和木人桩练习。在这里我觉得所谓桩有两层含义,一个是木人桩,就是练习的工具,一个是”站桩“,传统武术训练基本功的方法。其实在实际的工作中DBA和运维同学会有很多场景需要编程,比如做一些运维方面的统计工作;分析问题时需要拿到某些数据。如果追求简单用Python的话可能对于其他语言就没有涉猎了。如果结合你运维数据库的原生开发语言,假以时日慢慢就能看懂相关的底层逻辑了。我个人有个观点,产品研发的原生语言是了解产品底层最好的入口。

后面如果在Rust的开发过程中有其他问题,我本人会把问题结合实际也写到这个系列里,也希望社区里对Rust感兴趣的小伙伴一起来”盘Rust“。 言归正传,说说这次在玩儿Rust时遇到的问题吧。

在 Rust 开发过程中,我们经常需要全局变量作为公共数据的存放位置。通常做法是利用 lazy_static/onecell 和 mux/rwlock 生成一个静态的 collection。

代码长这样

use std::collections::HashMap;
use std::sync::RwLock;

lazy_static::lazy_static! {
    static ref GLOBAL_MAP: RwLock&l

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

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

相关文章

已解决ModuleNotFoundError : No module named ‘pandas亲测有效!!!

已解决ModuleNotFoundError : No module named ‘pandas亲测有效!!! 亲测有效 报错问题解决思路解决方法 报错问题 在运行Python代码时,你可能会遇到以下报错信息: ModuleNotFoundError: No module named pandas这个…

【算法】重建二叉树并进行后序遍历的Java实现

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

[AIGC] Java常用的JSON库及简单示例

Java常用的JSON库及简单示例 在Java的世界里,JSON库广泛用于日常开发工作,本文将介绍几个常用的JSON库并配以简单的示例代码。 1. Gson Gson是Google提供的一个用来在Java对象和JSON数据之间进行转换的Java库。 它有一定的学习曲线,但一旦熟…

两年前的微信聊天记录能恢复吗?正确答案在这里(全)

微信已经成为我们日常沟通中不可或缺的一部分,承载着无数重要的对话和回忆。然而,面对手机更换、系统升级或意外删除等情况,许多人不禁要问:两年前的微信聊天记录能恢复吗?这个问题的答案并不简单,因为能否…

基于Docker搭建属于你的CC++集成编译环境

常常,我会幻想着拥有一个随时可以携带、随时可以使用的开发环境,那该是多么美好的事情。 在工作中,编译环境的复杂性常常让我头疼不已。稍有不慎,删除了一些关键文件,整个编译链就会瞬间崩溃。更糟糕的是,…

【leetcode1944--队列中可以看到的人数】

有n人排成一个队列,从左到右编号为0到n-1,height数组记录每个人的身高,返回一个数组,记录每个人能看到几个人。 类比:山峰问题,高的后面的矮的看不见。 从后往前,最后一个元素入栈&#xff0c…

ClickHouse数据管理与同步的关键技术

2024年 5 月 18 日,ClickHouse官方首届杭州 Meetup 活动成功举行。本次活动由 ClickHouse 和阿里云主办,NineData 和云数据库技术社区协办。围绕ClickHouse的核心技术、应用案例、最佳实践、数据管理、以及迁移同步等方面,和行业专家展开交流…

wps能打开caj文件吗?CAJ应该如何打开?caj转pdf

问题1:wps能打开caj文件吗? WPS不能直接打开CAJ文件。 CAJ是中国知网开发的一种文件格式,主要用于存储学术文献,需要使用专门的阅读器才能打开。 问题2:CAJ应该如何打开? 要打开CAJ文件,你可…

QT 圆盘百分比

1. /* 设置抗锯齿 */painter.setRenderHints(QPainter::Antialiasing, true);/* 最外层的圆 */QRect drawRect event->rect();QRadialGradient gradient1(drawRect.center(), drawRect.width() / 2, drawRect.center()); gradient1.setColorAt(0, Qt::transparent); gradi…

LangChain 0.2 - 基于 SQL 数据构建问答系统

本文翻译整理自:Build a Question/Answering system over SQL data https://python.langchain.com/v0.2/docs/tutorials/sql_qa/ 文章目录 一、项目说明⚠️ 安全说明⚠️架构 二、设置三、Chains1、将问题转换为 SQL查询2、执行 SQL查询3、回答问题 四、Agents1、S…

计算机网络-BGP基础概念

一、BGP的基本概念 BGP是一种实现自治系统AS之间的路由可达,并选择最佳路由的矢量性协议。早期发布的三个版本分别是BGP-1(RFC1105)、BGP-2(RFC1163)和BGP-3(RFC1267),1994年开始使用…

基础—SQL—DML(数据操作语言)插入数据

一、介绍 分类全称说明DMLData Manipulation Language数据操作语言。用来对数据库表中的数据进行增删改(插入、删除、修改) 则增、删、改是三个操作也就对应着三个关键字,分别是: 添加数据:( INSERT )修改数据&#…

LangChain技术解密:构建大模型应用的全景指南

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…

基础—SQL—图形化界面工具的DataGrip使用(2)

一、回顾与引言 (1) 上次内容,博客讲到了DDL语句的数据库操作、表操作、表字段的操作的相关语法,然而之前都是在MySQL的命令行当中去操作演示的。这种方式可以用,但是使用的话,第一,在我们日常…

【Java面试】五、MySQL篇(下)

文章目录 1、事务的特性2、并发事务问题3、事务的隔离级别4、undo log 和 redo log4.1 底层结构4.2 redo log4.3 undo log 5、MVCC5.1 隐式字段5.2 undo log 版本链5.3 ReadView5.4 ReadView的匹配规则实现事务隔离 6、MySQL的主从同步原理7、分库分表7.1 垂直分库7.2 垂直分表…

Android面试题之Jetpack的三大核心组件

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 ViewModel 和 LiveData 是 Android Jetpack 组件库中的两个核心组件,它们能帮助开发者更有效地管理 UI 相关的数据,并且…

5款免费文字转语音工具,视频剪辑师都在用

随着“行走美丽中国”话题的热度不断攀升,越来越多的人开始将他们游历各地的精彩瞬间制作成视频,并分享至网络。 在众多视频内容中,想要让自己的作品脱颖而出,不仅需要引人入胜的画面,还需要配上生动有趣的配音。 今…

nbcio-vue升级迁移flowable到最新的jeeg-boot-vue3的问题记录(一)

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。 1、vue3 jeeg-boot-vue3新版本的流程定义的页面,刷新出现下面问题,或第一次进去也一样 看着好像就一个警告的信息,不知道是什么原因引起的,应…

深度学习-序列模型

深度学习-序列模型 1. 定义2. 应用领域3. 典型模型4. 技术细节5. 总结 序列模型是一种处理序列数据的机器学习模型,其输入和/或输出通常为序列形式的数据。以下是关于序列模型的详细解释: 1. 定义 序列模型是输入输出均为序列数据的模型,它…

期货交易的雷区

一、做自己看不懂的行情做交易计划一样要做有把握的,倘若你在盘中找机会交易,做自己看不懂的行情,即便你做进去了,建仓时也不会那么肯定,自然而然持仓也不自信,有点盈利就想平仓,亏损又想扛单。…