- 博客(223)
- 收藏
- 关注
原创 MySQL事务详解:从基础概念到隔离级别实践
本文全面介绍了MySQL事务的核心概念与应用。首先阐述了事务的ACID四大特性(原子性、一致性、隔离性、持久性),详细说明了InnoDB引擎对事务的支持。接着通过实际代码演示了事务的提交方式、隔离级别设置及测试方法,涵盖自动提交与手动提交的区别。文章重点分析了四种隔离级别(读未提交、读提交、可重复读、串行化)的表现特性,通过多终端模拟实验直观展示了脏读、不可重复读、幻读等并发问题的产生与解决。最后总结指出隔离级别与并发性能的权衡关系,强调了一致性需要数据库约束与应用程序逻辑的协同保障。
2025-12-22 20:41:38
860
原创 掀开HTTPS的神秘面纱:一文读懂加密、中间人与证书的终极博弈
HTTPS是HTTP的安全扩展,通过SSL/TLS协议实现加密通信。本文首先介绍加密基本概念,包括对称加密、非对称加密、数据摘要和数字签名。随后详细探讨HTTPS的演进方案,分析仅使用对称加密、非对称加密及混合加密的潜在安全漏洞,尤其是中间人攻击问题。最终方案引入CA数字证书机制,通过证书验证服务端公钥的合法性和完整性,防止篡改与伪造。证书包含公钥、域名等信息,并由CA机构私钥签名;客户端通过内置CA公钥验证签名,确保通信安全。HTTPS采用对称加密与非对称加密结合,实现高效且安全的密钥交换与数据传输。
2025-12-19 22:02:36
985
原创 高级I/O编程:从Select、Poll到Epoll的演进与Reactor服务器实现
本文系统介绍了五种I/O模型及其演进:从阻塞/非阻塞I/O、信号驱动I/O到多路复用(select/poll/epoll)和异步I/O,深入剖析了各模型原理与效率差异。系统解析了Linux下三种主流I/O多路复用技术的演进路径:从传统的select 到改进的poll,最终发展到高性能的epoll。重点讲解了Linux下高性能的epoll机制,包括其红黑树与就绪队列的设计原理、LT/ET触发模式,并给出完整的多路转接写事件实现方案。最后基于Reactor模式构建了完整的网络服务器。
2025-12-17 18:16:48
945
1
原创 数据链路层与ARP协议核心知识解析
本文围绕数据链路层展开介绍,涵盖以太网技术标准、帧格式,局域网通信与 MTU,以及 ARP 协议等内容。以太网作为广泛应用的局域网技术,规定了拓扑结构等要素,其帧格式包含 MAC 地址等关键信息。局域网存在碰撞域,MTU 限制数据帧大小,影响 IP、UDP 和 TCP 传输。ARP 协议则用于通过 IP 地址查询 MAC 地址,保障数据链路层的正常通信。
2025-12-05 23:10:49
803
原创 网络层与 IP 协议详解
本文围绕网络层展开,阐述其核心功能是提供主机到主机的通信服务,屏蔽底层数据链路层差异。重点讲解 IP 协议,包括报头格式、各字段含义,如版本、首部长度等。还介绍了网段划分(分类划分法、CIDR)、IP 地址数量限制及解决办法、私有与公网 IP、路由过程,以及 IP 的分片与组装等内容,全面解析网络层关键知识。
2025-12-02 21:57:53
1043
1
原创 传输层协议:UDP 与 TCP 原理详解
本文详细介绍了传输层的 UDP 和 TCP 协议。UDP 中,UDP 具有无连接、不可靠、面向数据报等特点,解释了其端口号、协议格式、缓冲区等内容,还提及数据超过 64KB 需手动处理。TCP 则是面向连接的可靠协议,阐述了其协议格式各字段含义,以及确认应答、超时重传、连接管理等保证可靠性和提高性能的机制,也对比了两者特点与适用场景。
2025-11-28 19:37:27
721
1
原创 HTTP 协议详解:从基础到核心特性
本文全面介绍 HTTP 协议,涵盖其定义、URL 结构、编码解码机制、请求响应格式、URI 概念、主要方法、状态码、常见 Header、Cookie 与 Session 机制及各版本特性。HTTP 作为应用层协议,基于 TCP/IP,具有无连接、无状态特点,通过 Cookie 和 Session 解决状态保持问题。文中还详解了 GET、POST 等方法,200、404 等状态码,以及 HTTP/1.0 到 HTTP/3.0 的演进,展现了其在网络通信中的核心作用。
2025-11-23 15:07:40
783
原创 Linux 序列化技术、自定义协议实现及守护进程
本文围绕 Linux 系统的序列化、自定义协议及进程间关系展开,阐述了序列化与反序列化在进程间通信、数据持久化和网络通信中的核心应用,对比了字节流与数据报的特性及不同发送方式。重点介绍了 JSON 序列化的实现的及 TCP 粘包问题的解决方案,并通过完整代码示例呈现了基于自定义协议的 TCP 网络计算器开发流程,涵盖 Socket 封装、协议设计、数据处理等模块。此外,还讲解了进程组、会话的概念及守护进程的实现原理与方法,为 Linux 下的网络编程和进程管理提供了全面的技术参考。
2025-11-16 23:51:31
641
原创 Linux Socket 编程全解析:UDP 与 TCP 实现及应用
本文档 Linux Socket Socket 编程涵盖 UDP 和 TCP 两种重要传输层协议的实现。本文先介绍 Socket 基础,包括 IP 地址、端口号、socket 概念及网络字节序,解释大端小端差异与转换函数。接着详述 UDP 的 socket、bind 等函数及结构体使用,展示回显、翻译、群聊三种服务器实现。同时涵盖 TCP 相关内容,涉及面向连接、可靠传输特性,对应编程函数与流程,呈现 TCP 在不同场景下的应用,全面解析 Linux 下 Socket 编程的核心知识与实践。
2025-11-09 15:59:03
943
原创 Linux 网络基础
本文介绍 Linux 网络基础,涵盖网络发展历程,从独立模式到广域网。解释协议是通信的约定,以打电话为例说明其包含连接建立等多方面规则,并提及协议的层状结构。详细阐述 OSI 七层模型和 TCP/IP 四层模型的分层及功能,介绍网络传输流程,包括局域网传输方式、MAC 地址、封装解包过程、IP 地址,以及 MAC 与 IP 地址的区别和跨网络传输等内容。
2025-11-02 19:57:35
958
原创 Linux 线程的同步与互斥机制及应用
本文详细阐述了 Linux 线程同步与互斥的相关概念、机制及应用。介绍了共享资源、临界资源等核心概念,分析了多线程操作共享资源时数据不一致的问题及原因。重点讲解了互斥锁的接口使用、原理及封装,条件变量的同步机制,还介绍了 POSIX 信号量及其应用。通过生产者消费者模型示例,展示了如何利用互斥锁、条件变量和信号量解决多线程同步与互斥问题,以确保线程安全和高效协作。
2025-10-28 15:04:10
813
1
原创 Linux 线程深度解析:概念、机制与实践
本文档内容围绕 Linux 线程展开全面解析,先阐述线程与进程的概念及关系,指出 Linux 用进程模拟线程,线程是轻量级进程且共享资源。接着讲解虚拟地址空间、页表等内存管理机制,包括用户申请内存流程。还介绍了线程操作的 pthread 库函数,如创建、等待、终止线程等,分析了线程原理,如 TCB、线程栈、局部存储,最后提供了 pthread 库的封装示例,展现了 Linux 线程的核心知识与实践应用。
2025-10-23 20:19:18
1012
原创 Linux 进程信号机制详解
本文详细解析了 Linux 进程信号的核心机制。信号是一种异步事件通知机制,分为 1-31 号的分时信号和 32-64 号的实时信号。信号可通过终端按键、系统调用、命令、硬件异常及软件条件(如管道关闭、子进程退出)产生,处理方式包括默认动作(终止、忽略等)、自定义捕捉和主动忽略(SIGKILL 和 SIGSTOP 不可处理)。文中还阐述了信号的未决、阻塞状态及相关操作函数,信号捕捉的用户态与内核态切换过程,以及可重入函数、volatile 关键字等补充概念,全面覆盖信号的产生、保存处理等关键环节。
2025-10-16 21:58:21
862
1
原创 MySQL 索引:原理、分类与操作指南
本文围绕 MySQL 索引的核心知识,包括其定义、优缺点、分类、工作原理及操作方法。索引是帮助 MySQL 高效获取数据的排好序的数据结构,类似书籍目录,能加快查询但会增加存储并降低写入速度。从物理和逻辑上可分为不同类型,如聚集索引、非聚集索引、主键索引等。还介绍了索引提升查询速度的原因、重复值处理及创建原则,帮助理解和合理使用索引优化数据库性能。
2025-10-12 11:17:01
982
1
原创 Linux 进程间通信机制详解
本文详细介绍了 Linux 进程间通信(IPC)的多种机制,包括管道(匿名管道和命名管道)、System V 通信方案(共享内存、消息队列、信号量)。匿名管道适用于有血缘关系的进程,命名管道可用于无关进程。System V 机制具有内核持久性,共享内存是最快的 IPC 方式,消息队列可发送带类型的数据块,信号量用于进程同步与互斥。文中还阐述了各机制的特性、API 及应用示例,帮助理解不同场景下的 IPC 选择与实现。
2025-10-10 21:04:06
775
原创 MySQL 复合复合查询及内置函数详解
本文档档主要介绍了 MySQL 的复合查询及多种内置函数。内置函数涵盖日期、字符串、数学等类型,如 current_date 获取当前日期、concat 拼接字符串等。复合查询包括基本查询、笛卡尔积、自连接、子查询和合并查询等,通过示例展示了如何筛选数据、排序、计算等操作,还涉及部门、员工等表的创建及数据插入,帮助理解复合查询在实际场景中的应用。
2025-09-24 22:16:26
874
1
原创 Linux库的制作与原理
本文围绕 Linux 库展开,介绍了静态库(.a)和动态库(.so)的概念、区别及相关操作。阐述了软硬链接的特性与创建方式,详细讲解了静态库和动态库的制作步骤、使用方法及对应的 Makefile 编写。还深入剖析了库的原理,包括 ELF 文件格式、从 ELF 形成到加载的过程,以及动态链接中的 GOT 表、PLT 等机制,帮助理解 Linux 库的工作机制与应用。
2025-09-22 14:16:49
983
原创 MySQL-CRUD 操作及常用查询语法详解
本文详细介绍了 MySQL 中的 CRUD 操作(创建、读取、更新、删除)及相关常用查询语法。涵盖插入数据的多种方式,包括单行、多行插入及冲突处理;查询操作的列选择、条件筛选、排序、分页等;更新和删除数据的语法与注意事项。还涉及插入查询结果、聚合函数、分组查询(GROUP BY)及 HAVING 子句的使用,并说明了 SQL 关键字的执行顺序,为 MySQL 数据库操作提供了全面参考。
2025-09-19 16:56:55
896
1
原创 C++ IO 流全解析:从基础操作到高级应用,轻松掌握输入输出精髓
本文全面讲解 C++ IO 流体系,涵盖继承结构与核心功能。从根基类 ios_base 到具体流类(如 istream、ostream、文件流 ifstream/ofstream、字符串流 stringstream 等),清晰梳理层级关系。详解流状态标识(goodbit、eofbit 等)及状态检查方法,助你处理 IO 错误。还介绍 stringstream 的字符串处理技巧(分割、类型转换),以及文件流的打开模式、读写操作、指针控制等。
2025-09-16 11:05:22
663
原创 1小时轻松掌握Git
还在为文件版本混乱而头疼?Git—— 这款分布式版本控制系统能帮你解决烦恼。本文从 Git 的核心概念讲起,类比 Word 文档版本管理的痛点,揭示 Git 如何通过工作区、暂存区和版本库精准追踪文件变化。涵盖安装指南(Linux-centos/ubuntu)、基本操作(仓库创建、配置、提交、回退)、分支管理(创建、切换、合并、冲突解决)及远程协作(克隆、推送、拉取)等核心内容,助你告别混乱的文件命名,高效管理代码版本,轻松应对团队协作。
2025-09-14 18:28:48
1254
原创 Linux磁盘级文件/文件系统理解
本文Linux磁盘级文件理解主要涵盖物理与逻辑结构。物理结构含盘片、主轴等部件,磁道、扇区等概念,扇区是最小物理单位,块是操作系统最小逻辑单位。逻辑结构中,CHS通过柱面等定位扇区,LBA是逻辑块地址,二者可转换。操作系统会分块、分区、分组管理,分组含超级块等组件。inode存文件属性,目录存文件名与inode映射,dentry是路径缓存。分区需挂载到目录才能使用。
2025-09-12 19:51:46
880
原创 C/C++类型转换
本文介绍了C/C++的类型转换知识。C语言有隐式和显式转换,隐式转换由编译器自动完成,遵循向上转换原则;显式转换即强制转换,需用运算符指定。C++在此基础上扩展,隐式转换支持内置与自定义类型等多种转换,可通过构造函数、转换函数实现,还能用`explicit`禁止隐式转换。C++显式转换有`static_cast`(常用安全转换)、`reinterpret_cast`(不相关类型转换)、`const_cast`(去除const属性)、`dynamic_cast`(类层次安全转换,依赖RTTI和虚函数)。
2025-09-10 22:44:43
1226
2
原创 C++-RAII
本文介绍C++基于RAII思想的智能指针,借对象生命周期管理资源,构造函数获取资源,析构函数释放,重载运算符方便访问,均在`<memory>`头文件。auto_ptr因拷贝转移所有权易出错已废弃。unique_ptr独占所有权,不支持拷贝仅支持移动,删除器为模板参数。shared_ptr通过引用计数共享所有权,最后一个销毁时释放,删除器构造时指定。weak_ptr无所有权,解决shared_ptr循环引用,需转为shared_ptr使用。还涉及删除器差异、区分delete与delete[]的方式。
2025-09-08 17:04:15
908
1
原创 C++异常
C++ 异常是程序运行时的意外事件,如除零、内存分配失败等。其机制可分离正常逻辑与错误处理,通过 throw 抛出异常对象,由匹配的 catch 捕获。抛出异常会生成对象拷贝,程序跳转至匹配 catch,沿途函数可能提前退出,局部对象会析构(栈展开),但堆上手动分配对象需智能指针避免泄漏。异常捕获需类型匹配,有派生类转基类等例外。main 函数宜用 catch (...) 作最后防线,可捕获所有异常但无法获取详情。还可通过 throw; 重新抛出异常。C++11 的 noexcept 指定函数不抛异常
2025-09-03 23:11:21
854
原创 C++11
该文档介绍了C++11的多个重要特性。包括initializer_list,允许函数等接受花括号初始化列表;右值引用与移动语义,通过标识即将消亡对象实现资源移动,避免昂贵拷贝,涉及值类别、移动构造、引用折叠、万能引用和完美转发;可变参数模板,支持任意数量和类型参数,可递归展开;lambda表达式,作为匿名函数对象,核心是捕捉列表;包装器std::function和std::bind,分别用于包装可调用对象和适配函数参数;还补充了类默认移动构造和赋值函数的生成规则。
2025-08-29 15:17:32
807
原创 C++ unordered系列
本文围绕C++中unordered系列容器展开,先介绍序列式与关联式容器的区别,前者按插入顺序存储,后者者按键存储。还讲解了pair类型的概念、实现、创建初始化及访问方式。重点阐述哈希表,包括其定义、负载因子、哈希函数、冲突解决方法及代码实现。此外,详细说明了unordered_set和unordered_map的原型、成员函数(构造函数、赋值重载等),以及它们与对应的multiset、multimap在元素唯一性等方面的区别。
2025-08-25 19:21:26
770
原创 AVL树、红黑树理解
该文件介绍了C++中的AVL树和红黑树。AVL树是高度平衡二叉搜索树,任意节点左右子树高度差不超过1,通过平衡因子维护,插入后需更新平衡因子,不平衡时进行右单旋、左单旋、左右双旋、右左双旋调整。红黑树通过颜色约束维持近似平衡,有五条性质,插入节点初始为红色,父节点为红时需根据叔父节点颜色,通过变色、旋转等处理,确保最长路径不超最短路径两倍。文件还提供了两者的结构定义和完整实现代码。
2025-08-19 20:13:52
819
原创 C文件/Linux内核级文件理解
该文件介绍了Linux内核级文件操作相关内容,先回顾C文件接口,包括fopen、fclose等函数的原型、参数和返回值,以及文件打开方式的含义。接着讲解基础IO,涉及文件的本质、操作文件的系统调用(如open、close、read、write),还解释了文件描述符的概念、分配规则及相关结构体,重定向机制与dup2系统调用,标准输出和错误的区别,Linux“一切皆文件”的哲学,最后说明了缓冲区的作用、分类、策略及数据流动路径。
2025-08-19 20:04:06
716
原创 C++-set&map详解
本文介绍了C++中set和map相关知识。首先区分了序列式容器(如vector等)和关联式容器(如set、map等,按键排序,通过键快速查找)。讲解了pair类型,包括其概念、实现、创建初始化及访问方式。详细说明了set(存储唯一元素并排序,基于红黑树,增删查效率O(logN))和map(存储键值对,键唯一且排序)的成员函数,如构造函数、迭代器、容量和修改接口等,还对比了set与multiset、map与multimap的区别,最后提及set与map的迭代器失效问题。
2025-08-14 22:38:12
1061
原创 二叉搜索树
该文档介绍了二叉搜索树(BST)。其基本性质为有序性(左子树节点值小于当前节点,右子树大于)和无重复值。查找、插入、删除操作平均时间复杂度为O(log n),最坏(退化为链表)为O(n)。插入操作从根节点开始,比较值后移动,到空位置插入。删除分四种情况,前三种可简化处理,第四种用右子树最小节点(或左子树最大节点)替换后删除该后继节点。文档还提供了包含插入、删除、查找等操作的完整C++实现代码,使用模板类,包含节点结构及相关方法。
2025-08-14 22:35:54
394
原创 C++多态详解
C++多态是面向对象三大特性之一,分编译时(静态,如函数重载、模板)和运行时(动态,如虚函数调用)两种。实现动态多态需基类指针或引用调用虚函数,且派生类重写该虚函数。虚函数用virtual修饰,派生类重写时可省略virtual,还存在协变、默认参数静态绑定等特殊情况。基类析构函数建议设为虚函数以防内存泄漏。override和final可辅助重写检查与限制。含纯虚函数的抽象类不能实例化,派生类需重写其纯虚函数。多态基于虚函数表和虚表指针实现,静态绑定在编译时确定调用,动态绑定在运行时通过虚表查找函数地址。
2025-08-11 11:07:38
810
原创 c++继承
本文介绍了C++继承的相关知识,包括继承的概念、方式及访问权限规则,基类和派生类对象的赋值转换,继承中的作用域与成员隐藏,派生类默认成员函数的特点,还提及继承与友元、静态成员的关系,重点讲解了菱形继承的问题及通过虚拟继承解决的方法,最后比较了继承与组合的关系,指出优先使用组合,因其耦合度低。
2025-08-09 18:28:14
679
原创 c++泛型编程
本文介绍C++泛型编程,其核心是模板,通过参数化类型实现代码通用与复用。模板分函数模板和类模板,用template关键字声明,typename或class指定占位类型。函数模板可隐式或显式实例化,非模板函数与同名模板函数并存时优先调用前者。类模板需显式实例化。非类型模板参数允许编译时传值,支持整型、指针等,C++20起支持浮点和类类型。模板特化分函数和类模板特化,函数模板特化步骤特定,更推荐重载;类模板特化有全特化和偏特化,全特化指定所有参数,偏特化可部分特化或施加约束,全特化优先级更高。
2025-08-03 11:51:23
459
1
原创 linux-process-control
本文介绍Linux进程控制相关内容,包括进程终止、等待和替换。进程终止本质是回收资源,会释放内存、文件等资源,状态转为终止态,通知父进程,可能产生僵尸或孤儿进程。进程退出有三种情况,常见方法有main函数返回和调用exit函数。进程等待可防止僵尸进程,通过wait和waitpid实现,可获取子进程退出状态。进程替换能替换当前进程代码和数据,执行新程序,PID不变,有execl等多个相关函数,各有不同参数传递方式。
2025-08-02 18:02:28
1221
1
原创 c++-reverse_iterator
C++反向迭代器是标准库的适配器,可反向遍历容器,由正向迭代器封装而成。迭代器按方向性质分输入、输出、单向、双向、随机访问迭代器,按遍历方向分正向和反向迭代器。不同迭代器支持操作不同,如双向和随机迭代器支持--,随机迭代器还支持+、-。支持反向迭代器的普通迭代器需能++和--。其代码实现中,operator*返回前一位置元素以保半开区间语义,rbegin()对应end(),rend()对应begin(),++对应正向--,--对应正向++。
2025-08-01 16:33:23
311
原创 c++-迭代器类别&仿函数&常用算法函数
该文件介绍C++常用算法函数,先讲前置知识,包括迭代器类别,从方向性质分为输入、输出、单向、双向、随机访问迭代器,从遍历方向分正向和反向迭代器,还列了对应容器及特性;仿函数通过重载operator()实现,举了less和greater例子。接着讲std::find、swap、reverse、sort四个算法函数,涉及原型、参数、返回值等内容,sort默认升序,底层是快排,可通过仿函数指定排序方式。
2025-07-31 19:18:39
489
原创 c++-stack-queue-priority_queue
本文介绍了C++中的三种容器适配器:stack、queue和priority_queue,以及deque容器。stack提供后进先出功能,基于deque实现,有push、pop等接口;queue提供先进先出功能,也基于deque,接口包括push、pop、front等;priority_queue基于vector实现,默认是最大堆,有push、pop等接口。还给出了三者的模拟实现。deque是双端队列,支持双端操作和随机访问,内部用分段连续空间,通过中控器管理,文中也介绍了其底层结构。
2025-07-31 19:08:39
780
原创 c++-list
该文档围绕C++标准模板库中的`std::list`展开介绍。std::list是双向链表容器,定义在<list>头文件,实现为带头双向循环链表。文档先阐述了其基本特性,如非连续内存存储、支持双向迭代器等。接着详细介绍了成员函数,包括构造函数、赋值重载、迭代器、容量、元素访问、修改接口及其他操作等。还提到了list迭代器失效情况,主要发生在元素删除和整个list销毁或赋值时。最后给出了list的模拟实现代码,包含节点结构体、迭代器结构体和list类,实现了插入、删除等基本操作。
2025-07-29 16:54:02
968
原创 Mysql表的约束
该文档介绍了MySQL表的多种约束,以保障数据合法性、准确性与可靠性。涵盖空属性(NULL和NOT NULL)、默认值(DEFAULT)、列描述(COMMENT)、zerofill(数字前零填充)。还包括主键(PRIMARY KEY,唯一约束)、自增长(AUTO_INCREMENT,自动生成递增值)、唯一键(UNIQUE,确保数据唯一),可在创建表时或之后添加,有复合形式。最后提及外键,用于定义主从表关系,从表外键列数据须在主表主键列存在或为NULL。
2025-07-26 19:00:30
386
原创 c++-vector
该文档围绕 C++ 的vector展开。vector是标准模板库中的动态数组,定义于<vector>头文件。其底层由三个指针管理,元素连续存储。文档介绍了成员函数,包括构造、赋值、迭代器、容量、元素访问及修改相关接口。同时指出vector迭代器失效问题,如插入、删除等操作会使迭代器不再指向预期元素,给出不同操作下迭代器失效情况及最佳实践。最后模拟实现了vector类,包含常用成员函数的具体实现,帮助理解vector的底层原理。
2025-07-25 11:45:54
1073
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅