自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(127)
  • 收藏
  • 关注

原创 redis的string类型

本文深入介绍了Redis中string类型的常用命令和使用场景。主要命令包括set/get(支持EX/PX过期时间、NX/XX互斥选项)、flushall(慎用)、mset/mget(批量操作)、setex/psetex/setnx(设置过期时间)、incr/decr系列(原子计数操作)以及append/strlen/getrange/setrange(字符串操作)。特别强调了string类型的底层编码(int/embstr/raw)以及中文处理时的编码注意事项。这些命令在缓存、计数器、分布式锁等业务场景中

2026-02-14 02:14:53 591

原创 redis的高效工作方式

Redis的高效工作方式源于其独特的设计:1)内存操作相比数据库硬盘访问更快;2)采用单线程处理请求,避免了多线程竞态问题;3)底层使用epoll实现IO多路复用,支持高并发;4)主要执行"短平快"的简单操作。但需注意避免执行耗时命令(如keys*),否则会阻塞其他请求。Redis的快是相对于关系型数据库而言的,其单线程模型是针对其特定业务场景的优化选择,并非所有场景都适用。

2026-02-12 01:56:46 534

原创 redis数据类型

Redis提供五种核心数据类型(String、Hash、List、Set、ZSet),每种类型支持多种底层编码方式以适应不同场景需求。String有int/embstr/raw三种编码;Hash采用ziplist或hashtable;List在3.2版本后统一使用quicklist;Set根据元素类型选择intset或hashtable;ZSet则使用ziplist或跳表+字典组合。Redis通过动态切换编码方式在内存效率与操作性能间取得平衡,开发者应关注数据结构的设计思想而非具体实现细节。数据类型仅保证操

2026-02-12 01:08:47 555

原创 redis通用命令

本文介绍了Redis的通用命令,包括set/get、keys、exists、del和expire等基础操作。重点讲解了keys命令的匹配规则及生产环境慎用keys*的原因,分析了exists和del命令支持批量操作的设计考量。同时深入探讨了Redis的过期策略(定期删除+惰性删除)和内存淘汰机制,解释了不同淘汰策略的适用场景。文章通过具体示例演示命令用法,并揭示了Redis单线程架构下的性能优化思路。

2026-02-11 21:46:33 655

原创 初识分布式系统和redis

本文介绍了分布式系统的基本概念和Redis的特性与应用。首先解释了Redis作为内存数据库、缓存和消息中间件的作用,对比了Redis与MySQL在性能和存储上的差异。随后通过系统架构推演,从单机架构逐步发展为微服务架构,展示了分布式系统如何通过多机协同解决性能、容量和可用性问题。最后总结了分布式系统中的关键概念,如集群、主从结构、中间件等。文章强调应根据实际需求选择技术方案,分布式系统虽能提升性能但也带来复杂性和成本增加。

2026-02-09 22:29:40 881

原创 mysql基础——视图

MySQL视图是一种虚拟表,其内容由SELECT查询定义。视图可以像普通表一样查询,但数据实际存储在基表中。创建视图使用CREATE VIEW 视图名 AS SELECT语句,删除视图使用DROP VIEW 视图名。视图与基表数据互相影响,修改视图数据会反映到基表,反之亦然。视图提供了数据抽象和简化复杂查询的功能,但不能像普通表一样直接删除,必须通过DROP VIEW命令操作。视图常用于简化多表查询、数据权限控制等场景。

2025-11-16 23:41:32 854 1

原创 mysql索引——理解索引机制及操作

MySQL索引机制是提升数据库查询效率的关键。本文首先通过800万条数据的性能对比实验证明,无索引时查询需5秒,添加索引后仅需0.01秒,验证了索引的必要性。然后从硬件层面分析,指出MySQL以16KB为单位与磁盘交互,并强调数据连续存储和减少IO次数的重要性。文章揭示了索引的本质是数据结构优化,通过组织数据提高查找效率,并指出主键本身就是一种索引。最后提出MySQL通过Buffer Pool缓存数据页,结合局部性原理和算法/数据结构优化查询性能。理解这些底层机制有助于更好地使用索引提升数据库性能。

2025-11-13 22:16:52 1126 2

原创 mysql表的连接——内外连接

本文介绍了MySQL表的内外连接操作。内连接通过WHERE子句筛选两张表的笛卡尔积,是开发中最常用的连接方式,语法为inner join...on。外连接分为左外连接和右外连接:左外连接(left join)保留左表所有记录,右表无匹配则显示NULL;右外连接(right join)保留右表所有记录,左表无匹配则显示NULL。通过学生成绩表和部门员工表等示例,展示了如何查询保留未匹配数据的情况,如显示所有学生成绩(包括无成绩学生)或所有部门信息(包括无员工部门)。

2025-11-10 18:02:20 581

原创 mysql查询进阶——复合查询

本文介绍了MySQL复合查询的基本操作,重点回顾了多表联合查询和复杂条件筛选。文章使用EMP、SALGRADE和DEPT三张表为例,展示了四种典型查询场景:1)结合OR条件和LIKE筛选的员工查询;2)按部门号升序、工资降序排序;3)计算年薪并排序,处理NULL值使用IFNULL函数;4)嵌套子查询查找最高工资员工信息。这些示例涵盖了复合查询中的条件组合、排序、计算字段和子查询等核心功能,为后续更复杂的多表关联查询奠定了基础。

2025-11-10 11:42:44 964

原创 mysql内置函数——了解常用的函数

本文介绍了MySQL中的常用内置函数,主要分为日期函数和字符串函数两类。日期函数部分详细讲解了如何获取当前日期、时间、时间戳(date,time,now等函数),日期加减运算(date_add,date_sub),以及计算日期差值(datediff)的方法,并通过留言表案例展示了实际应用。字符串函数部分简要说明了获取字符编码(charset)等基本操作。整体内容实用性强,涵盖MySQL日常开发中的常用函数操作。

2025-11-08 22:32:22 1037

原创 mysql表操作——基本增删查改

本文介绍了MySQL中表数据的基本增删查改操作(DML),重点讲解了CRUD(创建、读取、更新、删除)的实现方法。在创建数据方面,详细说明了INSERT语句的用法,包括全列插入、指定列插入和多行插入,并对比了"ON DUPLICATE KEY UPDATE"和"REPLACE"两种处理冲突数据的方式。在查询数据方面,介绍了SELECT语句的各种用法,如列查询、表达式计算、别名设置和结果去重,以及WHERE条件筛选的多种运算符使用技巧。这些操作为后续更复杂的数据库操作奠

2025-10-24 15:17:25 678 1

原创 mysql表的操作——mysql表的约束

这篇文章主要介绍了MySQL中表的约束条件及其重要性。约束条件包括数据类型、空属性、默认值、列描述和zerofill等,旨在保证数据的合法性和可预期性。重点讲解了NOT NULL约束确保字段非空,DEFAULT设置默认值允许忽略插入,COMMENT添加列描述作为注释,以及旧版本中整数类型括号内数字的含义。这些约束条件共同作用,确保数据库中存储的数据符合预期,但无法保证其绝对正确性。

2025-10-11 19:33:35 1137

原创 mysql数据类型——认识并掌握数据类型

MySQL数据类型概述 MySQL数据类型主要分为数值类型、字符串类型、日期时间类型和JSON类型。数值类型包括整数类型(TINYINT、SMALLINT等)、BOOL类型和BIT类型,其中整数类型可指定有符号或无符号。小数类型有FLOAT和DECIMAL,FLOAT可能丢失精度,而DECIMAL精度更高。数据类型本质上是一种约束,确保数据合法性,MySQL会拦截越界数据的插入操作。掌握这些数据类型的特点和使用场景,是数据库设计和操作的基础。

2025-10-07 14:49:54 749 2

原创 mysql基础操作——库的操作和表的操作

MySQL基础操作之数据库管理 本文介绍了MySQL数据库的基础操作,主要包括数据库的创建、删除和相关管理操作。 数据库创建与删除 创建数据库:基本语法CREATE DATABASE db_name,可选参数包括IF NOT EXISTS判断是否存在,以及字符集和校验规则设置。 删除数据库:使用DROP DATABASE db_name命令,可选IF EXISTS判断是否存在,删除后数据库文件会被级联删除。 字符集与校验规则 字符集决定数据存储的编码格式,校验规则决定数据读取时的比较方式。 可通过SHOW

2025-10-04 16:25:28 699

原创 mysql数据库基础——基本认识

本文介绍了MySQL数据库的基础知识,包括数据库的必要性、主流数据库、验证MySQL作为网络程序的特性、数据库的本质理解、服务器/数据库/表的关系、MySQL的逻辑存储结构、SQL语句分类以及MySQL的架构。文章指出,数据库相比文件存储具有更好的安全性、查询管理能力和海量数据处理能力,并详细解析了MySQL作为C/S模式网络程序的工作原理。通过实际操作演示了创建数据库和表的过程,揭示了数据库本质上是对磁盘文件进行结构化管理的系统。最后介绍了MySQL的分层架构设计,包括连接层、服务层和存储引擎层。

2025-10-02 00:40:11 1172 1

原创 网络实践——基于epoll_ET工作、Reactor设计模式的HTTP服务

本文介绍了一个基于epoll ET工作模式和Reactor设计模式的HTTP服务实现。主要内容包括:1)通过Epoller类封装epoll模型,提供事件管理接口;2)采用继承和多态实现连接管理,基类Connection派生出Listener和普通连接类;3)Reactor主逻辑通过事件循环处理就绪事件,使用Dispatcher进行事件派发;4)特别处理Listener的读事件,在ET模式下需循环读取所有连接请求。该设计强调模块解耦,整合了网络编程、协议处理和多路IO等知识,体现了Reactor模式的事件驱动

2025-09-27 23:43:12 1166 2

原创 多路转接epoll——ET、LT模式

摘要: 本文解析了epoll的两种工作模式——ET(边缘触发)和LT(水平触发)。LT模式是默认模式,会持续通知就绪事件直至处理完成;而ET模式仅通知一次,倒逼用户必须一次性处理所有数据,否则需等待新事件触发。通过快递员类比,形象说明两种模式的差异。ET模式效率更高,因其减少无效通知,但需配合非阻塞IO以避免死锁风险。最后指出ET模式下阻塞IO可能导致通信僵局,强调非阻塞的必要性。全文结合实例与原理,深入浅出地阐明了epoll模式的核心特性与使用场景。(149字)

2025-09-27 14:58:23 987 1

原创 高级IO——多路转接方案epoll原理及简单应用

epoll原理及应用摘要 epoll是Linux系统中最优秀的多路I/O就绪通知机制,相比select和poll有显著改进。核心由三个系统调用组成:epoll_create创建epoll模型(返回文件描述符),epoll_ctl控制关注的文件描述符(增删改),epoll_wait获取就绪事件。底层实现采用红黑树管理关注的文件描述符和就绪队列存放触发事件,通过回调机制高效检测就绪状态。epoll支持边缘和水平触发模式,能处理大量并发连接,是高性能网络编程的关键技术。

2025-09-23 21:38:57 1085 2

原创 高级IO——多路转接方案select、poll

本文介绍了多路转接方案select和poll的基本概念及使用。重点讲解了select接口的参数含义、事件就绪机制以及基于位图的操作方法,并通过一个简单的echo server示例展示了select的实际应用。文章指出select可以同时监控多个文件描述符的读写状态,但存在一些缺陷,后续会有更优方案。文中还解释了IO多路转接的核心思想,即通过等待-拷贝模型实现高效IO处理。作者强调当前主要关注读事件的处理,为后续更完善的IO方案学习奠定基础。

2025-09-22 14:35:31 760 2

原创 重谈IO——五种IO模型及其分类

本文介绍了五种IO模型及其分类,重点分析了IO效率低下的原因,并通过钓鱼例子形象解释了不同模型的特点。文章指出,IO操作慢的本质在于等待时间长,高效的IO需要减少等待时间比重。五种模型包括阻塞IO、非阻塞IO、信号驱动IO、多路转接(复用)和异步IO,其中多路转接效率最高。通过系统调用流程图展示了各模型的执行过程,并特别说明了非阻塞IO的实现方法,如使用send/recv的选项参数。文章强调同步与异步IO的区别,指出前四种模型都属同步IO,只有异步IO完全由内核处理。最后提到后续将重点学习IO多路转接技术。

2025-09-20 17:53:56 1023 2

原创 网络原理补充——NAT/NAPT、代理服务、内网穿透、交换机

网络通信中,NAT/NAPT技术通过转换内网IP和端口实现多主机共享公网IP,并借助映射表保证数据往返的唯一性,但存在无法外部主动访问内网等缺陷。代理服务分为正向代理(代理客户端,实现缓存、过滤和隐藏身份)和反向代理(代理服务器端,实现负载均衡和静态资源分离)。科学上网通过加密请求与合法代理站点绕过限制,属于正向代理。内网穿透依赖公网服务器桥接不同内网,而内网打洞则通过直接获取对方出口地址实现点对点通信。交换机划分碰撞域,减少数据链路层帧冲突,提升局域网效率。

2025-09-19 21:30:58 1500 1

原创 网络原理——数据链路层

本文主要介绍了数据链路层在网络通信中的关键作用。数据链路层负责解决局域网内主机间的通信问题,重点讲解了以太网协议及其帧格式。以太网帧包含源/目的MAC地址、类型字段和CRC校验码,通过定长报头实现报头分离。文章详细分析了MTU(最大传输单元)和MSS(最大段尺寸)的概念,阐述了MTU对网络层(IP分片)和传输层(TCP/UDP报文大小控制)的影响。此外,还介绍了MAC地址的特性、MTU动态协商机制,以及如何通过指令查看硬件地址和MTU值。最后探讨了以太网帧数据长度限制的设计考量,帮助读者理解数据链路层与其他

2025-09-17 21:06:11 838 3

原创 网络层认识——IP协议

本文介绍了网络层的基本概念及其与传输层的关系。网络层(IP协议)提供数据跨网络传输的能力但不保证100%成功,可靠性保障由传输层(TCP/UDP)实现。文章解释了IP地址的构成(网络号+主机号)和IP协议格式,包括4位版本、首部长度、服务类型、总长度、源/目的IP地址等关键字段。特别说明了TTL字段的作用是防止路由循环问题,通过限制报文跳数来优化网络性能。文章还通过学神考满分的比喻,形象说明了网络层能力与传输层保障的关系。最后指出当今复杂网络由多个子网构成,数据转发本质是跨子网传输过程。

2025-09-16 16:09:22 1054 1

原创 网络原理——TCP的深入理解

这篇文章深入探讨了TCP协议的关键机制,包括序号与确认序号的作用、丢包与超时重传机制、连接管理中的状态变化等。文章强调序号机制不仅保证报文按序到达,还能处理乱序和去重问题。超时重传机制通过动态调整时间间隔确保可靠性,而连接管理则详细解析了三次握手和四次挥手过程中的状态变化。此外,文章还指出TCP连接的本质是操作系统创建并管理连接结构体,解释了连接建立和断开时的状态差异。通过代码测试验证了accept不参与三次握手的事实。

2025-09-13 01:47:45 838 1

原创 网络原理——传输层协议TCP基本认识

本文介绍了TCP协议的基本原理与关键机制。首先分析了TCP报文格式,重点解释了4位首部长度字段的作用,解决了变长报头的处理问题。文章深入探讨了TCP可靠性的核心机制——确认应答,通过序号和确认序号实现了报文按序到达、丢包检测和乱序处理。同时介绍了捎带应答机制,说明通信双方在应答时可携带新信息。此外,还简要提及了16位窗口大小字段的作用,用于流量控制。文章强调TCP协议通过确认应答机制保证历史消息可靠性,但最新消息仍需等待应答确认。TCP作为面向字节流的协议,不关心报文边界,由应用层处理数据完整性。这些机制共

2025-09-10 18:58:44 961 6

原创 网络原理——传输层协议UDP

本文主要介绍了传输层协议UDP的核心概念和特性。文章首先强调了端口号在网络通信中的关键作用,以及如何通过端口号+IP地址+协议号来唯一标识进程间通信。详细解析了UDP协议的格式,包括其固定8字节报头结构和16位报文长度字段,解释了UDP如何实现数据报分离和分用。重点讨论了UDP的面向数据报特性、缓冲机制(仅接收缓冲区)、无连接、不可靠等特点,并通过寄信类比形象说明。最后从操作系统角度分析了应用层解析与内核收发报文的并行性。文章通过理论与实践结合的方式,深入浅出地阐述了UDP协议的核心原理。

2025-09-09 18:03:46 1246 4

原创 HTTPS协议——对于HTTP的协议的加密

HTTPS协议是在HTTP基础上引入加密层的安全协议,解决HTTP明文传输易被窃取的问题。文章首先介绍了加密、密钥等基础概念,并分析了运营商劫持等安全风险。通过四种递进方案探讨安全通信的可能性:从单纯对称/非对称加密到二者结合,但都存在中间人攻击风险——关键在于客户端无法验证公钥合法性。最终解决方案指向数字证书(CA证书)机制,确保公钥真实性。HTTPS通过非对称加密交换对称密钥,再以对称加密高效通信,在安全性和性能间取得平衡。

2025-09-07 21:46:37 936 1

原创 HTTP协议——Cookie的相关概念和使用

摘要: HTTP协议是无状态、无连接的,导致无法记录用户状态,带来不便。为解决此问题,引入了Cookie机制,用于在浏览器端存储用户状态信息(如登录信息)。Cookie通过服务器响应头设置,包含名称、值及属性(如过期时间、作用域等)。但纯Cookie存在安全隐患(明文传输易被窃取),因此结合Session技术,服务器生成唯一Session ID替代敏感数据,仅将ID通过Cookie传输,提升安全性。Session数据存储在服务器端,有效防止隐私泄露,解决了HTTP无状态带来的问题。

2025-09-06 16:27:29 1084 3

原创 HTTP协议——理解相关概念、模拟实现浏览器访问自定义服务器

HTTP协议是互联网中最常见的应用层协议,用于客户端(如浏览器)与服务器之间的通信。本文介绍了HTTP协议的基本概念,包括URL结构、DNS域名解析过程、HTTP请求和响应的格式等核心内容。文章通过分析URL各组成部分(如协议类型、域名、端口号、路径等),解释了网络资源访问的底层机制。同时,对比了自定义网络协议与HTTP协议的异同,指出HTTP本质上是一种结构化数据通过网络传输的无状态协议。文中还包含对HTTP请求/响应报文格式的详细说明,并提出了后续通过代码模拟实现HTTP通信的计划,帮助读者深入理解协议

2025-09-03 23:05:19 948 1

原创 网络实践——进程间关系与守护进程

本文介绍了进程间关系与守护进程的相关概念。首先,文章指出服务器在终端运行的危险性,引出守护进程的必要性。然后详细讲解了进程组、任务/作业、会话等进程间关系,包括进程组ID(PGID)、会话ID(SID)等概念。接着阐述了前台作业和后台作业的区别、作业控制方法(如jobs、fg、bg命令)以及控制终端的概念。最后,提出通过创建新会话将服务器转换为守护进程的方法,使其能够脱离控制终端独立运行,从而保证服务的稳定性。

2025-08-30 02:52:04 942

转载 序列化反序列化方案——jsoncpp库的使用

本文介绍了jsoncpp库的基本使用方法。jsoncpp是一个用于处理JSON数据的C++库,支持JSON数据的序列化和反序列化。文章首先说明了安装方法,然后详细介绍了库的特性,包括简单易用、高性能、全面支持JSON数据类型等。重点讲解了Json::Value类的使用,包括构造函数、访问函数、类型检查、赋值和类型转换、数组和对象操作等。最后通过示例代码展示了三种序列化方法:toStyledString、StreamWriter和FastWriter,帮助开发者快速上手jsoncpp库。

2025-08-29 10:58:31 966

原创 网络实践——自定义协议

本文摘要: 文章探讨了TCP通信实践中存在的问题,如数据边界模糊、结构化数据传输困难等,提出通过自定义应用层协议来解决这些问题。重点介绍了序列化和反序列化的概念,解释了其必要性——既避免平台差异导致的内存对齐问题,又支持跨语言通信。针对网络计算器需求,作者建议先封装Socket类作为基础工具,为后续实现自定义协议做准备。文章强调协议的本质是结构化数据,需要根据具体业务需求设计,并通过序列化转换为字节流进行网络传输。

2025-08-29 02:32:02 760

原创 网络实践——Socket编程TCP

本文介绍了TCP协议在Socket编程中的基本概念和API接口。主要内容包括:1)TCP与UDP的关键区别在于TCP需要建立连接;2)服务器端需要调用listen()使服务器处于监听状态,accept()获取连接;3)客户端使用connect()主动连接服务器;4)TCP采用面向字节流的通信方式,使用read/write或recv/send进行数据传输;5)TCP通过独立的发送和接收缓冲区实现全双工通信;6)字节流特性可能导致数据接收不完整,需要通过自定义协议解决。最后提到将通过Echo Server示例代

2025-08-28 02:33:32 482 1

原创 网络实践——Socket编程UDP

本文介绍了Socket编程中UDP接口的使用方法,重点讲解了socket、recvfrom、sendto和bind等关键系统调用。通过创建套接字文件描述符实现网络通信,详细说明了各参数的含义和使用场景,包括通信域选择、传输方式、缓冲区处理等。文章还提供了三个实践案例:回显服务器、字典查询服务器和聊天服务器,展示了如何将UDP接口与系统知识结合应用。最后强调了网络字节序转换的重要性,为后续网络编程实践打下基础。

2025-08-22 13:26:14 1240

原创 网络基础——Socket编程预备

本文介绍了Socket编程的基础知识,主要包括以下内容: 网络通信的本质是不同主机间的进程通信,通过IP地址和端口号标识进程的唯一性。 端口号的作用: 2字节整数,标识特定进程 0-1023为知名端口,1024-65535为动态分配端口 一个端口只能绑定一个进程,但一个进程可绑定多个端口 Socket概念:套接字=主机IP+端口号,是网络通信的端点。 传输层协议对比: TCP:有连接、可靠传输、面向字节流 UDP:无连接、不可靠传输、面向数据报 网络字节序问题: 网络通信统一使用大端字节序 提供htonl等

2025-08-19 19:00:26 921

原创 网络基础——网络传输基本流程

本文介绍了网络传输的基本流程,重点讲解了局域网通信原理和跨网络传输的相关概念。主要内容包括: 局域网通信方式:以太网、无线LAN和令牌环网,其中以太网是最常用的技术 MAC地址的作用:用于识别数据链路层中的节点,具有全球唯一性 以太网通信原理:通过MAC地址寻址,采用泛洪方式传输数据,存在数据碰撞问题 协议栈通信过程:数据在各层协议间的封装与解包过程 IP地址的概念:用于标识网络中主机的唯一性,介绍了IPv4地址不足的问题 文章通过类比线程互斥等概念帮助理解网络通信原理,并强调将主机间通信视为两个TCP/I

2025-08-19 15:16:19 1115 1

原创 网络基础——协议认识

网络发展历程与协议分层概述 文章首先回顾了网络技术的发展历史,从早期独立计算机到局域网(LAN)、广域网(WAN)的演进,指出网络诞生是计算机协作需求的必然结果。随后重点介绍了网络协议的概念,强调协议是计算机通信的基础约定,需要硬件和操作系统的全面支持。文章详细解析了协议分层的原因和优势,对比了OSI七层模型和TCP/IP四层模型的特点,指出分层设计实现了模块化和解耦合。最后列举了主要的国际标准化组织及科技公司在网络协议制定中的贡献,说明网络通信需要遵循统一的国际标准。整体呈现了网络基础架构的发展脉络和技术

2025-08-19 00:10:30 1322 3

原创 Linux线程——线程安全、重入问题、死锁

还是那句话:线程安全关注的是线程执行的时候会不会受到影响,从而影响当前线程执行结果!而重入关注的是函数本身的特性!即是否能被多个执行流重复进入!二者之间的关系就是:可重入的函数一定是线程安全的!但是,线程安全,不一定可重入!举例说明如果函数可以被重入,也就是说不会使用一些什么临界资源,这样子,就满足了线程互斥的条件了!即多个线程进来访问仅仅只是访问自己局部存储和线程栈的相关内容!这必然是线程安全的!但是线程安全,不一定是可重入的Test();//加锁while(1){

2025-08-17 20:01:42 1141 6

原创 Linux线程——线程池的设计(懒汉、饿汉模式)

本文介绍了线程池的设计与实现,重点讨论了懒汉模式、饿汉模式、死锁、重入和线程安全等概念。线程池通过维护多个线程来高效处理大量短时任务,避免了频繁创建销毁线程的开销。文章详细分析了线程池的应用场景和两种实现方式(固定线程池和浮动线程池),并给出了基于生产者-消费者模型的实现方案。代码部分展示了线程池的核心逻辑,包括任务队列管理、线程调度和终止处理,通过互斥锁和条件变量确保线程安全。最后指出线程池特别适合处理Web服务器等需要快速响应的场景。

2025-08-17 01:18:24 895 3

原创 Linux线程——基于封装组件实现策略模式日志

摘要:本文介绍了一个基于策略模式的自定义日志系统实现方案。针对多线程环境下日志输出混乱问题,通过封装线程同步组件,实现了线程安全的日志输出。系统采用策略模式设计,支持用户选择输出到显示器或文件两种方式,每条日志包含时间戳、日志等级、进程PID、文件名和行号等关键信息。通过继承和多态实现了日志输出策略的灵活切换,同时利用互斥锁保障了多线程下的日志原子性。日志等级分为DEBUG、INFO、WARNING、ERROR和FATAL五级,为系统调试和问题排查提供了结构化支持。

2025-08-16 01:38:26 992

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除