- 博客(17)
- 收藏
- 关注
原创 CLQ小结
好久没写文章,小结ConcurrentLinkedQueue做个临时记录,它虽然强大但也有它的问题,网上介绍集合中cas操作的文章很多,这里只写一下个人理解(1)size方法很慢(与ConcurrentHashMap相似)(2)remove方法很慢(与大部分Queue相似)(3)如果remove最后一个节点中的元素,remove后节点不会删除(4)同理当新...
2015-01-25 00:26:09
232
原创 IO的阻塞与异步
一个IO操作其实分成了两个步骤:发起IO请求和实际的IO操作,同步IO和异步IO的区别就在于第二个步骤是否阻塞,如果实际的IO读写阻塞请求进程,那么就是同步IO,因此阻塞IO、非阻塞IO、IO服用、信号驱动IO都是同步IO,如果不阻塞,而是操作系统帮你做完IO操作再将结果返回给你,那么就是异步IO。阻塞IO和非阻塞IO的区别在于第一步,发起IO请求是否会被阻塞,如果阻塞直到完成那么就是传统...
2014-10-29 19:32:18
181
小知识积累(持续更新)
由于工作太忙,已经很久没写下什么东西了,记录比记忆重要,把一些小知识记下来,顺便与大家交流和分享下(持续更新)。[size=small][b]1)List的复制[/b][/size][code="java"]//方法(a) public List copyArrayList(List list){ List copyList = new ArrayList()...
2009-12-05 00:42:38
161
原创 曲折地前进
一件事情你很努力很认真地去完成了99%,剩下1%没做好,就相当于整件事都没做好。甚至可能在别人眼里你根本没去做这件事!有时候可以去埋怨下自己的运气不好。。但归根到底都是自己没有去做好这1%。 这个本来就是不公平的世界,从来没有绝对公平的待遇,特别是在某些情况下,你还不能去争取这一份本来可以争取的“公平”。 每个人都会喜欢事业上、工作上一帆风顺,但是逆境更能磨练一个人...
2009-11-16 23:24:00
155
原创 Java中几种常用排序的实现与比较
[b]关于排序的算法,大约分为两大类:顺序排序与对数排序。 顺序排序一般使用一对嵌套的循环结构(多为两个for循环),因此排序n个元素需要大约n的2次方的比较。比较常用的顺序排序有(1)选择排序法 (2)插入排序法 (3)冒泡排序法 对数排序一般需要大约n*log2n(2为底数)次比较。这两种排序,当n越大的时候,他们性能上的差别就越大。快...
2009-04-09 23:24:38
157
原创 访问者模式进阶(四)
经过思考后,发现上一篇介绍的用反射改造访问者模式中,抽象访问者与具体访问者之间的继承关系有不妥的地方。1)抽象访问者与具体访问者的之间的继承并没有必然的关系2)用抽象类代替接口并不是一种好办法,毕竟Java不支持多重继承3)ReflectionVisitor更像是一个具体类,《Java与模式》里面说“只有在分类学的角度上有意义时,才使用继承,不要从工具类继承”...
2009-03-08 12:34:42
163
原创 访问者模式进阶(三)
这一篇讲述一下如何用反射改造访问者模式,使之在增加具体元素的时候也符合“开放-封闭”原则(OCP)。为了理解的连贯性继续采用之前的男人-女人的例子。这是既定访问者的类图:[img]/upload/attachment/82158/295619f7-3716-3de5-8338-be56c17935ef.jpg[/img]在(二)在介绍过,既定访问者模式增加具体元...
2009-03-07 23:29:00
134
原创 不容易掌握的单例模式
众所周知单例模式有有饿汉式与懒汉式两种。当一个单例类的初始化开销很大,而希望当用户实际上需要的时候才去创建单例类,就会考虑使用懒汉式[b]延迟初始化[/b],来提高程序的启动速度。但懒汉式并不容易使用。在多线程的环境下,如果不同步getInstance()方法会出现线程安全的问题,如果同步整个方法,那么getInstance()就完全变成串行,串行效率会降低10倍甚至100倍。因...
2009-03-03 19:12:09
120
模拟Spring(一)
学过Java的人对SSH都不会陌生,其中Spring备受青昧除了它的"轻"之外,还因为他的IOC与AOP两大功能的强大。IOC是Spring的核心概念,全称“Inversion Of Control”,翻译成中文是“控制反转”,很多人都把它叫做“依赖注入(Dependency Injection)”。而它的抽象概念是“[color=red]依赖关系的转移[/color]”。转移是...
2009-02-28 23:45:03
195
原创 模板方法模式的升级
关于模板方法的定义:[b]定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。[/b]模板方法的类图比较简单,这里就不画出来了。有需要的可以上网Google一下。我们直接看例子。现在需求要实现学生A与学生B做同一份试卷。[color=darkred][size=large]大量Ct...
2009-02-27 18:46:46
152
原创 访问者模式进阶(二)
这一篇讲述如何让访问者模式(Visitor)变得更加灵活。但并非结合反射(Reflection)去解决问题,而是采用另外一种的思维方式去改造访问者模式,相对于反射,我更偏向于这种。至于用反射改造访问者模式将会在下一篇讨论。 用回上一篇文章的例子,男人女人。假设现在需求要扩展数据结构,增加一种具体元素,男与女之外的一种不明物体,我们暂时把它称为“怪兽”,在既有访...
2009-02-27 16:18:45
128
原创 访问者模式进阶(一)
做了标题党=。=这一篇并没有介绍关于访问者模式的进阶,先说一下访问者模式的使用情况,这里引用大话设计模式的例子,因为讲得比较精辟。假设有男人和女人两种元素,要分别打印出他们在不同状态时的不同表现。用OO的思想把表现(行为)提取出来作为一个抽象方法,代码如下:[color=darkred][size=large]用if-else对状态进行判断[/size][/color...
2009-02-27 12:52:19
159
原创 冒泡算法的小变种
冒泡算法大家都见得多啦,笔试也经常出,但更多的题目可能会加多一些限制条件。下面举2个例子,这方面做得少的朋友可以以此打开一下思维,其实原理都是一样的。如果有其他的例子或者更好的做法,希望可以提出来,和大家一起分享下:)题目1:从小到大排列下面一堆数字,3,1,6,2,9,0,2,3,9,3,9 ..并且打印他们重复的次数(先不要急着看答案,自己想一下,能想出更好的做法^_^)参...
2009-02-26 23:19:50
169
原创 用深度遍历解决全排列问题
题目如下:用1,2,2,3,4,5这6个数字,用Java写一个main函数,打印出所有不同的排列,如:123254,522134等,要求:“3”与“5”不能相邻,“4”不能排在第3位。(看完题目先不要急着看答案,自己尝试做一下,或者你的做法更好^_^)解题方案是把相邻问题抽象成一个2维数组,用0与1组成,如[0,1]或者[1,0]就表示0与1相邻的时候,如下图:0 1 1 1 1 ...
2009-02-26 22:50:26
232
原创 设计模式序章
看设计模式总会有一种着迷的感觉,用小林同学的话,“实在太精彩了!”于是又想写下一些东西和大家分享:) 书看过几本,第一本是看小林同学推荐的大话设计模式,用C#写的,印象也最深刻,一开始看设计模式我觉得这本是很合适的。所谓设计模式其实就是对一种经常发生的问题提出的一种解决方案,而且这种方案经常无数人的测试,使用,在经过千锤百炼之后4人组的设计模式几乎是无懈可击。然而...
2009-02-24 12:19:03
153
在线用户统计(一)
好久之前看过下在线人数统计的问题,现在重新整理了一下,把自己写的一些例子发出来和大家分享,希望大家也提出一些想法或者例子,一起研究出最好的方案=^^=在写文章之前先介绍一个HttpSessionBindingListener这个监听器,用来监听自己什么时候增加到会话中,或者从会话删除。实现HttpSessionBindingListener这个接口要实现2个方法:val...
2009-02-24 11:09:18
254
原创 海纳百川,有容乃大
这是我在blog上发表的第一篇文章,从今天开始,只要时间允许,我就会把最近的一些学习的心得体会,或者技术上的难点要点说出来和大家分享一下。在这里的文章绝对不是单纯的Ctrl C,Ctrl V,每篇都经过我的思考和总结,然后才写出来。我也希望各位朋友也不要吝啬,把大家的问题,心得,或者想法说出来,让我们在讨论与研究中不断进步=^^= 期待这里能成为真正海纳百川的...
2009-02-23 23:29:23
291
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅