- 浏览: 912669 次
- 性别:
- 来自: 深圳
最新评论
-
tcspecial:
陈宇飞 写道reset()为什么不可以用了,版本低了,还是头文 ...
QTreeView 使用自定义Model -
陈宇飞:
reset()为什么不可以用了,版本低了,还是头文件呢
QTreeView 使用自定义Model -
gamesliang:
海康SDK截图 -
tadpole_java:
环形缓冲区类(C++源码)绝对可用.....转到你网易的微博上 ...
QByteArray储存二进制数据(包括结构体,自定义QT对象) -
tcspecial:
tadpole_java 写道经常看看您的帖子,把它当成教科书 ...
QByteArray储存二进制数据(包括结构体,自定义QT对象)
文章列表
Log4j是Java下强大的日志记录类库,各语言都有相应实现版本。C的log4c,C++的log4cxx,QT的log4QT,C#下的log4Net。不过还是Log4j和Log4Net比较常用。
一. 下载
从 http://logging.apache.org/log4net/download_log4net.cgi 下载最新版本 log4net-1.2.15-bin- ...
当前系统时间,一般取自1970年以来秒数值(int),各种编程语言提供API处理方式不同,特汇总。
1.C/C++
time_t seconds;
time(&seconds);
2.QT
QDateTime dt = QDateTime::currentDateTime();
dt.toTime_t();
3.C#
C#没有直接提供获取1970年秒值的API,可通过DateTime运算获取
// 不能用DateTime.Now,否则会有8h时差
int seconds = DateTime.UtcNow.Subtract(DateTime.Pa ...
系统运维过程中,经常遇到向FTP上传下载数据,向DB读写数据等场景。FTP,SQLPLUS,MYSQL提供的都是交互式命令方式,在shell下也通过管道方式实现自动执行。
1. FTP
1.1 -s参数指定文件名
vi ftpcmd.txt
open 192.168.5.10
myuser
mypass
get 1.txt
bye
ftp -s:tpcmd.txt // -s直接指定命令文件,可以完成自动测试,一般用于暴力破解FTP密码
1.2 "<<EOF" 表示后续输入作为子命令或子shell ...
一般在java处理Get/Post请求,用的比较多是apache的commons-httpclient.jar库,封装比较彻底,使用比较简单。有些简单应用场合,不需要使用httpclient库,可以直接使用Java内置URLConnection类。
客户端:
public String getInfoFromServ( String path ){
BufferedReader in = null;
String result = "";
try {
URL url = new URL(path);
URLConnection ur ...
makefile中提供了字符串查找,替换函数,却没有提供字符串分隔函数,可以通过shell表达式解决。
TEST=1.8.2
MajorVer = $(shell $(TEST) | awk -F'.' '{print $$1}')
注:上例中$$VAR就是获取shell中的变量,而$(VAR)是Makefile的中的变量,否则无法分割
readline是linux下常用的CLI交互式开源库,readline可以实现命令编辑,自动命令补全,历史命令搜索等人性化的交互方式。
系统实现了rl_filename_completion_function和rl_username_completion_function自动补全,实现自定义命令的自动补全需要实现rl_attemped_completion_function函数。
工作原理:
1.通过rl_complete()调用rl_completion_matches()来产生补全字符。
2.rl_completion_matches() 使用程序提供的gener ...
select用法
select为linux常用的非堵塞套接字API,原型为:
int select(int nfds, fd_set *readfds, fd_set *writefds,
fd_set *exceptfds, struct timeval *timeout);
select用于检测文件描述符的变化,参数五timeout:
1. NULL传入,此时select置于堵塞状态,直到fd发生变化函数才返回。
2. 时间值设为0秒0纳秒,不管fd是否变化,函数立即返回。
3. timeout值大于0,就是等待超时时间。如超时时间内 ...
一. Linux 杀死顽固进程
Linux进程状态成 Z(TASK_Zoombie),T(TASK_Stopped or Traced)时,无法用kill -9 杀死。
1.一般情况下进程进入僵尸状态时,会被init进程接管,会自动消亡,可不用理会。
2.当进程被调试状态时(当运行gdb或strace命令时),会向进程发送一个STOPPED信号,导致进程进入TASK_STOPPED状态。此信号会导致该进程无法响应SIGKILL,SIGEGV等信号,因此怎么都杀不掉。
解决方案:
killall gdb 或 killall strace 命令杀死gdb或strace,大多数情况下 ...
maven是时下比较流行的项目管理和构建自动化工具。项目中需要应用到其它jar包时,只需指定jar名称和版本,其依赖的类库会自动下载,非常方便,再也不用手动四处拷贝Jar包了。缺点是插件不稳定经常报错,而且访问国外网站非常缓慢,经常下载某些库出错。最好用Nexus搭建本地maven仓库。
一. 安装maven
下载 maven,解压后配置 $MAVEN/conf/settings.xml 指定 localReposity
eclipse 安装 maven 插件:
http://download.eclipse.org/technology/m2e/releases
...
#!/bin/sh
test()
{
RetVal=0
cat 1.log | while read line
do
if[ "$line" == "2" ]
then
RetVal=1
fi
done
return $RetVal
}
很容易写出上述代码,上述代码返回值始终为0。虽然执行了RetVal=1这条语句,但是一出while循环,变量值又变成0了。
这是因为管道是在子shell中执行的,子shell中的变量对于子shell之外的代码块来说, 是不可见的. 当然, 父进程 ...
#!/bin/sh
str="shenzhen_iprad_201509.log"
pat="iprad"
#方法一,grep。如包含,返回值为0
echo $str | grep -q $pat
echo $?
#方法二,expr。如包含,显示匹配长度
expr match "$str" ".*${pat}.*"
#方法三,替换后再判断源串
#清空子串
rep="${str/$pat/}"
if [ "$rep" == " ...
安装配置好vsftpd服务器后,FTP上传文件报错:
1. 451 Failure writing to local file
检查发现是磁盘满了。du -sh * 或 du -sh /* 查看目录的大小,查找占用空间大的目录 /var/spool/clientmqueue。搜索发现 /var/spool/clientmqueue 是因为系统定时服务cron的输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了这些文件。
解决方法:在cron的自动执行语句后加上 >/dev/null 2>&1
crontab -e
4 3 ...
最近执行定时上传文件时,发现总时上传失败。定时任务 0 2 * * * sh /home/smart_push/ftp_upload_log/uploadlog.sh 1 >/dev/null 2>&1,手动执行很正常。查看日志也正常。
一筹莫展之时,输入mail命令,发现显示 lzop: command not found。手动可以执行,说明环境变量配置正确,同时表明crontab没有加载系统环境变量。百度发现crontab的确不会加载用户环境变量。
解决方案,在脚本中引入环境变量。
#方法一:通过source导入
source /etc/profile
...
经常遇到部署程序到多台linux服务器上,一台台的部署岂不是很麻烦。要是能只敲一次命令,能自动发送到所有终端上该多好。没想到还真有这样的功能。
SecureCRT设置:
菜单栏 查看 -- 交互窗口,勾选后弹出一个窗口。直接输入命令,回车即可看到每个tab执行结果。
XShell4设置:
SecureCRT界面比较难看,幸好XShell也有这样的功能。
菜单栏 View -- Compose Bar,操作与上面类似。
redis 终于推出正式的集群解决方案,最新稳定版本v3.0.2。集群实现目的将不同的key分散到不同的节点上,传统哈希算法hash(key)%n,不适用于添加和删除节点场景,会导致大量的key无法命中,扩展比较困难。redis 没有采用一 ...