`
文章列表
        1. 牢骚          差不多去年这个时候,因为其他项目组需要,把我拉去充壮丁部署了下elasticsearch集群,并简单封装了下客户端工具包。 心想着新掌握一门手艺也不是坏事,就深入学习了一段时间。        ...
   首先看下这位网友的文章。   http://haohaoxuexi.iteye.com/blog/1812584     如上所述,spring支持的校验框架,一种是自己实现org.springframework.validation.Validator接口,一种是JSR303标准并采用hibernate的实现。相比之下,前者需要为每个被校验对象进行实现,而后者基于注解,虽然学习曲线稍多一些,但熟练后效率高得多。    两者都是通过controller方法声明中的@Valid注解表明该对象需要校验,并用紧随其后的BindingResult对象获取校验结果。           ...
  一、标准socket      对socket编程毫无经验的新手(比如我),一开始便看NIO,虽然API是看懂了,却始终无法明白体会和标准socket编程在设计方式上的本质区别。     可以先看下如下这篇文章,把传统socket编程的服务端基 ...
本文主要部分为转载,但修正了部分文字错误,并删除了一些自己认为不太恰当的结论。       一、概述   java.lang.reflect.Type:java语言中所有类型的公共父接口   1. Type直接子接口      ParameterizedType,GenericArrayType,TypeVariable和WildcardType四种类型的接口 ParameterizedType: 表示一种参数化的类型,即拥有泛型定义的类型,比如HibernateDao或者Collection.   GenericArrayType: 表示一种元素类型是参数化类型或 ...
    众所周知,mybatis中的SqlSession并非线程安全,官方建议作用于和方法相同。    而在使用spring进行事务管理时,若需要将事务托管于spring,则必须使用spring封装的utils类获取数据库连接,此数据连接与当前线程绑定,保证了线程安全的同时,也让spring基于声明的事务管理成为了可能--------AOP完成隐式的事务控制、而数据连接对象则由AOP从当前线程获取)。     现在的问题是,mybatis如何参与spring的事务管理。而在原生SqlSession并非线程安全的前提下,由ibatis-spring封装SqlSessionTemplate是如 ...
首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环境; 其次,在web.xml中会提供有contextLoaderListener。在web容器启动时,会触 ...
   之前看到泛型的类型擦除时,非常疑惑。明明JDK1.5之后,在Class字节码中已经加入了signature属性来存储泛型信息,又为何说在编译后被擦除呢。知道找到了下面这篇。。      http://www.iteye.com/topic/585900#1357097   “Java泛型有 ...
      notify()与wait()        先来说一下notify()、notifyAll()与wait()方法.     可能会令初学者可能比较困惑的是,作为线程通讯的方式,notify()、notifyAll()与wait()却被定义在Object类上。其实很好理解,wait()的本质是释放已获取的锁对象并阻塞等待被唤醒,而notify()则是释放已获取的锁对象并唤醒在wait()中等待同一个锁的线程。因此调用方式便是                  [锁对象].wait()                  或者                 [锁对象] ...
      先来看一篇详细分析volatile语义的文章。     http://www.infoq.com/cn/articles/java-memory-model-4       若问及volatile关键字的含义,一般都会得到如下答案。     (1)对volatile修饰的变量,各线程间的写操作将立即对其他线 ...
   先MARK下一篇将JDK自带线程池的工具文,讲得挺清楚。   http://www.oschina.net/question/565065_86540    一些系统中的外部IO调用,比如调用第三方系统的WEBSERVICE等,尽管可以设定超时时间,但若每次调用都接近超时的上限的话,在并发较大的情况下很容易会造成系统不堪重负。此时若此调用无需实时获得调用结果,则可采用newFixedThreadPool将并发调用数限制在一定数量下,其他任务自动进入内存队列。     而开放给第三方系统的接口,在被调用时若处理较耗时,则可采用先放入线程池并立即返回的异步处理方式提高系统吞吐量。 ...
http://shensy.iteye.com/blog/1867588   几篇入门的文章,有几个常用使用方式的介绍,但不全。   http://www.iteye.com/topic/799827   从源码结构来看CGLIB,可以对CGLIB的结构有一个更深的理解。   待补充。。。
    去年这个时候,因为项目需要,编写了一些Annotation。每一个使用这些注解的类,都是通过CGLIB动态生成增强类(或者说是代理类),而注解的处理逻辑,则是在增强类的回调函数处实现的。      另一方面,JDK从1.5开始也提供了动态代理功能。      翻阅网上对此2者的比较,看到最多的是以下这个结论:     JDK动态代理只支持拥有接口的类。而CGLIB功能更强大,可代理无接口的类。CGLIB通过动态生成子类字节码的方式进行实现代理。     问题当然不止于此。我想知道的是JAVA动态代理的实
Global site tag (gtag.js) - Google Analytics