- 博客(21)
- 收藏
- 关注
原创 MySQL数据库基础
建表核心:选对数据类型 + 加约束(主键 / 外键 / 非空)+ 注释,引擎用 InnoDB、编码用 utf8mb4。SELECT指定字段 +WHERE筛选 +ORDER BY排序 +GROUP BY聚合 +JOIN联表,分页必用LIMIT。避坑关键:UPDATE/DELETE 加 WHERE,聚合筛选用 HAVING,联表优先显式 JOIN。
2026-03-16 22:14:46
203
原创 Linux 高级 IO:从 5 种 IO 模型到 epoll 与 Reactor 模式
IO 的核心:减少 “等待” 时间占比,让进程只处理就绪的 IO。多路复用选型:低并发用 select/poll,高并发必用 epoll(ET 模式 + 非阻塞 IO)。高性能落地:基于 epoll ET + Reactor 模式,是 Linux 高并发网络编程的标准方案。从阻塞 IO 到 epoll,本质是把 “进程等 IO” 的工作逐步转移给内核,让内核替我们做更高效的 “筛选”,最终实现 “进程只处理有效 IO” 的目标。
2026-03-15 21:15:25
355
原创 数据链路层通信、网络层协议与内网穿透
基于 HTTP 协议的网络穿透技术,将非 HTTP 流量封装成 HTTP 报文,通过 80/443 端口传输,突破网络端口 / 协议限制。数据链路层依托交换机、ARP 协议实现局域网高效、低碰撞通信,MTU 限制报文大小。ARP 完成局域网内 IP→MAC 解析,DNS 完成域名→IP 解析,支撑基础寻址。ICMP 是网络诊断核心,支撑 ping、traceroute 等工具。NAT 解决 IPv4 地址短缺,FRP 实现内网穿透,代理与 HTTP 隧道实现流量中转与限制突破。
2026-03-13 20:42:08
368
原创 SystemV IPC(共享内存 / 消息队列 / 信号量)详解
define PATH_NAME "/tmp/shm_test" // ftok的路径(需存在)#define PROJ_ID 0x6666 // ftok的项目ID#define SHM_SIZE 4096 // 共享内存大小(4K对齐)// 获取唯一keyexit(1);return key;最快的 IPC,无同步互斥,需结合信号量使用。shmget(创建)→shmat(映射)→shmdt(解除)→shmctl(删除)。生命周期:随内核,需手动清理。
2026-03-12 23:45:00
369
原创 进程间通信之管道(匿名管道 + 命名管道)详解
匿名管道是基于血缘关系(父子 / 兄弟进程)的单向通信方式,依赖父进程文件描述符表的继承特性实现,无磁盘文件名(匿名),生命周期随进程。命名管道突破了血缘关系限制,支持无关进程间通信,通过磁盘上的管道文件(有文件名、inode)标识,数据仍存储在内核缓冲区(即不刷盘)。解析命令行,按分割出 n+1 个命令(n 个创建 n 个匿名管道(每个管道连接两个相邻命令);循环创建 n+1 个子进程,每个子进程:第一个命令:关闭标准输出,将管道写端重定向为标准输出。
2026-03-12 16:28:31
405
原创 Linux 软硬链接与动静态库
软链接是 “路径快捷方式”,独立 inode、跨分区、支持目录,源文件删了就失效。硬链接是 “文件别名”,共享 inode、仅限同分区、不支持目录,所有别名删完才会删除文件数据。
2026-03-11 20:02:31
387
原创 HTTP/HTTPS 从入门到底层
原理:用哈希函数(MD5/SHA256)对数据做运算,生成固定长度的「指纹」(比如 SHA256 生成 32 字节)。特点:同一数据 → 同一指纹(哪怕改 1 个字符,指纹完全不同)。不可逆(无法从指纹反推原数据)。用途:判断数据是否被篡改(比如 Session ID 就是基于摘要生成的)。进阶:摘要用私钥加密 → 数字签名(防篡改 + 防冒充)。密钥组用途特点CA 公钥 + 私钥验证证书合法性,确保服务端公钥可信内置在客户端,无法伪造服务端公钥 + 私钥。
2026-03-10 23:45:00
385
原创 Linux 信号:从用户态到内核态的底层实现剖析
/ 自定义SIGINT处理函数printf("收到SIGINT(%d),但我不退出!\n", sig);// 设置自定义处理函数// 注册到sighand数组的第2位(SIGINT)printf("进程PID:%d,自定义SIGINT处理\n", getpid());return 0;运行后按Ctrl+C,进程不会终止,而是打印自定义内容 —— 这就是sighand数组生效的结果。Linux 信号的底层核心是两位图(block/pending)+ 一张函数指针数组。
2026-03-10 18:21:34
407
原创 Linux网络:协议栈,TCP/UDP、IP、MAC帧详解
本文系统介绍了网络协议栈的分层架构与核心协议原理。采用五层模型解析:应用层(HTTP/DNS)、传输层(TCP/UDP)、网络层(IP)、数据链路层(MAC)和物理层。重点剖析了TCP的三次握手/四次挥手机制、可靠传输原理(序列号/重传/滑动窗口)以及与UDP的关键差异;详细阐述了IP分片、MAC地址转换及ARP协议工作原理。文章通过协议字段解析、数据传输流程和典型场景分析,揭示了网络通信的分层解耦思想,即各层专注自身功能,通过封装/解封装实现高效协作,确保数十年的协议迭代兼容性。
2026-03-09 19:58:47
401
原创 Linux线程:从底层剖析到接口使用
线程的底层本质是 “共享进程资源的最小调度单位”,Linux 下通过共享mm_struct实现,切换代价远低于进程。的参数生命周期、回收资源、互斥锁 / 条件变量解决同步问题,死锁和锁粒度是核心坑点。进阶场景中,线程池解决频繁创建销毁问题,TLS 解决线程私有数据,实际开发要结合场景选择同步方式,避免过度并发。最后说一句:线程不是越多越好,也不是不用最好 —— 关键是理解其底层原理,根据业务场景(比如 CPU 密集型用核心数 + 1 个线程,IO 密集型可多线程)设计,才能真正用好线程。
2026-03-09 17:21:38
389
原创 从底层到应用:文件系统核心原理全解析
底层核心:文件系统以 “块” 为最小操作单元,基于 LBA 寻址,核心是管理元数据(inode / 超级块)和数据块。核心机制:inode + 数据块是经典组织方式,日志机制保证一致性,COW适配高性能场景,挂载是访问文件系统的前提。优化关键:机械硬盘关注碎片和块大小,SSD 关注4K对齐和写放大,按点针对优化。
2026-03-08 15:28:29
382
原创 Linux 进程:地址空间、页表、进程控制、程序替换
/ 先写一个自定义程序(test.c)i<argc;// 编译:gcc test.c -o test// 主程序(main.c)// 替换成自定义程序exit(1);wait(NULL);return 0;进程地址空间:是虚拟的,每个进程独立,分为内核 / 用户空间,用户空间按代码段 / 数据段 / 堆 / 栈等布局。页表:映射虚拟地址和物理内存,父子进程共享只读页,写时复制(COW)是核心优化。进程控制。
2026-03-07 13:02:29
369
原创 告别 SSH 断连丢进程!Screen 与 Tmux 终端复用工具
默认前缀Ctrl+B按起来不顺手?可以修改为Ctrl+A# 编辑配置文件(没有就新建)# 添加以下内容set -g prefix C-a # 前缀改为Ctrl+Aunbind C-b # 解绑默认的Ctrl+Bbind C-a send-prefix # 绑定新前缀# 生效配置screen和tmux的核心价值是解耦 SSH 连接和进程,避免断连丢进程。优先掌握screen的「创建 - 脱离 - 重连」三件套,满足基础需求。进阶学习tmux的分屏、多窗口功能,适配复杂的日常操作场景。
2026-03-06 21:45:00
721
原创 Linux入门:常用指令、工具、文件属性
理解文件与权限背熟高频命令多在服务器上实操命令不用一次全记,用到什么查什么,反复用几次自然就刻在脑子里。真正开发 / 运维,90% 时间都在用本文这些命令。
2026-03-06 10:20:39
212
原创 【深度剖析】C++ 继承与多态
静态多态:编译期确定(函数重载、模板)。动态多态:运行期确定(虚函数 + 继承)—— 本文重点讲解。必须有继承关系。子类重写(override)父类的虚函数。用基类指针 / 引用指向子类对象。// 基类:动物public:// 虚函数:说话cout << "动物发出声音" << endl;// 虚析构函数(避免内存泄漏)// 子类:猫public:// 重写父类虚函数void speak() override { // override关键字显式声明重写,建议加上。
2026-03-04 23:45:00
396
原创 C++ 单例模式:从原理到实战,一篇讲透
写法线程安全懒加载析构友好推荐度饿汉式是否否⭐⭐⭐懒汉式(DCL)是是否⭐⭐⭐⭐静态局部变量是是是⭐⭐⭐⭐⭐单例的核心是 “唯一实例 + 全局访问”,实现关键是私有化构造函数;C++11 及以上优先用 “静态局部变量版”,极简、安全、无坑;多线程场景下,避免用无锁的懒汉式,否则会破坏单例唯一性;永远记得禁用拷贝和赋值,防止单例被 “克隆”。
2026-03-04 16:48:16
398
原创 C++ 多线程与线程安全(锁、原子、死锁、线程池)
多线程创建用,编译加-pthread,优先用join()。简单互斥用lock_guard,灵活控锁用,尽量少手动简单计数用原子变量atomic<type> xxx(val),比锁快,复杂逻辑才用锁。死锁就抓 “循环等待”,要么固定加锁顺序,要么用std::lock。线程池核心是 “任务队列 + 工作线程”,用条件变量实现等待 / 唤醒,新手直接套我上面的模板就行。
2026-03-03 23:00:00
340
原创 C++ 右值引用、移动语义、完美转发(现代 C++ 核心)
本文介绍了C++中的左值、右值及移动语义。左值是可取地址的持久对象,右值是临时对象。右值引用(&&)用于绑定临时对象,实现移动语义。移动构造函数通过转移资源所有权而非复制数据,显著提升大对象处理性能。完美转发(std::forward)保持参数原始属性,解决模板参数传递问题。移动语义解决了函数返回大对象、容器插入等场景的效率问题。关键知识点包括:左值/右值/将亡值区别、移动比拷贝快的原理、noexcept在移动构造中的作用,以及通用引用(T&&)的特性。这些概念是C++11性
2026-03-03 17:34:52
36
原创 C++ RAII 机制深度剖析 —— 从原理到工程实践
在 C++ 后端开发、服务器编程、基础组件开发中,RAII是绕不开的核心思想。它不仅是一种技术,更是一种资源管理范式,智能指针、锁管理、文件句柄、网络套接字等全部基于 RAII。RAII =资源获取即初始化。把资源(内存、文件句柄、socket、锁、连接等)封装到对象里利用 C++对象生命周期自动管理资源构造函数获取资源析构函数自动释放资源资源生命周期 = 对象生命周期RAII 是 C++ 区别于其他语言的核心资源管理机制利用对象生命周期管理资源自动、安全、无泄漏、无冗余是写。
2026-03-02 20:13:40
344
原创 C++11 智能指针详解
智能指针是C++中管理动态内存的重要工具,解决了原生指针手动管理内存的问题。主要类型包括:unique_ptr(独占所有权,高效)、shared_ptr(共享所有权,引用计数)和weak_ptr(解决循环引用)。shared_ptr存在循环引用风险,需配合weak_ptr使用。智能指针基于RAII机制,确保资源自动释放。面试常见问题包括:shared_ptr线程安全性(引用计数原子但对象访问不安全)、优先使用make_shared(高效且异常安全)以及循环引用的解决方案(weak_ptr)。智能指针显著提升
2026-03-02 20:07:13
47
原创 【C语言】分支语句与循环语句
而else语句则为这两种分支都不满足的情况下执行的语句。在这个例子中,当i的值为5时,就会进入if分支语句中,进而执行break语句,在执行完break语句后,程序将直接跳出循环不再执行循环,因此该程序打印输出的结果为1 2 3 4。此时 i 的值为5,又因为没有新的赋值,导致每次进入循环都会进入if语句中,而if语句又会让你重新执行循环,因此该程序永远无法结束,进入了一个死循环。在这个例子中,只是将break换成了continue,当 i==5 时,执行 if 语句中的continue语句,程序将会。
2024-09-11 22:50:22
1026
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅