`
tcspecial
  • 浏览: 912669 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
文章列表
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 使用

    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 没有采用一 ...
Global site tag (gtag.js) - Google Analytics