自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

喜欢打篮球的普通人

https://gitee.com/jiwangreal,https://github.com/Jiwangreal

  • 博客(25)
  • 资源 (68)
  • 收藏
  • 关注

原创 (P42)muduo库使用例子(一):五个简单TCP协议,muduo库网络模型使用示例

MuduoManual.pdf P50(1)echo - 回显服务,把收到的数据发回客户端eg测试:42\jmuduo\examples\simple\echo\echo.h42\jmuduo\examples\simple\echo\main.cc42\jmuduo\CMakeLists.txt测试:客户端使用nc服务端客户端退出后,服务端一个TcpConnection销毁了(2)discard - 服务器端收到客户端发送过来的数据,丢弃所有收到的数据;eg:42\jmuduo\exampl

2021-06-30 23:15:40 684 3

原创 (P41)muduo_inspect库源码分析:muduo_inspect库通过HTTP方式为服务器提供监控接口

文章目录1.muduo_inspect库通过HTTP方式为服务器提供监控接口1.muduo_inspect库通过HTTP方式为服务器提供监控接口接受了多少个TCP连接当前有多少个活动连接一共响应了多少次请求每次请求的平均响应时间多少毫秒。。。Inspector // 包含了一个HttpServer对象ProcessInspector // 通过ProcessInfo返回进程信息ProcessInfo // 获取进程相关信息,muduo_base库中已做了解

2021-06-29 23:15:52 240 1

原创 (P40)muduo_http库源码分析:http request,http response

文章目录1.http request2.http response3.一个典型的http请求4.一个典型的http应答5.muduo_http库涉及到的类1.http requestrequest line请求行 + header头部 + body (header分为普通报头,请求报头与实体报头)header与body之间有一空行(CRLF)请求方法有:Get, Post, Head, Put, Delete等协议版本1.0、1.1常用请求头(1)Accept:浏览器可接受的

2021-06-27 22:30:09 261

原创 (P39)muduo_base库源码分析:muduo库对编写tcp客户端程序的支持

文章目录1.muduo库对编写tcp客户端程序的支持1.muduo库对编写tcp客户端程序的支持Connector // 主动发起连接TcpClient // 包含了一个Connector对象测试程序Reactor_test11.cc // echo serverTcpClient_test.cc // echo client测试:只启动客户端,会进行自动重连启动服务器端客户端发送的数据又可以从服务器端回射回来了...

2021-06-27 12:50:40 189

原创 (P38)muduo_base库源码分析:完善TcpConnection,signal(SIGPIPE, SIG_IGN) ,可变类型解决方案

文章目录1.完善TcpConnection2.signal(SIGPIPE, SIG_IGN)3.可变类型解决方案4.boost::any1.完善TcpConnectionWriteCompleteCallback含义,可以理解为低水位标回调函数HighWaterMarkCallback含义,高水位标回调函数boost::any context_eg:38\jmuduo\muduo\net\TcpConnection.h38\jmuduo\muduo\net\TcpConnect

2021-06-26 11:43:59 188

原创 (P36-P37)muduo_base库源码分析:应用层缓冲区Buffer设计 ,epoll使用LT模式的原因,其他缓冲区设计方案 ,TcpConnection中增加send,shutdown

文章目录1.应用层缓冲区Buffer设计2.epoll使用LT模式的原因1.应用层缓冲区Buffer设计muduo的IO模型是IO复用,且fd是非阻塞模式,若使用阻塞模式,IO线程可能阻塞在read,write等系统调用,这样的话,其他fd的IO事件到来,IO线程也不能够及时处理,也就不能最大限度的使用IO线程为什么需要有应用层缓冲区(详见MuduoManual.pdf P76)(1)2.4.2 为什么 non-blocking 网络编程中应用层 buffer 是必须的?(2)2.4.3

2021-06-23 22:55:39 306

原创 (P35)muduo_base库源码分析:muduo库如何支持多线程,multiple reactors

文章目录1.muduo库如何支持多线程2.multiple reactors1.muduo库如何支持多线程muduo支持多线程的方式:一个程序有多个EventLoop,一个EventLoop属于一个线程,也就是所谓的one Loop per threadEventLoopThread(IO线程类)EventLoopThreadPool(IO线程池类)IO线程池的功能是开启若干个IO线程,并让这些IO线程处于事件循环的状态2.multiple reactors每个Reactor都属于一个

2021-06-23 07:32:32 249 1

原创 (P34)muduo_base库源码分析:TcpConnection生存期管理

连接关闭时序图(1)一个TcpServer维护了一个已连接列表,当一个连接关闭的时候,TcpConnection的通道处于活跃状态,EventLoop的事件循环返回这个通道,并且调用handleEvent来处理;连接关闭属于可读事件,这里回调了TcpConnection的handleRead(),handleRead()调用read()返回为0,判断返回为0,则又调用了handleClose(),handleClose()中又回调了TcpServer中的removeConnection(),erase将

2021-06-21 22:57:27 247 2

原创 (P33)muduo_base库源码分析:TcpServer/TcpConnection

文章目录1.TcpServer/TcpConnection1.TcpServer/TcpConnectionAcceptor类的主要功能是socket、bind、listen一般来说,在上层应用程序中,我们不直接使用Acceptor,而是把它作为TcpServer的成员,TcpServer就具有了Acceptor功能TcpServer还包含了一个TcpConnection列表因为TcpServer能够处理多个连接TcpConnection与Acceptor类似,有两个重要的数据成

2021-06-20 22:13:03 205 1

原创 (P32)muduo_base库源码分析:Acceptor

文章目录1.Acceptor1.AcceptorAcceptor用于accept(2)接受TCP连接Acceptor的数据成员包括Socket、Channel,Acceptor的socket是listening socket(即server socket)。该流程要十分熟练:(1)Channel用于观察此socket的readable事件,Channel就处于活跃的状态,Poller::poll就能返回活跃的该Channel通道,并且调用Channel::handleEvent()对事件进

2021-06-20 20:26:34 191

原创 (P31)muduo_base库源码分析:Socket封装

文章目录1.Socket封装1.Socket封装Endian.h封装了字节序转换函数(全局函数,位于muduo::net::sockets名称空间中)。SocketsOps.h/ SocketsOps.cc封装了socket相关系统调用(全局函数,位于muduo::net::sockets名称空间中)。Socket.h/Socket.cc(Socket类)用RAII方法封装socket file descriptorInetAddress.h/InetAddress.cc(I

2021-06-20 17:20:02 166

原创 (P30)muduo_base库源码分析:EventLoopThread

文章目录1.EventLoopThread1.EventLoopThread任何一个线程,只要创建并运行了EventLoop,都称之为IO线程IO线程不一定是主线程muduo并发模型one loop per thread + threadpool(1)一个程序有多个IO线程,这些IO线程可以使用IO线程池来管理。所以是IO线程池(主要处理IO事件,调用EventLoop.runInLoop()也可以执行计算任务)+计算线程池(计算任务)(2)IO线程池所对应的类是EventLoopT

2021-06-19 11:26:28 196

原创 (P29)muduo_base库源码分析:进程(线程)wait/notify

文章目录1.进程(线程)wait/notify1.进程(线程)wait/notify一个线程通知一个等待中的线程,方法有3个:方法1:pipe(1)fd[0]对应管道的读端,fd[1]对应管道的写端,fd[0]只能用于读,不能用于写,fd[1]只能用于写,不能用于读,这意味着管道是单向的;(2)等待线程等待fd[0]的可读事件,通知线程只要往fd[1]写入一个数据,fd[0]就变的可读了,等待线程就获得通知,就被唤醒了;方法2:socketpair(1)也有一对fd,任意一个fd都

2021-06-16 23:27:00 272

原创 (P28)muduo_base库源码分析:定时器,lower_bound&upper_bound,RVO

返回值优化(Return Value Optimization,简称RVO)是一种编译器优化机制。

2021-06-14 11:27:56 258

原创 (P26-P27)muduo_base库源码分析:muduo网络库的类图,定时器函数选择

文章目录1.muduo网络库的类图2.时序图1.muduo网络库的类图类图如下:解释如下:灰色是内部类,对外不可见;白色是外部类,对外可见;EventLoop类EventLoop是对事件循环的抽象;Poller类,PollPoller类,EPollPoller类(1)下面的三个是muduo唯一使用面向对象编程思想的地方,下面三个类都是内部类,Poller是抽象类,有三个纯虚函数,muduo的对外接口不使用虚函数来暴露的:Poller是对I/O复用的抽象;PollPol

2021-06-12 10:20:29 387 1

原创 (P25)muduo_base库源码分析:TCP网络编程最本质是的处理三个半事件,EchoServer类图,什么都不做的EventLoop

文章目录1.TCP网络编程最本质是的处理三个半事件2.EchoServer类图1.TCP网络编程最本质是的处理三个半事件连接建立:服务器accept(被动)接受连接,客户端connect(主动)发起连接连接断开:主动断开(close、shutdown),被动断开(read返回0,指对等端主动断开连接)消息到达:文件描述符可读消息发送完毕:这算半个。对于低流量的服务,可不必关心这个事件;这里的发送完毕是指数据写入操作系统缓冲区,将由TCP协议栈负责数据的发送与重传,不代表对方已经接收

2021-06-10 23:07:58 259 2

原创 (P23-P24)多线程与并发服务器设计

文章目录1.循环式/迭代式服务器2.1.循环式/迭代式服务器2.若采用多进程方式fork之后,父进程需要关闭已连接socket,子进程需要关闭监听socket若采用多线程的方式则不需要关闭什么socket容易发生“惊群”现象,客户端连接过来的时候,即多个子进程都处于accept状态,只有一个进程返回值是正确的,其他进程返回失败了。参考:大并发服务器的多线程与并发服务器设计: 常见并发服务器方案...

2021-06-08 23:20:50 350

原创 (P22)muduo_base库源码分析:日志滚动条件

文章目录1.日志滚动条件1.日志滚动条件以下的条件只要满足一个就会进行日志回滚文件大小(例如每写满1G换下一个文件)时间(每天零点新建一个日志文件,不论前一个文件是否写满)一个典型的日志文件名logfile_test.20130411-115604.popo.7743.logbasename含义测试:每次写满196K就换一个新文件0:36:47...

2021-06-07 23:17:42 205

原创 (P21)muduo_base库源码分析:日志类封装,StringPiece类

文章目录1.日志类封装1.日志类封装假设给缓冲区data_中添加2个字节数据,data_指针是不会变的,因为他是缓冲区的首地址; const char* debugString();//增加\0,将当前数据变成字符串测试:

2021-06-06 19:22:27 219 2

原创 (P20)muduo_base库源码分析:日志作用,日志级别,Logger使用时序图

文章目录错误分为:编译,运行(可以把errno对应的错误文本信息记录到日志中),逻辑错误(将整个程序的运行状态输出到日志中,通过分析日志可以理清楚程序逻辑,从而找出逻辑错误)muduo库默认是INFO级别修改muduo库的默认日志级别Logger::LogLevel initLogLevel(){ return Logger::TRACE; /* if (::getenv("MUDUO_LOG_TRACE")) return Logger::TRACE; else if (

2021-06-06 16:50:53 204

原创 (P19)muduo_base库源码分析:ThreadLocalSingleton封装

文章目录1.ThreadLocalSingleton封装1.ThreadLocalSingleton封装类图如下:线程本地单例类封装,每个线程都有一个T类型的单例对象eg:src\19\jmuduo\muduo\base\ThreadLocalSingleton.heg测试:src\19\jmuduo\muduo\base\tests\ThreadLocalSingleton_test.ccsrc\19\jmuduo\muduo\base\tests\CMakeLists.tx

2021-06-06 15:33:32 173

原创 (P18)muduo_base库源码分析:线程特定数据,ThreadLocal类的封装

文章目录2.线程特定数据线程本地存储,ThreadLocal类的封装2.线程特定数据pthread_key_create一旦一个线程创建了一个key,其他线程都有这个keypthread_key_delete删除key,并不是删除数据;删除数据需要在pthread_key_create时,指定一个回调函数去销毁,因为这个数据是堆上数据pthread_getspecific获取不同的线程可以通过这个key来访问这个数据pthread_setspecific为特定的线程指定特定的

2021-06-05 11:41:05 191 1

原创 (P17)muduo_base库源码分析:线程安全Singleton类实现

文章目录1.线程安全Singleton类实现1.线程安全Singleton类实现线程安全Singleton类实现pthread_onceatexittypedef char T_must_be_complete_type[sizeof(T) == 0 ? -1 : 1];类图+号表示公有的,-号表示私有的。使用模板方式实现eg:src\17\jmuduo\muduo\base\Singleton.h测试eg:src\17\jmuduo\muduo\base\tests\S

2021-06-05 10:41:06 180

原创 (P16)muduo_base库源码分析:ThreadPool实现

文章目录1.ThreadPool实现1.ThreadPool实现也是生产者消费者问题。ThreadPool创建了若干线程,维护了一个线程队列;这些线程是用来执行任务的,所以还维护了一个任务队列;外部的生产者线程往ThreadPool中的任务队列添加任务,一旦任务队列有任务,则唤醒线程队列的线程来执行这些任务,这些线程相当于消费者线程;eg:src\16\jmuduo\muduo\base\ThreadPool.hsrc\16\jmuduo\muduo\base\ThreadPool.

2021-06-03 23:28:08 167

原创 (P15)muduo_base库源码分析:BlockinngQueue(无界阻塞队列),BoundedBlockingQueue(有界阻塞队列)

文章目录1.BlockinngQueue(无界缓冲区)2.BoundedBlockingQueue(有界缓冲区)1.BlockinngQueue(无界缓冲区)为了保证生产者线程和消费者线程安全访问队列,可以使用信号量和条件变量对队列进行同步。使用信号量的方式(1)队列是有界的size:队列的大小;2个信号量:semFull(size)表示初始状态队列是空的,可以生产的产品个数=size;semEmpty(0)表示初始状态队列是空的,可以消费的产品个数=0;生产者线程如何操作队列?//生

2021-06-02 22:41:39 396

Docker学习资料总结.7z

这是我研究Dicker一周以来学习的Docker资料的总结,里面包括:namespace,cgroup等对Docker核心原理的认识和理解,还有一些关于Docke自己做的实验

2020-02-08

RF自动化ppt.7z

这是rf自动化的ppt资料,主要包括四个章节:包括接口,Fiddler,RF接口自动化测试,Jmeter测试接口等,

2020-01-07

mingw-w64.7z

需要下载的mingw-w64的链接,他需要配合llvm使用才可以在vs code编译C/C++代码,积分我设置的很低,只为帮助大家,希望大家能喜欢

2019-12-20

vs code能编译代码.7z

需要下载的LLVM的链接,里面还有某乎博主的安装教程的链接,积分我设置的很低,只为帮助大家,希望大家能喜欢

2019-12-20

VS code的linux服务器端的离线安装教程

这是vscode的linux服务器端的离线安装教程,里面还有win10 vscode的client端的config的权限问题的解决办法

2019-11-09

vs code配置文件和工作空间

这是我按照某乎制作的关于c和cpp的配置文件,所有相关配置和工作区都已经建立好了,拿来直接可以用,编译调试都可以!

2019-10-17

Desktop.zip

这里面是idea常用快捷键的操作背景图片,还有Unix进程间通信卷2的资料

2019-10-08

Linux基础课件.7z

这是Linux快速进阶ppt,包含了:从认识Linux,Linux目录,文件,磁盘,网络等各种指令学习,学开发看鸟哥太浪费时间

2019-09-23

个人简历攥写模板.zip

校招/社招个人简历的最佳模板,欢迎各位有志之士下载,么么哒

2019-09-22

计算机网络面试题总结.pdf

来自秋招面试的计算机网络面试题总结,四大层的重点内容的总结

2019-09-22

understan中文版v926版本的代码设置.lua

这是我使用understan中文版v926版本的代码设置,供程序员们使用,加载方式:工具-选项-风格-导入

2019-09-19

Understand4_0(内置破解器).zip

understan中文版v926版本,供程序员们使用,非常好用,总共两部分,这是第一部分

2019-09-07

Scientific.Toolworks.Understand.v4.0.811.Incl.Keygen-AMPED.zip

understan中文版v926版本,供程序员们使用,非常好用,总共两部分,这是第二部分

2019-09-07

C++函数库和Linux函数库.zip

这是Linux C语言的库函数和C++标准库函数的.CHM文件,供想深入学习的人学习

2019-08-24

googletestnew.7z

这是我根据googletest测试框架,做的单元测试案例,希望你能喜欢,都能跑!

2019-08-13

ccsetup560.zip

这是我从纯英文的cclean官网上找来的最新的免费版本的cclean,版本是v5.6,供大家下载

2019-07-20

cclean pr密钥.txt

这是2019的cclean pro的密钥,具体的使用方法参考里面的文档,应该不会涉及到版权问题

2019-07-16

嵌入式开发企业直通课2.1.pdf

这是嵌入式开发的努力方向总结,主要是来自某课堂资源

2019-06-03

CPP面试题集锦.doc

这是一份来自2018年秋招的,关于CPP问题的总结,平时有空就多看看

2019-06-02

linux C一站式编程课后答案汇总

linux C一站式编程课后答案汇总,供广大同学使用,大部分的答案已经给出

2019-04-22

kali中安装burpsuit profession脚本工具

kali中安装burpsuit profession脚本工具,一件安装方便使用;支持 Linux和WIndows

2024-01-20

划词翻译v8.7.6用于Chrome和Edge

划词翻译v8.7.6用于Chrome和Edge

2022-09-06

vscode的remote ssh中需要的ubuntu服务器中的sshd配置文件

客户端:win10,服务器端:ubuntu,使用vscode免密登录ubuntu时,会需要到的sshd配置文件

2022-06-19

postgresql数据库插件PG-Strom中Scan算子执行流程分析

postgresql数据库插件PG-Strom中Scan算子执行流程分析; 资源中的.mdj文件请由StartUML软件打开;

2022-03-16

CUDAppt.zip

https://www.bilibili.com/video/BV1kx411m7Fk?p=2&spm_id_from=pageDriver对应的CUDA教程PPT课件

2021-12-28

postgres.zip

pg11源码

2021-11-25

PostGreSQL资料.zip

PostGreSQL资料.

2021-11-25

Downloads.zip

C /C++常见面试题和简历模板

2021-06-26

ant-learn-python-concurrent-main.zip

python并发编程的一些资料

2021-05-24

Linux函数手册等.zip

Linux函数手册等.zip

2021-04-18

xshell6pjb_4614.zip

这是从xshell官网下载的xshell6,非常好用的免费版。里面的exe文件是64bit的,32bit也有下载链接,下载速度很快

2020-09-24

MobaXterm12hanhua.rar

这是一种Linux终端登录软件,版本是Moba12,中文版的,里面可以设置moba的背景颜色,真的很不错哦

2020-06-22

Shell编程ppt[C++教程网cppcourse[1].com].zip

这是C++教程网的Linux入门的相关ppt,如果需要可以看看。我觉得非常不错的哦,ppt很全的。请各位入门Linux敬请想用

2020-05-06

跟我一起学C++.zip

这是C++教程网的和我一起学习C++的ppt和代码,可惜只有1-25节,后面的代码我会持续补充进去。链接:https://blog.csdn.net/u011436427/article/details/105442484

2020-05-06

NetworkProgramming-master.zip

这是C++教程网之网络编程部分的所有代码,代码应该都可以用,大部分代码使用C语言编写。目录:https://blog.csdn.net/u011436427/article/details/105882800

2020-05-06

muduo_server_learn.zip

大并发服务器开发(实战)https://www.bilibili.com/video/av45560719课程的所有ppt和代码资料,里面还有muduo网络库的使用手册

2020-03-12

20+张高清技能图谱.7z

20+张高清技能图谱.7z,包括:区块链,云计算,ios,linux,前端工程师,hadoop家族等等涵盖了所有软件开发的图谱内容

2020-03-02

cpptools-osx.vsix

这是我找到了的cpptools-osx.vsix资源,是用在离线安装在vs code中的拓展包,可以用来查找定义,查找引用,但是得和https://blog.csdn.net/u011436427/article/details/103382737进行配合,安装完毕后,下载这个网站的链接,用链接后的完整扩展包替换离线安装的包即可

2019-12-05

VSCode Cpptools最新版1.40.2版本.7z

能连接微软的相关网站,从github上更新离线vs code扩展包的结果就是,扩展包安装完毕,却不能完全使用。 eg:C/C++ IntelliSense, debugging, and code browsing(VSCode Cpptools)内网条件下,依赖包可能不能更新完全,代码的跳转等功能不能使用,这是扩展包C/C++ IntelliSensese的问题,所以我在家下好也测试好了,该扩展包绝对可用!

2019-12-04

VSCode Cpptools.7z

我将VSCode Cpptools的相关所有依赖包以及我的VSCode Cpptools完整扩展包上传了,如果你缺少什么就加什么,也可以将这些包分别全加进行,参考我的完整扩展包即可,若还是不行,可以将我的完整扩展包替换掉你原来的扩展包,ps:我没试过!!!

2019-12-04

空空如也

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

TA关注的人

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