自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 第五章:运输层

摘要:运输层是计算机网络体系结构中的关键层次,负责为不同主机上的应用进程提供端到端通信服务。运输层通过端口号实现复用和分用功能,区分不同应用进程。UDP和TCP是两大核心协议:UDP无连接、不可靠但高效,适用于实时应用;TCP面向连接、可靠但开销大,适合文件传输等场景。TCP通过滑动窗口实现流量控制,采用慢启动、拥塞避免等算法进行拥塞控制,并依靠序列号、确认应答、超时重传等机制保证可靠传输。连接管理采用三次握手建立连接、四次挥手释放连接,确保通信可靠性。

2026-01-05 14:29:14 830

原创 第四章:网络层

IPv4地址就是因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符。

2025-12-30 15:15:45 776

原创 第三章.数据链路层

本文系统介绍了数据链路层的核心技术与协议。主要内容包括:1)数据链路层的基本概念,如帧封装、透明传输和差错控制机制(奇偶校验、CRC);2)可靠传输协议,包括停止等待、回退N帧和选择重传协议;3)媒体接入控制方法,如CSMA/CD(有线)和CSMA/CA(无线);4)网络地址体系,包括MAC地址、IP地址和ARP协议;5)网络设备工作原理,比较集线器和交换机的差异,详述交换机的自学习与转发机制;6)高级网络技术,如生成树协议STP和虚拟局域网VLAN的实现。文章全面涵盖了数据链路层的关键技术,为理解计算机网

2025-12-23 16:21:10 776

原创 进程通信:管道与共享内存详解

本文介绍了Linux系统中四种进程间通信机制:管道、信号量、共享内存和消息队列。管道分为有名管道(任意进程间通信)和无名管道(父子进程间通信),通过mkfifo或pipe系统调用创建。信号量通过PV操作实现进程同步,使用semget、semop等函数控制。共享内存通过shmget创建共享空间,shmat映射到进程地址空间实现高效数据共享。消息队列使用msgget创建队列,通过msgsnd和msgrcv发送接收结构化消息。每种机制各有特点:管道简单但效率低,共享内存高效但需同步,信号量专注同步控制,消息队列支

2025-11-26 21:02:00 826

原创 Linux信号的使用

摘要:本文介绍了Linux系统中的信号机制,包括信号的基本概念、常见信号类型及其编号(如SIGINT、SIGKILL等)。重点讲解了如何通过signal()函数修改信号响应方式,包括默认处理、忽略信号和自定义处理三种方法,并提供了代码示例。同时介绍了kill()系统调用的使用方法,说明如何向指定进程发送信号,包括不同pid参数的含义及实现类似系统kill命令的程序示例。这些内容涵盖了Linux信号处理的核心功能和应用场景。

2025-11-23 20:29:43 590

原创 笔试面试中关于链表相关的题目

本文总结了单链表常见的算法问题及解决方案:1)链表逆置的两种实现方法(使用/不使用头结点);2)判断链表交点的方法,包括简单判断和查找具体交点;3)高效删除任意节点(非尾结点)的方法;4)检测链表环及定位入环点;5)判断回文链表的栈方法和逆置后半部分方法;6)查找倒数第K个节点的双指针技巧。这些算法涵盖了链表操作的核心问题,具有实用的参考价值。

2025-11-18 21:24:54 632

原创 Linux进程复制与替换(2)

本文探讨了进程视角下的内存管理和文件操作问题。主要内容包括:1)内存泄漏的本质是程序未释放动态申请的内存空间,但进程结束后操作系统会回收所有资源;2)malloc申请内存是否成功取决于虚拟内存空间限制、物理内存+交换分区容量及系统资源限制;3)fork后父子进程遵循"独立释放"原则,各自释放堆内存副本;4)文件操作中父子进程共享文件描述符和偏移量,系统调用与库函数的区别;5)exec系列函数用于进程替换的用法。通过代码示例展示了fork-exec组合创建全新进程的实现方式。

2025-11-17 13:11:27 1193

原创 Linux进程复制与替换(1)

本文介绍了C/C++程序中主函数参数的用法、fork进程复制机制以及僵尸/孤儿进程的处理。主函数标准写法int main(int argc, char* argv[], char* envp[])包含参数计数、参数内容和环境变量数组。fork()系统调用会复制当前进程创建子进程,采用写时复制技术提高效率,父子进程从fork处继续执行但返回值不同。僵尸进程是父进程未回收的子进程,会占用系统资源,可通过wait()或信号处理解决;孤儿进程会被init进程接管自动回收。文中包含多段代码示例,演示了参数解析、进程创

2025-11-15 19:58:35 1004

原创 计算机基础理论

本文摘要:计算机系统由五大组件(运算器、控制器、存储器、输入/输出设备)和系统总线(数据、地址、控制总线)构成,通过指令系统执行操作。进程是运行中的程序,通过PCB控制状态(就绪/运行/阻塞),支持并发与并行执行。内存管理采用分页机制(逻辑页与物理页通过页表映射)和虚拟内存技术,实现大进程运行与内存保护。操作系统经历了串行处理、批处理、多道程序设计到分时系统的发展,最终实现多任务并发、交互式操作等功能,形成现代操作系统的基础架构。

2025-11-15 15:19:49 762

原创 第二章:物理层

本文系统介绍了物理层信道的基础概念和核心技术。主要内容包括:(1)信道的定义、分类(模拟/数字、导引/非导引、单工/半双工/全双工)及关键术语(码元、波特率等);(2)信道极限容量的两大准则:无噪声时的奈奎斯特准则和有噪声时的香农公式;(3)数字信号的编码方式(NRZ、曼彻斯特等)和模拟信号的调制技术(调幅、调频等);(4)各类传输介质特性,重点对比了双绞线、同轴电缆和光纤的优缺点;(5)物理层设备(中继器、集线器等)的工作原理和应用场景。文章全面阐述了物理层实现可靠数据传输的底层技术原理。

2025-11-14 23:09:26 1303

原创 C++基础入门 2

本文主要介绍了C++中的指针与引用区别、缺省函数和函数重载三个核心概念。指针和引用在定义语法、初始化要求、内存特性及可变性等方面存在显著差异:指针存储地址且可修改指向,而引用是变量别名且不可修改绑定。缺省函数允许为参数指定默认值,调用时可省略从右到左的连续参数。函数重载则支持同名函数通过参数个数、类型或顺序的差异进行区分,但需注意返回类型和默认参数的影响。这些特性共同增强了C++的灵活性和代码复用能力。

2025-11-12 13:13:51 635

原创 C++基础入门1

本文介绍了C++中的初始化、输入输出操作、const关键字和引用特性。C++支持多种初始化方式(如()和{}初始化),比C更灵活。在输入输出方面,C++使用iostream库(cin/cout)比C的stdio更安全高效。const在C++中创建真正的常量,支持指针常量(const在右侧)和常量指针(const在左侧)。引用作为变量的别名,必须初始化且更安全,常用于函数参数传递。相比指针,引用不存在空引用风险,使用更简便安全。这些特性使C++在类型安全和代码简洁性上优于C语言。

2025-11-11 23:25:54 476

原创 计算机网络概述

本文系统介绍了计算机网络的基本概念与核心知识,主要内容包括:计算机网络的定义与特点,强调其通过可编程硬件实现资源共享和信息传递的数字化本质;区分了计算机网络、互连网和互联网的概念;阐述了计算机网络的组成结构、功能特性和交换技术(电路交换、报文交换和分组交换);归纳了多种分类标准(分布范围、传输技术、拓扑结构等);分析了关键性能指标(速率、带宽、吞吐量、时延等);详细解析了网络分层结构(OSI七层模型、TCP/IP四层模型和五层教学模型)及各层的功能与协议。文章全面涵盖了计算机网络的基础理论和实践要素。

2025-11-10 19:37:45 1394 3

原创 顺序循环链表

本文探讨了实现顺序循环队列的关键技术问题。通过分析两种顺序链表的实现选择,提出了四个核心难点:如何使入队出队操作达到O(1)时间复杂度、有效利用队头空闲空间、解决判空判满条件冲突以及统一计算有效元素个数的公式。解决方案包括:采用头尾指针移动代替数据移动、实现循环队列结构、通过牺牲一个存储单元或引入标记区分队列状态,并给出了计算长度的通用公式(length=(rear-front+MAXSIZE)%MAXSIZE)。文章详细展示了循环队列的C语言实现,包括初始化、入队、出队、判空判满、销毁等基本操作的具体代码

2025-11-10 08:00:00 754

原创 单链表队列

摘要:队列是一种先进先出(FIFO)的数据结构,主要操作包括入队(enqueue)、出队(dequeue)等。本文详细介绍了链式队列的实现方法,包括初始化、入队、出队、判空等核心操作。重点阐述了如何通过改造单链表结构,使尾部插入和头部删除的时间复杂度均为O(1)。具体实现包括:使用front和rear指针分别指向队首和队尾节点;处理空队列、单节点队列和多节点队列的不同情况;以及销毁队列时的注意事项。这种链式实现方式避免了数组实现的固定大小限制,提供了更灵活的动态扩展能力。

2025-11-09 20:37:31 872

原创 两队列(栈)实现一个栈(队列)

摘要:本文阐述了用栈实现队列和用队列实现栈的方法。用两个栈实现队列时,插入操作直接压入第一个栈,删除时将第一个栈元素全部转移到第二个栈后弹出。用两个队列实现栈时,插入操作直接入队第一个队列,删除时将非空队列的前n-1个元素转移到另一个队列后弹出最后一个元素。两种方法均保证了时间复杂度为O(1),实现了数据结构间的特性转换。

2025-11-09 18:48:16 753

原创 Linux系统上c程序的编译和调试

本文介绍了GCC编译工具链的安装使用及开发调试全流程。首先详细说明了在Linux系统中安装GCC的方法,包括配置yum源和安装步骤。接着阐述了GCC的分步编译过程(预编译、编译、汇编、链接)和一步编译命令。然后介绍了Makefile的基本概念和使用方法,包括编写规则和make命令执行。最后重点讲解了GDB调试技术,包括调试版本和发布版本的区别、基础调试命令(断点设置、变量查看等)、多进程/线程调试方法,并通过实例演示了如何定位和修复代码逻辑错误。文章全面覆盖了从代码编译到调试的完整开发流程。

2025-11-04 15:21:52 1229

原创 Linux系统中库文件的生成和使用

本文介绍了库文件的概念和使用方法。库文件分为静态库(.a)和共享库(.so)两种,静态库在编译时会将代码复制到可执行文件中,而共享库则在运行时动态加载。文章详细说明了两种库的生成步骤和使用方法,并比较了它们的区别:静态库生成文件更大但独立无依赖,共享库更节省资源但需保持版本兼容。此外,还通过printf缓冲区示例解释了I/O缓冲机制的工作原理,说明换行符和程序结束会触发缓冲区刷新。文章为开发者提供了Linux环境下库文件管理的基础知识。

2025-11-03 23:29:05 1043

原创 栈(顺序+链表)

本文介绍了链栈的实现方法,重点阐述了栈的"先进后出"特性及其与顺序栈的区别。通过链表头插/头删实现入栈(push)和出栈(pop)操作,确保时间复杂度为O(1),符合栈的基本要求。具体内容包括:1) 定义栈的栈顶和栈底概念;2) 设计链栈节点结构体;3) 实现核心功能:初始化、入栈(头插)、出栈(头删)、获取栈顶元素等操作;4) 解释选择链表头操作而非尾操作的原因,以保持高效的时间复杂度。文章采用代码示例展示各功能实现细节。

2025-11-02 23:26:55 922

原创 双向链表

本文详细介绍了双向链表的数据结构设计与实现。双向链表在单向链表基础上增加prior指针域,使得节点能同时保存前后节点的地址。文章系统阐述了双向链表的核心操作:1)结构体设计包含数据域、前驱和后继指针;2)初始化时将辅助节点的指针置空;3)头插、尾插和按位置插入的实现逻辑及指针修改顺序;4)头删、尾删和按值删除的处理方法;5)查找、判空、获取长度等辅助功能。特别强调了边界条件处理,如空链表、首尾节点等特殊情况。最后指出双向循环链表只需将尾节点指向头节点即可实现。全文通过详细代码示例完整呈现了双向链表的实现过程

2025-10-31 22:13:15 654

原创 编译和链接

摘要:C/C++代码在Linux下通过GCC编译生成可执行文件需经历四个阶段:预处理(处理头文件、宏替换,生成.i文件)、编译(语法检查并转为汇编代码,生成.s文件)、汇编(转为机器码,生成.o文件)、链接(合并目标文件与库文件,生成最终可执行程序)。使用GCC工具链可逐步完成该过程(gcc -E→-S→-c→链接),将源代码从test.c最终转换为a.out。相比集成开发环境的一键编译,Linux环境能清晰展示代码编译的本质过程。

2025-10-30 23:57:34 876

原创 LInux文件类型权限和常用命令

Linux 下所有的东西都可以看做文件,Linux 将文件分为以下几种类型:◼普通文件 ‘-’◼目录文件 ‘d’◼管道文件 ‘p’◼链接文件 ‘l’◼设备文件(块设备 ’b’ 、字符设备 ‘c’)◼套接字文件 ‘s’

2025-10-29 11:56:45 1324

原创 Linux系统介绍

本文介绍了操作系统的基本概念及Linux系统的核心知识。操作系统作为连接硬件和软件的桥梁,Windows和Linux是最常见的两类系统,二者在界面、用途、开源性和用户管理等方面存在显著差异。重点解析了Linux系统的内核版本(系统核心)与发行版本(完整操作系统),列举了RedHat、CentOS、Ubuntu等主流发行版。详细说明了Linux的倒树状目录结构,包括/bin、/etc、/home等关键目录的作用,并对比了绝对路径和相对路径的差异。最后阐述了家目录的概念,强调Linux通过家目录实现用户文件隔离

2025-10-28 17:03:05 949

原创 单循环链表

单循环链表是一种特殊的链表结构,其最后一个节点的next指针指向头节点而非NULL。文章详细介绍了单循环链表的实现方法,包括节点定义、初始化、插入(头插、尾插、按位置插)、删除(头删、尾删、按位置/值删)、查找、判空、获取长度等基本操作。其中重点阐述了插入和删除操作的具体实现逻辑,以及两种销毁链表的方法(头删法和指针法)。所有操作都通过断言保证链表非空,并通过指针操作维护循环结构。这种数据结构在需要循环遍历的场景中具有优势。

2025-10-22 23:31:43 319

原创 指针(初阶)

本文系统讲解了指针的核心概念与应用。主要内容包括:指针本质是存储内存地址的变量,32位系统占4字节,64位占8字节;详细解析了指针定义、初始化、类型及运算规则;重点区分了指针与数组的两种形式(指针数组和数组指针);介绍了函数指针、二级指针等高阶用法;特别强调了空指针与野指针的区别及规避方法。通过值传递与指针传递的对比,展示了指针在内存操作中的关键作用。全文涵盖指针从基础到高级的完整知识体系,是编程学习的核心内容。

2025-10-22 23:01:41 883

原创 数组初阶(2)

本文深入讲解C语言数组的核心概念和操作:1.数组本质:数组名通常表示首元素地址,但sizeof和&操作时例外;2.边界安全:强调数组越界的危害和规避方法;3.高级操作:数组作为函数参数会退化为指针,需额外传递长度;4.指针关联:数组下标本质是指针偏移的语法糖;5.字符串数组:必须包含'\0'结尾。文章通过代码示例详细演示了数组长度计算、内存拷贝、元素比较等关键操作,并指出字符串与字符数组的区别。

2025-10-17 08:00:00 1140

原创 数组(初阶)(1)

1. 一维数组的定义和初始化2. 一维数组在内存中的存储3. 一维数组的使用4. 一维数组的应用示例5. 二维数组的定义和初始化6. 二维数组在内存中的存储7. 二维数组的使用8. 二维数组的应用示例

2025-10-16 19:44:30 772

原创 无头节点链表

本文介绍了不带头节点的单链表实现方法,重点讨论了与带头节点链表的主要区别和特殊处理。主要内容包括:链表初始化、获取元素个数、判空操作、节点查找、插入删除等基本操作的实现。特别强调了需要对第一个节点进行特殊处理的情况,如头插、头删等操作。文章详细展示了各功能函数的实现代码,包括节点创建、位置查找、前后驱查找、多种插入删除方式、按值操作等,最后还提供了清空和销毁链表的方法。这些实现方法为不带头节点单链表的操作提供了完整参考。

2025-10-13 21:21:50 444

原创 带头结点的单链表

本文介绍了带头结点的单链表的结构与基本操作实现。链表由管理者结构体(含头指针和节点数)和节点结构体(含数据域和指针域)组成。详细说明了初始化、获取元素个数、判空、查找节点等基础操作,以及头插尾插、按位置插入、按值查找等核心功能。同时实现了多种删除操作(头删、尾删、按值/位置删除)和链表清理销毁方法。通过头结点简化了链表操作,各函数均包含必要的空指针检查,确保了操作的安全性。

2025-10-12 14:06:30 597

原创 语句补充3

本文介绍了C/C++中的特殊语法结构:1.逗号表达式:允许用逗号分隔多个子表达式,最终结果为最后一个表达式的值,如b=(a=3,a*2,a+5)中b为8。2.空语句:仅由分号构成,常见于循环控制语句中可能导致逻辑错误。3.跳转语句:包括break(终止循环)、continue(跳过本次循环)、goto(无条件跳转)和return(函数返回值)。通过实例演示了这些语法的使用场景和注意事项,如数组初始化中的逗号表达式、循环中的空语句陷阱等。

2025-10-10 18:10:26 445

原创 分支与循环2

本文介绍了C语言中的switch语句和循环结构。switch语句通过case子句实现多分支选择,需注意break防止"穿透"和default处理未匹配情况。循环结构包括while(先判断后执行)、do-while(先执行后判断)和for(集中管理循环变量)三种形式,分别适用于不同场景。文章详细说明了各语句的语法、执行流程和常见问题,如死循环、条件错误等,并通过代码示例演示了正确用法。特别强调了循环变量更新和边界条件处理的重要性,帮助避免典型错误。

2025-10-09 20:56:50 1081

原创 分支与循环语句1

本文介绍了C语言中的布尔类型、逻辑运算符和关系运算符,以及分支语句的使用。主要内容包括:1.布尔类型(bool)的定义和使用,其值为true或false;2.逻辑运算符(&&, ||, !)的运算规则和短路特性;3.关系运算符(>, <, >=, <=, ==, !=)的用法和注意事项;4.if-else语句的三种形式(单分支、双分支、多分支)及其嵌套使用;5.常见错误如悬空else、条件顺序错误、浮点数比较误差等问题的解决方案。文章通过代码示例详细说明了各知识点的实

2025-09-29 18:28:37 1101

原创 数据结构入门到精通

本文系统介绍了数据结构基础概念及顺序表的实现。首先定义数据结构为数据的组织方式,分为线性结构(如顺序表)和非线性结构。重点讲解顺序表这一物理地址连续的线性结构,详细实现了其核心操作:初始化、判空/满、头插/尾插、位置插入/删除、值删除、查找、翻转、合并等。通过C语言代码展示了顺序表的基本操作逻辑,包括元素移动的内存操作和边界条件处理。最后还演示了两个顺序表的数值相加和有序合并的特殊操作实现。全文通过理论结合代码实践的方式,全面呈现了顺序表这一基础数据结构的特点与实现方法。

2025-09-26 20:58:03 1066

原创 初始C语言(新手快速学习C语言)

数据类型标识符,变量,常量,输入输出函数,转义字符.顺序语句,选择语句,循环语句数组函数指针结构体操作符关键字

2025-09-25 21:31:21 1385 1

空空如也

空空如也

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

TA关注的人

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