- 博客(169)
- 收藏
- 关注
原创 【计算机网络】socket编程 --- 实现简易TCP网络程序
这里我们规定将TCP服务器封装成一个类,以下是服务器程序框架int main()// 1. 创建TCP服务器端对象// 2. 初始化TCP服务器// 3. 启动TCP服务器return 0;log lg;public:{}{}{}void Run(){}private:lg是我往期封装的日志类对象,这个在UDP也使用过。👉【计算机网络】socket网络编程 — 实现一些简易UDP网络程序👉【Linux】模拟实现一个简单的日志系统。
2024-09-03 17:58:54
1541
1
原创 【计算机网络】socket网络编程 --- 实现一些简易UDP网络程序
在上篇博客中,我们简单认识了socket套接字的相关API等其它内容。这篇博客我将带领大家如何使用socket套接字,来从零实现一个简单的UDP网络程序 — 字符串回响。即接收到的数据内容要原样返回给客户端。里面会掺杂点格外知识,希望大家耐心看完 ~
2024-08-25 18:38:03
1345
原创 【计算机网络】认识端口号 && 认识传输层协议 && 认识网络字节序 && 认识socket套接字
认识端口号 && 认识传输层协议 && 认识网络字节序 && 认识socket套接字
2024-08-22 19:58:52
1391
原创 【Linux】线程安全的单例模式 && STL和智能指针的线程安全问题 && 其他常见的各种锁 && 读者写者模型(线程的周边话题)
Linux线程的最后一篇博客,what can i say, 线程 out !!!
2024-08-16 16:13:25
1336
原创 【Linux】生产者消费者模型
生产者消费者模式(也称PC模型):就是通过一个容器来解决生产者和消费者的强耦合问题。是专门高效的解决多线程或多进程间协作问题。强耦合指的是系统中各个组件或模块之间依赖关系非常紧密和直接,一个组件的改变可能会直接影响到其他组件,导致系统难以维护和扩展。因此,生产者和消费者彼此之间可以不用直接通讯,而通过容器来进行通讯。所以生产者生产完数据之后不用等待消费者处理,直接扔给容器,消费者不找生产要数据,而是直接从容器里取。这个容器本质就是一个缓冲区,平衡了生产者和消费者的处理能力。
2024-08-12 16:06:37
1082
原创 【Linux】信号处理 --- 可重入函数、volatile、SIGCHLD信号(补充篇)
了解什么是可重入函数、volatile关键字和SIGCHLD信号
2024-07-24 00:18:01
1100
原创 【Linux】System V消息队列 System V信号量
在System V通信标准中,还有一种通信方式:消息队列,以及一种实现互斥的工具:信号量;随着时代的发展,这些陈旧的标准都已经较少使用了,但作为IPC中的经典知识,我们可以对其做一个简单了解。尤其是 信号量,可以通过它,为以后多线程学习中POSIX信号量的学习做铺垫信号量本质是计数器,PV操作具有原子性。执行流申请资源,必须先申请信号量(计数器)资源,得到信号量之后,才能访问临界资源!信号量值10两态的。二元信号量,就是互斥功能。申请计数器(信号量)的本质,是对临界资源的预定机制!
2024-07-13 19:52:02
939
1
原创 【Linux】进程间通信之匿名管道
进程间通信IPC)就是两个或多个进程实现数据层面的交互。在Linux中,管道可以被视为一种特殊类型的文件,它是基于文件级别的通信方式。它使得一个进程的输出可以直接成为另一个进程的输入,从而实现了进程之间的数据传输和协作。在Linux中,你可以使用管道符号将一个进程的输出发送到另一个进程的输入。比方说你想要统计一个文件中包含的单词数量。其中,当cat命令和wc命令运行起来后就是两个进程,cat进程通过标准输出将数据传输到管道当中,wc进程再通过标准输入从管道当中读取数据,至此便完成了两个进程间通信。
2024-06-08 22:44:08
1293
原创 【Linux】动态库和静态库
我们平时写的C程序,一上来就写上,然后就可以使用诸如printfscanf等函数,可在stdio.h中只包含函数的声明而不包括函数的定义(实现),那么函数的定义在哪里呢?答案是在库文件中。库是一组已经编写好的代码或程序模块,通常包含了函数的实现,使用库可以帮助程序员节省时间和精力,使得程序员不需要花费精力造轮子,提高了代码的可维护性和可重用性。而库又分为动态库和静态库动态库(共享库):在程序运行时通过加载器被加载到物理内存中,使得多个程序可以同时共享同一份库的实例。。在Linux中,.so。
2024-06-04 09:55:52
1216
1
原创 【Linux】文件系统和软硬链接
前面我们学习文件相关的知识,如文件操作等,文件都是被进程打开(内存文件),根据冯诺依曼体系结构,被打开的文件一定会被加载到内存,由操作系统管理。Linux学习目录但并不是所有的文件都会被进程打开,那么没有打开的文件就只能在磁盘上呆着(磁盘文件)。当然了,没有打开的文件也应当进行管理,我们把做这部分管理工作称之为文件系统。文件系统属于操作系统中的一部分,通常通过磁盘或其他存储介质来管理文件(路径问题,存储问题,获取问题内容+属性,删除修改等效率问题)。因此,在学习文件系统之前,我们首先需要认识磁盘。
2024-05-30 17:40:09
1054
2
原创 【Linux】简单模拟C语言文件标准库FILE
在C语言中,FILE结构体一定封装了诸如文件描述符等字段,使得C语言文件操作的库函数可以很好的调用系统调用,因此程序员可以更加方便地使用高级接口来完成任务,而无需深入了解底层系统调用的实现细节。而这篇博客将带领大家深刻理解C语言文件操作函数底层是如何封装系统调用接口,以及C语言用户级缓冲区的现象。注:本篇博客不是为了造一个更好的轮子,而是重在理解!!!
2024-05-21 23:28:06
901
原创 【LInux】<基础IO> 文件操作 | 文件描述符 | 重定向
到目前为止,我们所知道的文件描述符就是open函数的返回值(非负整数),这个描述符可以在后续的读写操作中用作文件标识符,即找到对应的文件。那不知道大家有没有思考过一个问题:为什么操作系统可以单单通过一个整数(文件描述符)就能找到对应的文件?文件分为打开的文件和没打开的文件(这里先讨论打开的文件,等到文件系统再谈没打开的文件)。打开的文件是由进程使用函数(如fopen())打开的。根据冯诺依曼体系结构,被打开的文件一定会被加载到内存。而一个进程可以打开多个文件(1:n。
2024-05-15 19:48:29
1141
1
原创 【Linux】进程控制 之 进程创建 && 进程终止 && 进程等待 && 进程替换
本篇博客讲解了进程控制 之 进程创建 && 进程终止 && 进程等待 && 进程替换。码字结合,快来看看吧 ~
2024-05-05 11:16:11
853
原创 【Linux】软件包管理器yum
在Linux下安装软件,一个通常的办法是下载到程序的源代码,并进行编译,得到可执行程序。但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成windows上的安装程序)放在一个服务器上,通过软件包管理器可以很方便的获取到这个编译好的软件包,直接进行安装。软件包和软件包管理器,就好比 “App” 和 “应用商店” 这样的关系。在Linux中,yum是Linux下非常常用的一种软件包管理器。主要应用在Centos等Linux发行版上。
2024-04-14 14:28:31
1080
2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人