要不要再学学下面的文章?
Memcached的存储原理解析 (www.codedump.info)
最近工作上的需要,需要做一个LRU形式管理内存的分配器,首先想到的就是Memcached这个项目。早些年粗略的看过一些,有个大体的了解,这一次看下来发现其LRU算法做了不少的改动。
by @技术头条 2024-03-21 23:21 查看详情
B树、B+树索引算法原理(下) (www.codedump.info)
在上一篇文章中,介绍了数据库索引的简单概念,以及B树的结构及核心算法,这一篇将继续介绍B树的变形B+树。
by @技术头条 2024-03-21 23:02 查看详情
B树、B+树索引算法原理(上) (www.codedump.info)
这一段时间由于在阅读boltdb代码的缘故,找机会学习了B树及B+树的算法原理,这个系列会花两个篇幅分别介绍这两种数据结构的实现,其用于数据库索引中的基本原理。
by @技术头条 2024-03-21 23:01 查看详情
Redis高可用原理 (www.codedump.info)
Redis中为了实现高可用(High Availability,简称HA),采用了如下两个方式:
1、主从复制数据。
2、采用哨兵监控数据节点的运行情况,一旦主节点出现问题由从节点顶上继续进行服务。
by @技术头条 2024-03-13 13:29 查看详情
以非阻塞方式执行一个函数 (blog.codingnow.com)
用过 skynet 的应该都碰到过:当我们在服务中不小心调用了一个长时间运行而不返回的 C 函数,会独占一个工作线程。同时,这个被阻塞的服务也无法处理新的消息。一旦这种情况发生,看似是无解的。我们通常认为,是设计问题导致了这种情况发生。skynet 的框架在监测到这种情况发生时,会输出 maybe in an endless loop 。

如果是 Lua 函数产生的死循环,可以通过发送 signal 打断正在运行运行的 Lua 虚拟机,但如果是陷入 C 函数中,只能事后追查 bug 了。

那么,如果我原本就预期一段 C 代码会运行很长时间,有没有可能从底层支持以非阻塞方式运行这段代码呢?即,在这段代码运行期间,该服务还可以接收并处理新的消息?
by @技术头条 2024-03-13 13:20 查看详情
SQL优化(3)-索引与优化原理(上) (example.com)
这一篇我们回归现实中的MySQL数据库,初步学习具体的SQL优化原则,并尝试从索引底层原理出发,分析为什么会有那么多的“规则”。
by @技术头条 2024-01-13 23:28 查看详情
RisingWave 窗口函数:滑动的艺术与对称的美学 (stdrc.cc)
窗口函数(Window Function)是数据库和流处理中一项非常常用的功能,该功能可用于对每一行输入数据计算其前后一定窗口范围内的数据的聚合结果,或是获取输入行的前/后指定偏移行中的数据。在其他一些流系统中,窗口函数功能也被称作“Over Aggregation”1。RisingWave 在此前的 1.1 版本中加入了窗口函数支持2。在 RisingWave 的窗口函数实现中,我们把实施窗口函数计算的算子称为 OverWindow 算子,本文将尝试解析 OverWindow 算子的设计与实现。
by @技术头条 2023-12-11 23:09 查看详情
校园网保证一机一号和检测共享上网的原理 (www.addesp.com)
出于利益等原因,许多校园网采取一机一号的管理方式。即一个宽带账号只能由一台规定的设备使用。同时检测共享上网以避免使用路由器或类似方式实现共享。那么这些限制背后的原理是什么呢?
by @技术头条 2023-12-01 09:48 查看详情
写给开发人员的实用密码学(三)—— MAC 与密钥派生函数 KDF (thiscute.world)
我们都更喜欢使用密码来保护自己的数据而不是二进制的密钥,因为相比之下二进制密钥太难记忆了,字符形式的密码才是符合人类思维习惯的东西。

可对计算机而言就刚好相反了,现代密码学的很多算法都要求输入是一个大的数字,二进制的密钥就是这样一个大的数字。
by @技术头条 2023-11-06 23:05 查看详情
写给开发人员的实用密码学(二)—— 哈希函数 (thiscute.world)
更好的哈希函数可以使用这样的方案:它将第一个字节作为状态,然后转换状态(例如,将它乘以像 31 这样的素数),然后将下一个字节添加到状态,然后再次转换状态并添加下一个字节等。 这样的操作可以显着降低碰撞概率并产生更均匀的分布。
by @技术头条 2023-11-06 23:04 查看详情