Linux 应用

Thrift的required和optional源码分析

thrift的数据类型定义的时候和protobuf(后面简称pb)一样也有requried和optional标签,意义是类似的,required标示改消息在序列化之前必须设置该字段值,如果不设置则无法序列化,当然也就更无法反序列化,该标签标示的字段是必填字段;而optional字段则标示该字段可赋值也可以不赋值,当然不赋值的结果是在序列化之后的数据中该字段被标示为无值字段,就是说直接访问获取该值是不行的,必须先判断是否设置了该字段的值,再去读值;这样作的好处是在协议扩充和变更时可以较为灵活的设计程序,而且在传输上也就减少了不必要的字段传输。

继续阅读

shell字符串的截取

shell字符串的截取的问题: 一、Linux shell 截取字符变量的前8位,有方法如下:

1.expr substr “$a” 1 8
2.echo $a|awk ‘{print substr(,1,8)}3.echo $a|cut -c1-8
4.echo $
5.expr $a : ‘\(.\\).*’
6.echo $a|dd bs=1 count=8 2>/dev/null

继续阅读

SHELL学习笔记----IF条件判断,判断条件

无论什么编程语言都离不开条件判断。SHELL也不例外。

继续阅读

Thrift学习笔记—IDL基本类型

thrift 采用IDL(Interface Definition Language)来定义通用的服务接口,并通过生成不同的语言代理实现来达到跨语言、平台的功能。在thrift的IDL中可以定义以下一些类型:基本数据类型,结构体,容器,异常、服务

继续阅读

scons学习笔记

scons是一个 python写的用来编译源码的一个工具,类似于 make工具,但是支持的语言更多,灵活性更强。

这里来介绍一下 scons的使用。下载可以在其官方网站: http://www.scons.org,源码安装就不说了, ubuntu和 debian上安装更为方便,直接 apt-get install scons就可以了。本文以编译c 、c++ 为例来介绍其使用。

继续阅读

Thrift 学习笔记--概念介绍

Thirft框架有几个比较重要的组成部分,这里简单介绍以下,主要翻译了其官方文档。加入了自己的一些理解。

继续阅读

Thrift http嵌入sever设计实现

背景介绍

在服务器模块程序种嵌入一个简单的httpserver,再通过网页或是后台再访问这个httpserver,得到一些服务模块的实时运行数据或是运行环境数据,或者在浏览器端调整服务器的实时运行参数,从而达到对后台服务模块的实时监控。 本文所写的是在thrift框架之下如何嵌入一个httpserver模块,并且如何在thrift框架之下使用js和httpserver交互,发送数据到服务器,并且获取展示服务模块的运算结果。

继续阅读

Nginx设置为代理服务器上网

公司的网络部门抽风,突然之间不让办公机连接idc上的非80端口了,而内部写的大部分的后台模块都是会起一个非80的http端口,让开发去实时查看模块信息,甚至动态调整模块内的一些flags参数,兄弟们着实痛苦了好几天,本来想简单点直接在任意idc机器上使用w3m来去登录这些页面,但是这些页面偏偏使用了ajax获取数据才进行展示,所以没办法,只好开代理了,上nginx吧,反正想在那台内网机器上安装nginx好久了。

继续阅读

Program received signal SIGPIPE, Broken pipe

在gdb调试程序的时候发现一个错误信息, Program received signal SIGPIPE, Broken pipe,原来是客户端程序在给服务器进行写入操作的时候,如果服务器执行了close操作,这时候根据tcp协议规定服务器要给客户端返回一个RST响应,如果client再用之前的fd往这个服务器写数据的时候,系统救护发一个SIGPIPE信号给进程,告诉进程链接已经断开。但是SIGPIPE信号的默认执行动作是terminate,所以客户端会退出,如果要想客户端不响应这个信号,则直接将其屏蔽忽略即可。

继续阅读

crontab 环境变量导致脚本运行错误

1.缺少LANG的ls取值错误 程序:

yestoday=`date +%Y%m%d -d-1day`
ytoday=`date +%F -d-1day`
pathroot="/data5/tt_chat/"
filelist=`ls $pathroot/data/ -l|grep $ytoday|awk '{print $8}'`
echo $filelist

按时间过滤过滤出昨天一天生成的文件,让后再做处理,本地测试执行,没有问题,加入crontab执行总是没有数据文件过滤出来,但是自己再本地执行,就可以了

继续阅读