![](https://img-blog.csdnimg.cn/20190918140037908.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++Linux服务器 学习资料、视频
文章平均质量分 59
C/C++Linux服务器开发/高级架构师 相关视频、笔记等
攻城狮百里
学无止境
展开
-
Redis的五大数据类型详细用法
我们说 Redis 相对于 Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提供listsetzsethash等数据结构的存储。本篇博客我们就将介绍这些数据类型的详细使用以及顺带介绍Redis系统的相关命令用法。注意:Redis的命令不区分大小写,但是key 严格区分大小写;redis都是基于key-value形式的;redis不适合存储大数据类型,因为是单线程的,大数据会造成阻塞,浪费时间;原创 2023-11-27 20:22:50 · 48 阅读 · 0 评论 -
Linux下的C++ socket编程实例
服务端:服务器端先初始化socket,然后与端口绑定,对端口进行监听,调用accept阻塞,等待客户端连接。客户端:客户端先初始化socket,然后与服务端连接,服务端监听成功则连接建立完成。原创 2023-11-23 15:43:50 · 276 阅读 · 0 评论 -
入门C++协程:理解和使用协程的基础知识
Boost.Context这现有工具来辅助栈空间和运行状态的管理,ucontext算是历史比较悠久的,通过ucontext_t结构体保存栈信息、CPU执行上下文、信号掩码以及resume所需要的下一个ucontext_t结构的地址,但是人家实测ucontext的性能要比Boost.Context慢的多,Boost.Context是今年来C++各大协程底层支撑库的主流,性能一直在被优化。ucontext的简单介绍:https://www.shuzhiduo.com/A/QV5Z09AVzy/原创 2023-11-22 20:45:57 · 252 阅读 · 0 评论 -
C++ 多线程 互斥量(mutex)与锁(lock)
unique_lock想比于lock_guard,都是基于RAII思想的,也支持std::lock_guard的功能,但是区别在于它提供更多的成员函数,比如:lock(),unlock()使用更加灵活,并且可以和condiction_variable一起使用控制线程同步。lock_guard构造函数执行了mutex::lock(),在作用域结束时,自动调用析构函数,执行mutex::unlock()adopt_guard为结构体对象,起一个标记作用,表示这个互斥量已经lock(),不需要在lock()。原创 2023-11-20 17:32:34 · 169 阅读 · 0 评论 -
Zookeeper 基础、工作流、ZAP协议
ZAB协议中使用ZXID作为事务编号,ZXID为64位数字,低32位为一个递增的计数器,每一个客户端的一个事务请求时Leader产生新的事务后该计数器都会加1,高32位为Leader周期epoch编号,当新选举出一个Leader节点时Leader会取出本地日志中最大事务Proposal的ZXID解析出对应的epoch把该值加1作为新的epoch,将低32位从0开始生成新的ZXID;因此对于读写平衡的环境,拥有较少数量(例如3,5,7)的节点比拥有大量的节点要好。会话中的请求按FIFO顺序执行。转载 2023-11-13 17:43:05 · 73 阅读 · 0 评论 -
UDP可靠传输协议KCP (Linux C/C++)
对于接收方来说,若一个序号为n的分组被正确接收,并且按序,则接收方会为该分组返 回一个ACK给发送方,并将该分组中的数据交付给上层。若该分组是以前没收到的分组,则被缓存。若该分组的序号等于基序号4, 则该分组以及以前缓存的序号连续的分组都交付给上层,然后,接收窗口将向前移动。ARQ模型响应有两种,UNA(此编号前所有包已收到,如TCP)和ACK(该编号包已收到),光用UNA将导致全部重传,光用ACK则丢失成本太高,以往协议都是二选其一,而 KCP协议中,除去单独的 ACK包外,所有包都有UNA信息。原创 2023-11-10 15:36:35 · 529 阅读 · 0 评论 -
Linux C/C++ 死锁检测组件
如下图所示,线程 A 想获取线程 B 的锁,线程 B 想获取线程 C 的锁,线程 C 想获取线程 D 的锁,线程 D 想获取线程 A 的锁,从而构建了一个资源获取环。线程 A 获取线程 B 已占用的锁,则为线程 A 指向线程 B。运行过程线程 B 获取成功的锁。这样定义完后,我们在调用pthread_mutex_lock函数,会执行我们自己实现的pthread_mutex_lock函数而非系统中的此函数。死锁的存在是因为有资源获取环的存在,所以只要能检测出资源获取环,就等同于检测出死锁的存在。转载 2023-11-09 21:40:54 · 138 阅读 · 0 评论 -
MySQL 缓冲池 Buffer Pool 详解
Linux C/C++后端服务器开发 学习资料、教学视频和学习路线图(资料包括C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK,ffmpeg等),有需要的可以自行添加学习交流群 739729163 领取。,当执行读写的时候磁盘的数据页会加载到Buffer pool的数据页中,当BufferPool中间有的页数据持久化到硬盘后,这些数据页又会被空闲出来。转载 2023-07-17 21:41:39 · 369 阅读 · 0 评论 -
C++开发者的机会在哪里?盘点C/C++就业方向
引用一个校招脉友的提问:现在C++的机会是不是越来越少了?这个问题还是老生常谈,看看大家怎么说?不难发现,c++很多的岗位很多都存在两个共性。第一个,岗位比较高端,任职要求高;第二个,部分在传统行业,流动性不大但薪资较其他的语言薪资较低。所以显得c++在2022这个铜三铁四的环境下,行情比较稳定。比如嵌入式,数据库内核,信息安全,音视频,QT客户端等等。那有没有这样一个方向,相对自动驾驶,AI底层算法任职要求要对较低,但是对于嵌入式,QT客户端又薪资相对较高的c/c++开发技术方向原创 2022-05-05 21:23:08 · 1734 阅读 · 0 评论 -
后端开发常见层式结构设计:跳表、时间轮、LSM-Tree
高并发读写有序结构组织空间利用率以及写性能高的磁盘数据组织海量并发定时任务组织后端开发常见层式结构设计:跳表、时间轮、LSM-Tree1. 海量并发定时任务组织:时间轮2. 高并发读写有序结构组织:跳表3. 空间利用率以及写性能高的磁盘数据组织:LSM-Tree上课地址:https://ke.qq.com/course/417774?flowToken=1031343 C/C++后端开发常见层式结构设计:原创 2022-04-06 21:12:55 · 1098 阅读 · 0 评论 -
TiDB 在今日头条的实践,分布式关系型数据库分析
TiDB 是什么?TiDB 是一个分布式 NewSQL 数据库。它支持水平弹性扩展、ACID 事务、标准 SQL、MySQL 语法和 MySQL 协议,具有数据强一致的高可用特性,是一个不仅适合 OLTP 场景还适OLAP 场景的混合数据库。TiDB怎么来的?开源分布式缓存服务 Codis 的作者,PingCAP 联合创始人& CTO ,资深 infrastructure 工程师的黄东旭,擅长分布式存储系统的设计与实现,开源狂热分子的技术大神级别人物。即使在互联网如此繁荣的今天,在数据库这片边原创 2022-04-01 17:59:14 · 1271 阅读 · 0 评论 -
协程存在的原因?协程能够解决哪些问题? 纯C语言|实现协程框架,底层原理与性能分析,面试利刃
协程这个概念很久了,好多程序员是实现过这个组件的,网上关于协程的文章,博客,论坛都是汗牛充栋,在知乎,github上面也有很多大牛写了关于协程的心得体会。突发奇想,我也来实现一个这样的组件,并测试了一下性能。借鉴了很多大牛的思想,阅读了很多大牛的代码。于是把整个思考过程写下来。实现代码 https://github.com/wangbojing/NtyCo代码简单易读,如果在你的项目中,NtyCo能够为你解决些许工程问题,那就荣幸之至。协程存在的原因?协程能够解决哪些问题?在我们现在CS,BS开发模式下原创 2022-03-22 14:54:42 · 355 阅读 · 0 评论 -
LinuxC/C++服务器开发学习路线2022完整版
随着业务市场的不断壮大,更便捷的开发语言也越来越受到市场的欢迎。Java,python还有新贵golang。那c/c++语言的开发者市场在哪里。虽然说没有活干说的可能过于夸张,但是面临的事实就是比不了。可能初学一点Java,python等等就能找到一份不错的开发工作,但是如果你只会一点c,又不是校招的话,能找到哪些工作呢?c/c++不同于Java。Java的技术路线是比较固定的,学好技术栈等待新技术的更新,并学会它,那在薪资上至少不会少。而c/c++的话,不得不说,路子比较广,选择的方向比较多,这里就不原创 2022-03-16 21:06:31 · 2699 阅读 · 1 评论 -
【linuxC/C++】准备好linux开发环境,基于红黑树,现场手撕高效定时器模块
准备好linux开发环境,基于红黑树,现场手撕高效定时器模块定时器接口设计:插入、删除、检测执行;基于红黑树接口封装;融入网络模块处理;现场手撕定时器代码;定时器功能测试; 基于红黑树,手撕高效定时器模块 | linuxC/C++服务器开发 B站播放地址linuxC/C++服务器开发 系统性学习地址...原创 2022-03-16 15:08:43 · 1529 阅读 · 0 评论 -
红黑树、最小堆、时间轮、跳表多种方式实现定时器【linuxC/C++】
红黑树、最小堆、时间轮、跳表多种方式实现定时器1. 定时器设计2. 单线程:红黑树、最小堆实现方案3. 多线程:跳表、时间轮4.分布式场景下:定时器的设计 红黑树、最小堆、时间轮、跳表多种方式实现定时器 | linuxC/C++ 原视频地址播放C/C++Linux服务器开发/高级架构师 系统性学习地址数据结构︰红黑树、最小堆、时间轮、跳表应用场景:单线程、多线程、分布式场原创 2022-03-09 16:41:05 · 823 阅读 · 0 评论 -
100行代码实现网络协议栈 | 协议封装、网卡虚拟化、柔性数组、netmap的实现原理、tcp协议、posix网络api
100行代码实现网络协议栈,准备好linux环境,你也可以的协议封装 eth, ip, arp, icmp,udp网卡虚拟化 框架 dpdk,netmap, pf_ring柔性数组的好处网卡数据映射 mmap的原理机制netmap的实现原理tcp协议的实现posix网络api的实现 linuxC/C++100行代码 实现网络协议栈| 网卡虚拟化 、posix网络api、netmap原理、协议封装原创 2022-03-02 20:10:38 · 2468 阅读 · 0 评论 -
skynet设计原理
skynet是一个轻量级的游戏服务器框架;实现了actor的并发模型;可以基于skynet框架去实现业务。多核并发编程多线程在一个进程中开启多线程,为了充分利用多核,一般设置工作线程的个数为 cpu 的核心数;memcached 就是采用这种方式;多线程在一个进程当中,所以数据共享来自进程当中的内存;这里会涉及到很多临界资源的访问,所以需要考虑加锁;多进程在一台机器当中,开启多个进程充分利用多核,一般设置工作进程的个数为 cpu 的核心数;nginx 就是采用这种方式;CSP以 go 语转载 2022-03-02 20:01:19 · 367 阅读 · 0 评论 -
抖音亿级弹幕通信协议 protobuf 工程实践
Protobuf 的优点Protobuf 有如 XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的情况下更新数据结构。只需使用 Protobuf 对数据结构进行一次描述,即可利用各种不同语言或从各种不同数据流中对你的结构化数据轻松读写。它有一个非常棒的特性,即“向后”兼容性好,人们不必破坏已部署的、依靠“老”数据格式的程序就可以对数据结构进行升级。这样您的程序就可以不必担心因为消息结构的改变而造成的大规模的代码重构原创 2022-02-21 15:51:32 · 1889 阅读 · 0 评论 -
【linuxC/C++】分布式锁实现流程讲解
90分钟搞懂分布式锁实现流程1. 分布式锁类型、常见实现方式、注意事项2. redis 实现非公平锁3. etcd 实现公平锁上课地址:https://ke.qq.com/course/417774?flowToken=1031343 分布式锁实现流程讲解【linuxC/C++服务器开发】 播放地址linuxC/C++服务器开发 面试题、学习资料、教学视频和学习路线图(资料包括原创 2022-02-16 22:23:53 · 2259 阅读 · 0 评论 -
后端面试知识点总结 操作系统篇(二)
内存管理机制什么是分页机制逻辑地址和物理地址分离的内存分配管理方案程序的逻辑地址划分固定大小的页 物理地址划分为同样大小的帧 通过页表对应逻辑地址和物理地址什么是分段机制分段是为了满足代码的一些逻辑需求数据共享、数据保护、动态链接 通过短标来对应逻辑地址和物理地址 每个段内部是连续的内存分配,段和段之间是离散分配的分段和分页的区别分页是出于内存利用率的角度提出的离散分配机制 分段是出于用户的角度,用于数据保护,数据隔离等用途的管理机制 页的大小是固定的,操作系统决定(与物理帧保持同样大小);原创 2022-02-09 21:04:45 · 422 阅读 · 0 评论 -
C++后台开发该学哪些内容,标准技术路线(含推荐书籍与项目)
C++后台开发该学哪些内容,标准技术路线(含推荐书籍与项目)1. 后台开发技术路线 8 + 12. c/c++如何该学到什么程度3. 计算机四大件与编程语言的结合4. 面经与算法该如何刷 C++后台开发该学哪些内容,标准技术路线(含推荐书籍与项目) 原视频地址C/C++Linux服务器开发/高级架构师 学习提升资料获取、视频课程...原创 2022-02-09 15:45:09 · 1217 阅读 · 0 评论 -
C/C++开发工程师 架构师 如何写简历(跳槽必看)
跳槽的朋友注意!!!简历书写的大福利来了,让简历精简又专业学历背景一般写简历每天业务迭代如何写简历每天繁琐跑腿活儿如何写简历 C/C++开发工程师 架构师 如何写简历(跳槽的朋友注意!) 播放地址LinuxC/C++服务器开发/架构师面试题、学习资料、教学视频和学习路线图(资料包括C/C++,Linux,golang技术,Nginx,ZeroMQ,MySQL,Redis,f原创 2022-01-24 16:48:36 · 4633 阅读 · 0 评论 -
6种 Epoll 的做法,(epoll 封装模式 、 reactor的作用与原理 、 多线程epoll、多进程epoll)
6种 Epoll 的做法,从redis,memcached到nginx的网络模型实现1. epoll的封装模式2. reactor的作用与原理3. 多线程epoll的做法4. 多进程epoll做法 6种Epoll的做法(epoll 封装、 reactor 作用与原理、多线程 多进程 epoll)| linuxC/C++服务器 视频地址:https://www.bilibili.c原创 2022-01-20 17:52:57 · 1924 阅读 · 0 评论 -
(C++后台开发)人手一个的 http web 服务器,如何做的与众不同
C++后台开发,人手一个的http web服务器,如何做的与众不同为什么http web服务器受欢迎post,get请求以外,还需要支持mp4, pdf网路层epoll,reactor外,引入协程加上业务场景,引入mysql,rediscgi为web服务器实现动态接口性能测试,参数化描述自己的项目 C++后台开发,人手一个的 http web 服务器,如何做的与众不同 视原创 2022-01-12 15:40:54 · 1666 阅读 · 0 评论 -
即时通讯的技术选型与架构设计(LinuxC/C++服务器开发/架构师学习)
即时通讯的技术选型与架构设计1. 网络接入层方案差异2. 逻辑层协议解析,proto,xmpp,mqtt3. web网页 websocket4. 数据库mysql,缓存redis内容:即时通讯场景的方案对比 网络接入层(多线程epoll,多进程epoll,协程),逻辑协议层(文件传输,位置共享,资讯信息,群聊)课程地址:https://ke.qq.com/course/417774?flowToken=1031343原创 2022-01-10 19:56:39 · 1724 阅读 · 0 评论 -
Nginx在互联网产品中起到的作用
剖析腾讯课堂的技术架构,Nginx在互联网产品中起到的作用nginx与html/js/css等静态网页的处理nginx与动态数据处理nginx与音视频的处理nginx的模块开发Nginx在互联网产品中起到的作用(剖析腾讯课堂的技术架构) Nginx在互联网产品中起到的作用(剖析腾讯课堂的技术架构) 视频地址:https://www.bilibili.com/video/BV原创 2022-01-06 21:04:09 · 1323 阅读 · 0 评论 -
【又能让你的技术提高一个level,高性能网络开发框架vpp】
又能让你的技术提高一个level,不要错过,高性能网络开发框架vppdpdk解决了网卡的问题vpp解决了协议栈的问题vpp与openstack/k8s的集成让tcp, udp,arp,nat协议定制功能不再复杂vpp的集成开发环境vpp的命令使用与conf文件配置vpp的plugin开发 高性能网络开发框架vpp,又能让你的技术提高一个level 视频地址:https:原创 2022-01-05 20:18:36 · 727 阅读 · 0 评论 -
什么是协程 ?实现协程框架,底层原理与性能分析(C语言)
什么是进程和线程01 进程是什么 ?直白地讲,进程就是应用程序的启动实例。比如我们运行一个游戏,打开一个软件,就是开启了一个进程,进程拥有代码和打开的文件资源、数据资源、独立的内存空间。02 线程又是什么 ?线程从属于进程,是程序的实际执行者。一个进程至少包含一个主线程,也可以有更多的子线程,线程拥有自己的栈空间。线程具有五种状态:对操作系统来说,线程是最小的执行单元,进程是最小的资源管理单元。无论进程还是线程,都是由操作系统所管理的。进程和线程的痛点线程之间是如何进行协作的呢?最经典的原创 2021-12-14 21:01:28 · 1677 阅读 · 0 评论 -
Linux后台开发 高级IO(select、poll、epoll)详解
如果有多个IO需要处理当一个描述符读,然后又写到另一个描述符时,可以用循环的方式访问阻塞io:#include <stdio.h>#include <unistd.h>#define BUF_SIZE 128int main(){ char buf[BUF_SIZE]; int n; while ( n = read(STDIN_FILENO, buf, BUF_SIZE) > 0) { if (write(STDOUT_FILENO, bu原创 2021-12-11 21:01:19 · 786 阅读 · 0 评论 -
高性能服务器通信协议设计之xml/json/protobuf对比分析
【免费技术直播分享】高性能服务器通信协议设计之xml/json/protobuf对比分析1.解决通信协议设计、边界解析、序列化等问题2.xml、json、protobuf性能对比分析3.QQ聊天协议之protobuf工程使用实践上课地址:https://ke.qq.com/course/417774?flowToken=1031343...原创 2021-11-23 20:13:37 · 765 阅读 · 0 评论 -
源码阅读:从三个重量级的开源框架看线程池的应用
【免费技术分享】源码阅读:从三个重量级的开源框架看线程池的应用redis 6.0 io线程池nginx 阻塞io 线程池skynet worker 线程池上课讲师:mark老师上课地址:https://ke.qq.com/course/417774?flowToken=1031343...原创 2021-11-22 20:25:05 · 740 阅读 · 0 评论 -
150行代码拉开协议栈实现的篇章 | C/C++Linux服务器开发
【免费技术直播分享】《tcp/ip详解卷一》: 150行代码拉开协议栈实现的篇章,以太网协议,ip协议,udp协议的封装icmp协议与arp的实现netmap的原理柔性数组的两种使用场景字节对齐的那些事儿mmap的原理手把手实现协议栈上课讲师:king老师上课地址:https://ke.qq.com/course/417774?flowToken=1031343...原创 2021-11-19 20:17:42 · 1780 阅读 · 1 评论 -
毕业或者想转行做c++服务端开发的时候都很迷茫不知道从哪里开始学习?
C/C++Linux服务器开发/高级架构师原创 2021-11-09 22:27:27 · 758 阅读 · 1 评论 -
c++新特性、内存屏障原理剖析
【免费技术直播分享】这节课只聊单例,细节有点多6个版本单例迭代c++新特性、内存屏障原理剖析设计模式到底怎么学?上课讲师:mark老师上课地址:https://ke.qq.com/course/417774?flowToken=1031343...原创 2021-11-03 20:10:42 · 542 阅读 · 0 评论 -
布隆过滤器、hyperloglog、分布式一致性
【免费技术直播分享】布隆过滤器、hyperloglog、分布式一致性hash的特性分析布隆过滤器原理以及应用hyperloglog原理以及应用分布式一致性原理以及应用上课地址:https://ke.qq.com/course/417774?flowToken=1031343...原创 2021-10-30 19:57:12 · 154 阅读 · 0 评论 -
手把手带你用dpdk实现tcp网络传输
【免费技术直播分享】手把手带你用dpdk实现tcp网络传输(只讲一次)dpdk 的hugepage与网口dpdk的udp传输手撕tcp网络协议栈三次握手的实现数据传输的实现四次挥手的实现上课讲师:king老师上课地址:https://ke.qq.com/course/417774?flowToken=1031343...原创 2021-10-29 20:03:38 · 740 阅读 · 0 评论 -
C++11线程池设计与实现
【免费技术直播分享】C++11线程池设计与实现1.开发中用多线程还是多进程2.如何使用C++11新特性实现线程池3.如何实现多参数任务的支持4.如何等待任务执行返回结果5.C++20都出来了,别再说自己不懂C++11了上课地址:https://ke.qq.com/course/417774?flowToken=1031343...原创 2021-10-28 20:00:54 · 237 阅读 · 0 评论 -
Linux内核网络协议栈 技术直播分享
【免费技术直播分享】剖析Linux内核网络协议栈1、NIC驱动程序及协议栈2、套接字缓冲区(sk_buff)原理3、网络设备接口分析上课讲师:vico老师上课地址:https://ke.qq.com/course/417774?flowToken=1031343原创 2021-10-27 20:00:48 · 203 阅读 · 0 评论