自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(605)
  • 收藏
  • 关注

原创 5G时代很火的音视频高级开发学习路线及知识点总结

我们先假设某人在音视频方面是零基础,也没学过任何数字信号处理相关知识,数学基础基本是高中水准,但是熟悉 C/C++ 开发,至少熟悉某一个平台下的编译调试IDE。着重研究两个开源项目 ffmpeg 和 webRTC,主要看ffmpeg的视频部分和webRTC的音频部分。首先,从视频解码入手,这个最简单,调用 ffmpeg视频解码的基本代码只有100行左右,视频解码只要搞懂h.264就好了,80%+场景都是这个编码格式了,了解基本的 H.264 的 sps pps NAL等文件格式概念,了解YUV图像格式原

2021-01-16 14:19:36 2889 5

原创 C/C++ Linux后台服务器开发高级架构师学习知识点路线总结(2021架构师篇完整版)

C/C++ Linux后台服务器开发高级架构师学习知识点路线总结(2021架构师篇完整版)前言:小编之前有跟大家分享过一篇架构师体系知识点总结的文章,今天在原来的基础上有所改变更新(2021版)。相信大家也知道,想要成为一名架构师肯定是需要一定的时间经验累积,才可以达到架构师的水平,今天分享的是成为架构师需要掌握的技术知识点,尽量的完善,目前对标的是知名企业腾讯、阿里等等后端开发岗位。今天更新的内容是从Linux高级互联网架构师知识点说起,基础的知识点今天在这里就不写出来了,有需要了解的朋友

2020-12-28 20:18:00 7506 9

原创 【职业篇】Linux服务器开发架构师, 高屋建瓴谈谈知识体系的建立丨职业方向就业分析解决你的就业疑虑

Linux服务器开发架构师, 高屋建瓴谈谈知识体系的建立丨职业方向就业分析解决你的就业疑虑应届生就业方向选择,行业选择决定了职业的高度分析,1-3年,3-7年,7-10年,纯度比较高技术(方向)栈1.同样毕业院校,5年后为什么差别这么大2.行业选择决定了职业的高度3.纯度比较高技术(方向)栈【职业篇】Linux服务器开发架构师, 高屋建瓴谈谈知识体系的建立丨职业方向就业分析解决你的就业疑虑更多Linux服务器开发高阶完整视频分享,复制链接到网页免费观看:https://...

2020-11-19 15:18:03 275 1

原创 Linux 服务器开发学习路线总结(配图 c/c++ )后台开发、Golang后台开发、后端技术栈

本文总结了目前互联网行业Linux c/c++ 后端岗位开发工程师、服务器开发架构师以及Golang开发工程师技术栈知识点、大家可以看看还有没有需要补充的。Linux后台开发工程师专栏一、算法与设计专题二、后台组件编程专题三、代码化过程专题视频文档资料获取+1035101242(VX同号)。系统学习视频链接:https://ke.qq.com/course/417774?flowToken=1013189四、网络服务专题...

2020-09-11 16:12:24 2262

原创 详解Redis的主从同步原理

Redis为了保证服务高可用,其中一种实现就是主从模式,即一个Redis服务端作为主节点,若干个Redis服务端作为主节点的从节点,从而实现即使某个服务端不可用时,也不会影响Redis服务的正常使用。本篇文章将对主从模式中为了保证主节点和从节点数据一致而实现的主从同步机制进行学习。Redis主从模式中,一个高可用的Redis服务由一个Redis主节点(Master,后续简称为主节点)和若干Redis从节点(Slave,后续简称为从节点)组成。Redis中采用。

2023-03-07 17:03:24 953 1

原创 设计模式第八讲:观察者模式和中介者模式详解

(1). 定义指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式模型-视图模式,它是对象行为型模式。PS: 观察者模式是 【1对多】的关系,后面的中介者模式是 【多对多】的关系。(2). 优点:A. 降低了目标与观察者之间的耦合关系,两者之间是抽象耦合关系。B. 目标与观察者之间建立了一套触发机制。(3). 缺点:A. 目标与观察者之间的依赖关系并没有完全解除,而且有可能出现循环引用。

2023-02-23 20:36:32 521

原创 设计模式第七讲-外观模式、适配器模式、模板方法模式详解

(1). 定义是一种通过为多个复杂的子系统提供一个一致的接口,而使这些子系统更加容易被访问的模式。该模式对外有一个统一接口,外部应用程序不用关心内部子系统的具体的细节,这样会大大降低应用程序的复杂度,提高了程序的可维护性。(2). 优点A. 降低了子系统与客户端之间的耦合度,使得子系统的变化不会影响调用它的客户类。B. 对客户屏蔽了子系统组件,减少了客户处理的对象数目,并使得子系统使用起来更加容易。

2023-02-17 14:38:49 465

原创 设计模式第六讲:责任链模式和迭代器模式详解

(1). 定义:为了避免请求发送者与多个请求处理者耦合在一起,将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。PS:责任链模式也叫职责链模式。在责任链模式中,客户只需要将请求发送到责任链上即可,无须关心请求的处理细节和请求的传递过程,所以责任链将请求的发送者和请求的处理者解耦了。(2). 优点:A. 降低了对象之间的耦合度。

2023-02-15 15:09:54 464

原创 设计模式第五讲-装饰器模式和代理模式详解

(1). 定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。(2). 优点:A. 采用装饰模式扩展对象的功能比采用继承方式更加灵活。B.可以设计出多个不同的具体装饰类,创造出多个不同行为的组合。(3). 缺点装饰模式增加了许多子类,如果过度使用会使程序变得很复杂。(1). 定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。

2023-02-14 14:32:37 653

原创 设计模式-值类型与引用类型、深拷贝与浅拷贝、原型模式详解

(1). 分类值类型包括:布尔类型、浮点类型(float、double、decimal、byte)、字符类型(char)、整型(int、long、short等)、枚举(entum)、结构体(struct)。引用类型:数组、字符串(string)、类、接口、委托(delegate)。(2).内存存储值类型数据存放在栈stack中, 引用类型地址存放栈stack中,数据存放在堆heap中。值类型变量声明后,不管是否赋值,都会在在栈中分配内存空间。

2023-02-11 17:47:34 678

原创 设计模式-组合模式和建筑者模式详解

(1). 定义:有时又叫作部分-整体模式,它是一种将对象组合成树状的层次结构的模式,用来表示“部分-整体”的关系,使用户对单个对象和组合对象具有一致的访问性。(2). 优点:A. 组合模式使得客户端代码可以一致地处理单个对象和组合对象,无须关心自己处理的是单个对象,还是组合对象,这简化了客户端代码;B. 更容易在组合体内加入新的对象,客户端不会因为加入了新的对象而更改源代码,满足“开闭原则”;(3). 缺点A. 设计较复杂,客户端需要花更多时间理清类之间的层次关系;B. 不容易限制容器中的构件。

2023-02-10 20:35:05 798

原创 设计模式-策略模式详解

(1) 定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。(2) 优点:A. 多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句。B. 策略模式提供了一系列的可供重用的算法族,恰当使用继承可以把算法族的公共代码转移到父类里面,从而避免重复的代码。

2023-02-09 14:25:23 407 1

原创 设计模式-工厂方法模式和抽象工厂模式

(1). 定义:定义一个创建产品对象的工厂接口,然后把产品对象的实际创建工作放到具体的子类工厂当中实现。PS:① 我们把被创建的对象成为“产品”,创建产品的对象称为“工厂”。如果创建的产品不多,且基本不会增加新产品,只需要一个工厂类即可,这种模式叫做“简单工厂”,它不属于23种设计模式,它的缺点是违背了开闭原则。② 此处的介绍的‘抽象工厂’,是对简单工厂模式的进一步抽象化,其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则。

2023-02-08 17:10:26 434

原创 单线程 Redis 如此之快的 4 个原因

作为内存中数据存储,Redis 以其速度和性能着称,通常被用作大多数后端服务的缓存解决方案。但是,在内部,Redis 采用单线程架构。为什么单线程设计依然会有这么高的性能?如果利用多线程并发处理请求不是更好吗?在本文中,让我们深入探讨为什么 Redis 才有单线程架构,依然如此之快,主要从下面4个方面讲解。内存数据存储优良的数据结构单线程架构非阻塞IO让我们一一剖析。综上所述,单线程架构是Redis团队经过时间考验的深思熟虑的选择。

2023-02-07 16:30:45 1540 1

原创 「AVL平衡树专项」带你领略常用的AVL树与红黑树的奥秘(规则篇)

满足下列条件的二叉搜索树是红黑树每个结点要么是“红色”,要么是“黑色”所有的叶结点都是空结点,并且是“黑色”的。如果一个结点是“红色”的,那么它的两个子结点都是“黑色”的。(注:也就是說,如果結點是黑色的,那么它的子節點可以是紅色或者是黑色的)。结点到其子孙结点的每条简单路径都包含相同数目的“黑色”结点根结点永远是“黑色”的之所以称为红黑树的原因就在于它的每个结点都被“着色”为红色或黑色。这些结点颜色被用来检测树的平衡性。

2023-02-04 14:49:53 565

原创 深入浅出学习透析Nginx服务器的架构分析及原理分析「底层技术原理+运作架构机制」

Nginx再次回顾也许你已经忘记了Nginx是做什么的?我来再次给你夯实一下概念。多协议反向代理Nginx是个高性能的Web和反向代理服务器及HTTP服务器,它能反向代理HTTP,HTTPS和邮件相关(SMTP,POP3,IMAP)的协议链接,还可以提供了负载均衡以及HTTP缓存。

2023-02-03 15:16:12 1173

原创 宕机了,Redis 如何避免数据丢失?

如果有人问你:"你会把 Redis 用在什么业务场景下?我想你大概率会说:"我会把它当作缓存使用,因为它把后端数据库中的数据存储在内存中,然后直接从内存中读取数据,响应速度会非常快。没错,这确实是 Redis 的一个普遍使用场景,但是,这里也有一个绝对不能忽略的问题:一旦服务器宕机,内存中的数据将全部丢失。目前,Redis 的持久化主要有两大机制,即AOF(Append Only File)日志和 RDB(Redis DataBase) 快照。

2023-02-02 14:42:32 367

原创 一文揭晓,我是如何在Linux中查找自如

以上操作我们能够通过 find 命令来查找结果,但更多时候我们真正想做的是对结果执行某些特殊操作。当我们想要删除 /Users/cbuc/testdir/dir2 这个目录时,我们可以通过以上认识到的操作先进行查找然后使用 -delete 命令来删除当前匹配的文件可以发现, /Users/cbuc/testdir/dir2 这个目录已经被删除了除了删除操作,还可以进行以下几种常见的操作:-delete:删除当前匹配的文件-ls:对匹配的文件执行相当于 ls -dils 命令的操作。

2023-02-01 16:55:32 292

原创 MySQL 中主从之间是怎样保证数据一致的呢?

今天,我们介绍了 MySQL 数据库主从复制过程中可能会遇到的一些问题。其中最主要的就是 binlog 日志在 STATEMENT 类型下有着存储数据量小的优点,但是也有导致数据不一致的情况;ROW 类型能够有效地解决数据不一致这种情况,但是也有存储数据量大这一缺点;MySQL 数据库结合前面两种类型的优点,又为我们提供了一个 mixed 类型。在日常的生产环境中,常用的 binlog 日志类型就是 mixed 类型。原文链接:MySQL 中主从之间是怎样保证数据一致的呢?

2023-01-31 16:04:34 1245

原创 树与二叉树深度剖析(二)

(1). 第一个节点先成为表示树的根(2). 第二个结点插入时变为根,原根结点变为新结点的左孩子。(3). 插入节点为数字时,沿根结点右链插入到最右端。(4). 插入节点为操作符时,先与根结点操作符优先级对比。a.优先级不高时,新结点成为根结点,原表达式成为新结点的左子树。b.优先级高时,新结点成为根结点的右孩子,原根结点的右孩子成为新结点的左子树。代码分享:/// 树节点类set;} //左孩子set;} //右孩子set;} //数据} //是否为操作符/// 数据构造。

2023-01-29 14:54:51 238

原创 树与二叉树深度剖析(一)

(1) 树结构是一种非线性存储结构,存储的是具有“一对多”关系的数据元素的集合。(2) 树(Tree)是n(n≥0)个节点(Node)的有限集合。在任意一颗非空树中,有且仅有一个特定的成为根(Root)的节点,当n>1时,其余节点分成m(m>0)个互不相交的有限集T1,T2,……,Tm,其中每一个集合本身又是一棵树,并且称为根的子树。树的定义是递归的,即在树的定义中又用到了树的概念,它刻画了树固有的特性,即一棵树有若干个子树构成,而子树又由更小的若干子树构成。

2023-01-28 16:13:43 552

原创 从状态机的角度async和await的实现原理

(1).含义:通常我们所说的状态机(State Machine)指的是有限状态自动机的简称,是现实事物运行规则抽象而成的一个数学模型,可以理解成一个状态转换图。(状态机是计算机科学的重要基础概念之一,也可以说是一种总结归纳问题的思想,应用范围非常广泛)(2).例子:自动门有两个状态,open 和 closed ,closed 状态下,如果读取开门信号,那么状态就会切换为 open。

2023-01-13 14:30:43 661

原创 怎样快速地迁移 MySQL 中的数据?

我们可以看到的是查询数据的时候报了一个 1146 的错误,这是因为 INnoDB 存储引擎中的数据表是需要在 MySQL 数据库的数据字典中注册的,我们直接将数据文件复制过去的时候并没有在数据字典中注册,换句话说就是在把数据复制过去之后,还需要在数据字典中注册数据库系统才能正常识别。更多C++后台开发技术点知识内容包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,音视频开发,Linux内核,TCP/IP,协程,DPDK多个高级知识点。

2023-01-12 14:37:52 544

原创 TiDB 底层存储结构 LSM 树原理介绍

LSM 树(Log-Structured-Merge-Tree) 日志结构合并树由 Patrick O’Neil 等人在论文《The Log-Structured Merge Tree》(www.cs.umb.edu/~poneil/lsm…LSM 树的核心特点是利用顺序写来提高写性能,代价就是会稍微降低读性能(读放大),写入量增大(写放大)和占用空间增大(空间放大)。

2023-01-11 15:02:26 358

原创 从实战出发,聊聊缓存数据库一致性

在云服务中,缓存是极其重要的一点。所谓缓存,其实是一个高速数据存储层。当缓存存在后,日后再次请求该数据就会直接访问缓存,提升数据访问的速度。但是缓存存储的数据通常是短暂性的,这就需要经常对缓存进行更新。而我们操作缓存和数据库,分为读操作和写操作。读操作的详细流程为,请求数据,如缓存中存在数据则直接读取并返回,如不存在则从数据库中读取,成功之后将数据放到缓存中。

2023-01-10 15:33:30 525

原创 MySQL字符集和排序规则详解

更多C++后台开发技术点知识内容包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,音视频开发,Linux内核,TCP/IP,协程,DPDK多个高级知识点。排序规则的命令通常是以对应的字符集的名字为开头,并以自己的特定属性结尾,比如排序规则utf8_general_ci和latin1_swedish_ci就分别是对应utf8和latin1字符集的排序规则。A. 当仅指定了字符集而没有指定排序规则时,则会使用该字符集的默认排序规则。

2023-01-07 14:24:18 843

原创 高性能网关基石——OpenResty

这边推荐使用 xxx_by_lua_file,它彻底分离了配置文件与业务代码,让两者可以独立部署,而且文件形式也让我们更容易以模块的方式管理组织 Lua 程序。更多C++后台开发技术点知识内容包括C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,音视频开发,Linux内核,TCP/IP,协程,DPDK多个高级知识点。【文章福利】另外还整理一些C++后台开发架构师 相关学习资料,面试题,教学视频,以及学习路线图,免费分享有需要的可以点击领取。

2023-01-04 14:59:25 943

原创 说透IO多路复用模型

在说IO多路复用模型之前,我们先来大致了解下Linux文件系统。在Linux系统中,不论是你的鼠标,键盘,还是打印机,甚至于连接到本机的socket client端,都是以文件描述符的形式存在于系统中,诸如此类,等等等等,所以可以这么说,一切皆文件。来看一下系统定义的文件描述符说明:从上面的列表可以看到,文件描述符0,1,2都已经被系统占用了,当系统启动的时候,这三个描述符就存在了。其中0代表标准输入,1代表标准输出,2代表错误输出。当我们创建新的文件描述符的时候,就会在2的基础上进行递增。

2022-12-29 15:32:04 543

原创 内网穿透你真的了解吗?

本文所介绍的内网穿透技术相关的实现方式其实在我们的日常开发生活中有更多的使用场景,当我们深入了解了当前 IP 地址以及内外网的实现方式后,我们不难发现,当我们将内网穿透的图片稍加修改后就成为了我们常用的另一种功能的实现方式(VPN实现原理):原文作者:内网穿透你真的了解吗?- 掘金。

2022-12-28 15:44:25 718

原创 MySQL的数据类型和存储引擎介绍

存储引擎是 MySQL 中具体与文件打交道的子系统,它是根据 MySQL AB 公司提供的文件访问层抽象接口定制的一种文件访问机制,这种机制就叫作存储引擎,下面是一些常用的存储引擎,有远古时期的 MyISAM、支持事务的 InnoDB、内存类型的 Memory、归档类型的 Archive、列式存储的 Infobright,以及一些新兴的存储引擎,以 RocksDB 为底层基础的 MyRocks 和 RocksDB,和以分形树索引组织存储的 TokuDB。InnoDB 支持外键,MyISAM 不支持;

2022-12-23 15:01:26 360

原创 Redis架构演变之主从、Sentinel哨兵、Cluster(通信、分片、路由等机制)

(1). 客户端分片方案A. 哈希取模:hash(key)% N,hash代表一种散列算法,N代表redis服务器的数量。这种算法实现起来非常简单,但是缺点也是非常明显的,当服务器数量N增加或者减少的时候,原先的缓存数据定位几乎失效,缓存数据定位失效意味着要到数据库重新查询,这对于高并发的系统来说是致命的。B. 一致性哈希算法:将key和server都进行hash,分配在闭环上,采用临近原则,key 找 离它最近的server节点进行存储。

2022-12-22 15:10:00 625

原创 消息中间件执行原理

消息中间件是指在分布式系统中完成消息的发送和接收的基础软件。消息中间件也可以称消息队列(Message Queue / MQ),用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型,可以在分布式环境下扩展进程的通信。简而言之,互联网场景中经常使用消息中间件进行消息路由、订阅发布、异步处理等操作,来缓解系统的压力。

2022-12-21 14:40:34 591

原创 数据存储,消息队列的高可用保障

理解好RabbitMQ 中 Broker 存储的组成要素 CommitLog,ConsumeQueue,IndexFile。当 Broker 收到消息存储请求时,通过调用 CommitLog 对应的 MappedFile,把消息写入MappedFile的MeppedByteBuffer(内存映射)。

2022-12-20 14:49:48 156

原创 性能优化-内存泄漏、内存溢出、cpu占用高、死锁、栈溢出、FullGC频繁检测手段-总结与分享

含义:内层溢出通俗理解就是内存不够,程序要求的内存超出了系统所能分配的范围。危害:内存溢出错误会导致处理数据的任务失败,甚至会引发平台崩溃等严重后果。应用程序CPU使用率高,甚至超过100%死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。Java 里的 StackOverflowError。抛出这个错误表明应用程序因为深递归导致栈被耗尽了。

2022-12-17 14:53:03 1919 2

原创 介绍四大并发集合类并结合单例模式下的队列来说明线程安全和非安全的场景及补充性能调优问题。

背景:我们目前使用的所有集合都是线程不安全的。:就是利用线程槽来分摊Bag中的所有数据,链表的头插法,0代表移除最后一个插入的值.(等价于同步中的List):线程安全的Stack是使用Interlocked来实现线程安全, 而没有使用内核锁.(等价于同步中的数组): 队列的模式,先进先出(等价于同步中的队列): 字典的模式(等价于同步中的字典)以上四种安全的并发集合类,也可以采用同步版本+Lock锁(或其它锁)来实现。

2022-12-16 15:06:11 190

原创 socket是并发安全的吗

1. 多线程并发读/写同一个TCP socket是线程安全的,因为TCP socket的读/写操作都上锁了。虽然线程安全,但依然不建议你这么做,因为TCP本身是基于数据流的协议,一份完整的消息数据可能会分开多次去写/读,内核的锁只保证单次读/写socket是线程安全,锁的粒度并不覆盖整个完整消息。因此建议用一个线程去读/写TCP socket。2. 多线程并发读/写同一个UDP socket也是线程安全的,因为UDP socket的读/写操作也都上锁了。

2022-12-15 16:23:37 210

原创 掌握分布式环境缓存更新策略,提高缓存与数据库双写一致性!

三种缓存模式优缺点:Cache Aside 更新模式实现起来比较简单,但是需要维护两个数据存储,一个是缓存(Cache),一个是数据库(Repository)。Read/Write Through 更新模式只需要维护一个数据存储(缓存),但是实现起来要复杂一些。

2022-12-13 15:42:01 170

原创 时间复杂度和空间复杂度

算法,即解决问题的方法。同一个问题,使用不同的算法,虽然得到的结果相同,但是耗费的时间和资源是不同的。就比如要拧一个螺母,使用扳手还是钳子是有区别的,虽然使用钳子也能拧螺母,但是没有扳手好用。“条条大路通罗马”,解决问题的算法有多种,这就需要判断哪个算法“更好”。

2022-12-12 15:13:06 111

原创 线性表→顺序表→链表 逐个击破

顺序表,全名"顺序存储结构",是线性表的一种。我们知道线性表是用来存储逻辑关系为 "一对一" 的数据,顺表也不例外。顺序表存储数据时,会提前申请一整块足够大小的物理空间,然后将数据依次存储起来,存储时做到数据元素之间不留一丝缝隙。例如,使用顺序表存储集合 {1,2,3,4,5},数据最终的存储状态如下图:由此我们可以得出,将“具有 '一对一' 逻辑关系的数据按照次序连续存储到一整块物理空间上”的存储结构就是顺序存储结构。顺序表存储数据同数组非常接近。其实,顺序表存储数据使用的就是数组。

2022-12-10 14:14:31 777

原创 Redis 为什么这么快,你知道 I/O 多路复用吗?

现在,我们知道啦,Redis 为什么快了吧。Redis 单线程是指在网络 I/O 和 键值的读写操作是有一个线程来完成的,采用单线程的好处是避免了多线程并发需要竞争获取锁。单线程之所以性能高效是因为其选择了 I/O 多路复用模型。搞懂了 select/epoll 这这些,慢慢会发现自己会逐渐比身边的伙伴优秀一些。原文链接:https://juejin.cn/post/7170712250880606221。

2022-12-09 14:39:29 174

空空如也

空空如也

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

TA关注的人

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