<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/kingquake21</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; kingquake21]]></copyright><item><title><![CDATA[Dynamic Proxy]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6339700</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6339700</guid><author>kingquake21</author><pubDate>Thu, 21 Apr 2011 20:03:00 +0800</pubDate><description><![CDATA[<br />对于Dynamic
Proxy的原理，很多地方都有介绍，里面最神秘的就是JVM会在运行时动态生成一个类，好奇心驱使，想看看这个生成的类的代码是啥样的。于是，跟踪到Proxy.newProxyInstance()中，发现生成代码的关键语句byte[]
ProxyGenerator.generateProxyClass(String proxyname,Class[]
instances)，写了段代码来输出那个类文件，并得到反编译的结果<br />
----------IPerson .ja]]></description><category></category></item><item><title><![CDATA[局部内部类为什么只能访问final局部变量，对于成员变量却可以随便访问？]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6336500</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6336500</guid><author>kingquake21</author><pubDate>Wed, 20 Apr 2011 16:51:00 +0800</pubDate><description><![CDATA[<br />局部内部类为什么只能访问final局部变量，对于成员变量却可以随便访问？<br />public class OuterClass {
	private int memberField = 10;
	
	public void outerDo(){
		final int localField = 20;
		
		class InnerClass{
			public void innerDo(){
				memberField = localField;
			}
		]]></description><category></category></item><item><title><![CDATA[WTP开发调试web应用时工作目录]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6336352</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6336352</guid><author>kingquake21</author><pubDate>Wed, 20 Apr 2011 16:09:00 +0800</pubDate><description><![CDATA[<br />/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0<br />mark一下，使用eclipse内置的WTP开发调试web应用时，这个地址就是work directory，而不是在tomcat的安装目录下，也不是采用context文件的方式，而是全盘复制到上面的目录中]]></description><category></category></item><item><title><![CDATA[Java中Abstract class与interface的差别]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6323638</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6323638</guid><author>kingquake21</author><pubDate>Thu, 14 Apr 2011 16:53:00 +0800</pubDate><description><![CDATA[对于语法差别，很多文章都写了，就不再赘述了，这儿主要讲本质的差异抽象类定义了其子类的核心特征和功能（is a），例如继承Thread通常表明该类“is a”线程而接口只是定义了类的附加能力（-able/can-do），例如Runable表示可以单独运行的任务，但是并不是说该类is a线程；Comparable表示类具有比较的功能，但是并不是说该类"is a"比较器如果需要为子类添加或修改默认的行为，此时应该选择抽象类，而不是接口如果需要为不相干的类提供公共的功能，应该使用接口；如果建立的模型在层次上很接近，]]></description><category></category></item><item><title><![CDATA[JAVA类装载的三个基本原则]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6276518</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6276518</guid><author>kingquake21</author><pubDate>Fri, 25 Mar 2011 09:40:00 +0800</pubDate><description><![CDATA[<br />1.      
委托原则：当加载一个类时，首先会委托父加载器来加载<br /><br />2.      
可视化原则：子类加载器能看到父类加载器加载的所有类，但是反过来是不行的。同时，兄弟类加载器也看不到对方加载的类<br /><br />3.      
唯一性原则：如果一个类加载器加载了某个类，那么它的子类加载器是不会再加载该类了的。<br /><br />Delegation Principle: If a class is not loaded already, the cla]]></description><category></category></item><item><title><![CDATA[ThreadPoolExecutor的线程池控制策略]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6258949</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6258949</guid><author>kingquake21</author><pubDate>Fri, 18 Mar 2011 14:13:00 +0800</pubDate><description><![CDATA[If fewer than corePoolSize threads are running, the Executor always prefers adding a new thread rather than queuing. 
If corePoolSize or more threads are running, the Executor always prefers queuing a request rather than adding a new thread. 
If a reques]]></description><category></category></item><item><title><![CDATA[补码和反码]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6226423</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6226423</guid><author>kingquake21</author><pubDate>Sun, 06 Mar 2011 01:03:00 +0800</pubDate><description><![CDATA[补码，two's complement，对于非负数x，我们用2w-x（这里只有一个2）来计算-x的w位表示；

反码，ones’ complement，我们用[111...1]-x（这里有很多1）来计算-x的反码表示。]]></description><category></category></item><item><title><![CDATA[JSR133中volatile关键字的理解，有一个地方很迷惑]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6161315</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6161315</guid><author>kingquake21</author><pubDate>Mon, 24 Jan 2011 15:29:00 +0800</pubDate><description><![CDATA[volatile的语义：
1. 确保对volatile域的读写操作都是直接在主存内进行，不缓存到线程的本地内存中。
2. 在旧的JMM中，volatile域的操作与nonvolatile域的操作之间可以重新排序。但是在JSR133以后，规定volatile操作和其他任何内存操作之间都不允许进行重新排序。
3. 在新的JMM下，当线程A写一个volatile变量V，然后线程B读取V的时侯，任何在写入V时对线程A可见的变量值，都对B可见

第3条很奇怪，感觉有点象synchronized的作用了。是不]]></description><category></category></item><item><title><![CDATA[同步和内存可见性]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6161164</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6161164</guid><author>kingquake21</author><pubDate>Mon, 24 Jan 2011 14:22:00 +0800</pubDate><description><![CDATA[synchronized 关键字的作用：
1. 作为线程间的互斥锁，防止多个线程同时访问由一个监视器保护的同步块
2. 保证内存的可见性。它可以确保，当离开同步块的时候将缓存数据刷新到内存中，当进入同步块的时候使本地缓存失效，从内存中获取最新数据。如果两个同步块被同一个监视器所保护，那么这两个同步块根据运行的时间有一个happen-before的关系，并且在后面执行的同步块中是可以看到前面那个同步块对内存的更新的。
3. 确保编译器不会将同步块中的指令移到同步块外面来（尽管在某些时候可以将同步块外面的]]></description><category></category></item><item><title><![CDATA[yield和sleep的区别]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6160952</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6160952</guid><author>kingquake21</author><pubDate>Mon, 24 Jan 2011 11:56:00 +0800</pubDate><description><![CDATA[JDK1.5.0的API文档里的描述：
yield:Causes the currently executing thread object to temporarily pause and allow 
other threads to execute.
sleep:Causes the currently executing thread to sleep (temporarily cease execution) for 
the specified number of millisecond]]></description><category></category></item><item><title><![CDATA[DCL和happens-before的学习资料]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6130307</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6130307</guid><author>kingquake21</author><pubDate>Wed, 12 Jan 2011 09:15:00 +0800</pubDate><description><![CDATA[DCL和happens-before的学习心得和资料]]></description><category></category></item><item><title><![CDATA[if的用法（英语语法）]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6110065</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6110065</guid><author>kingquake21</author><pubDate>Fri, 31 Dec 2010 16:34:00 +0800</pubDate><description><![CDATA[There are four main types of if sentences in English, often called conditional sentences.
These sentences are in two halves, with the if part in one half and the other part where you can use words such ascan, will, may, might, could and would.]]></description><category></category></item><item><title><![CDATA[使用Spring的HTTP invoke调用时产生的异常归类]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6107502</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6107502</guid><author>kingquake21</author><pubDate>Thu, 30 Dec 2010 16:29:00 +0800</pubDate><description><![CDATA[使用Spring的HTTP invoke调用时产生的异常归类]]></description><category></category></item><item><title><![CDATA[JTable中实现拖拽式多选、删除功能]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6095977</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6095977</guid><author>kingquake21</author><pubDate>Fri, 24 Dec 2010 11:27:00 +0800</pubDate><description><![CDATA[从IBM notes邮箱中得到的灵感，在收件箱的最左侧可以使用鼠标拖拽选择多封邮件，或者是拖拽取消多封邮件的选择，以及Ctrl-A全选所有邮件的功能，觉得很是方便，省去了在界面中添加全选按钮导致界面难看、不易布局的问题]]></description><category></category></item><item><title><![CDATA[JTable中ListSelectionListener、MousePressed、MouseReleased、MouseClicked事件之间的先后顺序]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6091173</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6091173</guid><author>kingquake21</author><pubDate>Wed, 22 Dec 2010 10:51:00 +0800</pubDate><description><![CDATA[当只点击一行（例子中数字为rowIndex）时，事件发生的顺序是ListSelection、MousePressed、ListSelection、MouseReleased、MouseClicked10:31:48,281 ERROR [MyTableDialog] ListSelection before mousePressed: getFirstIndex-1|getLastIndex-110:31:48,281 ERROR [MyTableDialog] after mousePressed:1 i]]></description><category></category></item><item><title><![CDATA[利用jdb转储线程的堆栈——where]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6090218</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6090218</guid><author>kingquake21</author><pubDate>Tue, 21 Dec 2010 19:03:00 +0800</pubDate><description><![CDATA[<br /> <br />在jdb的help会输出下面这些帮助信息，但是“转储线程的堆栈”却没有命令，这是因为英文的转储命令是where，被翻译成了“其中”<br />threads [线程组]            - 列出线程<br />thread <线程 ID>            - 设置默认线程<br />suspend [线程 ID]           - 暂停线程（默认为所有线程）<br />resume [线程 ID]            - 恢复线程（默认为所有线程）<br />其]]></description><category></category></item><item><title><![CDATA[最近在读Java concurrency in practice，对其中文的翻译之差忍无可忍]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6088401</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6088401</guid><author>kingquake21</author><pubDate>Tue, 21 Dec 2010 09:36:00 +0800</pubDate><description><![CDATA[非常详细并且易懂的书，但是如果你只看中文翻译版的话，那会把你看得晕死，一定得结合英文版来看由韩锴、方妙翻译的实在是太惨不忍睹了，基本上当作翻译改错在学习，句式稍微长点的翻译就生硬的不行，意思稍微多点的单词翻译就不准确例如把sticky翻译成“粘”，current翻译成“并发的”，custom翻译成“常用的”，poll翻译成“获取”，这些关键字一旦翻译错，导致整个句子就让人无法理解建议想学Java并发编程的同学还是老老实实的看英文原版吧，这本翻译可以用来改错用]]></description><category></category></item><item><title><![CDATA[TOMCAT默认配置的安全问题]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6057763</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6057763</guid><author>kingquake21</author><pubDate>Mon, 06 Dec 2010 12:10:00 +0800</pubDate><description><![CDATA[<br />有一个文件tomcat/conf/server.xml，里面默认的内容为<br /><Server port="8005" shutdown="SHUTDOWN">
  <!-- Comment these entries out to disable JMX MBeans support used for the 
       administration web application -->
  <Listener className="org.apache.catalina.co]]></description><category></category></item><item><title><![CDATA[python写的一个串联文件的小程序]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6022111</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6022111</guid><author>kingquake21</author><pubDate>Fri, 19 Nov 2010 17:44:00 +0800</pubDate><description><![CDATA[<br />为了看小说，下了一个zip包，打开一看居然是400多个散文件，没办法，只好鼓捣了半天python把文件给串起来了，由于中间有个字符有编码问题，只好捕捉了pass掉<br />import os
path = "E://Python Workspace//20429"
newfile = open("E://Python Workspace//bbsl.txt",'w')
filelist = os.listdir(path)
for filename in filelist:
    ]]></description><category></category></item><item><title><![CDATA[JS中正则表达式在IE和FF下的区别，global属性]]></title><link>https://blog.youkuaiyun.com/kingquake21/article/details/6010283</link><guid>https://blog.youkuaiyun.com/kingquake21/article/details/6010283</guid><author>kingquake21</author><pubDate>Mon, 15 Nov 2010 15:29:00 +0800</pubDate><description><![CDATA[<br />		$.extend({
			/*
			 * 验证是否为正确的车牌号
			 * @return {Boolean} true：验证通过；false：验证识别
			 * @param {String} plateNum 车牌号
			 */
			isValidatePlateNum: function(plateNum){
				//第一位为代表市地区的字母，后面五位可以为字母或数字，字母必须全部大写
				var pattern = /^[A-Z]{1}[A-Z0-]]></description><category></category></item></channel></rss>