Blogs

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,所以客户端会退出,如果要想客户端不响应这个信号,则直接将其屏蔽忽略即可。

继续阅读

pthread中线程是怎么创建的(2)---glibc到内核

在glibc中线程创建是这个文件种来定义的:nptl/pthread_create.c

创建过程为,pthread_create 调用__pthread_create_2_0, __pthread_create_2_0调用__pthread_create_2_1, 或者pthread_create直接调用__pthread_create_2_1,在由__pthread_create_2_1调用create_thread来创建。

在create_thread中,首先是设置了很多内核clone的标志,因为对内核来说每次创建都是创建一个内核级的线程或是内核级进程。

继续阅读

pthread中线程是怎么创建的(1)---glibc中的别名机制symver(symbol version)

那天看了看glibc的线程相关的代码之后,又想看看线程的创建过程,今天趁着程序还在跑的功夫看了看glibc和内核代码,简单过了一下,也顺便记录下。 glibc种线程创建是这个文件种来定义的:nptl/pthread_create.c

我们平时使用的时候一般是include pthread.h文件就可以使用pthread_create来创建线程了,但是在这个pthread_create.c文件中居然是直接找不到pthread_create函数的定义的,找到的只是:

继续阅读

线程种的gettid和pthread_self区别

这几天写程序老是使用thread来做,所以自己封装了一个threadbase的类来做简单的测试使用,但是在写的过程种发现又两个获取线程id的函数:pthread_self和gettid,那这两个函数有什么区别呢?

看gettid的man,这样写道:

继续阅读

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执行总是没有数据文件过滤出来,但是自己再本地执行,就可以了

继续阅读