自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 interview记录

最近花了两个月时间好好准备和总结了一下,进步是明显的,非常感谢面试公司的热情接待。 在面试过程中,特别提到公司的hr小姑娘非常nice,整个过程中,每个架构师和中高层管理人员都看得非常顺眼,也许这就是缘分吧。 面试的职位是Java架构师职位 问的题目有:1.最擅长的技术是?答:JVM和Java 并发编程 2.Wait和Sleep的区别 3.集合类的s...

2011-05-24 10:21:56 110

原创 OpenSessionInViewFilter 的解析

OpenSessionInViewFilter的作用是延时session的关闭,直到request结束,这样做的目地是防止hibenrate lasy load出现异常的情况。如果isSingleSession设置成true,表示一个request的生命周期内,都使用一个session。false表示调用多少dao层的方法就用多少个session,但是这些session会延时到一个request结...

2011-05-23 01:46:39 123

原创 XML的两种解析方式Dom和SAX的区别

DOM和SAX是应用中操纵XML文档的两种主要API,它们分别解释如下:DOM,即Document ObjectModel,中文叫文档对象模型。DOM是W3C定义的标准文档对象模型,是一个与操作系统和编程语言无关的、用于内存存储和操作层次化文档的模型。当按照DOM模型解析XML文档时,就会在内存中构造一个对应的DOM树,它可以用于不同节点之间的遍历。然而,在遍历之前必须先完成DOM树的...

2011-05-19 21:32:51 189

原创 Tomcat 类加载机制

Tomcat中的类加载策略和JDK中的委托模型略有不同。Tomcat Server在启动的时候将构造一个ClassLoader树,以保证模块的类库是私有的,ClassLoader结构如下:             Bootstrap                   |              System                  |            Com...

2011-05-19 16:23:16 162

原创 String为什么是不可变的

StringBuffer可变String不可变的真正原因 String和StringBuffer都是final类,他们生成的对象在堆中都是不可变的,在他们内部都是靠属性char数组实现的,那为什么StringBuffer可以在对象中追加字符串呢?呵呵,因为String中的char数组是finall的,也就是常量,是不可改变的,而StringBuffer继承自抽象类Abst...

2011-05-19 14:37:52 131

原创 死锁实例

下面这道题,是考死锁的,比较简单,想两个问题:1.什么时候会造成死锁2.wait和notify释放了哪个锁,因为题目中有两个锁。 import java.util.LinkedList;public class DeadLockTest {    LinkedList list = new LinkedList();            public synchr...

2011-05-19 14:21:06 128

原创 Jsp的标准动作和九大内置对象

1、jsp动作7大动作jsp:include,jsp:userBean,jsp:plugin,jsp:getProperty,jsp:setProperty2、<jsp:useBean>动作(1)作用在jsp页面上,以标签的方式实现bean的实例化(2)格式自关闭式:<js...

2011-05-19 00:04:07 95

原创 Struts1的简单工作流程

ActionSerlvet接收客户Http请求,使用ActionForm Bean自动填充客户送来的表单数据到ActionForm Bean对象中?根据配置信息(struts_config.xml)将请求分发给相应的Action对象?Action对象调用execute()方法处理请求(根据JavaBean和ActionForm取得业务逻辑和表单数据),并反回ActionForward对象给...

2011-05-18 23:30:47 97

原创 设计模式-观察者模式

观察者模式又称发布订阅模式,它定义了对象之间一对多的关系,对象的状态发生变化时,所有依赖的对象都自动得到通知。观察者模式,很好地解除了观察者和被观察患者之间的耦合。 Java有内置的观察者模式的实现:public interface Observer { public void update(Obsevable observable, Object); } ...

2011-05-17 22:22:59 85

原创 JVM四种对象引用类型

JVM 中将对象的引用分为了四种类型,不同的对象引用类型会造成GC 采用不同的方法进行回收:1.强引用默认情况下,对象采用的均为强引用,例如:A a=null;public void execute(){a=new A();,// 其他代码}只有当execute 所在的这个对象的实例没有其他对象引用,GC 时才会被回收。2.软引用(Soft Refe...

2011-05-17 16:27:28 145

原创 HaProxy的负载均衡策略

roundrobin  Each server is used in turns, according to their weights.                  This is the smoothest and fairest algorithm when the server's                  processing time remains equall...

2011-05-17 14:35:53 210

原创 NGinx负载均衡策略

nginx的upstream目前支持的5种方式的分配1、轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。upstream backserver {server 192.168.0.14;server 192.168.0.15;}2、weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。...

2011-05-17 14:31:53 208

原创 一些常用的软件设计原则

在架构设计过程中,了解一些先辈们总结出来的常用的设计原则非常有用,在实践过程中,结合这些理论,相信架构水平会有质的提升,就像是一本武功秘籍,在学的过程中遵循它的rule,你的武功自然就上去了。我真的感觉这些原则非常有用:1.Don't Repeat Yourself在上一篇已经有阐述。 2.面向接口编程而不是面向实现的编程接口是稳定的,也是抽象的,越抽象的东西越...

2011-05-17 10:53:32 114

原创 设计模式-策略模式

定义一组算法,对每一种进行封装,让它们之间可以相互替换,可以独立于客户端程序而变化。

2011-05-17 00:48:31 82

原创 设计模式-Facade模式

Facade模式 当软件系统需要跟子系统进行复杂的交互时,为了减少系统的交互从而简化系统之间交互的目地,可以用外观模式。 外观模式用到了一个常用的规则:最小知识原则也叫迪米特原则,如果你的应用有很多类,并且他们有复杂的依赖关系,那么你的应用将非常难于扩展和维护,其中一处改动能影响很多使用者。迪米特原则让我们减少系统之间的依赖,一处改动只会影响小范围的地方。 外观模式提供fa...

2011-05-17 00:20:30 66

原创 设计模式-适配器模式

适配器模式:系统之间集成,常由于接口之间不兼容,很多能满足功能的软件模块,由于接口不同,而导致无法使用。在这种情况下可以使用适配器模式。 使用场合:当原来的类已经存在,但是不能一起工作,这个时候,适配器模式是个好的解决方案。1.适配器模式的含义在于:把一个类的接口转化为另一个接口,使得原本不兼容而不能一起工作的类能够一起工作。 2.适配器类型1)类适配器:通过继承关系,...

2011-05-16 18:00:05 83

原创 设计模式-组合模式

组合模式的定义:将对象组合成树的形式来表示整体和局部之间的关系,使得客户端对单个对象和组合对象的使用有了一致性。 适用场合:1.需要表示一个对象整体或者局部的关系,在具有整体和部分的层次结构中,希望通过一种方式忽略整体和部分的差异,可以一致地对待它们。2.让客户端忽略不同对象层次的变化,客户端可以针对抽象类编程,无需关心对象层次结构的细节。 对象类图:...

2011-05-16 15:48:35 97

原创 Spring的七种事务传播途径和隔离级别

PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。 PROPAGATION_MANDATORY--该方法只能在一个已经存在的事务中执行,业务方法不能发起自己的事务。如果在没有事务的环境下被调用,容器抛出例外。 PROPAGATIO...

2011-05-13 11:13:30 201

原创 Garbage First - Card Table

之前一直以为只是在Garbage First垃圾回收器中,有Card Table,终于在这篇文章中有些提示,让我对Card Table的作用有了清晰的认识,对Garbage First基本上有所了解了,应该可以进行总结了。。。。。。 http://vrlinux.com/wenzhangjingxuan/20101115/79907_2.htmlhttp://www.blogjava....

2011-05-12 17:36:25 99

原创 CompleteService介绍和使用实例

当向Executor提交批处理任务时,并且希望在它们完成后获得结果,如果用FutureTask,你可以循环获取task,并用future.get()去获取结果,但是如果这个task没有完成,你就得阻塞在这里,这个实效性不高,其实在很多场合,其实你拿第一个任务结果时,此时结果并没有生成并阻塞,其实在阻塞在第一个任务时,第二个task的任务已经早就完成了,显然这种情况用future task不合适的,...

2011-05-11 17:31:06 3068

原创 CyclicBarrier的使用实例

CyclicBarrier允许给定数量的线程全部到达关卡点时,关卡就被成功突破,关卡被重置以备下一次使用。跟CountDownlatch特别类似,但是CountDownLatch不同的是不能被重新重置再使用。 前面的blog说到用countdownlatch去完成方法里面的3个service的调用。用cyclicBarrier同样可以实现。 package cyclicbarrie...

2011-05-11 15:45:09 95

原创 数据库事务隔离级别

数据在操作过程中,可能出现3个不确定的情况:1.Dirty Reads(脏读)一个事务读取了另外一个事务未提交的数据 2.Non-repeatable Reads(不可重复读)一个事务再次读取之前曾经读取过的数据时,发现改数据已经被另外一个已提交的事务修改 3.Phantom Reads(幻读)一个事务重新执行一个查询,返回一套符合查询条件的记录,但是这些记录中包含...

2011-05-10 15:29:20 85

原创 LVS负载均衡(调度)算法-内核中的连接调度算法

 此次主题主要讲述LVS负载均衡策略和算法,这里面完全是罗列了章博士里面的blog,属于总结和转发性质。 如何将请求流调度到各台服务器,使得各台服务器尽可能地保持负载均衡。文章主要由两个部分组成。第一部分描述IP负载均衡软件IPVS在内核中所实现的各种连接调度算法;第二部分给出一个动态反馈负载均衡算法(Dynamic-feedback load balancing)...

2011-05-10 09:58:52 113

原创 IBatisVSHibernate

下面是IBatis和Hibernate的比较,多年前做了个presentation,现在拿出来看一下:<!-- [if gte mso 9]><xml>  License– Hibernate: LGPL– Ibatis: Apache2.0 Learning curve– Hibernate: Hig...

2011-05-09 14:31:14 67

原创 LVS三种负载均衡模式之-网络地址转换

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]。这些地址不在Internet上使用,...

2011-05-09 13:52:28 431

原创 使用LinkedHashMap构建LRU的Cache

这段时间好好整理了一下基础,发现很多对我来说新的东西,里面博大精深的东西真的很多,经常使用HashMap,对HashMap的结构和原理非常了解,但是忽略了还有LinkedHashMap这个好东西。 先转一篇blog: LinkedHashMap的特性:Linked内部含有一个private transient Entryheader;来记录元素插入的顺序或者是元素被访问的顺...

2011-05-07 09:12:55 125

原创 并发编程之-Excutor框架

1.Excutor框架出现的背景在正常负载情况下,服务器应用程序应该兼具良好的吞吐量和快速的响应性。同时在过载时应平缓的劣化,而不应该负载一高就简单地以失败告终。为了达到这个目的,你要选择一个清晰的任务边界,并配合一个明确的任务执行策略。 1.1顺序化执行任务看下面的例子:class SingleThreadWebServer{    public static void ...

2011-05-07 00:02:19 148

原创 Java工具类提供的排序功能

今天好好地巩固了一下基础,仔细研究了一下,其实Java工具类真的非常丰富,它已经提供了各种排序功能的实现: 1.数组排序 java.util.Arrays类提供了各种对象的排序:char[],byte[],long[],int[]和Object[],注Arrays.sort方法排序返回的结果是升序Ascending的排列顺序。你可以定制排序顺序。这个排序和TreeSet的红...

2011-05-06 14:31:17 173

原创 Spring bean的作用域

在创建一个bean定义(通常为XML配置文件)时,你可以简单的将其理解为:用以创建由该bean定义所决定的实际对象实例的一张“处方(recipe)”或者模板。就如class一样,根据一张“处方”你可以创建多个对象实例。你不仅可以控制注入到对象(bean定义)中的各种依赖和配置值,还可以控制该对象的作用域。这样你可以灵活选择所建对象的作用域,而不必在Java Class级定义作用域。...

2011-05-06 00:11:39 64

原创 Spring bean加载方式

在加载spring的bean的xml文件,生成spring容器。得到bean对象的几中用法。在srping中可以配置一个xml文件,但是为了解耦也可以配置多个xml文件。通过spring容器直接生成bean对象。 1、用ApplicationConetx上下文对象来加载application.xml文件。 解析一个xml文件:比如说:Appl...

2011-05-06 00:05:25 235

原创 HashMap里插入数字一到十,然后再逐个取出来

初见这道题,有点奇怪,后来稍微想了一下,其实了解了HashMap的工作原理就很简单了,因为HashMap本身元素插入顺序是无序的,但是对于Hash冲突的地方是一个链表,链表的加入是放在链头的,其实是个有序的插入顺序,因此只要我们刻意去造成Hash冲突,让HashMap变成一个链表就可以了,其实很简单,只要我们把HashMap 初始化的size设置为1就可以了。 见下面的程序: pa...

2011-05-05 23:48:05 281

原创 CopyOnWriteArrayList工作原理和实例

CopyOnWriteArrayList顾名思义,在写入操作时,copy源数组到新的数组中,而读取时,是从源数组去读的,因为写入操作是在另外一个数组中执行,因此在读取时,不用进行线程同步,但是要注意一点,copy数组的开销在数据量大的情况下,非常耗资源,因此,它的使用场景,适合于读取远大于写入操作的场景。当然,在写入时,是有锁的,JDK中的实现是采用重入显式锁进行锁定的。当写操作完成以后再将源数组...

2011-05-05 23:43:13 274

原创 Java 设计模式-装饰器模式和代理模式

1.装饰器模式1.1 定义动态地给对象添加新的功能,相比子类继承方式有更大的灵活性。比如Java中的InputStream,使用了BufferedInputStream进行了包装实现了buffer data的功能。 使用装饰器模式,符合Open-Closed 原则,对修改封闭,对扩展(增加)开放。 1.2 使用场景装饰器模式适用于完成类似的功能...

2011-05-05 18:15:56 95

原创 改变文件存取权限命令: chmod

指令名称 : chmod 使用权限 : 所有使用者 使用方式 : chmod [-cfvR] [--help] [--version] mode file... 说明 : Linux/Unix 的档案存取权限分为三级 : 档案拥有者、群组、其他。利用 chmod 能藉以控制档案怎么被他人所存取。 把计 : mode : 权限设定字串,格式如下 : [ugoa...][[+-...

2011-05-04 14:08:24 248

原创 cat和wc

Cat有三大功能:1.一次性显示文档所有的内容cat filename 常见参数如下1)为每行加上行号并输出:cat -n filename或者cat --number filename2)显示文档所有的内容包括换行符,tab符:  cat -A filename或者cat --show-all filename3)当遇见有连续两行以上的空白行,就代换为一行的空白行...

2011-05-04 14:01:58 163

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除