摘要:
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(this)同步代码块。 三、尤其关键的是,当一个线程访问object的一个synchronized(this)同步代码块时, 阅读全文
摘要:
之前学习谷歌地图API,发现不管用Polygon类还是Polyline类都不能简单地自动形成一个闭合多边形,后来发现了PolygonCreator类,并参考了http://www.startutorial.com/articles/view/google-map-api-v3-polygon-shape-creator1. AboutPolygon Creator is a javascript class which can be used to draw a ploygon shape on Google Map, and it currently has two public funct 阅读全文
摘要:
1. 使用Spring注解来注入属性1.1. 使用注解以前我们是怎样注入属性的类的实现:public class UserManagerImpl implements UserManager { private UserDao userDao; public void setUserDao(UserDao userDao) { this.userDao = userDao; } ... } 配置文件:<bean id="userManagerImpl" class="com.kedacom.spring.annotation.ser... 阅读全文
摘要:
动态代理(DynamicProxy):相比前一篇文章所实现的静态代理,动态代理具有更强的灵活性,因为它不用在我们设计实现的时候就指定某一个代理类来代理哪一个被代理对象,我们可以把这种指定延迟到程序运行时由JVM来实现。我们知道,所谓代理,就是需要代理类和被代理类有相同的对外接口或者说成服务,所以代理类一般都必须实现了所有被代理类已实现的接口,因为接口就是制定了一系列对外服务的标准。正因为动态代理有这样灵活的特性,所以我们在设计动态代理类(DynamicProxy)时不用显式地让它实现与真实主题类(RealSubject)相同的接口(interface),而是把这种实现推迟到运行时。为了能让Dy 阅读全文
摘要:
代理模式代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。 按照代理的创建时期,代理类可以分为两种。 静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。 动态代理:在程序运行时,运用反射机制动态创建而成。首先看一下静态代理: 1、Count.java package 阅读全文
摘要:
前提:导入需要的2个jar文件,jcommon-版本号.jar,jfreechart-版本号.jar。可以去官网下载:http://sourceforge.net/projects/jfreechart/files/注意:下载的Jfreechart版本不要太高,新版本对中文的显示会出问题,我自己后来下的是1.0.10的版本。实例一:比较简单的application版本的饼图package com.test.jfreechart;import org.jfree.chart.ChartFactory;import org.jfree.chart.ChartFrame;import org.jfr 阅读全文
摘要:
在struts2应用程序中你还在使用try catch语句来捕获异常么?如果是这样的,那你OUT啦!struts2支持声明式异常处理,可以再Action中直接抛出异常而交给struts2来处理,当然需要我们在xml文件中配置,由于抛出同样的异常的处理方法通常都一样,所以如果能在xml中配置全局异常,将会使得开发便捷性大大提高。以前的异常捕获可能是这样的:?/*** 执行更新* * @return*/public String update() {Article article = new Article();article.setContent(content);article.setTitl 阅读全文
摘要:
struts2框架有一套好用且强大的标签,并且很好的封装性,实现了表单标签,逻辑标签,显示标签,Ajax标签(基于dojo,json)。个人觉得使用起来比较顺手,也简化了许多后台实现,例如:防止表单重复提交的token,在struts2中只要适用标签和拦截器就可以实现,不需要在action中写任何的验证性代码。为项目的开发提供了便利,但是一切事物都有两面性。struts2有许多细节需要注意,有些标签的使用我有时也搞不清楚,明明在这个页面里可以使用,但是换个页面就不好使了,例如实现时间和日期选择的标签,dojo文本编辑器的标签等等。而且值得注意的是这些标签的使用还会随着主题标签的变化而变化,.. 阅读全文
摘要:
1.目标类接口:package com.interceptor;public interface TargetInterface { public void doSomething();}2.目标类实现:package com.interceptor;public class Target implements TargetInterface{ public void doSomething() { System.out.println("doSomething"); }}3.自定义拦截器:package com.interceptor;public c... 阅读全文
摘要:
一、addActionError("错误内容"):Action级别的错误消息 this.addActionError("错误信息1"); this.addActionError("错误信息2"); 显示消息的标签是:<s:actionerror />显示全部的 Action级别的错误消息,可以加CSS二、addFieldError("字段名","错误信息")给一个字段(属性)添加错误消息 this.addFieldError("pwd", "错误信息1& 阅读全文