- 博客(22)
- 收藏
- 关注
原创 分布式算法raft系列(3)-日志复制
RAFT的日志复制通过领导者驱动、多数节点确认和一致性检查,确保分布式系统中日志的一致性和可靠性。领导者将客户端命令追加到日志,复制到多数跟随者后提交,并最终应用到状态机。即使在故障或网络问题下,RAFT也能通过日志修复和选举机制恢复一致性。
2025-06-03 14:32:35
675
原创 分布式算法raft系列(2)-领导者选举
RAFT的领导者选举通过任期号、投票机制和随机超时确保分布式系统中只有一个领导者,并能快速应对故障。选举过程简单高效,依赖多数节点的共识来保证一致性和容错性。
2025-06-03 14:15:31
383
原创 什么是操作系统?它的主要功能是什么?
操作系统是计算机系统的核心,负责协调硬件和软件的运行,提供高效、稳定、安全的计算环境。常见的操作系统包括 Windows、macOS、Linux、Android 和 iOS 等。
2025-05-30 11:17:32
330
原创 共识算法Raft系列(1)——什么是Raft?
Raft算法是2014年提出的分布式一致性算法,旨在简化Paxos的复杂性。它将共识问题分解为Leader选举和日志复制两个清晰模块,通过Leader节点驱动系统达成强一致性(CP系统)。Raft定义了三种节点角色(Leader、Follower、Candidate),相比Paxos更易于理解和实现。该算法假设非拜占庭故障环境,需要多数节点正常运行,广泛应用于etcd、Consul等分布式系统。与Paxos相比,Raft在保持强一致性的同时显著提高了可理解性,但存在单点性能瓶颈的特点。
2025-05-30 06:19:21
770
原创 分布式不同数据的一致性模型
分布式系统的一致性模型主要分为强一致性和最终一致性两大类。强一致性确保所有节点数据实时一致,适用于金融等关键场景,但牺牲了可用性;最终一致性优先保证系统可用性,数据最终同步,适合社交媒体等高并发场景。此外还存在读写一致性、顺序一致性和弱一致性等变体,各自在一致性强度、可用性和延迟上有所权衡。不同模型适用于不同业务需求,如强一致性用于银行交易,最终一致性用于内容分发,弱一致性则可接受短暂不一致的游戏场景。
2025-05-29 13:23:31
993
原创 分布式CAP理论
CAP定理指出分布式系统无法同时满足一致性(C)、可用性(A)和分区容错性(P)。实践中必须三选二:CP系统(如金融系统)优先保证一致性,AP系统(如社交平台)侧重可用性。网络分区不可避免,因此设计需根据业务需求权衡,金融系统选CP,容忍短暂不可用;电商、社交等选AP,接受最终一致。典型应用包括银行系统(CP)和Twitter(AP)。该定理为分布式架构设计提供了重要指导原则。
2025-05-29 13:10:59
590
原创 CPU的缓存利用率
计算机存储系统分为无电存储(硬盘)和有电存储(内存、缓存、寄存器)。由于CPU运算速度极快,直接从硬盘读取数据效率太低,因此采用多级缓存机制:CPU优先从高速缓存获取数据。缓存命中率对性能影响很大,连续存储结构(如数组)比分散存储(如链表)更高效,能提高缓存利用率。优化代码的关键在于提高缓存命中率,减少内存加载次数。
2025-05-24 19:56:48
282
原创 libfuzzer新手入门
libFuzzer 是一个由 LLVM 项目提供的功能强大的模糊测试工具,它是一个内置于 LLVM 编译器中的覆盖引导的进化模糊测试引擎,本文是libfuzzer新手入门
2024-08-01 14:03:25
938
原创 文件格式的唯一标识-魔数
魔法数是文件的前几位,它唯一地标识了文件的类型。这使得编程更容易,因为不需要搜索复杂的文件结构来识别文件类型。例如,jpeg文件以ffd8 ffe0 0010 4a46 4946 0001 0101 0047......JFIF........G开头,ffd8表示它是JPEG文件,ffe0标识JFIF类型结构。有一个ascii编码“JFIF”,它在长度代码之后出现,但这不是识别文件所必需的。前4个字节唯一地做到这一点。这给出了一个正在进行的文件类型魔法数列表。
2024-07-31 18:41:30
1687
原创 虚拟机编译安装 dpdk--运行helloworld
insmod igb_uio.ko ./dpdk-devbind.py --bind=igb_uio 02:05.0 //绑定网卡。sudo grub-mkconfig -o /boot/grub/grub.cfg 或 sudo updategrub。改为GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"找到GRUB_CMDLINE_LINUX=""五.dpdk之vfio-pci绑定(可选)DPDK版本:dpdk-22.07。显示 绑定dpdk成功。
2024-07-25 19:49:28
1219
原创 浏览招聘jd发现有risc-v这个东西,调查了一番,什么是risc-v?
下午公司的活干完了,闲着也是闲着,于是点击浏览了,其中有个,发现有个帖子标题带remote,我对remote工作很感兴趣,毫不犹豫点了进去,大概浏览了下jd,提到了RISC-V,RISC-V有的时候在网上就看到,但不知道是什么,搜了下网上,整理下资料,给大家介绍下RISC-V。
2024-07-19 17:51:38
444
原创 二分法定位bug
二分查找算法大家都知道,二分法定位也是同样的解决思路,每次把问题缩小到一半,这样定位的次数就是log2n的次数,大大减少了定位的次数,节省了时间。
2024-07-19 17:10:55
531
原创 llvm libtooling 遍历变量,函数,类
由于项目需要,需要解析cpp代码,经调查llvm,clang前端有这样的库可以使用,找到了libtooling,功能强大,有完善的文档,于是写一系列的文章介绍libtooling库的使用
2024-07-04 17:36:10
810
原创 llvm libtooling rewriter的使用
在本教程中,您将学习如何使用一个创建一个,以查找指定目录下文件VarDeclAST节点,并用rewriter接口修改变量的右值,重新写入文件。
2024-07-02 20:06:01
1073
原创 安装llvm clang
我现在工作中要写个fuzz引擎,语法分析部分用到了clang的接口,于是把自己用到的llvm clang的知识写一个系列专栏
2024-07-01 17:08:25
668
翻译 使用 LibTooling 和 LibASTMatchers 构建工具的教程
本文档旨在介绍如何基于 Clang 的 LibTooling 构建一个有用的源代码到源代码翻译工具。它明确面向 Clang 的新用户,因此您只需具备 C++ 和命令行的工作知识即可。
2024-07-01 09:31:47
230
原创 如何编写基于RecursiveASTVisitor的ASTFrontendAction
我现在工作中要写个fuzz引擎,语法分析部分用到了clang的接口,打算写一些博客记录绍下,ast(抽象语法树),libtooling接口的使用等等
2024-07-01 09:25:02
1094
原创 llvm clang AST 介绍
我现在工作中要写个fuzz引擎,语法分析部分用到了clang的接口,打算写一些博客记录绍下,ast(抽象语法树),libtooling接口的使用等等
2024-06-29 17:49:10
874
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人