自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux后端服务器网络编程之线程模型丨reactor模型详解

前言  上一篇文章《后端服务器网络编程之 IO 模型》中讲到服务器端高性能网络编程的核心在于架构,而架构的核心在于进程/线程模型的选择。本文将主要介绍传统的和目前流行的进程/线程模型,在讲进程/线程模型之前需要先介绍一种设计模式: Reactor 模式,不明白的看这里《Reactor 模式详解》,文中有一句话对 Reactor 模式总结的很好,引用下。对Reactor 模式还不了解的朋友可以看看这个视频讲解:详解网络编程相关的细节处理丨 reactor模型Reactor 模式首先是事件驱动的,

2021-03-31 19:56:18 297

原创 90分钟详解网络编程相关的细节处理丨 reactor丨网络io丨epoll丨C/C++丨Linux服务器开发丨后端开发丨Linux后台开发

90分钟搞懂网络编程相关细节处理1.网络编程四要素2.io多路复用3.reactor三种基础封装方式视频讲解如下,点击观看:90分钟详解网络编程相关的细节处理丨 reactor丨网络io丨epoll丨C/C++丨Linux服务器开发丨后端开发丨Linux后台开发C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,Docker,TCP/IP,协程,D...

2021-03-31 16:51:14 118 1

原创 后端服务器网络编程之 IO 模型

基本概念  在编写服务器端网络程序时,我们最常见到阻塞、非阻塞、同步和异步这四个词。它们的解释分别如下: 阻塞: 阻塞调用是指调用返回之前,当前线程会被挂起,只有当调用得到结果后才返回。 非阻塞:与阻塞相反,非阻塞调用是指在不能立即得到结果之前,该函数不会将当前线程阻塞,而是立即返回。 同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。等前一件做完了才能做下一件事。 异步:异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结

2021-03-30 16:44:24 187

原创 后端开发必备——Nginx篇

概要防盗链 根据文件类型设置过期时间 静态资源访问 日志配置 日志字段说明 access_log 访问日志 error_log 日志 日志切割 反向代理 禁止指定user_agent nginx访问控制 负载均衡防盗链location ~* \.(gif|jpg|png)$ { # 只允许 192.168.0.1 请求资源 valid_referers none blocked 192.168.0.1; if ($invalid_refer

2021-03-29 16:25:21 328

原创 10年后端开发程序员精心整理「C/C++ Linux服务器」 成长路线(附思维导图)

前言从事开发行业也有10多年了,在摸爬滚打的工作这段时间里,深知了有一个「完整的知识体系」是非常重要的。当事人非常后悔没有在大学期间知道这个道理……众多大厂招人的需求也是非常注重此方面,毕竟我们不能单单只是一个只会写代码的程序员,更应该成为一个全面的工程师,能够迅速解决工作上的需求及众多问题。特此,我根据多年的开发经验总结了一份较为全面的【C/C++Linux 服务器开发】 成长路线知识点,我自己也是在跟着这份思维导图进一步的学习,希望这份路程也能伴随大家的成长。以下是整..

2021-03-27 21:09:11 677

原创 为防火墙打个洞,让你与外界亲密接触,感受底层开发的魅力丨C/C++丨Linux服务器开发丨后端开发丨NAT丨P2P丨网络穿透

为防火墙打个洞,让你与外界亲密接触,感受底层开发的魅力1.网关与防火墙原理2.4种网关nat类型3.3种网络穿透的原理视频讲解如下,点击观看:为防火墙打个洞,让你与外界亲密接触,感受底层开发的魅力丨C/C++丨Linux服务器开发丨后端开发丨NAT丨P2P丨网络穿透C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,Docker,TCP/IP,协程...

2021-03-27 16:28:24 161

原创 作为后端开发人员应该懂的TCP、HTTP、Socket、Socket连接池,一文详解丨Linux后端开发

前言:作为一名开发人员我们经常会听到HTTP协议、TCP/IP协议、UDP协议、Socket、Socket长连接、Socket连接池等字眼,然而它们之间的关系、区别及原理并不是所有人都能理解清楚,这篇文章就从网络协议基础开始到Socket连接池,一步一步解释他们之间的关系。文章比较长建议收藏点赞观看,文末有惊喜哦~~七层网络模型首先从网络通信的分层模型讲起:七层模型,亦称OSI(Open System Interconnection)模型。自下往上分为:物理层、据链路层、网络层、传输层、会话层、

2021-03-25 21:40:04 451

原创 详解如何处理海量定时任务

一节课让你搞懂王者荣耀如何处理海量定时任务1.定时器设计2.如何高效检测连接?3.时间轮实现以及应用精讲视频讲解如下,点击观看:王者荣耀如何处理海量定时任务丨Linux服务器开发丨后端开发丨Linux后台开发丨多线程丨C/C++C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点击...

2021-03-25 17:16:52 784

原创 SRS流媒体服务器架构设计及源码分析丨音视频开发丨C/C++音视频丨Android开发丨嵌入式开发

SRS流媒体服务器架构设计及源码分析1.SRS流媒体服务器架构设计2.协程-连接之间的关系3.推流-转发-拉流之间的关系4.如何手把手调试SRS源码视频讲解如下,点击观看:SRS流媒体服务器架构设计及源码分析丨音视频开发丨C/C++音视频丨Android开发丨嵌入式开发音视频高级开发学习资料链接:FFmpeg/WebRTC/RTMP音视频流媒体高级开发-学习视频...

2021-03-24 22:19:41 472

原创 音视频开发——通信直播协议和视频推流丨RTMP-RTSP

近年来直播已成为互联网行业的大热话题,直播答题、游戏直播、竞赛直播,抖音直播,直播教育等层出不穷,直播早已成为人们耳熟能详的技术。事实上直播的兴起不仅与新时代人们要求为自己代言的心理有关,同时也得益于带宽的提速和CDN技术的发展。伴随着CDN技术的成熟,企业自己部署云服务器做直播也越来越简单。本文作为直播介绍系列文,主要和大家谈谈直播协议、视频推流等技术内容1.直播协议(文末附上学习路线导图)流媒体分为直播和点播。通常来说点播使用的都是HTTP协议,直播主要用的是RTMP, HLS, HTTP-

2021-03-24 14:41:44 526

原创 全面剖析redis分布式锁

序言今天一起学习下分布式锁,分布式锁常见于集群环境下,用于做一些单机锁无法解决的问题,比如扣减库存的场景,如果扣减库存的业务机器是多台部署的就会出现超卖现象(JAVA中常见的lock和Synchronized都属于单机锁),此时就需要引入分布式锁了。分布式锁的实现有很多种,最为常见的是通过redis实现和zookeeper实现,今天我们通过redis来实现一下分布式锁吧。分布式锁redis分布式锁相关视频讲解:学习视频redis实现分布式锁,那么我们不妨思考如何用redis实现呢,条件为

2021-03-23 21:23:47 154

原创 详解线程锁、进程锁、分布式锁以及数据库锁

线程锁、进程锁、分布式锁以及数据库锁1.锁的介绍以及应用;2.定时器实现任务生产;3.手撕多线程任务队列;视频讲解如下,点击观看:线程锁、进程锁、分布式锁以及数据库锁丨C/C++丨Linux服务器开发丨后端开发丨Linux后台开发C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点...

2021-03-23 17:18:04 386 1

原创 C++线程池ThreadPoolExecutor实现原理

1. 为什么要使用线程池在实际使用中,线程是很占用系统资源的,如果对线程管理不善很容易导致系统问题。因此,在大多数并发框架中都会使用线程池来管理线程,使用线程池管理线程主要有如下好处:降低资源消耗。通过复用已存在的线程和降低线程关闭的次数来尽可能降低系统性能损耗; 提升系统响应速度。通过复用线程,省去创建线程的过程,因此整体上提升了系统的响应速度; 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,因此,需要使用线程池来管理线程。2. 线程池的工作

2021-03-20 16:35:15 1023

原创 C/C++Linux服务器开发完整学习路线(含免费学习资料下载地址)

C/C++Linux服务器开发完整学习路线(含免费学习资料下载地址)相信大部分同学刚毕业或者想转行做c++服务端开发的时候都很迷茫不知道从哪里开始学习,于是准备参加各种培训班或者网络培训,有不知道该怎么选择,对于在校学生或者刚出来就业的新人无疑是沉重都打击,但是却不知道从哪里下手。我写这篇文章的目的就是为了帮助更多想入行或者想转行做c++服务器的新人避免走更多的弯路,最终能够顺利的掌握相关知识找到心仪的工作。一. 基础阶段 c/c++编程语言 linux基础 数据结构与

2021-03-19 20:56:45 2041

原创 【纯干货】你一定还不懂的,mysql缓存问题的解决方案

90分钟搞懂mysql缓存问题的解决方案1.读写分离方案2.强一致性和最终一致性下的解决方案3.缓存出现的故障如何解决视频讲解如下,点击观看:【纯干货】你一定还不懂的,mysql缓存问题的解决方案C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点击链接订阅后直接观看:C/...

2021-03-19 15:43:45 125

原创 epoll源码分析以及在Redis中的实现

1.概述这篇文章分析一下linux中epoll的实现原理,主要为了增强自己对网络调用的理解。业界使用epoll的框架比较多,随便就能列出来很多,比如jdk的nio在linux下的实现,以及netty、redis等涉及到长链接网络请求的地方,我们都可以直接使用epoll。文末会从redis源码简单看看如何使用epoll做IO多路复用实现高并发。2.具体实现参考官方文档描述:The central concept of the epoll API is the epoll instance,

2021-03-18 17:40:44 212

原创 手写网络协议栈-协议封装,netmap,dpdk网卡数据抓取,柔性数组

今夜只有一个话题,手写网络协议栈,保证大家都能学会1.协议头的封装2.netmap/dpdk的原理3.柔性数组的使用视频讲解如下,点击观看:手写网络协议栈-协议封装,netmap,dpdk网卡数据抓取,柔性数组C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点击链接订阅后直接...

2021-03-18 16:12:37 341 1

原创 开发过程中redis的rehash,布隆过滤器,redis持久化一起解决

redis的rehash,布隆过滤器,redis持久化一节课搞定1.面试中rehash问题分析?2.面试中如何解释布隆过滤器?3.redis持久化有哪些,项目中如何选择?视频讲解如下,点击观看:开发过程中redis的rehash,布隆过滤器,redis持久化一起解决C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,Docker,TCP/IP,...

2021-03-18 16:10:19 138

原创 C++ 中的多线程的使用和线程池建设。150行代码,手写线程池

C++ 11 引入了 std::thread 标准库,方便了多线程相关的开发工作。说到多线程开发,可不仅仅是创建一个新线程就好了,不可避免的要涉及到线程同步的问题。而保证线程同步,实现线程安全,就要用到相关的工具了,比如信号量、互斥量、条件变量、原子变量等等。这些名词概念都是来操作系统里面引申来的,并不是属于哪一种编程语言所特有的,在不同语言上的表现形式不一样,但其背后的原理是一致的。线程池150行代码实现的视频讲解,有需要学习的朋友可以点击观看:150行代码,手写线程池C++ 11 同

2021-03-17 20:43:39 741 1

原创 高性能的“高”,从何而来?今天来谈一谈高性能服务器

高性能的“高”,从何而来?用90分钟来谈一谈高性能1. 用nginx来分析,做到这些才能高2. 高性能网络组件3. 高性能底层组件的内存池,线程池视频讲解如下,点击观看:高性能的“高”,从何而来?今天来谈一谈高性能服务器C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点击链接订阅...

2021-03-17 16:34:35 168

原创 详解内存池设计与实现

一、前言作为C++程序员,想必对于内存操作这一块是比较熟悉和操作比较频繁的;比如申请一个对象,使用new,申请一块内存使用malloc等等;但是,往往会有一些困扰烦恼着大家,主要体现在两部分:申请内存后忘记释放,造成内存泄漏 内存不能循环使用,造成大量内存碎片这两个原因会影响我们程序长期平稳的运行,也有可能会导致程序的崩溃;二、内存池内存池是池化技术中的一种形式。通常我们在编写程序的时候回使用 new delete 这些关键字来向操作系统申请内存,而这样造成的后果就是每次申请内

2021-03-12 15:31:32 495

原创 mysql锁机制详解

前言  之前项目中用到事务,需要保证数据的强一致性,期间也用到了mysql的锁,但当时对mysql的锁机制只是管中窥豹,所以本文打算总结一下mysql的锁机制。  本文主要论述关于mysql锁机制,mysql版本为5.7,引擎为innodb,由于实际中关于innodb锁相关的知识及加锁方式很多,所以没有那么多精力罗列所有场景下的加锁过程并加以分析,仅根据现在了解的知识,结合官方文档,说说自己的理解,如果发现有不对的地方,欢迎指正。概述  总的来说,InnoDB共有七种类型的锁:共享/排它

2021-03-11 20:55:59 125

原创 后端开发10道经典面试题的剖析, 技术方向如何决定职业方向

10道经典面试题的剖析,技术方向如何决定职业方向1.time_wait,close_wait如何解决?2.服务器接入抖动如何解决?3.malloc的实现原理视频讲解如下,点击观看:后端开发10道经典面试题的剖析, 技术方向如何决定职业方向C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知...

2021-03-11 16:01:04 621 2

原创 音视频开发基础知识到进阶剖析

全网最强音视频开发教学——音视频开发基础知识到进阶剖析1.要掌握多深的原理才能开始做项目2.音视频基础有哪些必须掌握的3.进阶需要学习什么项目视频讲解如下,点击观看:全网最强音视频开发——音视频开发基础知识到进阶剖析C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,音视频开发,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点击链接订阅后直接观看:

2021-03-10 14:51:18 185 1

原创 图文详解Linux的IO模型和相关技术

阻塞IO模型(Blocking I/O)Linux内核一开始提供了read与write阻塞式操作。当客户端连接时,会在对应进程的文件描述符目录(/proc/进程号/fd)生成对应的文件描述符(0 标准输入;1 标准输出;2 标准错误输出;),比如 fd 8 , fd 9; 应用程序需要读取的时候,通过系统调用read (fd8)读取,如果数据还没到来,此应用程序的进程或线程会阻塞等待。man 2 read概述 #include <unistd.h&g...

2021-03-09 16:21:50 173

原创 深度剖析Linux内核地址映射机制

深度剖析Linux内核地址映射机制1、虚拟空间数据结构 2、进程虚拟空间3、内存映射视频讲解如下,点击观看:Linux内核开发系列第7讲——深度剖析Linux内核地址映射机制C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点击链接订阅后直接观看:C/C++Linux服务器开发/Linux后台...

2021-03-09 15:10:18 164 1

原创 深入理解 Linux 内核中的 RCU 机制

RCU(Read-Copy Update),是 Linux 中比较重要的一种同步机制。顾名思义就是“读,拷贝更新”,再直白点是“随意读,但更新数据的时候,需要先复制一份副本,在副本上完成修改,再一次性地替换旧数据”。这是 Linux 内核实现的一种针对“读多写少”的共享数据的同步机制。不同于其他的同步机制,它允许多个读者同时访问共享数据,而且读者的性能不会受影响(“随意读”),读者与写者之间也不需要同步机制(但需要“复制后再写”),但如果存在多个写者时,在写者把更新后的“副本”覆盖到原数据时,写者与写者

2021-03-08 21:04:13 700

原创 音视频开发——音视频学习资料

目录1.为什么要学习音视频?2.如何学习系统性音视频?3.音视频相关的资料最近有朋友问想学习音视频,应该怎么学,有什么资料吗?这个问题也困扰我很久,几年前就想开始音视频相关的学习,但是一直找不到门道,坚持不过两周。回看这个系列文章,之前也有写过很多了,虽还不敢说已入门,因为越学越发现 不会的知识、需要学的东西就越多。但为什么相比过去几年的几次尝试,这次持续时间更长、不断有文章输出呢? 这篇文章就和对自己进行检视反思,希望对想学习音视频的朋友也有所帮助。为什么要学习音视频?我是做a

2021-03-06 16:01:17 1403 1

原创 基于linux epoll网络编程细节处理丨epoll原理剖析

epoll原理剖析以及三握四挥的处理1.epoll原理详解2.连接的创建与断开3.epoll如何连接细节问题视频讲解如下,点击观看:基于linux epoll网络编程细节处理丨epoll原理剖析C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。点击链接订阅后直接观看:C/C++Linux服务...

2021-03-06 15:02:18 124 1

原创 详解从网络IO到IO多路复用

一、前言这篇文章,会重点介绍linux的BIO、NIO和IO多路复用。二、Netcat软件的基本使用Netcat(简写nc)是一个强大的网络命令工具,能够在linux中执行与TCP、UDP相关的操作,例如端口扫描,端口重定向、端口监听甚至远程连接在这里,我们使用 nc 来模拟一台接收message的服务器,和一台发送message的客户端1、安装 nc 软件sudo yum install -y nc2、使用 nc 创建一台监听9999端口的服务器nc -l -p 999

2021-03-05 21:28:14 340

原创 C++后端程序员必须彻底搞懂Nginx,从原理到实战详解

本文首先介绍 Nginx 的反向代理、负载均衡、动静分离和高可用的原理,随后详解 Nginx 的配置文件,最后通过实际案例实现 Nginx 反向代理和负载均衡的具体配置。学会 Nginx ,一篇足够了。1. 简介  Nginx 是开源的轻量级 Web 服务器、反向代理服务器,以及负载均衡器和 HTTP 缓存器。其特点是高并发,高性能和低内存。  Nginx 专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,最大能支持 50000 个并发连接数。 Nginx 还支持热

2021-03-04 16:40:13 762 1

原创 HTTP—TCP/IP—SOCKET理解及浅析

一个完整的HTTP请求的过程此举例为抛砖引玉,引导大家进入思考状态。当你按输入www.baidu.com ,浏览器接收到这个消息之后,浏览器根据自己的算法识别出你要访问的URL,为您展示出来搜索页面和广告,那么这些经历了哪些过程呢?大致过程如下:(1)浏览器查询 DNS,获取域名对应的IP地址; 具体过程包括浏览器搜索自身的DNS缓存、搜索操作系统的DNS缓存、读取本地的Host文件和向本地DNS服 务器进行查询等。 (2)浏览器获得域名对应的IP地址以后,浏览器向服务器请求建立链接,发起

2021-03-03 16:45:49 347 1

原创 究竟什么是Linux内核?我该如何高效学习?​附学习路线思维导图

本文主要讲解什么是Linux内核,以及通过多张图片展示Linux内核的作用与功能,以便于读者能快速理解什么是Linux内核,能看懂Linux内核。拥有超过1300万行的代码,Linux内核是世界上最大的开源项目之一,但是内核是什么,它用于什么?什么是内核内核是与计算机硬件接口的易替换软件的最低级别。它负责将所有以“用户模式”运行的应用程序连接到物理硬件,并允许称为服务器的进程使用进程间通信(IPC)彼此获取信息。内核还要分种类?是的,没错。3.1 微内核微内核.

2021-03-02 21:04:56 302

原创 剖析Linux进程fork&vfork&clone原理机制丨进程管理指令及监控工具

剖析Linux进程fork&vfork&clone原理机制丨进程管理指令及监控工具视频讲解如下,点击观看:剖析Linux进程fork&amp;vfork&amp;clone原理机制丨进程管理指令及监控工具C/C++Linux服务器开发精彩内容包括:C/C++,Linux,Nginx,ZeroMQ,MySQL,Redis,MongoDB,ZK,流媒体,P2P,Linux内核,Docker,TCP/IP,协程,DPDK多个高级知识点分享。视频学习资料点击:C/C++

2021-03-02 16:31:27 147

原创 后端开发-MySQL数据库相关流程图原理图

前言整理了一些 MySQL 数据库相关流程图/原理图。做一下笔记,分享给大家一起学习。1. MySQL 主从复制原理图MySQL 主从复制原理是大厂后端的高频面试题,了解 MySQL 主从复制原理非常有必要。主从复制原理简言之,就三步曲,如下: 主数据库有个 bin-log 二进制文件,记录了所有增删改 SQL 语句(binlog线程); 从数据库把主数据库的 bin-log 文件的 SQL 语句复制过来(I/O线程); 从数据库的 relay-log 重做日志文件

2021-03-01 19:56:54 471

空空如也

空空如也

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

TA关注的人

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