Sqlite使用笔记

  在目前做的元数据节点中,为了保存一些节点的私有数据,选择了本地存储,在选择本地存储的选择上又选择了使用sqlite,sqlite对数据存储和数据解析在使用比较简单。而且编译入当前代码也是比较容易的。
  Sqlite常使用的函数有下面几个。
sqlite3_open()
sqlite3_errcode(_sqlite)
sqlite3_errmsg()
sqlite3_get_table()
sqlite3_exec()
sqlite3_prepare()
sqlite3_step()
sqlite3_column()
sqlite3_finalize()
sqli[……]

Read more

storm安装过程

storm的官方安装说明:https://github.com/nathanmarz/storm/wiki/Setting-up-a-Storm-cluster

本文主要介绍storm的单机版的安装测试,也是学习阶段,还没有机会搭建集群。

1.storm安装软件包列表

pythonzookeeperzeromqjzmqstorm

python保证2.7以上版本即可。

2.Zookeeper下载安装:

我下载的是zookeepe[……]

Read more

Hadoop2.3.0源码编译过程记录

    要在hadoop上作一个mr程序,做一些统计工作。但是发现官网下载的2.3的库只有32位的,而我的机器系统都是64位的。用g++直接指定编译32位的程序又发现头文件依赖有问题,没法编译通过。所以就只能编译hadoop,编译后在服务上启动64位程序,再编译mr程序进行工作。下面是编译的过程和其中遇到的一些问题。

编译文件准备:

protobuf-2.5.0.tar.gz

findbugs-2.0.3-source.zip

gcc, build-essential, libssl-dev, zlib1g-dev, libglib2.0-dev, cmake, mav[……]

Read more

hadoop2.3单机搭建

   没事整理了之前搭建hadoop的过程,这里使用了最新的hadoop版本,想在单机上做一些测试,顺手也就整理了一下这个文档。

一、准备环境

1Hadoop是用Java开发的,必须要安装JDK1.6或更高版本

apt-get install openjdk-6-jdk

2Hadoop是通过SSH来启动slave主机中的守护进程,必须安装OpenSSH

apt-get install openssh-server

3Hadoop更新比较快,我们采用最新版hadoop2.3来安装

4.配置对应Hosts记录,关闭iptablesselinux([……]

Read more

配置SSH无密码登录问题解决记录

在本地测试搭建hadoop玩以下,不想在ssh配置上栽了了,记录以下过程和处理方式:
hadoop@debian:~$ ssh-keygen -t rsa  #一直回车生成
hadoop@debian:~$ cd
hadoop@debian:~$ cd .ssh/
hadoop@debian:~/.ssh$ ls
id_rsa  id_rsa.pub
hadoop@debian:~/.ssh$ cat id_rsa.pub >> authorized_keys
hadoop@debian:~/.ssh$ ls
authorized_keys  id_rsa  id_[……]

Read more

stl的内存管理

 

zz http://biancheng.dnbcw.info/c/73875.html

在你大量使用stl的各种容器时,你确定它们会按你想象的那样释放内存吗?你使用map存放1G的数据,当map clear后,它占用的空间释放了吗?

下面是一些统计数据:

vector:
1. 释放内存时机:退出作用域
2. 存10m个int,约占40m内存
priority_queue with vector:
1. 释放内存时机:退出作用域
2. 存10m个int,约占40m内存
priority_queue with deque:
1. 释放内存时机[……]

Read more

thrift之php客户端使用

0.一方面是测试使用,另一方面还想把server的一些状态和运维信息能够以web的方式展示出来,组内的web框架全是ci,我想使用django,但是组内python的人少,所以还是随大家要使用ci,用php做开发,那么就需要php也能支持使用thrift的rpc方式去访问。

1.php也和python一样需要依赖thrift已经写好的一些库,但是php的库一般我们是直接拷贝到和程序一起就可以使用,相对python多了些灵活,而且不需要为平台编译,担任python也可以直接使用库,但是python的库需要编译才可以生成,不通的系统应该需要重新编译。
我的开发目录如下:
gen-php [……]

Read more

thrift之python客户端使用

0.写好了cpp的服务器后,测试是个问题,写cpp程序来测试好像不是很灵活,所以想用python脚本来写测试程序,记录一下过程。

1.首先是thrift的python程序库的安装,有些基础库需要安装后才能运行,在thrift的目录库目录中,选择py目录,使用root账户就可以直接安装了。
cd thrift-0.9.0/lib/py
python setup.py install
即可完成安装。当然安装完成之后也要记得测试一下,安装是否成功。

2.编译thrift脚本文件为py语言。
thrift –gen py meta_node.thrift

在但前目录下生成g[……]

Read more

Thrift的required和optional源码分析

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

pb是必须选择requiedopt[……]

Read more

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

二、按指定的字符串截取
1、第一种方法:
${varible##*string} 从左向右截取最后一个string后的字符串
${varible#*string}从左向右截[……]

Read more

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

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

      if list then
do something here
elif list then
do another thing here
else
do something else here
fi

EX1:

#!/bin/sh

SYSTEM=uname -s    #获取操作系统类型,我本地是linux

if [ $SYSTEM = “Linux” ] ; then     #如果是linux的话打印linux字符串
echo “Linux”
elif [ $SYSTEM = “[……]

Read more

Thrift学习笔记—IDL基本类型

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

1基本类型

  • bool: 布尔值 (true or false), one byte
  • byte: 有符号字节
  • i16: 16位有符号整型
  • i32: 32位有符号整型
  • i64: 64位有符号整型
  • double: 64位浮点型
  • string: Encoding agnostic text or binary st[……]

Read more

scons学习笔记

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

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

  1. 编译命令

在源代码目录下直接使用scons命令就可以编译,但是前提是编写好编译规则文件,默认的编译规则文件名是Sconstruct,和makemakefile或者Makefile文件一样。如下所示:[……]

Read more

Thrift 学习笔记–概念介绍

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

网络栈

+——————————————-+
| Server                                    |
| (single-threaded, event-driven etc)       |  Server模型,是单线程,线程组,阻塞非阻塞等
+——————————————-+
| Processor            [……]

Read more

Thrift http嵌入sever设计实现

1. 背景介绍

在服务器模块程序种嵌入一个简单的httpserver,再通过网页或是后台再访问这个httpserver,得到一些服务模块的实时运行数据或是运行环境数据,或者在浏览器端调整服务器的实时运行参数,从而达到对后台服务模块的实时监控。

本文所写的是在thrift框架之下如何嵌入一个httpserver模块,并且如何在thrift框架之下使用jshttpserver交互,发送数据到服务器,并且获取展示服务模块的运算结果。

2. 设计思路

● 让thrift支持http协议

必须这样做,负责无法用浏览器访问。thrift的传输协议种本身是不支持http协议的,但是在分析[……]

Read more

Nginx设置为代理服务器上网

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

nginx不仅可以来做反向代理,也可以用来做正向代理(透明代理,代理上网)。
反向代理:外部机器通过网关访问网关后面服务器上的内容,网关起到了反向代理的功能,我们平时通过浏览器[……]

Read more

Program received signal SIGPIPE, Broken pipe

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

signal(SIGPIPE,SIG[……]

Read more

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的标志,因为对内核来说每次创建都是创建一个内核级的线程或是内核级进程。
/* We rely h[......]

Read more

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

那天看了看glibc的线程相关的代码之后,又想看看线程的创建过程,今天趁着程序还在跑的功夫看了看glibc和内核代码,简单过了一下,也顺便记录下。
glibc种线程创建是这个文件种来定义的:nptl/pthread_create.c
我们平时使用的时候一般是include pthread.h文件就可以使用pthread_create来创建线程了,但是在这个pthread_create.c文件中居然是直接找不到pthread_create函数的定义的,找到的只是:
__pthread_create_2_0
__pthread_create_2_1
compat_symbol (libp[......]

Read more