自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

写在出发前...

历经近一个月,终于进入了收尾的阶段。这段时间参加了不少的笔试,机试,面试,在被选择与选择之间调整和锻炼心态,也很幸运的找到自己想要从事的工作。在这个过程中也根据不同的要求强化充实自己。 以前从事的J2EE的开发使用和接触的服务器和数据库都是开源的选型:Jboss,Tomcat,Glassfish,Mysql,Derby,H2等等。但是这个过程中接触的行业多是使用企业级(收费为...

2010-03-27 13:05:20 146

一道位操作的趣味编程题

看到一道很有意思的编程题:大厅里有64盏灯,每盏灯都编了号码,分别为1-64。每盏灯都由一个开关来控制。(开关按一下,灯亮,再按一下灯灭。开关的编号与被控制的灯相同。)开始时,灯是全灭的。现在按照以下规则按动开关。 第一次,将所有的灯点亮。 第二次,将所有2的倍数的开关按一下。 第三次,将所有3 的倍数的开关按一下。以此类推。第N次,将所有N的倍数的开关按一下。 问第N次(N小于等于64)...

2010-03-14 10:50:51 352

一道字符串截取的编程题

最近接触到一道字符串截取的编程题:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个"。 了解Java的都知道Java中char是用Unicode-16表示的,char型占两个字节。通常采用Unic...

2010-03-11 10:52:50 329

一道多线程趣味热身题

保持对知识点或者技术的熟悉度对于程序员至关重要,要学会一个技术点可能不需要很多精力或者时间,但是要精通或者长时间保持对其的熟悉程度往往非常困难。个人的观点是通过演练对自己掌握的知识点保鲜是一个很好的途径。这其中包括了写Blog阐述,对周围的爱好者演讲,与其他程序员交流辩论以及最重要的多找机会去写相关的程序或者解决相关的问题,难点来加深理解和延长熟悉度。所以我通过写Blog和找相关的问题解决...

2010-02-28 18:01:57 245

疑似Google多线程面试题的Java实现

来到一个完全陌生的地方,即将一切从新开始,内心兴奋又忐忑。这几天忙着租房,装宽带直到今天才算告一段落,几经折腾,总算能安静的写写东西了。对我而言排解紧张情绪和压力的方式,就是投入一个问题的思考和解决中。之前在网上找相关的多线程问题,想通过演练来加深和熟练对多线程的掌握时,看到一个疑似Google的多线程面试题,感觉可以思考一下,题目如下: 启动4个线程,向4个文件A,B,C,D里...

2010-02-24 17:39:43 149

原创 尝试JQuery的日期插件

新年伊始,折腾了一把x61。农历年一过又回头清理了一把t61,把ssd+硬盘托架又换到了t61上。顶着显卡门的隐患重新启用t61作为主力机器,相比之下还是小T比较快啊,写代码心理感觉更爽了一点,哈哈。JQuery用的不能说熟练,但是简单的东西还是会用。之前struts2的日期标签用着很不爽,所以想到了JQuery的UI插件里面的日期插件就拿来尝试一下,感觉灰常的好。按照附带的demo稍微改...

2010-02-17 18:52:21 185

原创 Mina的线程池实现分析(2)

分析了I/O事件的存储,下面看看多个Worker同时工作时I/O事件的取得过程。首先看看有序的Worker的实现:[code="java"] private class Worker implements Runnable { private volatile long completedTaskCount; private Thread t...

2010-02-10 17:31:23 175

原创 Mina的线程池实现分析(1)

线程池是并发应用中,为了减少每个任务调用的开销增强性能而经常使用的技术。在mina中大量的使用这一技术,除了Executors的工厂方法构建线程池之外,它还继承自ThreadPoolExecutor提供自己的线程池的实现OrderedThreadPoolExecutor和UnorderedThreadPoolExecutor。这两者主要应用于ExecutorFilter过滤器。这个过滤器是...

2010-02-10 17:28:18 556

原创 多线程基础总结十一--ConcurrentLinkedQueue

ConcurrentLinkedQueue充分使用了atomic包的实现打造了一个无锁得并发线程安全的队列。对比锁机制的实现,个人认为使用无锁机制的难点在于要充分考虑线程间的协调。简单的说就是多个线程对内部数据结构进行访问时,如果其中一个线程执行的中途因为一些原因出现故障,其他的线程能够检测并帮助完成剩下的操作。这就需要把对数据结构的操作过程精细的划分成多个状态或阶段,考虑每个阶段或状态多...

2010-02-03 17:52:31 155

原创 LinkedBlockingQueue应用--生产消费模型简单实现

之前介绍时LinkedBlockingQueue提到了Queue主要应用于“生产消费模型”的实现。在尝试分析ConcurrentLinkedQueue之前,写了个简陋的“生产消费模型”的实现。分享的同时加深对LinkedBlockingQueue的印象,顺便再说说其特性:[code="java"]import java.util.Scanner;import java.util.c...

2010-01-29 20:45:29 135

原创 多线程基础总结十--LinkedBlockingQueue

随着多线程基础总结的增多,却明显的感觉知道的越来越少,好像转了一圈又回到了什么都不懂的起点。不过还是试着介绍一下队列的并发实现,努力尽快的驱散迷雾。队列这个数据结构已经很熟悉了,利用其先进先出的特性,多数生产消费模型的首选数据结构就是队列。对于有多个生产者和多个消费者线程的模型来说,最重要是他们共同访问的Queue是线程安全的。JDK中提供的线程安全的Queue的实现还是很丰富的:Arra...

2010-01-28 14:33:56 210

原创 号称放倒一片的一道J2SE基础题的个人理解

近日无意中看到一道Java基础题,号称在接受测试的1000名人中,仅有1.5%的程序员或者项目经理完全正确。原题是3个小程序并要求按顺序答题,我修改了一下弄成一个例子。个人觉得虽然是三个稍微不同的例子,但是考察的本质都是一样,只要了解了原理就是100个变种也还是表达一个意思。先来看看例子:[code="java"]/** * * @author: yanxuxin * @d...

2010-01-23 14:07:56 98

原创 多线程基础总结九--Mina窥探(1)

一直以来的多线程的基础总结都是脱离应用的,但是要说多线程的应用就不能不说Mina。Apache Mina作为一个高性能的Java异步并发网络通讯框架,其内部的多线程的设计和实现可谓是学习多线程的良药。手上的Mina源码是svn剪下来的最新的代码,mvn转化成eclipse项目后导入mina-core的源码看看多线程的应用吧。 首先简单的介绍在org.apache.mina.c...

2010-01-21 23:46:47 172

原创 多线程基础总结八--ReentrantReadWriteLock

说到ReentrantReadWriteLock,首先要做的是与ReentrantLock划清界限。它和后者都是单独的实现,彼此之间没有继承或实现的关系。然后就是总结这个锁机制的特性了: (a).重入方面其内部的WriteLock可以获取ReadLock,但是反过来ReadLock想要获得WriteLock则永远都不要想。 (b).WriteLock可以降级...

2010-01-15 23:22:55 109

原创 多线程基础总结七--ReentrantLock

之前总结了部分无锁机制的多线程基础,理想的状态当然是利用无锁同步解决多线程程序设计的问题。但是实际碰到的问题使得很多情况下,我们不得不借助锁同步来保证线程安全。自从JDK5开始,有两种机制来屏蔽代码块在并行访问的干扰,synchronized关键字已经介绍过了部分内容,所以这次简单的说说另一种锁机制:ReentrantLock。 对于synchronized的缺点之前也简单的...

2010-01-09 23:17:28 105

原创 折腾无极限,又是新一年

略带兴奋的开始了新一 年第一次折腾!对于我个人来说,除了代码之外的另一爱好就是折腾。折腾好玩的软件,系统,硬件是我非常享受的放松方式。所以前几天就又忍不住折腾了我的x61一把。 手上的x61差不多两年的服役期了,所以风扇的脾气也变的很大。虽然拆了不少次机器,但是都没有动过风扇,看着人们习惯用大清理来迎接新年,于是我也忍不住开始了清理过程。从网上买了风扇锂基脂和号称cpu超级导...

2010-01-08 14:00:02 133

原创 关于atomic问题的一点理解

之前看到一个帖子是关于atomic使用的,当时没有仔细分析问题,理解有误,作者回信给我,我又去看了一下.原来的问题大致如下:[code="java"]private AtomicLong longValue = new AtomicLong(0);if(longValue.incrementAndGet() > 50) { longValue = new AtomicL...

2009-12-30 16:42:56 380

Leopard下IDEA8/9的JVM设置

IDEA从8到9用着越来越顺手,总体感觉比Eclipse来说更加智能一些,使用更加方便一些。之前为了不混淆记忆,把常用的Eclipse和IDEA的快捷键尽量按照windows下eclipse的快捷键的布局设置了,不然加上textmate的记都记死了。但是IDEA默认的初始化的内存是128m,最大512m,permsize是250m,如果在内部启动tomcat或者其它的web、应用服务器的话,...

2009-12-25 01:18:38 88

就这么不再怵maven了

最近在找一些开源web项目素材的时候,才发现不管国内还是国外的开源项目多数都转型成maven构建了。想当年ant构建的时候忍不住学习了ant,现在总不能看着眼馋不会用maven吧,不然那么多的开源项目只是找齐依赖包都可以哭几天了。于是花了一天整了整maven的东东,发现这玩意挺好玩。 我用的是mac os10.5的黑苹果,所幸maven2.2早就内置了,省得我下载建软链接了。ma...

2009-12-20 19:52:17 112

原创 多线程基础总结六--synchronized(2)

早在总结一时,我就尽量的把synchronized的重点说的简单:它就是配和对象的隐式锁使用的,注意一定是对象的隐式锁!那么下面的这个例子又怎么解释呢?[code="java"]/** * User: yanxuxin * Date: Dec 17, 2009 * Time: 9:38:27 PM */public class ImplicitLockSample {...

2009-12-18 18:45:14 106

原创 多线程基础总结五--atomic

在简单介绍java.util.concurrent.atomic包之前,有个概念要先抄袭熟悉一遍:CAS(比较并交换)。现在大多数的处理器都提供对并发访问的支持,这个支持的反映方式就是提供硬件的指令支持多处理的特殊需求。比如检测或者阻止其它处理器的并发访问来更新共享变量的指令。对于Intel x86架构的处理器来说就是通过提供实现CAS或者比较并设置的硬件原语指令集。CAS操作的三个操作数:...

2009-12-17 19:46:26 99

原创 多线程基础总结四--ThreadLocal

说到ThreadLocal,首先说说这个类的命名。直观上看好像是个Thread的什么亲戚,但其实它想表达的意思是线程本地变量,也就是说每个线程自己的变量。它作为一个JDK5以后支持范型的类,主要是想利用范型把非线程安全的共享变量,封装成绑定线程的安全不共享变量。这样的解释我想我们多半能猜出它的实现思路:把一个共享变量在每个线程使用时,初始化一个副本,并且和线程绑定。以后所有的线程对共享变量的...

2009-12-16 19:48:22 91

原创 多线程基础总结三--volatile

前面的两篇总结简单的说明了同步的一些问题,在使用基础的同步机制中还有两个可以分享的技术:volatile关键字和ThreadLocal。合理的根据场景利用这些技术,可以有效的提高并发的性能,下面尝试结合自己的理解叙述这部分的内容,应该会有理解的偏差,我也会尽量的在完善自己理解的同时同步更新文章的错误。 或许在知道synchronized配和对象内部锁的机制以后,可以提高写出正确同步的...

2009-12-15 20:09:37 77

原创 多线程基础总结二--Thread

对于Thread来说只想说两个方法,一个是setDaemon(false|true),另一个是join()。首先说说守护线程,这么东西是干什么用的?对于Java应用我们都知道main方法是入口,它的运行代表着主线程开始工作了,我们也知道JVM里面有垃圾回收器的存在使得我们放心让main飞奔,然而这背后的故事是垃圾回收线程作为守护着主线程的守护线程默默的付出着。。。很像那个啥啊,呵呵。令...

2009-12-12 23:27:12 80

原创 多线程基础总结一--synchronized(1)

最近写关于并发的小应用,才发现真的该好好的正视java的多线程了。之前没有深入的掌握,用起来也是那么的吃力。作为J2SE里面为数不多的重要难点之一,多线程应用一直是我以敬畏的心态去尽量避开的,只是通过一些实例掌握一些简单的应用。这段时间会多用点时间去掌握,有需要写下来的我也会通过这种方式既分享又加深理解。 首先这篇只涉及基础的知识整理,对于并发包java.util.concurrent内的...

2009-12-12 23:23:41 141

由destory-method引发的IOC容器设计的思考

第一次读Spring的源码大概是半年前写硕士论文的时候,那时侯只是因为想从中看看如何运用设计模式处理特定的问题,同时也对这个被追捧和广泛使用的框架内部的实现很好奇。期间结合着2.5的reference和CodeLogic分析工具看了其IOC,AOP,事务,三方集成的源码,迷迷糊糊的。这样看下来感觉好像知道点什么,但最直接的感受是盲人摸象,知之甚少,有种时间被浪费的感觉。最近对其destory...

2009-12-07 16:51:46 109

KMP算法的简单实现

一直把精力放在web应用的开发和框架学习,应用,架构的领悟等等这些几乎见不到算法存在的场景中,对算法这个‘内功’修炼一直有种没处下牙的尴尬境地。不过这不代表从此不再接触算法,一味的只去掌握JDK封装好的API库。今天使用String的indexOf(...)的时候突然想看看这个方法的实现,于是... 1.6.0.17的算法实现主要代码: [code="jav...

2009-12-04 01:48:55 102

关于Digester的SetNextRule的一点想法

对于Digester的使用最近才明白一直以来的疑惑,主要是针对SetNextRule的。以下面的部分的xml为例:[code="xml"] [/code]其对应的Digester的构造代码大致如下:[code="java"]Digester digester = new Digester();digester.push(this);...

2009-11-26 20:38:43 282

tomcat6启动源码浅析一

一直以来都是用tomcat做web服务器进行开发,很想知道其内部的一些原理和实现(虽然很多人说知道原理又不能当饭吃)。今天跟踪调试了源码的启动程序(关于源码的eclipse的导入以及ant的构建,网上有大把的资料,google一下就ok了),总算知道点大致的启动步骤,有些浅显的领悟分享一下: org.apache.catalina.startup.Bootstrap作为启动入口,此类...

2009-11-24 19:22:03 126

tomcat6启动源码浅析二

上一篇文章只是很简单的跟踪了tomcat启动的主线(因为刚刚看代码,所以不可能一下子全部都看的懂,比较菜),本次把最近看到的一些新的内容和领悟继续分享一下,本次关心的主题是tomcat是怎么启动的时候部署webapp下面的每一个web应用的? 前面的启动分析在之前的文章中有介绍,直接从Catalina开始看起。在此先说明一点,即将出场的:StandardEngine,Standard...

2009-11-24 19:19:44 102

leopard10.5.8安装gcc4

最近因为很顺利的在x61上硬盘安装了ideneb1.4_leopard10.5.6并且成功官方升级到5.8,终于达到了华丽与实用的结合。使用了1个月左右,发现这个平台的软件还是很多很优秀的,由于暂时用黑苹果就不多说了。 主要是web开发的所有环境,工具都正常使用以后,还是想继续在linux上的c的应用,工具可以使用textmate,但是编译器osx并没有自带。开始傻不啦叽的搜索,都说...

2009-11-21 14:33:56 144

空空如也

空空如也

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

TA关注的人

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