- 博客(8)
- 收藏
- 关注
原创 cppBoost09网络IO编程(二)
对于每一个accept执行结束后,说明连接已经建立,所以需要有一个对应的连接对象,也就是 TcpConnection,但是每个对象会关联一个文件描述符connfd,所以有一个记录文件描述符到 TcpConnection的数据结构,可以使用键值对进行存储,这样以后就可以通过文件描述符就可以找 到对应的连接,同时文件描述符是不重复的,所以这里可以选择的数据结构有map或者 unordered_map,我们这里选择map,即。SocketIO类:该类的作用就是封装所有的读写操作,也就是将读写的细节封装到该类中。
2024-08-25 18:33:38
1539
原创 cppBoost06~09网络IO编程(一)
在父进程中要关闭创建连接的套接字,等待下一个客户端请求连接,所以可以并发式服务器处理多个客户端的请求,一个客户端一个进程;子进程在处理客户端的请求,子进程是长连接的,不断的处理请求,即使子进程中解包,计算,打包的过程时间过长,也不会影响父进程去连接其他客户端的请求。当使用默认的阻塞套接字时(例如上面提到的 1 个线程捆绑处理 1 个连接),往往是把这两个阶段合而为一,这样操作套接字的代码所在的线程就得睡眠来等待消息准备好,这导致了高并发下线程会频繁的睡眠、唤醒,从而影响了 CPU 的使用效率。
2024-08-25 17:54:52
1602
原创 【无标题】cppBoost网络编程
当监听的文件描述符个数比较稀疏的时候(比如3, 600, 1023),循环判断比较麻烦,所以需要自定义数据结构:数组。中,这样调用epoll_weit获取就绪文件描述符的时候,只要取队列中的元素即可,操作的时间复杂度恒为O(1)。文件描述符上限(1024),同时监听的文件描述符1024个,历史原因,不好修改,除非重新编译Linux内核。//将对应的文件描述符放在红黑树上进行监听或者将对应的文件描述符从红黑树上删除。,迅速激活这个文件描述符,这样随着文件描述符数量的增加,也不会影响判定就绪的性能。
2024-08-25 17:36:04
726
原创 Redis常见面试问题细节
Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。
2024-08-24 23:55:08
616
原创 Redis两天学习
可以根据需求选择合适的持久化,如果想数据恢复快,可以使用rdb持久化,如果想数据精度高一些,可以使用aof持久化两种持久化的方式是可以同时打开的,起到互补的作用如果只有aof持久化的方式,也可以启动服务器,并且将数据加载到内存中(redis)如果aof持久化的方式是唯一的持久化方式,并且aof文件损坏了,就不能启动redis服务器。如果aof文件损坏了,可以使用对应的命令进行修复redis-check-aof。
2024-08-24 23:53:25
690
原创 cppBoost01
面向对象的基本概念、类与类之间的关系、面向对象的设计原则、设计模式;C++11的线程库、互斥锁、条件变量、pc、线程池;计算机网络的概念、socket网络编程、IO多路复用;Reactor、Reactor + 线程池。
2024-08-14 16:18:11
471
原创 cppBase14 8.多态
如果一个类只定义了protected型的构造函数而没有提供public构造函数,无论是在外部还是在派生类中作为其对象成员都不能创建该类的对象,但可以由其派生出新的类,这种能派生新类,却不能创建自己对象的类是另一种形式的抽象类。Base类只定义了protected属性的构造函数,不能创建Base类的对象,但是可以定义Base类的指针—— Base类是抽象类如果Derived类也只定义了protected属性的构造函数,Derived类也是抽象类,无法创建对象,但是可以定义指针指向派生类对象。
2024-07-31 22:35:40
1698
原创 计算机组成原理
我有一台32位或64位的电脑,这里的32和64指的是字长,也称机器字长。机器字长指的是计算机进行一次整数运算所能处理的二进制位数,在cpu内部的运算器和通用寄存器的字长和机器字长是相等的。存储字长是一个存储单元中二进制代码的长度(若告知MDR,即主存里的数据寄存器,存储字长=MDR的位数)冯诺依曼计算机中的指令和数据均以二进制形式存放在存储器里,CPU区分它们的依据是指令周期的不同阶段。以下是关于计算机组成原理的一些个人学习总结,欢迎交流!指令字长是一个指令字中包含二进制数的位数。
2023-05-01 10:13:53
55
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人