自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 TCP并发服务器

UDP:单循环服务器,服务器同一时刻只能响应一个客户端的请求TCP:并发服务器,服务器同一时刻只能响应多个客户端的请求。

2025-03-10 21:30:22 1017

原创 HTTP协议

(HyperText Transfer Protocol)应用层协议,它定义了万维网客户端如何想万维网服务器请求万维网文档,以及服务器怎样把文档传给客户端。统一资源定位符,表示从因特网上得到的资源位置和访问这些额资源的方法。<协议>://<主机>:<端口>/<路径>2)客户端向服务器发送HTTP请求报文。3)服务器向客户端发送HTTP响应报文。浏览器与服务器之间的通信标准,端口号80。响应报文:状态行、消息报头、响应正文。请求报文:请求行、消息报头、请求正文。

2025-03-09 15:17:25 230

原创 TCP协议

TCP: 传输控制协议(Transmission Control Protocol),传输层协议之一(TCP,UDP)

2025-03-09 15:07:07 474

原创 UDP协议

无连接尽最大努力交付(不安全,不可靠(丢包、乱序))面向数据报机制简单,传输效率高应用场景:要求实时性高,但是允许数据丢失的场合(直播,VNC)

2025-03-09 14:47:04 724

原创 Linux网络编程

进行不同主机的进程间通信解决硬件与软件的互联互通主机-->交换机-->路由器-->广域网-->路由器-->交换机-->主机IP地址:区分不同主机MAC地址:计算机硬件地址端口号:区分主机上的不同进程应用层:要传输的数据信息,如文件传输,电子邮件等表示层:数据加密,解密操作,压缩,解压缩会话层:建立数据传输通道传输层:传输的方式 --->UDP TCP 端口号网络层:实现数据路由 ---> 路由器 ip数据链路层:封装成帧,点对点通信(局域网内通信),差错检测 交换机 A

2025-03-09 14:31:20 831

原创 线程的控制

互斥现象:多线程共同访问临界资源时,存在资源竞争,容易造成数据错乱临界资源:多个线程可以同时操作的资源空间(全局变量、共享内存)解决方法互斥:多个线程访问临界资源时,进行排他性访问(同一时刻只允许一个线程对该临界资源进行访问)

2025-03-02 16:51:26 744

原创 认识TCP协议和UDP协议

UDP是 User Datagram Protocol 的缩写,即用户数据报协议。UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。并且它是将应用程序发来的数据在收的那一刻,立即按照原样发送到网络上的一种机制。传输层协议无连接不可靠传输面向数据报。

2025-03-02 16:45:18 182

原创 多任务并行——线程

轻量化的进程,每一个线程都属于进程进程是操作系统资源分配的最小单元线程是CPU任务调度的最小单元由于线程是一个轻量级的进程,所在进程为其分配独立的栈区空间线程是一个任务执行的过程,包括创建、调度、消亡。

2025-02-24 21:09:53 609

原创 进程间通信1——管道、FIFO

首先了解几个名词:1. 进程隔离进程隔离是为保护操作系统中进程互不干扰而设计的一组不同硬件和软件的技术。这个技术是为了避免进程A写入进程B的情况发生。进程的隔离实现,使用了虚拟地址空间。进程A的虚拟地址和进程B的虚拟地址不同,这样就防止进程A将数据信息写入进程B。2.虚拟地址空间就32位系统而言,当创建一个进程时,操作系统会为该进程分配一个 4GB 大小的虚拟进程地址空间。之所以是 4GB ,是因为在 32 位的操作系统中,一个指针长度是 4 字节,而 4 字节指针的寻址能力是从,最大值。

2025-02-22 22:08:48 864

原创 多任务并行-进程2

退出状态,终止的进程会通知父进程,自己使如何终止的。任何情况下,父进程都能使用wait,waitpid获得这个状态,以及资源的回收。孤儿进程:父进程先消亡,由该父进程产生的子进程成为孤儿进程,将会被系统进程所收养(守护进程)execv,execvp,execve,需要构造一个参数指针数组,然后将数组的地址传入。2)如果一个子进程终止,正在等待的父进程则获得终止状态,获得子进程的状态后,立刻返回。是一个指向以空字符结尾的字符串的指针,该字符串包含要在操作系统的命令行中执行的命令。

2025-02-22 09:12:21 871

原创 多任务并行-进程

非抢占式多任务:由调度程序来决定什么时候停止一个进程的运行(如时间片结束时),以便其他进程得到执行机会。子进程复制父进程的0到3g空间和父进程内核中的PCB,但id号不同。5)一个程序可以运行多次,变成多个进程, 一个进程可以运行一个或多个程序。(2) 进程:是一个程序动态执行的过程,包括创建、调度、消亡(动态的)克隆的进程称为子进程,原有的进程称为 父进程。正在执行的程序(动态),需要消耗内存和CPU,是一个动态执行的过程。父进程:创建新进程的进程称为新进程的父进程。获得调用该函数进程的父进程pid号。

2025-02-21 09:36:16 780

原创 Linux高级编程4-目录IO

成功:返回所读文件具体内容的结构体指针(地址)name:需要打开的目录名称。dirp:指向目录流的指针。dirp:指向目录流的指针。功能:打开一个目录,并获得一个目录流指针。chomd +/-r 目录名。chomd +/-x 目录名。成功:返回目录流指针。chomd +/-w 目录名。3.关闭目录 closedir。1.打开目录 opendir。功能:读取目录中一个文件信息。chomd 八进制 目录名。pwd获得当前目录绝对路径。功能:获取当前工作路径。功能:创建一个文件夹。

2025-02-20 17:21:37 338

原创 Linux高级编程3-文件IO

文件IO:系统调用--->Linux内核提供的文件操作接口。

2025-02-18 09:05:43 1072

原创 linux高级编程2

size_t功能:函数从指定的内存位置开始,将一块数据写入到指定的文件流中。参数:ptr:指向要写入文件的数据块的指针size:要写入的每个数据项的大小(以字节为单位)nmemb:x写几份stream:被写入的文件返回值:成功:返回成功写入的数据项的数量失败:返回一个小于 nmemb 的值功能:函数从指定的文件流中读取数据块到内存中。参数:ptr:指向要写入文件的数据块的指针size:要写入的每个数据项的大小(以字节为单位)nmemb:被写几份stream:被写入的文件。

2025-02-15 18:41:41 701

原创 linux高级编程1

保存数据(存放在外存掉电不丢失数据、便宜、访问速度慢、存储量大)linux下一切皆文件:鼠标、键盘,显示器……硬件设备 (第一个字母为文件类型)

2025-02-15 09:04:40 1078

原创 数据结构6-二叉树(及算法回顾)

树:由n个节点组成的有限集有一个根节点;其他节点只有一个前驱节点,但可以有多个后继节点。根:无前驱,有后继n=0,空树叶子结点(终端结点):有前驱结点、无后继结点分支结点(非终端结点):有前驱结点,有后继结点度:深度:树的层数广度:树中最大结点的度就是树的广度结点的度:当前结点的后继结点个数二叉树:树的度为二,且左右子树不可交换位置满二叉树:在不增加层数的前提下,无法再增加一个结点满二叉树第K层结点个数:2^(K-1)K层满二叉树结点总个数:2^K-1。

2025-02-14 09:41:25 1238

原创 数据结构5-(队列与哈希存储)

将要存储的数据的关键字和数据的存储位置之间建立关系,存储数据时,按照函数关系寻找存储位置;数据查找时,根据关键字进行函数映射得到数据的存储位置。数据通过哈希函数的操作,映射到同一地址指针数组是一个数组,其数组元素都是指针类型。一般定义形式为 数据类型 *数组名[数组长度] ,如 int *ptr_array[5] ,表示一个包含5个指向 int 类型数据的指针的数组。数组指针是一个指针,它指向一个数组。

2025-02-12 09:33:23 1465

原创 数据结构4

今天我们提到的栈结构,是指一种线性的数据结构,由用户对栈区进行操作处理。栈:只允许从一端进行数据的插入和删除的线性存储结构。无论是栈结构与栈区,只要是栈均遵循FILO,即先进的后出、后进的先出。

2025-02-11 09:19:52 514

原创 数据结构3

可以返回指向局部变量的指针:注意,如果返回指向局部变量的指针,必须确保这些局部变量使用 static 声明(否则局部变量会在函数返回后被销毁)。普通链表:结构简单,易于实现,适用于大多数用户级应用,但在性能和内存管理上有所限制,特别是对于需要频繁访问和操作大量数据的情况。不够直观:相比普通链表,内核链表的操作需要使用宏,且节点本身并不直接包含数据,可能需要更多的间接操作来获取实际数据。高效的链表操作:内核链表提供了一组优化的操作宏,避免了频繁的内存分配和释放,适用于内核的高性能要求。

2025-02-10 09:42:41 649

原创 数据结构2

单向链表 = 数据域 + 指针域 以结构体的形式实现。格式 valgrind ./app。用来查找程序是否有内存泄漏,*valgrind的使用。查找中间节点(快慢指针)根据查找情况修改内容。

2025-02-08 12:16:28 411

原创 数据结构1

程序的设计:将现实中大量而复杂的问题以特定的数据类型和特定的存储结构存储在内存中,并在此基础上实现某个特定的功能的操作;图形结构:元素之间多对多的关系(网状结构)散列存储(哈希存储):将数据元素的存储位置与关键码之间建立确定对。一组用来保存一种或者多种特定关系的数据的集合(组织和存储数据)树型结构:元素之间一对多的关系(二叉树)(2)数据的物理结构:数据的逻辑结构在计算机内存中的存储形式。(1)数据的逻辑结构:数据元素与元素之间的关系。*线性结构:元素之间一对一的关系(数组,链表,队列,栈)

2025-02-06 21:06:35 245

空空如也

空空如也

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

TA关注的人

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