﻿<?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-SexTian</title><link>http://www.blogjava.net/chenkkkabc/</link><description>java学习</description><language>zh-cn</language><lastBuildDate>Sat, 20 Jun 2026 09:36:16 GMT</lastBuildDate><pubDate>Sat, 20 Jun 2026 09:36:16 GMT</pubDate><ttl>60</ttl><item><title>贪心算法</title><link>http://www.blogjava.net/chenkkkabc/articles/greedy.html</link><dc:creator>chenkkkabc</dc:creator><author>chenkkkabc</author><pubDate>Mon, 22 Jun 2009 10:12:00 GMT</pubDate><guid>http://www.blogjava.net/chenkkkabc/articles/greedy.html</guid><wfw:comment>http://www.blogjava.net/chenkkkabc/comments/283560.html</wfw:comment><comments>http://www.blogjava.net/chenkkkabc/articles/greedy.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenkkkabc/comments/commentRss/283560.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenkkkabc/services/trackbacks/283560.html</trackback:ping><description><![CDATA[贪心算法
   <img src ="http://www.blogjava.net/chenkkkabc/aggbug/283560.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenkkkabc/" target="_blank">chenkkkabc</a> 2009-06-22 18:12 <a href="http://www.blogjava.net/chenkkkabc/articles/greedy.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>回溯算法</title><link>http://www.blogjava.net/chenkkkabc/articles/backtracking.html</link><dc:creator>chenkkkabc</dc:creator><author>chenkkkabc</author><pubDate>Mon, 22 Jun 2009 05:49:00 GMT</pubDate><guid>http://www.blogjava.net/chenkkkabc/articles/backtracking.html</guid><wfw:comment>http://www.blogjava.net/chenkkkabc/comments/283557.html</wfw:comment><comments>http://www.blogjava.net/chenkkkabc/articles/backtracking.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenkkkabc/comments/commentRss/283557.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenkkkabc/services/trackbacks/283557.html</trackback:ping><description><![CDATA[回溯法是一个既带有系统性又带有跳跃性的的搜索算法。它在包含问题的所有解的解空间树中，按照深度优先的策略，从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时，总是先判断该结点是否肯定不包含问题的解。如果肯定不包含，则跳过对以该结点为根的子树的系统搜索，逐层向其祖先结点回溯。否则，进入该子树，继续按深度优先的策略进行搜索。回溯法在用来求问题的所有解时，要回溯到根，且根结点的所有子树都已被搜索遍才结束。而回溯法在用来求问题的任一解时，只要搜索到问题的一个解就可以结束。<br />
<br />
<img src ="http://www.blogjava.net/chenkkkabc/aggbug/283557.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenkkkabc/" target="_blank">chenkkkabc</a> 2009-06-22 13:49 <a href="http://www.blogjava.net/chenkkkabc/articles/backtracking.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>动态规划</title><link>http://www.blogjava.net/chenkkkabc/articles/dynamic_programming.html</link><dc:creator>chenkkkabc</dc:creator><author>chenkkkabc</author><pubDate>Mon, 22 Jun 2009 05:48:00 GMT</pubDate><guid>http://www.blogjava.net/chenkkkabc/articles/dynamic_programming.html</guid><wfw:comment>http://www.blogjava.net/chenkkkabc/comments/283555.html</wfw:comment><comments>http://www.blogjava.net/chenkkkabc/articles/dynamic_programming.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenkkkabc/comments/commentRss/283555.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenkkkabc/services/trackbacks/283555.html</trackback:ping><description><![CDATA[<p>动态规划</p>
<img src ="http://www.blogjava.net/chenkkkabc/aggbug/283555.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenkkkabc/" target="_blank">chenkkkabc</a> 2009-06-22 13:48 <a href="http://www.blogjava.net/chenkkkabc/articles/dynamic_programming.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分治算法</title><link>http://www.blogjava.net/chenkkkabc/articles/divide_and_conquer.html</link><dc:creator>chenkkkabc</dc:creator><author>chenkkkabc</author><pubDate>Mon, 22 Jun 2009 05:46:00 GMT</pubDate><guid>http://www.blogjava.net/chenkkkabc/articles/divide_and_conquer.html</guid><wfw:comment>http://www.blogjava.net/chenkkkabc/comments/283554.html</wfw:comment><comments>http://www.blogjava.net/chenkkkabc/articles/divide_and_conquer.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenkkkabc/comments/commentRss/283554.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenkkkabc/services/trackbacks/283554.html</trackback:ping><description><![CDATA[1.定义<br />
把一个复杂的问题分解成多个相同或相似的子问题，再把子问题分成更小的子问题&#8230;&#8230;直到最后子问题可以简单的直接求解，再将子问题的解的合并即得到原问题的解。分治法产生子问题必然导致递归过程出现，可以利用递归技术缩小子问题进行求解。<br />
<br />
2.
<img src ="http://www.blogjava.net/chenkkkabc/aggbug/283554.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenkkkabc/" target="_blank">chenkkkabc</a> 2009-06-22 13:46 <a href="http://www.blogjava.net/chenkkkabc/articles/divide_and_conquer.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>递归算法</title><link>http://www.blogjava.net/chenkkkabc/articles/recursion.html</link><dc:creator>chenkkkabc</dc:creator><author>chenkkkabc</author><pubDate>Mon, 22 Jun 2009 05:40:00 GMT</pubDate><guid>http://www.blogjava.net/chenkkkabc/articles/recursion.html</guid><wfw:comment>http://www.blogjava.net/chenkkkabc/comments/283552.html</wfw:comment><comments>http://www.blogjava.net/chenkkkabc/articles/recursion.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenkkkabc/comments/commentRss/283552.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenkkkabc/services/trackbacks/283552.html</trackback:ping><description><![CDATA[1.定义<br />
把自己作为自身定义的一部分的方法叫做递归。通常把一个大型复杂的问题给分解成与原问题类似的规模较小的问题来求解。递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时，递归前进；当边界条件满足时，递归返回。<br />
<br />
2.数学基础<br />
数学归纳法<br />
递推公式&lt;=&gt;通项<br />
<br />
3.基本规则<br />
a.基本情况：至少有一种情况可以不用递归解决<br />
b.前进：任何递归调用必须朝着基本情况前进<br />
c.可行性：总是假设递归调用是可行的<br />
d.复利规则：永远不要在不同的递归调用中重复执行解决同一问题实例的工作<br />
<br />
4.优缺点<br />
结构简单、清晰，可读性好，易于验证正确性。<br />
浪费空间，执行效率低。<br />
<br />
5.实例<br />
阶乘<br />
二分搜索<br />
画尺子<br />
分形<br />
汉诺塔<br />
<img src ="http://www.blogjava.net/chenkkkabc/aggbug/283552.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenkkkabc/" target="_blank">chenkkkabc</a> 2009-06-22 13:40 <a href="http://www.blogjava.net/chenkkkabc/articles/recursion.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>二分搜索算法</title><link>http://www.blogjava.net/chenkkkabc/articles/binary_search.html</link><dc:creator>chenkkkabc</dc:creator><author>chenkkkabc</author><pubDate>Sun, 21 Jun 2009 08:26:00 GMT</pubDate><guid>http://www.blogjava.net/chenkkkabc/articles/binary_search.html</guid><wfw:comment>http://www.blogjava.net/chenkkkabc/comments/283466.html</wfw:comment><comments>http://www.blogjava.net/chenkkkabc/articles/binary_search.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenkkkabc/comments/commentRss/283466.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenkkkabc/services/trackbacks/283466.html</trackback:ping><description><![CDATA[ <img src ="http://www.blogjava.net/chenkkkabc/aggbug/283466.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenkkkabc/" target="_blank">chenkkkabc</a> 2009-06-21 16:26 <a href="http://www.blogjava.net/chenkkkabc/articles/binary_search.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>连续子序列最大和问题</title><link>http://www.blogjava.net/chenkkkabc/articles/maxmum_contiguous_subsequence_sum_problem.html</link><dc:creator>chenkkkabc</dc:creator><author>chenkkkabc</author><pubDate>Sat, 20 Jun 2009 15:48:00 GMT</pubDate><guid>http://www.blogjava.net/chenkkkabc/articles/maxmum_contiguous_subsequence_sum_problem.html</guid><wfw:comment>http://www.blogjava.net/chenkkkabc/comments/283416.html</wfw:comment><comments>http://www.blogjava.net/chenkkkabc/articles/maxmum_contiguous_subsequence_sum_problem.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenkkkabc/comments/commentRss/283416.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenkkkabc/services/trackbacks/283416.html</trackback:ping><description><![CDATA[ <img src ="http://www.blogjava.net/chenkkkabc/aggbug/283416.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenkkkabc/" target="_blank">chenkkkabc</a> 2009-06-20 23:48 <a href="http://www.blogjava.net/chenkkkabc/articles/maxmum_contiguous_subsequence_sum_problem.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>面向对象的特征</title><link>http://www.blogjava.net/chenkkkabc/articles/object_oriented_feature.html</link><dc:creator>chenkkkabc</dc:creator><author>chenkkkabc</author><pubDate>Thu, 18 Jun 2009 14:16:00 GMT</pubDate><guid>http://www.blogjava.net/chenkkkabc/articles/object_oriented_feature.html</guid><wfw:comment>http://www.blogjava.net/chenkkkabc/comments/283121.html</wfw:comment><comments>http://www.blogjava.net/chenkkkabc/articles/object_oriented_feature.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenkkkabc/comments/commentRss/283121.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenkkkabc/services/trackbacks/283121.html</trackback:ping><description><![CDATA[1. 抽象<br />
<br />
2. 封装<br />
<br />
3. 继承<br />
<br />
4. 多态
 <img src ="http://www.blogjava.net/chenkkkabc/aggbug/283121.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenkkkabc/" target="_blank">chenkkkabc</a> 2009-06-18 22:16 <a href="http://www.blogjava.net/chenkkkabc/articles/object_oriented_feature.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>内存管理</title><link>http://www.blogjava.net/chenkkkabc/articles/memory_management.html</link><dc:creator>chenkkkabc</dc:creator><author>chenkkkabc</author><pubDate>Wed, 17 Jun 2009 04:48:00 GMT</pubDate><guid>http://www.blogjava.net/chenkkkabc/articles/memory_management.html</guid><wfw:comment>http://www.blogjava.net/chenkkkabc/comments/282828.html</wfw:comment><comments>http://www.blogjava.net/chenkkkabc/articles/memory_management.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenkkkabc/comments/commentRss/282828.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenkkkabc/services/trackbacks/282828.html</trackback:ping><description><![CDATA[1.Java内存管理方式<br />
Java语言的一个优点就是通过垃圾收集器GC自动管理内存的回收，程序员不需要手动释放内存。内存管理实质上就是对内存的分配和释放问题，在Java中，程序员通过new关键字为每个对象申请内存空间（基本类型除外），所有对象都在堆中分配空间；对象的释放是由GC决定和执行的。GC为了能够准确及时的释放对象，需要监控每个对象的运行状态，包括对象的申请、引用、被引用、赋值等。一个对象被释放的根本原则就是这个对象不再被引用。<br />
2.GC的原理<br />
把对象想象成有向图的节点，引用关系想象成图的有向边，有向边从引用者指向被引用对象。大部分程序以mian线程开始，可以把其想象作main线程顶点开始的一棵树。根节点可达的对象都是有效对象，GC不可回收；而与根节点不可达关系的对象则被认为不被引用，可以通过GC回收。相对计数器模型，有向图模型可以很容易的发现变量循环引用的问题。<br />
3.内存泄露<br />
Java虽然在语言级支持垃圾回收，但是Java程序同样存在内存泄露，无用对象占用的空间不能及时释放，就造成了这段局部时间事实上的内存泄露。要及时释放内存，最好是在用完对象之后立即执行&#8220;object=null;&#8221;语句。<br />
4.对象引用类型<br />
有没有让System.gc()立即收效的办法呢？答案在Java提供的4种对象引用类型上：<br />
a. 强引用<br />
强引用是使用最普遍的引用。如果一个对象具有强引用，那垃圾回收器绝不会回收它。当内存空间不足，Java虚拟机宁愿抛出OutOfMemoryError错误，使程序异常终止，也不会靠随意回收具有强引用的对象来解决内存不足的问题。<br />
b. 软引用<br />
如果一个对象只具有软引用，则内存空间足够，垃圾回收器就不会回收它；如果内存空间不足了，就会回收这些对象的内存。只要垃圾回收器没有回收它，该对象就可以被程序使用。软引用可用来实现内存敏感的高速缓存（下文给出示例）。<br />
软引用可以和一个引用队列（ReferenceQueue）联合使用，如果软引用所引用的对象被垃圾回收器回收，Java虚拟机就会把这个软引用加入到与之关联的引用队列中。<br />
c. 弱引用<br />
弱引用与软引用的区别在于：只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器线程扫描它所管辖的内存区域的过程中，一旦发现了只具有弱引用的对象，不管当前内存空间足够与否，都会回收它的内存。不过，由于垃圾回收器是一个优先级很低的线程，因此不一定会很快发现那些只具有弱引用的对象。<br />
弱引用可以和一个引用队列（ReferenceQueue）联合使用，如果弱引用所引用的对象被垃圾回收，Java虚拟机就会把这个弱引用加入到与之关联的引用队列中。<br />
d. 虚引用 <br />
&#8220;虚引用&#8221;顾名思义，就是形同虚设，与其他几种引用都不同，虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用，那么它就和没有任何引用一样，在任何时候都可能被垃圾回收器回收。<br />
虚引用主要用来跟踪对象被垃圾回收器回收的活动。虚引用与软引用和弱引用的一个区别在于：虚引用必须和引用队列 （ReferenceQueue）联合使用。当垃圾回收器准备回收一个对象时，如果发现它还有虚引用，就会在回收对象的内存之前，把这个虚引用加入到与之关联的引用队列中。<br />
<br />
<br />
<br />
<br />
<img src ="http://www.blogjava.net/chenkkkabc/aggbug/282828.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenkkkabc/" target="_blank">chenkkkabc</a> 2009-06-17 12:48 <a href="http://www.blogjava.net/chenkkkabc/articles/memory_management.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>枚举</title><link>http://www.blogjava.net/chenkkkabc/articles/enum.html</link><dc:creator>chenkkkabc</dc:creator><author>chenkkkabc</author><pubDate>Tue, 16 Jun 2009 01:01:00 GMT</pubDate><guid>http://www.blogjava.net/chenkkkabc/articles/enum.html</guid><wfw:comment>http://www.blogjava.net/chenkkkabc/comments/282507.html</wfw:comment><comments>http://www.blogjava.net/chenkkkabc/articles/enum.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenkkkabc/comments/commentRss/282507.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenkkkabc/services/trackbacks/282507.html</trackback:ping><description><![CDATA[ <img src ="http://www.blogjava.net/chenkkkabc/aggbug/282507.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenkkkabc/" target="_blank">chenkkkabc</a> 2009-06-16 09:01 <a href="http://www.blogjava.net/chenkkkabc/articles/enum.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>脚本引擎</title><link>http://www.blogjava.net/chenkkkabc/articles/script_engine.html</link><dc:creator>chenkkkabc</dc:creator><author>chenkkkabc</author><pubDate>Mon, 15 Jun 2009 13:48:00 GMT</pubDate><guid>http://www.blogjava.net/chenkkkabc/articles/script_engine.html</guid><wfw:comment>http://www.blogjava.net/chenkkkabc/comments/282462.html</wfw:comment><comments>http://www.blogjava.net/chenkkkabc/articles/script_engine.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenkkkabc/comments/commentRss/282462.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenkkkabc/services/trackbacks/282462.html</trackback:ping><description><![CDATA[1.Java脚本API的好处<br />
Java能够对脚本语言提供支持，原理上是通过将脚本语言编译成字节码来实现的。脚本API在Java应用程序和外部脚本间提供了双向可见性。这样脚本语言也能享用Java平台的诸多优势如可移植性、安全性等；并且执行效率比解释执行高出许多。Java本身也可以间接获得动态灵活性、扩展性等。<br />
<br />
2.Java脚本API的使用步骤<br />
Java里自带支持JavaScript。要在Java里使用脚本语言非常非常的简单，只需以下三步：<br />
a. 创建一个ScriptEngineManager对象<br />
b. 通过ScriptEngineManager对象创建ScriptEngine对象<br />
c. 用ScriptEngine对象的eval()方法执行脚本 
 <img src ="http://www.blogjava.net/chenkkkabc/aggbug/282462.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenkkkabc/" target="_blank">chenkkkabc</a> 2009-06-15 21:48 <a href="http://www.blogjava.net/chenkkkabc/articles/script_engine.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Annotation</title><link>http://www.blogjava.net/chenkkkabc/articles/annotation.html</link><dc:creator>chenkkkabc</dc:creator><author>chenkkkabc</author><pubDate>Sun, 14 Jun 2009 05:18:00 GMT</pubDate><guid>http://www.blogjava.net/chenkkkabc/articles/annotation.html</guid><wfw:comment>http://www.blogjava.net/chenkkkabc/comments/282145.html</wfw:comment><comments>http://www.blogjava.net/chenkkkabc/articles/annotation.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenkkkabc/comments/commentRss/282145.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenkkkabc/services/trackbacks/282145.html</trackback:ping><description><![CDATA[Java注释——采用metadata机制，对某点程序代码作解释说明，将程序的元素如：类，方法，属性，参数，本地变量，包和元数据联系起来。这样编译器可以将元数据存储在class文件中。这样虚拟机和其它对象可以根据这些元数据来决定如何使用这些程序元素或改变它们的行为。<br />
<br />
事先定义好的三种annotation类型，都位于java.lang包里：<br />
1 Override 用来指示一个方法，它覆盖了它的基类的方法<br />
2 Deprecated 指出某一个方法或是元素类型的使用时被阻止的<br />
3 SupressWarnings 会关掉class、method、field与variable初始化的编译器警告<br />
<br />
我们可以创建自定义的annotation类型，很类似于声明一个接口：<br />
public @interface TODO {<br />
&nbsp;&nbsp;&nbsp; String value();<br />
}<br />
编译器自动使用相同名称创建了一个成员变量value，使用时可以这么写：<br />
@TODO(value="Finish homework")<br />
<br />
Java提供了四种基本的meta-annotation如下，都位于java.lang.annotation包里：<br />
1 Target 指定哪个程序单元可以有其所定义的annotation<br />
参数类型是ElementType[]，其中ElementType定义为如下枚举<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">enum</span><span style="color: #000000">&nbsp;ElementType&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;TYPE,&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Class,&nbsp;interface,&nbsp;or&nbsp;enum&nbsp;(but&nbsp;not&nbsp;annotation)</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;FIELD,&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Field&nbsp;(including&nbsp;enumerated&nbsp;values)</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;METHOD,&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Method&nbsp;(does&nbsp;not&nbsp;include&nbsp;constructors)</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;PARAMETER,&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Method&nbsp;parameter</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CONSTRUCTOR,&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Constructor</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;LOCAL_VARIABLE,&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Local&nbsp;variable&nbsp;or&nbsp;catch&nbsp;clause</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;ANNOTATION_TYPE,&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Annotation&nbsp;Types&nbsp;(meta-annotations)</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;PACKAGE&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Java&nbsp;package</span><span style="color: #008000"><br />
</span><span style="color: #000000">}</span></div>
<p>不使用时所有程序单元都适用<br />
2 Retention 指出是否编译器要丢掉一个annotation，或者是否将一个annotation保存在class文件里<br />
参数是RetentionPolicy类型，定义如下</p>
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">enum</span><span style="color: #000000">&nbsp;RetentionPolicy&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;SOURCE,&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Annotation&nbsp;is&nbsp;discarded&nbsp;by&nbsp;the&nbsp;compiler</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;CLASS,&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Annotation&nbsp;is&nbsp;stored&nbsp;in&nbsp;the&nbsp;class&nbsp;file,&nbsp;but&nbsp;ignored&nbsp;by&nbsp;the&nbsp;VM</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;RUNTIME&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;Annotation&nbsp;is&nbsp;stored&nbsp;in&nbsp;the&nbsp;class&nbsp;file&nbsp;and&nbsp;read&nbsp;by&nbsp;the&nbsp;VM</span><span style="color: #008000"><br />
</span><span style="color: #000000">}</span></div>
<p>3 Documented 指出被定义的annotation应该被视为所注释的程序单元的公开API之一<br />
4 Inherited 被应用于目标为class的annotation类型上，指出此被注释的类型是能够通过继承得到的<br />
<br />
最后，来谈一下annotation的反射。java.lang.reflect包里的AnnotatedElement接口可以直接拿来访问被annotated的方法，具体的还是看例子吧~<br />
</p>
 <img src ="http://www.blogjava.net/chenkkkabc/aggbug/282145.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenkkkabc/" target="_blank">chenkkkabc</a> 2009-06-14 13:18 <a href="http://www.blogjava.net/chenkkkabc/articles/annotation.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>事件处理机制</title><link>http://www.blogjava.net/chenkkkabc/articles/event_handling_mechanism.html</link><dc:creator>chenkkkabc</dc:creator><author>chenkkkabc</author><pubDate>Sat, 13 Jun 2009 06:22:00 GMT</pubDate><guid>http://www.blogjava.net/chenkkkabc/articles/event_handling_mechanism.html</guid><wfw:comment>http://www.blogjava.net/chenkkkabc/comments/282154.html</wfw:comment><comments>http://www.blogjava.net/chenkkkabc/articles/event_handling_mechanism.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenkkkabc/comments/commentRss/282154.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenkkkabc/services/trackbacks/282154.html</trackback:ping><description><![CDATA[   <img src ="http://www.blogjava.net/chenkkkabc/aggbug/282154.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenkkkabc/" target="_blank">chenkkkabc</a> 2009-06-13 14:22 <a href="http://www.blogjava.net/chenkkkabc/articles/event_handling_mechanism.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Derby</title><link>http://www.blogjava.net/chenkkkabc/articles/282155.html</link><dc:creator>chenkkkabc</dc:creator><author>chenkkkabc</author><pubDate>Fri, 12 Jun 2009 06:23:00 GMT</pubDate><guid>http://www.blogjava.net/chenkkkabc/articles/282155.html</guid><wfw:comment>http://www.blogjava.net/chenkkkabc/comments/282155.html</wfw:comment><comments>http://www.blogjava.net/chenkkkabc/articles/282155.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenkkkabc/comments/commentRss/282155.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenkkkabc/services/trackbacks/282155.html</trackback:ping><description><![CDATA[  <img src ="http://www.blogjava.net/chenkkkabc/aggbug/282155.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenkkkabc/" target="_blank">chenkkkabc</a> 2009-06-12 14:23 <a href="http://www.blogjava.net/chenkkkabc/articles/282155.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JDBC</title><link>http://www.blogjava.net/chenkkkabc/articles/jdbc.html</link><dc:creator>chenkkkabc</dc:creator><author>chenkkkabc</author><pubDate>Tue, 09 Jun 2009 07:28:00 GMT</pubDate><guid>http://www.blogjava.net/chenkkkabc/articles/jdbc.html</guid><wfw:comment>http://www.blogjava.net/chenkkkabc/comments/280942.html</wfw:comment><comments>http://www.blogjava.net/chenkkkabc/articles/jdbc.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chenkkkabc/comments/commentRss/280942.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chenkkkabc/services/trackbacks/280942.html</trackback:ping><description><![CDATA[JDBC：Java Database Connectivity，Java数据库连接，可以方便的访问数据库接口。<br />
JDBC驱动程序有四种类型：<br />
1JDBC-ODBC桥，通过ODBC数据源连接<br />
2通过网络库连接的纯Java驱动<br />
3通过中间件服务器<br />
4直接与数据库相连的纯Java驱动，厂商提供<br />
<br />
JDBC包括java.sql和javax.sql两个包。数据库应用开发的基本步骤如下：<br />
1.建立数据源，安装相应数据库<br />
2.装载驱动程序，Class.forName("~~~")<br />
3.建立连接，DriverManager.getConnection()<br />
4.建立语句对象，createStatement()<br />
5.书写具体的SQL，executeQuery("")、executeUpdate("")<br />
6.数据处理，next()、getString<br />
7.获取元数据，getMetaData()<br />
8.关闭对象，close()，应该按照ResultSet - Statement - Connection的顺序关闭<br />
9.异常处理与警告<br />
<br />
本文采用JDBC-ODBC桥的方式连接Access数据库，将数据库文件test.mdb放到C:\Users\chen\workspace\JavaTest目录下，账户名Administrator，密码abc。数据库包括两张表，格式如下：<br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/chenkkkabc/table1.jpg" width="491" height="144" /><br />
<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/chenkkkabc/table2.jpg" width="395" height="139" /><br />
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">try</span><span style="color: #000000">&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;装入驱动程序</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class.forName(</span><span style="color: #000000">"</span><span style="color: #000000">sun.jdbc.odbc.JdbcOdbcDriver</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;设置登陆超时时间</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DriverManager.setLoginTimeout(</span><span style="color: #000000">5</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;url&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">jdbc:odbc:driver={MicroSoft&nbsp;Access&nbsp;Driver&nbsp;(*.mdb)};DBQ=C:\\Users\\chen\\workspace\\JavaTest\\test.mdb</span><span style="color: #000000">"</span><span style="color: #000000">;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;建立一条连接</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection&nbsp;conn&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;DriverManager.getConnection(url,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Administrator</span><span style="color: #000000">"</span><span style="color: #000000">,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">abc</span><span style="color: #000000">"</span><span style="color: #000000">);&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;设置打开数据库的用户名和密码</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Statement&nbsp;s&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;conn.createStatement();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResultSet&nbsp;rs&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;s.executeQuery(</span><span style="color: #000000">"</span><span style="color: #000000">SELECT&nbsp;*&nbsp;FROM&nbsp;Store_Information</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResultSetMetaData&nbsp;metadata&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;rs.getMetaData();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;count&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;metadata.getColumnCount();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(</span><span style="color: #000000">"</span><span style="color: #000000">columns:</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;i&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">;&nbsp;i&nbsp;</span><span style="color: #000000">&lt;=</span><span style="color: #000000">&nbsp;count;&nbsp;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.print(</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">&nbsp;metadata.getColumnName(i));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">\nstore_name&nbsp;in&nbsp;Store_Information:</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(rs.next())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(rs.getString(</span><span style="color: #000000">"</span><span style="color: #000000">store_name</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PreparedStatement&nbsp;ps&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;conn<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.prepareStatement(</span><span style="color: #000000">"</span><span style="color: #000000">SELECT&nbsp;*&nbsp;FROM&nbsp;Geography</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ps.executeQuery();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(</span><span style="color: #000000">"</span><span style="color: #000000">store_name&nbsp;in&nbsp;Geography:</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">&nbsp;(rs.next())<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(rs.getString(</span><span style="color: #000000">"</span><span style="color: #000000">store_name</span><span style="color: #000000">"</span><span style="color: #000000">));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rs.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ps.close();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;conn.close();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(ClassNotFoundException&nbsp;e1)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println(e1);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff">catch</span><span style="color: #000000">&nbsp;(SQLException&nbsp;e2)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.err.println(e2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></div>
<br />
实验结果<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 29.27%; padding-right: 5px; height: 175px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #000000">columns:&nbsp;id&nbsp;store_name&nbsp;sales&nbsp;dates<br />
store_name&nbsp;in&nbsp;Store_Information:<br />
Los&nbsp;Angeles<br />
San&nbsp;Diego<br />
Los&nbsp;Angeles<br />
Boston<br />
store_name&nbsp;in&nbsp;Geography:<br />
Boston<br />
New&nbsp;York<br />
Los&nbsp;Angeles<br />
San&nbsp;Diego</span></div>
<br />
<a href="http://www.blogjava.net/Files/chenkkkabc/day090609.7z">源代码下载 </a>
 <img src ="http://www.blogjava.net/chenkkkabc/aggbug/280942.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chenkkkabc/" target="_blank">chenkkkabc</a> 2009-06-09 15:28 <a href="http://www.blogjava.net/chenkkkabc/articles/jdbc.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>