- 博客(9)
- 收藏
- 关注
原创 服务器百万(C1000K)并发实现
目录什么是并发量?C10K, C1000K, C10M是什么意思服务端怎么区分客户端的socket?开始调试客户端代码服务端代码问题1问题2问题3file-max和open files的区别问题4问题5问题6优化连接速度 什么是并发量? 同时承载客户端的数量。承载是在连接的基础上200ms内能不能对数据库、网络带宽、内存操作、日志等进行操作返回给客户端。 C10K, C1000K, C10M是什么意思 首字母 C 是 Client 的缩写,C10K是处理1万客户端, C1000K是处理100万客户端, C1
2021-05-24 08:18:41
641
1
原创 websocket
一.websocket是什么 关系图 1.和HTTP一样基于TCP传输数据,都是应用层协议 2.HTML5提供的全双工通信的协议,一开始的握手需要HTTP请求完成。而HTTP是单向协议。 二.为什么要用websocket 因为HTTP协议是非持久化、单向的、只能由客户端发起的网络协议,每隔一段时间向服务器发送请求直到收到请求,通常HTTP的头部非常长,往往传输一点数据而要加上大量的头部信息。 websocket只需通过HTTP进行握手的动作,就可以持久传输 三.应用场景 即时通信、网页聊天、弹幕信息 四.
2021-05-23 12:05:31
434
原创 reactor原理
Reactor 释义“反应堆”,是一种事件驱动机制。 把epoll的事件处理流程逆置,把对应的回调函数注册到Reactor,当事件发生时,Reactor调用回调函数函数。 Reactor 模式是处理并发 I/O 比较常见的一种模式,用于同步 I/O,中心思想是: 1.先注册的相应 I/O 事件分发到对应的处理器中 2.将所有要处理的 I/O 事件注册到一个中心 I/O 多路复用器上,同时主线程/进程阻塞在多路复用器上; 3.一旦有 I/O 事件到来,多路复用器从事件处理器获取相应函数调用 接下来从epol
2021-05-23 12:02:46
502
原创 网络IO模型
目录网络五元组socket是什么?五种 IO 网络模型1.阻塞IO(blocking IO)TCP和UDP服务端代码TCP和UDP客户端代码(需要指定IP地址)2.非阻塞IO(**non-blocking IO**)TCP/UDP服务端代码3.异步 IO(Asynchronous I/O)4.信号驱动 IO(signal driven I/O, SIGIO)UDP服务端代码1.信号如何保存到进程里面?2.进程的信号集合如何保存在哪里?3.信号如何发送5.多路复用 IO (IO multiplexing )
2021-05-23 12:01:55
286
原创 KMP算法(看一遍解决)
目录简介暴力算法算法原理排序过程为什么要用KMP算法KMP算法算法原理排序过程 简介 KMP算法主要用于查找字符串 KMP 算法是 D.E.Knuth、J,H,Morris 和 V.R.Pratt 三位神人共同提出的,称之为 Knuth-Morria-Pratt 算法,简称 KMP 算法。该算法相对于 Brute-Force(暴力)算法有比较大的改进,主要是消除了主串指针的回溯,从而使算法效率有了某种程度的提高。 暴力算法 讲KMP算法之前,我们要先讲暴力算法 算法原理 暴力算法就是在一段文字中一个一个的匹
2021-01-27 12:46:59
1271
8
原创 快速排序
基本思想 1.从数列中取一个数做哨兵(默认第一个数) 2.从左到右找到一个比哨兵大的数放到右边,再从右到左找到一个比哨兵小的数放到左边 3.以哨兵为分界线,进行分组 4.每个分组接着1.2.3循环,直到每个分组只有一个数 排序过程 C语言实例 //第一个参数是数组,第二个参数的数组左指针,第三个参数是数组的右指针 int sort(int *data, int left, int right) { if (left >= right) return 0; //直到分组只有一个数,就是排序
2021-01-25 21:12:49
156
1
原创 冒泡排序及其优化
基本思想 冒泡排序是将一组数字从第一个数开始到第(m(数组长度)-k(循环次数)-1)数,一直与后一位数进行比较(从小到大排序),大的数放后一位,小的数放前一位,总共循环m(数组长度)-1次。 排序过程 C语言实例 //data是排序的数组,length是数组长度 int BubbleSort(int data[], int length) { int i, j; for(i = 0;i < length - 1;i ++) { //循环(length - 1)
2021-01-20 01:24:35
225
1
原创 shell(希尔) 排序
shell(希尔)排序是一种插入排序算法,它出自D.L.Shell,因此而得名。Shell排序又称作缩小增量排序。 shell(希尔)排序是面试出现次数较多且较难理解的,是插入排序的改进版,排序效率更快。 算法描述 1.先将一组数组分成m组(m为2的n次方,n为分组次数) 2.依次对每个分组对应的第1,2,3…元素形成插入排序 第一次排序 有6(元素总数/m)组插入排序: 23,53 64,71 87,57 12,97 9 ,24 16,79 第二次排序 有3(元素总数/m)组插入排序 23,12,53
2021-01-17 23:45:51
428
1
原创 插入排序
基本思想: 插入排序是将一组数字从第二个数开始,一直让该数字与前面的数依次进行比较(以从小到大排序为例),找到比它小的数,然后插入到该数的后面,一直循环直到遍历完整个数字串,就算完成了插入排序。 举例: 下图为一组数字 排序过程如下: 第二个数开始与前面的数依次进行对比,若前面的数比它大,则把它从数组中取出,把该数前面的数组依次向后移一位,直到找到该插入的位置,依次遍历整个数组 C语言实例: int i = 0,j = 0; for(i = 1;i < length;i ++) {
2021-01-17 20:54:01
174
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人