Linux
文章平均质量分 95
Linux相关操作及知识
安权_code
写出诗一样的代码
展开
-
网络通信应用层协议-序列化与反序列化
在进行网络通信时,应用层协议是需要程序员手动定制的,序列化与反序列化是对协议进行字符串形式的转换。应用层协议表示发送端和接收端共同遵守的规则,依照这个规则,通信的双方才能够分析出传输数据的真正含义,只有理解了数据的真正含义,才能对数据进行处理,因此应用层协议在网络通信中非常重要。传输层协议为TPC\UDP,网络层协议为ipv4\ipv6,这些协议都是设置好的,而应用层协议需要程序员手动实现,传输应用层协议需要进行序列化与反序列化。原创 2024-07-26 10:06:28 · 685 阅读 · 0 评论 -
Linux_实现TCP网络通信
在Linux下,实现传输层协议为TCP的套接字进行网络通信,网络层协议为IPv4,需要用到的接口如下:实现服务器的接口有(socket、bind、listen、accept、read、write),实现客户端的接口有(socket、connect、write、read)。实现方式:因为网络通信的本质是进程间通信在云服务器上创建一个服务器进程和一个客户端进程,服务器进程先启动,然后让客户端链接到服务器上,至此客户端可以向服务器发送消息,并且服务器收到消息后可以给对方反馈信息。原创 2024-07-24 16:49:30 · 866 阅读 · 0 评论 -
Linux_实现UDP网络通信
在Linux下,实现传输层协议为UDP的套接字进行网络通信,网络层协议为IPv4,需要用到的接口有以下4个:socket、bind、recvfrom、sendto。具体实现方法:在云服务器上创建一个服务器进程和一个客户端进程,让客户端向服务器发送消息,并且服务器收到消息后可以反馈给对方。原创 2024-07-23 22:33:31 · 869 阅读 · 0 评论 -
网络编程套接字socket
网络编程中的套接字(socket)是实现网络通信的关键,换句话来说,套接字像两个端点,而发送方与接收方就是通过这两个端点进行通信的,socket的意思是插座,表示插头和插座连接上后,即发送方和接收方连接上了,然后把电流通过插座流向插头对标发送方与接收方建立了链接。原创 2024-07-23 16:54:35 · 997 阅读 · 0 评论 -
计算机网络通信基础概念
计算机网络通信是当代最重要的技术之一,它使得纵使相隔千里的两台计算机也能进行彼此通信,通信的本质是数据传递,网络通信即数据以网络为媒介传递给各个计算机。网络通信可以让全球计算机进行交流,全球计算机的硬件种类之多且操作系统各有所类,能够让这些彼此之间存在差异的计算机相互通信,最根本的原因就是让他们都遵守一个规则-网络协议。原创 2024-07-23 09:59:12 · 745 阅读 · 0 评论 -
Linux_实现线程池
在Linux下实现一个线程池,线程池就是创建多个线程,然后对这些线程进行管理,并且可以发放任务给到线程池,让线程池完成任务。原创 2024-07-20 11:24:53 · 828 阅读 · 0 评论 -
Linux_生产消费者模型
使用生产消费者模型的原因如下:生产消费者模型常用于多线程并发式执行流,该模型具有同步与互斥机制。该模型的核心点在于用一个容器作为生产者和消费者相互通信的桥梁,使得生产者和消费者不直接进行交互,降低了生产者与消费者之间的强耦合度。好处在于生产者生产数据后即使消费者不来拿这个数据,生产者也可以继续生产,并且后续生产的数据不会覆盖之前的数据,只有当容器满了,生产者才会阻塞。只要容器内有数据,消费者就可以从容器中拿数据,无需等待生产者一个一个的生产数据。原创 2024-07-19 18:29:05 · 850 阅读 · 0 评论 -
Linux_线程的同步与互斥
在Linux下,线程是一个很重要的概念,他可以提高多执行流的并发度,而同步与互斥是对线程的一种约束行为,比如当多个线程都访问同一个资源时,若不对该资源加以保护则会导致意料之外的错误。具体的保护措施是让线程访问共享资源时具有互斥性,即当一个线程访问时别的线程无法访问,通常用互斥锁来实现。而同步是为了让多个线程具有一定的顺序来访问共享内存,保障每个线程访问资源的机会是一样的。原创 2024-07-18 22:08:49 · 1098 阅读 · 0 评论 -
Linux_线程的使用
线程是操作系统进行调度的基本单位,他属于进程的子集。在Linux下,通过实现轻量化进程来实现线程,因此线程具有进程的相关特性,比如线程必须有自己的代码资源,有属于自己独立的数据空间,并且同一个进程下的线程所看到的地址空间是属于该进程的,因为创建线程实际上就是在该进程下创建task_struct结构体(该结构体的作用是方便操作系统对该执行流的调度),这些task_struct结构体跟进程共用空间资源,只不过线程可以在单一进程执行流的基础上实现多执行流并发式的运行代码,以至于提高cpu的效率。原创 2024-07-18 10:58:11 · 947 阅读 · 0 评论 -
Linux_进程信号
在Linux下,为了让正在运行的进程做出相应动作,通常会给该进程发送信号以达到目的。之所以对象事物能根据不同信号做出不同动作,是因为对象事物认识该信号,并且知道该信号对应的行为是什么,也就是说,进程认识信号并且清楚收到信号后该如何做,即信号的处理方式属于进程内置功能的一部分,并且进程收到信号到处理信号也存在时间窗口。原创 2024-07-15 20:22:26 · 960 阅读 · 0 评论 -
Linux_实现简易日志系统
在Linux下实现一个日志系统,该日志系统主要用于打印和记录程序的格式化信息,还可以对信息做分析处理,比如把信息分为五种类型:正常运行信息、测试信息,警告信息,错误信息、致命信息,当然还可以显示信息产生的具体时间,并且能够对这些信息进行存档归类。原创 2024-07-07 10:06:43 · 1062 阅读 · 0 评论 -
Linux_共享内存通信
在Linux下,有一种进程间通信方式(IPC)名为共享内存,他是IPC中通信最快的方式(通信方式为全双工),因为他直接在物理内存上创建一块区域并且映射在进程的地址空间中,使得进程使用共享内存就如同直接使用动态申请的空间,因此通信过程少了内核的系统调用步骤,以至于相比于其他IPC模式速度更快,不过也正是因为在通信时不受内核管辖,导致共享内存不具备同步互斥机制,因此需要用户手动处理同步互斥问题。原创 2024-07-05 21:53:36 · 683 阅读 · 0 评论 -
Linux_进程池
在Linux下,进程池表示把多个子进程用数据结构的方式进行统一管理,在任何时候都可以对进程池里的子进程进行任务发放,即进程池可以实现并发执行流,能够同时执行多个任务,相比于单进程单一执行流,进程池在处理多任务的效率上有了显著提升。原创 2024-07-04 20:48:15 · 1051 阅读 · 0 评论 -
Linux_管道通信
在Linux下有一种概念叫做管道,管道的作用是实现进程间通信功能,其本质是一个文件,该文件也被当成进程通信的缓冲区,即一个进程往缓冲区内写数据,另一个进程从缓冲区内读数据,这一过程称之为进程间通信。管道分为两种:匿名管道、命名管道,匿名管道只限于含亲缘关系的进程间通信,而命名管道可以让两个无亲缘关系的进程进行通信。原创 2024-07-03 16:49:40 · 929 阅读 · 0 评论 -
Linux_动、静态库
在Linux下大部分程序进行编译时,都会接触静态库或动态库,因此动静态库在Linux下是个很重要的概念,他们都是文件,其中静态库后缀是.a,动态库后缀是.so。动静态库里保存的是函数的具体方法,他们的不同点在于链接阶段时,静态库会把方法直接拷贝到程序中,而动态库会把方法加载到内存中,并且在可执行程序中记录了动态库在内存的地址,以便在运行时能够让可执行程序从内存中定位具体方法。原创 2024-06-30 19:48:24 · 685 阅读 · 0 评论 -
Linux_软硬链接
在Linux操作系统中,有软链接和硬链接,他们是一种特殊的文件引用,主要用于与目标文件建立链接关系从而生成新的链接文件,并且访问该链接文件就能访问目标文件,给用户提供了多种访问文件的途径,方便了用户的使用,合理使用软硬链接能够有效的提高系统的效率。原创 2024-06-23 15:56:11 · 1036 阅读 · 0 评论 -
Linux_内核缓冲区
Linux下的内核缓冲区存在于系统中,该缓冲区和用户层面的缓冲区不过同一个概念,用户层面的缓冲区称之为用户缓冲区,而系统中也有自己的缓冲区即内核缓冲区,两者虽然同为缓冲区却差之毫厘谬以千里,了解内核缓冲区前先谈谈用户缓冲区。原创 2024-06-22 17:18:15 · 1509 阅读 · 0 评论 -
Linux_文件IO
IO是Input/Output的首字母缩写,表示输入和输出,在Linux下一切皆为文件,使用文件无非只有读和写两种状态,即读对应Input,写对应Output,构成Linux下的基础IO。而对一个文件进行读写操作的前提是使用库函数、系统调用函数先打开文件,然后再进行一系列的文件操作,本文着重介绍这些接口的使用。原创 2024-06-21 20:42:10 · 1148 阅读 · 0 评论 -
Linux_进程控制
在Linux下,进程控制是操作系统对进程进行管理的功能,具体涉及到以下几个步骤:进程创建,进程终止、进程等待、进程替换,通过这些模块就可以将进程的功能运用极致,并且能够避免因错误操作而出现的进程异常问题。原创 2024-06-19 17:02:36 · 642 阅读 · 0 评论 -
Linux_理解进程地址空间和页表
每一个进程都有属于自己的进程地址空间,进程地址空间又叫虚拟内存、虚拟地址空间,从“虚拟二字”可以判断进程地址空间并不是真实的物理空间,他只是物理空间的一个映射表,具体是通过页表作为媒介来建立他们之间的映射关系,所以我们在程序中定义的一系列变量,这些变量的地址都只是该进程的进程地址空间上的地址数,并不是真实的物理地址数。原创 2024-06-17 23:01:05 · 1449 阅读 · 0 评论 -
Linux_环境变量
环境变量指的是在操作系统进行运行时,总是需要根据某些已经被加载好的参数进行运行的,因为操作系统运行也是得有“依据”的,而他的依据就叫做环境变量。原创 2024-04-26 14:20:07 · 987 阅读 · 2 评论 -
Linux_进程
在Linux下可以执行多条指令,原因就是指令被加载至内存中变成了进程,但事实上操作系统做了更多的事情,在指令被加载到内存中时,系统会创建一个描述该指令属性的结构体PCB,用来对应该指令。原创 2024-04-21 14:20:08 · 1298 阅读 · 1 评论 -
Linux开发工具
本文介绍的就是在Linux下进行开发时需要用到的工具,他们分别是vim(编辑器)、g++/g++(编译器)、Makefile(自动化构建工具)、gdb(调试器)以及git(版本控制)。原创 2024-04-16 16:22:16 · 936 阅读 · 1 评论 -
Linux权限的讲解
在Linux下虽然一切都是文件,但是由于文件的权限不一样,导致访问或更改文件存在局限性,文件有三种权限:r w x,分别对应‘读’,写‘,’执行‘,他们各自的作用如下:原创 2024-04-12 23:03:05 · 1067 阅读 · 1 评论 -
Linux_基础指令(二)
在Linux下有一句很经典的话叫做:一切皆为文件。本文着重介绍对普通文件的内容进行查看、修改、筛选的相关指令,以及查找普通文件和管道的使用场景。原创 2024-04-09 17:11:49 · 687 阅读 · 0 评论 -
Linux_基础指令(一)
Linux由林纳斯·托瓦兹于1991.10.5发布,是一款开放源代码的操作系统,在Linux下有一句很经典的话叫做:一切皆为文件。无论是设备还是文件都当作文件来看待,因此他有着统一的文件操作接口,即拷贝文件、添加文件、删除文件都需要命令行来进行,本文介绍的是最基础的命令行指令对文件的操作。原创 2024-03-17 22:16:56 · 1368 阅读 · 1 评论