自定义博客皮肤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服务器开发/后台架构师

  • 博客(220)
  • 资源 (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 987 4

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

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

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

原创 Redis主从同步原理

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

2021-10-14 16:58:20 2

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

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

2021-10-12 20:21:21 24

转载 MySQL分表时机

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

2021-09-28 17:20:39 7

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

转载 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 21

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

转载 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 27

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

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

2021-08-26 15:56:45 37

转载 TCP协议详解 滑动窗口

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

2021-08-25 16:37:38 16

转载 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 30

转载 openssl的介绍和使用

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

2021-08-24 19:36:00 42

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

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

2021-08-24 17:27:34 51

转载 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 31

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

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

2021-08-18 22:16:54 19

原创 时间轮定时器分析

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

2021-08-18 21:56:38 26

原创 什么是消息队列?

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

2021-08-17 20:57:34 52

转载 MySQL缓存机制 分析

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

2021-08-16 22:22:33 31

原创 MySQL 事务与 MVCC 原理 详解

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

2021-08-16 21:42:12 30

原创 应用层协议设计

C/C++Linux服务器开发/后台架构师知识体系整理应用协议概述在对外提供网络服务时,服务端和客户端需要遵循同一套数据 通讯协议每个系统不一样,提供的服务也不一样,因此每个系统都要有 自己的应用协议流式传输解决粘包和半包问题一个协议设计案例具体的代码协议设计的种类二进制协议比如网络通信运输层中的tcp协议,rtsp,rtmp,rtp。明文的文本协议比如应用层的http、redis协议。混合协议(二进制+明文)很多企业产品都采用这个。固定边界协议能够明确得知一

2021-08-14 16:19:00 34

转载 MySQL 表锁和行锁机制 分析

Linux服务器开发/后台架构师知识体系整理行锁变表锁,是福还是坑?如果你不清楚MySQL加锁的原理,你会被它整的很惨!不知坑在何方?没事,我来给你们标记几个坑。遇到了可别乱踩。通过本章内容,带你学习MySQL的行锁,表锁,两种锁的优缺点,行锁变表锁的原因,以及开发中需要注意的事项。还在等啥?经验等你来拿!MySQL的存储引擎是从MyISAM到InnoDB,锁从表锁到行锁。后者的出现从某种程度上是弥补前者的不足。比如:MyISAM不支持事务,InnoDB支持事务。表锁虽然开销小,锁表快,但高并发下性能低

2021-08-12 17:52:07 42

转载 MySQL索引和SQL调优

Linux服务器开发/后台架构师知识体系整理MySQL索引MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引。MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。MySQL索引原理索引目的索引的目的在于提高查询效率,可以类比字

2021-08-11 16:46:53 26

原创 Redis 内存模型详解

Linux服务器开发/后台架构师知识体系整理前言Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。我们使用Redis时,会接触Redis的5种对象类型(字符串、哈希、列表、集合、有序集合),丰富的类型是Redis相对于Memcached等的一大优势。在了解Redis的5种对象类型的用法和特点的基础上,进一步了解Redis的内存模型,对Redis的使用有很大帮助,例如:估算Redis内存使用量。目前为止,内存的使用成

2021-08-11 16:02:14 36

原创 MySQL 主从复制 分析详解

Linux服务器开发/后台架构师知识体系整理简介随着业务的增长,一台数据服务器已经满足不了需求了,负载过重。这个时候就需要减压了,实现负载均衡读写分离,一主一丛或一主多从。主服务器只负责写,而从服务器只负责读,从而提高了效率减轻压力。主从复制可以分为:主从同步:当用户写数据主服务器必须和从服务器同步了才告诉用户写入成功,等待时间比较长。主从异步:只要用户访问写数据主服务器,立即返回给用户。主从半同步:当用户访问写数据主服务器写入并同步其中一个从服务器就返回给用户成功。形式一主一从一

2021-08-10 22:26:26 41

原创 数据结构与算法 树

C/C++Linux服务器开发/后台架构师知识体系整理一、树的定义树(Tree)是n(n>=0)个节点的有限集。当n=0时成为空树,在任意一棵非空树中:有且仅有一个特定的称为根(Root)的节点当n>1时,其余节点可分为m(m>0)个互不相交的有限集T1 T2 T3 … Tm,其中每个集合本身又是一棵树,并且称为根的子树(SubTree)。二、节点分类节点拥有的子树数称为节点的度(Degree),树的度取树内各节点的度的最大值。度为0的节点称为叶节点或终端节点

2021-08-07 15:02:32 18

原创 数据结构与算法 线性表

一、线性表的定义线性表(List):由零个或多个数据元素组成的有限序列。这里需要强调几个关键的地方:首先它是一个序列,也就是说元素之间是有个先来后到的。若元素存在多个,则第一个元素无前驱,而最后一个元素无后继,而其他元素都有且只有一个前驱和后继。另外,线性表强调是有限的,事实上无论计算机发展多强大,它所处理的元素都是有限的。二、数据类型的定义数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称(整型、浮点型、字符型)。三、线性表的抽象数据类型Operatio

2021-08-07 14:40:03 37

原创 数据结构和算法 图

C/C++Linux服务器开发/后台架构师知识体系整理在线性表中,每个元素之间只有一个直接前驱和一个直接后继,在树形结构中,数据元素之间是层次关系,并且每一层上的数据元素可能和下一层中多个元素相关,但只能和上一层中的一个元素相关。但这仅仅都只是一对一,一对多的简单模型,如果要研究如人与人之间关系就非常复杂了。图的定义图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。对于图的定义,我们需要明确几个注意

2021-08-06 22:11:42 26

转载 并发编程 原子操作

i++和i–是线程安全的不?1. 操作的原子性实际上当我们操作i++的时候,其汇编指令为:从上图能看到一个i++对应的操作是:(1)把变量i从内存(RAM)加载到寄存器;(2)把寄存器的值加1;(3)把寄存器的值写回内存(RAM)。那如果有多个线程去做i++操作的时候,也就可能导致这样一种情况:上图这种执行情况就导致i变量的结果仅仅自增了一次,而不是两次,导致实际结果与预期结果不对。总结下上面的问题,也就是说我们整个存储的结构如下图:我们所有的变量首先是存储在主存(RAM)上,CP

2021-08-05 22:09:51 34

原创 最详细的Redis通信协议规范

C/C++Linux服务器开发/后台架构师知识体系整理理解Redis通信协议是深入理解Redis的基础内容之一,本号今天将官网关于Redis通信协议RESP的内容搬到这里,希望对大家有所帮助。官方原文:https://redis.io/topics/protocol介绍Redis客户端使用RESP(Redis的序列化协议)协议与Redis的服务器端进行通信。 虽然该协议是专门为Redis设计的,但是该协议也可以用于其他 客户端-服务器 (Client-Server)软件项目。RESP是对以下几件事情

2021-08-04 15:43:49 33

原创 hiredis的使用

Hiredis是一个Redis的C客户端库函数,基本实现了Redis的协议的最小集。这里对hiredis的api作基本的介绍以及应用,主要参考hiredis的README文件以及相关源码。1. hiredis的安装官网:https://redislabs.com/lp/hiredis/发行版本:https://github.com/redis/hiredis/releases目前最新的版本:https://codeload.github.com/redis/hiredis/tar.gz/v0.14.

2021-08-03 21:39:26 25

原创 为什么需要数据库连接池

不使用连接池TCP建立连接的三次握手(客户端与MySQL服务器的连接基于TCP协议)MySQL认证的三次握手真正的SQL执行MySQL的关闭TCP的四次握手关闭可以看到,为了执行一条SQL,却多了非常多我们不关心的网络交互。使用连接池第一次访问的时候,需要建立连接。 但是之后的访问,均会复用之前创建的连接,直接执行SQL语句。数据库连接池运行机制从连接池获取或创建可用连接;使用完毕之后,把连接返回给连接池;在系统关闭前,断开所有连接并释放连接占用的系统资源;...

2021-08-03 20:46:56 17

原创 mysql api c客户端

官网:https://dev.mysql.com/doc/refman/8.0/en/c-api.html1 API介绍1.1 初始化函数MYSQL *mysql_init(MYSQL *mysql)mysql 可以传 NULL返回值: 分配的句柄 MYSQL*指针1.2 设置连接选项int mysql_options(MYSQL *mysql, enum mysql_option option, const char *arg)描述可用于设置额外的连接选项,并影响连接的行为。可多次调

2021-08-02 22:19:17 29

转载 redis,memcached,nginx网络组件

网络编程主要关注3个半事件:连接建立(client连接/连接第三方服务);连接断开,消息达到,消息发送完毕。TCP网络服务模型,redis,nginx,memcached1 阻塞,非阻塞区别:阻塞io阻塞在哪? 阻塞在网络线程什么决定阻塞?fcntl函数设置阻塞具体内部差异: 网络io分为两个流程,数据准备阶段(网卡拷贝到内核空间),数据拷贝阶段(内核空间拷贝到用户空间),非阻塞是在数据准备阶段返回,但是在第二个阶段也还是阻塞的。2 epoll为何又多路复用?用一个线程检查多个io事件。

2021-07-31 19:47:10 24

转载 协程:如何快速地实现高并发服务?

C/C++Linux服务器开发/后台架构师知识体系整理零拷贝通过减少上下文切换次数,提升了文件传输的性能。事实上高并发服务也是通过降低切换成本实现的。如果你需要访问多个服务来完成一个请求的处理,比如实现文件上传功能时,首先访问 Redis 缓存,验证用户是否登陆,再接收 HTTP 消息中的 body 并保存在磁盘上,最后把文件路径等信息写入 MySQL 数据库中,你会怎么做?用阻塞 API 写同步代码最简单,但一个线程同一时间只能处理一个请求,有限的线程数导致无法实现万级别的并发连接,过多的线程切换

2021-07-30 21:21:26 52

转载 RING BUFFER的常规用法

C/C++Linux服务器开发/后台架构师知识体系整理环形缓冲区(RING BUFFER)的实现原理环形缓冲区通常有一个读指针和一个写指针(一个入指针和一个出指针)。读指针指向环形缓冲区中可读的数据,写指针指向环形缓冲区中可写的缓冲区。通过移动读指针和写指针就可以实现缓冲区的数据读取和写入。在通常情况下,环形缓冲区的读用户仅仅会影响读指针,而写用户仅仅会影响写指针。如果仅仅有一个读用户和一个写用户,那么不需要添加互斥保护机制就可以保证数据的正确性。如果有多个读写用户访问环形缓冲区,那么必须添加互斥保护机

2021-07-30 15:32:54 50

原创 网络 IO 服务器模型 Reactor 与 Proactor

C/C++Linux服务器开发/后台架构师知识体系网络 IO,会涉及到两个系统对象,一个是用户空间调用 IO 的进程或者线程,另一个是内核空间的内核系统,比如发生 IO 操作 read 时,它会经历两个阶段:等待数据准备就绪将数据从内核拷贝到进程或者线程中。因为在以上两个阶段上各有不同的情况,所以出现了多种网络 IO 模型服务器模型 Reactor 与 Proactor对高并发编程,网络连接上的消息处理,可以分为两个阶段:等待消息准备好、消息处理。当使用默认的阻塞套接字时(例如上面提到的

2021-07-28 20:48:07 65

转载 彻底搞懂Reactor模型和Proactor模型

在高性能的I/O设计中,有两个著名的模型:Reactor模型和Proactor模型,其中Reactor模型用于同步I/O,而Proactor模型运用于异步I/O操作。服务端的线程模型无论是Reactor模型还是Proactor模型,对于支持多连接的服务器,一般可以总结为2种fd和3种事件,如下图:2种fdlistenfd:一般情况,只有一个。用来监听一个特定的端口(如80)。connfd:每个连接都有一个connfd。用来收发数据。3种事件listenfd进行accept阻塞监听,创建一个c

2021-07-27 22:23:42 47

原创 Linux系统命令与网络、磁盘参数和日志监控

C/C++Linux服务器开发/后台架构师知识体系整理C/C++Linux服务器开发/后台架构师视频学习地址Linux服务器开发/后台架构师学习群:9609945581 基础命令和工具grep搜索字符grep 命令用于在文件中执行关键词搜索,并显示匹配的效果。部分常用选项参数作用-c仅显示找到的行数-i忽略大小写-n显示行号-v反向选择 – 仅列出没有关键词的行。v 是 invert 的缩写。-r递归搜索文件目录-C n打印匹配行

2021-07-27 16:35:55 490

原创 Epoll的实现原理

C/C++Linux服务器开发/后台架构师知识体系整理Epoll是Linux IO多路复用的管理机制。作为现在Linux平台高性能网络IO必须的组件。内核的实现可以参照:fs/eventpoll.c .为什么需要自己实现epoll呢?现在自己打算做一个用户态的协议栈。采用单线程的模式。https://github.com/wangbojing/NtyTcp,至于为什么要实现用户态协议栈?可以自行百度C10M的问题。由于协议栈做到了用户态故需要自己实现高性能网络IO的管理。所以epoll就自己实现一下

2021-07-26 22:06:28 46 1

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

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

2021-07-02

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

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

2021-01-30

空空如也

空空如也

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

TA关注的人 TA的粉丝

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