![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
零声学院
文章平均质量分 70
ZRXSLYG
这个作者很懒,什么都没留下…
展开
-
epoll反应堆模型
参考 <https://blog.csdn.net/daaikuaichuan/article/details/83862311>参考 <https://www.bilibili.com/video/BV1iJ411S7UA>求职期间,还是得好好学习。看了大概的思路,自己理解着敲一下。和原来代码的有些地方不同。视频有提到,为什么反应堆模式要注册写事件,因为可能写缓存满了(对方接收窗口小了,接收不过来)。#include <stdio.h>#incl原创 2021-01-05 00:55:26 · 188 阅读 · 0 评论 -
网络编程6:网路同步请求和异步请求
客户端请求的时候,有同步请求与异步请求之分:同步请求,一个请求,等返回后,再继续之后的操作;异步请求,一个请求,不等待返回,继续做其他操作,有返回后有再进行操作。如何将同步请求,写成异步请求呢,比如说sql同步请求,http同步请求…以DNS请求为例借用这位巨佬写的DNS请求代码https://blog.csdn.net/mirkerson/article/details/5907955#include <stdio.h>#include <stdlib.h>#in原创 2021-02-27 21:35:39 · 256 阅读 · 0 评论 -
网络编程4:NAT与穿透
NAT概念网络地址转换。出口网关,将内网IP地址和端口,映射成不一样的公网IP地址和端口。NAT类型锥形NAT和对称NAT的区别是,客户端用同一个本地端口同时请求不同的外网服务器,锥形NAT用分配相同的端口号,对称NAT会分配不同的端口号。测试测试环境的网络拓扑结构代码server.c#include <stdio.h>#include <sys/socket.h>#include <netinet/in.h>#include <ar原创 2021-02-23 12:32:15 · 339 阅读 · 0 评论 -
学习笔记:Git
参考https://www.runoob.com/manual/git-guide/https://github.com/rogerdudler/git-guidehttps://docs.github.com/cn/free-pro-team@latest/github/authenticating-to-github/connecting-to-github-with-ssh零声学院创建仓库git init --bare xx.git #裸仓库, 远端仓库以git结尾, 也可以不用原创 2021-02-21 22:33:17 · 426 阅读 · 0 评论 -
网络编程3:反应堆与百万链接
epoll反应堆代码#include <stdio.h>#include <stdlib.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <sys/epoll.h>#include <string.h>#include <errno.h>#define BUFFER_LENGTH原创 2021-02-19 22:05:55 · 176 阅读 · 0 评论 -
学习笔记:编译与makefile
概念编译:把源代码翻译成机器语言的目标文件链接:把众多目标文件链接成可执行文件编译预处理gcc -E -o test.i test.c对伪指令(或预处理指令,以#号开头的代码行)和特殊符号进行处理宏定义,#define条件编译指令,#ifdef,#ifndef,#endif,#if,#else,#elif,#endif头文件,#include,预处理将头文件的定义加入到输出文件中!!!!只有这一步需要头文件!!!特殊符号,__FILE__,__LINE__,__DATE__,__STD原创 2021-02-12 21:04:54 · 187 阅读 · 0 评论 -
学习笔记:内存池
内存池解决了什么?减少内存碎片,提高分配效率几个概念内存页getconf PAGE_SIZE #4096, 4k虚拟内存和物理内存的映射,采用内存页的方式。既不同进程,虚拟内存地址相同,但是对应的物理内存地址不一样。4G内存,为每一个内存分配独一无二的编号,那么就需要2^32个数字,既是用32位长的二进制数表示,或者8位长的十六进制数表示。如果虚拟内存和物理内存的映射采用一一对应的映射关系,既是物理地址id = table[虚拟内存地址id],那么这个table也得2^32 * 地址id长原创 2021-02-12 21:03:37 · 151 阅读 · 0 评论 -
网络编程学习1:套接字socket
套接字的五元组{protocol,src_addr,src_port,dest_addr,dest_port}socket函数#include <sys/socket.h>int socket(int family, int type, int protocol);//成功返回非负数,失败返回-1//tcp family=AF_INET, type=SOCK_STREAM, protocol=IPPROTO_TCP/0//udp family=AF_INET, type=SOCK原创 2021-02-04 00:58:23 · 429 阅读 · 0 评论 -
定时器设计
定时器实现方案1、最小堆 二叉树,boost.asio??四叉树,golang??2、红黑树 nginx定时器3、时间轮 skynet存储什么内容:过期时间戳 + callback案例:一个链接10秒钟没有收到数据(心跳包),那么服务端就断开这条链接...原创 2021-01-29 12:29:14 · 297 阅读 · 0 评论 -
1.4 布隆过滤器
布隆过滤器是一种概率型数据结构,能明确告知某个字符串一定不存在或者可能存在,直观说是hashset,不存储key,通过k个hash值,存储k个标志位,k个标志位均为1,表示可能存在;否则一定不存在。布隆过滤器解决的问题是,海量数据查找。红黑树的需要key比较和存储key;哈希表的存储key,以及碰撞后的key比较。所以需要尝试探寻不存储key的方案,并且拥有哈希表的优点(不需要比较字符串)。布隆过滤器优点:需要存储空间小;不需要比较,查询快。布隆过滤器缺点:不支持删除操作;key有...原创 2021-01-27 21:12:08 · 167 阅读 · 0 评论 -
1.1 排序算法与kmp算法
冒泡排序void bubbleSort(int *nums,int numsSize){ int i,j,k,flag; for(i=0;i<numsSize;i++){ flag = 0; for(j=0;j<numsSize-i-1;j++){ if(nums[j]>nums[j+1]){ k = nums[j]; nums[j] = nums[j+1]; nums[j+1] = k; flag = 1; } } i原创 2021-01-26 01:31:39 · 238 阅读 · 0 评论 -
1.2 红黑树 学习笔记
参考:https://www.jianshu.com/p/84416644c080参考:零声学院课程原理不说了。。。插入的三种情况注意需要说明的是,写代码一般是将情况三转换为情况二(以B为中心,左旋)删除的四种情况(只涉及删除黑节点的情况,其他情况很简单的)注意需要说明的是,写代码一般是将情况二转换为情况三(以B为中心,右旋)代码等等再放上来.........原创 2021-01-15 20:24:09 · 255 阅读 · 1 评论