又见Java乱码
dom4j解析xml
dom4j提供了一个DocumentHelper
来解析xml内容,此处的内容是String类型的。下面是其源码:
1 | public static Document parseText(String text) throws DocumentException { |
从以上的代码中可以看出,解析过程中是使用XML的头<?xml version="1.0" encoding="UTF-8"?>
来获取编码信息的。
dom4j提供了一个DocumentHelper
来解析xml内容,此处的内容是String类型的。下面是其源码:
1 | public static Document parseText(String text) throws DocumentException { |
从以上的代码中可以看出,解析过程中是使用XML的头<?xml version="1.0" encoding="UTF-8"?>
来获取编码信息的。
在JSP页面中,使用标签库代替传统的Java片段语言来实现页面的显示逻辑已经不是新技术了,然而,由自定义标签很容易造成重复定义和非标准的实现。鉴于此,出现了JSTL(JSP Standard Tag Library),为大多数JSP页面逻辑提供了实现的JSTL技术,该技术本身就是一个标签库。
Sun公司Java规范标准的JSTL由apache jakarta组织负责维护。作为开源的标准技术,它一直在不断地完善。JSTL的发布包有两个版本:Standard-1.0 Taglib、Standard-1.1 Taglib,它们在使用时是不同的。
Standard-1.0 Taglib(JSTL1.0)支持Servlet2.3和JSP1.2规范,Web应用服务器Tomcat4支持这些规范,而它的发布也在Tomcat 4.1.24测试通过了。
Standard-1.1 Taglib(JSTL1.1)支持Servlet2.4和JSP2.0规范,Web应用服务器Tomcat5支持这些规范,它的发布在Tomcat 5.0.3测试通过了。
本文将以由Sun发布的Standard-1.1 Taglib标签库为主,而apache jakarta组织发布的开源标签库,可以从http://jakarta.apache.org/taglibs/找到所需要的帮助。Sun发布的标准JSTL1.1标签库有以下几个标签:
此外,JSTL还提供了EL表达式语言(Expression Language)来进行辅助的工作。
JSTL标签库由标签库和EL表达式语言两个部分组成。EL在JSTL 1.0规范中被引入,当时用来作为Java表达式来工作,而该表达式必须配合JSTL的标签库才能得到需要的结果。
说明:在JSTL 1.1规范中,JSP2.0容器已经能够独立的理解任何EL表达式。EL可以独立出现在JSP页面的任何角落。本文随后的内容将以JSTL 1.1规范作为介绍的重点。
《程序员修炼之道-从小工到专家》写的具有普遍意义的指导方法。很少有具体的开发讲解,更多的是告诉你,作为一个程序员,你应该具有哪些素质,以及怎么做。下面是我对书中印象比较深的一些记录。
三个士兵从战场返回家乡,在路上饿了,他们看见前面有村庄,就来了精神(他们相信村民会给他们一顿饭吃)。但当他们到达那里,却发现门锁着,窗户也关着。经历了多年的战乱,村名们粮食匮乏,并把他们仅有的一点粮食藏了起来。
士兵们并没有气馁,他们煮开一锅水,小心地把三块石头放进去。吃惊的村民走出来望着他们。
“这是石头汤。”士兵们解释说。“就放这些吗?”村民们问。“一点也没错——但是有人说加一些胡萝卜味道更好…….” 一个村民跑开了,又很快带着他储藏的一篮胡萝卜跑回来。
几分钟后,村民们又问:“就这些了吗?”“啊,”士兵们说:“几个土豆会让汤更实在。”又一个村民跑开了。
接下来的一小时,士兵们列举了更多让汤更鲜美的配料:牛肉,韭菜,盐,还有香菜。每一次都会有一个不同的村民跑回去搜寻自己的私人储藏品。
最后他们煮出了一大锅热气腾腾的汤。士兵们掉石头,和所有的村民一起享用了一顿美餐,这是几个月以来他们所有人第一次吃饱饭。
在pom.xml里添加以下maven插件配置:
1 | <!-- 静态代码检查 --> |
这些配置集成了checkstyle,pmd,findbugs的插件。并指明了要使用的规则集合(checkstyle.xml,pmd.xml,findbugs.xml)。
有些依赖包在mavencentral上是没有的。那么如何在项目中使用呢?
1 | <dependency> |
这里可以指明scope是system,然后制定这个依赖包的systemPath就可以啦。这里依ik-analyzer为例的。
打war包,一般直接执行mvn clean package
即可,但是默认的情况下是不能将scope=system的本地包打包的。这个时候就需要显式的指定啦。如下面这样,默认将lib下的所有jar文件打包到WEB-INF/lib下。当然也是可以打包其他的文件的,诸如xml,properties等的。
1 | <plugin> |
apache + tomcat + mysql + linux, 介绍如何定位瓶颈与调优
按照官方默认配置。
并发150正常;达到210时,报connection refuse
$TOMCAT_HOME/conf/server.xml中
1 | <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" |
maxThreads 默认值是200
acceptCount 默认值是100
解决方法:显式指明以上2项,并提高数值。并可配合min/maxSpareThreads
参数文档: http://tomcat.apache.org/tomcat-6.0-doc/config/http.html
最近,由于公司内部的网络改造,在git push
的时候提示如下信息:
1 | ssh: connect to host github.com port 22: Connection timed out |
看字面的意思就是连接超时了,什么原因造成的呢,这个估计是公司网络禁用了SSH的22端口导致的。所幸git提供了https、git、ssh三种协议来读写。
运行git config --local -e
打开配置信息。
修改其中的
1 | url = git@github.com:username/repo.git |
为
1 | url = https://username@github.com/username/repo.git |
这样就改为使用https协议了。提交什么的就OK了。
后来,我再使用Octopress提交博客的时候问题又出现了。也就是在rake deploy
的时候,又走ssh了。此时只要进入_deploy目录,把上述步骤再执行一次就好了。就是每次提交都要输入用户名密码而已。