![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
后端开发
文章平均质量分 83
记录后端开发中,学习的一些笔记
Jiangw557
这个作者很懒,什么都没留下…
展开
-
rust 初探 -- 通用编程概念
复合类型可以将多个值放到一个类型里面,rust 中提供了两种基础的复合类型:元组(Tuple),数组。使用索引访问即可,如果访问的索引超过了数组的范围,编译不会通过,运行也会报错。可以使用模式匹配来解构一个 Tuple 来获取元素的值。一个标量类型代表一个单个的值。原创 2024-07-04 17:49:01 · 643 阅读 · 0 评论 -
rust 初探 -- Hello Cargo
基本内容如下,package 下包含项目名、项目版本、作者、rust 版本。dependencies 是项目的依赖项。原创 2024-07-04 11:50:14 · 223 阅读 · 0 评论 -
Go 的并发机制(2)
两级线程模型中的一部分调度任务会由操作系统内核之外的程序承担,在 Go 语言中,调度器就负责这一部分调度任务,调度的主要对象就是 M、P 和 G 的实例。在 Go 的线程实现模型中,P 起到承上启下的重要作用,P最大数量的变更就意味着要改变 G 运行的上下文环境,也直接影响 Go 程序的并发性能。(1)除了本地 P 还有非空闲的 P,因为空闲的 P 的可运行 G 队列必定为空,如果除了本地 P 之外的所有 P 都是空闲的,就没必要去偷了。同样的,针对系统监测任务,也需要先暂停,然后再执行串行运行时任务。原创 2024-06-03 18:23:34 · 967 阅读 · 0 评论 -
Go 的并发机制(1)
一般来说,创建一个 M,都是因为没有足够的 M 来关联 P 并运行其中可运行的 G。不过,在运行时系统执行系统监控或者垃圾回收等任务的时候,也会导致 M 的创建。因为操作系统内核对进程的虚拟内存的布局控制以及大小限制,一般难以共存如此量级的线程。本节,我们一直是将实现和操纵 Go 的线程实现模型的内部程序笼统地称为“运行时系统”。系统停止 M 的时候,会把它放入调度器的空闲 M 列表(运行时系统会优先从这个列表获取)Go 其实时在操作系统提供的内核线程之上,搭建了一个特有的两级线程模型。原创 2024-05-31 10:56:48 · 938 阅读 · 0 评论 -
蓄水池抽样算法
蓄水池抽样算法算法简介基本原理算法正确性证明算法的实现运行结果如下算法的局限性算法简介蓄水池抽样算法是随机算法的一种,用来从 N 个样本中随机选择 m 个样本,其中 N 非常大(以至于 N 个样本不能同时放入内存),且 N 是一个未知数。请问如何在只遍历一遍数据(O(N))的情况下,能够随机选取出m个不重复的数据。综上,可以提炼出以下三点:数据流长度N很大且不可知,所以不能一次性存入内存;时间复杂度为O(N);随机选取m个数,每个数被选中的概率为m/N;第1点限制了不能直接取N内的m个随机原创 2021-05-19 20:35:36 · 168 阅读 · 0 评论