加载中
使用rr调试非确定输出程序

rr是一款支持记录重放的调试工具,对调试一些难以重现的bug还是很有作用的。 编译安装rr调试器 安装编译依赖: sudo apt-get install ccache cmake make g++-multilib gdb \ pkg-config core...

二分搜索及各种变形

一般教科书上介绍的二分搜索算法大概类似这样的: func normalSearch(arr []int32, target int32) int { low := 0 high := len(arr) - 1 for low <= high { mid := low + ((high - low) >> 1)...

2021/02/27 14:31
57
基于游标的分页方法

目前比较常见的分页方法就是基于sql数据库的offset 子句或者类似mongodb 的skip() 方法来实现,基于偏移的方法好处是实现简单,可以在页面之间做随机跳转,缺点就是数据量稍大,排在后面的页...

benchmark golang 并发原语 (lock, rwlock, atomic value, blue green)

Arthur O'Dwyer 在CPPCON 2020 介绍了一种blue/green 的并发模式, 说是模仿devops 领域的blue/green 应用部署模式, 这里blue 代表老版本的全局易变状态 , green 代表新版本,虽然这个模式...

2020/11/16 00:18
677
使用Skip list 实现有序的map

skip list 属于概率数据结构,基本上是一个有序的链表,加上很多随机数目的链接作为快速导航使用,至于每个节点被拔高多少,由一个模拟投硬币的过程决定,连续地抛一定数目的硬币,直到遇到反...

2019/03/14 12:45
104
Rabin-Karp, Boyer-Moore, Knuth-Morris-Pratt 字符串匹配

Rabin-Karp 使用计算滚动hash 的方式来搜索文本中的模式, 计算每一次模式串位移一个位置后相应的文本块对应的hash值, hash值匹配后,有很高的概率是匹配的, 可以不去挨个字符的在检查一遍...

2019/03/06 12:37
268
quicksort 演化改进过程

最简单容易理解的版本,我觉的是Nico Lomuto 的单向划分, c++ stl 的std::partition 就是用这个来实现的, 就是根据谓词函数的返回值,把返回true的全都调到数组的开头位置,返回false的放在尾...

2019/01/20 11:22
205
从递归到非递归

递归确实是一种优雅强大的技术, 但是好多代码库都偏爱使用迭代,即使使用递归, 也都往往对递归调用的最大栈深度提前做预估或限制等。可能考虑递归性能一般低于迭代。有些问题,我们可能先是...

rust 的traits, generic, unsafe 练习

最近发现实现泛型的代码有些难度,虽然rust的基于trait 约束的泛型比起c++ 的模板已经优雅很多了,不会出现打印几页纸的模板实例化错误,但是当泛型参数和生命周期参数纠缠一块时,马上就进入...

2018/12/11 19:20
136
bitcoin 中的 limitedmap

bitcoin 里面的limitedmap 基本上是在std::map 上实现了优先队列的功能, 主要用在记录向对等节点索取inv 对应的时间记录。 以前不了解, stl 容器可以如此灵活使用, 把多个容器组合一起,完成...

2018/11/07 12:08
283
模块化与微服务

应用模块化系统设计原则同时避免微服务的运维复杂度

2017/07/19 19:51
498

没有更多内容

加载失败,请刷新页面

返回顶部
顶部