自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (1)
  • 收藏
  • 关注

原创 tcp粘包问题

一、造成粘包的原因 我们常说tcp是一种流式连接,这里的“流”指的是数据向水流一样,并不区分数据包之间的界限。tcp协议允许发送端将几次发送的数据缓存起来合成一个数据包发送到网络上去,因此这样可以获得更多的效率,这一行为往往由操作系统中的socket提供,应用层对此毫无所觉。所以socket的send被调用发送数据时有可能不是立即发送,而是等待后续数据一起发送。 网络传...

2019-02-28 16:40:33 179

原创 僵死进程和孤儿进程的产生和处理

一、僵死进程的产生和处理1、僵死进程的产生      子进程先于父进程结束,这是需要父进程最子进程的pcb进行释放,如果父进程没有对已经结束的子进程进行pcb释放,那么该子进程就一直处于僵死状态,如果父进程运行一段时间也结束了,那还好办,init进程会接收这个僵死的子进程对其pcb进行释放,但是如果父进程一直循环,那么子进程就一直处于僵死状态。2、僵死进程的处理方式(1)将其父进程...

2019-02-27 16:43:39 549

原创 如何避免死锁

一、什么是死锁       死锁是指两个或两个以上的进程在执行过程中,因资源争夺而造成的一种相互等待的现象,若不做处理,它们将一直等待下去。例如:进程A和进程B,进程A运行在某一时刻需要进程B所持有的资源,进程B此时运行也需要A进程所持有的资源,因此进程A和进程B都等待对方释放资源,这就产生了死锁。  二、死锁产生的必要条件互斥条件:即某一资源在同一时刻只能被一个进程使用,如果其他进程...

2019-02-27 15:00:56 178

原创 http协议

一、什么是http协议       说起http协议,每个人张口就来:超文本传输协议,那么“超文本传输协议”究竟又是什么呢?http协议实际上是一个服务器和客户端的请求和应答标准。客户端是终端用户,服务器是网站。通俗来讲,我们使用谷歌、百度来进行访问就是依赖于http协议的。http协议标准了客户如何向服务器发送请求又如何得到回应。二、http协议的功能用于从www服务器传输超文本到本...

2019-02-26 22:36:13 1858

原创 线程同步的方法有哪些?

一、线程同步和线程互斥首先我们要清楚什么是线程同步和线程互斥:1、线程同步:线程同步指的是多个线程之间协调同步,按照预定的先后次序进行运行,这种先后次序取决于要完成的特定任务,最基本的场景就是:A线程要完成的任务依赖于B线程的数据。2、线程互斥:线程互斥是指对于线程共享的线程资源,在各个线程访问时具有排它性。当有若干个线程要访问同一共享资源时,任何时刻只允许一个线程进行访问,直到占有资源...

2019-02-26 20:41:00 6902

原创 结构体大小和类大小的计算

1、结构体大小的计算当为空结构体时,其大小为1 选取结构体中类型字节数最大的最为对齐符。注意:是最大的类型字节数,例如:int a[10],并不是以40作为对齐符 每次申请对齐符个字节大小的内存。 当内存不够时才继续申请。举例:struct A{ int a[10]; char b; double c;}//该结构体中最大的类型是double,所以对...

2019-02-26 18:19:50 1064

原创 虚函数的工作原理

    虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。编译器必需要保证虚函数表的指针存在于对象实例中最前面的位置(这是为了保证正确取到虚函数的偏移量)。    每当创建一个包含有虚函数的类或从包含有虚函数的类派生一个类时,编译器就会为这个类创建一个虚函数表(VTABLE)保存该类所有虚函数的地址,在每个带有虚函数的类 中,编译器秘密地置入一...

2019-02-26 18:14:30 568

原创 迭代器失效

1、顺序容器:vector和deque迭代器失效首先我们来了解一下vector和deque的扩容方式当声明迭代器的时候,并不会预开辟内存。 当向迭代器中加入第一个元素的时候,开辟1个单元内存 此后再添加元素,当内存填满之后,会重新分配一块更大的内存,将旧的数据和添加的数据放入新的内存块中,释放旧的内存块 扩容的内存大小根据不同的编辑器有所不同,一般是1.5倍或者2倍vector和d...

2019-02-24 12:19:46 162

原创 TCP连接释放为什么是四次挥手

首先我们看一下四次挥手的过程以及状态转换图1、为什么不是三次挥手?       其实上图中第二步和第三部是可以在一次报文中完成的,但是这种情况十分少见,只有当服务器街道客户端断开连接的请求的同时断开连接,此时服务器会将自己的确认号和序列号同时发送。因此我们不使用三次挥手的说法,尽管它真实存在。2、为什么不是五次挥手?       因为。。。。。。四次就够了,哈哈哈哈...

2019-02-22 22:21:06 946 1

原创 TCP拥塞控制

1、什么是拥塞?什么是拥塞控制       在计算机网络中的链路容量(即带宽)、交换机节点中的缓存和处理机等,都是网络的资源。在某段时间,若对网络中某一资源的需求超过了该资源提供的可用部分,网络的性能就会变坏。这种情况叫做拥塞。       简单来说拥塞产生的原因有以下两个:接收方容量不够 网络内部有瓶颈       所谓拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中...

2019-02-22 21:54:22 1233

原创 写时拷贝技术

       写时拷贝的主要思想是在复制原来实体的时候,如果复制后的实体不需要进行改变,那么实际上没必要进行实体内容的拷贝,只需建立一个引用指向原来的实体内存,直接应用原来的实体内容即可,只有当需要对复制后的实体进行修改的时候才进行内容的拷贝。       写时拷贝技术在很多方面都有应用,典型的有:C++中的写时拷贝技术 Linux中的写时拷贝技术一、C++中的写时拷贝技术    ...

2019-02-22 19:56:20 378

原创 TCP连接为什么是三次握手

首先我们来回顾一下tcp建立连接的过程1、为什么不是2次握手呢?防止客户端失效的连接请求报文段突然又传到服务器例如以下情况如果使用两次握手:如果客户端向服务器发送第一次连接请求在网络节点上滞留了,没有收到服务器的确认,于是又重新发送了一次连接请求 服务器收到客户端的第二次请求发送确认,则连接建立完成 服务器客户端进行数据传输,传输完成断开连接。 此时,在网络上滞留的客户端...

2019-02-22 16:48:48 764

原创 struct和class的区别

      C++中的struct已经不同于C语言中的struct,C++中的struct几乎和class具有相同的功能,差别十分细微,在C++语法上,class和struct主要有以下3点区别:1、默认继承权限struct默认的继承权限是public class默认的继承权限是private2、成员的默认访问权限struct默认的访问权限是public class默认的访问权限...

2019-02-22 16:13:18 193

原创 static

static在面向过程和面向对象设计中有不同的用法:在面向过程设计中的static应用于普通变量和函数,不涉及类 面向对象设计中的static主要说明static在类中的应用一、面向过程设计中的static1、静态全局变量在全局变量前加上static关键字,该变量就被定义成一个静态全局变量。特点:该变量在全局数据区分配内存 未经初始化的静态全局变量会自动初始化为0(非静态...

2019-02-21 22:36:28 225

原创 MVC编程模式

什么是MVC编程模式?MVC编程模式的构成MVC编程模式的优点一、什么是MVC模式?      MVC模式是软件工程中的一种软件架构模式,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里边,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。      而MVC编程模式是一种使用MVC设计模式创建web应用程序的模式。二、MVC编程模...

2019-02-21 21:07:11 488

原创 矩阵中的路径(回溯法)

题目描述:      请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。解题思路:      我们可以用回溯法解决这个问题。首先在矩阵中任选一个格子作为路径的起点。假设矩阵中某个格子的字符为ch,并且这个格子将对应于路径上的第i...

2019-02-20 22:57:10 242

epoll源码剖析

本文详细介绍了epoll的原理和Linux内核中如何实现epoll_create、epoll_ctl、epoll_wait.

2019-02-21

空空如也

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

TA关注的人

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