- 浏览: 189179 次
- 性别:
- 来自: 杭州
博客专栏
-
Java技术分享
浏览量:0
最新评论
-
masuweng:
学习了,学习了
mybatis是如何防止SQL注入的 -
somefuture:
终于知道了#$的区别
mybatis是如何防止SQL注入的 -
masuweng:
...
tomct处理请求的流程 -
zhp8341:
masuweng 写道寻求cas的更多例子, http://w ...
JUC之CAS -
臻是二哥:
java.util.concurrent包中到处都使用了CAS ...
JUC之CAS
文章列表
Spring代码中动态切换数据源
- 博客分类:
- spring
最近项目中遇到一个场景,需要能够在一个方法中操作多个具有相同表结构数据库(你可以理解为一个表中的数据被水平拆分到多个库中,查询时需要遍历这多个库)。经过笔者几天的研究,最终解决了问题,并且写了一个demo共享到我的github。
关注笔者博客的小伙伴一定知道之前的这篇文章点击打开链接,这篇博客中的解决方案仅仅适用读写分离的场景。就是说,当你在开发的时候已经确定了使用写库一读库的形式。笔者今天要写的这篇文章具有普适性,适合所有需要在Spring工程中动态切换数据源的场景,而且本文中的解决方案对工程的代码基本没有侵入性。下面就来说下该方案的实现原理:
详细内容,请移步笔者的新地址:http://b ...
Java在1.5之后允许方法使用可变参数,可变参数的好处在于:它允许传递0个或者多个参数。比如原来有一段代码如下:
public class Test {
public static void main(String[] args) {
test();
test(new String[]{"a"});
...
笔者之前从原理的层面讲解过spring的事务处理,包括编程式事务处理和声明式事务处理,详见博客 Spring事务处理-编程式事务和声明式事务。这篇文章从原理的层面讲解了Spring的事务管理机制,读完了这篇博客,笔者可以一针见血的使用spring的处理机制。
今天这篇博客仅仅是Spring声明式处理的正常使用,偏向工程的使用说明。还是以最近的几篇博客中常用的test工程为例,具体如下:
首先,第一步:在service层中需要事务管理的方法上添加注解@Transactional,下面是test工程中test-service子模块的UserServiceImpl类中的一个方法:
详细内容,请移步到 ...
常常听到有技术圈的朋友抱怨,尤其是从其他语言转到Java语言的同行,说Java的try-catch语言让代码显得很凌乱。的确,作为一个Java Follower,笔者也觉得Java中的try-catch会导致代码很不整齐,易读性变差。那么有什么好办法让Java工程中尽量不出现try-catch语法块呢?办法还真有,请听我娓娓道来!
首先,笔者带领大家回顾一下Java的异常处理机制。如下图,Java中有个类叫做Throwable。
具体博客请移步到笔者的新博客地址http://blog.csdn.net/yizhenn/article/details/53558496
在Java后台编程中,大家一般会使用MVC设计模式,即便使用的具体框架不尽相同。今天,我们来说说MVC中的这个C,也就是Controller。Controller是web程序中最先接触到用户request的地方,当然,前提是该request经过了身份认证和权限检查等重重考验,这一部分建议在框架的Interceptor中进行。详细内容请看笔者之前的博客玩转Spring!从拒绝Filter开始。好了,话不多说,进入正题。
笔者的博客已将迁移至CSDN,详细内容参见
http://blog.csdn.net/yizhenn/article/details/53452913
一直以来,博客都是在写一些读书笔记或者学习心得。俗话说,举一反三,是时候沉淀一下了。索性这把这篇文章作为开端吧!
笔者知道,这篇文章的题目一定让某些developer不爽,尤其是学习过J2EE基础的人。学习过J2EE基础的童鞋,一定有自己写listener,filter和servlet的经验。经验多一些是好事,但不要陶醉于自己的经验,作为developer,我们还是要进步滴,尤其是在使用spring之后。
在Spring中,用拦截器代替了原来的listener和filter,而且的确,Spring中的这个拦截器机制也的确是不负众望。下面笔者就举个例子,如何利用Spring中的拦截器机制写出松耦合 ...
一直以来,都想写一篇介绍Java学习路线的博客。为什么有这个想法?原因有两个,其一:笔者从大三开始学习JAVA,至今也3年了。由于身边缺乏老司机带路,只能自己一步步探索,深知没人指路的痛苦。所以看过很多垃圾的书籍(没办法,国内书籍市场门槛太低),但功夫不负有心人,一些经典的书籍也都撸过了(关于书籍,下文中会介绍)。其二:由于JAVA进入门槛低,所以存在一些学个SSH框架就觉得JAVA不过如此之流,对此笔者只能呵呵。由于笔者是个JAVA死忠粉,所以写这篇文章也是希望大家能对JAVA有更深入的认识。话不多说,进入正题!
详细内容,请到CSDN,请参见链接。
http://blog.csdn.ne ...
各位朋友,大家好! 感谢大家两年对我博客的关心和认可。 现将博客搬至CSDN 欢迎大家继续关注!
http://blog.csdn.net/yizhenn
SQL注入是一种很简单的攻击手段,但直到今天仍然十分常见。究其原因不外乎:No patch for stupid。为什么这么说,下面就以JAVA为例进行说明:
假设数据库中存在这样的表:
table user(
id varchar(20) PRIMARY KEY ,
name varchar(20) ...
本文旨在帮助sed新手快速熟悉sed的常见用法。
首先,用如下文件作为源文件pets.txt:
This is my cat
my cat's name is betty
This is my dog
my dog's name is frank
This is my fish
my fish's name is george
This is my goat
my goat's name is adam
替换命令s ...
这几天在写数据库脚本,需要频繁的处理字符文件,笔者之前都是用java程序处理字符文件,结果看到同事用awk几秒钟就搞定了一个处理,觉得太牛逼了,于是花时间学习了下。
本文旨在帮助awk新手快速熟悉awk的常见用法,笔者会尽量把文章写得像清纯的女神一样撩起你的兴趣,不过最终还得你花力气自己撸。
首先,我们使用netstat的输出作为源文件:
netstat -ano >> netstat.txt
我们发现netstat.txt中的信息太乱了,我们仅仅需要首列是tcp的行,当然第二行的标签也需要保留:
cat netstat.txt | awk '$1=="t ...
在讲项目之前,先讲解一些基础知识。
1. HTTP请求格式,一个HTTP请求包括以下三个部分:
请求方法(POST,GET等) URI 协议版本
请求头部
请求实体
举例如下:
POST /examples/default.jsp HTTP/1.1
Accept: text/plain; text/html
Accept-Language: en-gb ...
AQS是同步框架,它进行两个方面的工作:资源的管理和资源申请者的管理。对应由两部分组成:一个volatile int state(代表共享资源)和一个FIFO线程等待队列(多线程争用资源被阻塞时会进入此队列)。state的访问方式有三种:
ge ...
JUC是java.util.concurrent包的简称,该包提供了并发编程的解决方案(当然,JAVA并发编程的解决方案还有synchronized)。从概括的层面来说,JUC包有两大核心:CAS和AQS。其中CAS是java.util.concurrent.atomic包的基础,AQS是java.util.concurrent.locks ...
1. 为了理解OAuth的适用场合,让我举一个假设的例子。
有一个"云冲印"的网站,可以将用户储存在Google的照片,冲印出来。用户为了使用该服务,必须让"云冲印"能够读取用户自己储存在Google上的照片。
如何让云冲印能够访问位于Google上的照片呢?传统方法是,用户将自己的Google用户名和密码,告诉"云冲印",后者就可以读取用户的照片了。这样的做法有很多的缺点,比如:
a) 云冲印有了访问Google全部照片的权限,而实际情况是我们可能仅仅想打印Google中的某一张照片
b) 如果云冲印的网站被黑了,那么保存在云冲印网 ...