logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

protobuf 使用详解

MOBILE = 0;HOME = 1;WORK = 2;Person:单个联系人AddressBook:电话簿,内部保存多个 PersonPersonname:姓名id:联系人 IDemail:邮箱phones:多个电话号码last_updated:最后更新时间。

文章图片
#c++#中间件#经验分享
RPC 异步调用基本使用方法:基于官方helloworld-async 示例

上一篇已经介绍过 RPC、gRPC、Protobuf、HTTP/2、Channel、Stub、Service、ServerBuilder 这些基础概念,所以这里不再重复展开简单回顾一句:gRPC 的基本开发流程就是先写.proto文件定义服务和消息,再用protoc生成 C++ 代码,服务端实现服务,客户端通过Stub发起远程调用同步调用的特点是写法直观,客户端调用 RPC 后阻塞等待结果,服务端

文章图片
#rpc#c++#经验分享
RPC 同步调用基本使用方法:基于官方 RouteGuide 示例

同步 gRPC 的第一步是写.proto文件。.proto文件不是普通 C++ 代码,而是接口描述文件,它负责描述传输的数据结构和远程调用接口。例如一个最简单的服务可以写成,它表示客户端发送一个,服务端返回一个HelloReply。在 C++ 中不能直接编译.proto文件,需要通过protoc生成和,前者主要对应 Protobuf 消息类,后者主要对应 gRPC 服务类和 Stub 类在 Rou

文章图片
#rpc#c++#经验分享
gRPC Keepalive 机制

gRPC 的 Keepalive 基于,不是 TCP keepalive它主要解决两个问题1、检测死连接客户端和服务端之间的 TCP 连接看起来还在,但对端进程可能已经崩溃,网络可能已经断开,中间 NAT 也可能已经丢了连接状态,这时如果没有探测,业务代码可能要等到下一次 RPC 请求失败才知道连接不可用,而 Keepalive 会主动发送 HTTP/2 PING,如果超过还没有收到 ACK,就认

文章图片
#rpc#c++#经验分享
gRPC 数据包传输格式解析:从 Protobuf 到 HTTP/2

假设有这样一个protoid: 150我们重点分析这个对象在网络中到底会变成什么样。

文章图片
#http#rpc#c++ +1
C++中指针和引用的区别

指针和引用都是基于地址指针指向一块地址,指针的值是指向的变量的地址;引用就是某块内存的别名。

文章图片
#c++#经验分享
C++中malloc、free和new、delete的区别

malloc、free是c语言中的库函数内存操作malloc函数接收需要分配的内存字节数,如果内存足够,可以成功分配,会返回指向内存块起始位置的指针free函数释放指针指向的内存,接收的参数是需要释放的内存的首地址用法实际上,在调用malloc之后,返回给用户的指针指向的地址的前面还有一段元数据,这部分元数据记录了内存块的大小等数据元数据的大小是固定的,所以在调用free函数的时候会先找到这部分元

文章图片
#c语言#c++#经验分享
C/C++中的extern关键字详解

像上面讲的那样,编译期编译器只需要知道这些变量/函数是定义在其他地方的,链接的时候将extern_main.o和extern_other.o链接在一起,就可以找到这些变量/函数的具体地址。所以extern关键字的作用就是在编译期告诉编译器,这个变量/函数是其他地方定义的,此时编译器也不需要直到具体是在哪里定义的,链接阶段会找到extern关键字修饰的变量/函数的真正地址。extern是c/c++语

文章图片
#c语言#c++#开发语言 +1
C++ 无锁队列实现:从 SPSC 到 MPSC

本文围绕一个有界环形队列展开,先用 SPSC 版本说明最基本的生产者消费者模型,再重点分析 MPSC 版本的迭代过程。MPSC 的核心难点不在“多个线程怎么拿到不同位置”,而在“多个生产者完成构造的顺序可能和认领位置的顺序不同”,因此不能把tail_当作可读边界,也不能把commit_简单理解成完成数量,最终必须使用表示连续可读前缀和每个槽位对应的精确票号。

文章图片
#c++#开发语言#数据结构
C++ 原子变量与内存序:从std::atomic到release/acquire

如果一个原子变量只是用来做计数、打点、统计次数,并且其他线程不依赖这个计数去判断某段数据是否已经准备好,那么 relaxed 通常就够了。例如可以保证计数本身不会丢失更新,但不额外约束其他内存读写的顺序。

文章图片
#c++#数据结构#开发语言 +1
    共 15 条
  • 1
  • 2
  • 请选择