- 博客(165)
- 收藏
- 关注
原创 【Linux网络编程十】网络原理之IP协议【网络层】
本文介绍网络层的IP协议相关内容,谈路由问题与分片问题,运营商在网络中的作用是什么,NAT技术等
2025-04-21 19:43:00
888
原创 【Linux网络编程九】网络原理之TCP协议【传输层】
TCP是面向连接,可靠的网络协议,可靠性主要由确认应答,流量控制,滑动窗口,超时重传,拥塞控制,连接管理,序号与确认序号等策略保证。TCP在保证可靠性的同时还在效率上做了努力,使用快重传,捎带应答,延迟应答等策略提高效率。TCP通过三次握手建立连接,四次挥手断开连接。
2025-04-03 14:58:40
737
原创 【Linux网络编程八】实现最简单Http服务器(基于Tcp套接字)【应用层】
实现一个最简单的Http服务器,分析Http服务器是如何工作的,理解Http协议。
2024-09-04 12:24:24
1208
原创 【Linux网络编程七】网络序列化和反序列化(网络版本计算器)
【Linux网络编程七】网络序列化和反序列化(网络版本计算器):本篇重点:自定义协议和序列化反序列化。以网络版本计算器为例子来理解协议定制的诸多细节问题。理解序列化和反序列化间的套路。
2024-03-15 17:43:09
1202
原创 【Linux网络编程五】Tcp套接字编程(四个版本服务器编写)
【Linux网络编程四】Tcp套接字编程(四个版本服务器编写):本篇重点:四个服务器版本:单进程版本,多进程版本,多线程版本,线程池版本。以及更多细节问题。带你学会如何使用Tcp套接字编程。
2024-02-16 16:04:29
1486
1
原创 【Linux网络编程四】Udp套接字编程网络应用场景
【Linux网络编程三】Udp套接字编程网络应用场景:场景一远程控制命令;场景二:Linux与Windows通信;场景三:简单聊天
2024-02-04 19:06:46
1391
1
原创 【Linux网络编程三】Udp套接字编程(简易版服务器)
【Linux网络编程三】Udp套接字编程(简易版服务器)本篇重点:UDP网络编程步骤:①创建套接字②绑定网络信息③接发消息;服务器端和客户端绑定细节,以及代码实现。
2024-02-02 18:34:40
1186
1
原创 【Linux网络编程二】网络基础2(网络框架)
【Linux网络编程二】网络基础2(网络框架)本篇重点:①跨网络如何通信②网络通信的本质③端口号④TCP/UDP协议⑤通用网络接口⑥网络字节序
2024-02-01 18:43:21
1048
1
原创 【Linux网络编程一】网络基础1(网络框架)
【Linux网络编程一】网络基础(网络框架)重点:①什么是协议②协议分层③操作系统与网络协议栈关系④局域网下如何通信⑤以太网下如何通信⑥交换机作用
2024-01-31 22:18:14
1103
1
原创 【Linux系统编程二十九】基于信号量的环形队列生产消费模型
【Linux系统编程二十九】基于信号量的环形队列生产消费模型,本篇重点,理解使用信号量,在环形队列生产消费模型中,信号量维持的是生产和消费者之间的同步与互斥关系,而加锁维护的是生产者和生产者,消费者和消费者之间的互斥关系。理解这层概念就能真正的理解基于信号量的环形队列生产模型!
2024-01-21 21:53:41
969
原创 【Linux系统编程二十八】基于条件变量的阻塞队列(生产消费模型)
【Linux系统编程二十八】基于条件变量的阻塞队列(生产消费模型):重点:条件变量(原理,接口),321原则,真正理解生产消费模型,伪唤醒。
2024-01-21 15:16:55
965
原创 【Linux系统编程二十七】:线程的互斥与同步(互斥锁的使用与应用)
【Linux系统编程二十七】:本文主要总结什么是互斥,为什么要互斥,以及互斥如何实现,主要原因是因为多线程并发访问共享资源,会造成数据不一致问题。介绍互斥锁的概念和相关接口使用,锁的应用场景,探讨同步场景下又该如何解决以及死锁问题。
2024-01-09 18:18:41
1051
原创 【Linux系统编程二十六】:线程控制与线程特性(Linux中线程库/线程创建/线程退出/线程等待)
【Linux系统编程二十六】:本篇总结Linux下线程库中如何控制线程,理解线程控制块都是在线程库中被统一管理起来,线程tid的本质就是TCB在共享区里的起始地址。熟悉掌握线程的创建,退出,等待等操作,了解线程的一些特性:独立栈,局部存储,可分离线程等。
2024-01-03 19:38:59
1105
1
原创 【Linux系统编程二十五】:线程概念(Linux中的轻量级进程)
【Linux系统编程二十五】:本篇知识点诸多,建议反复理解。线程是进程的一个执行分支,执行粒度比进程要细,如何理解?进程是系统资源分配的基本实体,而线程是系统的调度单位。如何理解?线程要比进程更轻量化,又该如何理解?页表是如何完成从虚拟地址到物理地址的映射的?什么是轻量级进程?
2023-12-29 18:52:24
1221
原创 【Linux系统编程二十四】:(信号3)--信号的捕捉处理与周边细节
【Linux系统编程二十四】:本篇知识点:sigaction如何使用,信号何时被捕捉,用户态和内核态,操作系统的本质,信号捕捉周边细节:可重入函数,volatile以及SIG_CHILD信号
2023-12-26 20:49:33
987
原创 【Linux系统编程二十三】:(信号2)--信号的保存
【Linux系统编程二十三】:本文总结信号的保存诸多细节,信号的保存主要依赖三张表,block表,pending表,handler表,这三张表凝聚了信号的核心,介绍了对应的获取或设置系统调用接口sigprocmask() /sigpending() /signal。还介绍了信号的其他相关概念,信号递达,信号未决等等。
2023-12-24 16:03:46
839
原创 【Linux系统编程二十二】:(信号1)--信号的产生与发送
【Linux系统编程二十二】:本篇总结信号产生的五大方式,前台进程,硬件中断,以及信号异步及信号的发送等知识点。
2023-12-22 14:50:30
965
原创 【Linux系统编程二十一】:(进程通信3)--消息队列/信号量(system v标准的内核数据结构的设计模式)
【Linux系统编程二十】:本篇将总结进程间通信之消息队列和信号量,并介绍system v标准下的内核数据结构是如何设计的,以及互斥,临界的等概念的引出,信号量的本质就是一把计数器,PV操作就是对计数器的加加减减,以上部分为后面的多线程作铺垫,
2023-12-12 11:44:34
1178
原创 【Linux系统编程二十】:(进程通信2)--命名管道/共享内存
【Linux系统编程二十】:(进程通信)--本篇总结进程之间的通信:命名管道和共享内存,详细的介绍使用它们之间的系统接口,以及各自的通信特性。
2023-11-23 14:45:57
223
原创 【Linux系统编程十九】:(进程通信1)--匿名管道/模拟实现进程池
【Linux系统编程十九】:(进程通信)--匿名管道/模拟实现进程池,进程通信的本质就是让不同的进程看到同一份公共的资源,而父子进程可以做到对同一个文件共同访问,这个文件是属于内存级文件。本篇总结管道具有5大特性和4种情况,以及管道的应用场景:实现一个简易的进程池。
2023-11-18 14:37:53
217
原创 【Linux系统编程十八】:(基础IO5)--动静态库共享/动静态加载问题(涉及地址空间)
【Linux系统编程十七】:(基础IO4)--动静态库共享/动静态加载问题(涉及地址空间)本文探讨一个可执行程序如何加载,如何与虚拟地址关联起来的?动态库如何实现多进程共享的?动态库与地址无关码?逻辑地址,虚拟地址,线性地址,物理地址?动态库加载细节等问题
2023-11-16 18:48:41
252
原创 【Linux系统编程十七】:(基础IO4)--文件系统(inode与软硬链接)
【Linux系统编程十六】:(基础IO3)--文件系统(inode与软硬链接)总结没有打开的文件在磁盘中是如何存储的,按照什么方式进行存储的呢?理解文件系统的inode与软硬链接,以及应用。
2023-11-13 14:55:08
161
原创 【Linux系统编程十六】:(基础IO3)--用户级缓冲区
【Linux系统编程十六】:(基础IO3)--用户级缓冲区,你真正理解缓冲区吗?我们所指的缓冲区是用户级的还是系统级的呢?缓冲的策略有哪些呢?缓冲区在哪里呢?缓冲区的意义又是什么呢?本篇带你理解缓冲区的慨念。
2023-11-08 19:04:17
401
原创 【Linux系统编程十五】:(基础IO2)--重定向实现原理 &&“Linux下一切皆文件“
【Linux系统编程十五】:本篇将带你理解重定向的实现原理:本质就是文件描述符数组的内容拷贝,提供输出重定向以及输入重定向案例。第二将探讨Linux下一切皆文件,为什么这么说,以及如何做到让Linux下一切皆文件。
2023-11-06 19:58:42
245
原创 【Linux系统编程十四】:(基础IO1)--文件描述符fd(进程与文件的联系)
【基础IO⑧】:当打开一个文件时,是谁打开文件?是进程!进程是如何打开的呢?进程可以打开许多文件,它是如何知道打开的文件在哪呢?进程和文件之间是根据什么关联到一起的呢?本文将为你总结进程与文件之间的联系:文件描述符
2023-11-05 17:39:29
333
原创 【Linux系统编程十三】:(进程控制3)--制作简易shell&&理解shell运行原理
【Linux系统编程十三】:本文将从shell的实现层面来阐述shell的运行原理,shell本质就是一个进程,其中用到的知识有进程创建,进程退出,进程等待,进程替换等知识,内建命令与普通命令的区别等。
2023-11-03 10:22:16
228
原创 【Linux系统编程十二】:(进程控制2)--进程替换/exec*()系列接口
【Linux系统编程十二】:进程替换/exec*()系列接口。本文总结进程程序替换的原理,以及替换过程中的一些细节,总结出4大特点:独立性,唯一性,不变性,不返回。并详细介绍与使用进程替换的系统调用接口exec*系列。
2023-11-02 18:46:50
203
原创 【Linux系统编程十一】:(进程控制1)--进程终止与进程等待
【进程控制①】:进程终止与进程等待。本文总结进程的退出状态是如何被知道的,是从退出码中获取,而父进程又是如何获取子进程的退出码呢?通过进程等待获取,进程等待的系统调用接口有哪些呢?代表什么意义呢?什么是阻塞等待和轮询等待呢?
2023-10-30 17:29:16
251
原创 【Linux系统编程十】:(进程概念4)--进程地址空间(虚拟内存与物理内存)
【进程概念④】:进程地址空间(虚拟内存与物理内存)。本文探讨进程的虚拟地址与物理地址之间的关系,得出平时我们认为的"内存"并不是真正的物理内存,而是虚拟内存,那么为什么要存在虚拟内存呢?总结进程地址空间以及页表的存在对进程管理的意义。
2023-10-25 17:31:01
245
原创 【Linux系统编程九】:(进程概念3) --进程环境变量/进程切换
深入篇【Linux】学习必备:本文总结有关进程的一些细节问题:进程环境变量与进程切换
2023-10-23 16:01:24
517
原创 深入篇【C++】总结智能指针的使用与应用意义&&(auto_ptr/unique_ptr/shared_ptr/weak_ptr)底层原理剖析+模拟实现
深入篇【C++】总结智能指针的使用与应用意义(auto_ptr/unique_ptr/shared_ptr/weak_ptr)底层原理剖析+模拟实现。涉及异常导致的内存泄露问题的,以及智能指针的出现以及实现原理,应用意义。
2023-10-13 20:41:10
545
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人