自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 c++虚拟内存

虚拟内存是操作系统为进程提供的抽象内存地址空间,允许程序使用比物理内存更大的地址空间,同时提供隔离和保护。

2025-05-24 16:40:04 469

原创 postgres 16密码带特殊字符会失败

postgres 16密码带特殊字符会验证失败。去掉特殊字符@ 修改密码验证成功。

2025-04-21 06:24:13 147

原创 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

原创 pcm格式文件介绍

pcm音频格式介绍

2024-07-26 13:09:54 1107

原创 虚拟机编译安装 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

原创 c++17 判断文件路径是否为目录子路径

linux c++17子路径是否在目录下的一个容易遇到的bug

2024-07-23 11:12:57 380

原创 浏览招聘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关注的人

提示
确定要删除当前文章?
取消 删除