自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

weixin_52622200的博客

专注于C/C++Linux服务器开发/后台架构师

  • 博客(240)
  • 资源 (2)
  • 收藏
  • 关注

原创 2021年C/C++Linux服务器开发/后台架构师知识体系整理(持续更新中)

C/C++Linux服务器开发/后台架构师知识体系1. 精进基石专栏1.1 数据结构与算法面试必聊的排序与KMP随处可见的红黑树磁盘存储链式的B树与B+树海量数据去重的Hash与布隆过滤器,bitmap图论算法,di jkstra,dfs,bfs,动态规划1.2 设计模式创建型设计模式结构型设计模式行为型设计模式1.3 工程管理手写:Makefile/cmake/configure操作:git/svn与持续集成Linux系统运行时参数命令2. 高性能网络设计专栏2.1 网络编程网络io与select,pol

2021-07-05 21:22:44 1134 4

原创 腾讯T9职级后台开发要具备哪些专业的能力及知识点?

前言首先说明这里的后台开发指的就是Linux上的C+ +编程。因为很多人对后台开发有误解,通常人们说前端后台,后台就马上联想到web后台, java、php和各种web框架横飞的既视感。web后台属于后台,但后台却不只有web后台。两者是包含关系。从网络协议的角度分析, web后台聚焦的是HTTP ,而C+ +后台更多聚焦的是TCP。web后台可以看作是一个大后台最 靠前的东西,它解析了HTTP请求,然后可能层层转发给了后面整个分布式系统的许多组件,然后调用他们的服务。公司内部服务器主机之间绝大部分

2021-01-05 18:47:35 2786 7

原创 【零声教育】C/C++Linux服务器开发/高级架构师 课程

随着去年年底的疫情,很多线下的学习都变成了网课的形式,各种付费学习也萌生出来,很多决定要报名付费网课例如零声学院C/C++linux后台服务器高级架构师的程序员,报名之前总会问我这样一个问题,除了视频学习这些技术层面的我还可以得到什么提升?我也是就这个经常被问到的问题总结了一下,除了高质量的课程和系统的大纲体系优秀的讲师团队,以零声学院为例,培训C/C++linux后台服务器高级架构师他们还会:1.不定时请百万年薪大佬做职业分享。蚂蚁金服,中兴通讯,创业大佬,斗鱼等职场大佬,分享自己对技术,对产品,对

2021-12-08 20:39:09

原创 面试必问的C++11新特性代码实践

【免费技术直播分享】面试必问的C++11新特性代码实践1.通过线程池组件掌握C++11新特性3.如何实现多参数任务的支持4.如何等待任务执行返回结果5.C++20都出来了,别再说自己不懂C++11了上课讲师:darren老师上课地址:https://ke.qq.com/course/417774?flowToken=1031343面试必问的C++11新特性代码实践 讲解 面试必问的C++11新特性代码实践 |

2021-12-01 20:48:45 75

原创 音视频难点:该怎么学习流媒体服务器 (视频讲解)

音视频难点:该怎么学习流媒体服务器1.SRS流媒体服务器架构设计2.协程-连接之间的关系3.推流-转发-拉流之间的关系4.如何手把手调试SRS源码音视频难点:该怎么学习流媒体服务器 | FFmpeg/WebRTC/RTMP/NDK/Android 音视频难点:该怎么学习流媒体服务器 | FFmpeg/WebRTC/RTMP/NDK/Android 上课地址:https://ke

2021-11-29 20:13:05 8

原创 MongoDB分片(Sharding)技术

C/C++Linux服务器开发/后台架构师知识体系整理分片(sharding)是 MongoDB 用来将大型集合分割到不同服务器(或者说一个集群)上所采用的方法。尽管分片起源于关系型数据库分区,但 MongoDB 分片完全又是另一回事。和 MySQL 分区方案相比,MongoDB 的最大区别在于它几乎能自动完成所有事情,只要告诉 MongoDB 要分配数据,它就能自动维护数据在不同服务器之间的均衡。1. MongoDB分片介绍1.1 分片的目的高数据量和吞吐量的数据库应用会对单机的性能造成较大压力

2021-11-29 16:59:19 599

原创 MongoDB 分片集群技术

C/C++Linux服务器开发/后台架构师知识体系整理1. MongoDB复制集简介一组 Mongodb 复制集,就是一组 mongod 进程,这些进程维护同一个数据集合。复制集提供了数据冗余和高等级的可靠性,这是生产部署的基础。1.1 复制集的目的保证数据在生产部署时的冗余和可靠性,通过在不同的机器上保存副本来保证数据的不会因为单点损坏而丢失。能够随时应对数据丢失、机器损坏带来的风险。换一句话来说,还能提高读取能力,用户的读取服务器和写入服务器在不同的地方,而且,由不同的服务器为不同的用户提供服

2021-11-29 16:25:57 169

原创 【dpdk/网络协议栈/vpp/ovS/DDos /SDN/NFV/虚拟化】系统性学习

dpdk网络dpdk框架dpdk源码性能测试课程参数课程咨询:https://ke.qq.com/course/417774?flowToken=1031343学习交流群960994558

2021-11-24 21:13:11 1032

原创 高性能服务器通信协议设计之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 531

原创 DPDK 学习 网络协议栈-vpp-OvS-DDos-虚拟化专家之路

一、什么是DPDK对于用户来说,它可能是一个性能出色的包数据处 理加速软件库;对于开发者来说,它可能是一个实践包处理新想法的创 新工场;对于性能调优者来说,它可能又是一个绝佳的成果分享平台。DPDK 用软件的方式在通用多核处理器上演绎着数据包处理的新篇 章,而对于数据包处理,多核处理器显然不是唯一的平台。支撑包处理 的主流硬件平台大致可分为三个方向。硬件加速器网络处理器多核处理器在类似 IA(Intel Architecture)多核处理器为目标的平台上,网络数据包处理远早于 DPDK 而.

2021-11-22 21:40:07 1505

原创 源码阅读:从三个重量级的开源框架看线程池的应用

【免费技术分享】源码阅读:从三个重量级的开源框架看线程池的应用redis 6.0 io线程池nginx 阻塞io 线程池skynet worker 线程池上课讲师:mark老师上课地址:https://ke.qq.com/course/417774?flowToken=1031343...

2021-11-22 20:25:05 576

原创 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 1538

原创 毕业或者想转行做c++服务端开发的时候都很迷茫不知道从哪里开始学习?

C/C++Linux服务器开发/高级架构师

2021-11-09 22:27:27 513 1

原创 c++新特性、内存屏障原理剖析

【免费技术直播分享】这节课只聊单例,细节有点多6个版本单例迭代c++新特性、内存屏障原理剖析设计模式到底怎么学?上课讲师:mark老师上课地址:https://ke.qq.com/course/417774?flowToken=1031343...

2021-11-03 20:10:42 317

转载 Nginx slab 分配机制

C/C++Linux服务器开发/后台架构师知识体系1、引言众所周知,操作系统使用伙伴系统管理内存,不仅会造成大量的内存碎片,同时处理效率也较低下。SLAB是一种内存管理机制,其拥有较高的处理效率,同时也有效的避免内存碎片的产生,其核心思想是预分配。其按照SIZE对内存进行分类管理的,当申请一块大小为SIZE的内存时,分配器就从SIZE集合中分配一个内存块(BLOCK)出去,当释放一个大小为SIZE的内存时,则将该内存块放回到原有集合,而不是释放给操作系统。当又要申请相同大小的内存时,可以复用之前被回收的

2021-11-02 20:43:01 25

原创 布隆过滤器、hyperloglog、分布式一致性

【免费技术直播分享】布隆过滤器、hyperloglog、分布式一致性hash的特性分析布隆过滤器原理以及应用hyperloglog原理以及应用分布式一致性原理以及应用上课地址:https://ke.qq.com/course/417774?flowToken=1031343...

2021-10-30 19:57:12 10

原创 手把手带你用dpdk实现tcp网络传输

【免费技术直播分享】手把手带你用dpdk实现tcp网络传输(只讲一次)dpdk 的hugepage与网口dpdk的udp传输手撕tcp网络协议栈三次握手的实现数据传输的实现四次挥手的实现上课讲师:king老师上课地址:https://ke.qq.com/course/417774?flowToken=1031343...

2021-10-29 20:03:38 29

原创 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 24

原创 Nginx进程间的通信

C/C++Linux服务器开发/后台架构师知识体系进程间消息传递共享内存共享内存还是Linux下提供的最主要的进程间通信方式,它通过mmap和shmget系统调用在内存中创建了一块连续的线性地址空间,而通过munmap或者shmdt系统调用可以释放这块内存。使用共享内存的优点是当多个进程使用同一块共享内存时,在不论什么一个进程改动了共享内存中的内容后,其它进程通过訪问这段共享内存都可以得到改动后的内容。Nginx定义了ngx_shm_t结构体。用于描写叙述一块共享内存,typedef struct

2021-10-28 16:56:52 16

原创 Linux内核网络协议栈 技术直播分享

【免费技术直播分享】剖析Linux内核网络协议栈1、NIC驱动程序及协议栈2、套接字缓冲区(sk_buff)原理3、网络设备接口分析上课讲师:vico老师上课地址:https://ke.qq.com/course/417774?flowToken=1031343

2021-10-27 20:00:48 17

转载 Nginx 反向代理详解

反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。什么是反向代理反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。有反向代理,当然也存在正

2021-10-26 21:22:45 59

原创 风口上的音视频技术,如何学习

音视频学习的痛点a.音视频相关的书籍缺乏b.网上的demo老跑不起来c.没有工程级别的项目实战经验d.实际项目不知如何入手e.遇到问题不知如何下手分析为什么要学习音视频开发技术?开发薪水:在BOOS直聘公开统计中,音视频行业的工资10k-20k占12%,20k-30k占45%,30k-k占35%,35k以上占13%。主要分布在20k-35k之间,想要取得一个不错的薪资,如果只是简简单单开发四大组件是不可能拿到这么高薪资的。音视频开发薪资这么高主要就是因为音视频技术人才非常稀缺,很少有人会完整的

2021-10-23 14:40:00 16

原创 Redis主从同步原理

主从架构主从架构设计的思路大概如下:只有一台主服务器,只负责写入数据,不负责读取数据。多台从服务器,不写入数据,只负责同步主服务器的数据,提供外部程序读取。主服务器写入数据后,将命令发送到从服务器,使主从数据同步。应用程序可以读取某一台从服务器的数据,负载均衡。当某些从服务器瘫痪时,系统影响不大。当主服务器瘫痪时,选举某一台从服务器成为主服务器Redis主从同步图中左边的流程是主服务器,而右边的流程为从服务器。无论如何要先保证主服务器的开启,开启主服务器后,从服务器通过命令或者重启

2021-10-14 16:58:20 11

原创 C/C++服务器开发/后端开发 学习、面试总结 经验分享

C/C++发展方向后台/服务器桌面客户端图形学/游戏/VR/AR测试开发网络安全/逆向嵌入式/物联网音视频/流媒体/SDK计算机视觉/机器学习什么是后端/后台/服务器开发?经常在各大公司招聘上看到后端、后台、服务器开发等等,有些同学经常被这些名词搞混。其实这些名词都是相近的,但是也有点区别,这里说说我的理解:首先一般公司分为前端和后端,前端就是和用户打交道的,负责用良好的视觉效果将数据呈现给用户,广义的前端包括客户端(安卓、IOS)、Web前端、小程序等。而与之对应的后端则是负

2021-10-12 20:21:21 125

转载 MySQL分表时机

C/C++Linux服务器开发/后台架构师知识体系整理以交友平台用户中心的user表为例,单表数据规模达到千万级别时,你可能会发现使用用户筛选功能查询用户变得非常非常慢,明明查询命中了索引,但是,部分查询还是很慢,这时候,我们就需要考虑拆分这张user表了。如果此时,我们才去做分表,可能已经太晚了,为什么呢?我以最典型的应用场景:用户筛选功能,以查询年龄在18到24岁的100位女性用户为例:在单表的情况下,我们的SQL是这么写的:SELECT * FROM user WHERE age >=

2021-09-28 17:20:39 10

原创 Redis 数据类型及应用场景

C/C++Linux服务器开发/后台架构师Redis 数据类型及应用场景一、 redis 特点二、 设计 Redis Key分段设计法三、 String数据类型的应用场景1. 简介2. 数据模型3. 应用场景四、hash 数据类型的应用场景1. 简介2. 数据模型3. 应用场景五、list 数据类型的应用场景1. 简介2. 数据模型3. 应用场景4.优化建议六、set 数据类型的应用场景1. 简介2. 数据模型3. 应用场景1. “共同好友列表”七、sorted set 数据类型的应用场景1.简介2.应用

2021-09-22 20:25:23 15

转载 Redis主从复制的功能及实现原理

C/C++Linux服务器开发/后台架构师Redis主从复制Redis作为一个内存数据库主从复制过程:Redis的数据同步过程:关于部分复制有以下几点说明:Redis主从复制会存在以下问题:哨兵的功能哨兵的原理Redis是C语言开发的一个开源的(遵从BSD协议)高性能键值对(key-value)的内存数据库,可以用作数据库、缓存、消息中间件等。它是一种NoSQL(not-only sql,泛指非关系型数据库)的数据库。Redis作为一个内存数据库1、性能优秀,数据在内存中,读写速度非常快,支持并发1

2021-09-22 15:56:32 25

原创 redis原理分析

C/C++Linux服务器开发/后台架构师知识体系Redis是什么Key-Value形式的NoSQL存储系统内存数据库redis单点吞吐量单点TPS达到8万/秒,QPS达到10万/秒。redis的5种存储类型string、list、set、map(hash)、stored-setredis的string类型能表达3种类型:字符串、整数和浮点数。根据场景相互间自动转型,并且根据需要选取底层的承载方式value内部以int、sds作为结构存储。int存放整型数据,sds存

2021-08-31 16:55:54 35

转载 Redis相关命令详解

相关命令详解1 常用命令keys * :获取所有的keysselect 0 :选择第一个库move key dbindex :将当前的key移动到某个数据库,目标库有,则不能移动 。flushdb :清除数据库 randomkey :从当前数据库随机返回type key :查看key的类型del key :删除key exists key 判断是否存在key expire key 10 :10秒过期ttl key :查看还有多少秒过期 ,-1表示永不过期,-2表示已经过期pe

2021-08-28 16:25:53 29

原创 事件驱动库 libev 使用详解

C/C++Linux服务器开发/后台架构师知识体系libev 是一个通过 C 语言编写的,高性能的事件循环库,支持多种事件类型,与此类似的事件循环库还有 libevent、libubox 等,在此详细介绍下 libev 相关的内容。简介这是一个简单而且高性能的事件库,支持常规的 IO、定时器等事件,而且没有任何依赖,同时支持多线程模式。关于 libev 详见官网 http://software.schmorp.de (国内会被墙),其帮助文档可以参考 官方文档,安装完之后,可通过 man 3 ev

2021-08-26 15:56:45 90

转载 TCP协议详解 滑动窗口

C/C++Linux服务器开发/后台架构师知识体系TCP协议作为基本的传输控制协议,提供了面向连接的、可靠的通信机制。由于其优越的特性,被广泛应用于网络通信中,成为了今天互联网的基石。其为了屏蔽网络底层种种复杂的因素做出了巨大的努力,同时也导致了TCP内部各种机制之间的相互作用,让初接触它的人们很难理清头绪。本文就从TCP的传输窗口这个点切入,带领大家一睹TCP实现机制的风采。1. 前言我们大部分业务都建立在TCP之上,而且都经过框架层层的封装,让人很难看清其中的奥妙。但在和外部机构(如银行)交互的过

2021-08-25 16:37:38 20

转载 TCP协议详解 定时器

C/C++Linux服务器开发/后台架构师知识体系连接建立(connection establishment)定时器这个定时器由TCP_KEEP计数器实现/** Keep-alive timer went off; send something* or drop connection if idle for too long.*/case TCPT_KEEP:tcpstat.tcps_keeptimeo++; if (tp->t_state < TCPS_ESTAB

2021-08-25 16:15:58 37

转载 openssl的介绍和使用

openssl简介OpenSSL是一个安全套接字层密码库,其包括常用的密码算法、常用的密钥生成和证书封装管理功能及SSL协议,并提供了丰富的应用程序以供测试。OpenSSL 是一个开源项目,其组成主要包括一下三个组件:openssl:多用途的命令行工具libcrypto:加密算法库libssl:加密模块应用库,实现了ssl及tlsopenssl 可以实现:秘钥证书管理、对称加密和非对称加密更多简介和官网。openssl命令工具有两种运行模式:交换模式和批处理模式。直接输入openssl回车

2021-08-24 19:36:00 94

转载 Protobuf:一种更小、更快、更高效的协议

Protobuf介绍Protobuf (Protocol Buffers) 是谷歌开发的一款无关平台,无关语言,可扩展,轻量级高效的序列化结构的数据格式,用于将自定义数据结构序列化成字节流,和将字节流反序列化为数据结构。所以很适合做数据存储和为不同语言,不同应用之间互相通信的数据交换格式,只要实现相同的协议格式,即后缀为proto文件被编译成不同的语言版本,加入各自的项目中,这样不同的语言可以解析其它语言通过Protobuf序列化的数据。目前官方提供c++,java,go等语言支持。下面表格是支持语言的

2021-08-24 17:27:34 133

转载 Linux高性能I/O框架库Libevent介绍

这篇文章主要讲一下Libevent库的内容,顺便对I/O库整体做个介绍。Linux服务器程序必须处理的三类事件:I/O事件信号定时事件在处理这三类事件时我们通常需要考虑如下三个问题:统一事件源。很明显,统一处理这三类事件既能使代码简单易懂,又能避免一些潜在的逻辑错误。可移植性。不同的操作系统具有不同的I/O复用方式,比如Solaris的dev/poll文件,FressBSD的kqueue机制,Linux的epoll系统调用对并发编程的支持,在多进程和多线程环境下,我们需要考虑各执行实体

2021-08-21 15:35:50 45

转载 高性能服务开发之定时器

在开发高性能服务器中,定时器总是不可或缺的。 常见的定时器实现三种,分别是:排序链表,最小堆,时间轮。应用场景分析: 下面就一个实际例子来说定时器的使用。场景: 客户端发起的网络请求,需要对每个请求做超时检查。方案1:一个定时器,一个mulimap<endtime, request>保存请求超时列表, 每次超时时检查mulimap。这样,请求的插入时间复杂度为O(lgn), 遍历和删除为O(1)。且需要额外的编码。方案2:一个请求一个定时器,如此便无需额外的开销来保存请求。已无需额外的编

2021-08-18 22:16:54 24

原创 时间轮定时器分析

C/C++Linux服务器开发/后台架构师知识体系时间轮算法(Timing-Wheel)很早出现在linux kernel 2.6中。因效率非常高,很多应用框架都实现了这个算法。还有些定时器使用最小堆实现,但总体来说,时间轮算法在插入性能上更高。时间轮分成多个层级,每一层是一个圈,和时钟类似当个位的指针转完一圈到达0这个刻度之后,十位的指针转1格;当十位的转完一圈,百位的转1格,以此类推。这样就能表示很长的度数。时间轮能表达的时间长度,和圈的数量以及每一圈的长度成正比。假设有5圈,每个圈60个刻度,

2021-08-18 21:56:38 35

原创 什么是消息队列?

C/C++Linux服务器开发/后台架构师知识体系一、消息队列概述消息队列中间件是分布式系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构。目前使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ二、消息队列应用场景以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。2.1异步处理场景说明:用户注册后,需要发注册邮件和注册短信。传统的做法有两种

2021-08-17 20:57:34 120

转载 MySQL缓存机制 分析

在当今的各种系统中,缓存是对系统性能优化的重要手段。MySQL Query Cache(MySQL查询缓存)在MySQL Server中是默认打开的,但是网上各种资料以及有经验的DBA都建议生产环境中把MySQL Query Cache关闭。按道理,MySQL Server默认打开,是鼓励用户使用缓存,但是大拿们却建议关闭此功能,并且国内各个云厂商提供的MySQL云服务中默认都是关闭这个功能,这是为什么?他们在使用中遇到了什么坑?本文将会从以下几方面来详解MySQL Query Cache。一、 MySQ

2021-08-16 22:22:33 36

原创 MySQL 事务与 MVCC 原理 详解

什么是事务?数据库事务指的是一组数据操作,事务内的操作要么就是全部成功,要么就是全部失败,什么都不做,其实不是没做,是可能做了一部分但是只要有一步失败,就要回滚所有操作,有点一不做二不休的意思。在 MySQL 中,事务支持是在引擎层实现的。MySQL 是一个支持多引擎的系统,但并不是所有的引擎都支持事务。比如 MySQL 原生的 MyISAM 引擎就不支持事务,这也是 MyISAM 被 InnoDB 取代的重要原因之一。1、 四大特性原子性(Atomicity):事务开始后所有操作,要么全部做完

2021-08-16 21:42:12 40

Linux内核驱动与应用开发全套学习资料.rar

Linux内核驱动与应用开发全套学习资料

2021-07-02

C/C++Linux设计模式.mp4

C/C++Linux设计模式.mp4

2021-01-30

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除