- 博客(11)
- 收藏
- 关注
原创 Git核心与GitHub实战指南
本地Git客户端是安装在本地的软件,Git客户端是同步远程仓库与本地仓库副本的关键,用户需要通过git客户端从远程服务端克隆、更新本地仓库副本,也需要通过git客户端才能将本地仓库副本的修改同步到远程仓库,本地仓库副本对应远程服务端中的一个仓库,实质上是根据远程仓库克隆到本地磁盘的一个文件夹,文件夹内的文件对应远程仓库的文件,文件夹内的文件可以自由操作,和普通文件没有区别。本地仓库副本,对比普通的文件夹,只是多了一个.git的隐藏文件夹,里面会记录远程仓库信息、日志、未提交远程仓库的记录等。
2026-01-03 18:19:15
767
原创 单机fastdfs搭建
创建 Tracker 的存储⽇志和数据的根⽬录# 配置 tracker.conf在这⾥,tracker.conf 只是修改⼀下 Tracker 存储⽇志和数据的路径# 启⽤配置⽂件(默认为 false,表示启⽤配置⽂件)# Tracker 服务端⼝(默认为 22122)port=22122# 存储⽇志和数据的根⽬录主要修改base_path路径。
2025-12-23 09:50:04
891
原创 MySQL缓存方案全解析
为了整个系统速度更快,先询问redis是否存在数据,存在就立刻返回,不存在再访问MySQL——之前的MySQL作为一个存储系统,现在是MySQL和redis作为一个整体作为存储系统,reids缓存MySQL的热点数据,由于redis是内存数据库它的速度很快,而MySQL要慢很多,所以用redis来缓存。缓存不存在,去访问mysql获取,服务器从MySQL中读取到数据后,服务器先把数据写入 Redis(补全缓存),再返回给调用方(若redis最初数据不存在会多访问了redis是弊端)不能处理多语句的事务。
2025-12-19 14:52:31
757
原创 实现kvstore的持久化功能:全量持久化和增量持久化
摘要:本文实现了一个基于哈希表的键值存储系统,采用全量和增量结合的持久化方案。系统使用WAL日志记录增量操作,后台线程根据时间间隔(30秒)或数据量阈值(WAL≥10MB或KV≥1000条)触发全量持久化。重启时先加载全量数据文件,再重放WAL日志恢复增量数据。核心代码包含哈希表持久化/加载、WAL日志记录/重放以及后台检查点线程的实现,确保数据安全性的同时兼顾性能。测试验证了系统重启后能正确恢复持久化数据。
2025-12-11 15:03:39
641
原创 增加kvstore的排序sort与范围查询range功能
本文介绍了基于红黑树的KV存储系统设计与实现。采用红黑树作为核心数据结构,支持按键排序和高效范围查询,所有操作时间复杂度稳定在O(logN)。系统实现了两个主要功能:1) RSORT命令全排序输出所有键值对;2) RANGE命令查询指定闭区间内的键值对。通过中序遍历实现升序输出,并设计了缓冲区收集结果的方案。测试表明系统能正确完成排序和范围查询功能,适用于需要高频操作和有序查询的场景。
2025-12-10 14:32:42
470
原创 Pipeline功能增加解析:批量命令高效处理
摘要:Pipeline实现通过客户端批量提交命令,服务端顺序执行后批量返回结果。关键特性包括顺序执行(不插入其他命令)、无原子性保证(失败不回滚)及响应需带分隔符(如\r\n)。代码实现包括命令拆分(kvstore_split_commands)、参数解析(kvstore_split_token)和请求处理(kvstore_request)。测试用例验证了多命令处理流程,如"SET KEY VAL\r\nGET KEY"等命令的拆分执行。
2025-12-08 13:34:54
568
原创 百万并发优化:动态数组 vs 直接大数组
摘要:本文提出了一种动态数组优化方案,采用块状链表结构替代直接分配百万级数组。核心结构包括conn_block_t(含1024元素的数组块和指针)和conn_manager_t(管理链表)。通过fd/1024定位块,fd%1024定位块内位置。相比直接分配百万数组,该方案节省内存但耗时增加,因malloc操作更频繁。实现了初始化、获取元素和销毁三个主要功能,在空间效率和性能间取得平衡。
2025-12-05 16:03:17
320
原创 创建型与结构型设计模式解析
设计模式分为创建型(封装对象创建)、结构型(优化类与对象关系)和行为型三类。创建型模式如单例模式(确保唯一实例)、工厂模式(隐藏创建细节);结构型模式如装饰器(动态添加职责)、组合模式(统一处理部分与整体)。核心设计原则包括面向接口编程、组合优于继承,通过解耦提高扩展性,应对需求变化。模式选择需结合实际场景,权衡稳定点与变化点。
2025-11-18 20:38:22
586
原创 KV存储引擎架构与性能优化详解
KV存储系统架构主要包括客户端SDK、网络连接层、数据解析层和存储引擎层。系统支持多种数据结构引擎(数组、红黑树、哈希表、跳表),通过预定义的协议进行数据操作(SET/GET/MOD/DEL)。性能优化方面,通过改进哈希函数(使用字符位置加权计算)将哈希表QPS从62,247提升至110,864,接近红黑树的117,647。系统采用epoll单线程架构,网络处理能力达12万QPS,关键设计包括固定协议格式、引擎适配层(5个标准API)和预分配内存策略(减少malloc次数)。特别针对哈希冲突问题,优化后的哈
2025-11-18 20:21:47
1110
原创 标准IO与文件IO操作全解析
本文摘要:介绍了标准I/O和文件I/O的基本操作。标准I/O包括文件打开(fopen)、关闭(fclose)、字符读写(fgetc/fputc)、行读写(fgets/fputs)和对象读写(fread/fwrite)等函数,以及缓冲区管理、文件定位和错误检测方法。文件I/O涉及无缓冲操作,包括文件描述符管理(open/close)、读写(read/write)、定位(lseek)等系统调用,还介绍了目录访问(opendir/readdir)、权限修改(chmod)和文件属性获取(stat/lstat/fst
2025-11-17 14:42:21
941
原创 用户态网络缓冲区设计探秘
摘要:用户态网络缓冲区的设计主要解决生产者与消费者速度不匹配时的数据缓存问题,以及处理网络数据包不完整的情况(如粘包)。常见设计包括定长buffer、ringbuffer和chainbuffer三种方案。定长buffer实现简单但需频繁数据迁移;ringbuffer避免了数据移动但可能引发多次系统调用;chainbuffer通过链表结构实现动态扩缩容且无需数据迁移。不同网络模型(阻塞IO、Reactor、Proactor)虽处理IO方式不同,但不影响用户态缓冲区的基本设计。优化手段包括使用位运算替代取余、r
2025-11-17 14:23:19
1235
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅