- 博客(328)
- 资源 (21)
- 问答 (1)
- 收藏
- 关注

原创 图解 paxos 论文《The Part-Time Parliament》
本文以图文并茂的方式重新演绎 Paxos 开山之作 《The Part-Time Parliament》[1],并尝试解释原论文中语焉不详的地方。
2023-02-22 15:42:44
428

原创 分布式共识算法随笔 —— 从 Quorum 到 Paxos
复制(Replication) 是一种通过将同一份数据在复制在多个服务器上来提高系统可用性和扩展写吞吐的策略, 。常见的复制策略有主从架构(Leader/Follower), 多主架构(Multi-Leader) 和 无主架构(LeaderLess)[1]。在无主架构模式下,需要保证多个节点写入数据的一致(即共识(consensus))。
2023-01-19 16:18:22
950

原创 图说论文《LSM-based Storage Techniques: A Survey》
本文从 《LSM-based Storage Techniques: A Survey》 摘取部分图片,来介绍 LSM tree 的相关内容。详细内容请查看。
2022-09-17 19:06:19
741
1

原创 Redis 源码解读之逐出策略
Redis 源码解读之逐出策略背景和问题本文想解决的问题:redis 触发逐出的时机是怎样的?redis 逐出策略有哪些?如何在海量的 key 中快速找到逐出评价值(idle)最高的key,并将之逐出?LFU 算法的频率是如何统计的?结论redis 触发逐出的时机是怎样的?如图,主要有两个地方会触发逐出。更新 maxmemory 参数,导致实际使用内存大于该限制。处理客户端请求,使用到的内存大于内存限制。redis 逐出策略有哪些?逐出策略主要分为两个维
2021-04-05 08:26:11
441

原创 Redis 源码解读之 expire 的时机
本文想解决的问题:1. redis 如何感知并触发 key 过期的?2. 如何防止大规模的 key 同时过期,导致 redis 主循环阻塞在清理过期 key?3. 如何防止大 key 过期,导致 redis 主循环阻塞在清理大 key?4. 主动过期操作 activeExpireCycle 为什么要分为 beforesleep 期间执行的 FAST 循环 和 在定时任务中的 SLOW 循环?5....
2021-03-27 10:29:38
910
2

原创 Redis 源码解读之事件循环机制
本文想要解决的问题:1. Redis 事件循环(EventLoop)是怎样的?2. Redis 有几类事件,分别是怎么执行的?3. 如果事件循环没有文件事件(只有定时事件或没有任何事件),那么整个事件循环系统是怎么运行的?
2021-03-21 15:07:07
1469
2

原创 Redis 源码解读之 Rehash 的调用时机
Redis 源码解读之 Rehash 的调用时机背景和问题本文想要解决的问题什么时机触发 Rehash 操作什么时机实际执行 Rehash 函数结论背景问题的结论源码分析渐进式 Rehashrehash 算法描述触发 Rehash 的时机执行 Rehash 的时机附着在其他操作之后定时任务在 redis server 初始化时,会注册一个计时器事件, 定时执行 serverCron 任务。(关于 redis 的事件循环机制,有机会单独开几篇博客来介
2021-03-14 00:18:04
4124
14

原创 分而治之的分治思想
分而治之的分治思想分治思想分(Devide):递归地将问题分解为多个形式与原问题一致,规模更小的子问题。治(Conquer): 求解子问题。(如果存在重叠的子问题, 则可以考虑用记忆搜索或动态规划进行优化)合并(Combine): 将子问题的解合并为原问题的解。归并排序(Merge Sort)void MergeSort(int* nums, int left, int right): 对 nums 数组 [left, right) 区间的元素进行排序。分(Devide):令 mi
2021-03-03 06:53:42
689

原创 GoLang 的协程调度和 GMP 模型
GoLang 的协程调度和 GMP 模型GoLang 是怎么启动的关于 GoLang 的汇编语言,请查阅 参考文献[1] 和 参考文献[2]编写一个简单的 GoLang 程序 main.go, 用 go build -o main main.go 编译生成可执行文件 mainpackage mainimport "fmt"func main(){ fmt.Println...
2019-12-14 16:01:40
2119
1

原创 TCP/IP 协议(10):TCP 协议一百问
TCP/IP 协议(10):TCP 协议一百问杨领well 的 TCP/IP 协议专栏 TCP 协议部分一直没有更新,是因为我不确定到底应该怎么来介绍 TCP 协议才能干货满满。最后我决定以 Q&A 的形式来介绍 TCP 协议,应该就不会遗漏什么了吧。P.S. 不要问我为什么 《TCP 协议一百问》 没有一百问。 (> v <)TCP 协议全称是 传输层控制协议(......
2019-08-16 23:33:47
914

原创 libco 源码剖析(1): 协程上下文切换之 32 位
libco 源码剖析(1): 协程上下文切换之 32 位相关背景资料32 位协程上下文结构如下:// coctx.hstruct coctx_t{ void *regs[ 8 ]; size_t ss_size; char *ss_sp;};32 位协程上下文中的寄存器信息注释如下:// coctx.cpp// low | regs[0]: ret |// ...
2019-07-05 15:18:30
3787
2

原创 内存布局与栈
Professional Assembly Language Chapter 1: What Is Assembly Language?该系列文章是《Professional Assembly Language》 的读书笔记汇编语言是一种用助记符号表示操作指令机器码的语言。汇编语言程序一般由下述三个部分来定义程序操作:操作码助记符(opcode mnemonics):如,push %e...
2019-04-21 22:37:56
471

原创 TCP/IP协议(9): UDP(User Datagram Protocol) 协议 —— 最简单的传输层协议
TCP/IP协议(9): UDP(User Datagram Protocol) 协议 —— 最简单的传输层协议关于用户数据报协议(User Datagram Protocol, UDP)协议UDP 协议是一种保留消息边界的简单的传输层协议。一般来说,每次应用层请求的 UDP 输出操作只产生一个 UDP 数据报。该协议被正式定义在 RFC 768。该协议为应用程序提供一种向其他程序发送消息...
2018-11-17 21:58:40
1574

原创 TCP/IP协议(8): ICMP(Internet Control Message Protocol) 协议 ——诊断和控制 IP 协议层
TCP/IP协议(8): ICMP(Internet Control Message Protocol) 协议 ——诊断和控制 IP 协议层关于网际控制报文协议(Internet Control Message Protocol, ICMP)ICMP 数据包ICMP 报文的常见类型参考文献Internet Control Message Protocol - WikipediaW.R...
2018-10-09 21:23:29
3333

原创 TCP/IP协议(7): NAT(Network Address Translation) —— 解决 IPv4 地址短缺的问题
TCP/IP协议(7): NAT(Network Address Translation) —— 解决 IPv4 地址短缺的问题关于 NAT(Network Address Translation)随着互联网技术的发展,**因特网(Internet) **接入的网络设备越来越多,未分配的 IP 地址越来越少。网络地址转换(Network Address Translation, NAT) 通过...
2018-10-04 22:45:48
2754

原创 TCP/IP协议(6): DHCP(Dynamic Host Configuration Protocol) 协议 —— 网络地址的分配方式
TCP/IP协议(6): DHCP(Dynamic Host Configuration Protocol) 协议关于 DHCP 协议关于 BOOTP(BOOTstrapping Protocol) 协议关于 DHCP 协议DHCP 协议的基本内容DHCP 协议的详细流程DHCP 协议消息参考文献...
2018-09-13 14:19:44
2060

原创 TCP/IP协议(5): IP(Internet Protocol) 协议 —— 连接各个网络的协议
TCP/IP协议(4): IP(Internet Protocol) 协议关于 IP(Internet Protocol) 协议IP 协议的主要内容IP 协议包(Packet)IPv6 协议参考文献
2018-09-04 08:41:27
5404

原创 TCP/IP协议(4): 地址解析协议(ARP) —— 网络地址转换为物理地址的方式
TCP/IP协议(4): 地址解析协议(ARP)关于地址解析协议(Address Resolution Protocol, ARP)关于 ARP 地址解析协议(Address Resolution Protocol, ARP) 协议是用于根据给定网络层地址,通常是 IPv4地址,查找其对应的数据链路层地址,如 MAC地址,的协议。 ARP 协议 定义于 1982 年的 RFC...
2018-08-26 21:17:52
13722
5

原创 TCP/IP协议(3): Wi-Fi(IEEE 802.11) 协议 —— 构成无线局域网的基本协议
TCP/IP协议(3): IEEE 802.11 协议关于 IEEE 802.11 协议关于 IEEE 802.11 IEEE 802.11是一套媒体访问控制(MAC)和物理层(PHY)规范,用于在900兆赫和2.4、3.6、5 和 60 GHz 频段实现无线局域网(WLAN)计算机通信。 (IEEE 802.11 is a set of media access cont...
2018-08-19 19:13:44
7450

原创 TCP/IP协议(2): 以太网(IEEE 802.3) 协议 —— 构成有线局域网的基本协议
TCP/IP协议(2): 以太网协议关于以太网(Ethernet) 以太网(Ethernet) 是一套广泛应用于局域网(LAN), 城域网(MAN) 和广域网(WAN) 的一套计算机网络技术。 它在 1980 年第一次商业化引入, 并在 1983 年被标准化 IEEE 802.3,之后被改进以支持更高比特率和更长的链路距离。 (Ethernet /ˈiːθərnɛt/...
2018-07-28 22:51:19
19395
1

原创 TCP/IP协议(1): IP 地址和寻址方式 —— IP 协议的基础
TCP/IP协议(1): IP 地址和寻址方式 最近在重学计算机网络,给自己立一个 flag,有感而发的时候写关于 TCP/IP 协议栈的系列博客。 IP 地址IP 地址(Internet Protocol address, IP address) 在 TCP/IP 协议栈中,起着至关重要的位置。IP 地址 不仅能唯一标识与之关联的主机,还能够指出该主机在网络中的位置,以方便我们...
2018-07-21 21:20:29
12615
2

原创 makefile 入门第一课
一起来写 makefile 百度百科makefile词条: 一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中。 makefile 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译, 甚至于进行更复杂的功能操作,因为 makefile 就像一个 Shell 脚本一样,其中也可以执行操作系统的命令。简单了解...
2018-07-14 21:42:23
411

原创 STL中的智能指针(Smart Pointer)及其源码剖析: std::unique_ptr
STL中的智能指针(Smart Pointer)及其源码剖析: std::unique_ptr和 std::auto_ptr一样,std::unique_ptr也是一种智能指针,它也是通过指针的方式来管理对象资源,并且在 unique_ptr 的生命期结束后释放该资源。unique_ptr 持有对对象的独有权 —— 两个 unique_ptr 不能指向一个对象,不能进行复制操作只能进行移动操作。
2017-02-23 21:58:58
16452
2

原创 STL中的智能指针(Smart Pointer)及其源码剖析: std::auto_ptr
STL中的智能指针(Smart Pointer)及其源码剖析: std::auto_ptr本文主要介绍了 auto_ptr的使用及其源码。auto_ptr是STL中的智能指针家族的成员之一, 它管理由new expression获得的对象,在auto_ptr对象销毁时,他所管理的对象也会自动被delete` 掉。
2017-02-20 12:22:09
14358

翻译 cppreference.com关于值类型的详细解读:lvalue,rvalue,xvalue,prvalue,glvalue
基本值类型与表达式的两个属性相对应:1) 有"身份"[has identity]:能够确定某个表达式是否和另一个表达式指涉[refers to]同一个实体,例如,通过比较它们标识[identify]出来的函数或者对象的地址(直接或间接得到的)。2) 能被移动[can be moved from]:能够被移动构造函数、移动赋值操作符或者其它实现[implement]移动语义[move semantics]的重载函数绑定[bind to]。
2016-04-17 13:58:56
121550
原创 万字长文解析最常见的数据库恢复算法: ARIES
ARIES(Algorithms for Recovery and Isolation Exploiting Semantics) 是一种能够恢复系统状态并处理系统崩溃带来的问题的重要技术。该算法为处理数据库中的恢复、并发控制和事务管理问题等提供了全面的解决方案。它将上述的架构系统的整合在一起,提供一种通用化的处理思路。当前市面上绝大多数数据库的 Recovery 逻辑都是基于 ARIES 优化改造实现的。
2023-06-30 22:09:59
1545
原创 【技术分享】万字长文图文并茂读懂高性能无锁 “B-Tree 改”:Bw-Tree
本文将介绍 BW-Tree,这是一种高效的并发索引结构,被广泛应用于现代数据库系统中。BW-Tree 是由微软研究院开发的,旨在解决传统 B+ 树在高并发环境下的性能瓶颈。它结合了 B+ 树和前缀树的优点,具有出色的插入、删除和范围查询性能。
2023-05-27 23:04:08
1135
原创 [深度好文]10张图带你轻松理解关系型数据库系统的工作原理
索引是一种帮助减少数据查询时间的数据结构。索引在实现这一目标时,需要付出存储、内存和保持更新(较慢的写入速度)的额外成本,这使得我们可以跳过检查每一行表的繁琐任务。就像书后面的索引页一样,它可以帮助你找到正确的一页。事务是数据库操作的基本单位,它要么完全成功要么完全失败,不可能存在部分成功部分失败的情况。
2023-05-21 10:36:09
893
原创 Redis 源码解析之通用双向链表(adlist)
Redis源码中广泛使用,作为一种通用的双向链表,用于简单的数据集合操作。adlist提供了基本的增删改查能力,并支持用户自定义深拷贝、释放和匹配操作来维护数据集合中的泛化数据value。
2023-04-08 12:20:57
424
1
原创 图说论文《An Empirical Evaluation of In-Memory Multi-Version Concurrency Control》
本文从《 An Empirical Evaluation of In-Memory Multi-Version Concurrency Control》摘取部分图片,来介绍 MVCC。该文从并发控制协议,版本存储模型,垃圾回收机制,索引机制四个方面阐述了 MVCC 的现状。更多详细内容,请查看。
2022-10-05 14:54:49
602
原创 QQ-Like(1):用 Qt 编写 QQ 登录窗口
QQ-Like(1):用 Qt 编写 QQ 登录窗口类的功能LoginWnd: 登录主窗体: 主要包含两个页面: 登录页面和登录中页面LoginWndMainPage: 窗体的登录界面LoginWndLoginingPage: 窗体的登录中界面LoginLineEdit: 用户名密码的输入框类CheckBox: 自定义的勾选框: 主要用于自动登录和记住密码ClickableL......
2022-07-26 00:13:24
574
翻译 K8s 网络新手教程(Kubernetes Networking Guide for Beginners)
K8s 网络新手教程(Kubernetes Networking Guide for Beginners)原文链接: Kubernetes Networking Guide for Beginners译者注: 建议对照阅读 The Layers of the OSI Model Illustrated. (有机会翻译下这篇, 挖坑不填 )译者注:Node: Pod 运行的环境。根据实际情况, 可以是虚拟机或物理机。Pod: Kubernetes 创建和管理计算资源的最小可部署单元, 类
2021-07-24 08:24:35
691
原创 LeetCode: 335. Self Crossing
LeetCode: 335. Self Crossing题目描述You are given an array x of n positive numbers. You start at point (0,0) and moves x[0] metres to the north, then x[1] metres to the west, x[2] metres to the south, x...
2019-12-02 09:23:33
248
原创 LeetCode: 334. Increasing Triplet Subsequence
LeetCode: 334. Increasing Triplet Subsequence题目描述Given an unsorted array return whether an increasing subsequence of length 3 exists or not in the array.Formally the function should:Return true if...
2019-11-27 09:18:26
160
原创 LeetCode: 332. Reconstruct Itinerary
LeetCode: 332. Reconstruct Itinerary题目描述Given a list of airline tickets represented by pairs of departure and arrival airports [from, to], reconstruct the itinerary in order. All of the tickets belo...
2019-11-26 09:20:35
276
原创 LeetCode: 331. Verify Preorder Serialization of a Binary Tree
LeetCode: 331. Verify Preorder Serialization of a Binary Tree题目描述One way to serialize a binary tree is to use pre-order traversal. When we encounter a non-null node, we record the node’s value. If i...
2019-11-25 08:22:20
199
原创 LeetCode: 330. Patching Array
LeetCode: 330. Patching Array题目描述Given a sorted positive integer array nums and an integer n, add/patch elements to the array such that any number in range [1, n] inclusive can be formed by the sum ...
2019-11-24 17:28:09
225
原创 LeetCode: 329. Longest Increasing Path in a Matrix
LeetCode: 329. Longest Increasing Path in a Matrix题目描述Given an integer matrix, find the length of the longest increasing path.From each cell, you can either move to four directions: left, right, up...
2019-11-22 09:32:47
221
原创 LeetCode: 328. Odd Even Linked List
LeetCode: 328. Odd Even Linked List题目描述Given a singly linked list, group all odd nodes together followed by the even nodes. Please note here we are talking about the node number and not the value in...
2019-11-21 08:16:16
189
跟我一起写 Makefile
2018-07-14
Gnu标准的make文档
2018-07-14
The Vim Tutorial and Reference By Steve Oualline
2017-12-20
Objective-C程序设计 第四版 高清
2017-12-07
The Transport Layer Security (TLS) Protocol V1.1
2017-08-25
The_C++_Programming_Language,Special_Edition.
2016-07-09
关于函数模板的问题,有点点没有看懂。
2016-03-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人