自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

转载 生成包含随机字符串的文件的脚本

#!/bin/sh  #sh make_random_strings 16 10000  #make 10000 strings, the string length:16    for((j=0; jj++))  {          str=          for((i=0; ii++))          {                  one=

2014-04-19 11:41:35 830

原创 用gflags的好处

用gflags跟用配置文件相比,能实现的功能其实没多大差别。但用gflags有个好处就是,很容易跟脚本结合在一起。比如最近笔者需要调用一个用了gflags的程序将某个文件里头的所有用户都执行某个操作,这个应用程序如果不用gflags,则需要在配置里头指定要读取的文件,甚至需要在程序里头添加读文件逐行进行处理的代码。现在用了gflags就很方便了。 cat /data/pd.log | whil

2014-03-20 10:51:22 2418

原创 一些花时间才写好的脚本片段

删除tmp001.txt的第一行重定向生成tmp002.txt,然后将insert.txt插入到tmp002.txt的第一行./dump_cat.sh > tmp001.txt;sed '1d' tmp001.txt >tmp002.txt;sed '1r insert.txt' tmp002.txt >CatInfor?.txt

2014-02-18 09:10:04 797

原创 修改svn文件的存取权限

有时候刚开始写的shell脚本,没注意改成可执行权限就提交svn了,这样别人下下来的文件的缺省权限就没有可执行位。之前自己解决这个问题就是svn del再svn add,几个文件还行,文件多了就麻烦。今天认真google了下,发现下面这个命令比较好用。svn propset svn:executable ON *.shsvn commit实验了下,确实改过来了。

2014-02-14 10:12:20 2351

原创 生产者和消费者处理能力匹配的问题

最近碰到一个问题,生产者产生的内容需要尽快被消耗掉(发送出去),简单说就是处理的延迟要尽量小。一开始,生产者是多个thrift server启动的worker thread,比如生产者的线程数是10,而消费者线程是1,这样导致消费者每次按照最大能力取也总取不尽。后调整为一个生产者一个消费者,已敷使用。这里还有个思路就是提高消费者线程的优先级。这个还没尝试。

2014-01-13 12:07:44 1179

原创 构建线程类的2种做法

一种是构建一个基础的thread类,run弄成纯虚函数。当需要使用thread类的时候,继承这个基础的线程类,然后重载run()函数。另一种是,任务弄成一个类,线程弄成另一个类。应用主要继承任务类,重载任务类的run函数。典型的比如thrift里头的runnable类和Thread类。

2014-01-12 14:00:43 1113

原创 如何去除utf-8字符串里头的非法字符

在开发的过程中碰到了在utf-8的字符串里头有非法字符的问题,搜了下,有不少人遇到了相同的问题。有iconv.open("UTF-8", UTF-8//IGNORE")Table 3-7. Well-Formed UTF-8 Byte SequencesCode Points First Byte Second Byte Third Byte Fourth Byt

2014-01-10 19:17:13 3004

原创 一些有用的c++编程片段

一、tokenizer,通常用于解析传入的参数typedef boost::tokenizer > tokenizer;boost::char_separator sep(",");tokenizer tok(test_uins, sep);for(tokenizer::iterator tok_iter = tok.begin(); tok_iter != tok.end();

2013-12-26 14:53:04 1157

原创 thrift non-blocking server在多线程下的处理流程

thread 0 注册了listenHandler,只有thread 0会侦听。TNonblockingIOThread::run()  if (listenSocket_ >= 0) {    // Register the server event    event_set(&serverEvent_,              listenSocket_,

2013-11-26 18:13:06 5843

原创 如何在通信协议中传输浮点数

先来看一个错误:125        if (get_uint32_from_tlv_chain(pTlvList, 31, &dwBaseScore)  0) { LOG_BUG_RET(-1); }126        if (get_uint32_from_tlv_chain(pTlvList, 6, &dwBestAnsUid1)  

2013-11-06 10:10:24 7714 1

原创 一些有用的linux命令

一、有时候希望把找到的包含某些内容的文件名字给打出来,如果只是需要打印文件名,使用如下命令:find . -name "*.log" -exec grep -l "RspCode:20" {} \;如果希望既把文件打印出来,还把相应的字符串所在的位置打印出来,使用如下命令find . -type -f -name "*.log" -print | xargs grep -n "Rs

2013-10-29 10:42:10 1155

原创 如何只svn add一个目录而不自动add下面的文件

svn add --depth=empty otherdir

2013-07-19 09:02:52 1411

原创 mysql几个特殊有用的命令

show create table xxx; 显示原始创建表的语句select * from mysql.user\G 显示mysql的账户信息。

2013-07-18 14:29:02 596

原创 mysql中文显示问题

很多时候客户端的字符集是latin1,不能接卸中文mysql> SHOW VARIABLES LIKE 'character_set_%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+---------

2013-07-09 16:57:03 495

原创 一些介绍算法的好网站

http://blog.notdot.net/

2013-05-14 13:15:32 605

原创 sourceinsight的几个技巧

1. 去掉文件名显示的时候首字母大写在Options->Preference->display里头,勾上Show exact case of file names2. 只包含某些类型的文件。有时候一个项目有很多文件,c/c++/h/hpp等后缀的文件是缺省添加的。如果想只包含c++的文件而不需要c文件,或者还想添加一些不常见后缀的文件,比如*.thrift, *.proto等,这个就需要修

2013-04-03 17:05:55 1741 1

原创 DNS和bind9相关

最近在折腾bind9,顺带看了域名解析相关的东西,发现几个网站很不错http://www.madboa.com/geek/dig/  这个网页把dig的用户说得很透彻,有意思的是说到的dig xxx.com +trace能看到类似traceroute那样的效果,就是dns resolve request整个过程所经历的dns server,由于dig能指定服务器,且能指定包含hostname的

2013-04-02 12:48:06 942

原创 python如何修改文件权限

网上能查到一些,但很多都没有讲清楚怎么获取stat里头的mode以及怎么只修改其中的一个位做法如下:import stat  f_mode = os.stat(rndc_key_file).st_mode  logging.info("stat mode of rndc key file:%o, after or:%o", stat.S_IMODE(f_mode), stat.

2013-03-29 11:31:12 2618

原创 how to build dnsperf

dnsperf是nominum提供的免费dns性能测试工具,ubuntu下面没有现成的包,需要自己下载自己编译代码地址: ftp://ftp.nominum.com/pub/nominum/dnsperf/2.0.0.0/dnsperf-src-2.0.0.0-1.tar.gz编译的时候也不会那么顺利,有些库的依赖需要解决。简单记录问题和解决办法如下:download

2013-03-25 14:37:52 3970

原创 以前读完sdn/openflow后的几点想法

综合上述文档,sdn/openswitch用在数据中心比较合适。大了就不好扩展了,有点控制层面逆分布式而动的意思。单点故障、容量扩展随着网络规模的扩大就会随之而来,久而久之又得分域治之。sdn有几个好处:1.集中管理,便于配置。相比较物理交换机和防火墙,更好进行全局配置2.网络管理可以轻松编程实现,这也是抽象的好处。mapreduce简化了编程,sdn也简化了网络部署编程。

2013-03-14 10:20:42 1438

原创 yii框架下输出hive结果

由于yii天生是对mysql这种sql数据库提供支持的,而hive则没有驱动器,所以hive查询出来的东西不能使用CxxxDataProvider,这给分页显示带来很多麻烦。解决方案:1.使用CArrayDataProvider,示例代码如下:      $hive=new Hive(array("10.1.3.197:10000"));        $hive->execute

2013-03-13 10:06:45 1143

原创 打印可读格式精确到微妙的时间

gettimeofday(&tv, NULL);    //time(&caltime);    TRACE("[AUDIT-TRACE] time of day sec %ld, usec %ld.\n", tv.tv_sec, tv.tv_usec);    //tmptr = gmtime(&caltime);    tmptr = localtime(&tv.tv_sec)

2013-03-13 09:28:39 1154

原创 如何引导编译器动态链接第三方软件

在开发的过程中,需要使用第三方软件,第三方软件可以是动态链接库或者静态链接库。动态链接库的问题是,在部署binary的目标机器上也得安装相同的so文件。网上这方面的资料很多,但是在scons编译系统中,大家关注最多的是deps,而很少去指定link_flags.这些其实都是可以定制的。只要在sconsscript加上一条就行,比如: link_flags = [

2013-03-09 10:54:14 686

原创 cloud foundary的安全观察

一、cloud foundry简介可以从新浪微盘和优酷搜到一些文件和视频,或者stackoverflowhttp://u.youku.com/CloudFoundryCN http://stackoverflow.com/questions/tagged/cloudfoundry二、cloud foundry的安全1.一些讨论http://stack

2013-02-25 09:33:49 1069

原创 如何看库的安装地址

最近需要使用gd,就下载并用apt-get安装了,package name是 libgd2-xpm-dev。程序里头引用了gd.h,但是链接的时候需要指定库的目录。一般情况下,在/lib或者/usr/lib下面搜搜就能搜到,极少放到别的地方。但是有时候会指定安装的路径,忘了就不太容易找到了。通过dpkg能够找到,先通过 dpkg -l(L的小写) | grep [express

2013-02-22 13:39:03 589

原创 cpu/memory监控脚本的怪异现象

一开始nagios执行监控脚本的时候,总是不定期地偶尔地出现下面的错误[: too many arguments脚本一开始是这么写的:guard_info=`ps aux | grep guard | grep -v grep | grep guard_replica_id | awk '{print $2}'`echo guard_info:$guard_infoif [

2013-02-19 13:34:23 675

原创 thrift文件里头使用异常

跟结构一样,只是关键字由struct变成了exception比如:exception InvalidRequestException {    1: required string why}在service定义的地方可以抛出这种异常service Cassandra {  # auth methods  void login(1: required Authen

2013-02-18 17:28:35 1948

原创 给mysql的datetime类型的field赋值

用time_t或者其他数字都不行必须是字符串发现一个比较好的方法是,用mysql workbench来手动添加某个字段,比如设定表里的字段类型为datatime,然后填入一些值,看最后显示的是什么样子。

2013-02-18 14:40:33 2503

原创 zk的“异常”线程

由于guard自身是多线程程序,所以每次有新的改动都会看看线程的数目是不是正确的。在加入zk注册后,guard运行出现下列异常线程。简注:如何看线程,gdb->attach 进程->thread apply all bt(gdb) bt#0 pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/li

2013-01-28 18:55:24 1060

原创 如何让ubuntu12.04(64 bit)下面编译的程序能在10.04下成功运行

大概可以按照以下步骤进行:1. 分析那些函数用的是10.04下没有的glibc的版本通常12.04下编译的程序在10.04下运行报glibc2.14没找到的错误,这里就要找出那个函数用了2.14版本。以应用程序guard为例objdump -T guard | grep 2.14得知时memcpy(),通过网络查询得知,memcpy()史上曾经有个较大变动,很不幸,

2013-01-25 19:06:35 1494

原创 SSH agent和agent forwarding

把ssh-agent单拿出来说,是因为随着公司的跳板机方案的实施,ssh-agent将大规模被或暗地里被应用。理解它的原理有助于我知道相关的部署和操作,以及如何安全滴应用。像其他linux软件一样,最好的资料是用英文写的,关于ssh的认证和用户管理,有个不错的系列:http://www.symantec.com/connect/articles/ssh-and-ssh-agent, 搜

2013-01-24 20:22:46 4306

原创 线程的正常退出和资源回收

在最近开发的多线程程序中,观察到一种现象,线程调用pthread_exit()退出后,进程的VSZ没有减少,随着这样的线程增多,可以看到VSZ的值变得越来越大。一开始以为是程序那里漏内存,查看了所有new的地方,没有发现有漏内存的情况。通过pmap分析,发现跟没有线程退出情况的进程相比,会多出下面几个内存块,其他部分都没有不同的地方。pmap 19661............

2013-01-23 18:51:26 1367

原创 查看用户有关的命令

id 用户名        能看用户属于哪个组id phquid=1000(phq) gid=1000(phq) groups=1000(phq),4(adm),20(dialout),24(cdrom),46(plugdev),105(lpadmin),119(admin),122(sambashare),123(vboxusers)more /etc/passwd 也能看用

2012-11-14 11:35:57 578

原创 分布式数据库

分布式数据库首先是分布式的,它可以使关系数据库也可以是no-sql的,比如oracle和微软的数据库也可以是分布式的但是不是所有的no-sql数据库都是分布式的,比如google开源的levelDB.也不是所有的no-sql都是基于k-v的,也可以是面向文档,对象和图的。经典的分布式数据库有:hbasegoogle bigtable

2012-11-12 12:39:00 358

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除