- 博客(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
887
原创 用gflags的好处
用gflags跟用配置文件相比,能实现的功能其实没多大差别。但用gflags有个好处就是,很容易跟脚本结合在一起。比如最近笔者需要调用一个用了gflags的程序将某个文件里头的所有用户都执行某个操作,这个应用程序如果不用gflags,则需要在配置里头指定要读取的文件,甚至需要在程序里头添加读文件逐行进行处理的代码。现在用了gflags就很方便了。 cat /data/pd.log | whil
2014-03-20 10:51:22
2494
原创 一些花时间才写好的脚本片段
删除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
847
原创 修改svn文件的存取权限
有时候刚开始写的shell脚本,没注意改成可执行权限就提交svn了,这样别人下下来的文件的缺省权限就没有可执行位。之前自己解决这个问题就是svn del再svn add,几个文件还行,文件多了就麻烦。今天认真google了下,发现下面这个命令比较好用。svn propset svn:executable ON *.shsvn commit实验了下,确实改过来了。
2014-02-14 10:12:20
2432
原创 生产者和消费者处理能力匹配的问题
最近碰到一个问题,生产者产生的内容需要尽快被消耗掉(发送出去),简单说就是处理的延迟要尽量小。一开始,生产者是多个thrift server启动的worker thread,比如生产者的线程数是10,而消费者线程是1,这样导致消费者每次按照最大能力取也总取不尽。后调整为一个生产者一个消费者,已敷使用。这里还有个思路就是提高消费者线程的优先级。这个还没尝试。
2014-01-13 12:07:44
1230
原创 构建线程类的2种做法
一种是构建一个基础的thread类,run弄成纯虚函数。当需要使用thread类的时候,继承这个基础的线程类,然后重载run()函数。另一种是,任务弄成一个类,线程弄成另一个类。应用主要继承任务类,重载任务类的run函数。典型的比如thrift里头的runnable类和Thread类。
2014-01-12 14:00:43
1154
原创 如何去除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
3168
原创 一些有用的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
1213
原创 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
5932
原创 如何在通信协议中传输浮点数
先来看一个错误: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
7890
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
1204
原创 mysql几个特殊有用的命令
show create table xxx; 显示原始创建表的语句select * from mysql.user\G 显示mysql的账户信息。
2013-07-18 14:29:02
641
原创 mysql中文显示问题
很多时候客户端的字符集是latin1,不能接卸中文mysql> SHOW VARIABLES LIKE 'character_set_%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+---------
2013-07-09 16:57:03
530
原创 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
1942
2
原创 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
1008
原创 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
2691
原创 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
4069
原创 以前读完sdn/openflow后的几点想法
综合上述文档,sdn/openswitch用在数据中心比较合适。大了就不好扩展了,有点控制层面逆分布式而动的意思。单点故障、容量扩展随着网络规模的扩大就会随之而来,久而久之又得分域治之。sdn有几个好处:1.集中管理,便于配置。相比较物理交换机和防火墙,更好进行全局配置2.网络管理可以轻松编程实现,这也是抽象的好处。mapreduce简化了编程,sdn也简化了网络部署编程。
2013-03-14 10:20:42
1478
原创 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
1191
原创 打印可读格式精确到微妙的时间
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
1206
原创 如何引导编译器动态链接第三方软件
在开发的过程中,需要使用第三方软件,第三方软件可以是动态链接库或者静态链接库。动态链接库的问题是,在部署binary的目标机器上也得安装相同的so文件。网上这方面的资料很多,但是在scons编译系统中,大家关注最多的是deps,而很少去指定link_flags.这些其实都是可以定制的。只要在sconsscript加上一条就行,比如: link_flags = [
2013-03-09 10:54:14
730
原创 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
1118
原创 如何看库的安装地址
最近需要使用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
652
原创 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
718
原创 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
1986
原创 给mysql的datetime类型的field赋值
用time_t或者其他数字都不行必须是字符串发现一个比较好的方法是,用mysql workbench来手动添加某个字段,比如设定表里的字段类型为datatime,然后填入一些值,看最后显示的是什么样子。
2013-02-18 14:40:33
2565
原创 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
1121
原创 如何让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
1571
原创 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
4427
原创 线程的正常退出和资源回收
在最近开发的多线程程序中,观察到一种现象,线程调用pthread_exit()退出后,进程的VSZ没有减少,随着这样的线程增多,可以看到VSZ的值变得越来越大。一开始以为是程序那里漏内存,查看了所有new的地方,没有发现有漏内存的情况。通过pmap分析,发现跟没有线程退出情况的进程相比,会多出下面几个内存块,其他部分都没有不同的地方。pmap 19661............
2013-01-23 18:51:26
1489
原创 查看用户有关的命令
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
645
原创 分布式数据库
分布式数据库首先是分布式的,它可以使关系数据库也可以是no-sql的,比如oracle和微软的数据库也可以是分布式的但是不是所有的no-sql数据库都是分布式的,比如google开源的levelDB.也不是所有的no-sql都是基于k-v的,也可以是面向文档,对象和图的。经典的分布式数据库有:hbasegoogle bigtable
2012-11-12 12:39:00
403
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人