滕王阁序
引言《滕王阁序》是初唐诗人王勃的千古名篇,作于上元二年(675年)洪州滕王阁宴会上。文章辞藻华丽、意境壮阔,融写景、抒情、议论于一体,被誉为“千古第一骈文”。 原文正文 豫章故郡,洪都新府。星分翼轸,地接衡庐。襟三江而带五湖,控蛮荆而引瓯越。物华天宝,龙光射牛斗之墟;人杰地灵,徐孺下陈蕃之榻。雄州雾列,俊采星驰,台隍枕夷夏之交,宾主尽东南之美。都督阎公之雅望,棨戟遥临;宇文新州之懿范,襜帷暂驻。十旬休假,胜友如云;千里逢迎,高朋满座。腾蛟起凤,孟学士之词宗;紫电清霜,王将军之武库。家君作宰,路出名区;童子何知,躬逢胜饯。 时维九月,序属三秋。潦水尽而寒潭清,烟光凝而暮山紫。俨骖騑于上路,访风景于崇阿。临帝子之长洲,得天人之旧馆。层峦耸翠,上出重霄;飞阁流丹,下临无地。鹤汀凫渚,穷岛屿之萦回;桂殿兰宫,即冈峦之体势。 披绣闼,俯雕甍。山原旷其盈视,川泽纡其骇瞩。闾阎扑地,钟鸣鼎食之家;舸舰弥津,青雀黄龙之舳。云销雨霁,彩彻区明。落霞与孤鹜齐飞,秋水共长天一色。渔舟唱晚,响穷彭蠡之滨;雁阵惊寒,声断衡...
基础与语法与数据结构:程序结构与预处理
核心要点速览 流程:预处理→编译→汇编→链接→执行 程序入口:main 函数(返回值 int,return 0 表示正常退出) 核心预处理指令:#include(头文件包含)、#define(宏定义)、条件编译(#ifdef/#ifndef/endif)、#pragma once(头文件防重复包含) 核心要点速览 流程:预处理→编译→汇编→链接→执行 程序入口:main 函数(返回值 int,return 0 表示正常退出) 核心预处理指令:#include(头文件包含)、#define(宏定义)、条件编译(#ifdef/#ifndef/endif)、#pragma once(头文件防重复包含) 一、程序结构 执行流程:预处理→编译→汇编→链接→执行 预处理是编译的第一个阶段,由预处理器处理所有以 #开头的指令,生成 “预处理后的源代码” 预处理核心操作:消除注释、展开宏、处理条件编译、引入头文件内容 阶段 核心操作 产出物 关键工具 预处理 处理 # 指令、展开宏、引入头文件 预处理后的源代码 预处理器(cpp) ...
网络编程:IO模型与高并发
核心要点速览 五大 IO 模型:阻塞 IO(低并发)、非阻塞 IO(忙等)、IO 多路复用(高并发核心)、信号驱动 IO(极少用)、异步 IO(理想模型) IO 多路复用:select(位图,FD 上限 1024)、poll(动态数组,轮询)、epoll(Linux 首选,O (1) 事件驱动) 同步 vs 异步:同步需等待 IO 就绪 / 完成(阻塞 / 非阻塞 / IO 多路复用),异步无需等待(内核回调通知) 高并发模型:Reactor(事件驱动)、多线程 Reactor(主线程 epoll + 子线程池处理任务) 核心选择:百万级并发选「epoll + 线程池 + ET 模式」,中高并发选「epoll/poll + 有限线程」,低并发选「BIO + 线程池」 一、同步 IO 与异步 IO核心定义 同步 IO:线程发起 IO 请求后,必须等待 IO 操作(就绪或数据拷贝)完成才能继续执行,线程主动参与等待过程。 典型:阻塞 IO、非阻塞 IO、IO 多路复用(select/poll/epoll)。 异步 I...
基础与语法与数据结构:数据类型与变量
核心要点速览 数据类型分类:基本类型、复合(派生)类型、自定义类型 核心复合类型:指针、引用、数组、结构体、联合体、枚举 变量关键特性:存储类别(auto/static/extern 等)、初始化要求、作用域与生命周期 常量核心:const(只读)、constexpr(编译期常量) 类型转换:隐式转换(编译器自动)、显式转换(四种强制转换) 一、数据类型1.1 基本类型基本类型是 C++ 内置的基础数据类型,具有固定内存大小(部分受平台影响)和明确取值范围。 类型 典型大小(32/64 位系统) 含义 / 范围 面试考点 bool 1 字节 布尔值:true(1)/false(0) sizeof(bool)恒为 1;不可用 0 / 非 0 代替(语法允许但不规范) char 1 字节 ASCII 码:-128127 或 0255 区分signed char(带符号)和unsigned char(无符号);默认符号性由编译器决定 short 2 字节 短整数:-32768~32767 与short ...
网路编程:网络基础
核心要点速览 协议栈:TCP/IP 四层模型(应用层→传输层→网络层→数据链路层) TCP vs UDP:TCP 面向连接、可靠流式;UDP 无连接、高效数据报 三次握手:建立 TCP 连接,确保双方收发能力正常;四次挥手:断开连接,释放全双工通道 TIME_WAIT:客户端第四次挥手后停留 2MSL,确保 ACK 送达、旧报文失效 Socket:网络编程接口,由 “IP + 端口” 唯一标识,TCP 需按固定流程(绑定 - 监听 - 连接 - 收发)编程 一、TCP/IP 四层模型 应用层:提供具体业务协议(HTTP、FTP、DNS),定义数据格式和交互逻辑 传输层:TCP/UDP,负责端到端(进程间)数据传输(可靠 / 高效) 网络层:IP 协议,负责跨网络路由转发(寻址) 数据链路层:处理物理介质上的帧传输(如以太网帧) 二、TCP 与 UDP 核心对比 对比维度 TCP(传输控制协议) UDP(用户数据报协议) 连接性 面向连接(三次握手建连,四次挥手断连) 无连接(直接发送,无需建连) 可靠性 可靠(重传、序...
基础与语法与数据结构:运算符与表达式
核心要点速览 逻辑运算符(&&/||):支持短路求值,右操作数可能不执行 逗号运算符(,):按左到右执行多个表达式,返回最后一个值,优先级最低 右结合运算符:赋值运算符(=)、条件运算符(?:)、单目运算符,优先级相同时从右到左执行 一、逻辑运算符的短路求值(&& / ||)核心规则短路求值是逻辑运算符的优化特性,仅在必要时计算右操作数,直接影响代码执行结果。 &&(逻辑与):左操作数为false时,直接返回false,右操作数不执行。 ||(逻辑或):左操作数为true时,直接返回true,右操作数不执行。 常见场景(含副作用表达式) &&短路示例: 123int i = 0;bool res = (i == 1) && (++i); // 左为false,右++i不执行// 结果:res=false,i=0(而非1) ||短路示例: 123int j = 0;bool res = (j == 0) || (++j); // 左为true,右++j不执...
网络编程:问题与机制
核心要点速览 字节序:主机序(小端 / 大端)→ 网络序(大端),转换函数htons()/ntohs()、htonl()/ntohl() TCP 核心问题:粘包 / 半包(流式无边界),解决方案:固定长度、分隔符、消息头 + 消息体(最常用) UDP 特性:无粘包、可能丢包、数据报大小受限,读写用sendto()/recvfrom() 并发模型:多线程 / 多进程(简单低并发)、I/O 多路复用(epoll 核心,高并发)、线程池 / 进程池(平衡开销) 可靠性保障:超时(SO_RCVTIMEO)、心跳(应用层 / TCP keepalive)、重连(指数退避) 序列化:Protobuf/FlatBuffers(高性能)、JSON/XML(可读性)、自定义二进制(紧凑) 安全防护:SYN 洪水(SYN Cookie)、数据加密(SSL/TLS)、限流(防火墙 / 应用层) 一、字节序转换(跨平台通信基础) 主机字节序:CPU 存储数据的方式,分小端...
函数与指针:函数
核心要点速览 声明与定义:可多次声明,仅能一次定义;原型需匹配参数类型 / 个数(返回类型不影响) 参数传递:值传递(拷贝,不影响实参)、引用传递(别名,无拷贝)、指针传递(地址,支持 nullptr) 函数重载:同名 + 参数列表不同(类型 / 个数 / 顺序),返回类型不参与重载 内联函数:inline 修饰,建议编译器嵌入调用处(适合短函数,无循环 / 递归) 默认参数:遵循 “靠右原则”,不可跳过右侧参数省略左侧 返回值:禁止返回局部变量引用;大型对象返回有 RVO/NRVO 优化 一、函数的声明与定义概念 声明:告知编译器函数的 “存在及原型”(返回类型、函数名、参数类型 / 个数),不包含实现;参数名可选(仅声明时)。 用途:解决 “调用在前、定义在后” 的编译错误,如int add(int, int); 定义:包含声明 + 函数体(具体实现),编译器会分配内存生成指令。 规则 单定义原则(ODR):一个函数可在多个文件中声明,但仅能在一个文件中定义(否则链接报错 “重复定义”)。 原型匹配:声明与...
面向对象编程OOP:友元与运算符重载
核心要点速览 友元:打破封装,允许外部函数 / 类访问类的私有 / 保护成员(分友元函数、友元类、友元成员函数) 运算符重载:自定义类型的运算规则,不可重载 6 个运算符,支持成员函数 / 友元函数两种形式 特殊重载:赋值运算符=只能作为成员函数;<</>>需作为友元函数 一、友元:打破封装的特殊访问机制友元的核心是 “让外部实体获得类的特殊访问权限”,可访问私有(private)和保护(protected)成员,代价是削弱封装性。 1. 友元的种类(1)友元函数 声明方式:类内用friend声明,定义可在类外(非成员函数,无this指针)。 示例: 12345678910class A {private: int num = 10; // 友元函数声明 friend void printA(A& obj);};// 友元函数定义(类外),可直接访问私有成员void printA(A& obj) { cout << ob...
函数与指针:指针与引用
核心要点速览 指针:存储内存地址的变量,支持空值(nullptr)、动态指向、多级访问,存在野指针风险 引用:变量的别名,必须初始化、不可改指向、无空引用,语法简洁安全 访问效率:两者基本一致 适用场景:需空值 / 动态指向 / 多级访问用指针;需简洁语法 / 确保有效 / 避免误操作引用 一、指针指针本质是 “存储内存地址的变量”,支持对内存的间接访问。 1. 类型与特性(1)野指针 定义:未初始化、已释放或越界访问的指针(指向随机 / 无效内存)。 风险:访问野指针会导致内存错误(崩溃、数据错乱),是常见 bug 来源。 示例(错误): 12int* p; // 未初始化,野指针*p = 10; // 未定义行为(访问随机内存) 规避:指针定义时立即初始化(如int* p = nullptr;),释放后及时置空(p = nullptr;)。 (2)空指针(nullptr) 定义:C++11 标准的空指针常量,替代旧版NULL(NULL本质是0,易引发歧义)。 用途:表示指针 “无指向”,避免野指针,可通过条件判断安...

