JAVA
文章平均质量分 80
「已注销」
这个作者很懒,什么都没留下…
展开
-
深入理解JVM内幕:从基本结构到Java 7新特性
每个Java开发者都知道Java字节码是执行在JRE(Java Runtime Environment Java运行时环境)上的。JRE中最重要的部分是Java虚拟机(JVM),JVM负责分析和执行Java字节码。Java开发人员并不需要去关心JVM是如何运行的。在没有深入理解JVM的情况下,许多开发者已经开发出了非常多的优秀的应用以及Java类库。不过,如果你了解JVM的话,你会更加了解Java转载 2013-04-11 08:38:18 · 813 阅读 · 0 评论 -
Eclipse安装Maven插件后提示JRE问题
Eclipse安装Maven插件后,Eclipse启动问题:Maven Integration for Eclipse JDK Warning。解决方法:1. 设置Eclipse使用的JRE为本机安装的JDK目录: 1.1 在eclipse.ini中添加两行 -vm C:\Program Files\Java\jdk1.6.0_10\bin\j转载 2013-10-31 09:57:52 · 1579 阅读 · 0 评论 -
设计模式初探-Prototype模式
Prototype模式,也称原型模式,属于对象创建型模式。通过使用原型实例指定创建对象的种类,然后拷贝这些原型来创建新的对象。Prototype模式允许一个对象再创建另一个可定制的对象,即使不知道任何创建的细节,就像JavaScript中通过prototype原型公用基本的方法或属性,然后在克隆后的原型基础上添加自己的定制。一、使用场景1、当一个系统应该独立于它的产品创建,构成和表示时,这原创 2013-12-31 00:51:04 · 1820 阅读 · 2 评论 -
Bug解决之道
作为程序员,一天不改几个bug就浑身不舒服。随着改的次数多了,手法渐渐高明了起来,就好比修炼,刚开始一滴一点的没有什么变化,等你觉察的时候已经上升了一个层次。总结每次修改Bug时遇到的问题,解决思路,最终形成自己的Bug解决之道。如何解决Bug?一、对问题进行明确的描述——俗话说知己知彼,方能百战不殆。通常,bug产生的场景很复杂,比如用户的操作系统,浏览器,网络环境,服务器的配置原创 2013-12-21 19:59:11 · 1364 阅读 · 0 评论 -
SpringSecurity2 session超时跳转登陆界面
项目中权限系统使用的是Spring Security2.0,由于对session过期没有过多的支持(Spring Security3.0支持session超时的配置设置),所以只能自己实现。简单的说,也就是通过过滤器拦截请求,判断session是否过期,如果过期跳转登陆界面,否则放行。具体实现如下:1、web.xml中添加过滤器配置 SessionTimeoutFilter c原创 2014-01-08 16:17:54 · 5451 阅读 · 0 评论 -
设计模式初探-组合模式
组合模式,英文为COMPOSITE模式,属于对象结构型模式。用于组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性。通常树形结构,比如公司组织结构,文件目录,系统菜单,xml文件解析等都可以采用组合模式实现。一、适用场景1、在具有整体和部分的层次结构中,希望通过一种方式忽略整体与部分的差异,客户端可以一致原创 2014-01-10 16:22:54 · 1394 阅读 · 0 评论 -
设计模式初探-外观模式
外观模式(FACADE),也叫门面模式,属于对象结构型模式,通过为子系统中的一组接口提供一个一致的界面(外观对象)来简化客户端与子系统之间的交互。Facade模式定义了一个高层接口,这个接口为子系统中较一般的设施提供一个单一而简单的界面,从而使子系统间的通信和相互依赖关系达到最小,并且隔离了客户类和子系统类,降低了两者的耦合度。如下图所示:一、使用场景 1、 当要为访问一系列复原创 2014-01-12 23:25:22 · 1452 阅读 · 0 评论 -
设计模式初探-享元模式
享元模式(FLYWEIGHT),通过运用共享技术有效地支持大量细粒度的对象,由于处理的是细粒度的对象,所以也称为轻量级模式,属于对象结构型模式。享元模式的共享技术是通过区分对象的内部状态和外部状态来实现的。内部状态是对象的内在特征,不会随环境的变化而变化,所以能够共享。外部状态是对象的外在表现,随环境的改变而改变,不可以共享。对于我们经常查看的文章,参考的资料,组成它们的字母或汉字代表的意义是不变原创 2014-01-15 00:30:13 · 1859 阅读 · 0 评论 -
设计模式初探-迭代器模式
迭代器模式(ITERATOR),又称游标(Cursor),提供了一种方法,用于顺序访问一个聚合对象中的各个元素,而不需暴露该对象的内部表示。迭代器模式通过将对聚合对象(通常为列表)的访问和遍历从聚合对象中分离出来并放入一个迭代器对象中,迭代器对象知道如何遍历列表,这样不仅可以简化聚合对象的实现(将遍历操作交给迭代器负责,自己只负责保存),还可以以不同的方式遍历列表。一、使用场景1、访问一个原创 2014-01-25 13:58:39 · 1750 阅读 · 0 评论 -
redis学习笔记二之数据类型
转自:http://www.cnblogs.com/xhan/archive/2011/02/02/1948891.html本文介绍下redis支持的各种数据类型包括string,list ,set ,sorted set 和hash 1. keysredis本质上一个key-value db,所以我们首先来看看他的key.首先key也是字符串类型,但是key中转载 2013-08-25 18:57:12 · 1051 阅读 · 0 评论 -
Java 缓存介绍:Ehcache、Hazelcast、Infinispan
对于这样的一个问题:最好的 Java 缓存解决方案是哪个? 很难有一个简单的答案,这依赖于不同的应用场景:是否只需要一个本地的缓存,或者是需要在应用集群中使用的缓存分区在数据一致性和延迟方面的权衡是不是在固定的硬件架构上的静态发布,或者是不断增长的应用服务器数量下面我们会介绍 Java 应用服务器方面的一些缓存解决方案,包括 Ehcache、Hazelcast 和 Infinisp转载 2013-08-25 19:45:27 · 5586 阅读 · 0 评论 -
Oracle CASE WHEN 用法介绍
Oracle CASE WHEN 用法介绍1. CASE WHEN 表达式有两种形式--简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASEWHEN sex = '1' THEN '男' WHEN sex = '2' THEN '转载 2013-07-19 17:38:43 · 1091 阅读 · 0 评论 -
redis学习笔记三之排序
转自:http://www.cnblogs.com/xhan/archive/2011/02/03/1948970.html在了解完各种redis类型后,这次介绍下redis排序命令.redis支持对list,set和sorted set元素的排序。排序命令是sort 完整的命令格式如下:SORT key [BY pattern] [LIMIT start count] [GET pa转载 2013-08-25 19:02:02 · 1114 阅读 · 0 评论 -
redis学习笔记四之事务
转自:http://www.cnblogs.com/xhan/archive/2011/02/04/1949151.htmlredis对事务的支持目前还比较简单。redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。 由于redis是单线程来处理所有client的请求的所以做到这点是很容易的。一般情况下redis在接受到一个client发转载 2013-08-25 19:03:00 · 928 阅读 · 0 评论 -
redis学习笔记六之发布订阅
转自:http://www.cnblogs.com/xhan/archive/2011/02/06/1949473.html 发布订阅(pub/sub)是一种消息通信模式,主要的目的是解耦消息发布者和消息订阅者之间的耦合,这点和设计模式中的观察者模式比较相似。pub /sub不仅仅解决发布者和订阅者直接代码级别耦合也解决两者在物理部署上的耦合。redis作为一个pub/sub server转载 2013-08-25 19:09:58 · 1100 阅读 · 0 评论 -
使用BeanUtils来进行对象的组装
对于BeanUtils这个工具,我也用的不是很多,但是还是有点心得和大家分享下,呵呵~~用过spring的都知道spring的MVC框架中有一个BaseCommandController对象,利用这个对象我们就可以很方便的将从客户端传递过来的参数封装到一个JavaBean对象中去,而不需要我们request.getParameter("name");bean.setName(name);了,从而也转载 2013-08-25 16:36:55 · 1743 阅读 · 0 评论 -
redis学习笔记一之环境搭建
转自:http://www.cnblogs.com/xhan/archive/2011/02/01/1948751.html1.简介 redis是一个开源的key-value数据库。它又经常被认为是一个数据结构服务器。因为它的value不仅包括基本的string类型还有 list,set ,sorted set和hash类型。当然这些类型的元素也都是string类型。也就是说li转载 2013-08-25 18:51:30 · 980 阅读 · 0 评论 -
redis学习笔记五之pipeline
转自:http://www.cnblogs.com/xhan/archive/2011/02/05/1949276.htmlredis是一个cs模式的tcp server,使用和http类似的请求响应协议。一个client可以通过一个socket连接发起多个请求命令。每个请求命令发出后client通常 会阻塞并等待redis服务处理,redis处理完后请求命令后会将结果通过响应报文返回给c转载 2013-08-25 19:06:56 · 1494 阅读 · 0 评论 -
redis学习笔记八之主从复制
转自:http://www.cnblogs.com/xhan/archive/2011/02/07/1949660.html redis主从复制配置和使用都非常简单。通过主从复制可以允许多个slave server拥有和master server相同的数据库副本。下面是关于redis主从复制的一些特点1.master可以有多个slave2.除了多个slave连到相同的maste转载 2013-08-25 19:16:12 · 914 阅读 · 0 评论 -
redis学习笔记九之虚拟内存
转自:http://www.cnblogs.com/xhan/archive/2011/02/07/1949717.html首先说明下redis的虚拟内存与os的虚拟内存不是一码事,但是思路和目的都是相同的。就是暂时把不经常访问的数据从内存交换到磁盘中,从而腾出宝贵的 内存空间用于其他需要访问的数据。尤其是对于redis这样的内存数据库,内存总是不够用的。除了可以将数据分割到多个redis转载 2013-08-25 19:18:21 · 850 阅读 · 0 评论 -
设计模式初探-中介者模式
中介者模式(MEDIATOR),又称调停者模式,通过使用一个中介者对象来封装一系列的对象交互,属于对象行为型模式。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。现实生活中,到处充斥着中介者模式的身影。上到庄严的法院,下到为程序员带来福音的婚姻介绍所或交友平台,还有可恶的房产中介,都是中介者模式的体现。比如,你参加一个相亲活动,20多对男女如饥似渴地寻找着自原创 2014-01-25 22:56:53 · 1719 阅读 · 0 评论 -
设计模式初探-解释器模式
解释器模式(INTERPRETER),通过面向对象的方式构造语言解释器,并使用该解释器按照一定的文法解释语言中的句子,属于类行为模式。记得大学时候参加过机器人足球比赛,通过面板输入指令"up move 10 and left run 8",足球机器人就会执行相应的动作。将这些指令组合就能完成高难度的射门,躲避,可谓智能也!下面将通过机器人指令解释来阐述解释器模式的强大。一、使用场景1、当有原创 2014-01-25 01:29:08 · 3297 阅读 · 3 评论 -
设计模式初探-代理模式
代理模式(PROXY),别名Surrogate(代理),通过为其他对象提供一种代理以控制对这个对象的访问,属于对象结构型模式。软件开发中,经常会出现特殊对象,创建这些对象时开销很大,比如文档中的图片,数据库连接等,我们应该根据需要对这些对象进行创建,当图片可见时创建图片对象,当数据库连接真的需要执行时创建连接。通过创建代理,我们可以控制对象的创建,访问时机。创建图片代理,将其作为占位符插入到文档中原创 2014-01-18 02:52:21 · 1984 阅读 · 0 评论 -
GitHub导入Maven项目到Eclipse
对于Java项目,在github上看到的大多数都是基于maven构建的,现在很多也开始转用Gradle,比如Hibernate和Spring。最近想研究一些开源项目,不过clone后导入eclipse,发现源码包是以普通文件显示的,这样类之间不能直接跳转,看起源码来非常费力,如下图所示:出现上述情况的原因是,GitHub上Maven项目一般为了结构清晰且不依赖具体的IDE而没有将本地配原创 2014-02-20 12:48:48 · 14320 阅读 · 5 评论 -
Spring4.0实用教程-4.x初体验
1、配置Spring Maven仓库。发布版: io.spring.repo.maven.release http://repo.spring.io/release/ false 里程碑版: io.spring.repo.maven.milestone http://repo.原创 2014-02-23 00:38:04 · 11190 阅读 · 2 评论 -
设计模式初探-单例模式
Singleton模式,又称单例模式,它保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式在平常开发中经常用到,比如系统的全局配置属性,常用的工具类或工厂方法都可以实现为一个单例。单例模式概念很简单,实现起来也不麻烦,但一不小心还是有可能出错的。一、使用场景只要是要求实例唯一的都可以使用单例模式来实现,特别是耗资源的实例!二、UML图三、Java实现1、懒汉原创 2014-01-03 00:00:37 · 1591 阅读 · 0 评论 -
设计模式初探-工厂方法模式
工厂方法模式,Factory Method,属于对象创建型模式,通过定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。工厂方法通过抽象的接口,将创建对象的行为交给具体的子类。一、使用场景1、当一个类不知道它所必须创建的对象的类的时候,由于不知道要创建对象的类,所以不能直接实例化类,只能交给其他知道该类的类去做,比如某接口的具体实原创 2013-12-29 16:49:08 · 1697 阅读 · 3 评论 -
设计模式初探-装饰模式
装饰模式(DECORATOR模式),又称包装器Wrapper,属于对象结构型模式,用于动态地给一个对象添加一些额外的职责。就增加功能而言,Decorator模式比生成子类更为灵活。它通过使用对象之间的关联关系取代类之间的继承关系,引入的装饰类既可以调用被装饰类的方法,还可以添加新的业务逻辑,以达到扩充被装饰类的功能。装饰模式和适配器模式虽然都称为包装器,但两者还是不同的。装饰模式只是在原有对象的基原创 2014-01-12 04:00:28 · 1655 阅读 · 0 评论 -
设计模式初探-适配器模式
适配器模式,又称包装器Wrapper,用于将一个类的接口转换成客户希望的另外的一个接口,从而解决因接口不兼容导致类之间不能工作的问题。Adapter模式是不兼容结构的协调者,犹如法官大人,给人们带来希望。生活中处处可见适配器模式的踪影,电源适配器,USB适配器,生活因为适配而美好!一、使用场景1、系统中已存在类的接口不满足现有需求,且一般无法改变现有类的接口,比如该类是第三方提供,无法修改原创 2014-01-04 02:57:38 · 1965 阅读 · 0 评论 -
设计模式初探-Builder模式
Builder模式,又称生成器或构建者模式,属于对象创建型模式,侧重于一步一步的构建复杂对象,只有在构建完成后才会返回生成的对象。Builder模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。一、使用场景1、当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时,比如买一台电脑,我不需要知道电脑CPU,主板,机箱是如何生产的,也不需要知道它们是如何原创 2013-12-29 00:26:22 · 1834 阅读 · 1 评论 -
设计模式初探-抽象工厂模式
抽象工厂模式,Abstract Factory,按GOF的划分属于对象创建型模式,用于提供一个创建一系列相关或相互依赖对象的接口,而不用指定它们具体实现的类,很好的实践了“面向接口编程”的准则。一、使用场景:1、一个系统要独立于它的产品的创建,组合和表示,比如跨操作系统的文本编辑器,文本编辑器操作的应该是编辑器视图组件独立于操作系统的抽象,而不是具体于某操作系统的实现。2、一个系统要由原创 2013-12-28 17:21:56 · 1508 阅读 · 0 评论 -
玩转java(1)— 泛型
一、Java泛型的由来在泛型的概念提出来之前,一般的类和方法只能使用具体的类型:要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的代码(泛化),这种刻板的限制对代码的束缚就会很大。对于经常使用未经泛型改造的集合类的程序员来说,可以深深体会到这种痛苦。在泛型之前,多态可以算是一种泛化机制,不过由于类继承的限制,比如final类型不能扩展,java的单根继承等,也使多态这种泛化手法受原创 2014-03-29 12:02:46 · 3139 阅读 · 1 评论 -
玩转java(2)— 泛型type体系与反射
一、Type类型Type是Java编程语言中所有类型的普通的父接口。这些类型包括原生类型(raw types),参数化类型(parameterized types),数组类型(array types),类型变量(type variables)和 原始类型(primitive types)。我们一般不直接操作Type类型,但了解一下Type类型的层次结构还是有必要的。1、Type层次原创 2014-04-01 23:04:31 · 11745 阅读 · 0 评论 -
设计模式初探-访问者模式
访问者模式(VISITOR),提供一个作用于某对象结构中各元素的操作表示,并使我们可以在不改变各元素的类的前提下定义作用于这些元素的新操作,属于对象行为型模式。使用Visitor模式,必须定义两个类层次:一个对应于接受操作的元素(Element层次),另一个对应于定义对元素的操作的访问者(Visitor层次)。给访问者类层次增加一个新的子类即可创建一个新的操作,但如果新增一个接受操作的元素,则需要原创 2014-02-17 20:43:58 · 1469 阅读 · 0 评论 -
设计模式初探-模板方法模式
模板方法模式(TEMPLATE METHOD),用于定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤,属于类行为型模式。模板方法模式是结构最简单的行为型设计模式,在其结构中只存在父类与子类之间的继承关系。通过使用模板方法模式,可以将一些复杂流程的实现步骤封装在一系列基本方法中,在抽象父类中提供一个称之为原创 2014-02-16 15:40:46 · 2249 阅读 · 0 评论 -
在ServletContextListener实现类中获取spring注入对象
由于项目需要,需在ServletContextListener监听接口实现类中调用spring注入的对象,以获取系统初始化参数.代码如下: import java.io.IOException;import java.util.List;import javax.servlet.ServletContextEvent;import javax.servlet.ServletC原创 2013-05-30 16:08:41 · 10152 阅读 · 0 评论 -
设计模式初探-责任链模式
责任链模式(CHAIN OF RESPONSIBILITY),通过将多个对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它,属于对象行为型模式。责任链模式使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。JavaScript的事件处理,工作流系统中公文的多级审批,Web开发中的过滤器和拦截器都可以采用责任链模式实现。一、使用场景1、有多个对象可以处理同一个请求原创 2014-01-18 21:50:07 · 2205 阅读 · 0 评论 -
设计模式初探-命令模式
命令模式(COMMAND),又称动作(Action),事务(Transaction),通过将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,实现对请求排队或记录请求日志,以及支持可撤销的操作。命令模式可以将请求发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。一、使用场景1、需要抽象出待执行的动作以参数原创 2014-01-19 16:17:11 · 1767 阅读 · 0 评论 -
设计模式初探-桥接模式
桥接(Bridge)模式,又称Handle/Body模式,属于对象结构型模式。用于将抽象部分与它的实现部分分离,使它们都可以独立地变化。比如常见的电脑窗口界面,不同的操作系统其窗口界面绘制的原理肯定不一样。这里,窗口界面就相当于抽象部分(Abstraction),而窗口界面本身也可以随着功能的不同而进行扩充,扩充的窗口就是抽象窗口的扩充抽象类(RefinedAbstraction),这些抽象需要具原创 2014-01-06 23:55:58 · 1612 阅读 · 0 评论 -
使用Maven运行Java main的3种方式
http://www.vineetmanohar.com/2009/11/3-ways-to-run-java-main-from-maven/翻译 2014-02-24 23:12:09 · 73915 阅读 · 4 评论