- 2024-09-07关于CPP——Muduo库的使用
目录 一、Moduo库是什么1.1Moduo库概念1.2Reactor模式 1.3Moduo库的原理二、Muduo库常见接口2.1 TcpServer类2.2 EventLoop类2.3 TcpConnection类 2.4 TcpClient类2.5 Buffer类 2.6 CountDownLatch类2.7 EventLoopThread类1.防止主线程阻
- 2024-08-31Broker服务器模块
一.Broker模块介绍二.Broker模块具体实现1.类的成员变量与构造函数成员变量事件循环和TCP服务器:muduo::net::EventLoop_baseloop;muduo::net::TcpServer_server;这些是muduo库提供的核心组件,负责处理网络事件和管理TCP连接。消息分发和编码:muduo::net::Protobuf
- 2024-08-28【一】开始篇
概述之前在暑假有空学习了一下mprpc项目,这是一个基于陈硕大佬写的muduo库、protobuf的分布式rpc框架,现在想整理一下内容(众所周知,学了不整理等于白学)技术栈集群和分布式概念以及原理RPC远程过程调用原理以及实现Protobuf数据序列化和反序列化协议Protobuf数据序列化和反序列
- 2024-08-24集群聊天服务器
集群聊天服务器项目地址:Focuspresent/ChatServer(github.com)环境搭建(基于Unbuntu20.04)boost库安装sudoaptinstalllibboost-all-devmysql开发库安装sudoaptinstalllibmysqlclient-devmuduo库安装先需要安装cmake以及boost库sudoaptinstallcmake下载安
- 2024-08-22仿Muduo库实现高并发服务器——Connection模块
这个模块看着代码挺多的实则真的很多,但是不难,我为大家将各个函数拿出来理一理。 connection就是将主线程监听的网络套接字上的客户端套接字进行包装,使被包装的套接字可以进行,各种事件的处理,比如读写事件。下面就来详细看看。 这是connection模
- 2024-08-22仿Muduo库实现高并发服务器——Server.hpp框架的简单描述
EventLoop模块在本项目中的简单使用: 下面这张图是channel模块,poller模块,TimerWheel模块,EventLoop模块,LoopThreadPool模块进行组合。便于大家对这个项目的理解,因为代码看起来挺复杂的。下面这个图,加入了Connection模块,Buffer模块,socket模块,Acceptor模块,Tcpser
- 2024-08-22仿Muduo库实现高并发服务器——任务定时器模块
任务定时器模块TimerWheel在本项目中的简单使用: 下面这张图是channel模块,poller模块,TimerWheel模块,EventLoop模块,LoopThreadPool模块进行组合。便于大家对这个项目的理解,因为代码看起来挺复杂的。上面右下角就是定时器模块。TimerTask类的实现:usingTaskF
- 2024-07-01详解Muduo库
一、Muduo网络库简介Muduo网络库:底层实质上为Linux的epoll+pthread线程池,且依赖boost库。muduo的网络设计核心为一个线程一个事件循环,有一个mainReactor负载accept连接,然后把连接分发到某个subReactor(采用轮询的方式来选择subReactor),该连接的所用操作都在那个subReac
- 2024-06-06详解 Muduo 网络服务和日志模块
这篇文章主要目的是介绍muduo的网络服务模块和日志模块。muduo网络服务在muduo网络库中,最重要的初始化服务,需要涉及两个核心模块,muduo::net::EventLoop和muduo::net::TcpServer。muduo::net::EventLoop不需要我们去设置,我们需要做的只是给Server指定一个EventLoop对象,并
- 2024-05-24【Muduo】三大核心之Poller、EPollPoller
Poller在Muduo中,Poller负责基于IO多路复用机制进行IO事件监听和处理的组件,作为EPollPoller的基类,为后者提供了与PollPoller统一的IO复用接口,并且声明了一个关键的创建派生类的成员函数:staticPoller*newDefaultPoller(EventLoop*loop);此函数可以通过判断`::getenv("MUD
- 2024-05-24【Muduo】网络库各模块和交互流程简介
Muduo是由陈硕大佬个人开发的C++网络库,最近在剖析其源码,在此做一些归纳整理。Channel模块内含向Poller中注册的文件描述符fd,封装了感兴趣的事件events、Poller返回的发生的事件revents,和一组能够根据fd发生的事件revents进行回调的回调函数callbacks共有两种Channel,一种是
- 2024-03-17C++ 简单使用Json库与muduo网络库
C++简单使用Json库与muduo网络库C++使用Json库测试代码均在Ubuntu20上运行首先下载json.hpp的代码链接然后和你的测试代码放在同一目录下面导入方式#include"json.hpp"usingjson=nlohmann::json;json序列化代码测试1voidtest1(){jsonjs;js["id"]={1
- 2023-11-25muduo源码剖析之前序
目录生疏阻塞、非阻塞同步、异步Linux上的五种IO模型Reactor模式muduo的基本使用生疏在进行日志库的开发时,涉及到的几个重要的宏:__FILE__:文件名称,包含路径__LINE__:行号__func__:函数名称cpp中含有默认参数时,函数声明和定义不能同时出现cpp中静态成员变量以及静态成员函
- 2023-11-25[岩禾溪] C++20项目 muduo网络库 项目实战 (1)Logger & Timestamp
编辑本项目由岩禾溪原创 项目实战+新特性用法介绍开源代码+博客解析+视频讲解 GitHub+CSDN+BiliBili同步更新,三个平台同名【岩禾溪】视频讲解和代码链接在文章末尾,你的关注是我更新的最大动力项目环境本项目采用C++20开发精简Muduo网络库BuildTool:Xma
- 2023-11-25[岩禾溪] C++20项目 muduo网络库 项目实战 (2)InetAddress & Channel
目录 本项目由岩禾溪原创InetAddress.ixx模块介绍类InetAddress:C++20新特性内容:InetAddress.cpp函数实现解释:Channel.ixx模块介绍类Channel:Channel.cpp模块导入和常量定义:类Channel的函数实现:关于注释部分:更新LoggerLogger.ixx(更新) 编辑本
- 2023-09-02muduo快速部署
因为muduo是依赖boost库的,因此我们先安装boost库一、安装boost库进入官网boost官网下载boost_1_70_0.tar.gz运行命令tar-zxvfboost_1_70_0.tar.gz#解压缩cdboost_1_70_0#进入文件夹./bootstrap.sh#获得bjam文件./bjam
- 2023-08-29【muduo】net篇---TcpServer
TcpServer在创建的过程中,首先new出来自己的核心组件(Acceptor,loop,connectionMap,threadPool)之后TcpServer会向Acceptor注册一个新连接到来时的Connection回调函数。一旦接受到一个client的连接,就会调用TcpServer::newConnection()函数。这个函数使用round-robin算法从EventLoopThr
- 2023-08-29【muduo】net篇---Poller
Poller类负责更新某一个Channel(或者说套接字)上对应的事件,通过epoll_wait()函数返回有事件发生的套接字,设置Channel上的事件(revents_),并添加到激活事件列表中。#include<muduo/net/poller/EPollPoller.h>#include<muduo/base/Logging.h>#include<muduo/net/Channel.h>#include
- 2023-08-29【muduo】常见的并发网络服务程序设计方案
文章目录一、IO复用1、select模型2、poll模型3、epoll模型二、单线程Reactor三、Reactor+ThreadPool四、MultipleReactors(oneloopperthread)一、IO复用目前常用的IO复用模型有三种:select,poll,epoll。1、select模型说的通俗一点就是各个客户端连接的文件描述符也就是套接字,都
- 2023-08-29【muduo】TCP分包和Buffer类的设计
文章目录一、TCP分包问题1、长连接和短连接2、长连接和短连接的分包方法3、长连接和短连接的应用场景二、TCP粘包问题三、Buffer类的设计与使用1、为什么需要应用层buffer?2、如何设计并使用应用层Buffer?3、Buffer类的设计一、TCP分包问题在TCP这种字节流协议上做应用层分包是网络
- 2023-06-09muduo学习笔记
目录概念阻塞和非阻塞同步和异步Unix/Linux上的5种IO模型阻塞Blocking非阻塞non-blockingIO复用IOmultiplexing信号驱动signal-driven异步asynchronous网络服务器设计Reactor模型epollselect和poll的缺点epoll的原理和优势触发模式LT模式ET模式muduo采用的是LT模式关键组件C
- 2023-05-18muduo库笔记汇总
目录简介源码解析基础类日志库网络库简介muduo库是陈硕开发的Linux多线程事件库,适用于Linux服务器编程。Github地址:https://github.com/chenshuo/muduo文档介绍:https://book.douban.com/subject/20471211/源码解析基础类muduo笔记标记类copyable,noncopyablemuduo笔记
- 2023-05-18muduo库总结
第5章高效的多线程日志muduo没有用标准库中的iostream,而是自己写的LogStreamclass,这主要是出于性能原因(§11.6.6)。为什么不通过网络写日志信息:无法判断网络问题、可能使发送日志的一方内存爆掉、消耗带宽日志文件的滚动:达到一定时间或文件达到一定大小后,会新建日志文件。创
- 2023-02-16谈谈muduo库的销毁连接对象——C++程序内存管理和线程安全的极致体现
#前言网络编程的连接断开一向比连接建立复杂的多,这一点在陈硕写的muduo库中体现的淋漓尽致,同时也充分体现了C++程序在对象生命周期管理上的复杂性,稍有不慎,满盘皆输。为
- 2023-02-13Ubuntu cmake 安装以及问题解决(muduo库编译)
1、安装cmakesudoapt-getinstallcmake 2、安装之后查看是否安装成功:cmake--version3、出现 NoCMAKE_C_COMPILERcouldbefound.如何解决使用cmake命令时发