![](https://img-blog.csdnimg.cn/54844de516e74d4bbf57ec1a71cbe42f.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++开发后端基础知识
文章平均质量分 71
C++基础知识
在三年之后
亲爱的,外面没有别人,有的只是你自己
展开
-
施磊C++项目-【高级】集群聊天服务器-软件分层设计和高性能服务开发
5、负载均衡中,每个服务器有不同的人进行注册,不同服务器上的用户要进行通信的话,主要引入了redis的发布订阅作为MQ消息队列的功能,实现跨服务器的消息通信。4、单机下并发能力有限,要多机扩展,挂一个nginx的负载均衡,基于tcp的cs通信,是一个长连接(客户端给服务器发消息,服务端给客户端推消息)压力测试:单机到5、6千,是跟服务器的fd有关的,所以可以更改fd的最大上限,可以让单机达到两万的并发量。2、服务层map和绑定器,做了一个消息的fd,从消息解析到json,得到消息的id,通过回调处理消息。原创 2023-08-31 20:26:13 · 714 阅读 · 1 评论 -
面试问题笔记
面试就开始了嗯好你好你好同学我是那个诺瓦的那个面试官我知道一档然后呢今天呢就是我们做一下简单的一个面试吧然后首先你这个介绍一下你自己吧嗯好嗯我目前就是我本科就读于湖南师范大学所以说呃工程院校在本科期间就是嗯所学习的课程也有就是c面向对象的编程然后有数据库嗯网络安全计算机网络等等然后在本科期间参加了程序设计竞赛嗯获得了湖南省得奖合区 size像然后嗯在现在就读于安徽大学也是一所211工程院校然后嗯在研究生期间自己学习了两个项目一个是基于嗯我问一个是h嗯嗯嗯基于 ip c的一个高性能服务器框架的项目在这个项目中原创 2023-08-11 15:28:27 · 38 阅读 · 0 评论 -
深度学习面试提问题
CvT在ImageNet-1k这个数据集上训练,达到了SOTA的性能,比ViT,DeiT的参数量和计算量更小,且比CNN的性能更好。中值滤波:可以保护图像尖锐的边缘,选择适当的点来替代污染点的值,所以处理效果好,对椒盐噪声表现较好,对高斯噪声表现较差。解决多游戏平台上报相同错误码但错误释义不同导致错误数据计算失真的情况,在游戏错误中间表中增加关联条件;基于游戏启动场景的扩展及游戏进程监控指标的扩充,优化游戏进程中间表,增加和优化相关字段;对数据进行label——emigy进行yolo的标注。原创 2023-08-24 00:03:37 · 30 阅读 · 0 评论 -
集群聊天服务器-moduo库、cmake、MySQL、离线消息业务
moduo库:epoll + pthread线程池。IO线程会和cpu核数对等。原创 2023-09-01 11:31:38 · 138 阅读 · 0 评论 -
RPC 分布式网络通信框架
zookeeper原创 2023-09-01 15:59:59 · 145 阅读 · 0 评论 -
muduo和libevent缓冲区之间的内存区别
https://www.cnblogs.com/fortunely/p/16136071.html#%E5%BA%94%E7%94%A8%E5%B1%82%E7%BC%93%E5%86%B2%E5%8C%BAbuffer%E8%AE%BE%E8%AE%A1原创 2023-09-03 22:02:53 · 140 阅读 · 0 评论 -
音视频开发技术
IDR 帧全称叫做 Instantaneous Decoder Refresh,是 I 帧的一种。IDR 帧的作用是立刻刷新,重新算一个新的序列开始编码,使错误不致传播。IDR 帧有如下特性:IDR 帧一定是 I 帧,严格来说 I 帧不一定是 IDR 帧(但一般 I 帧就是 IDR 帧);对于 IDR 帧来说,在 IDR 帧之后的所有帧都不能引用任何 IDR 帧之前的帧的内容。原创 2023-09-22 19:41:45 · 128 阅读 · 0 评论 -
同步、异步、协程
管理所有协程。原创 2023-08-16 00:10:16 · 264 阅读 · 0 评论 -
epoll数据结构
rdlink就绪队列,sockfd,event红黑树的kvepoll_create会生成eventpoll,rbr指向红黑树,rdlist指向就绪队列,还有控制线程安全的功能epoll_clt来添加删除修改红黑树的节点epol如何做线程安全?1.红黑树–> mutex2.就绪队列–> spinlockepoll_wait会把就绪队列里拷贝到数据events[]原创 2023-08-15 15:24:22 · 585 阅读 · 0 评论 -
http、https笔记
3、client 取CA的公钥,验证数字证书,取出服务器的公钥,用服务器公钥加密随机数( pre-master key ),随后根据client、sever随机数+随机数( pre-master key )来生成会话密钥。管道⽹络传输:可在同⼀个 TCP 连接⾥⾯,客户端可以发起多个请求,只要第⼀个请求发出去了,不必等其回来,就可以发第⼆个请求出去,可以减少整体的响应时间。3、http只有tcp三次握手的三个包(快),https是12个包(3+9个的ssl包)(慢)原创 2023-08-10 15:59:36 · 1726 阅读 · 0 评论 -
io_uring笔记
异步四元组:1、init(create)2、commit 3、callback 4、destory。io_uring共享内存:存储空间、修改变量。fio : 测iops一秒钟读写磁盘的次数。epoll是把io放入了红黑树。要求内核linux 5.10。原创 2023-08-09 13:39:31 · 240 阅读 · 0 评论 -
高性能网络框架笔记
比如read时,read buffer有500个数据,read(fd,buf,size)size=300,那么读完size=300之后就不会读了,会等待到下一次出发在读,所以一般读的时候会写个循环,一直读到buffer为空;ret=0时,此时会清理tcp相关的信息之后,才会调用close。只要文件描述符关联的读内核缓冲区read buffer非空,有数据可以读取,就一直发出可读信号进行通知,两者性能差异非常小,一般小数据使用水平触发LT,大数据使用边沿触发ET。-------->心跳包。原创 2023-08-03 17:16:12 · 448 阅读 · 0 评论 -
grpc学习笔记
进制协议的乱序模式 (Duplexing),直接解决了HTTP1.1的核心痛点,通过这种复用TCP连接的方式,不。3、收到请求, cq->Next() 的阻塞结束并返回,得到 tag,既上次传入的 CallData 对象地址。HTTP2为了解决这个问题,提出了 流 的概念,每一次请求对应一个流,有一个唯一ID,用来区分不同的。个帧都唯一属于某一个流ID,将帧按照流ID进行分组,即可分离出不同的请求。基于流的概念,进一步提出了 帧 ,一个请求的数据会被分成多个帧,方便进行数据分割传输,每。原创 2023-07-11 22:27:36 · 511 阅读 · 0 评论 -
智能指针使用场景
shared_ptr章节中提到不能直接将this指针返回shared_ptr,需要通过派生std::enable_shared_from_this类,并通过其方法shared_from_this来返回指针,原因是std::enable_shared_from_this类中有一个weak_ptr,这个weak_ptr用来观察this智能指针,调用shared_from_this()方法是,会调用内部这个weak_ptr的lock()方法,将所观察的shared_ptr返回。原创 2023-07-10 16:20:23 · 193 阅读 · 0 评论 -
分布式版本控制git
创建分支:git branch develop (创建) git checkout -b develop(创建并切换到develop分支)拉取合并(git pull):git fetch+git merge。本地仓库-> workspace:git reset --mixed。本地仓库-> index:git reset --soft。本地仓库-> null:git reset --hard。生成公钥和私钥(ssh-keygen -t rsa)整理上一次提交:git commit --amend。原创 2023-07-03 18:11:22 · 311 阅读 · 0 评论 -
hash在后端的应用
散列表hash 函数种类:布隆过滤器场景:构成原理应用分析选择 hash 函数问题:只用2GB内存在20亿个整数中找到出现次数最多的数完整代码:分布式一致性 hashhash迁移hash 偏移虚拟节点原创 2023-05-23 18:17:02 · 842 阅读 · 0 评论 -
红黑树及插入代码
红黑树在插入任何一个节点之前就已经是红黑树了,用数学的归纳法,所以插入一个节点只能是红的(红色不改变黑高)把代码中的所有x改为y,y改为x,left改为right,right改为left;红黑树没有对相同的节点处理:对于业务场景丢弃或者是加一个eps。场景:hashmap、cfs、epoll、定时器、nginx。强查找:红黑树、hash、b/b++树、跳表。红黑树性质被破坏时,就会产生旋转。插入的所有的值都会在最底层。原创 2023-05-20 17:04:06 · 146 阅读 · 0 评论 -
搞懂分布式RPC开源框架-gRPC
http2.0 stream 传输的 可以想回应的时候,回应。grpc关键特性:超时、重试、拦截器、命名解析、负载均衡、安全连接。http1.1 pipeline 可以发送多个请求得到多个回应。grpc 组成:http 2.0 + protobuffer。消息队列:不紧迫的非必要的 异步解决问题 ,比如短信服务。90分钟搞懂分布式RPC开源框架-gRPC。http1.0 提供长连接 请求回应的模式。grpc组成和service API。原创 2023-04-22 16:02:31 · 290 阅读 · 0 评论 -
Hash冲突及解决办法
开放定址法线性探测再散列二次探测再散列伪随机探测再散列再哈希法链地址法(拉链法)建立公共溢出区原创 2023-03-14 09:14:33 · 574 阅读 · 0 评论 -
AVL、B-TREE、B+TREE及算法可视化网站
AVL、B-TREE、B+TREE及算法可视化网站原创 2023-02-16 16:11:40 · 529 阅读 · 1 评论 -
代码实现:跳表小项目
代码实现:高并发读写有序结构组织;跳表原创 2023-02-15 22:17:37 · 212 阅读 · 0 评论 -
后台开发常见层式结构设计:时间轮、跳表、LSM_Tree
后台开发常见层式结构设计:时间轮、跳表、LSM_Tree原创 2023-02-14 16:31:52 · 591 阅读 · 0 评论 -
第5章 项目实战与总结5.8、5.9结果记录
第5章 项目实战与总结5.8结果记录原创 2022-12-06 11:30:32 · 236 阅读 · 0 评论 -
第5章 项目实战与总结5.7
http_conn.hhttp_conn.cpp有限状态机原创 2022-12-05 17:29:22 · 143 阅读 · 0 评论 -
第5章 项目实战与总结 第4节 服务器编程基本框架和两种高效的事件处理模式
服务器编程基本框架两种高效的事件处理模式Reactor模式Proactor模式Reactor模拟 Proactor 模式原创 2022-12-03 16:52:47 · 89 阅读 · 0 评论 -
第5章 项目实战与总结 05 项目实战 与 线程同步机制类封装及线程池实现
线程池EPOLLONESHOT事件项目实战一http_conn.hhttp_conn.cpplocker.hthreadpool.hmain.cpp原创 2022-12-04 22:22:30 · 112 阅读 · 0 评论 -
第5章 项目实战与总结 第3节 Web服务器简介及HTTP协议
Web Server(网页服务器)HTTP协议(应用层的协议)简介工作原理HTTP 请求报文格式HTTP响应报文格式HTTP请求方法HTTP状态码原创 2022-12-03 12:24:54 · 127 阅读 · 0 评论 -
第5章 项目实战与总结 第2节 Unix、Linux上的五种IO模型
阻塞 blocking非阻塞 non-blocking(NIO)IO复用(IO multiplexing)信号驱动(signal-driven)异步(asynchronous)原创 2022-12-03 11:39:40 · 90 阅读 · 0 评论 -
第5章 项目实战与总结 第1节 阻塞和非阻塞、同步和异步
第5章 项目实战与总结 第1节 阻塞和非阻塞、同步和异步原创 2022-12-01 22:19:14 · 90 阅读 · 0 评论 -
第4章 Linux网络编程 25.IO多路复用
IO多路复用原创 2022-11-25 16:30:51 · 85 阅读 · 0 评论 -
第4章 Linux网络编程 24.端口复用
端口复用原创 2022-11-22 20:58:10 · 542 阅读 · 0 评论 -
第4章 Linux网络编程 22.多进程实现并发服务器、多线程实现并发服务器
多线程实现并发服务器多进程实现并发服务器原创 2022-11-17 17:25:46 · 377 阅读 · 0 评论 -
第4章 Linux网络编程 01. 网络结构模式
1. 网络结构模式C/S结构B/S结构2. MAC 地址3. IP 地址4. 端口5. 网络模型6. 协议原创 2022-11-11 15:56:48 · 112 阅读 · 0 评论 -
第3章 Linux多线程开发 08线程同步
01 / 线程同步02 / 互斥量03 / 互斥量相关操作函数04 / 死锁05 / 读写锁06 / 读写锁相关操作函数07 / 生产者消费者模型08 / 条件变量09 / 信号量原创 2022-11-09 17:21:03 · 108 阅读 · 0 评论 -
第3章 Linux多线程开发 01线程
01 / 线程概述02 / 线程和进程区别03 / 线程和进程虚拟地址空间04 / 线程之间共享和非共享资源05 / NPTL06 / 线程操作07 / 线程属性原创 2022-11-08 16:54:06 · 108 阅读 · 0 评论 -
第2章 Linux多进程开发 30守护进程
01 / 终端02 / 进程组03 / 会话05 / 进程组、会话操作函数06 / 守护进程07 / 守护进程的创建步骤原创 2022-11-07 20:56:33 · 90 阅读 · 0 评论 -
第2章 Linux多进程开发 28共享内存
01 / 共享内存02 / 共享内存使用步骤03 / 共享内存操作函数04 / 共享内存操作命令原创 2022-11-07 17:52:16 · 100 阅读 · 0 评论 -
第2章 Linux多进程开发 19信号
01 / 信号的概念02 / Linux 信号一览表03 / 信号的 5 种默认处理动作04 / 信号相关的函数05 / 信号捕捉函数06 / 信号集07 / 阻塞信号集和未决信号集08 / 信号集相关的函数09 / 内核实现信号捕捉的过程10 / SIGCHLD信号原创 2022-11-05 20:48:26 · 103 阅读 · 0 评论 -
第2章 Linux多进程开发 10~进程间通信
10 进程间通信01 / 进程间通讯概念02 / Linux 进程间通信的方式03 / 匿名管道04 / 管道的特点05 / 为什么可以使用管道进行进程间通信06 / 管道的数据结构07 / 匿名管道的使用管道的读写特点:08 / 有名管道10 / 内存映射父子进程间两个非亲缘进程间思考问题复制文件原创 2022-10-27 20:48:20 · 127 阅读 · 0 评论 -
第2章 Linux多进程开发 01~05 进程概述 进程状态转换 进程创建 父子进程虚拟地址空间情况 gdb多进程调试
进程概述进程状态转换进程创建父子进程虚拟地址空间情况gdb多进程调试原创 2022-10-25 21:39:10 · 305 阅读 · 0 评论