当前位置: 首页 > news >正文

文盘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

相关文章:

  • flink读kafka写mysql数据库
  • 【LeetCode】【1】两数之和(1141字)
  • 美业美容院会员服务预约店铺管理小程序的效果是什么
  • 粤嵌—2024/5/17—N 皇后 ||(✔)
  • 各大模型厂商API使用:百度、阿里、豆包、kimi、deepseek
  • AIGC 004-T2I-adapter另外一种支持多条件组合控制的文生图方案!
  • 计算机视觉与深度学习实战:以Python为工具,基于深度学习的汽车目标检测
  • C语言 | Leetcode C语言题解之第113题路径总和II
  • Java线程池机制揭秘:一文掌握核心概念与实战技巧
  • 基于小波分析和机器学习(SVM,KNN,NB,MLP)的癫痫脑电图检测(MATLAB环境)
  • Day04:CSS 进阶
  • Ubuntu18.04 OpenSSH升级
  • IT行业的现状与未来发展趋势:从云计算到量子计算的技术变革
  • 猫头虎 解析:为什么AIGC在国内适合做TOB,在国外适合做TOC?
  • 【数据结构与算法 经典例题】相交链表
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 【跃迁之路】【641天】程序员高效学习方法论探索系列(实验阶段398-2018.11.14)...
  • css布局,左右固定中间自适应实现
  • EOS是什么
  • Fundebug计费标准解释:事件数是如何定义的?
  • Github访问慢解决办法
  • GraphQL学习过程应该是这样的
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • javascript 哈希表
  • JS函数式编程 数组部分风格 ES6版
  • Spring Cloud中负载均衡器概览
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • underscore源码剖析之整体架构
  • 欢迎参加第二届中国游戏开发者大会
  • 将回调地狱按在地上摩擦的Promise
  • 来,膜拜下android roadmap,强大的执行力
  • 码农张的Bug人生 - 初来乍到
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 算法之不定期更新(一)(2018-04-12)
  • 小程序开发之路(一)
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 栈实现走出迷宫(C++)
  • 转载:[译] 内容加速黑科技趣谈
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​TypeScript都不会用,也敢说会前端?
  • # Swust 12th acm 邀请赛# [ E ] 01 String [题解]
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (C语言)字符分类函数
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (二)pulsar安装在独立的docker中,python测试
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (附源码)springboot 基于HTML5的个人网页的网站设计与实现 毕业设计 031623
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (机器学习-深度学习快速入门)第一章第一节:Python环境和数据分析
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (南京观海微电子)——示波器使用介绍
  • (三)Kafka 监控之 Streams 监控(Streams Monitoring)和其他
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (转)memcache、redis缓存