- 博客(11)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 C语言之线程邮箱
前言熟悉多线程编程的同学都知道,当我们为了避免资源竞争时,需要加锁和解锁,而频繁的加锁和解锁必定会造成资源的损耗和开销,所以线程邮箱应运而生。一、线程邮箱是什么?简单来说,线程邮箱就是模拟收发邮件的形式,使线程任务不在主动争抢共享资源,只是检查自己的“邮箱”看是否有别的任务对自己有资源的传递。二、线程邮箱的组成及构造构造:线程邮箱的基本组成是以链表的形式将每个线程任务串联起来,而每个节点中不仅要有自己线程所负责的任务还有自己的“邮箱”(以队列的形式),所以每个邮箱中待处理的任务节点需要包含发
2021-10-07 14:40:19
9180
原创 TCP/IP 十大盲点详解
一、TCP/IP模型TCP/IP协议族按照层次由上到下,层层包装。最上面的是应用层,这里面有http,ftp,等等我们熟悉的协议。而第二层则是传输层,著名的TCP和UDP协议就在这个层次。第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其他的数据以确定传输的目标。第四层是数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。而TCP/IP协议通信的过程其实就对应着数据入栈与出栈的过程。入栈的过程,数据发送方每层不断地封装首部与尾部,添加一些传输的
2022-04-26 16:13:28
956
原创 mmap内存映射原理(通俗易懂)
mmap内存映射的实现过程,总的来说可以分为三个阶段:(一)进程启动映射过程,并在虚拟地址空间中为映射创建虚拟映射区域1、进程在用户空间调用库函数mmap,原型:void*mmap(void*start,size_tlength,intprot,intflags, intfd,off_toffset);2、在当前进程的虚拟地址空间中,寻找一段空闲的满足要求的连续的虚拟地址3、为此虚拟区分配一个vm_area_struct结构,接着对这个结构的各个域进行了初始化4...
2021-10-11 01:56:27
1884
原创 数据结构——哈希表
哈希存储(散列存储) 多考虑查找经过特殊处理(哈希函数)映射到某一个位置上记录下的数据---->哈希函数(f(key))----->存储位置哈希冲突:当经过计算不能每个都完全散列存储好处:如果哈希冲突较少的话相比于数组寻找是有提高的(以O(1)复杂度)如何尽可能避免哈希冲突的产生:解决方法:1.开放地址法当经过计算映射到相同位置时,检测到这个位置已经存储到数据时,从这个位置向下去找没有存储数据的单元2.链地址法在哈希表中,不再进行原记录的一个存储,而是存储原纪录要存
2021-10-07 14:35:06
634
原创 数据结构——二叉树
树形结构:一对多概念:除了根节点以外,其它所有节点都只有一个前驱节点可以有多个后继节点叶子节点:只有前驱节点,没有后继节点其它的节点都叫做分支节点深度:描述树形结构分了多少层广度:每一个后继节点的个数一个树中某个节点的后继节点的个数最多则称之为这个树的广度森林:n个互不相交的树的集合二叉树:每一个节点的子节点个数不能超过两个且子节点的位置不能更改(二叉树分左右)左子节点和右子节点满二叉树:所有的叶子节点都处在同一层,且所有节点的度都为2满二叉树第k层有2的k-1次方个节点k..
2021-10-07 14:33:16
101
原创 数据结构——链表专项
数据结构的总结1.定义 一组用来保存一种或者多种特定关系的数据的集合(组织和存储数据) 程序的设计:将现实中大量而复杂的问题以特定的数据类型和特定的存储结构存储在内存中, 并在此基础上实现某个特定的功能的操作;程序 = 数据结构 + 算法 高内聚,低耦合2.数据与数据之间的关系数据的逻辑结构:数据元素与元素之间的关系集合:关系平等线性结构:元素之间一对一的关系(表,队列。栈。。。)树型结构:元素之间一对多的关系(二叉树)图形结构:元素之间多对多的关系(网状结构)数据的物理结构:...
2021-10-07 14:17:50
100
原创 数据结构——队列和栈
队列(类似与银行排队办业务)eg:当任务时两个任务运行速率不一样时采用队列(缓冲区)比如数据采集端和数据处理端插入叫做入队操作,删除叫做出队操作特性:先进先出(First In First Out)满足先进先出的特性只能进行头删和尾插有关链式队列的操作(标签节点定义三个变量1.pFront(指向队头)2.pRear(指向队尾)3.cLen(节点长度))1.创建一个队列2.入队3.出队4.清空5.判空6.获取队头元素7.销毁 线程邮箱:采用链表加队列的形式多线程通信时...
2021-10-07 14:07:47
150
原创 并发,同步,异步,互斥,阻塞,非阻塞的理解
1.1.9一个进程可以创建多少线程,和什么有关系统参数限制:虽然 Linux 并没有内核参数来控制单个进程创建的最大线程个数,但是有系统级别的参数来控制整个系统的最大线程个数。进程的虚拟内存空间上限:因为创建一个线程,操作系统需要为其分配一个栈空间,如果线程数量越多,所需的栈空间就要越大,那么虚拟内存就会占用的越多。1.2.1什么是线程同步和互斥同步:线程间的同步指的是多个任务(线程)按照约定的顺序相互配合完成一件事情。互斥:是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它
2021-10-07 13:52:33
261
原创 多进程多线程通讯
1.1.4多进程、多线程同步(通讯)的方法多进程:(1)管道:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。(2)有名管道:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。(3)信号量:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。(4)消息队列:消息队列是由.
2021-10-07 13:45:15
263
原创 进程线程基本概念
1.1进程与线程的基本概念1.1.1什么是进程,线程,彼此有什么区别进程:一个程序动态执行的过程,包括创建、调度、消亡。是cpu资源分配的基本单位。线程:是进程的一部分,位于进程内部,被称为轻量级进程,是cpu任务调度的基本单位。区别:地址空间和资源:进程拥有一个完整的0-4g的虚拟地址空间,每个进程资源独立,切换调度任务时资源开销大;线程没有独立的地址空间,栈空间独立,其余空间均与其他线程共享,其轻量,切换调度任务时效率更高。 通信:进程间通信IPC,较为复杂;线程间通...
2021-10-07 13:37:34
161
原创 网络编程知识概念整理
1.http是干什么的,中文名是什么,主要用在什么地方?http是从万维网服务器传送超文本到本地浏览器的传送协议超文本传输协议主要工作于客户端-服务端架构上浏览器作为http客户端通过url向web服务器发送请求,web服务器接收请求后向客户端发送响应信息2.http协议的特点(1)简单快速:只需要传请求方法和路径(2)灵活:允许传输任意类型的数据对象(3)无连接:每次连接只处理一个请求处理完后断开连接,采用这种方式可以节省传输时间(4)无状态:对于事物处理没有记忆能力,如果需要之前数据
2021-10-07 13:16:01
90
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人