摘要: 1、开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使用接口和抽象类,后面的具体设计中我们会提到这点。2、里氏代换原则(Liskov Substitution Principle) 里氏代... 阅读全文
posted @ 2014-03-18 16:25 zengxianxi 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 编写多线程程序是为了实现多任务的并发执行,从而能够更好地与用户交互。一般有三种方法,Thread,Runnable,Callable.Runnable和Callable的区别是: (1)Callable规定的方法是call(),Runnable规定的方法是run(). (2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值的 (3)call方法可以... 阅读全文
posted @ 2014-03-18 16:03 zengxianxi 阅读(1329) 评论(0) 推荐(0) 编辑
摘要: ConcurrentHashMap尽可能减小锁粒度实现高并发的支持,在ConcurrentHashMap内部,默认将HashMap分成16段,原后根据Hash算法将数据存入不同的段,每次向HashMap中存入数据时只需要锁住其中的一段,理论上,如果不是存入同一段,可以支持16个线程同时存入数据。 但是ConcurrentHashMap如果执行size方法,则需要分别锁住所有的段进行统计... 阅读全文
posted @ 2014-03-18 16:01 zengxianxi 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 并发List Vector和CopyOnWriteArrayList是两个线程安全的List,Vector读写操作都用了同步,相对来说更适用于写多读少的场合,CopyOnWriteArrayList在写的时候会复制一个副本,对副本写,写完用副本替换原值,读的时候不需要同步,适用于写少读多的场合。并发Set CopyOnWriteArraySet基于CopyOnWriteArrayLis... 阅读全文
posted @ 2014-03-18 15:57 zengxianxi 阅读(4531) 评论(0) 推荐(1) 编辑
摘要: 内部锁: 内部锁就是synchronised,由jvm内部实现管理重入锁: 它可以中断、可定时 重入锁(ReentrantLock),提供公平和非公平两种锁,公平锁保证先进先出,但是有一定的性能省耗 它是一种互斥的实现,一次只能一个线程拿到锁; 如果一个线程试图获取一个已经由它自己持有的锁,那么这个请求会成功,“重入”意味着获取锁的粒度是线程,而不是调用者。... 阅读全文
posted @ 2014-03-18 15:46 zengxianxi 阅读(457) 评论(0) 推荐(0) 编辑
摘要: java的内存模型分为线程工作区内存、线程执行引擎、主内存(共享内存)三部分; 线程执行引擎在执行时,对内存有使用和赋值操作 当线程使用(use)变量时,会触发线程工作区的加载(load)操作,线程工作区的加载(load)操作会触发主内存的读操作(read) 当线程对变量赋值(assgin)时,会触发线程工作区的存储(store)操作,线程工作区的存储(store)会触主内存的write操作。 主... 阅读全文
posted @ 2014-03-18 15:39 zengxianxi 阅读(151) 评论(0) 推荐(0) 编辑
摘要: ArrayList和LinkedList的大致区别: 1.ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 2.对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 3.对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动... 阅读全文
posted @ 2014-03-14 14:14 zengxianxi 阅读(157) 评论(0) 推荐(0) 编辑
摘要: XSS: XSS 全称“跨站脚本”,是注入攻击的一种。其特点是不对服务器端造成任何伤害,而是通过一些正常的站内交互途径,例如发布评论,提交含有 JavaScript 的内容文本。这时服务器端如果没有过滤或转义掉这些脚本,作为内容发布到了页面上,其他用户访问这个页面的时候就会运行这些脚本。 解决办法就是对用户输入的内容进行过滤。CSRF: CSRF 的全称是“跨站请求伪造”,是伪造请... 阅读全文
posted @ 2014-03-11 15:43 zengxianxi 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 基于锁的同步方式,是一阻塞的线程间同步方式,不同线程在锁竞争时,总不能避免相互等待,为了避免这个问题,就提出了非阻塞同步的方式,最简单的一种非阻塞同步实现就是ThreadLocal。另一种方式就是基于比较并交换(Compare And Swap)CAS算法的无锁并发控制方法。 CAS算法的是有3个值配合完成的,一个表示要更新的变量,一个表示预期的值,一个表示新值,如果要更新的变量与预期值不同则说... 阅读全文
posted @ 2014-01-13 11:46 zengxianxi 阅读(693) 评论(0) 推荐(1) 编辑
摘要: 在java中提供了4个级别的引用:强引用、软引用、弱引用、虚引用。其中强引用FinalReference是default个饰符来修饰,其它3个级别均为public修饰。强引用(FinalReference),在java中,有点像C++的指针,通过引用,可以对堆中的对象进行操作。强引用具备以下特点:强引用可以直接访问目标对象;强引用所指向的对象在任务时候都不会被系统回收;强引用可能导致内存泄露。软引... 阅读全文
posted @ 2013-10-03 00:25 zengxianxi 阅读(315) 评论(0) 推荐(0) 编辑