`
文章列表
组合模式的定义: 将对象组合成树的形式来表示整体和局部之间的关系,使得客户端对单个对象和组合对象的使用有了一致性。   适用场合: 1.需要表示一个对象整体或者局部的关系,在具有整体和部分的层次结构中,希望通过一种方式忽略整体和部分的差异 ,可以一致地对待它们。 2.让客户端忽略不同对象层次的变化,客户端可以针对抽象类编程,无需关心对象层次结构的细节。   对象类图:    package designpattern.composite; public abstract class Component {          public abstract ...
PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。 PROPAGATION_MANDATORY--该方法只能在一个已经存在的事务中执 ...
之前一直以为只是在Garbage First垃圾回收器中,有Card Table,终于在这篇文章中有些提示,让我对Card Table的作用有了清晰的认识,对Garbage First基本上有所了解了,应该可以进行总结了。。。。。。   http://vrlinux.com/wenzhangjingxuan/20101115/79907_2.html http://www.blogjava.net/BlueDavy/archive/2009/03/11/259230.html
当向Executor提交批处理任务时,并且希望在它们完成后获得结果,如果用FutureTask,你可以循环获取task,并用future.get()去获取结果,但是如果这个task没有完成,你就得阻塞在这里,这个实效性不高,其实在很多场合,其实你拿第一个任务结果时,此时结果并没有生成并阻塞,其实在阻塞在第一个任务时,第二个task的任务已经早就完成了,显然这种情况用future task不合适的,效率也不高的,实例如下:   实例一:用一个非complete Service完成的批量任务 package completeservice; import java.util.Random; ...
CyclicBarrier允许给定数量的线程全部到达关卡点时,关卡就被成功突破,关卡被重置以备下一次使用。跟CountDownlatch特别类似,但是CountDownLatch不同的是不能被重新重置再使用。   前面的blog说到用countdownlatch去完成方法里面的3个service的调用。用cyclicBarrier同样可以实现。   package cyclicbarrier; import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; ...
数据在操作过程中,可能出现3个不确定的情况: 1.Dirty Reads(脏读) 一个事务读取了另外一个事务未提交的数据   2.Non-repeatable Reads(不可重复读) 一个事务再次读取之前曾经读取过的数据时,发现改数据已经被另外一个已提交的事务修改   3.Phantom Reads(幻读) 一个事务重新执行一个查询,返回一套符合查询条件的记录,但是这些记录中包含了因为其他最近提交的事务而产生的新纪录   因此在标准的SQL规范中定义了4种事务隔离级别: 1.Read Uncommited 最低等级的事务隔离,它仅仅保证读取过程中不会读取到新的非法数据, ...
  此次主题主要讲述LVS 负载均衡策略和算法,这里面完全是罗列了章博士里面的blog,属于总结和转发性质。   如何将请求流调度到各台服务器,使得各台服务器尽可能地保持负载均衡。文章主要由两个部分组成。第一 部分 ...
下面是IBatis和Hibernate的比较,多年前做了个presentation,现在拿出来看一下:<!-- [if gte mso 9]><xml>   License – Hibernate: LGPL – Ibatis: Apache2.0   Learning curve – Hibernate: Higher learning curve – Ibatis: Shorter learning curve l For a new system, full control for ...
LVS全称是Linux Virtual Service   1.通过NAT实现虚拟服务器(VS/NAT)   由于IPv4中IP地址空间的日益紧张和安全方面的原因,很多网络使用保留IP地址(10.0.0.0/255.0.0.0、172.16.0.0 /255.128.0.0和192.168.0.0/255.255.0.0)[64, 65, 66]。这些地址不 ...
这段时间好好整理了一下基础,发现很多对我来说新的东西,里面博大精深的东西真的很多,经常使用HashMap,对HashMap的结构和原理非常了解,但是忽略了还有LinkedHashMap这个好东西。   先转一篇blog:   LinkedHashMap的特性: Linked内部含有一个private transient Entry header;来记录元素插入的顺序或者是元素被访问的顺序。利用这个线性结构的对象,可以帮助记录entry加入的前后顺序或者记录entry被访问的 频率(最少被访问的entry靠前,最近访问的entry靠后)。大致的过程如下: new LinkedHas ...
1.Excutor框架出现的背景 在正常负载情况下,服务器应用程序应该兼具良好的吞吐量和快速的响应性。同时在过载时应平缓的劣化,而不应该负载一高就简单地以失败告终。为了达到这个目的,你要选择一个清晰的任务边界,并 ...
今天好好地巩固了一下基础,仔细研究了一下,其实Java工具类真的非常丰富,它已经提供了各种排序功能的实现:   1.数组排序   java.util.Arrays类提供了各种对象的排序:char[],byte[],long[],int[]和Object[],注Arrays.sort方法排序返回的结果是升序Ascending的排列顺序。你可以定制排序顺序。这个排序和TreeSet的红黑树排序方式不同,Set不允许有重复数据存在,因此,当有重复数据时,可以使用这个工具类进行排序。Arrays提供的排序算法是归并排序算法(当元素数量小于=7时采用的是插入排序),空间复杂度O(n)。 ...
在创建一个bean定义(通常为XML配置文件)时,你可以简单的将其理解为:用以创建由该bean定义所决定的实际对象实例的一张“处方(recipe) ”或者模板。就如class一样,根据一张“处方”你可以创建多个对象实例。 你不仅可以控制注入到对象(bean定义)中的各种依赖和配置值,还可以控制该对象的作用域。这样你可以灵活选择所建对象的作用域,而不必在Java Class级定义作用域。Spring Framework支持五种作用域(其中有三种只能用在基于web的Spring ApplicationContext )。 内置支持的作用域分列如下: 表 3.4. Bea ...
在加载spring的bean的xml文件,生成spring容器。得到bean对象的几中用法。 在srping中可以配置一个xml文件,但是为了解耦也可以配置多个xml文件。 通过spring容器直接生成bean对象。   1、用ApplicationConetx上下文对象来加载application.xml文件。   解析一个xml文件: 比如说: ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml"); 加载的是一个x ...
初见这道题,有点奇怪,后来稍微想了一下,其实了解了HashMap的工作原理就很简单了,因为HashMap本身元素插入顺序是无序的,但是对于Hash冲突的地方是一个链表,链表的加入是放在链头的,其实是个有序的插入顺序,因此只要我们刻意去造成Hash冲突,让HashMap变成一个链表就可以了,其实很简单,只要我们把HashMap 初始化的size设置为1就可以了。   见下面的程序:   package hashmap; import java.util.HashMap; import java.util.Map; /**  *  *<p>Test</p> ...
Global site tag (gtag.js) - Google Analytics