无限可能的想象力

认真做事,用心写代码

mongo-go-driver中RTTMonitor

本文介绍mongodb-go-driver中RTTMonitor模块的设计以及实现。 RTT(Round-Trip Time)在计算机中表示进行一次网络请求需要的往返时间。 RTTMonitor的工作原理为:在固定的时间间隔内,向Server发起Hello(heartbeat),同时记录对应的RTT为一个采样。 其中,minRTT是采样samples中的最小值;如果samples的样本数...

protocol buffer编码

Protocol buffers provide a language-neutral, platform-neutral, extensible mechanism for serializing structured data in a forward-compatible and backward-compatible way. It’s like JSON, except it’s ...

MongoDB查询性能优化

问题 分析一个业务问题,具体背景如下: 100w单表数据集,业务主键和node_ids(list类型)字段,对业务主键创建了唯一索引,对node_ids字段创建了普通索引。 查询语句如下:db.client.find({"node_ids": {"$in": [","]}})。 该条件会匹配全量数据,简单说:会查全表。 在ssd的机器上,查询时间花费了10s。 WT原理 mongoDB...

rust 所有权

所有权 根据内存管理方式的不同,主流的编程语言可以划分为: 安全优先:由垃圾收集器来管理内存,比如Java、Python、Golang 控制优先:由开发者负责释放内存,比如C、C++ Rust旨在同时保证安全和性能。Rust以这种方式来解决这个问题:严格限制程序使用指针的方式。 这些规则为Rust实现安全的并发编程奠定了基础。使用Rust的线程原语,保证内存安全的规则可以...

rust trait

trait:接口 万物皆可组合。 – 知乎 Rust 通过两种特性来支持多态:trait和泛型。 trait 是 Rust 中的接口。泛型函数或者类型可以用于多种不同的类型。 泛型和trait紧密相关:泛型函数在约束中使用 trait 来表明它可以用于哪些类型的参数。 trait的用法 trait 代表一种能力,类型可以做的事情。 trait有一个特殊规则:trait自身...

访问控制模型

访问控制模型 访问控制是通过某种方式显示地准许或限制主体对客体的访问能力以及范围。 访问控制的核心是授权策略。授权策略是用于确定一个主题是否对客体拥有访问能力的一套规则。 在统一的授权策略下,得到授权的用户是合法用户;否则是非法用户。 访问控制模型是从访问控制的角度出发描述安全系统,建立安全模型的一种方法。 已有的访问控制模型 ACL、RABC、ABAC ACL 基于实体的访问控制...

goleveldb中Cache的实现原理

goleveldb缓冲的设计与实现 Cache作为数据库非常重要的组件,可以加快数据的访问;也需要支持并发访问。Cache用于缓冲sstable的dataBlock的内容; leveldb的Cacher能力由Cache和lru两个结构体共同实现: Cache是哈希表实现的,负责数据的存储以及扩缩容。内部实现为:将数据分别存储在不同的bucket下,每个bucket存储真正的数据节...

微服务场景下如何解决跨实体的关联查询问题

为什么需要跨业务的关联查询 在领域建模中,每个微服务负责某些独立实体的实现。微服务之间可以通过HTTP、RPC进行通信,也可以通过消息队列进行异步通信。由于业务需求,有些场景需要多个实体进行关联查询。 关联查询的场景包括: 基于某个维度的数据查询,比如基于终端维度的防火墙日志记录 实体之间进行关联查询 对于第一种场景,可以将某个维度相关的数据构造成一张宽表。 对于第二种场景...

subprocess: 子进程管理

subprocess模块允许创建新的进程,连接它们的input/output/error,并得到returncode. 该模块用来替换老的模块和函数。 核心API的实现 subprocess模块有1500行代码,同时提供了核心API:run()和Popen(): run(): 运行command,等待它执行完成,然后,返回一个CompletedProcess实例 Popen()...

Pytorch的基础概念和操作

通过阅读Pytorch docs知道,pytorch是基于python的科学计算package:作为numpy的替代者,能够使用GPU进行运算;作为一个深度学习研究平台,提供最大限度的灵活性和速度。 要使用pytorch来实现深度学习算法,首先需要了解它的基础概念和函数。接下来简要介绍一下。 Tensor的概念和操作 autograd:自动微分 Tensor torch....