分类 : 16个相关结果 179次浏览

proto文件定义 // Interface exported by the server. service RouteGuide { // 一个标准的rpc调用 rpc GetFeature(Point) returns (Feature) {} // 一个server返回给客户端一个stream的调用 rpc ListFeatures(Rectangle …

protobuf原生的异步调用 void DoneCallback(PingMessage *response) { } void async_test() { RpcClient client("127.0.0.1", 8000); PingService::Stub stub(client.Channel()); if (!clien …

Docker

Docker是什么 简单的理解docker是一个轻量级的虚拟机 虚拟机VSDocker 优点 更小更快 更好的资源利用 很多年前,那时候还没有虚拟化,当我们需要创建一个新服务时,我们必须申请实际的物理机硬件。 这可能要花上数月,依赖于公司的流程。一旦服务器到位,我们创建好服务,很多时候它并没有像我们希望的那样成功,因为服务器的CPU使用率只有5%。 太奢侈了 …

减小动态库大小

ELF文件类型: ELF(Executable and Linking Format)是一种对象文件的格式,用于定义不同类型的对象文件(Object files)中都放了什么东西、以及都以什么样的格式去放这些东西。它自最早在 System V 系统上出现后,被 xNIX 世界所广泛接受,作为缺省的二进制文件格式来使用。可以说,ELF是构成众多xNIX系统的基 …

区别 kqueue和epoll是freebsd和linux下用于大规模网络io复用的方法。它们之前和很多相似之处。但也有些地方要注意: select/poll/epoll还不支持普通文件,而kqueue支持; kqueue可以多次add,它通过<fd, filter>的组合作为不同过滤器之间的标志,如果这两个键完全相同,则直接覆盖; epoll以 …

网络通信中的close时注意事项

socket关闭时的一个简单的流程: read函数当接收到一个FIN时,会返回0,所以可以通过它来判断另一端是否已经关闭了。 当A方调用close时,另一方B read会返回0,如果B没有调用close,则B会到CLOSE_WAIT,而A停在了FIN_TIME2. 所以在写程序的时候,要注意,一次关闭操作,两端都会有close的调用。 另外要注意如果是主动关 …

gdb对core文件进行调试总结

当程序出错产生一个core文件时,通过以下步骤来进行调试: 1:bt查看程序调用栈信息: 这样,基本上可以确定程序在哪一行出错。 2:frame查看具体帧信息,每个函数调用它都会保存到一帧中 info args 可以查看当前函数的参数 info locals 可以查看函数的local变量 info catch 查看函数的异常信息 这是可能是因为编辑器优化了代 …

一、基本概念 1.1 什么是库 在 windows 平台和 linux 平台下都大量存在着库。 本质上来说库是 一种可执行代码的二进制形式,可以被操作系统载入内存执行。 由于 windows 和 linux 的平台不同(主要是编译器、汇编器和连接器 的不同),因此二者库的二进制是不兼容的。 本文仅限于介绍 linux 下的库。     1.2 库的种类 li …

Linux常用调试和性能分析工具

Linux常用调试工具 编译阶段 Nm l 功能 获取二进制文件里面包含的符号 二进制文件:可执行文件、目标文件、库文件 符号:函数、变量 l 用途 跟踪链接错误(尤其是C++、C混编的程序) 重要参数 -C,把C++函数签名转为可读形式 (认识c++ name mangling) l 特别注意 不同版本的g++,对于同样C++函数的函数签名可能是不同的,所 …

Linux 下定时器的实现方式分析

  概论 定时器属于基本的基础组件,不管是用户空间的程序开发,还是内核空间的程序开发,很多时候都需要有定时器作为基础组件的支持,但使用场景的不同,对定时器的实现考虑也不尽相同,本文讨论了在 Linux 环境下,应用层和内核层的定时器的各种实现方法,并分析了各种实现方法的利弊以及适宜的使用环境。 首先,给出一个基本模型,定时器的实现,需要具备以下几个 …