﻿<?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-系统分析与项目管理-随笔分类-开发技术</title><link>http://www.blogjava.net/Jack2007/category/23333.html</link><description>Java,C++,C#.net 技术,IT 项目管理</description><language>zh-cn</language><lastBuildDate>Thu, 15 May 2008 14:47:14 GMT</lastBuildDate><pubDate>Thu, 15 May 2008 14:47:14 GMT</pubDate><ttl>60</ttl><item><title>浅谈REST</title><link>http://www.blogjava.net/Jack2007/archive/2008/05/15/200704.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Thu, 15 May 2008 10:47:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/05/15/200704.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/200704.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/05/15/200704.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/200704.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/200704.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/05/15/200704.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/200704.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-05-15 18:47 <a href="http://www.blogjava.net/Jack2007/archive/2008/05/15/200704.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JSDT 应用研究</title><link>http://www.blogjava.net/Jack2007/archive/2008/05/15/200614.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Thu, 15 May 2008 04:29:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/05/15/200614.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/200614.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/05/15/200614.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/200614.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/200614.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/05/15/200614.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/200614.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-05-15 12:29 <a href="http://www.blogjava.net/Jack2007/archive/2008/05/15/200614.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C# 之泛型详解</title><link>http://www.blogjava.net/Jack2007/archive/2008/05/05/198566.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Mon, 05 May 2008 13:34:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/05/05/198566.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/198566.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/05/05/198566.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/198566.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/198566.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 我们在编写程序时，经常遇到两个模块的功能非常相似，只是一个是处理int数据，另一个是处理string数据，或者其他自定义的数据类型，但我们没有办法，只能分别写多个方法处理每个数据类型，因为方法的参数类型不同。有没有一种办法，在方法中传入通用的数据类型，这样不就可以合并代码了吗？泛型的出现就是专门解决这个问题的。读完本篇文章，你会对泛型有更深的了解。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/05/05/198566.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/198566.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-05-05 21:34 <a href="http://www.blogjava.net/Jack2007/archive/2008/05/05/198566.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Activex、OLE、COM、OCX、DLL之间有什么区别？</title><link>http://www.blogjava.net/Jack2007/archive/2008/04/27/196392.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sun, 27 Apr 2008 00:56:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/04/27/196392.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/196392.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/04/27/196392.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/196392.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/196392.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 熟悉面向对象编程和网络编程的人一定对ActiveX、OLE和COM/DCOM这些概念不会陌生，但是它们之间究竟是什么样的关系，对许多们还是比较模糊的。在具体介绍它们的关系之间，我们还是先明确组件（Component）和对象（Object）之间的区别。&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/04/27/196392.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/196392.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-04-27 08:56 <a href="http://www.blogjava.net/Jack2007/archive/2008/04/27/196392.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java Corba</title><link>http://www.blogjava.net/Jack2007/archive/2008/04/26/196354.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sat, 26 Apr 2008 13:13:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/04/26/196354.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/196354.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/04/26/196354.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/196354.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/196354.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/04/26/196354.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/196354.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-04-26 21:13 <a href="http://www.blogjava.net/Jack2007/archive/2008/04/26/196354.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>spring.net  学习笔记之 AOP</title><link>http://www.blogjava.net/Jack2007/archive/2008/04/20/194375.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sun, 20 Apr 2008 14:07:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/04/20/194375.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/194375.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/04/20/194375.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/194375.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/194375.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 最近在做 c#.net 方面的项目，用到 nhibernate 和 spring.net ， 这里整理一下笔记。<br>资料有的是从网上 copy 下来的，如有知识产权问题。本人将立即删除。&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/04/20/194375.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/194375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-04-20 22:07 <a href="http://www.blogjava.net/Jack2007/archive/2008/04/20/194375.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C#与Java之比较</title><link>http://www.blogjava.net/Jack2007/archive/2008/04/19/194230.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sat, 19 Apr 2008 12:51:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/04/19/194230.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/194230.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/04/19/194230.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/194230.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/194230.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 很多人说C#是微软用来和Java抗衡的武器，因为二者在很大程度上有着惊人的相似 <br>，尽管如此，两者不同的地方也很多，所谓“于细微处见差异”。&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/04/19/194230.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/194230.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-04-19 20:51 <a href="http://www.blogjava.net/Jack2007/archive/2008/04/19/194230.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java的垃圾回收之算法</title><link>http://www.blogjava.net/Jack2007/archive/2008/04/11/192288.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Fri, 11 Apr 2008 14:43:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/04/11/192288.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/192288.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/04/11/192288.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/192288.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/192288.html</trackback:ping><description><![CDATA[引言 <br />
<br />
　　Java的堆是一个运行时数据区，类的实例(对象)从中分配空间。Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象，这些对象通过new、newarray、anewarray和multianewarray等指令建立，但是它们不需要程序代码来显式地释放。一般来说，堆的是由垃圾回收 来负责的，尽管JVM规范并不要求特殊的垃圾回收技术，甚至根本就不需要垃圾回收，但是由于内存的有限性，JVM在实现的时候都有一个由垃圾回收所管理的堆。垃圾回收是一种动态存储管理技术，它自动地释放不再被程序引用的对象，按照特定的垃圾收集算法来实现资源自动回收的功能。 <br />
<br />
<strong>　　垃圾收集的意义</strong> <br />
<br />
　　在C++中，对象所占的内存在程序结束运行之前一直被占用，在明确释放之前不能分配给其它对象；而在Java中，当没有对象引用指向原先分配给某个对象的内存时，该内存便成为垃圾。JVM的一个系统级线程会自动释放该内存块。垃圾收集意味着程序不再需要的对象是"无用信息"，这些信息将被丢弃。当一个对象不再被引用的时候，内存回收它占领的空间，以便空间被后来的新对象使用。事实上，除了释放没用的对象，垃圾收集也可以清除内存记录碎片。由于创建对象和垃圾收集器释放丢弃对象所占的内存空间，内存会出现碎片。碎片是分配给对象的内存块之间的空闲内存洞。碎片整理将所占用的堆内存移到堆的一端，JVM将整理出的内存分配给新的对象。 <br />
<br />
　　垃圾收集能自动释放内存空间，减轻编程的负担。这使Java 虚拟机具有一些优点。首先，它能使编程效率提高。在没有垃圾收集机制的时候，可能要花许多时间来解决一个难懂的存储器问题。在用Java语言编程的时候，靠垃圾收集机制可大大缩短时间。其次是它保护程序的完整性， 垃圾收集是Java语言安全性策略的一个重要部份。 <br />
<br />
　　垃圾收集的一个潜在的缺点是它的开销影响程序性能。Java虚拟机必须追踪运行程序中有用的对象， 而且最终释放没用的对象。这一个过程需要花费处理器的时间。其次垃圾收集算法的不完备性，早先采用的某些垃圾收集算法就不能保证100%收集到所有的废弃内存。当然随着垃圾收集算法的不断改进以及软硬件运行效率的不断提升，这些问题都可以迎刃而解。 <br />
<br />
　　<strong>垃圾收集的算法分析</strong> <br />
<br />
　　Java语言规范没有明确地说明JVM使用哪种垃圾回收算法，但是任何一种垃圾收集算法一般要做2件基本的事情：（1）发现无用信息对象；（2）回收被无用对象占用的内存空间，使该空间可被程序再次使用。 <br />
<br />
　　大多数垃圾回收算法使用了根集(root set)这个概念；所谓根集就量正在执行的Java程序可以访问的引用变量的集合(包括局部变量、参数、类变量)，程序可以使用引用变量访问对象的属性和调用对象的方法。垃圾收集首选需要确定从根开始哪些是可达的和哪些是不可达的，从根集可达的对象都是活动对象，它们不能作为垃圾被回收，这也包括从根集间接可达的对象。而根集通过任意路径不可达的对象符合垃圾收集的条件，应该被回收。下面介绍几个常用的算法。 <br />
<br />
　<strong>　1、 引用计数法(Reference Counting Collector) <br />
</strong><br />
　　引用计数法是唯一没有使用根集的垃圾回收的法，该算法使用引用计数器来区分存活对象和不再使用的对象。一般来说，堆中的每个对象对应一个引用计数器。当每一次创建一个对象并赋给一个变量时，引用计数器置为1。当对象被赋给任意变量时，引用计数器每次加1当对象出了作用域后(该对象丢弃不再使用)，引用计数器减1，一旦引用计数器为0，对象就满足了垃圾收集的条件。 <br />
<br />
　　基于引用计数器的垃圾收集器运行较快，不会长时间中断程序执行，适宜地必须 实时运行的程序。但引用计数器增加了程序执行的开销，因为每次对象赋给新的变量，计数器加1，而每次现有对象出了作用域生，计数器减1。 <br />
<br />
<strong>　　2、tracing算法(Tracing Collector) <br />
</strong><br />
　　tracing算法是为了解决引用计数法的问题而提出，它使用了根集的概念。基于tracing算法的垃圾收集器从根集开始扫描，识别出哪些对象可达，哪些对象不可达，并用某种方式标记可达对象，例如对每个可达对象设置一个或多个位。在扫描识别过程中，基于tracing算法的垃圾收集也称为标记和清除(mark-and-sweep)垃圾收集器. <br />
<br />
　　<strong>3、compacting算法(Compacting Collector) <br />
</strong><br />
　　为了解决堆碎片问题，基于tracing的垃圾回收吸收了Compacting算法的思想，在清除的过程中，算法将所有的对象移到堆的一端，堆的另一端就变成了一个相邻的空闲内存区，收集器会对它移动的所有对象的所有引用进行更新，使得这些引用在新的位置能识别原来 的对象。在基于Compacting算法的收集器的实现中，一般增加句柄和句柄表。<br />
<strong>4、copying算法(Coping Collector) <br />
</strong><br />
　　 该算法的提出是为了克服句柄的开销和解决堆碎片的垃圾回收。它开始时把堆分成 一个对象 面和多个空闲面， 程序从对象面为对象分配空间，当对象满了，基于coping算法的垃圾 收集就从根集中扫描活动对象，并将每个 活动对象复制到空闲面(使得活动对象所占的内存之间没有空闲洞)，这样空闲面变成了对象面，原来的对象面变成了空闲面，程序会在新的对象面中分配内存。 <br />
<br />
　　 一种典型的基于coping算法的垃圾回收是stop-and-copy算法，它将堆分成对象面和空闲区域面，在对象面与空闲区域面的切换过程中，程序暂停执行。 <br />
<br />
　　 <strong>5、generation算法(Generational Collector) <br />
</strong><br />
　　 stop-and-copy垃圾收集器的一个缺陷是收集器必须复制所有的活动对象，这增加了程序等待时间，这是coping算法低效的原因。在程序设计中有这样的规律：多数对象存在的时间比较短，少数的存在时间比较长。因此，generation算法将堆分成两个或多个，每个子堆作为对象的一代(generation)。由于多数对象存在的时间比较短，随着程序丢弃不使用的对象，垃圾收集器将从最年轻的子堆中收集这些对象。在分代式的垃圾收集器运行后，上次运行存活下来的对象移到下一最高代的子堆中，由于老一代的子堆不会经常被回收，因而节省了时间。 <br />
<br />
　　<strong> 6、adaptive算法(Adaptive Collector)</strong> <br />
<br />
　　 在特定的情况下，一些垃圾收集算法会优于其它算法。基于Adaptive算法的垃圾收集器就是监控当前堆的使用情况，并将选择适当算法的垃圾收集器。<br />
透视Java垃圾回收<br />
<br />
　　1、命令行参数透视垃圾收集器的运行<br />
<br />
　　2、使用System.gc()可以不管JVM使用的是哪一种垃圾回收的算法，都可以请求Java的垃圾回收。在命令行中有一个参数-verbosegc可以查看Java使用的堆内存的情况，它的格式如下：<br />
<br />
java -verbosegc classfile<br />
<br />
　　可以看个例子：<br />
<br />
<code>class TestGC <br />
{<br />
　public static void main(String[] args) <br />
　{<br />
　　new TestGC();<br />
　　System.gc();<br />
　　System.runFinalization();<br />
　}<br />
} <br />
</code><br />
　　在这个例子中，一个新的对象被创建，由于它没有使用，所以该对象迅速地变为可达，程序编译后，执行命令： java -verbosegc TestGC 后结果为：<br />
<br />
[Full GC 168K-&gt;97K(1984K)， 0.0253873 secs]<br />
<br />
　　机器的环境为，Windows 2000 + JDK1.3.1，箭头前后的数据168K和97K分别表示垃圾收集GC前后所有存活对象使用的内存容量，说明有168K-97K=71K的对象容量被回收，括号内的数据1984K为堆内存的总容量，收集所需要的时间是0.0253873秒（这个时间在每次执行的时候会有所不同）。<br />
<br />
　　2、finalize方法透视垃圾收集器的运行<br />
<br />
　　在JVM垃圾收集器收集一个对象之前 ，一般要求程序调用适当的方法释放资源，但在没有明确释放资源的情况下，Java提供了缺省机制来终止化该对象心释放资源，这个方法就是finalize（）。它的原型为：<br />
<br />
<code>protected void finalize() throws Throwable <br />
</code><br />
　　在finalize()方法返回之后，对象消失，垃圾收集开始执行。原型中的throws Throwable表示它可以抛出任何类型的异常。<br />
<br />
　　之所以要使用finalize()，是由于有时需要采取与Java的普通方法不同的一种方法，通过分配内存来做一些具有C风格的事情。这主要可以通过"固有方法"来进行，它是从Java里调用非Java方法的一种方式。C和C++是目前唯一获得固有方法支持的语言。但由于它们能调用通过其他语言编写的子程序，所以能够有效地调用任何东西。在非Java代码内部，也许能调用C的malloc()系列函数，用它分配存储空间。而且除非调用了free()，否则存储空间不会得到释放，从而造成内存"漏洞"的出现。当然，free()是一个C和C++函数，所以我们需要在finalize()内部的一个固有方法中调用它。也就是说我们不能过多地使用finalize()，它并不是进行普通清除工作的理想场所。<br />
<br />
　　在普通的清除工作中，为清除一个对象，那个对象的用户必须在希望进行清除的地点调用一个清除方法。这与C++"破坏器"的概念稍有抵触。在C++中，所有对象都会破坏（清除）。或者换句话说，所有对象都"应该"破坏。若将C++对象创建成一个本地对象，比如在堆栈中创建（在Java中是不可能的），那么清除或破坏工作就会在"结束花括号"所代表的、创建这个对象的作用域的末尾进行。若对象是用new创建的（类似于Java），那么当程序员调用C++的delete命令时（Java没有这个命令），就会调用相应的破坏器。若程序员忘记了，那么永远不会调用破坏器，我们最终得到的将是一个内存"漏洞"，另外还包括对象的其他部分永远不会得到清除。<br />
<br />
　　相反，Java不允许我们创建本地（局部）对象--无论如何都要使用new。但在Java中，没有"delete"命令来释放对象，因为垃圾收集器会帮助我们自动释放存储空间。所以如果站在比较简化的立场，我们可以说正是由于存在垃圾收集机制，所以Java没有破坏器。然而，随着以后学习的深入，就会知道垃圾收集器的存在并不能完全消除对破坏器的需要，或者说不能消除对破坏器代表的那种机制的需要（而且绝对不能直接调用finalize()，所以应尽量避免用它）。若希望执行除释放存储空间之外的其他某种形式的清除工作，仍然必须调用Java中的一个方法。它等价于C++的破坏器，只是没后者方便。<br />
<br />
　　下面这个例子向大家展示了垃圾收集所经历的过程，并对前面的陈述进行了总结。<br />
<br />
<code>class Chair {<br />
　static boolean gcrun = false;<br />
　static boolean f = false;<br />
　static int created = 0;<br />
　static int finalized = 0;<br />
　int i;<br />
　Chair() {<br />
　　i = ++created;<br />
　　if(created == 47) <br />
　　　System.out.println("Created 47");<br />
　}<br />
　protected void finalize() {<br />
　　if(!gcrun) {<br />
　　　gcrun = true;<br />
　　　System.out.println("Beginning to finalize after " + created + " Chairs have been created");<br />
　　}<br />
　　if(i == 47) {<br />
　　　System.out.println("Finalizing Chair #47， " +"Setting flag to stop Chair creation");<br />
　　　f = true;<br />
　　}<br />
　　finalized++;<br />
　　if(finalized &gt;= created)<br />
　　　System.out.println("All " + finalized + " finalized");<br />
　}<br />
}<br />
<br />
public class Garbage {<br />
　public static void main(String[] args) {<br />
　　if(args.length == 0) {<br />
　　　System.err.println("Usage: \n" + "java Garbage before\n or:\n" + "java Garbage after");<br />
　　　return;<br />
　　}<br />
　　while(!Chair.f) {<br />
　　　new Chair();<br />
　　　new String("To take up space");<br />
　　}<br />
　　System.out.println("After all Chairs have been created:\n" + "total created = " + Chair.created +<br />
"， total finalized = " + Chair.finalized);<br />
　　if(args[0].equals("before")) {<br />
　　　　System.out.println("gc():");<br />
　　　　System.gc();<br />
　　　　System.out.println("runFinalization():");<br />
　　　　System.runFinalization();<br />
　　}<br />
　　System.out.println("bye!");<br />
　　if(args[0].equals("after"))<br />
　　　System.runFinalizersOnExit(true);<br />
　}<br />
} <br />
</code><br />
　　上面这个程序创建了许多Chair对象，而且在垃圾收集器开始运行后的某些时候，程序会停止创建Chair。由于垃圾收集器可能在任何时间运行，所以我们不能准确知道它在何时启动。因此，程序用一个名为gcrun的标记来指出垃圾收集器是否已经开始运行。利用第二个标记f，Chair可告诉main()它应停止对象的生成。这两个标记都是在finalize()内部设置的，它调用于垃圾收集期间。另两个static变量--created以及finalized--分别用于跟踪已创建的对象数量以及垃圾收集器已进行完收尾工作的对象数量。最后，每个Chair都有它自己的（非static）int i，所以能跟踪了解它具体的编号是多少。编号为47的Chair进行完收尾工作后，标记会设为true，最终结束Chair对象的创建过程。<br />
<br />
关于垃圾收集的几点补充 <br />
<br />
　　经过上述的说明，可以发现垃圾回收有以下的几个特点： <br />
<br />
　　（1）垃圾收集发生的不可预知性：由于实现了不同的垃圾收集算法和采用了不同的收集机制，所以它有可能是定时发生，有可能是当出现系统空闲CPU资源时发生，也有可能是和原始的垃圾收集一样，等到内存消耗出现极限时发生，这与垃圾收集器的选择和具体的设置都有关系。 <br />
<br />
　　（2）垃圾收集的精确性：主要包括2 个方面：（a）垃圾收集器能够精确标记活着的对象；（b）垃圾收集器能够精确地定位对象之间的引用关系。前者是完全地回收所有废弃对象的前提，否则就可能造成内存泄漏。而后者则是实现归并和复制等算法的必要条件。所有不可达对象都能够可靠地得到回收，所有对象都能够重新分配，允许对象的复制和对象内存的缩并，这样就有效地防止内存的支离破碎。 <br />
<br />
　　（3）现在有许多种不同的垃圾收集器，每种有其算法且其表现各异，既有当垃圾收集开始时就停止应用程序的运行，又有当垃圾收集开始时也允许应用程序的线程运行，还有在同一时间垃圾收集多线程运行。 <br />
<br />
　　（4）垃圾收集的实现和具体的JVM 以及JVM的内存模型有非常紧密的关系。不同的JVM 可能采用不同的垃圾收集，而JVM 的内存模型决定着该JVM可以采用哪些类型垃圾收集。现在，HotSpot 系列JVM中的内存系统都采用先进的面向对象的框架设计，这使得该系列JVM都可以采用最先进的垃圾收集。 <br />
<br />
　　（5）随着技术的发展，现代垃圾收集技术提供许多可选的垃圾收集器，而且在配置每种收集器的时候又可以设置不同的参数，这就使得根据不同的应用环境获得最优的应用性能成为可能。 <br />
<br />
　<strong>　针对以上特点，我们在使用的时候要注意：</strong> <br />
<br />
　　（1）不要试图去假定垃圾收集发生的时间，这一切都是未知的。比如，方法中的一个临时对象在方法调用完毕后就变成了无用对象，这个时候它的内存就可以被释放。 <br />
<br />
　　（2）Java中提供了一些和垃圾收集打交道的类，而且提供了一种强行执行垃圾收集的方法--调用System.gc()，但这同样是个不确定的方法。Java 中并不保证每次调用该方法就一定能够启动垃圾收集，它只不过会向JVM发出这样一个申请，到底是否真正执行垃圾收集，一切都是个未知数。 <br />
<br />
　　（3）挑选适合自己的垃圾收集器。一般来说，如果系统没有特殊和苛刻的性能要求，可以采用JVM的缺省选项。否则可以考虑使用有针对性的垃圾收集器，比如增量收集器就比较适合实时性要求较高的系统之中。系统具有较高的配置，有比较多的闲置资源，可以考虑使用并行标记/清除收集器。 <br />
<br />
　　（4）关键的也是难把握的问题是内存泄漏。良好的编程习惯和严谨的编程态度永远是最重要的，不要让自己的一个小错误导致内存出现大漏洞。 <br />
<br />
　　（5）尽早释放无用对象的引用。大多数程序员在使用临时变量的时候，都是让引用变量在退出活动域(scope)后，自动设置为null，暗示垃圾收集器来收集该对象，还必须注意该引用的对象是否被监听，如果有，则要去掉监听器，然后再赋空值。 <br />
<br />
<strong>　　结束语</strong> <br />
<br />
　　一般来说，Java开发人员可以不重视JVM中堆内存的分配和垃圾处理收集，但是，充分理解Java的这一特性可以让我们更有效地利用资源。同时要注意finalize()方法是Java的缺省机制，有时为确保对象资源的明确释放，可以编写自己的finalize方法。
<img src ="http://www.blogjava.net/Jack2007/aggbug/192288.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-04-11 22:43 <a href="http://www.blogjava.net/Jack2007/archive/2008/04/11/192288.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>超简单的 Web 爬虫程序（转贴）</title><link>http://www.blogjava.net/Jack2007/archive/2008/03/24/188138.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Mon, 24 Mar 2008 01:32:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/03/24/188138.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/188138.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/03/24/188138.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/188138.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/188138.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 超简单的 Web 爬虫程序，不过可以在他基础之上改造一下，写出强大点的爬虫！<br>谢谢提供程序的 blog 友！<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/03/24/188138.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/188138.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-03-24 09:32 <a href="http://www.blogjava.net/Jack2007/archive/2008/03/24/188138.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java与C++之JNI编程小结</title><link>http://www.blogjava.net/Jack2007/archive/2008/03/02/183209.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sun, 02 Mar 2008 00:23:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/03/02/183209.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/183209.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/03/02/183209.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/183209.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/183209.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 关于 JNI 的用法很简单，有点像 java 里的 reflect 的工作机制，有兴趣的朋友可以参看更详细的书<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/03/02/183209.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/183209.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-03-02 08:23 <a href="http://www.blogjava.net/Jack2007/archive/2008/03/02/183209.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用 VC 动态链接库的常用方法</title><link>http://www.blogjava.net/Jack2007/archive/2008/02/28/182801.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Thu, 28 Feb 2008 14:43:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/02/28/182801.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/182801.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/02/28/182801.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/182801.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/182801.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 使用 VC 动态链接库的常用方法&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/02/28/182801.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/182801.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-02-28 22:43 <a href="http://www.blogjava.net/Jack2007/archive/2008/02/28/182801.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>项目，从零开始</title><link>http://www.blogjava.net/Jack2007/archive/2008/02/27/182368.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Wed, 27 Feb 2008 01:05:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/02/27/182368.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/182368.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/02/27/182368.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/182368.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/182368.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 项目，从零开始<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/02/27/182368.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/182368.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-02-27 09:05 <a href="http://www.blogjava.net/Jack2007/archive/2008/02/27/182368.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的Fedora 7硬盘安装过程</title><link>http://www.blogjava.net/Jack2007/archive/2008/02/25/182098.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Mon, 25 Feb 2008 14:52:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/02/25/182098.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/182098.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/02/25/182098.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/182098.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/182098.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Redhat 自9.0以后，不再发布桌面版的，而是把这个项目与开源社区合作，于是就有了Fedora 这个 Linux 发行版。Fedora 可以说是Redhat 桌面版本的延续，只不过是与开源社区合作。&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/02/25/182098.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/182098.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-02-25 22:52 <a href="http://www.blogjava.net/Jack2007/archive/2008/02/25/182098.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC++之IP控件初始化问题</title><link>http://www.blogjava.net/Jack2007/archive/2008/02/21/180977.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Thu, 21 Feb 2008 00:05:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/02/21/180977.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/180977.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/02/21/180977.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/180977.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/180977.html</trackback:ping><description><![CDATA[方法一<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;strIP="192.168.1.184";<br />
&nbsp;&nbsp;&nbsp;&nbsp;DWORD&nbsp;dwAddress=&nbsp;ntohl(&nbsp;inet_addr(strIP));<br />
&nbsp;&nbsp;&nbsp;&nbsp;m_IPCtrl.SetAddress(dwAddress); <span style="color: red">//&nbsp;m_IPCtrl 为IP 控件对象<br />
</span><br />
<br />
方法二<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;直接用SetWindowText()，获取采用GetWindowText()就OK了！<br />
&nbsp;&nbsp;&nbsp;&nbsp;CString&nbsp;&nbsp;strIP=&nbsp;&nbsp;"192.168.1.163&nbsp;&nbsp;";&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;m_ip.SetWindowText(strIP);&nbsp;&nbsp;<span style="color: red">//m_ip为IP控件的变量 </span>
<img src ="http://www.blogjava.net/Jack2007/aggbug/180977.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-02-21 08:05 <a href="http://www.blogjava.net/Jack2007/archive/2008/02/21/180977.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Visual C++开发中常见问题的答案</title><link>http://www.blogjava.net/Jack2007/archive/2008/01/23/177321.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Wed, 23 Jan 2008 09:04:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/01/23/177321.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/177321.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/01/23/177321.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/177321.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/177321.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Visual C++开发中常见问题的答案&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/01/23/177321.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/177321.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-01-23 17:04 <a href="http://www.blogjava.net/Jack2007/archive/2008/01/23/177321.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简单配置 J2ME 开发环境</title><link>http://www.blogjava.net/Jack2007/archive/2008/01/23/177312.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Wed, 23 Jan 2008 08:26:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/01/23/177312.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/177312.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/01/23/177312.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/177312.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/177312.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 简单配置 J2ME 开发环境&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/01/23/177312.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/177312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-01-23 16:26 <a href="http://www.blogjava.net/Jack2007/archive/2008/01/23/177312.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>WASCE （基于geronimo ） 配置</title><link>http://www.blogjava.net/Jack2007/archive/2008/01/21/176814.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Mon, 21 Jan 2008 11:06:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/01/21/176814.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/176814.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/01/21/176814.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/176814.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/176814.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: WASCE  配置简介&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/01/21/176814.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/176814.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-01-21 19:06 <a href="http://www.blogjava.net/Jack2007/archive/2008/01/21/176814.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>轻松掌握分布式数据库的主要特点</title><link>http://www.blogjava.net/Jack2007/archive/2008/01/14/175324.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Mon, 14 Jan 2008 14:48:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2008/01/14/175324.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/175324.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2008/01/14/175324.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/175324.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/175324.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 轻松掌握分布式数据库的主要特点&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2008/01/14/175324.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/175324.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2008-01-14 22:48 <a href="http://www.blogjava.net/Jack2007/archive/2008/01/14/175324.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XFire 应用</title><link>http://www.blogjava.net/Jack2007/archive/2007/12/19/168882.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Wed, 19 Dec 2007 14:37:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2007/12/19/168882.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/168882.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2007/12/19/168882.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/168882.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/168882.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 面向服务架构(SOA，Services-oriented architecture)和Web Services已经变成了当前行业的热点话题。XFire正是在这种情况下产生的。它能够使POJO发布为最少的Web Services，而只需要付出最小化的努力。从而，它使希望使用这项技术的初级开发者的学习曲线变得平缓。同时，由于它兼容最新标准和提供了丰富的API，XFire为高级用户提供了更多的大好机会。&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2007/12/19/168882.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/168882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2007-12-19 22:37 <a href="http://www.blogjava.net/Jack2007/archive/2007/12/19/168882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CuteFTP 问题及 ftp 模式详解</title><link>http://www.blogjava.net/Jack2007/archive/2007/12/09/166468.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sun, 09 Dec 2007 08:52:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2007/12/09/166468.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/166468.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2007/12/09/166468.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/166468.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/166468.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:  FTP的连接一般是有两个连接的，一个是客户程和服务器传输命令的，另一个是数据传送的连接。FTP服务程序一般会支持两种不同的模式，一种是Port模式，一种是Passive模式(Pasv Mode),我先说说这两种不同模式连接方式的分别.<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2007/12/09/166468.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/166468.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2007-12-09 16:52 <a href="http://www.blogjava.net/Jack2007/archive/2007/12/09/166468.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网络流媒体技术及其应用</title><link>http://www.blogjava.net/Jack2007/archive/2007/11/30/164309.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Fri, 30 Nov 2007 07:57:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2007/11/30/164309.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/164309.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2007/11/30/164309.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/164309.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/164309.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:       如何在现有网络条件下进行多媒体音视频数据的有效传输控制是目前网络技术发展的一个热点。本文介绍了网络流媒体技术的基本原理，并阐述了应用于流媒体系统的各种传输模式及媒体价值链和运营模式。&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2007/11/30/164309.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/164309.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2007-11-30 15:57 <a href="http://www.blogjava.net/Jack2007/archive/2007/11/30/164309.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RMI 小结</title><link>http://www.blogjava.net/Jack2007/archive/2007/11/22/162307.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Thu, 22 Nov 2007 02:49:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2007/11/22/162307.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/162307.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2007/11/22/162307.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/162307.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/162307.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 随着 web 2.0 时代的到来，SOA 开发思想的普及应用。分布式应用，将又一次走向高潮。&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2007/11/22/162307.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/162307.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2007-11-22 10:49 <a href="http://www.blogjava.net/Jack2007/archive/2007/11/22/162307.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ 与 Java 语言对比</title><link>http://www.blogjava.net/Jack2007/archive/2007/11/11/159665.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sun, 11 Nov 2007 00:27:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2007/11/11/159665.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/159665.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2007/11/11/159665.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/159665.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/159665.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 今天一大早来到实验室，突发地想要写点什么！&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2007/11/11/159665.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/159665.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2007-11-11 08:27 <a href="http://www.blogjava.net/Jack2007/archive/2007/11/11/159665.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 在基于文件系统的 JNDI 和 JNDI+LDAP 协议应用实例</title><link>http://www.blogjava.net/Jack2007/archive/2007/11/07/158934.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Wed, 07 Nov 2007 13:03:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2007/11/07/158934.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/158934.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2007/11/07/158934.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/158934.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/158934.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 以前经常在诸如 weblogic, jboss, tomcat 服务器上配置 JNDI 服务，代码也很简单。但还没有用过 LDAP 服务器. LDAP 用层次（树） 结构存储数据。 要引用树中的项目，就需要列出树中的节点名称。从所要项目开始，一直向树顶跟踪。树中每个节点都有 nodetype=value 形式的唯一 COM 域。 域组件的节点类型为 DC ，叶子节点类型为 O, LDAP 有属性的概念，同时也有类的概念。因此，可以依据属性或类检索。<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2007/11/07/158934.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/158934.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2007-11-07 21:03 <a href="http://www.blogjava.net/Jack2007/archive/2007/11/07/158934.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>eclipse 提示功能不见了，Oracle spfile 的 SGA 被改动</title><link>http://www.blogjava.net/Jack2007/archive/2007/10/30/156822.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Mon, 29 Oct 2007 23:53:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2007/10/30/156822.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/156822.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2007/10/30/156822.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/156822.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/156822.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: eclipse 提示功能不见了，Oracle spfile 的 SGA 被改动&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2007/10/30/156822.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/156822.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2007-10-30 07:53 <a href="http://www.blogjava.net/Jack2007/archive/2007/10/30/156822.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分析模型和设计模型</title><link>http://www.blogjava.net/Jack2007/archive/2007/10/14/152799.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sun, 14 Oct 2007 14:01:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2007/10/14/152799.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/152799.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2007/10/14/152799.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/152799.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/152799.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2007/10/14/152799.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/152799.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2007-10-14 22:01 <a href="http://www.blogjava.net/Jack2007/archive/2007/10/14/152799.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SOCKET programming(C语言 winsock)</title><link>http://www.blogjava.net/Jack2007/archive/2007/10/14/152751.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Sun, 14 Oct 2007 08:51:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2007/10/14/152751.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/152751.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2007/10/14/152751.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/152751.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/152751.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2007/10/14/152751.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/152751.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2007-10-14 16:51 <a href="http://www.blogjava.net/Jack2007/archive/2007/10/14/152751.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring--quartz中cronExpression配置说明 </title><link>http://www.blogjava.net/Jack2007/archive/2007/07/23/131839.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Mon, 23 Jul 2007 04:16:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2007/07/23/131839.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/131839.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2007/07/23/131839.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/131839.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/131839.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Spring--quartz中cronExpression配置说明&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2007/07/23/131839.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/131839.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2007-07-23 12:16 <a href="http://www.blogjava.net/Jack2007/archive/2007/07/23/131839.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SPERC 项目总结</title><link>http://www.blogjava.net/Jack2007/archive/2007/07/20/131464.html</link><dc:creator>Jack.Wang</dc:creator><author>Jack.Wang</author><pubDate>Fri, 20 Jul 2007 06:20:00 GMT</pubDate><guid>http://www.blogjava.net/Jack2007/archive/2007/07/20/131464.html</guid><wfw:comment>http://www.blogjava.net/Jack2007/comments/131464.html</wfw:comment><comments>http://www.blogjava.net/Jack2007/archive/2007/07/20/131464.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Jack2007/comments/commentRss/131464.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Jack2007/services/trackbacks/131464.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: SPERC 项目总结<br>&nbsp;&nbsp;<a href='http://www.blogjava.net/Jack2007/archive/2007/07/20/131464.html'>阅读全文</a><img src ="http://www.blogjava.net/Jack2007/aggbug/131464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Jack2007/" target="_blank">Jack.Wang</a> 2007-07-20 14:20 <a href="http://www.blogjava.net/Jack2007/archive/2007/07/20/131464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>