﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-West Farm-随笔分类-Java</title><link>http://www.blogjava.net/fredcn/category/49809.html</link><description>吾本布衣，生于川北，躬耕于代码的田地上。</description><language>zh-cn</language><lastBuildDate>Tue, 03 Dec 2013 13:29:23 GMT</lastBuildDate><pubDate>Tue, 03 Dec 2013 13:29:23 GMT</pubDate><ttl>60</ttl><item><title>Extend Gson to support field level custom conversion</title><link>http://www.blogjava.net/fredcn/archive/2013/11/22/406605.html</link><dc:creator>West Farmer</dc:creator><author>West Farmer</author><pubDate>Fri, 22 Nov 2013 11:22:00 GMT</pubDate><guid>http://www.blogjava.net/fredcn/archive/2013/11/22/406605.html</guid><wfw:comment>http://www.blogjava.net/fredcn/comments/406605.html</wfw:comment><comments>http://www.blogjava.net/fredcn/archive/2013/11/22/406605.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/fredcn/comments/commentRss/406605.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fredcn/services/trackbacks/406605.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Gson is library created by google guys, it is used for java bean to json serialization/deserialization.&nbsp;Gson can serialize any java bean, collection, map to json, and don't need to care about the...&nbsp;&nbsp;<a href='http://www.blogjava.net/fredcn/archive/2013/11/22/406605.html'>阅读全文</a><img src ="http://www.blogjava.net/fredcn/aggbug/406605.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fredcn/" target="_blank">West Farmer</a> 2013-11-22 19:22 <a href="http://www.blogjava.net/fredcn/archive/2013/11/22/406605.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java运行时编译</title><link>http://www.blogjava.net/fredcn/archive/2011/10/21/361751.html</link><dc:creator>West Farmer</dc:creator><author>West Farmer</author><pubDate>Fri, 21 Oct 2011 09:05:00 GMT</pubDate><guid>http://www.blogjava.net/fredcn/archive/2011/10/21/361751.html</guid><wfw:comment>http://www.blogjava.net/fredcn/comments/361751.html</wfw:comment><comments>http://www.blogjava.net/fredcn/archive/2011/10/21/361751.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fredcn/comments/commentRss/361751.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fredcn/services/trackbacks/361751.html</trackback:ping><description><![CDATA[<div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">void</span><span style="color: #000000; ">&nbsp;main(String[]&nbsp;args)&nbsp;</span><span style="color: #0000FF; ">throws</span><span style="color: #000000; ">&nbsp;IOException&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File&nbsp;sourceFile&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;File(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">c:\\java\\A.java</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JavaCompiler&nbsp;compiler&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;ToolProvider.getSystemJavaCompiler();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(System.getProperties().getProperty(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">java.class.path</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;F:\\IndigoSpace\\ejp</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;compiler.run(</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000FF; ">null</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">-cp</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;System.getProperties().getProperty(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">java.class.path</span><span style="color: #000000; ">"</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">;F:\\IndigoSpace\\ejp</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;sourceFile.getPath());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;File(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">c:\\java\\</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).toURI().toURL());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;URLClassLoader&nbsp;loader&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;URLClassLoader(</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;URL[]{</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;File(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">c:\\java\\</span><span style="color: #000000; ">"</span><span style="color: #000000; ">).toURI().toURL()});<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">try</span><span style="color: #000000; ">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;loader.loadClass(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">A</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000FF; ">catch</span><span style="color: #000000; ">&nbsp;(ClassNotFoundException&nbsp;e)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
需要注意的是，上面的代码只有在JDK上才能运行，因为JDK里面才有javac。而且在实际应用中，你还要<span style="color: red; ">自己将package声明转换成文件目录</span>，否者装载类的时候就会找不到。<img src ="http://www.blogjava.net/fredcn/aggbug/361751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fredcn/" target="_blank">West Farmer</a> 2011-10-21 17:05 <a href="http://www.blogjava.net/fredcn/archive/2011/10/21/361751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java中鲜为人知的功能</title><link>http://www.blogjava.net/fredcn/archive/2011/10/12/361042.html</link><dc:creator>West Farmer</dc:creator><author>West Farmer</author><pubDate>Wed, 12 Oct 2011 05:11:00 GMT</pubDate><guid>http://www.blogjava.net/fredcn/archive/2011/10/12/361042.html</guid><wfw:comment>http://www.blogjava.net/fredcn/comments/361042.html</wfw:comment><comments>http://www.blogjava.net/fredcn/archive/2011/10/12/361042.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/fredcn/comments/commentRss/361042.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fredcn/services/trackbacks/361042.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原文地址：http://stackoverflow.com/questions/15496/hidden-features-of-java我选择几个有趣的：1.&nbsp;Double Brace Initialization&nbsp;Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHi...&nbsp;&nbsp;<a href='http://www.blogjava.net/fredcn/archive/2011/10/12/361042.html'>阅读全文</a><img src ="http://www.blogjava.net/fredcn/aggbug/361042.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fredcn/" target="_blank">West Farmer</a> 2011-10-12 13:11 <a href="http://www.blogjava.net/fredcn/archive/2011/10/12/361042.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何衡量一个对象实例中的数据发生了变化</title><link>http://www.blogjava.net/fredcn/archive/2011/10/11/360976.html</link><dc:creator>West Farmer</dc:creator><author>West Farmer</author><pubDate>Tue, 11 Oct 2011 08:51:00 GMT</pubDate><guid>http://www.blogjava.net/fredcn/archive/2011/10/11/360976.html</guid><wfw:comment>http://www.blogjava.net/fredcn/comments/360976.html</wfw:comment><comments>http://www.blogjava.net/fredcn/archive/2011/10/11/360976.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/fredcn/comments/commentRss/360976.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/fredcn/services/trackbacks/360976.html</trackback:ping><description><![CDATA[有的时候应用程序会hold一个对象实例，随着时间的推移，该对象所含的数据可能发生变化（比如调用setter方法改变一个属性的值）。<br />那么如何明确相比于一个特定的时刻，某个对象实例中的数据发生了变化呢？<br /><br />方法肯定不止一种，我的方法是：<br /><div style="font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; padding-top: 4px; width: 98%; word-break: break-all; background-color: #eeeeee; "><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><span style="color: #0000FF; ">public</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">static</span><span style="color: #000000; ">&nbsp;String&nbsp;hashOf(Serializable&nbsp;object)&nbsp;</span><span style="color: #0000FF; ">throws</span><span style="color: #000000; ">&nbsp;IOException,&nbsp;NoSuchAlgorithmException&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ByteArrayOutputStream&nbsp;baos&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ByteArrayOutputStream();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ObjectOutputStream&nbsp;oo&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;ObjectOutputStream(baos);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oo.writeObject(object);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oo.flush();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageDigest&nbsp;messageDigest&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;MessageDigest.getInstance(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">MD5</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">byte</span><span style="color: #000000; ">[]&nbsp;data&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;baos.toByteArray();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;oo.close();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;baos.close();<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;messageDigest.update(data,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;data.length);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BigInteger&nbsp;hash&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000FF; ">new</span><span style="color: #000000; ">&nbsp;BigInteger(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;messageDigest.digest());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000FF; ">return</span><span style="color: #000000; ">&nbsp;String.format(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%1$032X</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;hash);<br />}</span></div><br />说白了就是把一个对象实例看作byte数组，然后对这个byte数组计算MD5，如果MD5值一样就表示所含数据一致。<br />MD5算法不是完美的，但是在实际应用中已经足够的，你也可以使用CRC32。<br /><br />欢迎指正。<img src ="http://www.blogjava.net/fredcn/aggbug/360976.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/fredcn/" target="_blank">West Farmer</a> 2011-10-11 16:51 <a href="http://www.blogjava.net/fredcn/archive/2011/10/11/360976.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>