
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
本文系统解析 Linux 进程管理核心机制,阐述进程作为程序执行实例的本质,以task_struct为核心控制块通过双向链表组织进程,ps/top可查看进程信息,fork创建子进程时实现代码共享与数据独立;详解进程 R/S/T/Z 等状态,区分僵尸进程(父进程未回收 PCB)与孤儿进程(由 init 接管释放资源);分析 PRI 与 NI 协同的优先级管理,nice值影响优先级;解析进程切换的步骤

本文介绍如何将高性能IO模型OneThreadOneLoop从线程池改造为进程池实现。改造后的进程池版本具有内存隔离、独立CPU核心占用等优势,避免线程安全问题,但需解决进程间通信和文件描述符传递问题。核心实现包括:1)使用socketpair创建双向管道进行进程间通信;2)通过SCM_RIGHTS特性传递文件描述符;3)EventLoopProcess类封装单个进程生命周期;4)EventLoo

本文详细介绍了从Poll迁移到Epoll服务器的关键修改与优化。主要内容包括:核心数据结构替换为epoll_event,通过epoll_create1/epoll_ctl/epoll_wait三步骤管理事件,采用一次性注册而非循环重建数组的方式。重点分析了epoll相较于select/poll的核心优势:事件驱动机制、零拷贝设计、支持高并发连接,以及水平触发与边缘触发的选择建议。最后介绍了基于ep

本文深入解析了DNS和ICMP两大网络核心协议。DNS作为域名系统,采用分布式架构将域名转换为IP地址,通过分层域名结构(如.com、baidu.com)实现高效解析,并详细阐述了从本地缓存到根服务器的查询流程。ICMP作为网络诊断协议,通过ping命令检测连通性(基于ICMP Echo请求/响应),利用traceroute追踪路由路径,帮助定位网络故障。两个协议共同构成了网络通信的基础设施,DN

本文介绍了如何使用C++从零实现一个基础的TCP服务器,涵盖核心流程和关键接口。TCP服务器实现包括创建监听套接字、绑定地址、监听连接、接收连接和通信五个步骤。通过TcpServer类封装这些逻辑,提供了初始化、启动和停止等接口。重点讲解了socket()创建TCP套接字、bind()绑定地址、listen()监听连接以及accept()接收连接等关键系统调用。服务器启动后会循环处理客户端请求,使

本文摘要: 基于线程池模型实现高并发TCP服务器,解决基础多线程方案的资源消耗问题。通过线程复用与任务解耦,将系统流程分为三层:主线程接收连接、线程池调度任务、工作线程处理业务。关键实现包括:1)RAII风格锁封装,确保线程安全;2)通用线程池设计,支持任务队列与条件变量;3)TcpServer改造,将客户端连接封装为任务提交线程池。该方案相比"一线程一连接"模型,显著降低线程

哈希的基本概念以及哈希表的实现
std::stack是 C++ 标准库中的一种容器适配器(Container Adapter),它基于其他容器(如 std::deque、std::vector 或 std::list)实现,提供==后进先出(LIFO, Last-In-First-Out)==的数据结构行为。它不是一个独立的容器,而是通过限制底层容器的接口来实现栈的功能。std::queue。

本文探讨多线程编程中的线程互斥与同步机制。首先通过抢票场景的案例分析,揭示了共享变量在多线程并发操作时可能出现的数据竞争问题,如重复票号和负数票额。文章深入剖析了ticket--操作在汇编层面的非原子性本质,指出该操作由读取、修改、写入三个步骤组成,从而解释了数据异常的根本原因。 为解决这些问题,文章系统介绍了互斥锁(Mutex)的原理与实现,包括std::mutex、std::lock_guar








