Linux
codelast.com
网站:www.codelast.com
展开
-
用shell获取目录/文件夹/文件的时间戳
<br />命令:<br /> <br />date +%s -r 目录名/文件名<br /> <br /> <br />输出内容形如:<br /> <br />1276225332原创 2010-06-11 21:29:00 · 14328 阅读 · 0 评论 -
shell取本机的IP地址
<br />如果你有多块网卡,那么取的地址跟网卡有关系,所以要指定网卡名。<br />取指定网卡的IP地址的方法为:<br /> <br />ifconfig eth0 | sed -n "2,2p" | awk '{print substr($2,6)}'<br /> <br />其中,“eth0”即为你指定的网卡名。<br />sed -n "2,2p" 表示取结果中的第二行内容。<br />awk '{print substr($2,6)}' 表示取第二项内容的第6个字符开始的字符串,即IP地址字符串原创 2010-06-12 16:18:00 · 2272 阅读 · 0 评论 -
shell读取文件的指定行字符串
<br />命令:<br /> <br />sed -n Np 文件名<br /> <br />其中,“N”必须替换成一个数字,例如,你要取文件1.txt的第7行,命令为: sed -n 7p 1.txt<br /> <br />输出结果即为指定行内容。原创 2010-06-12 16:04:00 · 15798 阅读 · 1 评论 -
使用 if (对象名) {...} 来判断一个对象是否“有效”
假设我们有一个class A的对象:A a;那么如何可以实现这样的判断:if (a){//......}请看这一篇文章:http://www.artima.com/cppsource/safebool.html最简单的方法就是重载operator bool。原创 2010-08-04 11:00:00 · 1537 阅读 · 0 评论 -
web服务性能测试工具http_load(Linux平台)
http_load的主页(实在是有点简陋):http://www.acme.com/software/http_load/下载回来一个压缩包,解压出来之后连configure都不用,直接make即可生成可执行程序 http_load(视系统情况不同,可能你需要自己修改Makefile再编译)。注意:make的时候可能会有若干警告,但是可能并不影响使用生成的http_load程序,例如我在自己的机器上make,出现了这些警告:gcc -Wall -O -c http_load.chttp_load.c:原创 2010-07-31 20:35:00 · 1696 阅读 · 0 评论 -
[转]十个免费的Web压力测试工具
<br /><br />Grinder – Grinder是一个开源的JVM负载测试框架,它通过很多负载注射器来为分布式测试提供了便利。 支持用于执行测试脚本的Jython脚本引擎HTTP测试可通过HTTP代理进行管理。根据项目网站的说法,Grinder的 主要目标用户是“理解他们所测代码的人——Grinder不仅仅是带有一组相关响应时间的‘黑盒’测试。由于测试过程可以进行编码——而不是简单地脚本 化,所以程序员能测试应用中内部的各个层次,而不仅仅是通过用户界面测试响应时间。<br /> <br />Py转载 2010-07-30 17:06:00 · 744 阅读 · 0 评论 -
一些发送Email的C/C++库/软件
spnetkit(无文档,有示例程序): http://code.google.com/p/spnetkit/msmtp:http://msmtp.sourceforge.net/index.htmlLibESMTP:http://www.stafford.uklinux.net/libesmtp/index.htmlPOCO:http://pocoproject.org/index.html原创 2010-07-31 21:25:00 · 13984 阅读 · 0 评论 -
Linux下shell脚本输出带颜色文字
<br /><br />文本终端的颜色可以使用“ANSI非常规字符序列”来生成。举例:<br /> <br /> echo -e "/033[44;37;5m ME /033[0m COOL"<br /> <br /> 以上命令设置作用如下:背景色为蓝色,前景色为白色,字体闪烁,输出字符“ME”,然后重新设置屏幕到缺省设置,输出字符 “COOL”。“e”是命令 echo 的一个可选项,它用于激活特殊字符的解析器。“/033”引导非常规字符序列。“m”意味着设置属性然后结束非常规字符序列,这个例子里真正有转载 2010-07-23 18:56:00 · 1153 阅读 · 0 评论 -
当心FTP续传导致的代码编译出错问题
最近遇到了一个诡异的问题:将原来能编译通过,并且只改动了一丁点的代码,再传到Linux虚拟机上编译的时候,编译出错,而且是匪夷所思的错误。不得其解时,尝试了若干解决办法,包括大段大段地注释掉怀疑有问题的地方,但是最后把注释掉的代码全部放开的时候,仍然出错。于是到Linux下用Emacs查看源文件,非常吃惊:传上去的文件竟然与Windows下的文件不一样!难道是上传的时候出错了吗?最后查出来的原原创 2010-05-30 20:33:00 · 799 阅读 · 0 评论 -
something about Google Test(Google C++ Testing Framework)
先说说cxxtest这个测试框架:用cxxtest来编写测试用例时,我们需要写的只是一个.h文件,在这个文件里include你要测试的类或函数所在的头文件,然后写各种测试函数。与该.h文件对应的.cpp文件是用cxxtest自带的一个脚本cxxtestgen.pl来完成的(脚本调用方法请看cxxtest手册),然后我们就得到了一个.h文件和一个.cpp文件,用gcc/g++编译,得到一个可执行文件,运行此文件,就执行了你所编写的测试用例。使用Google Test作为你的测试框架时,有点不一样:你需要编写一原创 2010-07-23 15:29:00 · 1734 阅读 · 0 评论 -
一些与C++测试相关的东西
<br />Google C++ Testing Framework:<br />http://code.google.com/p/googletest/<br /> <br />Google C++ Mocking Framework:<br />http://code.google.com/p/googlemock/<br /> <br />Google C++ Mocking Framework使用简介:<br />http://www.cppprog.com/2009/0101/29.html<br转载 2010-07-22 11:53:00 · 1055 阅读 · 0 评论 -
something about Google Mock
下载:http://code.google.com/p/googlemock/downloads/list安装:将下载的压缩包解压出来,到解压目录下 ./configure,然后make。注意,这个make不会编译Google Mock自己的测试用例。要编译它们,需要到解压目录下的“make”子目录下,执行 make gmock_test ,然后就会看到该目录下生成了一个可执行文件 gmock_test ,执行这个可执行文件,就可以看到Google Mock测试用例的执行结果(应该是成功的,如果有失败,则应原创 2010-07-23 11:47:00 · 3628 阅读 · 0 评论 -
查看SELinux的状态,关闭SELinux
查看SELinux当前的状态,使用命令:getenforce例如,输出:Disabled 关闭SELinux,可修改 /etc/selinux/config 文件,将其中的 SELINUX=enforcing 改为 SELINUX=disabled然后重启即可。原创 2010-05-26 16:22:00 · 9906 阅读 · 1 评论 -
C++ TR1 和 C++0x
<br />C++ Technical Report 1 (TR1)是ISO/IEC TR 19768, C++ Library Extensions(函式库扩充)的一般名称。TR1是一份文件,内容提出了对C++标准函式库的追加项目。这些追加项目包括了正则表达式、智能指针、哈希表、随机数生成器等。TR1自己并非标准,他是一份草稿文件。然而他所提出的项目很有可能成为下次的官方标准。这份文件的目标在于「为扩充的C++标准函式库建立更为广泛的现成实作品」。<br /> <br />C++ tr1是针对C++标准库转载 2010-07-22 11:47:00 · 10534 阅读 · 0 评论 -
在Linux下进行文件“粉碎”
众所周知Windows下的文件删除之后是有可能恢复的,对重要文件,为了增加恢复的难度,我们可以用文件粉碎工具进行文件粉碎。我最常用的是集成到资源管理器中的Eraser。那么在Linux下有没有类似的软件呢?我在一台只有Ubuntu系统的主机上,安装了一个文件粉碎工具wipe,有些想法,记下来。安装:apt-get install wipe wipe有没有GUI我不知道,命令行也不难用:原创 2010-05-23 20:01:00 · 4601 阅读 · 1 评论 -
shell中初始化数组并遍历数组
<br />假设有数组名为ARR,则初始化的一种方法是:<br /> <br />ARR=(2 4 6 8)<br /> <br />其中,括号里的各项使用空格来分隔。<br /> <br />遍历数组的方法为:<br /> <br />for NUM in ${ARR[*]}<br />do<br />echo $NUM<br />done<br /> <br />其中,每一次循环过程中,数组里的当前元素均被保存到NUM变量中,使用即可。<br />原创 2010-06-12 16:09:00 · 43140 阅读 · 0 评论 -
在Ubuntu下用tar包安装MySQL
<br />在Ubuntu上安装MySQL Server,由于不是RedHat,所以MySQL官网上的rpm包都不能用,有两个包可用:mysql-5.1.49-linux-i686-icc-glibc23.tar.gz 和 mysql-5.1.49-linux-i686-glibc23.tar.gz ,这两个包有什么区别?官网上没有写,我也没查到。我安装的时候用的是mysql-5.1.49-linux-i686-icc-glibc23.tar.gz。<br />下面的安装方法的步骤中,有些可能很奇怪(为什么原创 2010-08-08 23:39:00 · 5890 阅读 · 1 评论 -
SHELL下的数字比较及计算
<br /><br />比较: <br />方法一: if [ ${A} -lt ${B} ]; then ... <br />这是最基本的比较方法,使用lt(小于),gt(大于),le(小于等于),ge(大于等于),优点:还没发现;缺点:只能比较整数,使用lt,gt等不直观 <br />方法二: if ((${A} < ${B})) then ... <br />这是CShell风格比较,优点:不用使用lt,gt等难记的字符串;缺点:还是只能比较整数 <br />方法三: if (echo ${A} ${转载 2010-06-18 15:49:00 · 6347 阅读 · 0 评论 -
使shell 命令脱离终端在后台运行
你是否遇到过这样的情况:从终端软件登录远程的Linux主机,将一堆很大的文件压缩为一个.tar.gz文件,在还没有完成的时候,你断网了,你登录不上远程Linux主机了,那么就会前功尽弃,你非常气愤……在Linux下,如果你要执行的shell命令耗时特别长,并且:(1)你的网络不稳定,随时可能断网;或者(2)你在执行了shell命令之后必须要关闭终端软件(例如SecureCRT)或计算机,那么你就需要以脱离终端的方式在后台运行这个shell命令。方法如下:(1)输入命令:nohup 你的shell命令 &(2原创 2010-09-08 19:54:00 · 3870 阅读 · 0 评论 -
安装JDK和Tomcat的步骤(Linux)
本文陈述的是在32位Linux系统下安装JDK和Tomcat的步骤。先确定服务器版本,命令为:getconf WORD_BIT如果返回32则表示是32位机器,如果返回64则表示是64位机器,注意下载JDK和Tomcat的时候千万不要弄错了版本。先安装JDK:(1)下载JDK(例如jdk-6u21-linux-i586.bin):https://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/ViewFi原创 2010-09-07 17:56:00 · 3440 阅读 · 0 评论 -
Google Protocol Buffers中文教程
注:这些是本人的翻译,可能不准确,可能有错误,但是基本上可以理解,希望能对大家有所帮助!(转载请注明出处:本文来自learnhard的CSDN博客:http://blog.csdn.net/learnhard/)请参看如下几个链接:Style Guide中文翻译(Google Protocol Buffers中文教程)Language Guide中文翻译(Google Protocol Buffers中文教程)Style Guide中文翻译(Google Protocol Buffers中文教程)原创 2010-09-04 22:24:00 · 10817 阅读 · 0 评论 -
Style Guide中文翻译(Google Protocol Buffers中文教程)
Style Guide 风格指南注:这是本人的翻译,可能不准确,可能有错误,但是基本上可以理解,希望能对大家有所帮助!(转载请注明出处:本文来自learnhard的CSDN博客:http://blog.csdn.net/learnhard/)This document provides a style guide for .proto files. By following these conventions, you'll make your protocol buffer message definit原创 2010-09-01 14:16:00 · 1753 阅读 · 0 评论 -
Language Guide中文翻译(Google Protocol Buffers中文教程)
Language Guide注:这是本人的翻译,可能不准确,可能有错误,但是基本上可以理解,希望能对大家有所帮助!(转载请注明出处:本文来自learnhard的CSDN博客:http://blog.csdn.net/learnhard/)· Defining A Message Type· Scalar Value Types· Optional And Default Values· Enumerations· Using O原创 2010-08-31 13:56:00 · 2257 阅读 · 0 评论 -
Protocol Buffer Basics: C++中文翻译(Google Protocol Buffers中文教程)
注:这是本人的翻译,可能不准确,可能有错误,但是基本上可以理解,希望能对大家有所帮助!(转载请注明出处:本文来自learnhard的CSDN博客:http://blog.csdn.net/learnhard/)Protocol Buffer Basics: C++(Protocol Buffer基础:C++篇)This tutorial provides a basic C++ programmer's introduction to working with protocol buffers. By wa原创 2010-08-28 20:50:00 · 6281 阅读 · 4 评论 -
Techniques 中文翻译(Google Protocol Buffers中文教程)
Techniques 技巧注:这是本人的翻译,可能不准确,可能有错误,但是基本上可以理解,希望能对大家有所帮助!(转载请注明出处:本文来自learnhard的CSDN博客:http://blog.csdn.net/learnhard/)· Streaming Multiple Messages· Large Data Sets· Union Types· Self-describing MessagesThis page describes s原创 2010-09-09 17:28:00 · 2686 阅读 · 0 评论 -
logging libraries / 一些写日志的库
(1)google-glogLogging library for C++项目链接:http://code.google.com/p/google-glog/文档:http://google-glog.googlecode.com/svn/trunk/doc/glog.html(2)loglite(依赖于boost,一个号称轻量级的库竟然依赖于boost,非常雷人吧)A small logging library项目链接:http://code.google.com/p/loglite/原创 2010-08-20 17:44:00 · 1409 阅读 · 0 评论 -
UDP报文的覆盖/重叠问题
对一个UDP Server来说,如果同时有几个UDP Client向其发送数据,而UDP Server使用了单线程串行处理的方式来处理收到的UDP报文,那么,会不会在UPD Server还没有处理完一条报文的时候,其他几个Client同时发送了数据,并且这些数据累加在一起(或者重叠在一起),导致UDP Server下一次使用recvfrom函数接收数据的时候,实际上一次接收到的数据是几个Client数据的集合(或者错乱了)呢?答案是:不会。我们可以做下面的实验(这是Linux下的程序)。这是一个UDP Se原创 2010-06-23 01:04:00 · 4952 阅读 · 0 评论 -
curl的超时时间设置
使用curl时,有两个超时时间:一个是连接超时时间,另一个是最大允许时间。连接超时时间用 --connect-timeout 参数来指定,最大允许时间用 -m 参数来指定。例如:curl --connect-timeout 10 -m 20 "http://XXXXXXX"连接超时的话,出错提示形如:curl: (28) connect() timed out!最大允许时间超时的话,出错提示形如:curl: (28) Operation timed out after 2000 milliseconds w原创 2010-06-21 14:08:00 · 27051 阅读 · 2 评论 -
C++迭代器使用流和标准函数的一种方法
对于迭代器,有另一种方法使用流和标准函数。理解的要点是将输入/输出流作为容器看待。因此,任何接受迭代器参数的算法都可以和流一起工作。 示例代码:#include #include // Need random(), srandom()#include // Need time()#include // Need sort(), copy()#include // Need vector using namespace std; void Display(vector&转载 2010-06-20 11:20:00 · 1975 阅读 · 1 评论 -
C++程序中统计一个目录下的文件数量
<br />如果一个目录下不包含其他目录,只有文件,怎么得到文件数量?这么容易的一个问题,你会用什么方法去做?<br />我喜欢利用shell来帮忙:<br />在程序中构造shell命令:ls 目录名 | wc -l<br />然后执行它,得到返回的结果,就结束了。<br /> <br />执行一个shell命令并获取其返回结果的函数示例:<br /> <br /><br /><br />std::string getCmdRes(const std::string sc)<br />{<br />FIL原创 2010-06-20 00:54:00 · 8790 阅读 · 0 评论 -
RHEL 5网络问题:eth0 ... does not seem to be present, delaying initialization
先是设置了静态IP地址,然后在 service network restart 的时候总是提示eth0 “does not seem to be present, delaying initialization”,然后当然也就得不到有效的IP地址。折腾来折腾去,在GUI下用了RHEL自带的网络工具来配置,一进去就看到网卡是inactive的,咦,这是怎么回事?!于是点击“Active”,将该网卡激活,然后再重启系统,又回到了有问题的状态,神奇了!于是再进GUI工具查看,还是inactive的,气死我了。似乎原创 2010-07-18 14:45:00 · 1379 阅读 · 0 评论 -
cwRsync 与 rsync 配合使用时: chdir *** failed, Permission denied (13) 的一个解决办法
我在Windows下用cwRsync作为rsync服务器,在Linux下将Windows中的文件同步到Linux主机上,出现了“chdir *** failed: Permission denied (13)”的错误。经查,是访问rsync服务器的帐户没有相应的权限所致。于是将Windows主机上的rsync用户(在“控制面板”→“用户帐户”→“更改帐户类型”里更改)的权限由“受限”改为“计算原创 2010-05-23 11:49:00 · 6584 阅读 · 0 评论 -
查看crontab的日志记录
在 /var/spool/mail/root 文件中,有crontab执行日志的记录,用tail -N /var/spool/mail/root 即可查看最近的crontab执行情况。原创 2010-05-25 08:18:00 · 3570 阅读 · 0 评论 -
rsync错误:@ERROR: auth failed on module XXX 的原因之一
在Linux下使用rsync,将远程目录下的文件同步到本地目录时,可能会出现以下错误: @ERROR: auth failed on module XXX 其中,XXX 表示你的远程rsync服务模块名称。 出现这种情况,先检查你的用户名和密码是否正确,如果都正确,有一个可能是原因是:远程rsync服务器的帐户密码文件的权限必须为600,例如,你在rsyncd.conf中设原创 2010-04-29 15:19:00 · 53572 阅读 · 0 评论 -
使用sed在某一行插入另一个文件的内容
例如:sed -i 2 r a.txt ccc.txt表示将a.txt文件的内容插入到ccc.txt文件的第二行。原创 2010-04-23 20:37:00 · 9564 阅读 · 0 评论 -
小故障:RHEL 5无法上网
今天在家里使用RHEL虚拟机的过程中,网络由Wi-Fi切换成了有线之后,突然发现了一个问题:无法连接网络。这个问题还是由在编写gsoap代码的过程中,使用wsdl2h工具时发现的,它总提示无法连接到指定的服务器。ping了一下baidu.com,竟然都不通,看来是DNS问题了。于是修改 /etc/resolv.conf文件,将里面的nameserver改成了与Windows下一样(DHCP自动原创 2010-01-10 22:19:00 · 1495 阅读 · 0 评论 -
Linux下gsoap的安装
系统:RHEL 5.1 & 5.3 gsoap是个好东东,它可能很好装,可能也很难装,取决于你的系统已经安装了什么开发包。 我在多台RHEL虚拟机(32bit & 64bit)上均安装了gsoap,其中有一台是configure之后直接make就搞定了,另外两台都是还要折腾很多其他东西的。 其中有几个需要说明的地方是:(1)安装gsoap,你需要先安装openssl-d原创 2010-01-07 23:25:00 · 6655 阅读 · 1 评论 -
MySQL数据库的“连接池”
转帖请注明出处,并保持文章的完整性。 对MySQL数据库来说,同一时刻,在同一个连接(connection)上,只允许进行一个操作(query,etc.),如果你的程序是多线程的,并且你在多个线程中都会利用同一个connection对数据库进行操作,那么,就有可能发生问题。你可以自己来同步各线程对数据库的操作。例如,你可以使用mutex,使用读写锁来同步,等等。但是这样做只是个治标不治原创 2010-01-02 21:37:00 · 1178 阅读 · 0 评论 -
SSH文件传输中的二三事
在Linux C++程序中,用SSH进行文件传输时,我曾经遇到过一个很诡异的问题,那就是SSH会话会无缘无故“损坏”,导致后续与SSH相关的功能无法完成。这个诡异的问题在折腾了我一段时间之后,发现是由于项目中所使用的一个SSH库的使用方式不对引起的,至于这是该lib的bug还是我不应该那样用就不好考证了,但是至少我解决了问题。问题就在于:使用scp来传输文件时,由于没有将文件“分块”传输,导致SS原创 2009-12-29 23:53:00 · 1088 阅读 · 0 评论 -
LINUX下如何对一个程序限速
前言:本文环境基于RHEL 5。 在有限的带宽条件下,我们自言往往要对占用带宽过大的程度限速,例如,只允许其占用最高1Mbps的带宽,或者使其下载速度不超过200Kbps,等等。因此,我们就需要流量控制(Traffic Control)工具。我在网上找了一下,了解了几个:trickle,pyshaper,以及LINUX内核自带的tc。(1)trickle(主页:http://m原创 2010-03-10 16:30:00 · 6283 阅读 · 0 评论