![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Liunx C/C++后台架构开发
文章平均质量分 93
Linux后台开发狮
分享c/c++Linux服务器开发技术行业资讯
展开
-
【23秋招c++后端面试技术突围】TCP/IP 之 滑动窗口、Nagle算法和延迟确认
启用这个算法后,如果我们通过telnet慢速敲入HELLO,刚开始要发送H,虽然包很小,但是没有需要确认的包,可以立刻发送,但是发送完毕后,由于H的确认还没有来,所以还必须等待,直到H报文的ACK报文来的,报文也积累了ELL三个字符。具体含义是,因为普遍终端应用程序每产生一次击键操作就会发送一个包,而典型情况下一个包会拥有一个字节的数据载荷以及40 个字节长的包头,于是产生4000%的过载,很轻易地就能令网络发生拥塞。这样,你就可以依次从路由、网络包的收发、再到应用程序等,逐层排查,直到定位问题根源。原创 2022-09-27 20:57:56 · 1057 阅读 · 0 评论 -
C/C++ Linux 用户态协议栈的实现
在讲网络协议栈前,先理解一个数据包在网络传输是一个怎么样的流程,如下图所示。正在上传…重新上传取消正常的流程是网卡接收到数据后,把数据copy到协议栈(sk_buff),协议栈把sk_buff数据解析完后再把数据放到recv_buff,此时应用程序调用recv把数据从协议栈copy到应用程序;发送数据包,则与之相反,应用程序调用send把数据包copy到send_buff,协议栈从send_buff取数据放到sk_buff,交给网卡发送出去。...原创 2022-08-29 16:33:01 · 1240 阅读 · 0 评论 -
C/C++实现协程及原理(详细完整版)-架构师篇
协程,又称微线程,纤程。英文名Coroutine。协程的概念很早就提出来了,但直到最近几年才在某些语言(如Lua)中得到广泛应用。子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完毕返回,最后是A执行完毕。所以子程序调用是通过栈实现的,一个线程就是执行一个子程序。子程序调用总是一个入口,一次返回,调用顺序是明确的。而协程的调用和子程序不同。原创 2022-08-21 21:30:00 · 4381 阅读 · 0 评论 -
c++ 网络编程 LINUX/windows 进程间的通信原理与实现代码 基于多进程的服务端实现
本网络编程入门系列博客是连载学习的,有对C/C++ Linux后台架构师学习体系感兴趣或者本身是工程师在学习准备进大厂的可以看我博客其他篇。c++开发怎样才能进入腾讯?原创 2022-08-20 16:01:14 · 305 阅读 · 0 评论 -
全网最系统最全面的c/c++ Linux服务端开发高级架构师全能体系总结,他来了
涵盖了linux C++服务端开发架构师每个阶段所需要学习的知识点。原创 2022-08-19 21:50:31 · 2872 阅读 · 0 评论 -
C/C++ Linux 异步IO(AIO)
每个AIO控制块中, aio_lio_opcode字段指定了该操作是一个读操作(LIO_READ), 写操作(LIO_WRITE), 还是将忽略的空操作(LIO_NOP). 读操作, 会按照对应的AIO控制块被传给aio_read来处理;将异步IO请求放入等待处理的队列中(函数提出请求, 由OS放入). 函数返回值与实际IO操作结果没有关系. IO操作等待时, 需确保AIO控制块和数据缓冲区保持稳定, 下面对应的内容也必须始终合法, 不能被释放, 也不能被复用, 除非IO操作完成.原创 2022-08-19 15:23:45 · 1802 阅读 · 0 评论 -
C/C++linux 后台架构开发体系:高并发网络IO模型
今天我们聊一下高并发下的网络 IO 模型高并发即我们所说的 C10K(一个 server 服务 1w 个 client),C10M,写出高并发的程序相信是每个后端程序员的追求,高并发架构其实有一些很通用的架构设计,如无锁化,缓存等,今天我们主要研究下高并发下的网络 IO 模型设计,我们知道不管是 Nginx,还是 Redis,Kafka,RocketMQ 等中间件,都能轻松支持非常高的 QPS,其实它们背后的网络 IO 模型设计理念都是一致的,所以了解这一块对我们了解设计出高并发的网络 IO 框架具体重要意原创 2022-08-18 15:07:28 · 720 阅读 · 0 评论 -
Linux | make工程管理工具
在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么 make 就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make 根本不理。除此之外,这个文件中, #符号后面是注释, clean 是一个特殊的目标,它没有依赖,称为伪目标。命令:是指任何一个文件发生改动之后,需要重新生成目标文件需要执行的命令,这里可以有多条命令,但是每个命令必须单独占一行,且需要注意的是,每个命令的前面必须有一个,因为make是用过来识别命令行的,进而完成相应的动作。(这有点像一个堆栈的过程)......原创 2022-08-15 17:26:58 · 179 阅读 · 0 评论 -
LinuxC/C++中新特性
虽然 C++98/03 标准不支持为右值建立非常量左值引用,但允许使用常量左值引用操作右值。笔者会不断更新C/C++Linux后台开发架构体系,程序员面试经验以及答题答案总结分享;reinterpret_cast可以做任何类型的转换,不过不对转换结果保证,容易出问题。 a. 当类型不为引用时,auto 的推导结果将不保留表达式的 const 属性; b. 当类型为引用时,auto 的推导结果将保留表达式的 const 属性。C++11 标准新引入了另一种引用方式,称为右值引用,用 "&&" 表示。...原创 2022-08-13 15:11:05 · 161 阅读 · 0 评论 -
C/C++ 知识点-设计模式总结(C++和Python实现)
GoF的23种设计模式,包括创建型、结构型和行为型,其涵盖了面向对象思想的精髓以及诸多细节。本文结合《设计模式》和《大话设计模式》,并用C++和Python实现了《大话设计模式》中的23种模式案例。案例实现《大话设计模式》C++版《大话设计模式》Python版抽象工厂模式:提供一个创建一系列相关或互相依赖对象的接口,只需要知道对象的系列,无需知道具体的对象。在客户端中,具体工厂类只在初始化时出现一次,更改产品系列即可使用不同产品配置。...原创 2022-08-12 20:34:30 · 212 阅读 · 0 评论 -
C/C++Linux后加架构开发 谈谈三种海量数据实时去重方案(w/ Flink)
数据去重(data deduplication)是我们大数据攻城狮司空见惯的问题了。除了统计UV等传统用法之外,去重的意义更在于消除不可靠数据源产生的脏数据——即重复上报数据或重复投递数据的影响,使流式计算产生的结果更加准确。本文以Flink处理日均亿级别及以上的日志数据为背景,讨论除了朴素方法(HashSet)之外的三种实时去重方案,即:布隆过滤器、RocksDB状态后端、外部存储。...原创 2022-08-11 17:38:53 · 240 阅读 · 0 评论 -
Linux C/C++后台架构开发【经典数据结构】B树与B+树
B树,概括来说是一个节点可以拥有多于2个子节点的二叉查找树。与自平衡二叉查找树不同,B-树为系统最优化大块数据的读和写操作。B-tree算法减少定位记录时所经历的中间过程,从而加快存取速度。普遍运用在数据库和文件系统。”......原创 2022-08-10 19:25:23 · 204 阅读 · 0 评论