自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 高并发内存池 - 简化版 tcmalloc

本文系统介绍了高并发内存池的设计与实现。首先分析了系统malloc的性能瓶颈,包括系统调用开销、全局锁竞争和内存碎片问题。然后提出三级架构解决方案:ThreadCache无锁分配小对象(<256KB)、CentralCache桶锁调度中等对象、PageCache管理大内存页。通过定长内存池、自由链表、Span合并等技术,实现了内存分配速度比系统malloc快3-10倍的效果。关键创新点包括:细粒度无锁设计、慢启动批量获取、精确对齐控制碎片、基数树优化映射等。实测表明,该方案在多线程环境下性能优势显著,

2026-04-18 19:15:21 420

原创 muduo http优化 —— 在不更改原本数据监测http上 多支持了功能完善的http1.1

本文基于muduo网络库设计实现了一套高性能HTTP服务器,采用模块化分层架构,支持静态资源、动态路由、中间件扩展等功能。核心优化包括:1)基于Reactor事件驱动模型实现高并发处理;2)采用基数树路由匹配算法提升查找效率;3)通过零拷贝文件传输和智能缓存机制优化静态资源访问;4)支持异步线程池处理耗时任务。测试结果表明,该服务器在长连接场景下QPS达23.6万,性能远超主流Web框架(如Flask、Express等)。系统具有模块化、可扩展、低延迟等特点,完全满足生产环境需求。

2026-04-03 11:49:00 427

原创 muduo 定时器 优化 —— 抽象接口TimerQueueInterface 动态多态实现WheelTimerQueue,原TimerQueue用LegacyTimerQueueAdapter 包装

时间轮是顺序访问、无复杂平衡操作,CPU 占用能控制在 15%~25%,降低了约 70%,大大减少了服务器资源消耗。本次 muduo 定时器优化采用完全非侵入式设计,原生 TimerQueue 红黑树实现未做任何代码修改,仅通过抽象接口、适配器模式与新增多级时间轮实现性能升级,保证了底层库的稳定性与兼容性,支持随时回滚与无缝切换。2. 定时器删除性能:和添加类似,10 万次定时器删除,原生红黑树要 1.1 毫秒,时间轮只要 0.09 毫秒,同样提升 10~12 倍,高频取消定时任务的场景下,优势特别明显。

2026-04-03 01:47:35 373

原创 muduo Buffer 优化 ——TCMalloc条件编译优化

本文针对muduo网络库Buffer内存分配性能问题进行了优化。原版使用std::vector<char>和glibc malloc分配器,存在锁竞争严重、内存碎片率高和扩展性差三大痛点。优化方案采用条件编译和分配器封装技术,通过新增MUDUO_BUFFER_USE_TCMALLOC宏定义,实现TCMalloc分配器的无缝切换。核心创新包括:1) 封装符合C++标准的TCMallocAllocator模板类;2) 通过BufferStorage类型别名实现无侵入式优化;3) 保持原有接口不变。测

2026-03-29 15:40:14 376

原创 解析muduo源码之 HttpServer.h & HttpServer.cc

本文介绍了muduo网络库中的HttpServer实现。HttpServer是基于TcpServer封装的HTTP专用服务器,主要特性包括:1) 自动处理HTTP协议解析和响应构建;2) 提供简洁的回调接口,用户只需处理HttpRequest并填充HttpResponse;3) 内部通过TcpServer处理网络通信,HttpContext完成协议解析;4) 支持长连接和短连接。实现上采用模块化设计:TcpServer负责网络、HttpContext负责解析、HttpRequest/Response负责数据

2026-03-26 01:10:41 368

原创 解析muduo源码之 HttpContext.h & HttpContext.cc

摘要:HttpContext是Muduo网络库中的HTTP协议解析器,负责将TCP字节流解析为HttpRequest对象。它采用状态机模式处理HTTP请求,包含4个解析状态:请求行、请求头、请求体和完成状态。核心功能包括processRequestLine()解析请求行、parseRequest()驱动状态机进行整体解析,并支持长连接复用。该设计有效解决了TCP粘包问题,确保即使数据分多次到达也能正确解析完整请求。HttpContext作为TcpConnection和用户处理逻辑之间的桥梁,实现了HTTP协

2026-03-26 01:01:53 311

原创 解析muduo源码之 HttpResponse.h & HttpResponse.cc

本文介绍了muduo网络库中的HttpResponse类实现。该类用于构造HTTP响应报文,包含状态码、响应头和响应体,并提供了将这些内容序列化成标准HTTP格式的功能。核心方法appendToBuffer()将响应按HTTP协议格式拼接成状态行、响应头、空行和响应体,写入Buffer用于发送。类设计考虑了长/短连接处理,自动添加Content-Length等必要头信息。该类与HttpRequest配合,完成HTTP请求-响应处理流程,是muduo实现HTTP服务器的重要组成部分。

2026-03-26 00:51:12 420

原创 解析muduo源码之 HttpRequest.h

HttpRequest.h 是 muduo 网络库中处理 HTTP 请求的核心头文件,主要功能是封装和存储解析后的 HTTP 请求信息。该文件定义了 HTTP 请求方法(GET/POST 等)和版本(HTTP/1.0/1.1)的枚举类型,并通过私有成员存储请求方法、路径、查询参数、接收时间和请求头等信息。核心功能包括设置/获取请求方法和版本、添加/获取请求头、交换数据等操作。该类作为 HTTP 请求的"容器",将请求报文解析为 C++ 对象,但不处理网络 IO,便于用户回调函数获取请求信

2026-03-24 12:26:51 208

原创 Muduo 全套架构总结图

本文介绍了基于主从Reactor模式的网络架构设计。整体架构分为主Reactor(运行在主线程,负责接收新连接)和多个从Reactor(IO线程池,处理已建立连接的读写和定时任务)。请求流向从客户端连接到主Reactor接收,再分配到从Reactor处理。核心组件包括TcpServer(总调度)、Acceptor(接收连接)、EventLoop(反应堆循环)、TcpConnection(连接管理)等,实现了线程安全的高效网络通信。

2026-03-24 06:21:38 264

原创 解析muduo源码之 TcpServer.h & TcpServer.cc

TcpServer是Muduo网络库中TCP服务器的核心控制器,采用主从Reactor模型实现高性能网络服务。其主要功能包括: 架构设计: 主Reactor(mainLoop)负责接收新连接 从Reactor(IO线程池)处理连接读写 通过轮询方式均衡分配连接 核心机制: 使用Acceptor接收连接 通过EventLoopThreadPool管理IO线程 用ConnectionMap管理所有活跃连接 提供三大回调接口(连接/消息/写完成) 关键特性: 线程安全设计 无锁高性能 连接全生命周期管理 支持端口

2026-03-24 06:15:36 440

原创 解析muduo源码之 Acceptor.h & Acceptor.cc

本文详细解析了Muduo网络库中的Acceptor类实现。Acceptor作为TCP连接接收器,主要负责监听端口、接受新连接,运行在主事件循环(mainReactor)中。其核心功能包括:创建非阻塞监听socket,绑定地址和端口,设置socket复用选项;通过Channel管理监听socket事件,当有新连接时触发handleRead回调;处理文件描述符耗尽(EMFILE)等边界情况,采用预置idleFd的经典解决方案。Acceptor将新连接的sockfd和对端地址通过回调交给TcpServer处理,实

2026-03-22 01:11:14 359

原创 解析muduo源码之 TcpConnection.h & TcpConnection.cc

摘要: Muduo的TcpConnection类封装已建立的TCP连接,管理生命周期、数据收发和事件处理。核心特性包括:1) 继承enable_shared_from_this确保线程安全;2) 状态机管理连接状态;3) 双缓冲区(inputBuffer/outputBuffer)处理数据收发;4) 提供send/shutdown等线程安全接口;5) 支持各类回调(连接、消息、关闭等)。实现上采用Reactor模式,通过Channel监听事件,EventLoop保证线程安全,handleRead/handl

2026-03-20 17:22:54 420

原创 解析muduo源码之 TimerQueue.h & TimerQueue.cc

设计点解决的问题工程价值基于 timerfd 触发轮询检测定时器过期效率低,占用 CPU内核级触发,与 Poller 无缝集成,无额外线程 / 轮询开销红黑树排序(std::set)大量定时器的添加 / 删除 / 查找效率低O (logN) 时间复杂度,支持海量定时器管理双集合(TimerList/ActiveTimerSet)按时间排序与快速取消需求冲突分工明确:TimerList 管排序,ActiveTimerSet 管取消跨线程安全(runInLoop)

2026-03-18 15:52:55 417

原创 解析muduo源码之 TimerId.h

摘要:TimerId是Muduo网络库中用于管理定时器的透明句柄类,其核心设计为解耦上层与底层实现。通过组合Timer指针和唯一序列号作为标识,确保定时器取消操作的准确性。该类继承copyable支持轻量拷贝,默认构造生成无效标识,有效标识仅由TimerQueue构造。通过友元机制限制仅TimerQueue能访问私有成员(timer_和sequence_),保障安全性。TimerId作为上层与TimerQueue交互的唯一标识,使上层无需感知Timer具体实现,只需持有该标识即可取消定时任务,体现了良好的模

2026-03-12 08:07:17 378

原创 解析muduo源码之 Timer.h & Timer.cc

本文分析了Muduo网络库中Timer类的设计与实现。Timer封装单个定时任务,包含回调函数、触发时间和重复间隔等属性,通过原子变量生成唯一序列号解决定时器排序问题。核心设计包括:使用移动语义减少回调拷贝开销,const成员保证状态不可变性,自动推导repeat_属性简化使用,restart()方法基于当前时间重置触发时间以避免间隔漂移。实现上采用静态原子变量统计定时器总数,restart()方法区分单次和周期性定时器处理,前者标记为无效时间,后者更新为now+interval_。整体设计遵循单一职责原则

2026-03-11 10:39:26 394

原创 解析muduo源码之 EventLoopThreadPool.h & EventLoopThreadPool.cc

本文分析了Muduo网络库中的EventLoopThreadPool实现,这是一个管理IO线程池的核心组件。EventLoopThreadPool采用多Reactor模式,通过区分主线程(baseLoop_)和工作线程(loops_)实现高效的并发处理。其主要特点包括:1)提供轮询和哈希两种EventLoop分配策略,兼顾负载均衡和线程亲和性;2)使用unique_ptr自动管理线程生命周期,确保资源安全;3)支持动态配置线程数量,兼容单线程模式;4)通过线程安全断言保证关键操作在正确线程执行。该设计充分利

2026-03-11 10:12:43 356

原创 有状态高并发业务之线程池哈希分配

本文探讨了将客户端连接绑定到特定线程(EventLoop)的设计优势。该方案通过哈希分配确保同一连接的所有请求由同一线程处理,从根本上解决了有状态业务(如会话、长连接)的线程安全问题,无需加锁即可避免数据竞争。性能方面,该设计减少了锁竞争、优化了CPU缓存命中率并降低跨线程通信开销。同时简化了业务开发,使代码更易维护。适用场景包括高并发有状态业务(如游戏、实时通信),而无状态或计算密集型业务更适合轮询分配。这种线程绑定机制是实现高性能、线程安全网络服务的关键设计。

2026-02-27 22:12:19 629

原创 解析muduo源码之 EventLoopThread.h & EventLoopThread.cc

本文详细解析了muduo网络库中的EventLoopThread类,这是一个封装"线程+EventLoop"组合的关键组件。EventLoopThread实现了自动化管理线程创建、EventLoop初始化和事件循环启动的全流程,通过互斥锁和条件变量保证线程安全同步,确保主线程能安全获取子线程创建的EventLoop指针。核心设计亮点包括:1) 栈上创建EventLoop实现自动生命周期管理;2) while循环等待避免条件变量虚假唤醒;3) 支持线程初始化回调扩展;4) 非拷贝约束保证资

2026-02-05 14:45:38 680

原创 解析muduo源码之 EventLoop.h & EventLoop.cc

本文分析了Muduo网络库中EventLoop的核心实现。EventLoop是Reactor模式的核心组件,采用单线程模型,每个线程最多一个实例。核心设计包括:通过eventfd实现跨线程唤醒;使用线程局部存储保证单线程约束;统一处理IO事件、定时任务和跨线程任务。实现上采用swap优化任务队列性能,严格校验线程归属,并忽略SIGPIPE信号保证稳定性。EventLoop整合了Poller、TimerQueue等组件,提供简洁的异步接口,是Muduo高效事件驱动的关键。

2026-02-05 13:55:22 691

原创 解析muduo源码之 EPollPoller.h & EPollPoller.cc

本文详细解析了Muduo网络库中EPollPoller的实现,它是Linux下基于epoll系统调用的IO多路复用组件。EPollPoller通过封装epoll_create/epoll_ctl/epoll_wait系统调用,实现了Poller抽象接口,主要包括事件轮询(poll)、通道更新(updateChannel)和移除(removeChannel)等功能。核心设计亮点包括:1)使用状态机(kNew/kAdded/kDeleted)管理Channel状态,避免重复操作;2)通过epoll_event.

2026-02-04 23:07:56 541

原创 解析muduo源码之 Poller.h & Poller.cc

摘要:本文详细解析了Muduo网络库中的Poller抽象基类设计。Poller作为IO多路复用的核心抽象,定义了poll、updateChannel等纯虚函数接口,支持epoll/poll等不同实现。关键设计包括:1) 绑定特定EventLoop确保线程安全;2) 使用fd-Channel映射提升事件分发效率;3) 非持有Channel设计解耦资源管理;4) 工厂模式隐藏具体实现。Poller.cpp实现了基础功能,如线程安全校验和Channel存在性检查,通过双重验证防止fd复用错误。整体设计体现了接口统

2026-02-04 22:39:18 668

原创 解析muduo源码之 SocketsOps.h & SocketsOps.cc

本文分析了Muduo网络库中的SocketsOps模块,该模块作为网络层的最底层工具集,封装了socket系统调用并提供统一接口。主要特点包括:1)分层错误处理,区分致命错误与非致命错误;2)协议无关设计,兼容IPv4/IPv6;3)高性能默认配置,fd创建即带非阻塞和close-on-exec属性;4)工具化封装地址转换、fd管理等高频操作。实现上采用跨平台适配策略,优先使用高性能系统调用flags,降级场景使用fcntl补充。模块通过类型安全转换、精细化错误分类和协议无关接口,为上层提供简洁高效的网络操

2026-02-04 22:08:19 707

原创 解析muduo源码之 Socket.h & Socket.cc

本文详细解析了Muduo网络库中的Socket类设计与实现。Socket类作为原生socket文件描述符的轻量级封装,采用RAII机制确保资源自动释放,提供bind/listen/accept等核心操作的面向对象接口,并封装了TCP_NODELAY、SO_REUSEADDR等高性能网络编程必备选项。实现上通过SocketsOps模块转发系统调用,支持IPv6兼容,并针对调试需求提供TCP状态查询功能。该设计兼顾线程安全、资源管理和性能优化,是Muduo网络层的基础组件,为上层TcpServer/TcpCon

2026-02-04 17:14:10 663

原创 解析muduo源码之 Channel.h & Channel.cc

本文分析了Muduo网络库中Channel类的设计与实现。Channel作为Reactor模式的核心组件,负责管理文件描述符的事件监听和回调分发。其核心特性包括:1) 不持有文件描述符的生命周期,仅负责事件管理;2) 通过tie机制使用weak_ptr防止回调时对象已析构;3) 严格的状态校验和断言保证线程安全;4) 事件处理遵循"错误/关闭→读→写"的优先级顺序;5) 提供调试友好的事件类型转换功能。代码实现上通过EventLoop中间层与Poller解耦,支持多种I/O多路复用机制,

2026-02-03 23:28:23 693

原创 解析muduo源码之 Buffer.h & Buffer.cc

摘要:本文详细解析了Muduo网络库中的Buffer类设计与实现。Buffer类通过readerIndex_和writerIndex_双索引分离读写区域,采用vector<char>作为底层存储,实现高效的内存管理。核心特性包括:支持预追加区域(8字节)用于协议头处理;提供网络字节序转换接口;实现CRLF/EOL查找功能;通过readFd方法结合readv系统调用优化数据读取性能。内存管理策略优先移动数据而非扩容,大幅减少拷贝开销。该设计有效解决了网络编程中频繁内存分配、数据拷贝等痛点,特别适合

2026-02-03 20:55:17 882

原创 解析muduo源码之 ThreadPool.h & ThreadPool.cc

本文详细介绍了Muduo库中的线程池实现ThreadPool。该线程池基于生产者-消费者模型,采用互斥锁保护共享资源,通过双条件变量(notEmpty_/notFull_)实现高效同步。核心特性包括:支持有界任务队列、线程初始化回调、优雅启停机制等。实现上使用RAII管理锁和线程资源,while循环防止虚假唤醒,全量异常捕获确保稳定性。设计亮点包括:退化执行机制(无工作线程时同步执行任务)、精准唤醒减少竞争、线程命名便于调试。该实现是C++高性能线程池的经典范例,适用于异步I/O、定时器等场景。

2026-02-02 22:30:29 652

原创 解析muduo源码之 ThreadLocalSingleton.h

摘要:ThreadLocalSingleton是Muduo库中的线程局部单例模板类,通过结合__thread关键字和pthread_key_t实现高效线程安全访问。其核心特性包括:每个线程独享单例实例、懒加载创建、自动析构和禁用构造/析构函数。实现上使用__thread存储单例指针实现高效访问,通过pthread_key_t注册析构函数保证线程退出时自动销毁实例。该设计避免了全局单例的线程竞争问题,相比ThreadLocal性能更高,适用于需要线程唯一实例的场景如线程日志器。使用时需注意类型T必须是完整类型

2026-01-31 17:12:33 511

原创 解析muduo源码之 CountDownLatch.h & CountDownLatch.cc

本文详细解析了Muduo网络库中CountDownLatch的实现,这是一个基于互斥锁和条件变量的线程同步工具。文章首先介绍了CountDownLatch的类定义和核心功能,包括wait()、countDown()和getCount()三个主要接口。随后深入剖析了实现细节,重点讲解了RAII锁管理、while循环防止虚假唤醒、notifyAll()确保唤醒所有等待线程等关键设计。文章还通过典型场景示例说明了CountDownLatch的使用方法,并总结了其线程安全、语义清晰等设计亮点,以及不可重复使用等注意

2026-01-31 16:27:46 607

原创 解析muduo源码之 ThreadLocal.h

摘要:ThreadLocal是Muduo网络库中基于pthread_key_t实现的线程局部存储封装类,采用模板设计支持任意C++类型。通过pthread_key_create注册析构函数,确保线程退出时自动释放对象内存;value()方法实现懒加载,线程首次访问时才创建对象。相比__thread关键字,它支持非POD类型和自动析构,但访问效率稍低。使用示例展示了不同线程独立维护std::string对象的能力,体现了线程安全与自动内存管理的特性。该设计弥补了__thread在复杂类型场景的不足,是线程私有

2026-01-31 15:57:19 670

原创 解析muduo源码之 Thread.h & Thread.cc

摘要:本文详细解析了Muduo网络库中的Thread线程封装类实现。Thread类通过封装POSIX pthread接口,提供面向对象的线程管理功能,支持任意可调用对象作为线程函数。核心设计包括:使用std::function封装线程执行函数;通过CountDownLatch确保线程启动同步;区分pthread虚拟ID和内核真实tid;原子变量统计线程数;自动生成线程名便于调试;异常安全处理和资源自动释放。实现上采用ThreadData结构封装执行上下文,startThread函数桥接C风格接口,并通过pr

2026-01-31 15:26:40 604

原创 解析muduo源码之 CurrentThread.h & CurrentThread.cc

摘要:CurrentThread是Muduo网络库中用于高效获取线程信息的核心组件。它通过__thread关键字实现线程局部存储,缓存线程ID(tid)以避免频繁系统调用,所有接口均为内联函数以提升性能。主要功能包括:获取当前线程ID(tid())、线程名称(name()),以及调试相关的栈回溯(stackTrace())等。该组件采用极简设计,为日志系统、锁检查等高频调用场景提供无锁、线程安全的线程信息访问能力,是Muduo高效性能的重要基础。其中stackTrace()函数特别实现了C++函数名的解修饰

2026-01-29 10:55:20 579

原创 解析muduo源码之 Mutex.h

本文介绍了Muduo网络库中的Mutex.h实现,该文件封装了POSIX互斥锁,提供了线程安全的互斥机制。主要内容包括:1) 通过MutexLock类封装原生pthread_mutex_t,增加线程持有检查和断言验证;2) 使用RAII模式的MutexLockGuard实现自动加解锁;3) 引入Clang线程安全注解进行静态检查;4) 通过MCHECK宏检查系统调用返回值。该设计解决了原生互斥锁易用性差、安全性低和调试困难的问题,提供了异常安全、线程安全的锁机制,是Muduo多线程编程的基础组件。

2026-01-29 10:29:36 584

原创 解析muduo源码之 Condition.h & Condition.cc

Muduo的Condition类是对POSIX条件变量的轻量级封装,主要实现了线程间的等待/唤醒机制。其核心设计包括:强制绑定互斥锁确保线程安全,提供wait()、waitForSeconds()等原子操作接口,并通过UnassignGuard机制解决锁状态管理问题。类实现中特别注重错误检查和性能优化,如使用MCHECK宏检查系统调用返回值,采用RAII管理资源,并支持精确到纳秒的超时控制。典型使用场景是配合互斥锁实现阻塞队列等同步结构,通过while循环检查条件避免虚假唤醒。整体设计遵循极简高效原则,既简

2026-01-28 14:57:53 661

原创 解析muduo源码之 BoundedBlockingQueue.h

本文介绍了一个有界阻塞队列(BoundedBlockingQueue)的实现,该队列具有固定容量,适用于需要限流的高并发场景。主要特点包括:1) 使用双条件变量(notEmpty_和notFull_)实现双向阻塞,生产者队列满时阻塞,消费者队列空时阻塞;2) 采用boost::circular_buffer作为底层容器,提供固定容量的环形存储结构;3) 通过RAII锁和移动语义保证线程安全和高效操作;4) 提供put()、take()等核心接口及状态查询方法。与无界队列相比,该设计解决了内存无限增长问题,适

2026-01-28 14:29:15 515

原创 解析muduo源码之 BlockingQueue.h

本文详细分析了Muduo网络库中的BlockingQueue实现,这是一个基于std::deque的线程安全阻塞队列。该队列通过互斥锁(MutexLock)和条件变量(Condition)实现线程安全,支持生产者-消费者模型。核心特性包括:1) put()方法支持左右值插入,利用移动语义减少拷贝;2) take()方法采用while循环防止虚假唤醒;3) 提供drain()方法批量获取数据;4) 通过RAII机制确保锁的安全释放。设计亮点包括全链路移动语义优化、线程安全保障机制和泛型支持。示例展示了其在多线

2026-01-28 14:15:35 569

原创 文件系统

摘要:本文系统介绍了Linux文件系统的核心概念与C++操作实践。首先解析了文件系统基础架构,包括inode、VFS等关键组件,并对比了符号链接与硬链接的区别。随后详细讲解了C++操作文件的三种方式:C++17 filesystem库、系统调用和RAII封装技术。重点剖析了文件描述符管理、高性能日志写入和大文件分片处理等工业级场景的实现方案,并提供了异步写入、批量刷盘等优化技巧。最后总结了权限控制、并发访问等常见问题的避坑指南,为开发者提供了一套完整的Linux文件操作实践框架。

2026-01-27 20:44:19 669

原创 软硬链接

Linux链接机制解析:软硬链接原理与实践 本文系统介绍了Linux系统中的链接机制,包含基础概念、核心区别和实际应用场景。主要内容包括: 基础认知 硬链接是inode的别名,共享相同inode和数据块 软链接是独立文件,存储目标路径信息 两者在inode、跨文件系统支持和目录链接等方面存在本质差异 关键技术点 删除源文件后表现差异 硬链接不能指向目录的原因 权限继承机制解析 inode链接数变化规律 mmap操作软链接的潜在问题 实践应用 日志轮转的无感知实现 程序版本快速切换方案 基于硬链接的轻量备份

2026-01-27 20:36:08 1078

原创 用户态与内核态

小白从基础概念入手,搞懂权限差异与切换场景,通过简单系统调用实操建立认知;进阶者深入底层原理,掌握切换流程、通信方式,理解内核与用户态的协同逻辑;工业级开发者聚焦“场景适配”与“风险规避”,结合内核驱动、高性能服务器场景,优化跨态交互性能,规避内核态与用户态的常见坑;面试者则需提炼“原理+场景+优化”的回答逻辑,突出Linux环境特性与工程实践经验。

2026-01-26 23:08:03 1316

原创 常见设计模式

本文系统介绍了设计模式在Linux C++开发中的应用,重点讲解了创建型、结构型和行为型三大类设计模式。创建型模式包括单例模式(全局唯一实例)、工厂方法(对象创建封装)等;结构型模式涵盖适配器(接口兼容)、代理(访问控制)等;行为型模式涉及观察者(事件通知)、策略(算法切换)等。文章通过Linux服务器开发的实际案例,展示了日志系统、协议解析等场景下设计模式的组合应用,并分析了线程安全、性能优化等实现细节。最后针对常见问题(如单例模式线程安全、观察者模式多线程问题等)提供了解决方案,强调设计模式应遵循&qu

2026-01-26 22:48:50 828

原创 unordered_map与unordered_set

摘要:unordered_map和unordered_set是C++STL中基于哈希表的关联容器,提供平均O(1)时间复杂度的查询、插入和删除操作。unordered_set用于存储唯一键值,unordered_map存储键值对,两者均无序且自动处理哈希冲突。底层采用桶数组+链表/红黑树结构,支持负载因子调整和自动扩容。相比map/set的红黑树实现,哈希表容器在查询效率上更优但内存占用更高。工业级应用中常用于LRU缓存、日志去重等场景,使用时需注意迭代器失效、线程安全和自定义键类型等问题。

2026-01-26 12:59:42 589

空空如也

空空如也

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

TA关注的人

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