记另外一则因编码引起的问题

续上文解决了编码的问题以后,最近又遇到了一则编码问题:在Windows操作系统下,将Tomcat做成服务,测试在catalina.bat文件中增加编码配置无效,于是只好改了操作系统的全局编码配置。

增加一环境变量,写入:JAVA_TOOL_OPTIONS, 变量值为:-Dfile.encoding=UTF-8 即可。

 

附:验证Java默认编码代码

//方法一:中文操作系统中打印GBK
System.out.println(System.getProperty(“file.encoding”));
//方法二:中文操作系统中打印GBK
System.out.println(Charset.defaultCharset());

记一则因编码造成的接口对接问题

某高校的短信接口对接,本地测试一切正常,部署到服务器却不正常,review代码发现含有如下代码:

public String getMD5(String str) {
    try {
        MessageDigest md = MessageDigest.getInstance("MD5");
        md.update(str.getBytes());
        return new BigInteger(1, md.digest()).toString(16);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return "";
}

这个取md5的方法在含有中文时,因环境的编码问题会造成得到的MD5不一致,故需要将标红的部分更改为
md.update(str.getBytes("UTF-8"));

即传入编码所使用的字符集即可。

同时,这边另外一个短信接口,发送时要求使用POST提交,也同样遇到了编码问题,解决方法同样简单:
使用标红的部分对编码进行下强制指定,就好咯 :)
HttpClient httpClient = new HttpClient();
PostMethod method = new PostMethod(url);
method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");

人生的三十五个好习惯(转载)

01. 不说”不可能”三个字.
02. 凡事第一反应:找方法,而不是找借口.
03. 遇到挫折对自己大声说:太棒了!
04. 不说消极的话,不落入消极情绪,一旦出现立即正面处理
05. 凡事先订立目标,并且尽量制作”梦想版”.
06. 凡事预先作计划,尽量将目标视觉化.
07. 工作时间.每一分,每一秒都做有利于生产的事情.
08. 随时用零碎的时间(如等人、排队等)做零碎的事情.
09. 守时.
10. 写下来,不要太依靠脑袋记忆.
11. 随时记录灵感.
12. 把重要的观念,方法写下来,并贴起来,以随时提示自己.
13. 走路比平时快30%,走路时脚尖稍用力推进,肢体语言健康有力,不懒散,萎靡.
14. 每天出门照镜子,给自己一个自信的微笑.
15. 每天自我反省一次.
16. 每天坚持一次运动.
17. 听心跳一分钟,在做重要事情前,疲劳时,心情烦躁时,紧张时.
18. 开会坐在前排.
19. 微笑.
20. 用心倾听,不打断对方说话.
21. 说话时声音有力.感觉自己声音似乎能产生有感染力的磁场.
22. 说话之前,先考虑一下对方的感受.
23. 每天有意识,真诚地赞美别人三次以上.
24. 及时写感谢卡,哪怕是用便笺写.
25. 不用训斥,指责的口吻跟别人说话.
26. 控制住不要让自己做出为自己辩护的第一反应.
27. 每天做一件”分外事”.
28. 不管任何方面,每天必须至少做一次”进步一点点”.
29. 每天提前15分钟上班,推迟30分钟下班.
30. 每天在下班前用5 分钟的时间做一天的整理工作.
31. 定期存钱.
32. 节俭.
33. 时常运用”头脑风暴”.
34. 恪守诚信,说到做到.
35. I am the best one!!!

记一则Linux病毒的处理

今天某项目经理反馈学校的某台服务器不停的向外发包,且CPU持续100%,远程登录后查看发现有一长度为10的随机字符串进程,kill掉,会重新生成另外长度为10的字符串进程。删除文件也会重复生成,非常痛苦。查阅crond相关日志,发现实际执行的内容为/lib/libudev.so ,以此为关键字进行查询,找到如下内容: 继续阅读“记一则Linux病毒的处理”

Ubuntu 安装 VMware Tools 报“无法找到kernel header path”的解决方案

(本文转自danieluk的专栏

经测试,本文同样支持Ubuntu 12.04

1. 更新或安装linux headers

sudo apt-get update && sudo apt-get install build-essential linux-headers-$(uname -r)

2. 关联文件,就是因为找不到这个几个文件,vmware tools才认为路径无效的。

cd /lib/modules/$(uname -r)/build/include/linux
sudo ln -s ../generated/utsrelease.h
sudo ln -s ../generated/autoconf.h
sudo ln -s ../generated/uapi/linux/version.h

3. 再次执行安装就ok啦,运行vmware-config-tools.pl 也没问题了

sudo ./vmware-install.pl

如何在jstl自定义标签中使用el表达式

今天Coding的时候,我使用到了自定义jstl表达式,其调用格式形如

<pms:getDicName dict=”jg” code=”${personEntity.jg}”/>

当然,在tld文件中,我也将code的rtexprvalue设置为了true,但是程序调试中,我在程序中获取到的死活都是“${personEntity.jg}”,而不是这段字符串的值,经查阅资料,发现想要在jstl表达式中使用el表达式需要额外做两个处理。

1)将接收el表达式的变量设置为Object类型。

2)改写接收el表达式的变量的set方法为:

public void setCode(Object code) throws JspException {
this.code = ExpressionEvaluatorManager.evaluate(“code”,code.toString(),Object.class,this,pageContext);
}

这样再测试,程序即可顺利的在jstl表达式中获取到el表达式的值。

Java出现Invalid XPath expression:的一种可能原因

相信dom4j是很多Java程序猿必备的jar包,最近跟某邮件系统集成时,使用dom4j读取对方的atom文件,无奈怎么调试系统都在报错“Invalid XPath expression:”,而我也很确定XPath表达式没有出错,经过查找资料及比对,发现造成这个问题的原因是少了一个Jar包——jaxen-1.1-beta-6.jar

加入此Jar包后,问题解决。

 

Linux下快速删除大量文件/文件夹方法

昨天遇到一个问题,在Linux中有一个文件夹里面含有大量的Cache文件(夹),数量级可能在百万级别,使用rm -rf ./* 删除时间慢到不可接受。Google了一下,查到了一种方法,试用了下确实比单纯使用rm快了一个数量级。

方法见下:

1)首先建立一个空白文件夹。

mkdir /tmp/empty

2)之后使用以下语句即可快速的删除文件。

rsync –delete-before -d /tmp/empty/ /the/folder/you/want/delete/

原文中说不要忘记文件夹后的“/”

3)一杯咖啡过后,就Ok了。

更多详情可以参见:

linux 快速删除大量文件

关于Java中redirect与forward的区别

今天遇到了一个超级郁闷的问题,在公司的门户上做了二开,理想的效果是用户通过我给定的URI提交数据之后,若数据正确跳转到首页,若错误则跳转到登录页。修改完成之后部署上,发现无论用户给出的凭据是正确还是错误都往错误页上跳转。
调试过程中我发现,用户输入正确的凭据以后系统确实往主页跳转了,但是最后的结果却是又返回到了登录页。仔细查看代码后发现,我在往主页跳转的时候,错误的使用了forward,造成不能将用户本地的cookie等凭证带到主页,令系统以为我已经退出了,故又返回了登录页。
关于redirect与forwad的区别,找到一篇博文,见下:(转载自:http://blog.csdn.net/tenor/article/details/4077079) 继续阅读“关于Java中redirect与forward的区别”