项目经验
文章平均质量分 73
wangpeng047
这个作者很懒,什么都没留下…
展开
-
spring多数据源配置
项目中我们经常会遇到多数据源的问题,尤其是数据同步或定时任务等项目更是如此。多数据源让人最头痛的,不是配置多个数据源,而是如何能灵活动态的切换数据源。例如在一个spring和hibernate的框架的项目中,我们在spring配置中往往是配置一个dataSource来连接数据库,然后绑定给sessionFactory,在dao层代码中再指定sessionFactory来进行数据库操作。正如原创 2013-04-29 16:48:51 · 129877 阅读 · 51 评论 -
Java内部类详解(二)
三、种类局部内部类、成员内部类、匿名内部类、静态内部类。原创 2013-10-27 21:27:43 · 2340 阅读 · 4 评论 -
Java内部类详解(一)
很多人对于Java内部类(Inner Class)都十分陌生,甚至听都没听过也没有使用过,内部类在Java中其实是比较重要的一块内容,掌握好这门知识对于编程来说,犹如插上一对翅膀。原创 2013-10-26 20:54:50 · 4005 阅读 · 1 评论 -
Hibernate占位符问题[use named parameters or JPA-style positional parameters instead.]
hibernate 4.1之后对于HQL中查询参数的占位符做了改进,如果仍然用老式的占位符会有类似如下的告警信息:[main] WARN [org.hibernate.hql.internal.ast.HqlSqlWalker] – [DEPRECATION] Encountered positional parameter near line 1, column 95. Positional parameter are considered deprecated; use named paramet原创 2013-09-29 16:08:56 · 25832 阅读 · 15 评论 -
如何正确合理的设计一个接口项目
在手机广泛流行的今天,手机应用也随之越来越多,而且成长的速度也非常快。手机应用软件开发实现方式同普通PC软件一样,也分为BS和CS方式。而采用CS方式,在服务器端大多采用接口的形式提供数据交互(主流数据交互方式有:Json、WebService等),今天要说的就是如何设计接口。接口作为连通客户端与数据库进行数据流通的桥梁,起着举足轻重的作用,直接影响着程序的效率性、稳定性、可靠性以及数据的正确性、完整性。客户端注重的是界面美观,操作方便顺畅,是用户最直接的感受体验,而接口则是所有数据的提供者,是用户深层原创 2013-09-28 17:15:26 · 22246 阅读 · 1 评论 -
HQL使用小技巧——混合SQL
偶然间发现HQL一个非常有意思的用法,拿来分享下。示例如下:1. student数据库表(MySQL)CREATE TABLE `student` ( `ID` int(11) NOT NULL, `NAMES` varchar(50) NOT NULL, `AGE` int(3) NOT NULL, PRIMARY KEY (`ID`)) ENGINE=InnoDB原创 2013-07-30 11:48:59 · 7626 阅读 · 0 评论 -
ibatis传递日期Date参数
这本来是一个简单的问题,但是在网上查阅了半天也没找到结果,最后阅读官方文档后,终于找到了方法。其实非常简单,只需要在接口方法参数上加上@Param注解。另外如果需要传递多个参数时,可以使用该注解来实现。例子:public List selectTeacher(@Param(value="id") String id, @Param(value="sex") String sex,原创 2013-06-29 22:44:18 · 15681 阅读 · 1 评论 -
静态变量缓存需要注意的事
在项目过程中,我们有时经常喜欢用静态变量(static)来缓存一些不便的公共数据,但是这么做有一点需要注意:静态变量的保护。由于一些因素(比如查询数据库),我们无法对静态变量加上final属性,因此如果静态变量暴漏后,如果有对静态变量写操作(即修改变量)的话,很可能会引起意想不到的错误。当然平时我们用缓存几乎都是读取操作,所以这个问题不容易引起我们的注意。例子说明:package te原创 2013-06-29 21:59:36 · 12203 阅读 · 1 评论 -
小问题大智慧
说到字符串比较,大家都知道,但你真的知道如何比较才是最正确的吗?不知道的人,几乎都是用以下方法来比较的String str = nullif (str == null || str.equals("")) {}这实际上是效率最低的,正确的做法是:String str = null;if (str == null || str.isEmpty()) {}但上述方法需要jd原创 2013-05-28 15:53:43 · 2377 阅读 · 3 评论 -
Spring注解自动注入Bean
我们知道采用Spring注解时,配置如下: 这样的话,在com包及其所有子包下的所有类如果含有@Component、@Controller、@Service、@Repository等注解的话都会自动纳入到Spring容器中,但是每个类都一个个加上注解,有时难免觉得繁琐,其实Spring也为我们提供了自动为类加上注解的功能。配置如下: 我们可以看到加了conte原创 2013-04-30 09:10:01 · 19984 阅读 · 4 评论 -
sql语句生成sql脚本
sql语句有一种特别的用法,相信很多人还不知道,我也是后来学到的,因此拿来跟大家分享下:生成sql脚本举个例子:select 1 from student;如果表中有数据的话,你就会发现查询的结果会是:根据这个原理,我们可以用来生成sql脚本,以下就是实例:实例1:一个简单的例子select * from Popedomselect 'insert intoPope原创 2013-04-30 09:38:10 · 9270 阅读 · 4 评论 -
hibernate关联查询
很多人认为hibernate一旦涉及到多张表查询就很不方便,只能通过原声sql解决,其实不然,hql语句其实已经比较强大了,基本涵盖了sql的60%的功能。我认为用原生sql的场景应该为以下几点情况:1. 非常复杂sql(嵌套、临时表、混合语句【update包含select嵌套】)2. 某数据库(如oracle)特性函数3. 特殊业务sql,即查询出的结果是某种特殊业务含义,并不是po原创 2013-04-28 23:23:46 · 13899 阅读 · 4 评论 -
日志框架搭建之我见
好的软件、好的系统必然离不开好的日志框架,记录日志的意义是十分重要的,但我们有时候却很迷茫:日志到底该记录些什么,就我现如今的经验来看,具体总结如下:一、应用场景1. 异常这是日志最为基本的功能了。2. 输入参数记录输入参数,不仅有利于寻找异常产生原因,而且也有助于数据分析3. 输出参数有助于开发人员进行连调测试,4. 关键业务运行状态一些重要业务有时候我们必须原创 2013-03-24 18:25:43 · 2704 阅读 · 1 评论 -
hibernate注解(二)
本篇将向大家介绍表关联的注解方式。1. 一对一(One-to-one)使用@OneToOne注解可以建立实体bean之间的一对一的关联.一对一关联有三种情况:一是关联的实体都共享同样的主键,二是其中一个实体通过外键关联到另一个实体的主键(注意要模拟一对一关联必须在外键列上添加唯一约束).三是通过关联表来保存两个实体之间的连接关系(注意要模拟一对一关联必须在每一个外键上添加唯一约束).首原创 2013-03-31 20:54:26 · 19506 阅读 · 4 评论 -
mybatis与hibernate区别
以前没怎么用过mybatis,只知道与hibernate一样是个orm数据库框架。随着使用熟练度的增加,发现它与hibernate区别是非常大的,结合至今为止的经验,总结出以下几点:hibernate是全自动,而mybatis是半自动。hibernate完全可以通过对象关系模型实现对数据库的操作,拥有完整的JavaBean对象与数据库的映射结构来自动生成sql。而myb原创 2013-11-30 12:19:02 · 85946 阅读 · 18 评论 -
Java图片处理开源框架
图片处理是当今软件开发中非常重要的一环,然而处理图片的开源框架却并不多。现金网上流传的Java处理图片的代码,虽然可对图片进行简单处理,但效果并不理想。虽然也有些其他解决方案,但都摆脱不了繁琐,使用起来十分不方便。为了解决这个问题,我也是在网上找了好久,看了很多资料,功夫不负有心人,最终找到了一个处理图片十分棒的开源框架。特此拿出来与大家分享。Thumbnailator 是一个优秀的图片处理的Google开源Java类库。处理效果远比Java API的好。从API提供现有的图像文件和图像对象的类中简原创 2013-12-27 17:55:52 · 57903 阅读 · 11 评论 -
SpringMVC验证框架Validation特殊用法
基本用法不说了,网上例子很多,这里主要介绍下比较特殊情况下使用的方法。1. 分组有的时候,我们对一个实体类需要有多中验证方式,在不同的情况下使用不同验证方式,比如说对于一个实体类来的id来说,保存的时候是不需要的,对于更新时是必须的,可以如下配置:2. 组序列默认情况下,不同组别的约束验证是无序的,然而在某些情况下,约束验证的顺序却很重要,如下面两个例子:(1)第二个组中的约束验证依赖于一个稳定状态来运行,而这个稳定状态是由第一个组来进行验证的。(2)某个组的验证比较耗时,CPU 和内存的使用率相对原创 2014-12-11 13:00:21 · 81190 阅读 · 8 评论 -
浅谈mybatis优缺点
通过上篇介绍mybatis与hibernate区别,我们已经能得出一些mybatis的优缺点,但那只是相对于hibernate的,并不全面,我来继续总结mybatis的优缺点,以便大家对于mybatis的了解能更全面些。但我所说的优缺点,仅是我个人总结并结合使用体验后得出的结果,并不能代表大众想法,因此才以“浅谈”作为文章标题。如果大家的见解与我不同,欢迎积极提出来一块讨论,我也借以弥补自己认识的不足和短见。原创 2013-11-30 14:24:35 · 76850 阅读 · 27 评论 -
SpringMVC验证框架Validation自定义注解实现传递参数到国际化资源文件
关于SpringMVC验证框架Validation的使用方法,不是本篇的重点,可参见博文SpringMVC介绍之Validation在使用Validation时,一定有朋友遇到过一个问题,那就是:无法传递参数到国际化资源文件properties错误描述中。原创 2014-12-04 16:24:40 · 29636 阅读 · 5 评论 -
Eclipse查找替换巧妙技巧用法
用Eclipse时,查找替换,可能是我们经常用的工具,但大多数只是查找替换简单的单词文本(如查找替换warnings),但遇到复杂的情况时,大多数人可能就手工改了。例如:/* */ public class Configuration/* */ {/* */ private List contexts;/* */ private List cl原创 2014-12-18 13:03:06 · 26129 阅读 · 6 评论 -
Java使用HttpURLConnection上传文件
从普通Web页面上传文件很简单,只需要在form标签叫上enctype="multipart/form-data"即可,剩余工作便都交给浏览器去完成数据收集并发送Http请求。但是如果没有页面的话要怎么上传文件呢?由于脱离了浏览器的环境,我们就要自己去完成数据的收集并发送请求,所以就很麻烦了。首先我们来写个JSP页面并看看浏览器发出的Http请求是什么样的原创 2014-07-31 12:51:49 · 65848 阅读 · 13 评论 -
Java如何获取Content-Type的文件类型Mime Type
在Http请求中,有时需要知道Content-Type类型,尤其是上传文件时,更为重要,虽然有些办法可以解决,但都不太准确或者繁琐,索性我发现一个开源的类库能够解决相对完美的解决这个问题,它就是jMimeMagic。原创 2014-07-30 16:50:13 · 32380 阅读 · 3 评论 -
Junit测试用例配置Log4j
用Junit测试非常方便,但有时我们想要看日志来方便排除,使用spring+log4j时,用Junit测试看日志很多人都不太会,即如何将Junit与log4j进行整合。我也是研究了半天,才终于找到了方法,特此拿来与大家分享下。Junit+spring+log4j整合之所以麻烦,是因为spring与log4j的整合,是放在web.xml里的,随tomcat启动后,spring才会加载log4原创 2014-03-31 15:03:24 · 43471 阅读 · 9 评论 -
HttpClient使用详解
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入。一、简介HttpClient是Apache Jakarta Common下的子项目,用来提供高效的原创 2014-02-28 11:04:29 · 886335 阅读 · 92 评论 -
Thumbnailator使用简介
Thumbnailator是一个非常好的图片开源工具,使用起来很方便,不过文档不是非常全面,如果遇到问题的话,有时也是不好解决的,我之前研究过,所以分享下经验,以便大家使用时更顺手些。之前文章中Java图片处理开源框架已说明的功能我这里不再重复了。场景一:图片尺寸不变,修改图片文件类型原创 2014-02-26 16:13:27 · 43646 阅读 · 14 评论 -
Hibernate @OneToOne懒加载实现解决方案
在hibernate注解(三)中,我提高过一对一(@OneToOne)懒加载失效的问题。虽然给出了解决方法,但并没有给出完整的解决方案。今天我专门针对该问题进行讨论。至于懒加载失效的原因,在之前的文章中已经我已经叙述过了,就不再重复了,不明白的可以去看看。原创 2014-02-25 17:16:14 · 20586 阅读 · 1 评论 -
如何正确进行异常处理
你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗? OutputStreamWriter out = ... java.sql.Connection conn = ... try { // ⑸ Statement stat = conn.createStatement(); ResultSet rs = stat.executeQuery( "select uid, name from user")原创 2013-12-27 20:18:02 · 6023 阅读 · 6 评论 -
MyBatis分页返回数据不对问题
使用mybatis的分页时,一定要注意使用方法。当表关系为一对多、多对多时,普通直接分页是有问题的,例如:一个老师有多个学生,假设每个老师有2个学生,一共有15名老师,此时分页查询老师,每页显示10条。然而查询到的结果是:每页老师只有5名,一共有3页。原创 2013-12-27 20:05:31 · 13857 阅读 · 7 评论 -
hibernate注解(一)
在注解大行其道的今天,xml配置方式已经渐渐退化为非主流了,虽然注解有着很多优点,如:简化配置、减少配置文件数量、提高代码可读性,但它仍然有着无法媲美xml的地方。注解虽然配置简单易懂,但是对于复杂点的数据结构,配置起来反而比xml难(例如用xml配置,因为有帮助文件dtd的支持,因此能很好的利用提示来帮助编程,而注解代码提示不会呈现出项目中所有相关的类,如果你在不了解注解每个类的名称和意义的原创 2013-03-30 18:22:09 · 18086 阅读 · 1 评论 -
jdbc简易泛型dao
一、实现思路1、定义3个Annotation(注解):Entity、Id、Column,Entity作用于Type级别,用于标识JavaBean与数据库表名的映射关系。Id作用于Field级别,用于标识JavaBean中ID属性与表中ID字段的映射关系,Column作用于Field级别,用于标识JavaBean中除ID属性外的其它属性与表中字段的映射关系。2、在Dao实现类中,通过反射AP原创 2013-02-26 23:46:20 · 5362 阅读 · 3 评论 -
多思考
4月份,我开始带着七期做项目,七期的能力跟我想象中的还是有些差距,知识的广度上有了,但是在实际项目中应用的广度上却要差很多,最主要的弊端就是体现在“思考”二字上。思考不是说的思想,思想上,作为提高班的学生并不欠缺,而欠缺的是自身对知识的理解和消化。很多东西,其实在学习的过程中都认识到了,可是到实际应用中却怎么也体现不出来,那种“稚嫩”的天真行为很明显。虽然都知道一个项目的实现,不是仅功能实原创 2012-04-30 15:05:26 · 2099 阅读 · 10 评论 -
框架设计之感
这一星期过的可真快啊,一直都在忙于框架设计,现在回想起来,不由得感慨连篇!从未经历过框架设计的我,在体验过框架设计之后,感觉即欣喜又胆怯,欣喜的是自己的想法,可以按照自己多年总结的经验来设计属于自己的框架;胆怯的是不知自己有没有这个实力去把框架搭建好。所以快乐的背后往往要经历困难的考研。那么在这为期近10天的学习与设计的过程中,不仅深化了我以前想法的概念和想法,还进一步提高了我对于框架的理原创 2012-03-20 00:27:15 · 4504 阅读 · 18 评论 -
权限管理二进制算法
权限管理在一个系统中是不可或缺的,一个成熟的系统框架必然含有一个完善的权限管理机制,笔者初次尝试设计权限管理框架,了解到普遍采用二进制算法方式实现的,这里总结一下分享给大家。其实关于二进制算法,说白了就是运用了“按位与”、“按位或”、“按位异或”运算,下面看看这个例子 public void testBinary() { // 判断是否有权限 String binaryVal =原创 2012-03-31 22:10:19 · 6555 阅读 · 7 评论 -
数据库框架设计与实现(一)
一、设计目标1. 对上层提供统一、唯一的接口,不仅支持关系型数据库,还要支持非关系型数据库。2. 以基于ORM思想,泛型为实现的方法进行数据库操作进行封装。3. 实现数据库可配置,可替换。二、框架图框架核心采用了工厂模式+简单工厂模式,本来应该由BaseDao去实现Query来构成工厂模式,但为了最大程度解耦,在创建Query时又采用了简单工厂去关联IQuery接口。Use原创 2012-03-31 13:07:07 · 9470 阅读 · 3 评论 -
录视频的那点感想
就在昨天,漫长的“持久战”终于结束了,“抗战”一个月后圆满(大概吧)结束。当然仗打完了,接下来必然会抒发下战后感言了。以前学习一直是再看别人的视频,虽然心想以后如果当个老师的话,未来的某一天也许就会站在他们的高度上去给学生讲课,但怎么也没想到这一天竟然来的这么快,老实说,现在的自己真谈不上什么有什么高水平,不过是在专研和掌握某种技术上有着自己的一套方法,离讲师的高度还是望尘莫及,距离=天涯海角原创 2012-03-08 13:00:36 · 2600 阅读 · 15 评论 -
使用组件的风险性
Web开发中,我们经常会用到一些开源组件,然而在我们享用组件给我们带来的好处时,往往也隐含着风险。这里不是说要给大家泼凉水,而是了解如何尽量规避风险。风险主要体现在以下几点:1. 使用熟练度不能熟练使用组件,导致使用不当,或遇到问题无法合理解决。2. 兼容性组件不支持某浏览器、框架,或与其他组件有冲突。3. 组件本身bug这个你懂的。平时我们在用组件时,有几点原创 2012-01-05 20:06:20 · 1887 阅读 · 5 评论 -
如何写递归函数
递归函数,是指某一函数内部自己直接或间接地调用自己,即直接递归和间接递归。是语言中比较高级的技术用法。递归函数之所以难,是因为是一种过于抽象化的技术,写代码的时候无法直观的看出逻辑是否符合自己要求,因此想一次性写好递归函数,是一件很困难的事情,必须要程序运作起来执行递归函数的代码才能看出是否正确,而且进行测试的难度也很高,有时的隐含bug可能要软件上线后才会渐渐体现出来。笔者写过几次较为复原创 2012-01-04 17:40:40 · 8445 阅读 · 4 评论 -
将java源码打成jar包
方法一:通过jar命令jar命令的用法:下面是jar命令的帮助说明:用法:jar {ctxui}[vfm0Me] [jar-file] [manifest-file] [entry-point] [-C dir] files ...选项包括: -c 创建新的归档文件 -t 列出归档目录 -x 解压缩已归档的指定(或所有)文件 -u 更转载 2012-01-04 19:11:48 · 76917 阅读 · 6 评论 -
代码也要“人生规划”
写代码,是程序员的天职,一个程序员是好是坏,一看写的代码便知。初级程序员经常容易犯的一个错误就是任务刚下发,便急急忙忙开始写代码,没有经过仔细的思考,这在企业级项目开发中,是一个非常忌讳的错误。没有经过缜密思考的代码,写出来后,即便最后能达到实现功能的目的,但很可能会留下隐患,然后我们就开始了漫长的“打补丁”的路程。但是“打补丁”终究只是临时补救的办法,总是会给整体的“美观”“效能”带来影响,原创 2012-01-04 10:34:15 · 2121 阅读 · 6 评论 -
网站天气预报如何实现
现在各网站主页上经常会有天气预报的功能,那么他们是怎么做到的呢?其实这挺简单的,现在气象台、百度、谷歌、有道等都为我们提供了很好的服务支持,我们直接调用即可。现在网站提供服务的方式主要有两种:1. 插件这种方式比较简单,大家在网上搜“免费天气预报”即可找到相关网站提供的免费天气预报插件,直接拷贝自动生成的代码即可。缺点是不是特别灵活,也仅仅限于网站提供的几种样式,自己无法自定义样式,原创 2012-01-03 17:52:51 · 3711 阅读 · 2 评论