- 博客(48)
- 资源 (1)
- 收藏
- 关注
原创 JVM内存模型与性能调优
Java是一门面向对象的编程语言,用对象来定义,描述和操作一切。对象数据存储在计算机内存中,Java的内存模型到底是个什么样子,让Java引 为自豪的垃圾回收器又是如何工作的,如何针对JVM的内存管理进行性能调优,笔者将通过本文带您揭开这些Java世界深处不为人知的内幕。 文章导航堆内存(Heap)垃圾回收器(GC)垃圾回收策略堆栈内存(Stack)JVM如何使用堆内存堆内
2012-07-12 16:22:14 882
原创 使用Spring MVC构建REST风格WEB应用
对于运行在网络上的MIS系统而言,处理数据的是整个系统的主要任务,翻开程序我们可以看到,80%以上的代码都在处理数据的CRUD操作。采用一种什么样的框架结构,能够使得处理数据的操作变得简单且易理解,这是大部分开发者尤其是架构设计者一直以来思考的一个问题。 REST(Representational State Transfer)是一种编程风格,特别是针对网络应用的设计和开发,采用RE
2012-08-11 15:53:06 1062
使用Spring MVC构建REST风格WEB应用
对于运行在网络上的MIS系统而言,处理数据的是整个系统的主要任务,翻开程序我们可以看到,80%以上的代码都在处理数据的CRUD操作。采用一种什么样的框架结构,能够使得处理数据的操作变得简单且易理解,这是大部分开发者尤其是架构设计者一直以来思考的一个问题。 REST(Representational State Transfer)是一种编程风格,特别是针对网络应用的设...
2012-08-11 15:39:28 127
使用JdbcTemplate调用数据库存储过程
使用Jdbc调用存储过程相信大多数朋友在开发过程中都会用到,本例使用一个工具类将调用存储过程的方法封装起来,隐藏了大部分的处理逻辑,使用起来还是很方便的。 package com.coolfancy;import java.math.BigDecimal;import java.sql.CallableStatement;import java.sql.Conn...
2012-08-08 19:27:45 303
原创 使用JdbcTemplate调用数据库存储过程
使用Jdbc调用存储过程相信大多数朋友在开发过程中都会用到,本例使用一个工具类将调用存储过程的方法封装起来,隐藏了大部分的处理逻辑,使用起来还是很方便的。package com.coolfancy;import java.math.BigDecimal;import java.sql.CallableStatement;import java.sql.Connection;
2012-08-08 19:25:34 1049
Spring MVC核心功能探秘
最近项目越来越多的使用Spring MVC,抽时间研究了一下Spring MVC的源码,基本理清了Spring MVC的整个处理流程,随着对Spring源码的深入学习,越来越感叹整个Spring设计思想的博大精深。 要掌握Spring MVC的核心处理流程,必须先掌握Spring MVC的几个核心组件,本文将对针对这些核心组件作详细的描述。 阅读...
2012-08-03 17:08:20 121
原创 Spring MVC核心功能探秘
最近项目越来越多的使用Spring MVC,抽时间研究了一下Spring MVC的源码,基本理清了Spring MVC的整个处理流程,随着对Spring源码的深入学习,越来越感叹整个Spring设计思想的博大精深。 要掌握Spring MVC的核心处理流程,必须先掌握Spring MVC的几个核心组件,本文将对针对这些核心组件作详细的描述。 阅读全文(很长)
2012-08-03 17:05:09 853
Spring Security oAuth学习之Hello World
OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。 OAUTH有1.0和2.0两个版本,2.0版本在1.0版本的基础上做了很多调整和改进,但目前尚不完善。 ...
2012-08-01 08:53:08 87
原创 Spring Security oAuth学习之Hello World
OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。 OAUTH有1.0和2.0两个版本,2.0版本在1.0版本的基础上做了很多调整和改进,但目前尚不完善。 Spring
2012-08-01 08:50:47 2238 1
Hibernate Validator自定义校验规则
无聊翻译了一篇Hibernate Validation官方自定义校验类的E文,感兴趣的朋友可以参考一下: 阅读全文 更多精彩原创文章请关注笔者的原创博客:http://www.coolfancy.com ...
2012-07-27 09:26:40 129
翻译 Hibernate Validator自定义校验规则
无聊翻译了一篇Hibernate Validation官方自定义校验类的E文,感兴趣的朋友可以参考一下: 阅读全文 更多精彩原创文章请关注笔者的原创博客:http://www.coolfancy.com
2012-07-27 09:25:44 1743
原创 Weblogic集群判断当前服务器名称
在Weblogic集群环境下,请求被代理服务器动态的分配到多个节点上,如何在程序中判断当前提供服务的是哪个节点呢? 笔者试过取当前服务器IP地址的方法,但如果集群是部署在同一台机器上,那这个方法无效。也试过取服务器端口号,但是由于请求都是从代理服务器转发过来的,所以通过Request对象取得的端口号实际上是代理服务器的端口号。也试过在程序中加入不同的配置文件来解决,但这样作增加了部署
2012-07-23 17:10:39 1287
Weblogic集群判断当前服务器名称
在Weblogic集群环境下,请求被代理服务器动态的分配到多个节点上,如何在程序中判断当前提供服务的是哪个节点呢? 笔者试过取当前服务器IP地址的方法,但如果集群是部署在同一台机器上,那这个方法无效。也试过取服务器端口号,但是由于请求都是从代理服务器转发过来的,所以通过Request对象取得的端口号实际上是代理服务器的端口号。也试过在程序中加入不同的配置文件来解决,...
2012-07-23 17:08:28 303
原创 使用Hibernate元数据构建表单校验功能
表单数据的检验是应用程序必不可少的组成部分,通常来讲,表单数据的校验分为前台校验和后台校验两部分,前台校验使用JS脚本在提交数据前进行校验,后台校验在数据提交后进行校验。 出于安全性的考虑,后台校验是必不可少的,当因为某种原因前台校验失效的情况下,由于有后台校验的存在,仍能保证提交数据的合法性和有效性。 后台校验有许多种方法,有基于配置文件的校验,有基于注释的校验等等,
2012-07-18 11:08:50 1980
使用Hibernate元数据构建表单校验功能
表单数据的检验是应用程序必不可少的组成部分,通常来讲,表单数据的校验分为前台校验和后台校验两部分,前台校验使用JS脚本在提交数据前进行校验,后台校验在数据提交后进行校验。 出于安全性的考虑,后台校验是必不可少的,当因为某种原因前台校验失效的情况下,由于有后台校验的存在,仍能保证提交数据的合法性和有效性。 后台校验有许多种方法,有基于配置文件的校验,有基于注释...
2012-07-18 11:08:13 63
JAVA设计模式:建造者(Builder)
创建对象的方法很多,常见的有构造函数,静态工厂方法,工厂方法等。以上三种方法不适合创建需要提供多个参数的对象,而其中某些参数是可选的场景。读者可能会想到通过空的构造方法先构建一个对象的雏形,然后调用getter和setter方法向对象内部注入状态数据。这种方式看似很不错,但还是可能存在对象的状态数据未完全写入前对象已被使用的风险。 建造者模式将产品的内部表象和产品的...
2012-07-16 16:11:06 108
原创 JAVA设计模式:建造者(Builder)
创建对象的方法很多,常见的有构造函数,静态工厂方法,工厂方法等。以上三种方法不适合创建需要提供多个参数的对象,而其中某些参数是可选的场景。读者可能会想到通过空的构造方法先构建一个对象的雏形,然后调用getter和setter方法向对象内部注入状态数据。这种方式看似很不错,但还是可能存在对象的状态数据未完全写入前对象已被使用的风险。 建造者模式将产品的内部表象和产品的生成过程分割开来,
2012-07-16 16:10:44 539
原创 JAVA设计模式:代理(Proxy)
代理模式对其他对象提供一种代理以控制对这个对象的访问。 在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。这些额外的操作通常需要与实际对象进行通信。 笔者总结代理模式的两个核心内容:一是隔离访问者对被访问对象之
2012-07-16 12:11:32 911
JAVA设计模式:代理(Proxy)
代理模式对其他对象提供一种代理以控制对这个对象的访问。 在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。这些额外的操作通常需要与实际对象进行通信。 笔者总结代理模式的两个核心内...
2012-07-16 10:56:39 68
JAVA设计模式:享元(Flyweight)
享元模式以共享的方式高效地支持大量的细粒度对象。 在面向对象的程序设计语言看来,一切事务都被描述成对象(Object)。对象拥有状态(属性)和行为(方法),我们将具有相同行为的对象抽象为类(Class),类可以被看作只保留行为的对象模板,类可以在运行时被重新赋予状态数据从而形成了对象。 在运行时,对象占用一定的内存空间用来存储状态数据...
2012-07-13 15:51:39 62
原创 JAVA设计模式:享元(Flyweight)
享元模式以共享的方式高效地支持大量的细粒度对象。 在面向对象的程序设计语言看来,一切事务都被描述成对象(Object)。对象拥有状态(属性)和行为(方法),我们将具有相同行为的对象抽象为类(Class),类可以被看作只保留行为的对象模板,类可以在运行时被重新赋予状态数据从而形成了对象。 在运行时,对象占用一定的内存空间用来存储状态数据。如果不作特殊的处理,尽管是
2012-07-13 15:40:20 1710
原创 JAVA设计模式:单例(Singleton)
单例(Singleton)设计模式保证每个类只有一个实例,并为这个实例提供一个全局的访问点。 与工具类中静态成员不同,单例类一般用来保存应用程序的状态数据,这些数据在应用程序的各个部分都可能被访问或修改。 单例模式的几种实现方式。public class Singleton{ private static Singleton instance = new S
2012-07-13 12:57:15 711
JAVA设计模式:外观(Facade)
外观模式为子系统中的一组接口提供一个一致的界面。Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 网上有许多安保系统应用外观模式的例子,在这里我举一个客服中心的例子,客户投诉一般会经过以下一系列操作:登记投诉信息、分配受理部门、提交投诉信息。 没有客服MM的时候,客户投诉需要自己操作登记信息、分配部门并且提交投诉等,我相信...
2012-07-13 12:44:27 56
原创 JAVA设计模式:外观(Facade)
外观模式为子系统中的一组接口提供一个一致的界面。Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 网上有许多安保系统应用外观模式的例子,在这里我举一个客服中心的例子,客户投诉一般会经过以下一系列操作:登记投诉信息、分配受理部门、提交投诉信息。 没有客服MM的时候,客户投诉需要自己操作登记信息、分配部门并且提交投诉等,我相信你一定会很快疯掉。
2012-07-13 12:43:33 779
JAVA设计模式:装饰器(Decorator)
装饰器:动态地给一个对象添加一些额外的职责。 举个常见的例子,咖啡店主要的任务是提供咖啡,但为了迎合客户的口味,我们可以在提供咖啡时加点糖或其它的调味品,在这里咖啡是被装饰的对象,咖啡店扮演了装饰器的角色,而那些糖呀什么的调味品就是装饰的内容。 正如上面提到的咖啡店的例子,装饰器模式强调装饰器本身不能破坏被装饰者所提供的服务。这里可以理解为两层含...
2012-07-13 10:47:31 68
原创 JAVA设计模式:装饰器(Decorator)
装饰器:动态地给一个对象添加一些额外的职责。 举个常见的例子,咖啡店主要的任务是提供咖啡,但为了迎合客户的口味,我们可以在提供咖啡时加点糖或其它的调味品,在这里咖啡是被装饰的对象,咖啡店扮演了装饰器的角色,而那些糖呀什么的调味品就是装饰的内容。 正如上面提到的咖啡店的例子,装饰器模式强调装饰器本身不能破坏被装饰者所提供的服务。这里可以理解为两层含义:一是被装饰者的服务必
2012-07-13 10:47:30 525
JAVA设计模式:单例(Singleton)
单例(Singleton)设计模式保证每个类只有一个实例,并为这个实例提供一个全局的访问点。 与工具类中的静态成员不同,单例类一般用来保存应用程序的状态数据,这些数据在应用程序的各个部分都可能被访问或修改。 单例模式的几种实现方式。public class Singleton{ private static Singleton instance...
2012-07-12 16:51:48 49
原创 JAVA设计模式:桥接(Bridge)
桥接:将抽象部分和实现部分分离,使它们都可以独立的变化。 桥接模式在整个Gof体系中算是一个比较抽象且难以理解的设计模式。作为结构类模式中重要的一环,桥接模式在某些层面成功地解决了“类爆炸”的问题,而这一点,尤其对初级开发者而言,正是经常遇到且难以解决的难题。 关于“类爆炸”(有些文章也称为“类膨胀”),是一个一直困扰广大开发者的难题。现实世界中总是充满太多可变因素,如
2012-07-12 16:34:37 2253
原创 JAVA设计模式:适配器(Adapter)
适配器把一个类的接口变换成客户端所期待的另外一种接口,使得原本由于接口不兼容而不能再一起工作的那些类可以一起工作。 适配器模式是一个比较简单且容易理解的模式,举个例子来说,我家老房子旧的电源插座都是两口的,现在我买了一台新的电视机,电源插头是三口的,很明显,不作处理的话这两样东西是没法放在一起使用的。好在我买到了一个两口转三口的电源转换器,有了这个东西,问题很容易的解决了。
2012-07-12 16:33:18 809
原创 JAVA设计模式:组合(Composite)
组合模式意在组成任意复杂度的"整体-部分"组件层次结构,同时将单个组件或复合组件视为统一的接口。 我们可以将组合理解为两个层面的意思,一个是按“整体-部分”的方式一个将复杂过程组成树型结构,另一个层面则是强调整个树的执行要有统一的接口,可以被递归的调用。 光看定义的话一定感觉太抽象了,网上的文章都是抄来抄去那几篇,内容很生硬,我来举个通俗点的例子解释一下大家就明白了。
2012-07-12 16:32:36 543
原创 在Android平台上实现条型码扫描与识别
在Android平台上实现条型码的识别需要使用zxing条码识别组件,需要将下载的源码包解压后直接包含到Android工程中,下载地址: Zxing:http://code.google.com/p/zxing/downloads/list 整体思路是先调用Android的摄像头的拍照功能抓取条型码的照片,然后将照片处理后交由zxing完成识别。 阅读全文
2012-07-12 16:30:41 752
原创 调用Android位置服务获取当前坐标
参考代码如下: 注意:如果在系统选项中未打开GPS,Android为自动切换为基站定位,基站定位需要查询互联网,在网络不可用的情况下,取得的坐标永远是上一次位置服务可用时取得的最后一次有效坐标。 阅读全文 更多精彩原创文章请关注笔者的原创博客:http://www.coolfancy.com
2012-07-12 16:29:59 897
原创 从零开始打造Android手机摄像头拍照程序
一直想找一款操作方便,无声的拍照软件,在网上留意了很久一直没有找到称心的,求人不如求已,索性自己动手,打创一款适合自己使用的拍照软件。 对这款拍照软件的基本要求是:操作要方便,隐蔽性要好(小小邪恶一下);一键操作,拍照时要无声音;直接存储成文件,方便其它程序调用。 针对这些要求,思前想后,决定使用Andoird AppWidget(即桌面
2012-07-12 16:29:12 879
原创 通过网络手段对互联网应用进行性能优化
众所周知,网络优化是互联网应用程序性能调优手段中必不可或缺的组成部分,通常来讲,互联网应用的网络优化手段分为几下几个方面: 一、减少HTTP请求数 无数不争的实例证明,减少应用程序的HTTP请求数是最直接,最明显也是效果最佳的互联网应用程序性能优化手段(永远没有之一)。为了减少HTTP的请求数量,笔者认为至少应当从以下几个方面着手考虑。 为了性能,果断抛弃
2012-07-12 16:28:08 573
原创 使用Servlet分段输出构建BigPipe服务端
BigPipe是一个重新设计的基础动态网页服务体系。大体思路是,分解网页成叫做Pagelets的小块,然后通过Web服务器和浏览器建立管道并管理他们在不同阶段的运行。这是类似于大多数现代微处理器的流水线执行过程:多重指令管线通过不同的处理器执行单元,以达到性能的最佳。 使用JAVA实现BigPipe服务端的例子在网上很难寻觅,笔者经过多次尝试,在Servlet3.0和Servlet2
2012-07-12 16:26:01 1313
原创 实现跨事务的Hibernate懒加载
最近使用Eclipse插件制作一个项目管理工具,由于涉及的数据结构比较复杂,简单的展示一棵导航树就涉及到至少20个表关联查询(其中包含大量的自关联及循环关联),刚开始数据量较小时尚可应付,当运行一段时间后,数据量达到万级以后,性能就相当差了,仔细看了一下,由Hibernate翻译过来的一条SQL就显示了十屏以上,汗一个先,所以下定决心优化一下。 首先想到是数据库层面的优化,由于数据结
2012-07-12 16:17:55 537
原创 JAVA2D学习:绘制可拖拽选择框
弄了一天,基本实现了一般绘图软件的绘制矩形选择框的功能。拖动鼠标用虚线调整矩形选择区域的大小松开鼠标完成选择,更改矩形选择区域边线样式,绘制8个用来调整大小的手柄用鼠标拖动手柄可重新调整矩形的大小 一共两个类: PointRectangle 扩展了AWT的Rectangle类,按左上角和右下角两个坐标点来定义矩形(AWT默认是按左上角坐标和长宽来
2012-07-12 16:13:45 1296
JAVA设计模式:桥接(Bridge)
桥接:将抽象部分和实现部分分离,使它们都可以独立的变化。 桥接模式在整个Gof体系中算是一个比较抽象且难以理解的设计模式。作为结构类模式中重要的一环,桥接模式在某些层面成功地解决了“类爆炸”的问题,而这一点,尤其对初级开发者而言,正是经常遇到且难以解决的难题。 关于“类爆炸”(有些文章也称为“类膨胀”),是一个一直困扰广大开发者的难题。现实世界中...
2012-07-12 12:31:56 60
JAVA设计模式:适配器(Adapter)
适配器把一个类的接口变换成客户端所期待的另外一种接口,使得原本由于接口不兼容而不能再一起工作的那些类可以一起工作。 适配器模式是一个比较简单且容易理解的模式,举个例子来说,我家老房子旧的电源插座都是两口的,现在我买了一台新的电视机,电源插头是三口的,很明显,不作处理的话这两样东西是没法放在一起使用的。好在我买到了一个两口转三口的电源转换器,有了这...
2012-07-11 14:22:16 71
JAVA设计模式:组合(Composite)
组合模式意在组成任意复杂度的"整体-部分"组件层次结构,同时将单个组件或复合组件视为统一的接口。 我们可以将组合理解为两个层面的意思,一个是按“整体-部分”的方式一个将复杂过程组成树型结构,另一个层面则是强调整个树的执行要有统一的接口,可以被递归的调用。 光看定义的话一定感觉太抽象...
2012-07-11 12:36:46 53
EZTwain32免费版(windows下调用摄像头和扫描仪,附VB,C样例代码)
2011-02-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人