零声学院Linux c++
文章平均质量分 92
零声学院
我也要当昏君
这个作者很懒,什么都没留下…
展开
-
手写线程池与性能分析
这里写自定义目录标题作为一款服务器而言,很多服务器的源码,最底层最底层这些东西,是很通用的比如我们之前讲过的网络,以及池式结构,最底层的这些组件是提供给我们应用层写业务逻辑的在工作中接触的并不是很多,但是在面试的时候会问很多,工作中是以写业务为主,比如说工作中要你写个线程池这种可能性不大,比如说要你写一个连接池的可能性也不大,大量的时间可能是在写业务为主,那但是这个东西了,他在面试的时候,又是非常非常管用的东西。简历里面肯定写一些通用的组件为主。4个池式结构先跟大家解释一下就是这些东西到底是用原创 2022-05-03 12:17:51 · 505 阅读 · 0 评论 -
虚拟网络适配器的实现
虚拟网络适配器的实现什么是服务器?关于服务器,有这么三层概念都被称为是对的,在不同的场景里面说,第一种被称为服务器,就是说的物理硬件机房,服务器物理硬件这是第一种。第二层在服务器中除了这个概念之外,还有大家比如说像windows做桌面,然后linux做服务器,那其实这个服务器另一层意思是一定意义上操作系统第三个在操作系统里面提供一个应用程序,对外提供网络服务,对外提供网络应用服务那现在这三层的概念又会慢慢的衍生出来了,对外提供服务可能有些机房对外提供服务,云计算这个概念,那对外提供物理硬件这原创 2022-04-14 21:49:33 · 2147 阅读 · 0 评论 -
posix API与网络协议栈的实现原理
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习posix API与网络协议栈的实现原理网络一共有8类技术文章:本文是这系列文章最后一篇下一专题写池式结构:写完池式结构就写底层组件是怎么做的,比如libevent做网络编程的时候,所接触到所有的网络编程,往底层走,往底层去看一看的时候,原创 2022-04-09 12:30:24 · 2377 阅读 · 0 评论 -
实现高并发http 服务器
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习实现高并发http 服务器需求分析需求分析实现一个http 服务器项目,服务器启动后监听80端口的tcp 连接,当用户通过任意一款浏览器(IE、火狐和腾讯浏览器等)访问我们的http服务器,http服务器会查找用户访问的html页面是否存在,如果存原创 2022-04-04 19:54:50 · 595 阅读 · 0 评论 -
Linux系统中的文件操作
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习Linux系统中的文件操作文件的作用Linux的文件结构文件操作方式底层文件操作(关于文件的系统调用)系统调用标准I/O库proc文件系统文件锁文件的作用 linux中,一切皆文件(网络设备除外)硬件设备也“是”文件,通过文件来使用设备目录(文原创 2022-04-03 10:35:22 · 253 阅读 · 0 评论 -
基础的网络服务器开发
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习基础的网络服务器开发需求分析项目实现网络通信与SocketSocket 编程详解套接字概念Socket编程基础网络字节序sockaddr数据结构IP地址转换函数Socket编程函数socket 函数bind 函数listen 函数accept 函数原创 2022-04-03 09:53:13 · 675 阅读 · 0 评论 -
skynet设计原理
第一个主要是skynet设计原理,skynet主要是一个actor模型的一个封装,详细的介绍actor是什么,actor之间的一个消息是怎样来进行通讯的以及如何来调度的第二个讲解一些lua原理,以及我们的这个网络封装相关第三节会讲解具体的实际应用,实际应用主要从这三个方面来讲解,第一个网关的封装,第二个实际项目当中的热更新到底怎么做,第三个会跟大家讲解比较常用的一个技术,就是我们的监听发布skynet它是属于一个多核并发编程的模型多核并发编程的模型网络编程当中memcached是多线程,多线程的数原创 2022-03-17 17:36:14 · 4570 阅读 · 0 评论 -
nginx过滤器模块
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习从http的初始化到它的整个流程是怎么形成的?第二个就是我们实现一个过滤器的模块什么是过滤器呢?你在申请网页的时候,打开浏览器可以看到这里有两个字叫做广告,在我们申请网页的过程,这个广告是怎么做的?我们去申请这个网页的时候,请注意广告的显原创 2022-03-12 14:56:22 · 5681 阅读 · 0 评论 -
Nginx数据结构
Nginx数据结构【人物1】避免的一些葡萄冰糖分2节两地方,我们课时分几次排5次课已经够了,排5次课已经够了,那现在这里面分2个电话,等下又出现这种课安排不是很紧凑,所以呢这次呢我们就跟大家核心的就跟大家讲讲这个恩吉斯的数据结构,首先我们来问一下,我想问一下各位,我们如果尽管上面几个大家有下载恩吉斯原貌的朋友可以看老师也双肩老板,他说你没有自己去看过恩迪斯原貌的朋友。那我们再来问大家一个问题,就是历史原法里面该怎么去看里面有哪些东西?首先解释一下,在温恩吉斯这个代码的话,他在面试的过程中间被问到的原创 2022-03-10 20:30:21 · 3257 阅读 · 0 评论 -
tcp支持浏览器websocket协议
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习tcp支持浏览器websocket协议一个io它是怎么一种情况,一个客户端连接一个服务器,一个客户端一个连接,大家时刻在做服务器,都是时刻抓住这样一个点,就是说一个客户端在服务端会有一个网络io,一个客户端在服务端会有一个网络io,之前用epoll原创 2022-03-09 18:37:30 · 4545 阅读 · 0 评论 -
tcp服务器epoll的多种实现
这里写自定义目录标题我们在读写文件的时候,这是一款服务器,CS,这是一个服务器,这个客户端去连接服务器的时候,中间大家知道从连接的这个过程中间产生通过三次握手连接,服务器先进行监听一个端口,监听的时候是用调用listen进行监听,TCP网络编程模型就好比这样一个模型,大家去酒店吃饭,走到那个饭店的门口门口有一个迎宾的人,有迎宾的小姐姐,然后你跟她说吃饭,她把你带进餐馆里面,然后给你介绍一个真正的服务员,后面你点菜买单,然后包括像夹菜点酒都是由这个服务员为你去服务。这里面这个酒店出现两个人,一个是对你原创 2022-03-06 11:04:43 · 3715 阅读 · 1 评论 -
协程的调度实现与性能测试
协程的调度实现与性能测试那我怎么在简历里面写协程,协程这个东西实在真的太好用了,你可以跟很多东西结合到一起,比如说你们对文件,做文件操作可不可以用?好对文件操作,比如说你做日志落盘的时候,可不可以用协程来操作它也是可以的,比如说你对数据库的操作,对数据库的操作,还有包括像一些网络io的处理,这个文件的操作和网络io都是针对文件io来处理。然后我们尽量知道他用到哪里,协程怎么用到数据库?这是我们今天等一下跟大家讲到的讲到的就是关于携程的API的封装。一个线程里面多个协程是怎么运行的?好比多个线程在一原创 2022-03-04 00:35:28 · 683 阅读 · 0 评论 -
协程的设计原理与汇编实现
第一个问题,为什么会协程?以及协程到底解决了什么问题?第一个同步的方式实现异步的效率同步为什么效率低,而异步的为什么效率高?等待没错,他需要等待,那这个等待是什么意思?第一个案例之前跟大家讲的100万并发的案例第二个案例异步请求的案例现象区别:if 1 用了 workqueue,每1000个耗时 1400对fd直接进行写,每秒接入量5600那现在这个工作队列他为什么在这个过程引入工作队列,他就能够提升性能呢?,他是从哪些方面原因那这个要跟他分析这个要跟大家分析,直接进行读写工作队原创 2022-03-03 12:46:11 · 499 阅读 · 0 评论 -
用户态协议栈
那我们先呢跟大家解释这个协议栈这个东西啊协议栈这个东西呢或多或少啊各个朋友应该都听过,就是关于网络协议栈或多或少都听过,那我们今天来跟大家讲,啊就是我们站在一个设计者的角度,站在一个设计者的角度,站在tcpip的个人的角度,我们怎么去设计这个协议的?设计队的角度来设计这个网络协议战。就是各位朋友们你想一下这个网络协议战,有很多朋友就会想到一个点,那为什么我们还需要去设计一个网络系统,我们不是去学这个东西就可以吗?其实我也跟大家解释一下,其实你在那把网络协议上理解的很透彻的话,你一定要站在一个设原创 2022-03-02 00:56:33 · 1264 阅读 · 0 评论 -
海量数据去重hash与布隆过滤器
海量数据去重hash与布隆过滤器背景缓存穿透需求set和mapunordered_map总结布隆过滤器代码背景在使⽤word⽂档时,word如何判断某个单词是否拼写正确?⽹络爬⾍程序,怎么让它不去爬相同的url⻚⾯?允许有误差垃圾邮件(短信)过滤算法如何设计?允许有误差公安办案时,如何判断某嫌疑⼈是否在⽹逃名单中?控制误差 假阳率缓存穿透问题如何解决?允许有误差缓存穿透描述缓存场景,为了减轻落盘数据库(mysql)的访问压⼒,在server端与mysql之间加⼊⼀层缓冲数据层(⽤来存原创 2022-02-26 21:41:37 · 1094 阅读 · 1 评论 -
随处可见的红黑树
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习随处可见的红黑树红黑树为什么常用那么红黑树怎么实现?红黑树的定义红黑树节点旋转红黑树的添加问题红黑树为什么常用1.当做查找以key-value通过key去查找value,查找性能比较快比如通过socket去查找客户端id,还有内核内存怎么使用?原创 2022-02-22 15:43:14 · 605 阅读 · 4 评论 -
IM登录服务器和消息服务器设计
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习《C/C++Linux服务器开发/后台架构师》讲师:darren/班主任:柚子/讲师介绍 --专业来自专注和实力Darren老师曾供职于国内知名半导体公司(珠海扬智/深圳联发科),曾在某互联网公司担任音视频通话项目经理。主要从事音视频原创 2022-02-19 01:11:54 · 1435 阅读 · 0 评论 -
IM即时通讯项目框架分析
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习1 IM即时通讯项目框架分析和部署1. 即时通讯框架分析和部署2. 登录服务器和消息服务器设计3. 路由服务器设计4. 数据库代理服务器设计5. 文件服务器和docker部署6. 性能测试和k8s上云发布1.1 即时通讯应用场景即时通讯原创 2022-02-19 00:26:58 · 7145 阅读 · 0 评论 -
即时通讯项目(一)
推荐一个零声学院免费公开课程,个人觉得老师讲得不错,分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,立即学习1. 简介即时通讯项目,基于开源项目TeamTalk二次开发。整个系统的架构设计如下:TeamTalk目前的开源版本有较多的bug,功能也不够完善,始于TeamTalk但不止于TeamTalk,将会持续迭代改进该项目,最终开发成可以商业使原创 2022-02-18 23:35:45 · 3252 阅读 · 1 评论 -
K8S核心组件介绍
一:pod核心原理1:pod是什么Pod 是一组容器和卷(目录和文件)的集合,同一个Pod里的容器共享同一个网络命名空间,可以使用 localhost 互相通信pod是k8s管理的最小的单位pod也是一个容器,这个容器装的是docker创建的容器容器本质是进程,K8S是操作系统,pod就是类似进程组pod有自己的ip地址,主机名,pod相当于独立主机,可以封装一个容器或者多个容器2:pod是用来干什么通常相关情况下,在服务部署得时候,使用pod来管理一组相关的服务(一个pod中要么部.原创 2022-01-30 11:06:11 · 1964 阅读 · 0 评论 -
DPDK 的虚拟交换机框架 OvS 的基础知识
DPDK 的虚拟交换机框架 OvS 的基础知识多队列网卡多队列网卡硬件实现内核对多队列网卡的支持多队列网卡的结构DPDK 与多队列网卡虚拟化CPU 虚拟化内存虚拟化学习产出:多队列网卡多队列网卡硬件实现有四个硬件队列(Queue0, Queue1, Queue2, Queue3),当收到报文时,通过 hash 包头的(sip, sport, dip, dport)四元组,将一条流总是收到相同队列,同时触发与该队列绑定的中断。内核对多队列网卡的支持Linux 内核中, RPS ( Rece.原创 2022-01-30 11:03:03 · 3942 阅读 · 0 评论 -
Docker镜像编译与Docker-Compose部署与编排
文章目录docker是什么以及为什么用dockerdocker是什么Docker的好处容器和虚拟机的区别Docker基本概念docker安装和测试ubuntu安装方法准备工作使用 apt安装卸载docker启动 Docker CE建立 docker 用户组Docker 常用命令与操作基础类日志类容器类查看容器信息容器同步命令容器操作命令查看容器的root用户密码容器于宿主拷贝文件运行一个新容器,同时为它命名、端口映射、文件夹映射一个容器连接到另一个容器导入导出容器镜像操作远程镜像本地镜像docker ru.原创 2022-01-28 17:29:39 · 7272 阅读 · 0 评论 -
redis源码学习
文章目录redis源码学习wsl2安装vscodec/c++基本配置建议学习方法字典实现数据结构:冲突负载因子扩容写时复制缩容渐进式rehashscan(间断)expire机制惰性删除定时删除大KEY跳表实现理想跳表redis跳表数据结构结构图应用延时队列优化思路参考redis源码学习wsl2安装https://docs.microsoft.com/zh-cn/windows/wsl/install-win10vscodehttps://docs.microsoft.com/zh-cn/win原创 2022-01-14 16:37:02 · 1097 阅读 · 0 评论 -
Redis
RedisRedis应用安装编译启动认识Redisredis存储结构redis中value编码功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入RedisRedis 是Remote Dictionary Service 的简称;原创 2022-01-14 15:07:25 · 1098 阅读 · 0 评论 -
Kafka开发环境搭建及应用
这里写自定义目录标题kafka开发环境安装Java环境下载linux下的安装包解压安装包jdk-8u202-linux-x64.tar.gz将解压后的文件移到/usr/lib目录下配置java环境变量执行命令使修改立即生效Kafka的安装部署下载kafka安装kafka配置和启动zookeeper启动和停止kafkakafka的基本操作创建topic查看topic查看topic属性消费消息发送消息kafka-topics.sh 使用方式查看帮助--help副本数量不能大于broker的数量创建一个自定义列表原创 2022-01-12 22:52:06 · 3484 阅读 · 0 评论 -
队列及其企业级应用
队列及其企业级应用队列的故事导入队列的原理精讲队列的算法实现队列的企业级应用案例队列的故事导入Jack 在一个著名软件外包公司上班,公司每年要接很多的外包项目给各个开发团队开发,现在刚刚接到一个项目,要实现银行排队叫号系统, 基本需求是:取号 :银行用户进入银行大厅办理业务用户从自动排号机上取号自动取号机生成号码以及当前等待人数信息给用户叫号:当银行业务员(1 位或多位)处理完业务以后,会指示叫号系统呼叫下一位(按排队次序)正在等待的用户,用户达到窗口以后,银行业务员会将用户的号码从叫原创 2021-07-29 16:37:19 · 241 阅读 · 0 评论 -
KMP算法
KMP算法KMP算法KMP算法题目描述判断一个字符串是不是另一个字符串的子字符串,并返回其位置。输入输出样例输入一个母字符串和一个子字符串,输出一个整数,表示子字符串在母字符串的位置,若不存在则返回-1。Input: haystack = "hello", needle = "ll"Output: 2题解使用著名的Knuth-Morris-Pratt(KMP)算法,可以在 O(m + n) 时间利用动态规划完成匹配。// 主函数int strStr(string haystack,原创 2021-07-29 11:32:36 · 117 阅读 · 0 评论 -
排序算法(C/C++)
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2021-07-26 19:21:39 · 543 阅读 · 0 评论