Spring配置多数据源进行数据同步

发表于3年前(Jan 20, 2015 4:59:00 PM)  阅读 3926  评论 4

分类: Java 数据库 案例

标签: 数据同步 annotation 多数据源 多事务 动态切换 AOP 反射 模型转换 AbstractRoutingDataSource PlatformTransactionManager

本文主要可以解决以下几个问题:

Spring如何配置多数据源、多事务,以及如何动态切换。

Spring AOP机制的运用,以及对同一个切面(Joint Point)多个处理方法(Advice)执行顺序的设置,即AOP的Order的设定。

自定义注解Annotation的实现以及使用。

使用Java反射机制配合Annotation实现异构模型之间的自动转换。

网站配置的一种设计实现方法

发表于3年前(Jan 7, 2015 11:22:17 AM)  阅读 775  评论 0

分类: Java 案例

标签: 网站配置 annotation

1、网站配置:

一个网站都有很多配置选项,如笔者的博客里面就有基本配置、阅读配置、评论配置等:

有了这些配置管理功能,我们在开发时就不需要硬编码,可以实现在线修改配置选项,不需要重启服务。这是一个网站很常见的做法。

2、简单实现:

一般来说,实现这个配置管理很简单,建立一个配置实体类,映射数据库中的一个表,无非就是对这个实体实现增删改查。后期如果要修改,比如增加了一个配置选项,那就修改实体类,增加属性,增加数据库字段,修改页面,可能要修改对应的合法性验证。虽然修改的地方较多,但也没那么麻烦,都是简单的体力劳动,也没什么费劲的。

3、多个配置怎么办:

如果系统里面就一两个这样的配置,采用上面的方法很快就完成了,但如果系统中有很多这样的配置,那工作量就有点大了。这时我们就会偷下懒了,就要想到继承了,看看配置是不是基本都是相似的。而且,难道我们给每一个配置建立一个对应的映射表,每个表里n多字段只有一条数据,这样好像有点浪费。

 

java工程配置文件加密

发表于3年前(Jan 5, 2015 10:22:19 AM)  阅读 859  评论 0

分类: Java 开发运维环境

标签: spring web.xml applicationContext.xml DES 加密解密 PropertyPlaceholderConfigurer

一个常见的java web工程中有许多配置文件,基本为两种类型文件,xml和properties,具体的有web.xml,applicationContext.xml,jdbc.properties,log4j.properties等。

假如,你的整个工程被某些人拿到了,会发生什么事。jdbc里面明文填写了数据库连接信息,数据库地址暴露了,用户名密码暴露了,当然,一般数据库都有防火墙等安全方面的限制,光有这些可能还不足以攻破你的数据库,但是泄露这些总是不好的,总是危险的。所以如果配置文件中包含敏感信息必须加密。

那如何加密这些配置文件呢:

获得高度,兼容IE,FF,Chrome

发表于3年前(Dec 24, 2014 2:37:40 PM)  阅读 686  评论 0

分类: WEB前端 JS

标签: 高度

在前台碰到一个问题,需要获得整个页面有多高,即document的高度,JQuery中提供了$(document).height()方法来获得document的高度,但在测试兼容性时,发现Chrome浏览器不兼容,获得的高度为当前浏览器可见的文档高度,并不是我想要的,然后网上查资料,找到下面信息:

网页可见区域宽:document.body.clientWidth
网页可见区域高:document.body.clientHeight
网页可见区域宽:document.body.offsetWidth (包括边线的宽)
网页可见区域高:document.body.offsetHeight (包括边线的宽)
网页正文全文宽:document.body.scrollWidth
网页正文全文高:document.body.scrollHeight
网页被卷去的高:document.body.scrollTop
网页被卷去的左:document.b

......

各种CSS样式控制优先级(解决样式冲突)

发表于3年前(Dec 24, 2014 2:36:42 PM)  阅读 1221  评论 0

分类: WEB前端 CSS

标签: 样式优先级 样式冲突

CSS控制页面样式有四种方法:

1、行内方式
行内方式是4种样式中最直接最简单的一种,直接对HTML标签适用style=””,例如:
<p style=”color:#F00; background:#CCC; font-size:12px;”></p>
虽然这种方法比较直接,在制作页面的时候需要为很多的标签设置style属性,所以会导致HTML页面不够纯净,文件体积过大,不利于搜索蜘蛛爬行,从而导致后期维护成本高。

2、内嵌方式
内嵌方式就是将CSS代码写在<head></head>之间,并且用<style></style>进行声明,例如:
<style type=”text/css”>
<!–
#div1{width:64px; height:64px; float:l

......

Hibernate支持的HQL函数-HQL对Date类型数据的处理

发表于3年前(Dec 24, 2014 2:34:59 PM)  阅读 967  评论 0

分类: Java

标签: hql CURRENT_DATE YEAR

1、问题背景:

有一个需求,统计网址访问量,需要分别统计昨天以及当月网址的访问数量。网址每次访问记录都已保存下来,访问时间使用日期时间类型,数据库是用的mysql,对应的字段类型是timestamp。其实这是一个很简单的sql,指定时间范围count一下就行了,本来系统框架使用的hibernate,也支持jdbc,但是考虑到还是保留数据库可移植性,还是使用hql来进行查询。

2、解决方案:

2.1、方案1:

以统计昨天的访问量为例,给定两个时间类型的参数,分别对应昨天零点以及今天零点的时间,采用between进行查询。(传参时,参数类型好像是用使用java.sql.Date,笔者未试验)

2.2、方案2:

网上搜索hibernate支持的函数,找到一些处理时间类型的函数,笔者就是采用该方案实现,看下面代码:

public int getLastDayVisitCount() {
......

一个简单的缓存框架MemCache

发表于3年前(Dec 24, 2014 2:29:11 PM)  阅读 904  评论 0

分类: Java 类库工具 MemCache

标签: memcache 缓存框架 自动刷新

1、背景介绍:

缓存框架笔者用得不多,主要是传统行业对使用缓存的概念很薄弱,不像互联网行业那么强烈。笔者曾经用过Ehcache,Memcached,就只有这两个了,而且基本都用得很少。具笔者有限的了解,这里就不百度了,有兴趣的读者自己百度,这两个框架共同点:都支持分布式部署,都支持缓存失效,都能控制缓存大小。不同点:Ehcache支持持久化到硬盘,而Memcached就不行,只能使用内存,Ehcache集群之间数据会保持一致,挂了一台,不影响数据的丢失,而Memcached数据是分成几份存在不同集群机器上,挂了一台,那台机器上的数据就丢失了,所以互联网企业用redis比较多,能弥补Memcached的不足。Memcached主要是更轻量级,笔者上次使用Memcached是用来作为Session服务器。

缓存是一个很简单的东西,初级程序员往往会觉得很高大上,其实很多人都在实际中应用过。举个很简单的例子,项目中经常有些静态常量,我们会写个工具类来引用,其实这也可以算作缓存,缓存的作用就是将经常访问且很少改变的数据保存在内存中(或硬盘一切读取很快

......

Spring MVC使用ModelAndView进行重定向

发表于3年前(Dec 24, 2014 2:24:14 PM)  阅读 13626  评论 1

分类: Java

标签: forward ModelAndView redirect 重定向

1、Servlet重定向forward与redirect:

使用servlet重定向有两种方式,一种是forward,另一种就是redirect。forward是服务器内部重定向,客户端并不知道服务器把你当前请求重定向到哪里去了,地址栏的url与你之前访问的url保持不变。redirect则是客户端重定向,是服务器将你当前请求返回,然后给个状态标示给你,告诉你应该去重新请求另外一个url,具体表现就是地址栏的url变成了新的url。

2、ModelAndView重定向:

使用Spring MVC通常是使用ModelAndView用来返回视图。ModelAndView其实也是支持Servlet中的两种重定向方式。比如404页面我们一般采用redirect重定向方式,像下面的代码就是redirect重定向:

 

public ModelAndView getPage404MV() {		
	ModelAndVi
......

多线程任务调度工具类

发表于3年前(Dec 24, 2014 2:22:19 PM)  阅读 722  评论 0

分类: Java 类库工具 MultiThreadJob

标签: 多线程任务调度

笔者不知道是不是已经有很多这种开源的成熟的多线程任务调度的工具,笔者也是最近才开始实践多线程编程,这个工具类也算这段学习的一点心得吧。再来说下这个工具类的作用,举个例子,网站抓图,抓图的代码很多,也很简单,网上一搜一大把,但是那些都是单线程的,使用多线程来抓图是不是会更快呢,这个当然。我们把每张图片当成一个job,每个job都是执行同一个操作,下载图片,不同的只是图片地址以及保存的文件名。在这里我们已经抽象出来了一个job,笔者最初的设想就是,我只要实现这个job,然后创建一堆job往一个任务线程池(暂时我们这么称呼它)里放,然后这些job就自动被调度执行了,听起来还不错吧。