自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 收藏
  • 关注

原创 Redis事务与管道

Redis事务通过MULTI和EXEC实现命令的批量提交与顺序执行,保证事务内命令不被其他客户端插入,具备隔离性但无自动回滚机制。若命令存在语法错误,事务整体失败;运行时错误则仅影响该命令,其余继续执行。配合WATCH可实现乐观锁,监控键变化以决定事务是否执行。相比之下,管道(Pipeline)通过一次性发送多条命令减少网络往返时间(RTT),提升通信效率,但不保证原子性或隔离性,适用于高吞吐场景。两者虽均支持批量操作,但目的与特性不同:事务重在逻辑一致性,管道重在性能优化。

2026-11-03 08:14:50 959

原创 Redis持久化

Redis持久化通过RDB和AOF机制保障数据不丢失。RDB以快照形式定期备份内存数据,文件紧凑、恢复快,但可能丢失两次快照间的数据;AOF记录所有写命令,支持更细粒度恢复,配合everysec策略平衡性能与可靠性。生产环境建议启用AOF,避免单点故障。

2026-10-29 14:03:43 1448

原创 WebSocket协议

HTTP通信中,服务端无法主动向客户端推送消息,导致需轮询,效率低。WebSocket协议通过在HTTP基础上升级,实现双向实时通信,服务端可主动推送数据。其握手过程由客户端发起升级请求,服务端响应后,双方建立持久连接,使用帧格式(含FIN、opcode、Payload等)传输消息。借助websocketpp库,可便捷搭建服务器,通过设置open、close、message等回调函数处理事件,并实现消息收发。客户端可通过HTML+JavaScript连接,实现全双工通信。

2026-10-23 09:58:15 2623

原创 【在线五子棋对战】服务器业务分类请求处理

本文实现了一个基于WebSocketPP的在线五子棋对战服务器,支持用户注册、登录、信息获取等HTTP请求处理,以及大厅与房间的WebSocket长连接通信。通过Session管理维持用户状态,结合数据库实现用户数据持久化,利用房间与匹配模块完成对战匹配与实时消息交互,整体架构清晰,具备良好的可扩展性与实时性。

2026-10-16 23:26:38 1985 2

原创 【在线五子棋对战】游戏匹配模块

本文实现了一个基于C++的三段位(青铜、白银、黄金)游戏匹配系统。采用list模拟可删除元素的阻塞队列,通过条件变量与互斥锁保障线程安全。匹配管理模块为每个段位创建独立线程,当队列人数≥2时自动配对,创建房间并通知玩家;支持用户主动取消匹配,可从队列中移除。系统具备高并发、低延迟特性,适用于实时对战场景。

2026-10-16 23:15:16 1111

原创 【在线五子棋对战】session

error_code 在 WebSocket++ 定时器中用于标识回调触发的原因。当定时器被取消(cancel())时,回调中的 error_code 会被设置为非零值(如 operation_aborted),可借此判断是否为异常取消,避免执行不必要的逻辑。在 Session 管理中,通过 set_timer 实现会话超时自动清理,结合 error_code 判断,确保取消操作不误删会话,实现安全的生命周期管理。

2026-10-10 21:24:21 1660

原创 【在线五子棋对战】在线用户

本文设计并实现了一个基于WebSocket的在线游戏房间管理系统,涵盖用户登录后的大厅与房间状态管理、用户连接映射、统一JSON通信协议及多房间动态管理。通过Online_Manager维护大厅/房间用户连接,Room类处理下棋、聊天、退出等操作并广播消息,Room_Manager实现房间创建、查找与销毁。系统采用线程安全的哈希表结构,支持多用户并发,确保消息一致性与游戏逻辑正确性,适用于实时对战类应用。

2026-10-10 21:23:26 1937

原创 【在线五子棋对战】数据管理模块实现

本文设计并实现了一个基于MySQL的用户数据管理模块,采用表类封装方式,以user表为核心,通过User_Table类提供注册、登录、查询、胜负更新等接口。系统使用SHA-256+16字节随机盐进行密码哈希存储,确保安全性;通过std::mutex保证多线程环境下数据库操作的线程安全,并利用智能指针管理结果集防止内存泄漏。所有操作均通过预编译SQL语句执行,有效防范注入风险,保障了用户数据的完整性与系统稳定性。

2026-09-23 10:10:26 3857

原创 【在线五子棋对战】实用工具类模块实现

本文实现了一套完整的C++日志系统,支持多级别日志输出(DEBUG/INFO/WARNING/ERROR/FATAL),包含时间戳、文件名、行号及颜色标识。通过宏封装简化调用,结合strftime格式化时间,并利用std::unique_ptr与自定义删除器管理OpenSSL资源。同时集成MySQL、JSON序列化、字符串分割、文件读取及基于SHA-256+随机盐的密码加密模块,提供安全可靠的实用工具链,适用于中小型项目开发。

2026-09-23 09:55:33 2398

原创 NAT技术

本文详细解析了计算机网络中实现内外网通信与流量调度的三大核心机制:NAPT、内网穿透与代理服务器。NAPT(网络地址端口转换):作为传统 NAT 的进阶技术,NAPT 通过建立“内网 IP:端口”与“公网 IP:端口”的映射关系,允许多台内网主机共享一个公网 IP 访问外网。同时,文章指出了 NAPT 的单向性限制,即外网无法主动访问内网主机。内网穿透:针对 NAPT 的限制,文章介绍了内网穿透的解决方案——通过内网主机主动与公网中转服务器建立连接,再由该服务器代为转发外网请求,从而实现外网对内网设备的

2026-09-06 10:14:28 1597

原创 Linux高级IO

文章摘要:本文深入探讨了五种I/O模型(阻塞、非阻塞、信号驱动、多路复用、异步I/O)的实现原理与差异,重点分析了select/poll/epoll三种多路复用技术的设计思想。通过代码示例详细展示了非阻塞I/O的轮询实现、select服务器的构建过程,以及epoll的ET/LT触发模式区别。文章指出I/O的本质是"等待+数据拷贝",提出通过Reactor模式实现高效事件驱动,并强调ET模式下必须采用非阻塞I/O以避免数据丢失。最后解释了为每个连接维护独立缓冲区的重要性,以及读写事件在ep

2026-09-06 10:11:30 1405

原创 IP/MAC帧/ARP协议

IP协议作为网络层核心协议,负责跨网络的主机间通信,主要内容包括: IP报文结构:包含版本号、首部长度、总长度、生存时间(TTL)、协议类型等关键字段,支持分片重组功能; 地址管理:采用CIDR无类别编址,通过子网掩码划分网络号/主机号,使用私有IP+NAT缓解地址短缺; 路由转发:路由器通过路由表进行路径选择,采用分层递进方式定位目标网络; 配套协议: ARP实现IP到MAC地址解析 ICMP提供网络诊断功能 MAC帧协议处理局域网内通信 分层协作:与传输层(TCP/UDP)和数据链路层(MAC)协同工作

2026-08-20 11:06:28 6041 4

原创 传输层UDP/TCP协议

本文摘要:文章深入解析了TCP/IP协议栈中UDP和TCP的工作原理。UDP作为无连接协议,通过端口号标识通信,采用固定8字节报头,无需连接管理但缺乏可靠性保证。TCP作为面向连接的可靠协议,通过三次握手建立连接,引入序号确认、滑动窗口、拥塞控制等机制确保可靠性。重点探讨了TCP的可靠性机制(确认应答、超时重传)、连接管理(三次握手/四次挥手)、流量控制(滑动窗口)和拥塞控制算法。同时分析了粘包问题、异常处理及全连接队列等实现细节,对比了两种协议在缓冲区管理、报文处理等方面的差异,全面阐述了TCP/IP传输

2026-08-10 10:59:29 3506

原创 HTTPS

摘要:HTTPS通过SSL/TLS协议加密HTTP通信,结合对称和非对称加密技术保障数据安全。非对称加密用于身份验证和密钥交换,对称加密用于高效数据传输。CA证书确保公钥合法性,防止中间人攻击。通信过程涉及三组密钥:验证证书、协商对称密钥及实际数据传输加密。HTTPS通过哈希摘要和数字签名技术验证数据完整性,确保通信安全且高效。整个过程在保障安全的同时兼顾性能,是现代网络通信的重要安全基础。

2026-07-26 11:17:29 5698 9

原创 HTTP协议(Linux视角)

本文介绍了HTTP协议的核心概念与实现细节,主要包括以下内容:1. URL结构解析,包括域名解析、端口默认值和特殊字符转义(urlencode/urldecode);2. HTTP请求/响应格式,详细说明请求行、报头、正文等组成部分及其作用;3. 服务端实现原理,包括资源路径处理、响应构建和不同类型资源的Content-Type设置;4. 常见HTTP特性,如状态码分类(特别是重定向)、长连接机制和会话保持技术(Cookie/Session);5. HTTP工具使用,展示了Postman和Fidler等工具

2026-07-26 11:15:13 3833 3

原创 协议定制/序列化-反序列化(Linux视角)

本文摘要: 本文介绍了网络通信中的协议定制、序列化/反序列化技术,重点讲解了JSON作为现成的解决方案。文章首先通过User类示例说明了协议定制的概念,然后详细阐述了三种确保报文完整性的方法。随后展示了一个基于TCP的简易计算器服务实现,包括服务端和客户端的完整代码,演示了自定义协议和序列化方案。最后重点介绍了JSON序列化方案,包括Json::Value的使用、StreamWriterBuilder和CharReaderBuilder的建造者模式应用,并提供了将原有自定义序列化替换为JSON实现的完整pr

2026-07-08 18:11:02 1347 2

原创 C++的空间适配器

STL空间配置器采用内存池机制管理容器内存申请,分为一级和二级配置器。一级配置器封装malloc/free,处理大块内存(>128B);二级配置器通过哈希桶管理小块内存(≤128B),以8字节为间隔预分配20倍内存,减少系统调用。该设计解决了外碎片问题但存在内碎片,相比内核slab分配器更专注于STL容器的小块内存需求,提升效率。空间配置器本质是以空间换时间,通过池化技术优化频繁内存申请的性能开销。

2026-07-08 17:56:24 1194 1

原创 Linux:TCP协议的socket套接字

本文介绍了基于TCP协议的socket套接字实现,包括服务端和客户端的开发流程。服务端通过socket()、bind()、listen()初始化,使用accept()建立连接后通过read/write进行通信;客户端通过connect()连接服务端后收发数据。文章详细讲解了日志系统实现,支持多进程/多线程并发处理,并介绍了守护进程的实现方法,使服务端进程不受终端关闭影响。最后还讨论了TCP与UDP的主要区别,如连接建立、可靠性保证等特性。

2026-06-15 21:18:40 3104 3

原创 Linux:UDP协议的socket套接字

本文介绍了socket套接字编程的基本概念和使用方法。主要内容包括: socket类型:网络套接字(TCP/IP)、Unix域间套接字(本地通信)和原始套接字(底层网络访问) 核心API:socket()、bind()、listen()、accept()、connect()等接口的使用方法 UDP编程实现:详细展示了UDP服务器和客户端的代码实现,包括初始化、启动和通信过程 扩展应用: 实现英汉词典翻译功能 远程命令行执行 简单聊天室功能 Windows下的socket编程 关键技术点: 地址转换函数(ht

2026-06-15 18:21:58 1029 1

原创 Obsidian笔记PC/Android同步方案--Gitee/GitHub

摘要:本文介绍了利用Gitee代码托管平台实现Obsidian笔记云同步的方案。主要内容包括:1)在Gitee创建私有仓库并克隆到本地;2)配置Git环境并安装Obsidian-Git插件实现自动同步;3)Android端使用GitSync应用配合Gitee私人令牌进行同步;4)设置.gitignore文件保护隐私数据。该方案解决了GitHub访问慢的问题,实现了PC和移动端的笔记自动同步,同时提供了隐私保护措施。

2026-05-26 11:19:47 2382 1

原创 编程字体-Maple Mono -- 安装部署

MapleMono是一款专为代码优化的开源字体,提供多种版本选择(含连字/无连字、终端图标版、中文版等)。推荐使用Scoop命令行工具一键安装(支持TTF/OTF/WOFF2格式),安装路径默认为用户目录下的scoop文件夹。在VSCode中配置时,需在settings.json文件设置字体家族并启用连字功能。该字体还支持通过OpenType标签自定义格式特性,其他IDE配置方法可参考GitHub文档。懒人可直接下载NF-CN-unhinted整合包,但Scoop安装方式更为便捷安全。

2026-05-26 11:18:56 1836

原创 C++的IO流

本文介绍了C++中的流类及其应用。主要内容包括:1)标准输入输出流cin/cout的工作原理及运算符重载;2)文件流ifstream/ofstream的使用方法,包括文本和二进制模式读写;3)字符串流istringstream/ostringstream的类型转换功能,用于数据序列化和反序列化。文章还说明了各类流之间的继承关系,如fstream和stringstream分别继承自iostream,实现文件/字符串的读写功能。这些流类通过运算符重载简化了数据输入输出操作,避免了手动类型转换。

2026-05-17 08:47:45 3203 4

原创 C++特殊类设计(设计模式)和类型转换

本文摘要:C++中特殊类的设计与类型转换详解。重点介绍了四种特殊类的实现方式:1)禁止拷贝的对象(禁用拷贝构造和赋值重载);2)只能在堆上创建的对象(构造函数私有化);3)只能在栈上创建的对象(禁用operator new);4)单例模式(饿汉和懒汉两种实现)。同时深入讲解了C++四种类型转换操作符:static_cast(隐式转换)、reinterpret_cast(强制转换)、const_cast(去除const属性)和dynamic_cast(多态类型安全转换)。文章通过代码示例展示了各种设计模式和类

2026-05-17 08:46:45 1454 1

原创 Linux生产者消费者模型

本文介绍了多线程编程中的生产者消费者模型及其实现方法。首先阐述了生产者消费者模型的基本概念,通过超市的比喻解释了缓冲区的作用和解耦思想。然后详细讲解了三种实现方式:基于阻塞队列、环形队列和线程池的生产消费模型,并分析了各自的优缺点。文章还探讨了条件变量和信号量在同步机制中的应用,以及读写锁的原理和读者写者问题。最后通过代码示例展示了线程池的单例模式实现。全文系统地讲解了多线程编程中的关键技术和常见问题解决方案,为开发高效并发程序提供了实践指导。

2026-05-08 09:47:21 1381 1

原创 【语法】C++的智能指针

本文介绍了C++智能指针的实现原理及其在异常安全中的应用。主要内容包括: 传统指针在异常发生时可能导致内存泄漏,智能指针通过RAII技术自动管理资源释放; 三种智能指针的实现:auto_ptr(管理权转移)、unique_ptr(防拷贝)、shared_ptr(引用计数); shared_ptr的线程安全实现及循环引用问题,通过weak_ptr解决; 定制删除器的应用场景; RAII机制在锁管理中的应用(lock_guard和unique_lock)。 智能指针通过将资源生命周期与对象绑定,有效解决了内存泄

2026-05-08 09:46:23 1506

原创 Linux线程的同步与互斥

本文深入探讨了多线程编程中的互斥锁机制。首先通过一个抢票程序的案例,展示了共享资源在多线程环境下可能出现的数据不一致问题(如票数变为负数)。文章详细分析了线程切换导致的竞态条件,并介绍了互斥锁的基本使用方法,包括初始化、加锁、解锁等操作。随后讲解了互斥锁的实现原理,指出其通过原子性操作保证线程安全。文章还提供了互斥锁的RAII风格封装实现,并区分了可重入函数与线程安全的概念。最后讨论了死锁的四种必要条件及其预防方法,比较了悲观锁与乐观锁的区别,并介绍了自旋锁的特点和适用场景。全文系统地阐述了多线程编程中资源

2026-04-22 17:17:56 1295

原创 Linux线程

本文摘要: 本文深入探讨了Linux线程实现机制。首先介绍了页表管理原理,解释了多级页表如何解决内存占用问题。随后详细阐述了Linux线程的本质——轻量级进程(LWP),指出Linux通过复用进程PCB数据结构实现线程功能。文章通过代码示例展示了线程创建、终止、等待和分离等操作,分析了线程资源共享与私有资源的区别。最后介绍了C++线程库及封装pthread库的实现方法。重点内容包括:线程与进程的关系、线程异常处理、线程局部存储以及线程控制的接口使用。文章揭示了Linux线程设计的核心思想:复用进程管理机制,

2026-04-22 17:14:33 1277

原创 Linux进程信号

摘要:本文详细介绍了Linux系统中的信号机制。信号是进程间通信的一种方式,分为普通信号(1-31)和实时信号(34-64)。信号处理包括默认动作、自定义动作和忽略动作三种方式。文章阐述了信号产生的方式(终端按键、系统调用、硬件异常和软件条件),并重点分析了信号递达的时机(从内核态返回用户态时)。通过代码示例展示了信号注册、阻塞和递达的过程,解释了核心转储的作用,以及不可重入函数和volatile关键字的相关概念。最后讨论了SIGCHLD信号的特性及其在子进程回收中的应用。

2026-03-25 20:23:22 1222 1

原创 Linux进程间通信(IPC)——system V

本文详细介绍了Linux系统下的三种进程间通信(IPC)机制:共享内存、消息队列和信号量。重点讲解了共享内存的实现原理,包括创建(shmget)、关联(shmat)、去关联(shmdt)和删除(shmctl)等系统调用,并通过示例代码展示了如何使用共享内存进行进程间通信。文章还分析了共享内存的优缺点,指出其通信速度快但缺乏同步机制的特点,并提供了通过管道实现同步的解决方案。最后简要介绍了消息队列和信号量的基本概念及使用方法,阐述了IPC资源在内核中的组织方式。这些IPC机制为Linux系统下进程间高效通信提

2026-03-25 18:20:38 1179 1

原创 Linux进程间通信(IPC)——管道

本文详细介绍了进程间通信(IPC)的两种主要方式:匿名管道和命名管道。首先阐述了IPC的必要性,包括数据传输、资源共享、事件通知和进程控制等功能。然后重点讲解了匿名管道的实现原理,包括其生命周期、通信特征、读写行为及同步机制,并通过进程池案例展示了实际应用。接着介绍了命名管道的命令行实现和代码实现,对比了两种管道的特点:匿名管道只能用于有亲缘关系的进程间通信,而命名管道可用于任意进程间通信。文章还深入分析了管道的内核实现机制,包括文件描述符表、struct file结构体等底层原理。最后通过完整的代码示例演

2026-03-02 20:45:13 1529 2

原创 Linux动静态库

本文介绍了Linux系统中动静态库的基本概念、创建和使用方法。静态库(.a)在编译时将代码链接到可执行文件中,运行时不再需要,但文件较大;动态库(.so)在运行时链接,多个程序共享,文件较小。文章详细讲解了如何创建静态库(使用ar命令)和动态库(使用g++ -shared),并说明了四种让系统找到动态库的方法:设置环境变量、移动库到系统路径、修改配置文件和建立软链接。最后解释了动静态库的加载原理:静态库使用绝对地址,动态库使用相对地址(通过-fPIC选项生成位置无关码),动态库只需在内存中加载一份,多个程序

2026-03-02 20:44:34 1208 1

原创 Linux文件系统

本文详细介绍了磁盘的物理结构、存储原理和文件系统管理机制。首先阐述了机械硬盘的物理组成和工作原理,包括盘片、磁道、扇区等基本结构,以及CHS寻址方式。然后讲解了操作系统如何通过LBA地址将磁盘抽象为线性结构,并利用局部性原理提高IO效率。接着重点分析了文件系统的组成,包括SuperBlock、inode表、数据块等核心组件,以及inode与数据块的对应关系。最后深入探讨了软硬链接的实现原理和应用场景,解释了硬链接数的作用机制,以及为什么不允许用户创建目录硬链接的原因。全文系统性地揭示了文件系统如何高效管理磁

2025-11-26 19:57:25 1406

原创 Linux文件操作

本文系统介绍了C语言和Linux中的文件操作机制。从C语言的fopen、fwrite等库函数入手,详细解析了文件打开模式、缓冲区刷新策略等核心概念。然后深入到Linux系统调用层面,讲解了open、write、read等底层接口的实现原理,包括文件描述符的分配规则和重定向机制。特别分析了缓冲区的实现原理,阐明了用户级缓冲区(FILE结构体)和内核级缓冲区的区别与联系。最后通过模拟实现C语言缓冲区和分析Linux内核源代码,展示了文件操作从用户层到内核层的完整调用链。全文揭示了编程语言文件操作与操作系统接口的

2025-11-26 19:56:31 1501

原创 Linux进程控制

本文深入探讨了Linux进程管理中的核心概念与操作。首先解析了fork系统调用的底层原理,包括PCB创建、写时拷贝机制和双返回值实现。详细讲解了进程终止的三种状态(正常/异常/错误)和退出码机制,介绍了exit、_exit函数的区别及缓冲区处理。重点阐述了进程等待wait/waitpid系统调用,包括阻塞与非阻塞等待、状态码解析和僵尸进程回收。随后全面介绍了exec函数族的六种变体及其程序替换原理,并演示了如何实现一个简易Shell,包括内建命令处理和环境变量管理。文章通过大量代码示例展示了进程创建、终止、

2025-10-20 15:06:31 1306

原创 Linux进程概念

文章摘要: 本文详细介绍了Linux进程管理的核心机制,包括进程控制块(PCB/task_struct)、进程状态、优先级、地址空间等关键概念。重点解析了: 进程管理:通过PCB(task_struct)描述进程,内核以链表/哈希表组织进程; 进程状态:Linux特有的7种状态(R运行、S睡眠、D不可中断、T暂停等)及僵尸/孤儿进程问题; 环境变量:PATH等全局变量的作用机制,通过getenv()、命令行参数等方式获取; fork()原理:写时复制技术实现父子进程独立,同一虚拟地址映射不同物理内存; 进程

2025-10-20 14:32:19 1421

原创 Linux基本工具(yum、vim、gcc、Makefile、git、gdb)

本文介绍了Linux开发环境的常用工具,包括软件包管理器yum的基本操作(搜索、安装、卸载)和源配置;详细讲解了vim编辑器的三大模式(命令、插入、底行)及常用命令;介绍了gcc/g++编译器的使用方法和编译流程(预处理、编译、汇编、链接),以及静态/动态链接的区别;讲解了make/Makefile项目构建工具的规则编写和自动化构建原理;演示了如何用C++实现一个带颜色显示的进度条程序;介绍了git版本控制工具的基本使用(clone、add、commit、push);最后讲解了gdb调试器的使用方法和常用调

2025-08-31 20:35:05 1150 2

原创 【语法】C++的异常

C++异常机制是处理错误的一种现代方法,相比C语言返回错误码的方式具有明显优势。传统错误处理方式存在查找错误码麻烦、无法处理某些特殊返回值等问题,而异常机制通过try-catch块可以灵活捕获和处理错误。异常抛出后会在调用栈中查找匹配的catch块,遵循就近匹配原则。异常使用时需要注意内存泄漏等异常安全问题,可以采用RAII技术解决。实际开发中通常会建立自定义异常体系,通过基类捕获各种派生类异常。虽然异常可能导致执行流混乱,但其优势在于能清晰传递错误信息、简化多层调用错误处理流程,是现代C++编程中不可或缺

2025-08-31 20:34:48 1232

原创 【语法】C++11特性

本文介绍了C++11引入的主要新特性,包括: 统一的列表初始化语法,支持变量、容器和自定义类型的{}初始化方式 auto自动类型推导和decltype类型推导 final和override关键字用于继承控制 智能指针和新增容器 默认成员函数控制(default/delete) 右值引用和移动语义(移动构造/移动赋值) 完美转发(forward)保留右值属性 lambda表达式的使用方法和实现原理 线程库(thread/mutex/atomic)实现跨平台多线程编程 这些特性使C++编程更加高效和安全,特别是

2025-07-23 13:17:15 1344

原创 【数据结构】哈希——位图与布隆过滤器

本文介绍了位图和布隆过滤器两种数据结构及其应用。位图通过位标记存储状态,适用于海量无重复整数查询,40亿数据仅需500M空间。布隆过滤器扩展了位图,使用多个哈希函数降低误判率,适合字符串等非整型数据,但存在误判可能且不支持删除。文章详细讲解了二者的实现原理、优缺点,并给出了腾讯面试题等实际应用案例,如查找出现次数特定的整数、文件交集等。最后介绍了一致性哈希在分布式存储中的应用。这两种数据结构在大数据处理中具有高效、节省空间的优势。

2025-07-23 13:13:56 1402

原创 【数据结构】C++的unordered_map/set模拟实现(开散列(哈希桶)作底层)

本文基于红黑树和开散列哈希表,实现了C++中unordered_map和unordered_set的核心功能。重点内容包括:1) 哈希表迭代器设计,通过节点指针和哈希表指针实现跨桶遍历;2) 哈希表改造,支持K模型(set)和KV模型(map),引入KeyOfT仿函数解决不同类型值比较问题;3) 实现unordered_map的[]运算符重载。相比STL标准实现,该方案简化了迭代器遍历顺序的处理,采用哈希桶直接遍历方式,虽然遍历顺序与插入顺序不一致,但保证了基本功能完整性。插入操作平均时间复杂度为O(1),

2025-07-03 20:16:02 1039

手搓栈和队列的C语言实现项目

该项目是用C语言实现的栈和队列的代码,里面有包括入栈、出栈、入队、出队等等代码,可以让初学数据结构的同学更好的理解栈和队列

2025-01-16

结课项目动态通讯录的c语言实现

内容概要: 用了动态开辟+文件的方式实现了通讯录的增删查改 适合人群:0基础项目经验,熟练C语言是初学者 能学到什么: 项目经验,命名习惯,动态开辟、文件、结构体、枚举的运用

2024-11-21

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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