- 博客(58)
- 资源 (7)
- 收藏
- 关注
原创 Active MQ 5.5.1配置消息队列集群(1) Pure Master-Slave静态复制
1. 准备Master和Slave的配置文件:1.1 复制conf/activemq.xml副本到conf/slave.xml1.2 相对应地,可以修改conf/activemq.xml为conf/master.xml,也可以不改2. 修改conf/slave.xml:2.1 broker节点brokerName属性改为slave2.2 修改transportConne
2011-12-22 18:15:07
2534
原创 ZeroMQ get start
ZeroMQ home page: http://www.zeromq.org/czmq(High-level C binding for ZeroMQ): https://github.com/zeromq/czmqfirst, upgrade m4 and autoconf if needed. (./configure, make, make install)wget http:
2011-12-19 21:34:07
1279
原创 源码安装MySQL-5.5.14到个人目录
MySQL-5.5.14使用cmake安装,已经不需要./configure了。如果要安装到个人目录,cmake时需指定路径。启动时,.my.cnf也要指定。cmake . -DCMAKE_INSTALL_PREFIX=$HOME/mysql-5.5.14make
2011-08-08 21:26:45
1732
原创 在浏览器地址栏按回车、F5、Ctrl+F5刷新网页的区别
不少同学问,不都是刷新吗?还有什么区别?其实,还是有的。其中,在地址栏按回车又分为两种情况。一是请求的URI在浏览器缓存中未过期,此时,使用Firefox的firebug插件在浏览器里显示的HTTP请求消息头如下:Host 192.168.3.174:8
2011-07-04 21:16:36
16511
原创 nginx处理firefox的POST请求可能遇到的问题:小文件可以提交,大文件不能提交
<br />这个问题是其他同事反映过来的,应该说比较罕见,需要同时满足三种条件才能发生。为了保持神秘,原因暂时不提,不过背景得交待一下。该案例的大概架构就是部署两个nginx服务器,nginx1作为普通的web server,nginx2作为反向代理部署在nginx1的后端。出于测试目的,取消了临时文件所在目录client_body_temp的访问权限,此为条件一。<br /><br />关于client_body_temp目录的作用,简单说就是如果客户端POST一个比较大的文件,长度超过了ngin
2011-05-31 21:04:00
20672
1
原创 gcc-3.4编译strace-4.6
<br />gcc 3.4编译strace-4.6的话,会遇到这样的错误:<br /><br />block.c: In function `block_ioctl':<br />block.c:271: error: `BLKTRACESTOP' undeclared (first use in this function)<br />block.c:271: error: (Each undeclared identifier is reported only once<br />b
2011-04-29 20:15:00
1401
原创 top命令的SWAP计算错误了吗?
<br />这是新公司有个同事提到的,我刚好是负责这一块的,于是给他解答如下。<br /> <br />问题:<br />写了一个简单的测试程序,申请2G内存但不使用,理论上不使用的内存不会占用系统的物理内存和swap。top显示这个进程使用了2G swap,但整个系统只使用了1G swap。感觉TOP显示的swap信息完全是忽悠。<br /><br />top - 12:03:30 up 109 days, 4:14, 16 users, load average: 1.00, 1.02, 1.0
2011-04-25 19:44:00
4506
原创 gcc-3.4编译google protocol buffer 2.4.0a
<br />gcc 3.4是比较老的编译器,用它来编译最新版protobuf 2.4.0a的话,可能会有如下错误:<br /><br />google/protobuf/descriptor.cc: In member function `virtual const google::protobuf::FieldDescriptor* google::protobuf::DescriptorBuilder::OptionInterpreter::AggregateOptionFinder::FindEx
2011-04-07 18:10:00
2718
原创 NSN HLR simulator for provisioning in expect
<br />电信设备中,HLR(Home Location Register)是非常昂贵的,通常不会有为provisioning开发而准备的HLR。因此,我们需要一个模拟器,能够简单地应答客户端发送过来的HLR指令。Expect是Unix/Linux下自动处理人机交互指令的脚步语言,用它来写一个HLR模拟器就最合适不过了。<br /> <br />一个最简单的NSN HLR模拟器是这样的,它可以<br />1. 模拟登录和退出<br />2. 模拟执行ZM开头的NSN HLR指令并回复“COMMAND EX
2011-03-12 16:36:00
3473
原创 C程序员如何申请加薪?呵呵
<br />如果老板会编译程序的话,发下面这段代码给他:<br /><br />#include <stdio.h>int main() { int a,b,c; for (c=0,b=0;a="BCCB{BC@BDBBCEFCCBDECFDDBBCBBBC@BBABABBBCBDBBBBBBBCBBBCBBBBACBABCBC@BBBDBBCBDBBBBBBBCBBBCBBBAAECI@BBCCCEEBBBBBCECBCBCDDBEBC@}BK@"[b++];)
2011-02-16 15:15:00
8640
38
原创 libcurl通过HTTPS方式提交XML并解析响应信息
<br />不用太多解释,需要的自然有用。稍微有一丝难度的是某个地方用到回调函数,关于回调函数的概念,请百度。<br /><br />程序中用到XPath,不了解的可以看这里:<br />http://www.w3school.com.cn/xpath/index.asp<br /><br />还有这里:<br />http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html<br /><br />#include <stdio.h>
2011-02-10 16:10:00
5456
1
原创 libcurl + libxml2 + soapUI开发SOAP客户端程序
<br />2010年,我写过一些使用gSOAP开发SOAP应用程序的系列文章,共8篇,详情请参考以前的博文:<br /><br />(1) 股票信息客户端程序<br /><br />(2) 股票信息服务端程序<br /><br />(3) iconv解决中文乱码问题<br /><br />(4) iconv解决中文乱码问题(续)<br /><br />(5) libxml2解析SOAP响应消息<br /><br />(6) 在HP-UX下编译gSOAP-2.7.17<br /><b
2011-02-01 10:47:00
5479
1
原创 MinGW编译支持openssl-1.0.0a的libcurl-7.21.3
<br />首先进入msys,编译openssl-1.0.0a,参考http://blog.youkuaiyun.com/feiyunw/archive/2010/05/16/5597546.aspx:<br /><br />./config -t<br />./config threads shared no-capieng<br />make depend<br />make<br />make test<br />make install<br /><br />libcurl-7.
2011-01-31 15:26:00
3394
原创 使用curl提交SOAP请求
最近的项目,需要研究一下libcurl提交XML请求,顺便也用curl测试了一下SOAP请求。以下给出三种案例,方便以后查询。 1. curl提交无需认证的SOAP请求 这个案例使用webxml.com.cn的中国股票Web Service服务,SOAP消息和执行命令如下: sh600000
2011-01-26 18:45:00
21619
原创 Shell编程关于Sha-Bang(#!)的Q & A
<br />Q. #!的名字为什么叫Sha-Bang?<br /><br />A. Sha-Bang是Sharp和Bang的组合词。Sharp for #, Bang for ! 类似的情况是,C#通常被称为C Sharp<br /><br /><br />Q. Sha-Bang(#!)是不是注释?<br /><br />A. 不是注释。Sha-Bang(#!)所在行的作用是告知该脚本使用的是哪种命令解释器,并不是可有可无的。虽然很多情况下省略了Sha-Bang(#!)仍然能够运行脚本,这是由于
2011-01-12 18:36:00
3397
原创 Windows + MinGW环境下使用libxml2 (2) 安装源代码包
<br />安装已编译包相对简单,安装源代码包则比较麻烦,编译过程可能会因为机器的差别而遇到各种各样的问题。不过,如果时间允许的话,编译源代码时遇到问题也不是坏事,可能会因此而发现项目中潜在的问题。<br /><br />libxml2在MinGW下编译需要用到msys,如果安装MinGW时选择默认选项,而不是全部安装的话,需要另外装上msys。本文编译的libxml2版本是2.7.7<br /><br />此外,如果你的zlib是当前MinGW网站下载的话,也就是版本号为1.2.3,那么请升级到1
2011-01-02 17:28:00
7425
1
原创 Windows + MinGW环境下使用libxml2 (1) 安装已编译包
<br />写在新年钟声即将敲响之际,瑾以此文纪念忙碌的2010<br /> <br />libxml2是一款开源的、跨平台的XML解析工具,在Windows下使用当然也不是问题,方法有两种,一是从下载已经编译好的二进制包,二是下载源代码自行编译。我们公司在Windows下的开发环境通常是MinGW + Code::Blocks,因此本文针对的是在此前提下编译和使用libxml2所遇到的问题。<br /> <br />已编译包下载:http://xmlsoft.org/sources/win32/<
2010-12-31 23:00:00
5073
原创 POP3 + IMAP + CURL
<br />呵呵,话题有点敏感,只截几幅图,不解释。<br /> <br />POP3: telnet pop3.163.com 110<br /> <br /><br /> <br /><br /> <br /> <br />IMAP: telnet imap.163.com 143<br /> <br /><br /> <br /><br /> <br /><br /> <br />使用越来越强大的CURL命令,实现同样的功能:<br /> <br /><br /> <br />CURL + POP3,
2010-12-24 23:36:00
5715
1
原创 谁吃了你的硬盘空间?(3) eathd源代码与使用说明
<br />这是用C语言写成的一个适用于Linux的小工具,能够比较方便地算出单个或者全部挂载点(mount point)下的磁盘使用情况,包括显示该磁盘分区的设备类型、每一块的大小、总空间大小、预留给root用户的空间大小、已使用的空间大小、可用的空间大小、已使用的空间百分比,以及占用空间最多的10个目录。执行效果图如下:<br /><br /><br /><br />其实,组合使用Linux的Shell命令,df、du、find、sort、head等等,也能达致同样的功能。但是,我觉得C写的程序在执
2010-12-06 00:47:00
1856
原创 谁吃了你的硬盘空间?(2) 获取文件系统与文件信息
<br />/etc目录下有一个fstab文件,记录了磁盘分区的信息,挂载分区(mount)的时候,就需要读取这个文件的信息。另外,同一目录下,还有一个mtab文件,记录了当前已挂载的磁盘分区信息,每当mount、umount的时候,都会更新该文件,而df命令,读取的也正是这个mtab文件。这是Linux的情况,如果是Unix,文件名字可能有所不同,例如:<br /><br />操作系统 记录所有分区信息的文件 记录已挂载分区信息的文件<br />Linux /etc/fstab
2010-12-04 00:29:00
2358
1
原创 谁吃了你的硬盘空间?(1) 诡异的df算法
<br />df命令,接触过Linux/Unix的人都用过吧?不过为什么有的数字总是算不对呢?<br /><br />例如下面,/data那个文件系统,<br />total = 1404203532<br />used = 1203335028<br />available = 129539124<br />use% = 91%<br /><br />但是,total - used = 200868504 <> available<br />而且,used / total =
2010-11-30 23:47:00
4825
1
原创 栈区、堆区、静态区、常量区、代码区演示
<br />这是老问题了,今天被同事问到,因此写了一个demo,代码如下:<br /> <br />#include <stdio.h>#include <string.h>#include <stdlib.h>#define MAX_LENGTH 32struct node { void *address; char area[16]; char desc[128];};typedef struct node Node;Node array[MAX
2010-11-18 18:40:00
1846
原创 计数排序(Counting Sort)与比特计数排序(Bit Counting Sort)
<br />前两篇介绍的梳排序和gnome排序,都是属于比较排序算法里面的交换排序方法。而计数排序是一种非比较排序算法,其C代码如下:<br />void countingsort(int *a, int n) { int i, min, max; min = max = a[0]; for( i = 1; i < n; i++ ) { min = (a[i] < min) ? a[i] : min; max = (a[i] > max) ?
2010-11-01 18:07:00
2564
2
原创 Gnome Sort
<br />首先说明该算法也是来自于维基百科<br /> <br />http://en.wikipedia.org/wiki/Gnome_sort<br /> <br />Gnome Sort,这是该算法的作者命名的,O(n*n)时间复杂度,O(1)空间复杂度,属于稳定的排序算法。算法的思想是每趟循环找到第一个逆序的元素,把它和在它前面的已排序的元素逐个进行比较、交换,有点像插入排序。<br /> <br />代码也很简单,所以只加上少量的注释:<br /> <br />#include <stdio.h
2010-10-22 13:23:00
1199
原创 Comb Sort(梳排序,梳子排序)
<br />首先说明该排序算法是抄维基百科的<br />http://zh.wikipedia.org/zh-cn/%E6%A2%B3%E6%8E%92%E5%BA%8F<br /> <br />梳排序(Comb sort)是一种由Wlodzimierz Dobosiewicz于1980年所发明的不稳定排序算法,并由Stephen Lacey和Richard Box于1991年四月号的Byte杂志中推广。梳排序是改良自泡沫排序和快速排序,其要旨在于消除乌龟,亦即在阵列尾部的小数值,这些数值是造成泡沫排序缓慢
2010-10-21 18:45:00
5390
6
原创 八皇后问题、N皇后问题回溯法详解
<br />/* * 回溯法解N皇后问题 * 使用一个一维数组表示皇后的位置 * 其中数组的下标表示皇后所在的行 * 数组元素的值表示皇后所在的列 * 这样设计的棋盘,所有皇后必定不在同一行 * * 假设前n-1行的皇后已经按照规则排列好 * 那么可以使用回溯法逐个试出第n行皇后的合法位置 * 所有皇后的初始位置都是第0列 * 那么逐个尝试就是从0试到N-1 * 如果达到N,仍未找到合法位置 * 那么就置当前行的皇后的位置为初始位置0 * 然后回退一行,且
2010-10-17 16:39:00
12736
2
原创 在C语言中分割字符串
<br />C语言的库函数中,没有类似java中String类的split方法,可以把一个长字符串分割为字符串数组。不过,还是可以利用几个库函数,自己造出split的效果。虽然不像java那样支持分隔符为正则表达式,但一般情况下也够用了。<br /><br />#include <stdio.h>#include <stdlib.h>#include <string.h>/* * count the number of a character in a string */int co
2010-10-11 15:26:00
10672
原创 求二叉树中节点的最大距离(递归算法)
<br />上一篇的《求二叉树中节点的最大距离》显得有点走火入魔了,参考过别人的算法解释,事实上不需要考虑得那么复杂。使用以下C代码就可以解决了。<br /><br />/* * return the depth of the tree */int get_depth(Tree *tree) { int depth = 0; if ( tree ) { int a = get_depth(tree->left); int b = get_depth
2010-10-06 17:42:00
3347
原创 求二叉树中节点的最大距离
求一个二叉树中任意两个节点间的最大距离,两个节点的距离的定义是这两个节点间边的个数,比如某个孩子节点和父节点间的距离是1,和相邻兄弟节点间的距离是2,优化时间空间复杂度这是论坛上的一道算法题,我目前想到的解法是:二叉树中任意两个节点间的最大距离,那么其中一个节点必定是层次最深的一个节点,记该节点为A。该二叉树中层次最深的节点可能有多个,但只需要选择其中一个记为A。找出了A,那么遍历二叉树中其它非A的节点,访问各节点的时候求出该节点到A的距离,从而记录下求到的最大距离。因此题目可以转化为:求一个二
2010-10-04 00:38:00
2905
原创 java写的随机迷宫算法2D & 3D
<br />很久以前,同事问我要一个随机迷宫的算法,我参考下列链接的启发,也是按照图的深度优先遍历算法,用java写了一个。后来增强为3D版。在这里标记一下,有时间就改为C语言版。<br /> <br />http://hi.baidu.com/%B4%F4%BA%CD%B9%D4%B5%C4%D0%A1%CC%EC%B5%D8/blog/item/98af8518e37c05b04aedbca6.html<br /> <br />2D版的效果图:<br /><br /> <br />3D版在平面显示不出来
2010-09-30 16:05:00
4561
原创 函数指针数组应用实例
<br />从概念上分析,函数指针数组首先是一个数组,数组的元素都是函数指针,而函数指针又是一个指针,但它不是指向普通数据类型或者结构体的指针,而是一个指向函数的指针。<br /> <br />以下代码的背景是为两组字符编码转换函数做单元测试,使用函数指针数组可以使程序可读性更强,否则,就像末尾注释的那段那样,需要冗长的代码代替。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <string.h>#define ENCODIN
2010-09-28 01:23:00
2130
原创 uuencode + uudecode + base64
基于安全理由,公司封闭了我个人的e-mail账户对外的收发功能,以后在公司往自己的邮箱发一些有价值的东西就麻烦一些了,如果,个人PC的外网web mail/smtp/pop3连接也断了就更是雪上加霜了。呵呵,不过,我暂时还是有办法应对的。公司有几台unix服务器是随时要监控作业运行状况的,如果发现出了点问题就通过e-mail通知相关负责人。幸好,目前其连接状况还是对外开放的,也就是说,在服务器上还是可以通过mailx发邮件到我自己的邮箱的。不带附件的邮件可以这样发:cat readme | mailx -s
2010-09-19 13:54:00
2667
原创 ftp获取文件列表的脚本
<br />GGSNID=ggsn04SERVER=192.168.1.1userid=userpasswd=passwordWPATH=/var/log/ggsnftp -n $SERVER << _END >> $GGSNID.logquote USER $useridquote PASS $passwdbincd $WPATHlsquit_END
2010-09-14 18:10:00
1430
原创 sample of spool & sqlldr
<br />平时工作中,spool和sqlldr用得少,显得有点生疏,上次没保存使用过程,这次找不到样本,囧!好不容易才搞出来,马上记下来吧。<br /> <br />spool导出<br /> <br />#! /bin/kshsqlplus -S user/password >/dev/null<<!EODset heading offset feedback offset echo offset pagesize 0set linesize 200spool ipad_im
2010-09-10 12:19:00
995
原创 使用gSOAP开发实例(8) Phase 1 完结篇 自定义header实现用户名令牌认证(Usernametoken Authentication)
<br />上一节介绍了怎样实现基本认证(Basic Authentication,以下简称basic方式),望文生义,也就是最简单的用户验证方式,本节稍微深入一些,介绍用户名令牌认证(Usernametoken Authentication,以下简称usernametoken方式)。<br /> <br />Usernametoken方式与basic方式不同的地方,在于后者会把用户名和密码以摘要(digest)的形式,置于HTTP信息头,而前者则把用户名以明文的形式、密码以明文或者摘要的形式,嵌入到一段X
2010-09-03 23:19:00
14307
3
原创 Destroy and NoSQL (2010-09-02)
最近刚刚接触NoSQL的概念,其实是连门都没入啦,只不过是为destroy吸收一些思想的火花,有点发现就马上记下来,以免事情太多,过几天就忘记了。据百度,NoSQL就是非关系型数据库的统称。我认为,NoSQL的最大特点,是海量数据的键/值存储,正好与设计中的destroy不谋而合。NoSQL通过对数据的键值进行散列运算,把数据分散映射到各个数据分区上去,而设计中的destroy,则对其索引记录的键值进行散列,通过索引记录找到数据,可以说非常相似。还有,NoSQL的一条记录可以有任意个列,而且
2010-09-02 18:55:00
891
原创 DIY蒸蛋糕
可能是最简单的DIY蛋糕方法,原材料只需要4种:鸡蛋、面粉、白砂糖、牛奶。以下分量足够一家大小四五人享用,当然,按比例缩小也可以,但是蒸煮的时候比较浪费能源,现在的煤气贵呀!鸡蛋:10个;面粉:220克;白砂糖:180克,个人认为这个份量甜度适中,当然也可以根据个人喜好,酌情增减;牛奶:100克。工具方面,首先要有一个精确到克的电子秤,这是品质保证的关键。其次需要一个打蛋机,否则打鸡蛋打得手抽筋也未必做得好!第三,要有一个细孔的筛子过滤面粉,使得蛋糕中不能含有较大的颗粒。最后,最好有一个分蛋器,可以方便地隔
2010-08-30 00:10:00
3283
原创 一个稍微复杂的awk & sed应用
<br />最近做了一个文本CDR转换器,从A样式转换为B样式,如下所示。<br /> <br />A样式<br /><br />RECORD#input_id 1282892739x001_0011058#output_id#input_type GGSNPDPRecord#output_type GGSNPDPRecord#addkey#source_id ggsn01#filename ggsn01_20100827121321_13251F recordType 13
2010-08-27 23:44:00
1495
原创 destroy长远开发计划(2010-08-22)
<br />近期主要研究了一下XML、SOAP和Web service,目的是为了destroy,不仅是一个单机版的程序,还要成为网络版的应用。跨越平台、跨越开发语言的障碍,现阶段看,Web service是一个不错的选择。<br /> <br />以下是在前一版本的开发计划的基础上修改的新版本。<br /> <br />基于BER编码的CDR解码程序——destroy,已经于2010年6月底正式发布了1.0版本。在我看来,目前的destroy还显得很稚嫩,还有许多可以改进和值得改进的地方。以下简单列出其未
2010-08-22 17:42:00
871
原创 前程似锦 如鱼得水 藏头诗
<br />公司同事辞职,灵感突发,诗一首赠之。每句的首字连起来就是“前程似锦,如鱼得水”。非专业人士,也不知道写得好不好,但觉得有点意思,因此还是留在博客里吧。<br /> <br />前人栽树后人凉<br />程门立雪永流芳<br />似水年华终不悔<br />锦上添花勿相忘<br /><br />如虎添翼是梦想<br />鱼跃龙门也寻常<br />得道多助须谨记<br />水到渠成来日长<br />
2010-08-22 01:04:00
6170
1
跨平台base64编解码程序带C源代码
2010-12-23
eathd 0.1.0
2010-12-06
发布一个基于BER编码的CDR文件高速解码程序——destroy for tru64
2010-06-29
发布一个基于BER编码的CDR文件高速解码程序——destroy for solaris
2010-06-29
发布一个基于BER编码的CDR文件高速解码程序——destroy for linux
2010-06-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人