随笔分类 - java
摘要:spring使用PropertyPlaceholderConfigurer扩展来满足不同环境的参数配置,来自:http://www.javaarch.net/jiagoushi/548.htmPropertyPlaceholderConfigurer是spring提供我们来把一些环境变量(数据库连接相关参数,文件路径等)统一管理起来,然后在bean中指定对应的变量的。但是往往开发环境,测试环境,生成环境的这些参数配置是不同的,那么我们如何使用PropertyPlaceholderConfigurer扩展来满足不同环境的配置需求,而不需要在不同环境需要修改代码或者配置。1.我们扩展下Proper
        阅读全文
            
摘要:java国际化 本文来自:http://www.javaarch.net/jiagoushi/477.htm国际化是为了让应用程序能够兼容多种语言而不需要修改源代码,有时我们使用i18n代表国际化internationalization 的意思,那是因为internationalization 单词第一个字母i和最后一个字母n之间有18个字母。国际化程序能够带来的好处:1.本地时间,支持国际化程序,时间相关问题在多种语言地区之间就不会存在。GUI程序的文本信息能够支持新语言而不需要重新编译时间和汇率跟本地化相关能够快速本地化未进行国际化处理的程序:public class NotI18N {
        阅读全文
            
摘要:RSS feeds with Java 原文来自:http://www.javaarch.net/jiagoushi/479.htmRSS - 简易信息聚合RSS文档是一种XML格式的文件,遵循RSS规范,我们可以使用java的xml操作来读写RSS文档。2.RSS的工程和领域模型/* * Represents one RSS message */
public class FeedMessage { String title; String description; String link; String author; String guid; public...
        阅读全文
            
摘要:#!/bin/sh DUMP_PIDS=`ps --no-heading -C java -f --width 1000 |awk '{print $2}'`
if [ -z "$DUMP_PIDS" ]; then echo "The server $HOST_NAME is not started!" exit 1;
fi DUMP_ROOT=~/dump
if [ ! -d $DUMP_ROOT ]; then mkdir $DUMP_ROOT
fi DUMP_DATE=`date +%Y%m%d%H%M%S`
DUMP_DIR=$
        阅读全文
            
摘要:eclipse 远程文件实时同步,eclipse远程部署插件github地址:https://github.com/zhwj184/remotedeploy在开发过程中经常修改一些文件及时部署到测试环境中,比如apache静态资源文件,velocity模板文件等,那么我们可以通过这个eclipse插件设置好服务器信息,及时将本地修改同步到测试环境中,及时生效。将当前目录下的jar包放到eclipse的plugin目录下,eclipse要求3.4以上,jdk1.7.原理:利用jdk1.7的文件修改监听API将配置目录下的文件(一般为windows)如果修改添加,则实时使用ssh jar包的api
        阅读全文
            
摘要:我们经常会处理一些价格,比如从运营上传的文件中将某个字段从字符串转为double类型,那么此时处理价格需要特别注意,比如4.6,我们通过Double.valueOf(value)来转换,然后系统是用分为单位来存储价格信息,那么我们会将(long)(Double.valueOf(value)*100)来存储,此时4.6存储到系统就变成459了,然后再转换回来就出错了。public class FloatTest { public static void main(String[] args) { for(int i = 0; i < 10; i++){ String value...
        阅读全文
            
摘要:java 服务屏蔽开关系统,可以手工降级服务,关闭服务 基于spring AOP机制,可以在特殊情况下屏蔽相关service类的某些返回,并且支持定义默认返回结果,随机屏蔽某些异常服务。通过启动一个内置的http server来监听外部指令。对当前应用的影响。代码请查看https://github.com/zhwj184/autoswitch使用指南:1.在spring配置文件中添加如下,其中switch-service-pointcut是添加紧急情况下需要屏蔽的方法列表<aop:config proxy-target-class="true"></aop
        阅读全文
            
摘要:真是悲剧啊,一个破内部使用系统20多个人使用的后台管理系统有个excel文件上传功能,使用poi3.6版本来解析excel,出现的case是20多个人同时在上传,平均每个人上传的excel有1000多行,大小也就是不到100k吧,由于每个excel后端处理服务时间较长,导致同时需要处理100k*20的excel的行数,本来也就几M的数据量,可是poi解析居然要用掉的内存是这个量的几百倍,不可思议,使用代码如下: Java代码XSSFWorkbookwb=newXSSFWorkbook(inputStream);XSSFSheetsheet=wb.getSheetAt(0);Iterator&l
        阅读全文
            
摘要:web安全框架,主要用servlet filter方式覆盖httpServletRequest和HttpServletResponse方式增加一些输入输出的过滤,github地址:https://github.com/zhwj184/webSecurity主要实现的安全包括:XSS过滤(获取用户输入参数和参数值进行XSS过滤,对Header和cookie value值进行XSS过滤(转码Script标签的< > 符号),对Response的setStatus(int sc, String sm)方法 sm错误信息进行XSS过滤;对Header的CLRF进行过滤;对cookie大小和
        阅读全文
            
摘要:基于servlet的页面级缓存框架的基本用法:代码参考:https://github.com/zhwj184/pagecache在web.xml里面配置urlPattern:需要缓存的页面url的正则表达式列表,多个不同url的正则用,分隔;cacheExpireTime:对应urlPattern的每个url的缓存时间,单位秒,用,分隔;includeParams:对应urlPattern的每个url需要考虑的参数列表,每个url的参数用;分隔,每个url的多个参数用,号分隔;需要配置了该参数,则不考虑excludeParams的参数配置;excludeParams:对应urlPattern的
        阅读全文
            
摘要:如果jdk,classpath设置正确,突然在eclipse报错,则可能可以这么处理:Eclipse使用过程中出现java.lang.NoClassDefFoundError的解决方案在网络上找到一盏明灯,方法如下:把properties属性里的java compiler-->building-->abort build when build path errors occur 前的勾去掉了这样就ok 了。正解啊,以前经常碰到,没想到这才是解决方案。
        阅读全文
            
摘要:1.问题 今天在本地和测试环境用jetty跑应用发现本地环境跑起来有问题,而测试环境却没有问题,出现的是war包的WEB-INF的lib目录下有两个jar包a.jar和b.jar,但是这两个jar包邮两个包名和类目一样,但是功能却不一样的类,那么jetty启动加载这个类的时候用的是a.jar里面的类还是b.jar里面的类呢,出了问题只能查了。 2.本地环境jetty加载目录里面是b.jar排在a.jar前面,而测试环境是a.jar排在b.jar前面,而记载a.jar里面的类是正确的。我们看看jetty怎么处理: 首先jetty加载一个APP war的过程中WebInfConfigurati..
        阅读全文
            
摘要:在session的public Result executeCompiledStatement(Statement cs, Object[] pvals)方法执行中会处理事务 boolean isTX = cs.isTransactionStatement(); if (!isTX) { if (database.logger.getSqlEventLogLevel() >= SimpleLog.LOG_NORMAL) { sessionContext.setDyn...
        阅读全文
            
摘要:执行过程先分析select语句的解析过程: select语句的解析集中在ParserDQL类的XreadQueryExpression方法中,其中XreadQueryExpressionBody select除了limit,offset,fetch关键字外的其他条件解析,XreadOrderByExpression是limit,offset,fetch,ordre by的解析,我们分析简单的select * from user where * order by * limit 2 offset 5 这种语句,对于嵌套子查询和联合查询待会简单过下。 QueryExpression que...
        阅读全文
            
摘要:查询过程前面解析类似insert,最终调用是在下面这个QuerySpecification类的getSingleResult方法,RangeVariable是查询条件相关 private Result getSingleResult(Session session, int maxRows) { int[] limits = sortAndSlice.getLimits(session, this, maxRows); Result r = buildResult(session, limits); ...
        阅读全文
            
摘要:我们看看insert语句的执行过程, 如果cs.isTransactionStatement()是true,则表示启动事务执行, public Result executeCompiledStatement(Statement cs, Object[] pvals) { Result r; if (abortTransaction) { rollback(false); return Result.newErrorResult(Error.error(ErrorCode.X_40001)); ...
        阅读全文
            
摘要:hsqldb是java版的简化数据库,代码量比较少,对于学习数据库的设计是一个比较好的选择,对于derby代码量比较大,mysql c++更复杂,所以就通过学习hsqldb来学习数据库的设计。在这里可以下载到源码http://hsqldb.org/,源码包下org.hsqldb.test有很多的测试类,大家可以从这里开始调试学习hsqldb。HyperSQL数据库叫catalog,根据数据库存储方式不同分为几种:• mem: stored entirely in RAM - without any persistence beyond the JVM process's life• f
        阅读全文
            
摘要:在server类的handleConnection方法中处理客户端的输入, 首先调用allowConnection方法检测下客户端ip是否合法,ServerAcl类中可以查看,在server启动输入参数中可以指定acl 黑白名单ip文件,检测代码很简单,这里就不说明了,有兴趣的看下ServerAcl类。 protected boolean allowConnection(Socket socket) { if (isShuttingDown) { return false; } return (acl == n...
        阅读全文
            
摘要:1.普通的通过构造函数初始化,没有指定构造函数参数的就是用默认的无参的构造方法<bean id="exampleBean" class="examples.ExampleBean"/> <bean name="anotherExample" class="examples.ExampleBeanTwo"/>构造函数的几种方式:1.普通沟通函数注入方式,按照构造函数参数的顺序和个数来注入beanpackage x.y; public class Foo { public Foo(Bar bar
        阅读全文
            
摘要:通常在数据库DAO层的查询中,我们会定义一个DAO接口,而在实现中我们只是拼接查询参数并且指定一个ibatis的sqlmap中的sqlid进行查询,Dao的实现很类似,而且非常简单,其实可以简化这种的实现,不需要这些实现代码,下面我们通过annotation机制来简化这块的实现。比如public class TestDaoImpl extends SqlMapClientDaoSupport implements TestDao { @Override public int updateBrandOfferStatusByBrandMemberId(Long brandMemb...
        阅读全文
            
                    
                
浙公网安备 33010602011771号