logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

RPC分布式通信(5)--发布 RPC 服务、处理客户端调用请求

首先通过 Protobuf 定义 RPC 服务的接口(.proto文件),这是 RPC 框架的「接口契约」,确保客户端和服务端数据格式一致。// 登录请求参数// 登录响应结果// 错误码:0=成功,非0=失败// 错误信息// 是否登录成功// RPC服务定义(必须继承google::protobuf::Service)// 登录方法编译后会生成和消息类;抽象服务类(继承服务发布核心:通过 Pr

#rpc#分布式#qt
C41 IO复用方法EPOLL

高并发网络服务器:Web 服务器(Nginx)、TCP 网关、即时通讯服务器;百万级连接场景:物联网设备接入、长连接服务(如 IM 长连接、WebSocket);低延迟 I/O 场景:高频交易系统、实时数据处理(如日志采集);多 I/O 类型混合场景:同时监控 socket、管道、文件描述符等多种 I/O 类型。跨平台需求:epoll 仅支持 Linux,Windows 需用 IOCP,BSD 需

文章图片
#开发语言#c++
RPC分布式通信(1)--分布式通信讲解

RPC 的本质是“分布式函数调用的封装”,核心价值是简化分布式通信的开发成本。用Protobuf做序列化 / IDL;用ZooKeeper做服务注册与发现;用线程池 + 异步 IO提升并发性能;用异步日志做系统监控。这些组件组合起来,就是一个完整的高性能分布式 RPC 框架。接下来的文章将从四种典型线程池+Protobuf细讲+ZooKeeper进行rpc框架进行。

#rpc#分布式#网络协议
编译原理(3)词法分析基本概念

词法分析(Lexical Analysis)是编译过程的第一个核心阶段,又称 “扫描”(Scanning)。其本质是将源程序中无结构的字符流,按编程语言规则转换为结构化的 “词法单元”,同时过滤无用信息、检查字符级错误,为后续语法分析提供标准化输入。理解其基本概念是掌握编译原理的起点。词法分析涉及 4 个核心术语,它们共同描述了 “字符流如何变成词法单元” 的过程:词法分析的所有操作都围绕以下 3

文章图片
集群聊天室项目--Server层代码设计

是 muduo 的多 Reactor 配置 ——1 个 mainReactor(处理监听连接)+ 4 个 subReactor(处理已连接客户端的 IO),提升并发 IO 处理能力;意图将耗时业务(如数据库查询)放到独立线程池,避免阻塞 IO 线程(Reactor 模式的核心原则:IO 线程只做 IO,不做耗时操作)。:1 个 mainReactor 处理监听连接,4 个 subReactor 处

#服务器#网络#c++
集群聊天室项目--json详解

/ 解析时忽略注释(JSON本身无注释,但可兼容//或/* */注释)// 第三个参数:ignore_comments=true// 解析时允许尾逗号(兼容不规范的JSON)// 第四个参数:allow_trailing_commas=trueJSON 的核心是 “2 种结构(对象 / 数组)+6 种类型”,语法规则严格但简单,C++ 中用 nlohmann/json 可实现全量操作。解析 / 序

#json
C25 auto_ptr智能指针刨析

auto_ptr是 C++98 第一代智能指针,核心价值是RAII 自动释放内存,避免内存泄漏;核心设计:通过构造接管所有权、析构释放内存,拷贝 / 赋值采用 “所有权转移” 语义;致命缺陷:所有权转移导致悬空指针、不支持数组、不能作为容器元素、无空指针检查;废弃原因:设计与用户直觉不符,极易引发 bug,被 C++11 新一代智能指针替代;推荐方案:C++11+ 环境下,用unique_ptr替

文章图片
#开发语言#c++
C24 对象生存期

1. 局部对象2. 全局对象3. 动态创建的对象1. 对于局部定义的对象,每当程序控制流到达该对象定义处时,调用构造函数。当程序控制走出该局部域时,则调用析构函数。2 对于静态局部定义的对象,在程序控制首次到达该对象定义处时,调用构造函数。当整个程序结束时调用析构函数。2. 对全局定义的对象,当程序进入入口函数 main 之前对象就已经定义,这时要调用构造函数。整个程序结束时调用析构函数。3. 动

文章图片
#c++#开发语言
M2 编译多个源文件

但是如果有100个文件,在这样就有点麻烦了。可以类推,在同一目录下有多个源文件,只要在add_executable里把所有源文件都添加进去即可,第一个参数dir就是指定目录,第二个参数var是用于存放源文件列表的变量。先执行cmake和make 后运行 ./main。接下来写一个进阶版的demo使用该变量。首先在同一个目录下创建以下文件。可以看到运行成功了!funa.hpp内容如下。3.1.2.2

#java#前端#算法
2 c/c++面试题

注意:栈区和堆区,堆区的存储是按照随意存储,而栈区是先进后出,栈由编译器自动分配释放,存放函数的参数值,局部变量的值等。操作对象不同,strcpy的两个操作对象都为字符串,sprintf操作对象可以是多种数据类型,目的的操作对象是字符串,memcpy的两个对象是任意可以操作的内存地址,并不限于任何数据类型。队列和栈都是先线性存储结构,但是两者的插入与删除数据都是不同的操作,队列是先进先出的数据结构

#c语言#c++#开发语言
到底了