一、epoll 核心概念 epoll 是 Linux 专属的高性能 IO 多路复用机制,核心作用是监听海量文件描述符的读写事件,是 C/C++ 高并发 TCP 服务的底层基石。 相较于 select/poll:epoll 采用事件通知机制,仅返回就绪的文件描述符,海量空闲连接不会产生性能损耗,高并发
一、核心总览 select / poll 是 Linux 经典水平触发(LT) IO多路复用模型。 核心作用:单线程监听多个文件描述符,阻塞等待IO事件,避免忙轮询,大幅提升并发能力。 两者事件触发机制、内核调度、快照逻辑、唤醒机制完全一致,唯一区别是数据结构与限制。 二、Select 完整原理与特
一、虚继承的诞生原因 普通多重菱形继承存在两个严重问题: 公共基类会被拷贝多份存放在最终子类对象中,造成数据冗余。 访问公共基类成员时存在二义性,编译器不知道使用哪一份父类副本。 虚继承的唯一作用: 让多个父类,共享同一份公共基类子对象,保证最终子类中公共基类唯一。
默认 public 构造 / 析构是常规用法,本文不记录。 只记录工程特殊用法 + 精准限制 + 真实作用。 基础核心规则(5 条) 构造权限:控制能不能 new / 栈实例化 析构权限:控制能不能 delete / 栈自动析构 protected:子类可见,外部不可见 构造、析构 和拷贝无关,禁止
物理层、数据链路层、网络层 物理地址(MAC) 每个物理地址都是全球唯一的,出厂时就预设定好的唯一标识。 集线器 想想最初两台设备之间要互联,怎么做?在两台设备之间连上一根网线。三台设备之间互联呢?两两之间连上一根网线。问题来了:设备稍微一多,每台设备都需要接出去N个网线,怎么解决?
1、观察者模式(Observer) 原理:实现一对多的依赖关系。被观察者(发布者)维护一份观察者订阅列表;当自身状态发生改变,主动遍历列表发送通知,所有订阅的观察者自动收到回调。发布方和订阅方解耦。 使用场景:网络事件通知、配置热更新、消息订阅‑发布、事件驱动系统。 #include <iostre
1、适配器模式 Adapter 原理:创建适配器中间类,将一个已有类的接口转换成客户端期望的目标接口。让两个原本接口不兼容的类可以一起工作,适配器起到 “转换器” 的作用。 使用场景:接入第三方 SDK、新旧系统模块对接、老代码接口改造。 #include <iostream> using name
1、单例模式 Singleton 原理:私有化构造函数,禁止外部new;保证程序整个生命周期内,该类只能实例化出唯一一个对象;对外提供静态全局方法获取实例。C++11 推荐 Meyers 写法(静态局部变量),天然线程安全。 使用场景:日志管理器、全局配置类、数据库连接池、资源管理器。 #inclu