C/C++
文章平均质量分 80
花括号
专注,极致,快!!!!!
展开
-
部署正向代理squid
之前在服务端一致使用NGINX做反向代理。 方向代理隐藏了backend的WEB服务器, 起到了负载均衡,冗余等作用。对于客户端来说, 隐藏了后面的WEB代理,客户端认为反向代理的IP即是WEB服务器。最近出现了一种情况, 使用反向代理,并不能工作,开始考虑部署一个正向的代理。 VPN Internal_Server1 <-------------------> External_Server2 ...原创 2021-03-03 18:44:58 · 521 阅读 · 1 评论 -
Thrift 网络传输采用小端还是大端
就目前普遍的情况, 互联网行使用的服务器,主要以X86平台为主。X86平台是采用小端序的。 如果是公司内部使用的系统, 不是对外开发的接口。那么如果网络端如果采用小端序传输, 就不用转换成大端进行传输, 节省了大小端转换的工作, 提高了效率。 这对于网络IO任务较重的系统来说,效率的提升是有一定的帮助。那么Thrift作为一个应用广泛的 RPC 框架, 涉及很多的底层的二进制传输,那么thrift的底层传输,是通过大端还是小端传输? 下来来具体分析一下。file: TProtocol.h#ifd原创 2020-09-25 11:44:51 · 497 阅读 · 0 评论 -
C++ string 使用引起的内存泄露
今天在CI的时候看到一位程序员的代码,如下,大概就是返回一个给定长度的,用空格填充的字符串。at the first glance,这段代码会引起内存泄露。因为在函数中new了一块内存作为临时指针,指针作为返回结果临时变量的构造函数的参数, 之后再也没有引用到这块地址的指针。这段代码也在程序中完全失去控制。造成了内存的泄露。 造成内存泄露的原因是,对于string, 包含一个内部成原创 2015-12-14 18:04:57 · 9664 阅读 · 0 评论 -
splice函数,高效的零拷贝
版权声明:本文为博主原创文章,未经博主允许不得转载。最近在看《linux高性能服务器编程》,在此做个日记,以激励自己,同时分享于有需要的朋友。1. splice函数[cpp] view plain copy #include ssize_t splice(int fd_in, loff_t *off_in, int fd_out, lof转载 2017-02-16 11:46:19 · 1449 阅读 · 0 评论 -
ProtoBuf 中的反射机制
我们先看一下JAVA反射的概念:主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。反射是Java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会成本很高!说的很学术,看的也有点晕。 说白了就是,在运行时根据类的名字(字符串原创 2017-03-17 17:43:14 · 3407 阅读 · 0 评论 -
linux 读写锁的几种实现方式
c++读写锁的实现博客分类:c++ 一、使用互斥锁和条件变量实现读写锁: [cpp] view plaincopyclass readwrite_lock { public: readwrite_lock() : stat(0) { } void readLock()转载 2017-05-31 16:30:33 · 3538 阅读 · 0 评论 -
C/C++ 中的位域 bit field
位域是C/C++中常用的数据结构。 在某些情况下合理的使用位域可以节省存储空间,提高运行效率并提高程序的可读行。按照我以往的编程经验来看,通常以下情况下会优先考虑使用位域。1)有很多的状态标记,需要集中存储,比如tcp链接的状态 2)协议栈相关的数据结构,尤其是底层通信协议中很多情况使用一个或者几个bit来表示某种状态,数据长度等等。这时候就会使用到位域。 struct SNF原创 2017-08-14 19:40:09 · 3956 阅读 · 0 评论