自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【MySQL数据库基础】(四)MySQL 表的操作通关指南:创建 / 修改 / 删除一网打尽

本文全面讲解了MySQL数据表的操作指南,涵盖创建、查看、修改和删除表的核心语法及实战技巧。重点包括:1)创建表时如何选择字段类型、字符集和存储引擎(InnoDB/MyISAM);2)使用DESC命令查看表结构;3)修改表的高频场景(添加/修改/删除字段、重命名);4)删除表的高危操作注意事项。文章特别强调规范操作的重要性,如字段注释、非空设置、操作前备份等最佳实践,帮助开发者避免数据丢失风险。通过本文,读者可以系统掌握MySQL表操作的全套技能,从基础语法到实战避坑指南。

2026-03-09 20:21:41 275 23

原创 【Linux系统编程】(四十六)线程池原理与实现:从固定线程池到线程安全单例模式

本文深入讲解了线程池的原理与实现。首先分析了线程池的必要性,指出线程创建销毁的高开销问题,提出线程复用+任务队列的核心思想。接着从零实现了一个固定线程数的线程池,包含线程管理、任务队列、同步机制等核心组件,详细解析了任务处理循环和线程安全设计。然后升级为线程安全的单例模式,采用双重检查锁定确保全局唯一实例。最后提供了测试代码验证功能,并给出动态扩容、任务优先级等进阶优化方向。通过理论讲解和完整代码实现,帮助读者彻底掌握线程池的设计与开发。

2026-03-09 20:07:42 271 11

原创 【MySQL数据库基础】(三)MySQL 库的核心操作全解析:创建、修改、备份一条龙搞定

本文全面讲解了MySQL数据库操作的核心知识与实战技巧。主要内容包括:1)数据库创建语法与字符集、校验规则配置;2)字符集对数据存储的影响及校验规则对查询排序的作用;3)数据库查看、修改、删除等日常操作;4)使用mysqldump工具进行数据库备份与恢复的详细方法;5)通过show processlist排查数据库连接问题。文章特别强调了IF NOT EXISTS、-B参数等关键细节,以及生产环境中的安全操作规范,为MySQL数据库管理提供了完整指南。

2026-03-08 21:47:57 1370 50

原创 【Linux系统编程】(四十五)线程池基础:日志系统设计与策略模式的优雅落地

本文介绍了如何为C/C++线程池设计一个基于策略模式的可扩展日志系统。文章首先分析了线程池对日志系统的核心需求:线程安全、信息完整、输出可配和等级分明。然后详细讲解了策略模式的设计思想,将其应用于日志系统的实现中,通过LogStrategy接口分离日志输出策略的定义与实现。具体实现了控制台日志(ConsoleLogStrategy)和文件日志(FileLogStrategy)两种策略,并采用RAII机制确保线程安全和资源管理。最后展示了如何通过宏封装简化日志调用,以及如何将日志系统集成到线程池中。

2026-03-08 21:34:35 527 26

原创 【MySQL数据库基础】(二)MySQL 数据库基础从入门到上手,一篇带你吃透核心知识点!

本文全面介绍了MySQL数据库的基础知识与核心操作。首先分析了文件存储的痛点,对比主流数据库特性,突出MySQL开源免费、高并发、轻量易用的优势。详细讲解了MySQL安装连接、数据库/表/数据的CRUD操作,包括创建helloworld数据库和student表的完整示例。深入解析MySQL四层架构(客户端层、服务层、存储引擎层、文件系统层)和SQL四大分类(DDL、DML、DQL、DCL)。最后对比了InnoDB、MyISAM等存储引擎的特性与适用场景,帮助开发者根据业务需求选择合适的存储引擎。

2026-03-04 23:04:06 1529 60

原创 【Linux系统编程】(四十四)线程同步下篇:条件变量深度解析与 POSIX 信号量实战

本文深入探讨了线程同步中的条件变量和POSIX信号量两大核心机制。首先解析了pthread_cond_wait必须绑定互斥量的底层原理,包括避免信号丢失和保护共享资源两个关键原因。随后详细介绍了条件变量的标准化使用规范,强调while循环判断条件的重要性。接着展示了如何用C++优雅封装条件变量类,实现RAII风格的资源管理。最后对比了条件变量与POSIX信号量的特性差异,并通过环形队列的生产者消费者模型演示了信号量的实战应用。文章提供了清晰的选型建议:简单资源控制优先使用信号量,复杂同步场景选用条件变量。

2026-03-04 22:46:39 838 31

原创 【算法提高篇】(十二)树状数组进阶:在线与离线操作实战,解锁区间统计新姿势

本文探讨了树状数组在线与离线操作的应用差异。离线操作通过先收集所有查询并重新排序,将复杂问题转化为树状数组可处理的"单点修改+区间查询"模型,能有效解决区间统计难题。文章以"HH的项链"和"采花"两道经典题目为例,详细解析了离线操作的核心思路:按右端点排序查询、遍历数组时维护元素最新出现位置、使用树状数组统计区间标记数。相比在线操作必须即时响应,离线操作允许重排处理顺序,显著降低了时间复杂度。

2026-03-02 22:35:34 1066 35

原创 【Linux系统编程】(四十三)线程同步上篇:从条件变量到生产消费模型,吃透多线程协作精髓

本文深入探讨了线程同步的核心概念与实现方法,重点讲解了条件变量的原理和使用规范。文章首先阐述了线程同步与互斥的区别,指出同步是解决"线程有序协作"问题的关键。随后详细介绍了条件变量的初始化、等待、唤醒等核心接口,强调必须配合互斥量使用以避免信号丢失和竞态条件。通过生产者消费者模型的经典案例,展示了如何利用条件变量实现线程间的安全协作。文章还提供了C++封装的条件变量实现和常见问题的避坑指南,帮助开发者编写更健壮的多线程程序。

2026-03-02 22:26:59 1088 6

原创 【Linux系统编程】(四十二)吃透线程互斥!从原理到实战,手把手教你玩转 Linux 下的互斥锁

本文系统讲解了线程互斥的核心概念与实现方法。首先阐述了共享资源、临界区、原子性等基础概念,通过未加互斥的售票系统案例直观展示多线程竞争问题。重点介绍了Linux下互斥量(mutex)的使用方法,包括初始化、加锁解锁及销毁操作,并基于硬件原子指令解析了其实现原理。随后提出C++的RAII风格封装方案,通过LockGuard类实现自动加锁解锁,避免死锁风险。最后总结了死锁预防、性能优化等常见问题及解决方案,并列举了线程互斥的典型应用场景。全文从理论到实践,为多线程编程中的资源竞争问题提供了系统性解决方案。

2026-03-01 23:34:55 1133 45

原创 【算法提高篇】(十一)树状数组实战练习题:带你从入门到进阶,彻底吃透 BIT 应用

本文精选6道树状数组高频练习题,涵盖逆序对、火柴排队、楼兰图腾等经典问题。通过离散化、贪心、DFS等技巧与树状数组的结合,解决单点修改、区间查询、子树统计等复杂场景。每道题提供核心思路、关键分析和完整代码,帮助掌握树状数组的灵活应用。总结题型与解题技巧,包括离散化处理、问题转化、多树状数组维护等关键方法。适合已掌握基础操作的学习者进阶提升,通过实战彻底理解树状数组的应用场景。

2026-03-01 23:14:08 1196 38

原创 【算法提高篇】(十)树状数组模板题全解析:从基础到进阶,刷完这 6 道吃透 BIT

本文系统介绍了树状数组(BIT)的6个经典模板题,涵盖一维和二维场景下的单点修改、区间查询、区间修改等操作。通过详细解析每道题的数学推导、核心思路和C++实现,帮助读者掌握树状数组的核心思想:lowbit操作与差分/前缀和技巧。文章特别强调数据类型处理、输入输出优化、边界判断等实战细节,并建议由浅入深地学习,通过手动推导和调试测试加深理解。最后总结各题型的对应关系和通用解题技巧,为算法竞赛和面试笔试提供全面的树状数组解决方案。

2026-02-26 17:12:38 653 28

原创 【Linux系统编程】(四十一)线程封装与深度解析:从地址空间到源码实现

本文深入解析Linux线程底层原理与封装实现,主要内容包括:1. 线程ID本质:区分用户级线程ID(pthread_t)和内核级线程ID(LWP),分析其作用域和实现差异;2. 进程地址空间布局:详解线程栈(主线程与子线程)、线程控制块(TCB)和线程局部存储(TLS)的内存分布;3. 线程栈实现:对比主线程与子线程栈的特性,分析glibc中allocate_stack的mmap实现及栈溢出问题;4. 页表机制:阐述线程共享地址空间的底层支撑,包括多级页表结构和共享内存原理;5. 封装实战

2026-02-26 16:48:44 1172 35

原创 【算法提高篇】(九)树状数组入门:从原理到实战,一篇吃透 BIT

本文系统介绍了树状数组(BIT)的原理与应用。树状数组是一种高效处理区间统计问题的数据结构,具有O(logN)的时间复杂度和简洁的实现方式。文章首先对比了树状数组与线段树的优缺点,然后详细讲解了一维树状数组的三种核心操作:单点修改+区间查询、区间修改+单点查询、区间修改+区间查询,并给出了对应的C++实现代码。接着将概念扩展到二维空间,介绍了二维树状数组的三种操作模式。文章强调树状数组的核心是lowbit操作和差分思想,并通过表格总结了不同场景下的解决方案。

2026-02-25 22:05:38 1051 12

原创 【Linux系统编程】(四十)线程控制终极指南:从资源共享到实战操控,带你吃透线程全生命周期

本文围绕 Linux 线程控制核心主题,先厘清进程与线程的资源共享(虚拟地址空间、文件描述符表等)与独占(线程 ID、栈、errno 等)关系,奠定线程控制的底层认知基础。随后详解 POSIX 线程库的使用规范,包括编译链接方式与错误处理规则,再系统梳理线程全生命周期控制:通过pthread_create创建线程并传递参数,借助return、pthread_exit、pthread_cancel三种方式终止线程,利用pthread_join等待线程回收资源并获取退出状态,通过pthread_detach设置

2026-02-25 21:34:20 1246 23

原创 【MySQL数据库基础】(一)保姆级 MySQL 环境配置教程!CentOS 7+Ubuntu 双系统全覆盖

本文提供了CentOS7和Ubuntu系统下MySQL的详细安装配置指南。针对CentOS7系统,重点介绍了如何卸载MariaDB、配置官方YUM源、安装MySQL5.7、修改初始密码和优化配置参数。对于Ubuntu系统,则讲解了如何安装MySQL8.0、修改认证方式、设置密码以及配置远程访问。文章特别强调了不同系统间的安装差异,包括密码策略处理、编码设置和存储引擎配置等关键步骤,并提供了常见问题的解决方案。通过这份保姆级教程,新手开发者可以快速完成MySQL环境配置,为后续数据库学习打下坚实基础。

2026-02-23 22:49:13 3164 40

原创 【Linux系统编程】(三十九)吃透线程概念:从底层原理到实战应用

本文深入解析Linux线程的本质与实现原理。首先从内核视角阐明线程是进程内部的控制序列,共享进程资源但拥有独立执行流。接着剖析分页式存储管理这一线程运行的底层基石,包括虚拟内存机制、页表结构和缺页异常处理。文章详细对比了线程的优势(低开销、高并发、资源共享)与劣势(同步开销、健壮性差、调试困难),特别指出线程异常会导致整个进程终止的特性。最后列举了适合多线程的应用场景,如计算密集型任务、I/O操作和交互式程序等。全文通过技术原理与应用实践相结合的方式,帮助开发者深入理解Linux线程的底层机制。

2026-02-23 22:31:22 879 15

原创 【Linux系统编程】(三十八)进程信号拓展:可重入函数 /volatile/SIGCHLD 全解析

本文深入探讨了Linux进程信号处理中的三个关键问题:可重入函数、volatile关键字和SIGCHLD信号。首先分析了信号处理中函数重入导致数据错乱的问题,提出了避免重入的解决方案;其次解释了编译器优化导致信号标志位失效的现象,阐述了volatile关键字保证内存可见性的原理;最后详细介绍了利用SIGCHLD信号优雅解决僵尸进程的两种方法。文章从问题根源、底层原理到实战案例,层层剖析了进程信号处理的进阶知识,并补充了用户态/内核态切换等底层细节,为Linux系统开发提供了实用的技术指导。

2026-02-22 10:19:58 1135 11

原创 【算法提高篇】(八)线段树 + 数学:解锁硬核区间问题,公式推导才是解题关键

本文探讨了线段树与数学结合解决区间问题的策略。通过两道经典例题(区间方差和区间GCD),展示了如何通过数学公式推导将复杂问题转化为线段树可维护的基础信息。对于区间方差问题,通过公式变形转化为维护区间和与平方和;对于区间GCD问题,利用差分序列将区间加操作转化为单点修改。文章详细分析了数学推导过程、线段树实现思路及易错点,并总结出"分析问题-数学转化-线段树实现"的三步解题框架。这种数学推导与数据结构结合的方法,为解决复杂区间问题提供了有效思路,关键在于正确进行数学转化并处理好实现细节。

2026-02-22 09:35:06 1129 5

原创 【Linux系统编程】(三十七)信号捕捉全链路拆解|从内核态切换到 sigaction 实战

本文聚焦 Linux 信号捕捉的全链路逻辑,深度解析其与操作系统运行原理、内核态 / 用户态切换的核心关联。文章先通过通俗类比厘清信号捕捉的定义,穿插讲解操作系统进程调度、中断机制及两种运行状态的核心差异,拆解出信号捕捉过程中 “两进两出” 的态切换完整流程。

2026-02-21 13:06:30 1084 10

原创 【算法提高篇】(七)权值线段树 + 离散化:值域爆炸?这波操作直接拿捏!

本文详细介绍了权值线段树与离散化的核心概念及实现方法。权值线段树将数值而非下标作为区间划分依据,专门统计数值出现次数,适用于逆序对、第k大数等问题。针对超大值域场景,离散化通过排序、去重和映射将数值压缩到连续小范围。文章提供了完整的C++实现模板,包括建树、修改、查询等操作,并通过经典逆序对问题展示应用方法。最后总结了数据类型溢出、下标处理等常见易错点。该组合是处理数值统计问题的有效工具,关键在于从"下标思维"转换到"数值思维"并掌握离散化技巧。

2026-02-21 11:36:59 669 2

原创 【Linux系统编程】(三十六)深挖信号保存机制:未决、阻塞与信号集的底层实现全解析

本文深入解析Linux进程信号保存机制,从内核数据结构到用户态操作函数,全面剖析信号生命周期中的"未决"和"阻塞"状态。文章首先通过快递类比解释信号递达、未决和阻塞的核心概念,指出阻塞是阻止信号递达(信号保持未决状态),而忽略是信号已递达但不处理。然后详细分析Linux内核中task_struct、sigset_t和sigpending等关键数据结构,揭示信号在PCB中的存储方式。

2026-02-20 20:00:22 1369 3

原创 【算法提高篇】(六)线段树 + 剪枝:从超时到 AC 的神级优化,精准剪枝让复杂区间问题起飞

这篇博客以 “线段树 + 剪枝” 为核心,介绍其作为解决线段树超时问题的优化手段,核心是提前终止无效递归。通过最值剪枝、覆盖剪枝、可行性剪枝三类经典场景,结合找第一个 1、区间颜色统计、找第 k 小值等例题,给出带剪枝的 C++ 实现代码,分析剪枝效果与原理。还总结了剪枝的避坑指南,强调剪枝前保证信息最新、不过度剪枝等要点,最后给出进阶刷题清单,帮助读者掌握该优化技巧。

2026-02-20 19:01:57 1015 2

原创 【Linux系统编程】(三十五)揭秘 Linux 信号产生:从终端到内核全解析

该文档围绕 Linux 进程信号展开,涵盖信号基本概念、产生方式、保存、处理等核心内容。先从生活场景类比信号特性,再通过代码示例详解终端按键、系统命令、函数调用等信号产生场景,接着阐述信号递达、阻塞、未决等概念及内核中的表示,介绍信号集操作函数与捕捉流程,还涉及可重入函数、volatile 关键字、SIGCHLD 信号等知识点,帮助读者全面掌握 Linux 进程信号的原理与应用。

2026-02-19 15:57:26 2053 43

原创 【算法提高篇】(五)线段树 + 分治:解锁区间问题的终极思路,从最大子段和到复杂序列操作

本文深入探讨了"线段树+分治"这一高效解决复杂区间问题的算法组合。文章首先通过最大子段和问题引出基础线段树的局限性,详细讲解了如何通过维护区间和、前缀/后缀最大和等分治信息来突破这一限制。随后以洛谷P4513为例,完整展示了线段树节点设计、pushup整合逻辑、建树、修改和查询的实现过程。进阶部分以P2572为例,讲解了处理多懒标记优先级和01序列分治维护的技巧。最后总结了通用解题框架和五大易错点,强调分治信息完整性、pushup逻辑正确性和懒标记优先级处理的重要性。

2026-02-19 15:21:50 868 18

原创 【Linux系统编程】(三十四)初识进程信号:Linux 软中断的核心奥秘

本文从生活场景切入,深入讲解Linux进程信号机制。首先通过快递案例类比信号处理流程,帮助理解信号的识别、延迟处理、暂存等特性。随后通过代码实验演示Ctrl+C发送SIGINT信号的原理,以及如何修改信号处理方式。文章详细介绍了信号的核心概念,包括查看系统信号、三种处理动作(默认/忽略/自定义)及其实现方式,并重点分析了信号的异步特性及其处理时机。最后通过实战验证了SIGQUIT和SIGTSTP信号的作用。全文结合生活实例与技术实现,循序渐进地帮助读者掌握Linux信号机制的基本原理和实践应用。

2026-02-18 10:45:18 2208 27

原创 【算法提高篇】(四)线段树之多个区间操作:懒标记优先级博弈与实战突破

本文深入探讨了线段树在处理多个区间操作时的核心问题——操作优先级的设计。通过分析"区间乘+区间加"和"区间重置+区间加"两种经典组合,文章提出通用解题框架:1)确定操作优先级(覆盖类操作优先于算术类操作);2)设计包含多懒标记的结构体;3)实现按优先级顺序更新的核心函数。针对每种组合详细推导了公式,给出完整的AC代码实现,并总结了五大易错点,包括优先级错误、标记未清空和数据类型溢出等。掌握这些多懒标记的处理方法,能有效解决算法竞赛中复杂的区间操作问题。

2026-02-18 10:24:50 989 10

原创 【算法提高篇】(三)线段树之维护更多的信息:从基础到进阶的灵活运用

这篇CSDN博客围绕线段树维护多类型信息展开,从基础核心思路出发,讲解了线段树维护复杂信息需解决的结构体设计、pushup实现、懒标记处理三大关键问题。通过忠诚、开关、贪婪大陆、无聊的数列等经典例题,从无修改、简单修改到复杂修改场景,结合C++代码拆解实现逻辑,总结出通用解题模板,并梳理了高频易错点。同时给出从易到难的刷题建议,强调理解分治思想和问题转化能力的重要性,帮助读者掌握线段树进阶用法,应对各类区间操作问题。

2026-02-16 13:33:29 1017 16

原创 【前端开发之JavaScript】(四)JS基础语法下篇:函数与对象核心要点深度解析

本文深入讲解JavaScript中函数与对象的核心概念。函数部分涵盖函数定义与调用、参数特性、函数表达式、作用域与作用域链;对象部分介绍三种创建方式、this关键字、JS与Java对象的区别。文章强调函数与对象的结合是JS编程的核心思维,通过将函数封装为对象方法实现代码结构化与复用。建议通过实践练习掌握这些基础知识,为后续学习DOM/BOM、框架等奠定基础。

2026-02-16 13:12:49 1813 30

原创 【前端开发之JavaScript】(三)JS基础语法中篇:运算符 / 条件 / 循环 / 数组一网打尽

本文系统介绍了JavaScript四大核心语法:运算符(算术、赋值、比较、逻辑等)、条件语句(if/else、三元表达式、switch)、循环语句(while/for)和数组(创建、访问、遍历等)。这些基础语法相互结合,构成JS编程的"砖瓦":运算符处理数据计算,条件语句实现逻辑判断,循环语句简化重复操作,数组高效管理批量数据。文章通过大量代码示例演示了各语法的使用场景和注意事项,如==与===的区别、循环控制语句break/continue的用法、数组动态特性等。

2026-02-15 17:40:43 1250 8

原创 【算法提高篇】(二)线段树之区间修改:懒标记的核心奥义与实战实现

本文深入讲解线段树中的懒标记技术,重点解决区间修改的效率问题。文章首先分析基础线段树处理区间修改时时间复杂度退化为O(n)的痛点,引出懒标记"延迟更新,按需下发"的核心思想。通过详细拆解节点结构设计、三个关键辅助函数(pushup/lazy/pushdown)的实现逻辑,完整展示了带懒标记线段树的建树、区间修改和查询操作。文章提供洛谷P3372模板题的AC代码,总结6个常见易错点,并指出懒标记可扩展应用于区间赋值、乘法等操作。掌握懒标记技术能显著提升线段树处理区间问题的效率,是算法竞赛和

2026-02-15 17:18:10 978 2

原创 【算法提高篇】(一)线段树之入门篇:从原理到实战,搞定区间操作难题

本文介绍了线段树这一高效处理区间问题的数据结构。文章首先通过实际问题引出线段树的必要性,说明其能在O(logn)时间内完成区间查询和单点修改操作。详细讲解了线段树的核心概念、存储方式和构建过程,包括分治思想、节点信息合并(pushup)等关键点。提供了完整的C++代码实现,涵盖构建、区间查询和单点修改功能,并通过洛谷P3374题目验证了代码的正确性。最后强调理解分治思想和多实践的重要性,为后续学习线段树进阶内容打下基础。

2026-02-13 12:57:24 830 18

原创 【Linux系统编程】(三十三)System V 共享内存精讲:Linux 最快 IPC 的原理与实战精髓

SystemV共享内存是Linux下最快的IPC方式,通过直接映射同一块物理内存实现进程间高效通信。本文深入剖析其原理:内核创建物理内存区域后,多个进程将其映射到各自地址空间,实现零拷贝数据传输。相比管道/消息队列的两次拷贝,共享内存极大提升了性能。文章详细介绍了核心函数(shmget/shmat/shmdt/shmctl)的使用方法,并通过实战案例演示了无亲缘进程间的通信实现。同时指出共享内存的局限性:缺乏原生同步机制,需要开发者手动实现互斥访问。最后总结了开发中的常见问题与解决方案。

2026-02-13 11:41:30 909 8

原创 【前端开发之JavaScript】(二)JS基础语法上篇:吃透变量 / 类型 / 输入输出

本文系统介绍了JavaScript基础语法的核心内容,包括三大模块:1. 前置知识:详细讲解JS代码的三种书写形式(行内、内嵌、外部)、注释方法及输入输出方式;2. 变量使用:阐述变量的定义、赋值、动态类型特性及命名规范;3. 基本数据类型:深入解析number、string、boolean、undefined和null五种类型的特性及使用场景。文章采用生活化类比和丰富代码示例,帮助初学者掌握JS编程基础,同时总结了常见错误和最佳实践,为后续学习流程控制、数组函数等进阶内容奠定坚实基础。

2026-02-12 15:13:44 1371 6

原创 【算法基础篇】(六十一)SG 函数通关指南:博弈论通用解法,从原理到实战秒杀各类 ICG 游戏

本文系统介绍了SG函数在博弈论中的核心应用。SG函数作为公平组合游戏的通用解法,通过有向图游戏模型和mex运算,能求解各类博弈问题的胜负状态。文章详细讲解了SG函数的定义、性质、SG定理及记忆化搜索实现方法,并通过5个经典例题(移棋子游戏、取石子游戏、切割游戏等)演示了实战应用。重点包括:1) SG函数将游戏状态抽象为有向图节点,通过mex运算确定必胜/必败态;2) SG定理通过异或和处理多游戏组合;3) 记忆化搜索是高效求解SG函数的关键;4) 复杂问题可通过打表找规律简化。

2026-02-12 14:33:24 966 1

原创 【Linux系统编程】(三十二)命名管道 FIFO 精讲:突破亲缘限制,实现任意进程间的 IPC 通信

本文深入解析了Linux命名管道(FIFO)的核心原理与实战应用。命名管道突破了匿名管道的亲缘关系限制,通过文件系统标识实现任意进程间通信。文章详细讲解了FIFO文件的本质特征、创建方式(mkfifo命令和函数)、关键打开规则(阻塞/非阻塞模式),并对比了命名管道与匿名管道的异同。通过三个实战案例(基础读写、文件拷贝、Server-Client通信)演示了命名管道的具体应用,总结了其半双工、字节流等核心特点及典型使用场景。最后提供了开发中的常见问题解决方案,如SIGPIPE信号处理、非阻塞模式判断等避坑指南

2026-02-11 11:46:50 1775 61

原创 【算法基础篇】(六十)Nim 博弈超全解析:从基础原理到经典变种,玩转多堆取石子问题

本文系统介绍了Nim博弈及其变种。Nim博弈是多堆取石子问题的经典模型,其核心结论是通过计算各堆石子数的异或和判断胜负:异或和非零则先手必胜,否则必败。文章详细证明了该结论,并给出基础模板题和进阶操作方案题的代码实现。进一步介绍了阶梯型Nim博弈这一重要变种,其关键是将问题转化为仅考虑奇数级台阶的经典Nim博弈。通过两道实战例题(格子移石子和棋盘移棋子)展示了如何将实际问题转化为阶梯型Nim博弈。全文强调理解必胜态/必败态的推导逻辑和问题转化能力的重要性,为博弈论学习打下坚实基础。

2026-02-11 11:24:58 926 25

原创 第五届电子技术与人工智能国际学术会议(ETAI 2026)征稿与参会通知

第五届电子技术与人工智能国际学术会议(ETAI2026)将于2026年3月6-8日在哈尔滨举行。会议由哈尔滨信息工程学院主办,聚焦电子技术、人工智能等前沿领域,以"汇聚全球科技创新智慧"为主题。

2026-02-10 10:48:20 471 11

原创 【Linux系统编程】(三十一)初识进程间通信 —— 管道与匿名管道,从原理到实战吃透经典 IPC

摘要:本文深入解析Linux匿名管道(Anonymous Pipe)的工作原理与应用。作为Unix最古老的IPC机制,匿名管道通过pipe()系统调用创建,本质是内核维护的环形缓冲区,仅适用于亲缘进程间通信。文章详细阐述了pipe()函数的使用方法、父子进程通过fork()共享管道描述符的机制,并通过代码示例演示了基础读写操作。同时总结了匿名管道的核心特点:半双工通信、流式服务、生命周期随进程等,并分析了其读写规则与常见使用场景。最后指出匿名管道的局限性及解决方案,为后续学习更复杂的IPC机制奠定基础。

2026-02-10 10:19:57 1872 23

原创 【前端开发之JavaScript】(一)JavaScript 入门宝典:从起源到运行全拆解

JavaScript是前端开发的核心语言,从网页交互到全栈开发应用广泛。本文系统介绍了JavaScript的本质、发展历程及其与HTML、CSS的协作关系。JavaScript最初由网景公司开发,现已成为ECMAScript标准,经历了从浏览器脚本到全栈语言的演进。文章详细解析了JavaScript在网页中的运行机制,包括DOM操作和BOM接口,并通过实例演示了如何实现动态交互效果。作为弱类型的解释型语言,JavaScript具有动态性和原型继承等特性,适合开发各类应用。

2026-02-10 09:39:30 2405 41

原创 【Linux系统编程】(三十)深入进程地址空间与动态链接:动态库加载的底层逻辑揭秘

本文深入解析Linux动态库(.so)的加载与调用机制。首先介绍了进程虚拟地址空间的基础概念,说明动态库通过mmap映射到共享库区实现多进程共享。其次详细讲解了动态链接的核心技术:位置无关代码(PIC)确保库可加载到任意地址,全局偏移表(GOT)和过程链接表(PLT)实现延迟绑定函数地址。文章还提供了动态库查找路径配置方案,对比了动静态链接的优缺点及适用场景,并通过实战演示验证了相关原理。最后总结指出理解这些底层机制对解决开发中的库依赖问题具有重要意义。

2026-02-09 10:16:26 1773 41

空空如也

空空如也

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

TA关注的人

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