- 博客(34)
- 收藏
- 关注
原创 进程通信与网络协议
本文摘要: 本文系统介绍了Linux系统中的进程间通信机制、文件类型和网络通信知识。主要内容包括:1)六种进程间通信方式(管道、信号、共享内存等)的特点与应用场景;2)Linux七种文件类型的分类;3)网络通信的核心知识,涵盖协议特性、七层/四层模型、套接字原理及五种I/O模型。重点对比了TCP/UDP协议的差异,分析了不同网络I/O模型的性能特点,并介绍了广播与组播的实现机制。全文从底层原理到实际应用,全面阐述了Linux系统通信的关键技术。
2026-04-09 19:18:12
278
原创 深入解析进程通信与生命周期
本文摘要: 本文系统介绍了Linux进程间通信(IPC)方式和进程生命周期管理。在IPC方面,详细分析了匿名管道、命名管道、消息队列、共享内存、信号量和本地套接字等六种方式的特性、适用场景及优缺点,并强调了共享内存同步和资源回收等注意事项。在进程管理部分,首先区分了程序与进程的概念,然后深入剖析了进程从创建到终止的完整生命周期,包括就绪态、执行态、睡眠态等状态转换机制,以及fork函数的实现原理。最后,特别说明了僵尸进程的产生原理和回收必要性,为系统资源管理提供了重要参考。
2026-04-09 19:15:49
220
原创 Linux进程通信与信号处理全解析
本文概述了Linux系统中的进程通信机制和信号处理。管道分为无名管道(用于亲缘进程)和有名管道(持久化文件),具有半双工、阻塞式通信特性。kill命令用于进程信号管理,支持按PID或进程名发送信号。信号分为非实时(1-31)和实时(34-64)两类,前者不可靠且可能丢失,后者可靠且按优先级处理。信号实现原理包括产生、挂起、处理和响应四个阶段,内核在进程状态切换时检查并处理信号,支持默认、忽略或自定义三种响应方式。SIGKILL和SIGSTOP信号具有强制处理特性。
2026-04-09 19:11:49
132
原创 网络IO模式解析:阻塞、非阻塞与信号驱动
网络IO模式主要分为阻塞、非阻塞和信号驱动三种。阻塞模式下,进程会在read/write等IO操作时等待数据就绪,文件描述符默认具有此属性。非阻塞模式通过fcntl修改文件描述符属性,使IO函数立即返回。信号驱动模式则通过注册SIGIO信号处理函数,由内核在数据就绪时主动通知进程,避免了轮询开销。三种模式各具特点,适用于不同场景的IO处理需求。
2026-04-09 19:09:09
455
原创 标准文件IO与系统文件IO
本文介绍了Linux系统文件IO与标准文件IO的区别,重点讲解了系统调用函数open()、read()、write()和close()的使用方法。系统文件IO直接与内核交互,无缓冲机制,而标准文件IO基于C标准库实现并维护用户空间缓冲区。详细说明了各函数的参数含义、功能及返回值,包括文件打开方式、权限设置、读写操作等核心内容。这些系统调用是Linux文件操作的基础,返回值中的文件描述符是操作文件的关键标识。
2026-04-09 19:03:26
10
原创 C语言:文件I/O
本文摘要: C语言预处理机制通过条件编译(#ifdef/#ifndef/#if)实现代码选择性编译,支持跨平台开发。文件包含(#include)用于共享头文件内容,需注意避免循环包含。库文件分为静态库(.a)和动态库(.so),前者编译时链接,后者运行时加载。标准I/O操作通过文件指针(FILE*)实现,包括fopen/fclose、单字符读写(fgetc/fputc)和行读写(fgets/fputs)等函数,需注意文件打开模式(r/w/a)和缓冲区管理。多文件开发时,头文件应包含函数声明和宏定义,并通过条
2026-04-01 16:57:23
314
原创 C语言:构造类型
本文摘要: C语言构造类型详解(150字) 本文系统讲解了C语言中的构造类型,重点包括结构体和共用体。结构体部分详细介绍了定义方式、成员访问、数组操作及指针使用,并通过投票系统案例展示实际应用。共用体部分阐述了其共享内存的特性及使用注意事项。文章还深入探讨了字节对齐机制,分析默认对齐规则和#pragma pack自定义对齐方法,并通过示例说明成员顺序对结构体大小的影响。最后介绍了柔性数组的概念和使用场景。全文结合代码案例,全面解析了构造类型的语法规则、内存布局和最佳实践,为C语言开发者提供了实用的参考指南。
2026-04-01 16:24:25
334
原创 C语言:动态内存分配和内存操作
本文介绍了C语言中动态内存分配和内存操作的相关函数。动态内存分配部分详细讲解了malloc、calloc、realloc和free函数的使用方法、参数说明及注意事项,并通过示例代码演示了具体应用场景。内存操作部分则重点介绍了memset、memcpy/memmove、memcmp和memchr等函数的功能特点,强调了对内存重叠、初始化、拷贝等关键问题的处理方式。文章提供了多个完整代码示例,帮助理解各函数的实际应用,并特别提醒了内存泄漏、野指针等常见问题的防范措施。
2026-04-01 16:10:52
282
原创 C语言:二级指针及void与void*的区别
本文系统梳理了C语言指针相关核心概念。主要内容包括:1. 二级指针定义与使用,强调其与指针数组的等效性及与二维数组的区别;2. main函数原型解析,介绍标准写法和扩展形式;3. 常量指针、指针常量和常量指针常量的区别与应用场景;4. 野指针、空指针和空悬指针的识别与防范措施;5. void与void*的类型特性差异;6. 内存管理机制,详细说明栈、堆、数据段和代码段的内存特性及管理方法。文章通过代码示例深入浅出地阐述了指针操作的关键技术点,为C语言指针学习提供了系统性的参考。
2026-04-01 15:56:59
540
原创 C语言:字符数组和字符指针-、指针函数、 函数指针
本文详细讲解了C语言中指针的高级应用,重点包括数组指针、指针数组、函数指针、指针函数和二级指针的使用方法。文章通过多个案例演示了指针与数组的结合应用,如遍历二维数组、字符串操作等;阐述了函数指针的定义和使用,包括回调函数的实现原理;介绍了二级指针的概念及其与指针数组的关系。此外,文中还对比了字符数组和字符指针的区别,强调了指针在不同场景下的适用性。这些内容为深入理解C语言指针机制提供了实用指导。
2026-04-01 15:37:47
356
原创 C语言:变量指针、指针变量与数组指针、指针数组
本文摘要: 本文系统讲解了C语言中指针与数组的核心概念及应用。主要内容包括:1.指针变量与指针运算符(&和*)的使用;2.指针变量作为函数参数的两种交换方式(交换指向和交换数据);3.指针与数组的关系,包括数组名作为指针、指针运算规则;4.通过下标法和指针法遍历数组的实现与效率对比;5.数组指针(指向整个数组)与指针数组的区别,以及一维和二维数组指针的使用方法。文中通过大量代码示例演示了指针操作数组元素的多种技巧,并分析了不同实现方式的优缺点,为深入理解C语言指针与数组提供了全面指导。
2026-02-19 10:34:20
1340
原创 C语言:指针基础知识
本文摘要: 本文系统讲解了C语言中指针的核心概念与应用。主要内容包括:1) 内存地址基础,解释字节、地址、基地址等概念;2) 指针本质,区分变量指针和指针变量,说明指针尺寸在32/64位系统的差异;3) 指针操作,详细讲解取地址(&)和解引用(*)运算符的使用;4) 指针应用,通过变量交换、排序等案例展示指针的两种操作方式:改变指向或修改指向对象的值。文章强调指针与内存访问的直接/间接方式,以及指针类型必须与指向对象类型匹配的重要原则。
2026-02-19 10:18:01
809
原创 C语言:函数的作用域和生命周期
本文摘要:文章探讨了变量作用域在函数设计中的重要性,重点分析了全局变量和局部变量的特点及其使用场景。全局变量作用域覆盖整个文件,但会带来资源消耗和程序混乱等问题;局部变量包括形参、函数内变量等,作用域有限。文章还介绍了变量的存储类型(auto、static、extern、register)及其对变量生命周期和作用域的影响,特别强调了static关键字的多重作用。最后指出应尽量减少全局变量使用,推荐通过参数传递实现函数间通信,以遵循"高内聚,低耦合"的设计原则。
2026-02-19 10:09:39
848
原创 C语言:函数后续
本文主要讲解了C语言中函数的嵌套调用与递归调用的概念及应用。在嵌套调用部分,通过素数判断、数组查找等案例展示了函数嵌套调用的正确方式,并强调不允许嵌套定义但允许嵌套调用。递归调用部分详细解释了递归原理、终止条件及底层实现机制,通过年龄计算、阶乘等案例进行演示,并分析了快速排序算法的递归实现。此外,还探讨了数组作为函数参数的传递方式(地址传递)、变量的作用域(全局/局部变量)及存储类型(static/extern等),并比较了它们的优缺点。最后通过多个实际案例(如数组比较、字符串拷贝等)加深理解,并总结了st
2026-01-19 19:36:54
575
原创 C语言:函数
本文系统介绍了C语言中函数的概念、分类和使用方法。函数是C程序的基本组成单元,可分为库函数和自定义函数,按参数分为有参和无参函数,按返回值分为有返回值和无返回值函数。文章详细讲解了函数的定义语法、形参与实参的区别、返回值的处理规则,并通过多个案例演示了函数的具体应用。同时阐述了函数声明的重要性,解释了函数调用时的底层工作原理,包括栈帧管理和参数传递机制。最后还介绍了变量的底层执行机制,帮助读者深入理解程序运行原理。
2026-01-19 19:28:38
887
原创 C语言:字符串数组
摘要:本文介绍了C语言中字符串的基础操作,包括输入输出方法和常用字符串处理函数。主要讲解了scanf、fgets、gets三种字符串输入方式,以及printf、fputs、puts三种输出方式,并指出gets和puts在C11标准中已被移除。重点介绍了字符串拼接(strcat)、拷贝(strcpy)、比较(strcmp)和长度计算(strlen)等核心函数的使用方法和注意事项。文章通过多个示例代码演示了这些函数的实际应用,包括用户登录验证、单词统计和字符串比较等常见场景,为C语言字符串处理提供了全面的参考。
2025-07-30 20:42:25
1173
原创 C语言:二维数组和字符数组
本文摘要: 二维数组是多维数组的一种,由行和列组成。定义语法为"数据类型 数组名[行][列]",初始化时可省略行数但不可省略列数。二维数组按行存储,支持部分初始化(未初始化为0)。字符数组是元素为char类型的数组,常用于存储字符串,初始化时未赋值部分自动补'\0'。字符串常量默认以'\0'结尾,可用三种方式初始化字符数组。二维数组常用于矩阵运算,字符数组则用于字符串处理。文章通过示例演示了二维数组遍历、矩阵转置及字符数组操作等核心概念。
2025-07-30 20:35:00
976
原创 C语言:数组
本文介绍了C语言中数组的基本概念和使用方法。数组是相同类型数据的集合,元素通过下标访问,下标从0开始。文章详细讲解了数组的定义、初始化、访问方式,并通过具体案例演示了数组的应用,包括斐波那契数列计算、日期天数统计和冒泡排序算法实现。特别强调了数组初始化规则、局部数组元素的随机性以及数组越界访问的风险。最后通过完整的代码示例展示了冒泡排序的实现过程和优化方法。
2025-07-30 20:17:45
2096
原创 C语言:《猜拳游戏》
摘要:本文实现了一个基于C语言的猜拳游戏v1.0版本。游戏功能包括:1)选择对手(哪吒、敖丙、敖闰);2)玩家出拳(石头、剪刀、布);3)电脑随机出拳;4)自动判断胜负(胜、负、平局);5)支持重复游戏。程序采用while循环结构实现游戏主流程,使用rand()函数生成随机数模拟电脑选择,并通过(player_gesture-computer_gesture+3)%3算法判定胜负。游戏包含输入验证机制,防止非法输入,界面友好简洁。
2025-07-30 20:08:33
227
原创 C语言:循环结构
循环结构是编程中重复执行代码块的重要工具。本文详细介绍了三种循环结构:while、for和do...while循环,分析了它们的语法特点、执行流程和适用场景。其中,while和for属于当型循环(先判断后执行),do...while是直到型循环(先执行后判断)。文章通过求累加和、判断水仙花数、猜数字游戏等典型案例,展示了循环的实际应用,并讲解了循环嵌套(如九九乘法表)和基础算法模型(累和、累乘、极值)。特别强调了避免死循环的注意事项,比较了不同循环的优劣,指出for循环在已知循环次数时的优势。最后简要介绍了
2025-07-22 19:20:14
796
原创 C语言:分支结构
摘要:本文详细介绍了C语言中的条件判断结构,包括if-else和switch语句的实现方式。主要内容包括:1. 条件表达式概念及其逻辑值表示(非0为真,0为假);2. 关系运算符和逻辑运算符的使用方法;3. 单分支、双分支(含三目运算符)和多分支if语句的语法和应用实例;4. switch语句的结构特点、break穿透现象及实际应用案例;5. 通过学生成绩评级、简易计算器等实例演示分支结构的编程实现。文章还强调了编程规范,如变量初始化、代码缩进等注意事项。
2025-07-22 19:11:34
782
原创 C语言:流程控制
本文系统介绍了C语言中的算法概念、程序结构、输入输出机制及格式化控制要点。主要内容包括:1.算法定义与特征(有穷性、可行性、确定性);2.程序三大基本结构(顺序、分支、循环);3.输入输出缓冲机制原理(全缓冲/行缓冲/无缓冲);4.格式化输入输出函数(printf/scanf)的详细使用,涵盖整型、字符型、字符串和浮点型的格式控制(如宽度设置、对齐方式、小数位保留等)。文中通过多个代码示例演示了不同数据类型的格式化输出技巧,特别强调格式说明符与数据类型的匹配重要性,并指出常见错误的规避方法。
2025-07-22 19:04:09
845
原创 C语言:运算符
摘要:本文系统介绍了C语言中的数据类型转换规则和各类运算符的使用。主要内容包括:1.数据类型转换分为隐式转换(自动提升低等级类型)和显式转换(强制类型转换),并详细说明了转换优先级规则;2.全面解析了算术、关系、逻辑、位运算等各类运算符的语法、优先级和结合性,特别强调了自增/自减运算符的特殊使用规则;3.通过具体案例说明了浮点数比较的注意事项和赋值运算的类型转换规则;4.深入分析了逻辑运算符的"短路"特性和逗号运算符的运算顺序。这些基础知识是掌握C语言编程的核心内容,对理解程序执行过程和
2025-07-10 20:52:11
916
原创 C语言:基本类型数据
摘要:本文介绍了C语言中的基本数据类型及其内存存储方式。整型数据以补码形式存储,正数三码统一,负数需转换;浮点型按IEEE754标准分尾数和指数部分存储;字符型实际存储ASCII码,可与整型通用。文章详细说明了各类型变量的定义、赋值、运算及格式化输出方法,并通过具体代码示例演示了数据类型转换、大小写字母转换等操作。内存存储图示和二进制转换方法有助于深入理解数据类型在计算机中的实际表现形式。
2025-07-09 20:25:36
671
原创 C语言:变量
变量是程序运行过程中值可变的量,代表内存中具有特定属性的存储单元。变量命名需遵循标识符规则(字母/下划线开头,含数字字母下划线)。C语言变量使用前必须定义,可通过声明+初始化或先声明后赋值两种方式。基本数据类型包括整型、浮点型和字符型。未初始化变量的值随机,可能引发未定义行为。标识符分为关键字(32个)、预定义标识符(如printf)和用户自定义标识符三类。长整型变量赋值时应注意类型一致性问题。不同整型变量因字节数限制而具有特定的数值范围。
2025-07-09 19:09:46
882
原创 C语言:常量
C语言中的常量分为整型、浮点型、字符型、字符串和符号常量五大类。整型常量支持十进制、八进制和十六进制表示;浮点型常量包含小数和科学计数法两种形式;字符型常量使用单引号,字符串常量用双引号;符号常量通过#define定义,可提高代码可读性。特别注意:整型常量不能以0开头(八进制除外),浮点型指数表示时e后必须为整数,字符与字符串常量在内存占用上存在差异。使用中文符号会导致编译错误,如"\357"提示。
2025-07-08 19:11:48
1042
原创 C语言:数据类型
摘要:数据类型定义了变量存储的数据类型及其内存大小,是计算机管理和操作数据的关键。C语言数据类型分为基本类型(整型、浮点型、字符型等)、构造类型(结构体、联合体等)、指针类型和空类型。不同数据类型占用内存大小不同,如int占4字节,long long占8字节。使用sizeof运算符可获取数据类型或变量的字节大小。布尔类型在C99中引入,bool占1字节,但true/false作为int类型占4字节。数据类型的内存需求与编译系统相关,理解这些有助于程序高效利用内存。(148字)
2025-07-08 19:05:04
844
原创 04—Linux:网络相关指令、进程相关指令、磁盘相关指令
本文介绍了虚拟机网络模式(桥接、NAT、仅主机)的特点及适用场景,重点讲解了Linux常用的网络指令(ping、ifconfig、netstat)、进程管理指令(ps、top、kill)和磁盘管理指令(du、df)。同时详细说明了文件挂载操作(fdisk、mount、umount)以及三种服务器搭建方法:NFS(Linux间共享)、Samba(Linux与Windows共享)和FTP(系统间文件传输)。文末提供了清华源配置方法,为Linux环境搭建提供了实用指导。
2025-07-07 19:10:11
1781
原创 Vim编辑器(进阶)
Vim常用指令摘要: 光标移动:gg到首行,G到末行,:n跳转行,$行尾,0行首。 删除:x删字符,dd删行,ndd删多行,dG删至结尾。 复制粘贴:yy复制行,p粘贴至光标后,P粘贴至光标前。 撤销重做:u撤销,U撤销行操作,Ctrl+R重做。 查找替换:/string查找,%s/old/new替换,加/g全局替换。 其他::setnu显示行号,Ctrl+G显示文件信息。 (注:所有操作需在相应模式下进行)
2025-07-07 17:54:06
480
原创 Linux:VIM编辑器
Vim是Vi编辑器的增强版,支持语法高亮、多级撤销等功能。安装通过sudo apt-get install vim,卸载用sudo apt-get remove vim。Vim有三种模式:命令模式(默认)、输入模式(编辑)和末行模式(保存/退出)。常用操作包括用i/a/o进入输入模式,ESC返回命令模式,:wq保存退出。启动时可指定文件路径和行号(vim 文件 +n)。还介绍了终端快捷键如Ctrl+L清屏、Ctrl+C终止进程等。建议将.vimrc配置文件放置到家目录以自定义Vim环境。
2025-07-05 22:49:05
381
原创 03-Linux:通配符 , 压缩、打包、解压缩
本文摘要: Linux常用指令指南包含三部分内容:1)通配符使用:介绍*、?和[]三种通配符的匹配规则及应用场景;2)文件权限说明:详细解释r(读)、w(写)、x(执行)三种权限的数字表示及操作限制;3)压缩解压指令:重点对比gzip和bzip2命令,包括语法选项、递归压缩、保留源文件等特性。gzip支持目录递归操作但压缩率较低,bzip2压缩效率更高但不支持目录操作。两种工具生成的压缩文件格式不同(.gz和.bz2),使用时需注意扩展名区分,且不能混合使用。
2025-07-04 14:12:12
1030
原创 02-Linux:用户名和用户组
本文摘要: 文章介绍了Linux系统中的用户、用户组及权限管理方法。主要内容包括:1)用户管理:创建/删除用户、设置密码、普通用户与超级用户切换;2)用户组管理:创建/删除组、添加成员、设置共享目录权限;3)权限管理:通过chown修改文件归属,使用chmod设置读写执行权限(文字设定法和数字设定法)。重点演示了团队开发场景下如何创建共享工作目录,并配置组权限。文中包含具体命令示例,如useradd、passwd、chmod 750等,适用于Linux系统管理员进行多用户环境配置。
2025-07-03 17:52:53
1096
原创 01-LINUX:目录操作和文件操作
本文摘要:Linux文件系统采用层级式树状目录结构,目录操作包括路径切换(cd)、查看(ls/pwd)、创建(mkdir)和删除(rmdir/rm)等。文件操作涵盖内容查看(cat/more/less)、搜索(grep/find/locate)、复制移动(cp/mv)及创建删除(touch/rm)。重点介绍了绝对/相对路径概念、通配符使用、文件类型标识(如d目录、-普通文件)及常用指令组合技巧(如管道符|)。特别说明目录操作需递归参数(-r),文件单位换算(1MB=1024KB),并强调数据删除的不可逆性。
2025-07-02 19:57:33
2046
原创 00-Linux:环境安装
目录VMware安装与配置VMware Workstation安装步骤集成Linux环境搭建创建Linux虚拟机VSCode开发环境配置安装与设置教学环境完整部署完整环境搭建流程Typora Markdown编辑器安装安装与使用指南下载安装包安装过程 Windows用户直接运行.exe安装程序 按照向导完成安装,接受许可协议 许可证激活 启动VMware后输入许可证密钥 或选择试用模式(30天免费试用) 基本配置查看桌面,或者检查开始菜单,验
2025-07-01 17:36:17
706
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅