- 博客(38)
- 收藏
- 关注
转载 【RoaringBitmap】详解
以一个“40亿个数据是4个字节的unsigned int 型的数据”为例。1.直接存储。2.采用位图(bitmap)存储。40亿个数据都是位于[0, 2^32 - 1],每一位指的是一个bit位,而1byte(1字节)是8个bit,2^32bit = 2^29byte = 219kbyte=29Mb=512Mb;如果数据很稀疏,例如:统计某个应用的用户数,用户id范围为[0, 2^32 - 1],如果只有几个用户在线时,还需要开辟512M的存储空间,那么浪费就大了。
2023-07-11 11:48:19
1383
原创 计算机网络(8) ——url-页面过程、DNS寻址、劫持专题
计算机网络(8) ——DNS寻址、劫持专题文章目录计算机网络(8) ——DNS寻址、劫持专题1.DNS寻址过程?2.DNS劫持2.1什么是DNS劫持3.1DNS挟持的方法计算机网络(8) ——DNS寻址、劫持专题1.DNS寻址过程?就是通过域名,在DNS服务器中查找到对应ip,最终发送给服务器去请求。①根据URL域名在浏览器自身缓存中查找对应ip;②否则,在本地host文件查找;③否则,在本地DNS解析器缓存中查找;④否则,在本地DNS服务器查找;⑤否则,在DNS公网上查询有效ip。.
2022-05-31 14:15:12
635
原创 计算机网络(7) ——惊群现象
计算机网络(7) ——惊群现象文章目录计算机网络(7) ——惊群现象1.什么是惊群2.accept()惊群3.epoll惊群4.解决思路计算机网络(7) ——惊群现象1.什么是惊群举一个很简单的例子,当你往一群鸽子中间扔一块食物,虽然最终只有一个鸽子抢到食物,但所有鸽子都会被惊动来争夺,没有抢到食物的鸽子只好回去继续睡觉,等待下一块食物到来。这样,每扔一块食物,都会惊动所有的鸽子,即为惊群。对于操作系统来说,多个进程/线程在等待同一资源时,也会产生类似的效果,其结果就是每当资源可用,所有的.
2022-05-29 22:05:01
557
原创 计算机网络(6) ——同步IO/异步IO专题
计算机网络(6) ——同步IO/异步IO专题文章目录理解性记忆计算机网络(6) ——同步IO/异步IO专题1.同步IO2.异步IO理解性记忆计算机网络(6) ——同步IO/异步IO专题1.同步IO在一个线程中,一旦遇到IO操作,如读写文件、发送网络数据等,就需要等待IO操作完成,完成后才能继续进行下一步操作。这种情况称为同步IO。那么问题来了。如果只有这一个线程,且它正在IO阻塞中ing,那么其他位置的代码就无法执行了。所以我们首先的解决方案就是:引入多线程!让其他的线程去执行别处的代.
2022-05-29 21:38:44
968
原创 计算机网络(5) ——OSI七层、TCP/IP四层模型专题
计算机网络(5) ——OSI七层、TCP/IP四层模型专题文章目录计算机网络(5) ——OSI七层、TCP/IP四层模型专题1.OSI七层模型2.TCP/IP四层模型计算机网络(5) ——OSI七层、TCP/IP四层模型专题先借一张图:1.OSI七层模型(1)物理层(在四层模型里面已经合并到了数据链路层)建立、维护、断开物理连接。(由底层网络定义协议)机械、电子、定时接口通信信道上的原始比特流传输。(2)数据链路层进行硬件地址寻址、差错校验 [3] 等功能。(由底层网络定义协议)协.
2022-05-29 15:18:52
182
原创 计算机网络(4) ——零拷贝专题
计算机网络(4) ——零拷贝专题文章目录计算机网络(4) ——零拷贝专题1.内核空间和用户空间2.进程上下文切换3.缓存IO(1)mmap+write实现拷贝(2)sendfile实现零拷贝4.IO复用模拟计算机网络(4) ——零拷贝专题1.内核空间和用户空间虚拟内存被操作系统划分成两块:内核空间和用户空间,内核空间是内核代码运行的地方,用户空间是用户程序代码运行的地方。当进程运行在内核空间时就处于内核态,当进程运行在用户空间时就处于用户态。划分原因:内核与业务解耦。内核空间的代码主要管理.
2022-05-29 14:44:59
137
原创 17_TCP C/S模型引入(加循环)
17_TCP C/S模型引入(加循环)文章目录17_TCP C/S模型引入(加循环)1.套接字 socket2.三次握手过程17_TCP C/S模型引入(加循环)tcp特点:面向连接的 可靠的 流式服务 udp:无连接 不可靠 数据报服务1.套接字 socket软件层面,进行数据的收发ip+port ip地址+端口 组成一个套接字的地址通用套接字结构struct sockaddr (ipv4专用的是struct sockaddr_in)创建套接字指定服务类型:tcp SOCK.
2022-05-28 22:42:33
91
原创 16_TCP C/S模型引入
16_TCP C/S模型引入文章目录16_TCP C/S模型引入1.网络基础概念2.网络分层3.套接字 socket16_TCP C/S模型引入1.网络基础概念网卡:在网络上收发数据1.什么是网络?多个主机连接起来构成网络2.什么是互联网?把多个网络连接起来就构成互联网3.IP地址 ipv4, ipv632位,每8个位一个字节,一个字节范围0-255MAC物理地址 48位4.端口号 port 短整型short在一台主机上标识一个进程/应用程序,相当于一个代号知名端口:1024.
2022-05-27 22:50:12
98
原创 15_线程、生产者消费者模型
15_线程、生产者消费者模型文章目录15_线程、生产者消费者模型1.线程举例2.生产者消费者模型3.线程安全15_线程、生产者消费者模型线程的实现 用户 内核 组合Linux 内核级1.线程举例举个栗子:Eg:三个线程分别打印ABC,设三个信号量上锁,使得ABCABCABC…x.c:2.生产者消费者模型思想:设置空的数量sem_empty和满的数量sem_full,当判断不为空时,生产者sem_wait(sem_empty)并上锁,然后写入操作,写完解锁并sem_pos.
2022-05-27 11:15:53
117
原创 14_消息队列msg、线程
14_消息队列msg、线程文章目录14_消息队列msg、线程1.消息队列2.线程14_消息队列msg、线程1.消息队列消息队列写入一次,存放一个,排排站。其中数据的type不同,可以取不同type的数据。举个栗子:Eg:a添加消息队列,b读取消息队列a.c:行号注释20设置消息类型,>=1b.c:行号注释21第四个参数是获取的消息队列的类型,0表示所有类型都可获取如果./a三次,就表示在消息队列写入三个hello1,.
2022-05-27 11:07:55
187
原创 13_信号量sem、共享内存shm
13_信号量sem、共享内存shm文章目录13_信号量sem、共享内存shm1.信号量 sem2.共享内存shm13_信号量sem、共享内存shm1.信号量 sem一般取正数值,值代表资源的数据,0,1二值信号量,3计数信号量P 对信号量的值 原子减一 代表获取资源信号量值=0时代表没有可用资源了,那么p操作阻塞V 对信号量的值 原子加一 代表释放资源临界资源:同一时刻只允许一个进程访问的资源 临界区:访问临界资源的代码段同步内核提供接口:semget,semctl,se.
2022-05-26 23:03:18
521
原创 数据库(2) ——事务
事务管理(ACID)①原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。②一致性(Consistency)事务发生前后在整体上必须保持逻辑一致性。③隔离性(Isolation)事务是独立单位,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。④持久性(Durability)持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的。...
2022-05-26 22:48:45
143
原创 计算机网络(3)
计算机网络(3)文章目录计算机网络(3)34.UDP是不可靠传输,为什么还有很多人在用(UDP的优点)?UDP的使用场景有哪些?35 DNS寻址过程?计算机网络(3)34.UDP是不可靠传输,为什么还有很多人在用(UDP的优点)?UDP的使用场景有哪些?我们知道TCP就是为了解决IP层不可靠的传输层协议,既然UDP是不可靠的,为什么不直接使用IP协议而要额外增加一个UDP协议呢?①一个重要的原因是IP协议中并没有端口(port)的概念。IP协议进行的是IP地址到IP地址的传输,这意味者两台计算.
2022-05-26 22:46:49
117
原创 空白区学习
空白区学习文章目录空白区学习1.服务器中Time-Wait状态过多,原因?如何解决?2.HTTP 2.0多路复用 原理?3.二叉树持久化存储(序列化和反序列化)4.Undolog、redolog、bin log执行顺序5.同源策略?跨域?如何解决跨域?6.面向对象、面向过程区别?7.《Redis系列》7.1 什么是Redis?7.2分布式锁?7.3 redis为什么快?7.4缓存雪崩?7.5缓存穿透?7.6缓存一致性?待更新--空白区学习1.服务器中Time-Wait状态过多,原因?如何解决?原.
2022-05-26 22:45:57
196
原创 数据库(1) ——SQL & 索引
数据库(1) ——SQL & 索引文章目录数据库(1) ——SQL & 索引1.介绍一下SQL中的聚合函数2.表跟表是怎么关联的?2.1内连接:2.2外连接:3.谈谈你对SQL注入的理解4.WHERE和HAVING有什么区别?4.1 WHERE4.2 HAVING5.说一说你对MySQL索引的理解5.1理解5.2索引优点5.3索引缺点6.主键索引与唯一索引的区别?7.索引有哪几种?8.MySQL怎么判断要不要加索引?/所有字段都适合创建索引吗?9.只要创建了索引,就一定会走索引吗?10.
2022-05-25 21:52:55
193
原创 C/C++(5) ——STL基础篇(一)
C/C++(5) ——STL基础篇(一)文章目录C/C++(5) ——STL基础篇(一)1.请你讲讲STL有什么基本组成2.说说STL中map/hashtable/unordered_map、deque、list的实现原理2.1 map实现原理2.2 hashtable/unordered_map(也称散列表,直译作哈希表)实现原理2.3 deque实现原理2.4 list实现原理3.STL 容器用过哪些,查找的时间复杂度是多少,为什么?3.1 vector3.2 deque3.3 list3.4 m.
2022-05-23 16:24:51
559
原创 C/C++(4) ——C++内存
C/C++(4) ——C++内存文章目录C/C++(4) ——C++内存1.简述C++的内存管理1.1内存分配方式:1.2常见的内存错误及其对策:2.程序有哪些section,分别的作用?C/C++(4) ——C++内存1.简述C++的内存管理参考回答1.1内存分配方式:在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。栈,在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。堆,就是那些由new分配的内存块,.
2022-05-23 15:45:55
244
原创 12_有名无名管道、dup2()
12_有名无名管道、dup2()文章目录12_有名无名管道、dup2()1.进程间通信IPC2.管道2.1有名管道2.2无名管道3.dup()3.1dup2() 例13.2dup2() 例212_有名无名管道、dup2()1.进程间通信IPC管道 信号量 共享内存 消息队列 套接字ps -ef | grep “bash” //查找ps -ef,并放入管道,grep查找关键字”bash”2.管道①必须两个进程同时打开,一读一写②打开管道open 阻塞③写入数据write 管道.
2022-05-22 22:22:09
261
原创 11_信号SIGINT,SIGCHLD
11_信号SIGINT,SIGCHLD文章目录11_信号SIGINT,SIGCHLD1.SIGINT 举例1.1(signal和信号^C)1.2(运行./mykill 进程号 快捷键说明号)2.SIGCHLD 举例11_信号SIGINT,SIGCHLD名代号意义SIGINT2代表^C,提前终止SIGCHLD17代表子进程结束时1.SIGINT 举例1.1(signal和信号^C)vi main.c:行号注释22默认^C功能,提前.
2022-05-22 21:58:31
428
原创 10_进程替换-execv
10_进程替换-execv文章目录10_进程替换-execv1.完善上一节fork()+exec:2.mybin中实现ls功能10_进程替换-execv~/lesson10/mybin里面去增添命令。让~/lesson10/mybash只能去执行mybin里的命令(ls等)(因为mybash里面设置了PATH=”/home/stu/c213/lesson10/mybin”固定路径,每个输入的指令最终都会在PATH中去找,PATH中存在的才会去执行),此时程序只能调用mybin里面设置好的命令,此.
2022-05-22 21:42:48
193
原创 C/C++(3) ——基本语言(三)
C/C++(3) ——基本语言(三)文章目录C/C++(3) ——基本语言(三)n.Lambda表达式参数捕获C/C++(3) ——基本语言(三)n.Lambda表达式参数捕获类型作用[val]以值传递的方式捕获变量val[=]表示值传递方式捕获所有父作用域的变量(包括this)[&var]表示引用传递捕捉变量var[&]表示引用传递方式捕捉所有父作用域的变量(包括this)[=, &][=,&a,&b.
2022-05-22 21:31:00
541
1
原创 智能指针篇 ——复刻
智能指针篇 ——复刻文章目录智能指针篇 ——复刻1.myunique -unique_ptr智能指针篇 ——复刻1.myunique -unique_ptr//复刻unique_ptr //功能: //删除拷贝构造和等号运算符构造, //构造,析构, //右值拷贝构造和右值等号运算符构造,relese(),reset(), //get(),*,->, //获取删除器类型,交换指针 //[](选) template<typename _Ty> class De.
2022-05-19 21:13:51
101
原创 C/C++(2) ——基本语言(二)
C/C++(2) ——基本语言(二)文章目录C/C++(2) ——基本语言(二)10.为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数?11.请你来说一下C++中析构函数的作用12.请你来说一下静态函数和虚函数的区别13.请你来说一说多态性13.1静态多态13.2动态多态14.你理解的虚函数和多态?15.请你说一说strcpy和strlen16.++i和i++的实现17.如何在只修改一个字符的前提下,使代码输出20个hello?18.以下四行代码的区别是什么?19.C++里是怎么定义常.
2022-05-19 15:36:39
232
原创 C/C++(1) ——基本语言(一)
C/C++(1) ——基本语言(一)文章目录C/C++(1) ——基本语言(一)1.static关键字的作用2.C++和C的区别3.C++中四种cast转换3.1 const_cast3.2 static_cast3.3 dynamic_cast3.4 reinterpret_cast万能转化4.C/C++ 中指针和引用的区别?5.三角形,思路+手撕6.讲讲C++智能指针6.1 auto_ptr(c++98的方案,cpp11已经抛弃)6.2 unique_ptr(替换auto_ptr)6.3 sh.
2022-05-19 14:10:16
627
1
原创 9_进程替换-execvp
9_进程替换-execvp文章目录9_进程替换-execvp1.fork()+execvp() 改进上一章9_进程替换-execvp1.fork()+execvp() 改进上一章execvp()注释:行号注释17如果uid=0,表示为管理员,用“#”,普通用户是“$”20找到该uid对应的数据结构,用指针p指向它17如果uid=0,表示为管理员,用“#”,普通用户是“$”20找到该uid对应的数据结构,用指针p指向它29hostn.
2022-05-18 22:57:00
234
原创 8_进程替换execlp
8_进程替换-execlp文章目录8_进程替换execlp1.父子进程和open线1.1先open再fork (abcd)1.2先fork再open(abab)2.exec系列介绍3.fork()+execlp8_进程替换execlp1.父子进程和open线1.1先open再fork (abcd)【注意】:是大写字母O_不是0_1.2先fork再open(abab)2.exec系列介绍exec替换进程:(bash铺垫)3.fork()+execlp先复制进程,再替换成新.
2022-05-18 22:49:03
269
原创 操作系统(2)
操作系统(二)文章目录操作系统(二)17.进程、线程的中断切换的过程是怎样的?18.简述自旋锁和互斥锁的使用场景19.多线程和单线程有什么区别,多线程编程要注意什么,多线程加锁需要注意什么?20.说sleep和wait的区别?21.线程池?21.1设计思路21.2线程数量21.3为什么要创建线程池/作用21.4核心线程与普通线程22.简述Linux零拷贝的原理?23.讲讲select,epoll,LT,ET24.同步与异步,阻塞与非阻塞?25.说说IO模型的类型26.BIO、NIO有什么区别?27.s.
2022-05-17 16:51:01
301
原创 7_僵死进程,孤儿进程,文件读写复制
7_僵死进程,孤儿进程,文件读写复制文章目录7_僵死进程,孤儿进程,文件读写复制(一)进程1.一个简易版父子进程代码2.僵死进程3.孤儿进程4.如何解决僵死进程?(二)文件1.ssize_t write()2.ssize_t read()3.文件复制7_僵死进程,孤儿进程,文件读写复制(一)进程1.一个简易版父子进程代码2.僵死进程僵死进程:子进程先于父进程结束,父进程没有获取子进程的退出码(pcb)(子进程没有被处理),子进程变成僵死进程。(如果父进程先死掉了,子进程就不会变成僵死进程,.
2022-05-16 23:55:33
92
原创 6_fflush(),fork()打印次数探索
6_fflush(),fork()打印次数探索文章目录6_fflush(),fork()打印次数探索1.fflush(stdout)强制刷新缓冲区2.fork()后打印次数探索2.1Eg12.2Eg26_fflush(),fork()打印次数探索1.fflush(stdout)强制刷新缓冲区print()函数能够打印出来的三种情景:①缓冲区满时;②程序结束时;③强制刷新缓冲区 “\n” fflush(stdout)2.fork()后打印次数探索fork() 复制进程进程:一个正在运.
2022-05-16 23:41:17
247
原创 操作系统(1)
操作系统(1)文章目录操作系统(1)1.说说进程空间从高位到低位都有些什么?2.32位系统能访问4GB以上的内存吗?3.请你说说并发和并行4.说说进程、线程、协程是什么,区别是什么?5.说说Linux的fork?6.说说什么是孤儿进程,什么是僵尸进程,如何解决?7.说说什么是守护进程?8.进程间通信方式有哪些?9.说说进程同步和线程同步的方式?10.说说Linux进程调度算法及策略有哪些?11.说说进程有多少种状态?12.进程通信中的管道实现原理是什么?13.简述mmap的原理和使用场景14.说说常见.
2022-05-16 21:57:09
629
原创 5_静态库与共享库
5_静态库与共享库文章目录5_静态库与共享库介绍1.静态库2.共享库/动态库5_静态库与共享库介绍库文件:预先编译好的方法的集合libxx.a 静态库libxx.so 共享库 例:libc.so c的共享库生成静态库ar crv libfoo.a add.o max.o生成共享库gcc -shared -fPIC -o libfoo.so add.o max.o 1.静态库若把libfoo.h放到/user/include中,则可直接用<libfoo.h>.
2022-05-15 23:51:11
87
原创 4_makefile文件,gdb调试
4_makefile文件,gdb调试文章目录4_makefile文件,gdb调试1.makefile文件2.gdb调试4_makefile文件,gdb调试1.makefile文件依赖文件makefile操作:管理,自动化的编译。举个栗子:main.c文件:fun.h文件:add.c文件:max.c文件:makefile文件:终端操作:2.gdb调试①编译时加-g,增加调试信息,gcc -o test test.c -g②gdb test(test是可执行程序,注意.
2022-05-15 23:35:20
267
原创 3_进程有关的命令(ps jobs kill &)
3_进程有关的命令(ps jobs kill &)文章目录3_进程有关的命令(ps jobs kill &)1.ps2.jobs3.kill4.&3_进程有关的命令(ps jobs kill &)1.ps每一个终端打开,都会运行一个命令解释器ps:运行一个进程ps -f:每个用户运行的进程(PID当前进程id,PPID 父iD)ps -ef:查看系统所有进程ps -ef | grep sleep:管道查找sleep2.jobsjobs:查看后台运行进程.
2022-05-15 23:25:07
202
原创 计算机网络(2)
计算机网络(2)文章目录17.Http和Https的区别?18.加密与认证18.1讲讲对称加密与非对称加密?18.2讲讲HTTPS加密与认证过程?(字节问过..)19.TCP 的 TIME_WAIT知道吗?/简述什么是 MSL,为什么客户端要等待2MSL的时间才能完全关闭?20.说说什么是 SYN flood,如何防止这类攻击?(泛洪攻击)21.说说什么是 TCP 粘包和拆包?22.说说从系统层面上,UDP 如何保证尽量可靠?23.说一说 TCP 的 keepalive,以及和 HTTP 的 keep.
2022-05-15 15:30:04
709
原创 2_vim基础操作,打包解包
2_vim基础操作,打包解包文章目录1.vim基础操作2.打包和解包1.vim基础操作vim命令模式中:i 光标前面插入a 后面I 行头插入A 行末o 在下一行插入O 上一行ndd 删除n行nyy 复制n行p 粘贴u 撤销Ctrl+r 恢复一次撤销替换 :①r 替换一个字符(命令模式,r,再按要替换的新的字符) ②R 一直替换,按esc结束cc 清除一行数据C 从光标所在位置清除到行末x 删除一个字符gg 光标移动到第一行G 光标移动到末尾:set nu 设置行号
2022-05-15 00:00:29
394
原创 1_Linux基础命令(创建文件、目录、vim等)
1_Linux基础命令(创建文件、目录、vim等)文章目录1.目录结构2.文件类型3.权限4.创建文件等具体操作5.vi/vim 编辑文件5.1vi三种模式5.2退出vi6.gcc与可执行文件7.关键字搜索1.目录结构‘/’:boot放系统内核,etc放系统配置文件,bin放命令(二进制可执行程序),lib库文件,home家目录,root管理员的家目录,dev,usr不常改变的文件,var常改变的数据。举个例子:家目录下zhangsan:/home/zhangsan2.文件类型普通(归档).
2022-05-14 23:49:20
1062
原创 计算机网络(1)
计算机网络(1)1.简述静态路由和动态路由参考回答静态路由由管理员手动维护;动态路由由路由协议自动维护。①静态路由是由系统管理员设计与构建的路由表规定的路由。其缺点是不能动态地适用网络状况的变化,当网络状况变化后必须由网络管理员修改路由表。②动态路由是由路由选择协议而动态构建的,可以自动学习网络的拓朴结构,并更新路由表。2.说说有哪些路由协议参考回答两种主要算法:距离向量法(Distance Vector Routing)和链路状态算法(Link-State Routing)。基于距离向量法
2022-05-14 17:46:09
468
1
原创 C语言中对函数指针的调用
调用函数(指针变量)对a,b值进行交换/*↓此处a,b地址与main函数a,b地址不同,a,b仅仅在此函数内互相交换,main函数内a,b并没有交换*/void Swap_err1(int a,int b) { int tmp = a; a = b; b = tmp;}/*↓*tmp野指针,指针*tmp指向地址的值可能不允许被访问,程序崩溃*/void Swap_err2(int *p1,int *p2){ int *tmp; *tmp = *p1; *p1 = *p2
2021-04-21 22:08:25
3266
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人