- 博客(130)
- 收藏
- 关注
原创 【Docker】镜像相关指令
Docker 镜像(Image)是 Docker 容器的基础,可以把它理解为一个,用来创建容器。,里面包含了运行某个应用所需的一切:操作系统基础(如 Ubuntu、Alpine)运行时环境(如 Python、Node.js、JRE)应用程序代码依赖库环境变量、启动命令等配置关键特性镜像由多层(layer)叠加而成,每一层文件系统我们叫做一层 layer,每条 Dockerfile 指令生成一层。。
2026-10-30 15:01:46
371
原创 【Docker】基本指令
Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,同时也能作为邮件代理和通用的 TCP/UDP 代理使用。它以占用内存少、并发处理能力强而闻名,是目前互联网上最主流的 Web 服务器之一。核心角色与功能结合之前了解的反向代理概念,Nginx 最常扮演的角色正是站在服务器端的那个代理。Web 服务器:直接处理并返回静态文件(如 HTML、图片、CSS),在这方面性能表现突出。反向代理与负载均衡:作为统一入口接收客户端请求,再按照策略(如轮询)分发给后端的多台应用服务器,从而隐藏后端拓扑、分摊压力。
2026-10-29 16:12:17
178
原创 【Docker】初识 Docker
本文系统阐述了物理机、虚拟化与容器化的演进逻辑,重点解析容器化核心技术——Linux Namespace与cgroup,通过实战演示进程、文件系统等资源隔离。深入剖析Docker的本质:基于Namespace与cgroup的轻量级容器技术,实现“一次构建,随处运行”。对比传统虚拟机,Docker具备资源利用率高、启动快、部署便捷等优势,并通过镜像仓库(如Docker Hub)构建标准化生态,解决环境不一致、运维复杂等痛点,推动应用交付与云原生发展。
2026-10-26 10:28:54
191
原创 【Docker】八大架构
本文系统梳理了应用架构从单机到容器编排的演进路径:从简单高效的单机架构,逐步演变为应用数据分离、服务集群、读写分离、冷热分离、垂直分库,最终迈向微服务与容器编排。每一步都针对资源竞争、单点故障、扩展性等瓶颈进行优化,核心逻辑是“解耦—隔离—自治”。微服务实现业务边界清晰与独立部署,而Kubernetes通过声明式管理实现自动化运维,支撑大规模分布式系统的稳定运行。架构演进的本质是平衡复杂度与收益,最终构建高可用、可扩展、易维护的现代应用体系。
2026-10-21 17:08:32
288
原创 【Redis】主从复制
Redis主从复制是实现高可用、读写分离与数据冗余的基础架构。通过配置主节点(Master)与一个或多个从节点(Slave),可实现数据同步、负载分担及故障恢复。主从关系可通过配置文件、启动参数或命令动态建立,核心流程包括连接建立、权限验证、全量/增量同步及命令传播。关键指令如INFO replication和ROLE用于监控状态,PSYNC支持断线后部分重同步,提升效率。全量同步依赖RDB文件与积压缓冲区,增量同步则基于复制偏移量与复制ID(replid)判断一致性。树形结构可降低主节点压力,但可能引入延
2026-10-17 15:25:37
242
原创 【Redis】安装与启动
本文介绍在CentOS上使用yum安装Redis的步骤,包括配置符号链接、修改redis.conf文件(如绑定IP、关闭保护模式、启用守护进程等),并详细说明启动与关闭Redis的方法:通过systemctl管理服务或手动执行命令,推荐安全关闭方式,避免数据丢失。
2026-10-15 16:41:32
134
原创 【Redis】事务
Redis事务通过MULTI、EXEC、DISCARD和WATCH实现,将多条命令打包顺序执行,保证操作的原子性(全部执行或全不执行),但不支持回滚。其原子性为“弱化”版本,依赖应用层保障一致性。由于单线程模型,天然具备隔离性;持久性取决于RDB/AOF配置。事务主要用于防止命令被其他客户端插队,适用于高并发场景下的乐观锁机制。相比MySQL强事务,Redis牺牲回滚能力以换取高性能与低内存开销。
2026-10-15 09:22:27
128
原创 【Redis】持久化
Redis持久化支持RDB、AOF及混合持久化。RDB通过快照方式实现高效备份,恢复快但可能丢数据;AOF以追加命令日志形式保障数据安全,但文件大、恢复慢。混合持久化(Redis 4.0+默认开启)结合两者优势:AOF文件头部为RDB快照,尾部为增量命令,兼顾恢复速度与数据完整性,最多丢失1秒数据。配置灵活,推荐启用混合持久化以平衡性能与可靠性。
2026-10-14 15:02:24
71
原创 【Redis】C++ 自定义客户端
本文介绍了Redis的RESP协议及其在C++中通过redis-plus-plus库的应用。RESP协议简洁高效,支持二进制安全通信,是Redis客户端与服务器交互的基础。redis-plus-plus封装了底层协议,提供易用的API,支持常见数据类型操作,如set/get、mset/mget、list、set、zset等。关键特性包括:使用StringView避免拷贝、Optional类型处理空值、迭代器模式灵活传参,以及对过期时间、阻塞操作的支持。文中还详细说明了连接管理、编译配置及典型使用示例,便于开
2026-10-11 15:05:40
191
原创 【Redis】常用指令和常见数据类型
本文系统梳理了Redis的核心命令与数据结构。涵盖常见全局命令(如SET、GET、KEYS、EXPIRE等)及五大数据类型(String、Hash、List、Set、ZSet)的典型应用场景与操作指令,深入解析其底层优化机制(如编码转换、数据结构设计)。同时介绍了渐进式遍历(SCAN)、数据库管理(SELECT、FLUSHDB)等高级功能,全面展现Redis在缓存、计数、消息队列等场景中的高效应用。
2026-10-07 14:35:51
197
原创 【Redis】初识 Redis
本文系统介绍了Redis的核心特性与应用场景,对比MySQL在性能、架构和适用场景上的差异。从单机架构演进至分布式架构,逐步引入负载均衡、读写分离、缓存服务器、分库分表及微服务,解决扩展性与可用性瓶颈。Redis基于内存实现高性能(微秒级响应,10万+QPS),支持丰富数据结构,具备可编程性与可扩展性,通过RDB、AOF及混合持久化保障数据安全。其作为缓存、分布式锁、计数器等场景的首选,是现代高并发系统的关键组件。
2026-09-26 14:54:22
189
原创 【C++】线程库
本文系统介绍C++多线程编程:涵盖线程创建、join/detach、this_thread;深入讲解互斥锁(普通、递归、超时、自旋)及RAII管理,对比lock_guard与unique_lock;介绍atomic原子操作与CAS无锁编程;最后详解条件变量,包括生产者-消费者模型、核心API及注意事项,并给出交替打印的实现。
2026-08-31 14:31:45
211
原创 C++ 仿 muduo 库实现高并发服务器
该项目实现了一个基于Reactor模式的高并发TCP服务器组件,包含Server模块(管理连接、事件、定时任务)和HTTP协议模块。采用多Reactor多线程模型,利用I/O多路复用、时间轮超时管理和自定义缓冲区,支持非活跃连接释放、协议切换和静态资源处理,最终搭建出灵活可扩展的高性能HTTP服务器。
2026-08-27 22:17:20
230
原创 【MySQL】MySQL C API 访问 MySQL
本文介绍了MySQL C API的基本使用方法,包括初始化连接(mysql_init)、建立连接(mysql_real_connect)、设置字符集(mysql_set_character_set)、执行SQL语句(mysql_query)等核心操作。详细说明了如何获取查询结果(mysql_store_result)、处理结果集(获取行列数、列属性、结果内容)以及释放资源(mysql_free_result, mysql_close)的完整流程。文章提供了各函数的原型说明、参数解释和使用示例,帮助开发者快速
2026-07-14 16:09:19
383
原创 【MySQL】用户管理
MySQL用户管理主要通过mysql.user表实现,包含用户创建、删除和权限控制。创建用户使用CREATE USER语句,需指定用户名、主机和密码;删除用户用DROP USER。权限分为系统、对象和列级权限,通过GRANT授权和REVOKE回收。查看用户权限使用SHOW GRANTS。注意修改权限后需执行FLUSH PRIVILEGES使更改生效。root用户可修改其他用户密码,普通用户只能修改自身密码。用户权限管理是数据库安全的重要环节。
2026-07-11 14:45:12
214
原创 【MySQL】事务隔离性的底层实现
MySQL通过MVCC实现高并发读写控制,核心组件包括隐藏列、UndoLog历史版本链和ReadView。读操作分为快照读(读取历史版本)和当前读(读取最新数据),不同隔离级别通过ReadView生成时机控制可见性:RC每次生成新ReadView导致不可重复读,RR复用首次ReadView确保可重复读。事务修改数据时会生成版本链,通过DB_TRX_ID和DB_ROLL_PTR维护历史记录,实现非阻塞读写。
2026-07-10 16:19:16
444
原创 【MySQL】事务
本文介绍了MySQL事务的核心概念与特性。事务是一组逻辑相关的DML语句,具有ACID四大特性:原子性(全部成功或全部失败)、一致性(保持数据正确状态)、隔离性(处理并发访问)和持久性(修改永久生效)。文章详细演示了事务的提交方式(自动/手动)、基本操作(开始、保存点、回滚、提交)以及异常情况下的表现,验证了原子性和持久性。重点分析了隔离性的必要性,解释了脏读、不可重复读和幻读三种异常现象,对比了四种隔离级别的差异(读未提交、读已提交、可重复读、串行化)。最后强调一致性需要数据库和应用共同保证,数据库确保约
2026-07-09 15:17:18
229
原创 【MySQL】索引(索引底层原理/创建/查看/删除主键、普通、联合、前缀、全文索引)
文章摘要:MySQL索引是提高查询效率的数据结构,通过B+树组织数据,减少磁盘IO次数。索引分为主键、唯一键、普通索引等,创建时需考虑列的区分度和查询频率。聚簇索引(InnoDB)和非聚簇索引(MyISAM)在存储方式上有差异。操作包括创建、查看和删除索引,其中联合索引遵循最左前缀原则。前缀索引适用于长字符串列,全文索引则针对文本检索。合理使用索引可大幅提升查询性能,但需避免在低区分度或频繁更新的列上创建。
2026-07-04 15:23:40
580
原创 【MySQL】复杂查询(子查询/多表查询/内外连接/视图)
本文介绍了在MySQL中使用子查询、多表查询和自连接的技术方法。主要内容包括:1. 子查询类型:单行子查询(返回单行单列)、多行子查询(使用IN/ALL/ANY操作符)和多列子查询(返回多列数据)。2. FROM子句中使用子查询,将查询结果作为临时表与其他表连接。3. 合并查询(UNION和UNION ALL)的使用方法及区别。4. 多表查询原理,重点讲解了笛卡尔积的概念及其过滤方法。5. 自连接技术,即同一张表的自我连接查询。通过公司管理系统中的EMP、DEPT和SALGRADE三张表,演示了各种查询技术
2026-07-01 17:59:26
399
1
原创 【MySQL】内置函数
本文总结了MySQL中常用的三类函数:1. 日期时间函数:包括获取当前日期/时间/时间戳的CURRENT_DATE()、NOW()等,以及日期运算函数如DATE_ADD()、DATEDIFF()等,并提供了生日表和留言表查询的实用案例。2. 字符串函数:涵盖字符串处理函数如CONCAT()拼接字符串、SUBSTRING()截取子串、TRIM()去除空格等,以及字符编码和大小写转换函数。3. 数学函数:包含数值处理的ABS()取绝对值、MOD()取模、ROUND()四舍五入等,还介绍了进制转换函数。文章还补充
2026-06-30 17:27:37
329
原创 【MySQL】列的增删查改
本文介绍了MySQL数据库中的CRUD操作(创建、读取、更新、删除)。创建部分详细讲解了INSERT语句的全列插入和指定列插入方法,以及ON DUPLICATE KEY UPDATE和REPLACE的使用场景。读取部分重点说明SELECT查询的基本语法、WHERE条件筛选、ORDER BY排序、LIMIT分页等功能,并详细介绍了聚合函数和GROUP BY分组查询的使用。更新部分演示了UPDATE语句修改数据的正确方法。删除部分对比了DELETE和TRUNCATE的区别,指出TRUNCATE会重置自增ID但执
2026-06-29 18:45:01
339
原创 【MySQL】表的约束
MySQL表的约束用于确保数据的完整性和合法性,主要包括以下类型: 空属性约束:NULL(默认允许空)和NOT NULL(不允许空) 默认值:DEFAULT指定字段默认值 列描述:COMMENT添加字段说明 等宽输出:ZEROFILL设置显示宽度 主键:PRIMARY KEY(唯一且非空,表只能有一个主键) 自增长:AUTO_INCREMENT(通常与主键搭配) 唯一键:UNIQUE(允许为空但值唯一) 外键:FOREIGN KEY(建立表间关联,确保引用完整性) 这些约束共同作用,确保数据库中的数据符合业
2026-06-25 22:02:57
456
原创 【算法】贪心
贪心算法摘要 贪心算法是一种通过局部最优选择逐步构建全局最优解的算法策略。其核心思想是将问题分解为多个步骤,每一步都选择当前看似最优的解,从而期望最终得到全局最优解。 特点: 贪心策略因问题而异,没有固定模板; 同一问题可能存在多种贪心策略; 贪心策略的正确性需要严格证明。 示例应用: 找零问题:优先使用最大面额纸币; 最小路径和:错误示例展示贪心策略的局限性; 背包问题:不同贪心策略(按体积、价值或单位价值)可能导致错误解。 经典问题: 柠檬水找零:优先使用10元纸币; 数组减半:每次选择最大数减半; 最
2026-06-24 12:44:01
235
原创 【MySQL】数据类型
本文系统介绍了MySQL的五大类数据类型及其应用场景: 数值类型:包括整数(TINYINT到BIGINT)、浮点数(FLOAT/DOUBLE)和定点数(DECIMAL),强调金额必须使用DECIMAL避免精度丢失。 字符串类型:详细对比CHAR(定长)和VARCHAR(变长)的存储特性,以及TEXT/BLOB大对象类型的适用场景。 日期时间类型:重点区分DATETIME(业务时间)和TIMESTAMP(系统时间戳)的时区处理差异。 特殊类型:ENUM(单选)和SET(多选)的位图存储原理及查询方法。 JSO
2026-06-23 18:59:31
712
原创 【MySQL】表的操作
MySQL表操作语法摘要 本文介绍了MySQL中创建和修改表结构的基本语法: 创建表:使用CREATE TABLE语句指定表名、列定义(含数据类型、注释)、字符集、校验规则和存储引擎 示例:演示了在user_db中创建users表的过程,对比了MyISAM(生成3个文件)和InnoDB(生成2个文件)存储引擎的区别 查看表:SHOW TABLES查看所有表;DESC查看表结构;SHOW CREATE TABLE显示建表语句 修改表:包括重命名表(ALTER TABLE...RENAME)、添加列(ADD)、
2026-06-23 16:24:05
289
原创 【MySQL】库的操作
本文介绍了MySQL数据库的基本操作,包括启动/连接服务、数据库管理、表操作、字符集设置、数据备份恢复等核心内容。重点讲解了数据库创建与删除在文件系统中的体现(/var/lib/mysql目录),字符集校验规则对数据查询和排序的影响,以及通过mysqldump进行数据库备份的原理(记录操作命令而非直接复制数据)。同时还涉及数据库连接状态查看、配置文件位置等实用技巧,为MySQL初学者提供了全面的基础操作指南。
2026-06-21 16:22:54
220
原创 【MySQL】MySQL基础
本文介绍了数据库的基本概念、主流数据库类型、MySQL的基本操作及其架构。主要内容包括:1. 数据库的定义与作用,解释了为什么需要数据库来替代文件存储数据;2. 主流数据库产品(MySQL、Oracle等)的简要对比;3. MySQL的基本使用操作,包括连接/退出、创建/使用数据库、建表、插入和查询数据;4. MySQL的逻辑架构和SQL语句分类(DDL、DML、DCL等);5. MySQL存储引擎的详细介绍,重点对比了InnoDB和MyISAM的特性差异,并简要说明Memory、Archive等其他引擎的
2026-06-20 16:48:12
261
原创 C++ 基于正倒排索引的 Boost 搜索引擎
这篇文章介绍了一个基于C++的Boost库文档站内搜索引擎的实现过程。主要内容包括: 项目背景 实现一个类似百度但规模较小的站内搜索引擎,针对Boost库官网文档进行搜索。 搜索引擎原理 抓取:下载Boost官网HTML文档 处理:去除HTML标签,提取正文内容 索引: 正排索引:文档ID到文档内容 倒排索引:关键词到文档ID列表 排序:根据关键词权重排序结果 技术实现 使用Boost文件系统遍历文档 正排索引存储文档标题、内容和URL 倒排索引使用cppjieba进行中文分词 通过cpp-httplib搭
2026-06-19 18:06:55
734
原创 【Linux】网络高级 IO
本文系统地介绍了五种I/O模型及其在TCP服务器中的应用。主要内容包括: I/O基本概念 解释read/write系统调用的本质是数据拷贝 定义I/O效率标准:减少等待时间 五种I/O模型对比 阻塞I/O:简单但效率低 非阻塞I/O:轮询消耗CPU 信号驱动I/O:复杂且少用 I/O多路复用(select/poll/epoll):单线程管理多连接 异步I/O:真正的异步操作 重点技术分析 select:跨平台但性能受限 poll:改进select的部分缺点 epoll:高性能解决方案,采用红黑树和就绪队列
2026-06-05 11:49:27
464
2
原创 一些零散的算法
在下面的代码中,由于二分查找需要确定待查找区间的左右端点,刚开始查找时,左端点是 0,右端点是 ret + 1,ret 就是最长上升子序列的长度,如果最后找到的插入位置是 ret + 1,那么 ret++给定一个字符串数组strs,再给定两个字符串str1和str2,返回在strs中str1和str2的最小距离,如果str1或str2为null,或不在strs中,返回-1。解法:遍历数组的同时,用两个变量标记当前位置之前的最后出现的 str1 和 str2 的下标。
2026-05-11 21:13:02
450
原创 【计算机网络】DNS/ICMP协议/ping指令
DNS系统诞生于解决IP地址记忆难题的需求。早期使用hosts文件维护域名与IP映射,但更新繁琐。DNS采用分布式层级结构(根域→顶级域→二级域→子域),通过递归查询实现域名解析。ICMP协议作为网络层协议,用于检测网络连通性(如ping工具)和报告传输错误,其报文通过类型和代码区分功能而非端口号。两者共同构成了互联网基础服务:DNS实现域名寻址,ICMP保障网络诊断。
2026-05-09 17:11:22
502
原创 【计算机网络】IP 协议(IP划分/公私IP/NAT/路由/分片组装/mac帧/MTU/MSS/ARP协议)
本文系统介绍了TCP/IP协议栈的核心概念和工作原理。首先阐述了IP协议与TCP协议的关系,指出IP协议负责数据传输能力,TCP协议提供可靠性保障。详细解析了IP地址结构(网络号+主机号)、IP报头各字段功能(如版本号、TTL、校验和等)以及子网划分方法(CIDR和子网掩码)。深入探讨了NAT技术解决IPv4地址短缺的原理,分析了路由表工作机制和数据包转发流程。在数据链路层部分,重点讲解了以太网帧结构、MAC地址寻址机制、ARP协议解析过程,以及MTU与TCP滑动窗口的关系。最后阐述了IP层与数据链路层的协
2026-05-09 13:41:10
676
1
原创 【C语言】用 C 语言实现多态
摘要:C语言通过结构体和函数指针模拟面向对象特性。定义Shape结构体作为基类,包含area函数指针实现动态绑定。派生类Circle通过包含Shape结构体实现继承,并在初始化时绑定具体area实现。shape_area函数作为统一接口实现多态调用。main函数演示了通过基类指针调用不同派生类方法的过程,展示了C语言实现多态的基本原理。这种方法虽不如C++原生支持优雅,但展现了面向对象核心思想在过程式语言中的实现可能。
2026-05-01 10:56:26
68
原创 【计算机网络】传输层协议(UDP/TCP)
传输层协议UDP和TCP的核心机制解析 UDP协议采用极简设计,固定8字节报头实现快速传输,支持多播但不可靠,适用于实时应用。TCP协议通过复杂机制确保可靠性: 连接管理:三次握手建立可靠连接,四次挥手确保双向关闭 流量控制:滑动窗口动态调整发送速率 拥塞控制:慢启动和拥塞避免算法平衡网络负载 可靠传输:序列号/确认号机制、超时重传和快速重传 状态管理:TIME_WAIT状态防止旧连接干扰 关键差异:UDP侧重传输效率(视频会议/DNS),TCP保证数据完整(网页浏览/文件传输)。TCP通过窗口缩放、时间戳
2026-04-28 17:47:46
671
原创 【计算机网络】应用层协议(序列化与反序列化/HTTP/HTTPS)
本文介绍了应用层协议中的序列化与反序列化概念,重点阐述了HTTP和HTTPS协议的工作原理及安全机制。主要内容包括: 序列化与反序列化在网络通信中的应用,以网络计算器为例展示了自定义协议的实现过程。 HTTP协议详解: 请求/响应消息格式 常见方法(GET/POST等)及特点 URL结构及编码机制 报文头部的关键字段 长连接与短连接的比较 HTTPS安全机制: 对称/非对称加密原理 数据摘要的作用 CA认证流程 数字签名验证过程 最终的安全通信方案(非对称加密+对称加密+CA认证) 通过简易HTTP服务器的
2026-04-14 17:06:16
1224
原创 【Linux】会话、终端、前后台进程
摘要:Linux会话是用户登录到退出的进程集合,包含一个控制终端和多个进程组。终端是用户与系统交互的入口,分为物理终端和终端模拟器。进程分为前台进程(独占终端)和后台进程(不占用终端输入),可通过作业命令进行管理。守护进程通过setsid()创建独立会话,完全脱离终端运行。理解这些概念有助于进程管理和系统运维。
2026-03-25 17:26:45
549
原创 【计算机网络】套接字编程(套接字API/UDP和TCP服务器/网络相关指令)
本文介绍了网络编程中的端口号、TCP/UDP协议、网络字节序及套接字编程等内容。端口号用于标识进程,TCP是面向连接的可靠协议,UDP是无连接的快速协议。套接字编程涉及创建socket、填充sockaddr结构、绑定socket等步骤,并详细说明了UDP和TCP专用的API函数。此外,文章还介绍了netstat和telnet指令的使用方法,以及回环地址的特殊性。最后,通过示例代码展示了如何实现UDP和TCP服务器与客户端的功能。
2026-03-25 17:25:54
683
1
原创 【计算机网络】网络基础 (网络协议/TCP/IP协议栈/局域网内外数据传输/数据封装、解包、分用)
本文系统讲解了计算机网络的基础知识,从发展历程切入,深入剖析了网络协议的分层设计、TCP/IP协议栈的核心原理,以及局域网与跨网络数据传输的完整流程。文章首先梳理了计算机网络从面向终端、计算机互联、标准化到高速综合化的四个发展阶段,并对比了中国互联网从接入起步到移动引领的独特演进路径。在核心概念部分,文章阐明了“协议”的本质是通信双方约定的数据结构,并重点解释了网络协议采用分层设计的原因:分
2026-03-15 14:49:48
636
原创 【Linux】线程同步与互斥 - 2(线程同步/条件变量/基于阻塞/环形队列的cp模型/线程池/线程安全/读写锁)
摘要:本文深入探讨了并发编程中的同步与互斥机制。首先分析了同步的基本概念及其与互斥的关系,指出同步是在互斥基础上保证线程访问资源的顺序性。随后详细介绍了条件变量的工作原理及使用方法,包括pthread_cond_wait等关键函数。文章重点讲解了生产者-消费者模型,通过阻塞队列和环形队列两种实现方式,展示了如何利用互斥锁和信号量解决并发问题。最后讨论了线程池的设计原理及其应用场景,并分析了STL容器和智能指针的线程安全性。全文通过代码示例和理论分析,系统地阐述了并发编程中的核心概念和实践方法。
2026-03-12 10:27:01
398
原创 【算法】约数个数、约数和
本文介绍了计算整数约数的几种方法:1)试除法求单个数的所有约数,时间复杂度O(√n);2)倍数法求[1,n]每个数的约数集合;3)约数个数定理,通过质因数分解计算约数个数;4)约数和定理,通过质因数分解计算约数之和。每种方法都给出了具体实现代码,适用于不同场景下的约数计算需求,包括约数枚举、个数统计和求和等操作。
2026-03-09 20:54:46
275
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅