javadoc - Java API 文档生成器

目录
结构 
说明 
相关文档 
Javadoc Doclets 
术语 
源文件 
生成的文件 
文档注释 
注释源代码 
Javadoc 标记 
使用标记的地方 
命令行参数文件 
选项 
Javadoc 选项 
标准 Doclet 提供的选项 
简单示例 
建立包的文档 
建立类的文档 
建立包和类的文档 
实际示例 
环境 
CLASSPATH 
参阅 

--------------------------------------------------------------------------------


结构
javadoc [ options ] [ packagenames ] [ sourcefiles ] [ @files ]

参数可按任意次序排列。


options 
命令行选项,如本文档中所指定。要了解 javadoc 选项的典型用法,参见实际示例。 
packagenames 
一系列包的名字,用空格分隔,例如 java.lang java.lang.reflect java.awt。必须分别指定想要为之建立文档的每一个包。Javadoc 不递归地作用于子包。不允许使用通配符,如(*)。参见示例 - 建立包的文档 
sourcefiles 
一系列源文件名,用空格分隔。源文件名可包括路径和通配符如(*)。例如:Button.java /home/src/java/awt/Graphics*.java 参见示例 - 建立类的文件。还可混合包名和源文件,如 示例 - 建立包和类的文档 中所示。 
@files 
以任何次序包含包名和源文件的一个或多个文件。 



说明
Javadoc 解析 Java 源文件中的声明和文档注释,并产生相应的 HTML 页(缺省),描述公有类、保护类、内部类、接口、构造函数、方法和域。

可对 整个包、单个源文件 或 二者 运行 Javadoc。在第一种情况中,将一系列包名作为参数传递给 javadoc。在第二种情况中,传递一系列源(.java)文件名。在本文档最后给出了 示例。

在实现时,Javadoc 要求且依赖于 java 编译器完成其工作。Javadoc 调用部分 javac 编译声明部分,忽略成员实现。它建立类的内容丰富的内部表示,包括类层次和“使用”关系,然后从中生成 HTML。Javadoc 还从源代码的 文档注释 中获得用户提供的文档。

实际上,Javadoc 将在不带方法体的纯 stub 文件的 .java 源文件上运行。这意味着可以创建 API 的最早期阶段,在编写任何代码之前,就可编写文档注释并运行 Javadoc。

依赖编译器可以确保 HTML 输出完全对应于实际实现,这些实现可能有赖于隐式的(而非显式的)源代码。例如,Javadoc 将建立在 .class 文件中存在但在源代码中不存在的 缺省构造函数(Java 语言规范 的第 8.6.7 节)的文档。

当 Javadoc 建立其内部文档结构时,它将加载所有引用的类。由于这一点,Javadoc 必须能查找到所有引用的类,包括引导类、扩展类和用户类。有关详细信息,参见如何查找类。一般而言,所创建的类必须加载为扩展或位于 Javadoc 的类路径中。


Javadoc Doclets
可使用 doclets 自定义 Javadoc 输出的内容和格式。Javadoc 具有一个缺省的“内嵌”doclet,叫作标准 doclet,它生成 HTML-格式的 API 文档。用户可修改或扩展标准 doclet,或编写自己的 doclet 以生成 HTML、XML、MIF、RTF 或想要的任何输出格式。关于 doclets 及其用法的信息位于下列位置: 

Javadoc Doclets 
-doclet 命令行选项 
当没有用 -doclet 命令行选项指定自定义 doclet 时,Javadoc 将使用缺省的标准 doclet。不管使用哪个 doclet,javadoc 工具都有几个命令行选项可用。标准 doclet 还添加了额外的命令行选项集。二个选项集都将在下面的 选项 一节中介绍。 

相关文档
有关 Javadoc 1.2 中增强功能的详细信息,参见 Javadoc 增强。 
有关常问问题的答案、关于 Javadoc 相关工具的信息以及 bug 的解决方案,参见 Javadoc FAQ。 
有关如何编写文档注释的信息,参见 如何为 Javadoc 编写文档注释。 

术语
在 Javadoc 环境中,有些术语具有特定的意义: 


生成的文档 
由 javadoc 工具根据 Java 源代码中文档注释生成的文档。缺省的生成文档是 HTML 格式,并由标准 doclet 生成。

名字 
Java 语言中的名字,通常为包、类、接口、域、构造函数或方法的名字。名字可以是完全限定的,例如 java.lang.String.equals(java.lang.Object),也可是部分限定的,例如 equals(Object)。

带文档的类 
在 javadoc 运行期间为之生成了全部文档的类和接口。要生成文档,源文件必须可用,并且其源文件名或包名必须传递到 javadoc 命令中。我们还将这些类称为在 javadoc 运行中包含的类,或包含的类。

引用类 
在带文档的类和接口的定义(实现)中显式引用的类和接口。引用的例子包括返回类型、参数类型、强制转换类型、已实现接口、导入类,等等。在文档注释(例如 @see 标记)中引用的类不算作引用类。当 Javadoc 运行时,它将 javadoc 引导类路径和类路径中所有的引用类加载到内存中(对于没有找到的引用类,Javadoc 将显示“类未找到”警告信息)。 Javadoc 可从类文件中获得足够的信息,以确定其存在性及其成员的全限定名字。

外部引用类 
在 javadoc 运行期间没有生成其文档的引用类。也就是说,这些类对于该次 javadoc 运行是外部的。文档中名字到这些类的链接称为外部引用或外部链接。例如,如果仅对 java.awt 包运行 javadoc,则 java.lang 中的任何类(如 Object)都是外部引用类。可使用 -link 选项链接外部引用类。 



源文件
Javadoc 将根据四种不同的“源”文件生成输出: Java 语言源文件(.java)、包注释文件、概述注释文件和其他未处理文件。下面介绍了后三种类型。


包注释文件
每个包具有它自己的文档注释,保存在其自己的“源”文件中,Javadoc 将把它合并到生成的包概览页中。通常可在这个注释中包括适用于整个包的任何文档。

要创建包注释文件,必须将它命名为 package.html 并将它与 .java 文件一起放在源树中的包目录中。Javadoc 将自动在该位置查找该文件名。注意该文件名对于所有包都是相同的。

包注释文件的内容是一个大文档注释,用 HTML 编写,像所有其他注释一样,但有一个例外: 文档注释不应该包括注释分隔符 /** 和 */ 或前导星号。在编写注释时,第一句应该是关于包的概览,并且在  和第一句之间不应该插入任何标题或其他文本。可包括 package 标记;与所有文档注释一样,除了 {@link} 之外的所有标记都应该位于描述之后。如果添加 @see 标记,则它必须是全限定名字。

当 Javadoc 运行时,它将自动查找该文件;如果找到,则 Javadoc 做下列事情: 

复制  和  标记之间的全部内容以进行处理。 
处理存在的任何包标记。 
在它生成的包概览页底部插入处理后的文本,例如 包概览。 
将包注释的第一句复制到包概览页和概述页(例如概述概览)的顶部。确定语句结尾用的规则相同确定类和成员描述第一个语句的相同规则确定。 

概述注释文件
每个要为之建立文档的应用程序或包集可以有它自己的概述文档注释,保存在其自己的“源”文件中,Javadoc 将把它合并到生成的概述页中。在该注释中通常可包括适用于整个应用程序或包集的任何文档。

要创建概述注释文件,可将该文件命名为想要的任何名字(通常为 overview.html)并将它放置在任何地方(通常位于源树的最顶层中)。注意对于相同源文件集可有多个概述注释文件,以用于对不同包集多次运行 javadoc。例如,如果 java.applet 包的源文件包含在 C:/user/src/java/applet 目录中,则可创建概述注释文件 C:/user/src/overview.html。

概述注释文件的内容是一个大文档注释,用 HTML 编写,与前面介绍的包注释文件类似。有关详细内容,参见描述。在编写注释时,要重新循环,第一句应该是关于应用程序或包集的概览,并且在  和第一句之间不要插入标题或任何其他文本。可包括 概述标记;与所有文档注释一样,除了 {@link} 之外的所有标记都就位于描述之后。如果添加 @see 标记,则它必须是全限定名字。

当运行 Javadoc 时,可用 -overview 选项指定概述注释文件。然后将以与包注释文件类似的方法处理该文件。

复制  和  标记之间的全部内容以进行处理。 
处理存在任何 概述标记。 
将处理过后的文本插入到生成的概述页(例如 概述概览)的底部。 
将概述注释的第一句复制到概述概览页的顶部。 

其他未处理文件
还可在源文件中包括想要 Javadoc 复制到目的目录中的任何其他文件。这通常包括图形文件、示例 Java 源文件(.java)和类文件(.class)以及其内容远超过常规 Java 源文件文档注释的独立 HTML 文件。

要包括未处理文件,请将它们放入一个叫作 doc-files 的目录中,它可以是任何包目录的子目录。每个包可以有使用一个这种子目录。例如,如果想要在 java.awt.Button 类文档中包含按钮图像 button.gif,则可将该文件放入 /home/user/src/java/awt/doc-files/ 目录中。所有到未处理文件的链接都必须是硬编码的,因为 Javadoc 不查看这些文件 -- 它只是将目录及其全部内容复制到目的地。例如,Button.java 文档注释中的链接可能类似如下:

    /**
     * 该按钮类似如下:
     * 
     */




生成的文件
缺省地,javadoc 使用标准 doclet 生成 HTML 格式文档。该 doclet 生成下列类型的文件(其中每个 HTML “页”相应于一个单独的文件)。注意 javadoc 生成具有二种名字的文件: 用类/接口命名的文件,和不用类/接口命名的文件(例如 package-summary.html)。后一组中的文件包括下划线(以防止与前一组中的文件名冲突)。

基本内容页 

为生成其文档的每个类或接口生成类或接口页(classname.html)。 
为生成其文档的每个包生成包页(package-summary.html)。Javadoc 将在其中包含源目录树中包目录中的 package.html 文件中提供的任何 HTML 文本。 
整个包集的概述页(overview-summary.html)。它是生成的文档的首页。Javadoc 将在其中包含用 -overview 选项指定的文件中提供的任何 HTML 文本。(注意在有些情况下未生成概述页,详情参见 Javadoc 输出。) 
交叉参考页 

整个包集的类层次页(overview-tree.html)。要查看它,可以单击导航栏上的“概述”,然后单击“树”。 
整个包的类层次页(package-tree.html)。要查看它,可转到特定包、类或接口页;单击“树”显示该包的层次。 
每个包的“用法”页(package-use.html)和每个类和接口的单独页(class-use/classname.html)。该页描述了使用给定类、接口或包的任何部分的包、类、方法、构造函数和域。给定一个类或接口 A,其“用法”页包括 A 的子类、声明为 A 的域、返回 A 的方法以及具有 A 类型参数的方法和构造函数。要访问该页,可首先转到包、类或接口,然后在导航栏中单击“用法”链接。 
不鼓励使用的 API 页(deprecated-list.html),列出所有不鼓励使用的名字。(通常由于改进的原因不推荐使用不鼓励使用的名字,并提供了替代的名字。不鼓励使用的 API 在未来的实现中可能删除。) 
序列化形式页(serialized-form.html),提供关于可序列化或可外部化类的信息。每个这种类具有其序列化域和方法的描述。该信息对于重实现人员有用,使用 API 的开发人员一般不感兴趣。尽管在导航栏中没有其链接,但是可通过转到任何序列化类并单击类描述的“参见”部分中的“序列化形式”,获得该信息。 
所有类、接口、构造函数、域及方法名的 索引(index-*.html),按字母次序排列。它为 Unicode 进行了国际化,并可生成为单个文件或为每个开始字符(例如英语中的 A - Z)生成一个单独的文件。 
支持文件 

帮助页(help-doc.html),它描述导航栏和上述各页。可使用 -helpfile 用自己的自定义帮助文件覆盖缺省帮助文件。 
index.html 文件,创建用于显示的 HTML 框架。加载该文件可以用框架显示头版。该文件本身不包含文本内容。 
包含包、类和接口列表的几个框架文件(*-frame.html),在显示 HTML 框架时使用。 
包列表 文件(package-list),通过 -link 和 -linkoffline 选项使用。它是文本文件,而不是 HTML 文件,并且不能通过任何链接到达。 
样式表单 文件(stylesheet.css),它用于控制生成页面上的颜色数、字体、字体大小、字体样式和定位。 
HTML 框架 

Javadoc 将生成两个或三个 HTML 框架,如下图中所示。当将源文件(*.java)或单个包名作为参数传递到 javadoc 命令中时,它将仅在左边栏中创建一个框架(C) -- 类列表。当给 javadoc 传递两个或多个包名时,它将创建第三个框架(P)(列出所有包)以及一个概述页(Detail)。可通过在“无框架”链接上单击或在 overview-summary.html 进入,绕过框架。

如果您不熟悉 HTML 框架,则应该记住框架可具有焦点,以进行打印或滚动。要使框架具有焦点,可在其上单击。然后在许多浏览器中,箭头键和翻页键将滚动该框架,而打印菜单命令将打印它。

              ------------                  ------------
              |C| Detail |                  |P| Detail |
              | |        |                  | |        |
              | |        |                  |-|        |
              | |        |                  |C|        |
              | |        |                  | |        |
              | |        |                  | |        |
              ------------                  ------------
             javadoc *.java           javadoc java.lang java.awt

根据是否想要 HTML 框架,可加载下列两个文件之一作为开始页: 

index.html(需要框架) 
overview-summary.html(不需要框架) 

生成的文件结构 

生成的类和接口按与 Java 源文件和类文件相同的目录层次组织。该结构是每个子包一个目录。

例如,为 java.applet.Applet 类生成的文档将位于 java/applet/Applet.html。java.applet 包的文件结构也是一样,假定目的目录命名为 apidocs。如前所述,包含词“frame”的所有文件将出现在左上框架或左下框架中。所有其他 HTML 文件出现在右边框架中。

注意 - 目录用 粗体 显示。星号(*)表示当 javadoc 的参数为源文件(*.java)而不是包名时省略的文件和目录。另外当参数为源文件名时,将创建 package-list 但是它为空。文档文件目录将不出现在目的地中,除非它在源目录树中存在。


apidocs                             顶级目录
   index.html                       建立 HTML 框架的初始页
 * overview-summary.html            列出带第一句概览的所有包
   overview-tree.html               列出所有包的类层次
   deprecated-list.html             列出所有包中不鼓励使用的 API
   serialized-form.html             列出所有包的序列化形式
 * overview-frame.html              列出所有包,用于左上框架
   allclasses-frame.html            列出所有包的全部类,用于左下框架中
   help-doc.html                    列出如何组织这些页的用户帮助
   index-all.html                   未用 -splitindex 选项创建的缺省索引
   index-files                      用 -splitindex 选项创建的目录
       index-.html          用 -splitindex 选项创建的索引文件
   package-list                     列出包名,仅用于解析外部引用
   stylesheet.css                   HTML 样式表单,用于定义字体、颜色和位置
   java                             子包目录
       applet                       子包目录
            Applet.html             Applet 类页
            AppletContext.html      AppletContext 接口页
            AppletStub.html         AppletStub 接口页
            AudioClip.html          AudioClip 接口页
          * package-summary.html    列出带首句概览的类
          * package-frame.html      列出该包中的类,用于左下框架
          * package-tree.html       列出该包的类层次
            package-use             列出使用该包的地方
            doc-files               保存图像和示例文件的目录
            class-use               保存 API 用法页的目录
                Applet.html          Applet 类用法页
                AppletContext.html     AppletContext 接口用法页
                AppletStub.html        AppletStub 接口用法页
                AudioClip.html         AudioClip 接口用法页


文档注释 

注释源代码
可以在源代码中任何实体(类、接口、方法、构造函数或域)声明的前面包括文档注释。它们也称为 Javadoc 注释,并且文件必须用 HTML 编写,它们应使用 HTML 实体并可使用 HTML 标记。用户可使用自己浏览器支持的任何 HTML 版本;我们编写的标准 doclet 可在其它地方(文档注释外部)生成 HTML 3.2-兼容代码,其中包括级联样式表单和框架(由于使用框架集,我们在每个生成文件前面添加了“HTML 4.0”)。 

例如,小于 (<) 和大于 (>) 符号的实体应该写为 < 和 >。类似地,与符号(&)应该写为 &。在下面的示例中显示了粗体 HTML 标记 

下面是文档注释: 

/**
 * 这是 doc 注释。
 * @see java.lang.Object
 */

文档注释由开始注释的字符 /** 和结束注释的字符 */ 之间的字符组成。文本分成一行或多行。当 javadoc 解析文档注释时,将去掉每行中的前导星号(*);初始星号(*)字符前面的空格和制表字符也丢弃。如果省略一行上的前导星号,则所有前导空格将被去除。(在某种程度上,可以忽略前导星号。由于省略前导星号导致问题的一种情况是用 
 标记格式化多行的缩进时,例如样本代码所示。没有前导星号,生成文档中的缩进将丢失,因为前导空格被删除。) 

每个文档注释的首句应该为概览名,包含所声明实体的完整简要描述。该语句在第一个句号处结束后跟空格、制表或行结束符,或在第一个 标记 处结束。Javadoc 将首句复制到 HTML 页顶部的成员概览中。

文档注释只有在位于类、接口、构造函数、方法或域声明前面才能被识别。每个声明只有一个文档注释为 Javadoc 工具所识别。

当在文档注释中嵌入 HTML 标记时,不应使用 HTML 标题标记例如 

 和 

,因为 Javadoc 创建完全结构化的文档,而这些标记将会干扰所生成文档的格式。

以字符 @ 开始的第一行文档注释将结束描述并开始标记段落部分。上例中的 @see 标记就是这种标记段落。

有关文档注释的规范,参见 James Gosling、Bill Joy 和 Guy Steele 所著书籍 Java 语言规范 中的第 18 章“文档注释”。




JAVADOC 标记
Javadoc 解析 Java 文档注释中嵌入的特殊标记。这些文档标记可帮助自动从源代码生成完整的格式化 API。标记用“at”符号(@)开头,并区分大小写 -- 必须按照正确大小写字母输入它们。标记必须从一行的开头开始(位于任何前导空格和可选星号之后),否则它将被视为普通文本。按规定应将相同名字的标记放在一起。例如,将所有 @see 标记放在一起。

有关我们将在未来版本中引入的标记的信息,参见 提议标记。

当前标记有: 

标记 引入该标记的 JDK 版本 
@author  1.0 
@deprecated  1.0 
@exception  1.0 
{@link}  1.2 
@param  1.0 
@return  1.0 
@see 1.0 
@serial  1.2 
@serialData  1.2 
@serialField  1.2 
@since  1.1 
@throws  1.2 
@version  1.0 


@author name-text 
当使用 -author 选项时,用指定的 name-text 在生成文档中添加“Author”项。文档注释可包含多个 @author 标记。可以对每个 @author 指定一个或多个名字。在前一种情况中,Javadoc 将在名字之间插入逗号(,)和空格。在后一种情况下,将全部文本复制到生成文档中而不进行解析。如果想要用逗号以外的本地化名字分隔符,则应每行使用这个名字。

@deprecated deprecated-text 
添加注释,指示不应再使用该 API(尽管它仍可用)。Javadoc 将 deprecated-text 移动到描述前面,用斜体显示,并在它前面添加粗体警告: “不鼓励使用”。
deprecated-text 的首句至少应该告诉用户什么时候开始不鼓励使用该 API 及使用什么替代它。Javadoc 仅将首句复制到概览部分和索引中。后面的语句还可解释为什么不鼓励使用它。还应包括一个指向替代 API 的 {@link} 标记(对于 Javadoc 1.2 或更新版本): 

对于 Javadoc 1.2,使用 {@link} 标记。这将在需要的地方创建内嵌链接。例如:
/**
 * @deprecated  在 JDK 1.1 中,被 {@link #setBounds(int,int,int,int)} 取代。
 */

对于 Javadoc 1.1,标准格式是为每个 @deprecated 标记创建 @see 标记(它不能内嵌)。 
有关不鼓励使用的信息,参见 @deprecated 标记。


@exception class-name description 
@exception 标记是 @throws 的同义标记。

{@link name label} 
插入指向指定 name 的内嵌链接。该标记中 name 和 label 的语法与 @see 标记完全相同,如下所述,但是它产生内嵌链接而不是在“参见”部分中放置链接。该标记用花括号开始并用花括号结束,以使它区别于其他内嵌文本。如果在标签内需要使用“}”,则请使用 HTML 实体表示法 } 
对于一个语句中所允许的 {@link} 标记数目没有限制。可以在文档注释的描述部分或任何标记(例如 @deprecated、@return 或 @param)的文本部分中使用该标记。

例如,下面是一个引用 getComponentAt(int, int) 方法的注释: 

使用 {@link #getComponentAt(int, int) getComponentAt} 方法。

根据它,标准 doclet 将生成如下 HTML(假定它引用相同包中另一个类): 

使用 getComponentAt 方法。

它在 web 页上显示为: 

使用 getComponentAt 方法。


@param parameter-name description 
给“参数”部分添加参数。描述可继续到下一行。

@return description 
用 description 文本添加“返回”部分。该文本应描述值的返回类型和容许范围。

@see reference 
添加“参见”标题,其中有指向 reference 的链接或文本项。文档注释可包含任意数目的 @see 标记,它们都分组在相同标题下。@see 标记具有三种变体;下面的第三种形式是最常用的形式。
@see "string"   注意 - 该形式在 JDK 1.2 没有用。它不打印引用文本。 
为 string 添加文本项。不产生链接。string 是通过该 URL 不可用的书籍或其他信息引用。Javadoc 通过查找第一个字符为双引号(")的情形来区分它与前面的情况。例如:
     @see "Java 编程语言"

这将生成如下文本: 

参见: 
"Java 编程语言" 
@see label 
添加 URL#value 定义的链接。其中 URL#value 是相对 URL 或绝对 URL。Javadoc 通过查找第一个字符小于符号(<)区分它与其他情况。例如:
     @see Java 规范

这将生成如下链接: 

参见: 
Java Spec 
@see package.class#member label 
添加带可见文本 label 的链接,它指向 Java 语言中指定名字的文档。其中 label 是可选的;如果省略,则名字将作为可见文本出现,而且嵌入在  HTML 标记中。当想要缩写可见文本或不同于名字的可见文本时,可使用 label。

package.class#member 是 Java 语言中的任何有效名字 -- 包名、类名、接口名、构造函数名、方法名或域名 -- 除了用 hash 字符(#)取代成员名前面的点之外。如果该名字位于带文档的类中,则 Javadoc 将自动创建到它的链接。要创建到外部引用类的链接,可使用 -link 选项。使用另两种 @see 形式的任何一种引用不属于引用类的名字的文档。第一个参数将在 指定名字 中详细介绍。 
label 是可选文本,它是链接的可见标签。label 可包含空格。如果省略 label,则将显示 package.class.member,并相对于当前类和包适当缩短。-- 参见 如何显示名字。 
空格是 package.class#member 和 label 之间的分界符。括号内的空格不表示标签的开始,因此在方法各参数之间可使用空格。 
示例 - 在该示例中,Character 类中的 @see 标记引用 String 类中的 equals 方法。该标记包括两个参数: 名字“String#equals(Object)”和标签“equals”。. 

 /**
  * @see String#equals(Object) equals
  */

标准 doclet 将产生类似如下的 HTML 文档: 


参见:
equals


它在浏览器中看起来像如下内容,其中标签是可见链接文本: 

参见: 
equals 

指定名字 - package.class#member 名可以是全限定的,例如 java.lang.String#toUpperCase(),也可以不是全限定的,例如 String#toUpperCase() 或 #toUpperCase()。如果不是全限定的,则 Javadoc 使用正常 Java 编译器搜索次序查找它,在 @see 的搜索次序 中将进一步介绍。名字可以在括号内包含空格,例如在方法参数之间。

当然使用较短的“部分限定”名字的优点是键入更少,并且源代码中的混乱更少。下表显示的不同的名字形式,其中 Class 可以为类或接口,Type 可以为类、接口、数组或 基本数据类型,而 method 可以为方法或构造函数。

@see package.class#member 的典型形式  
引用当前类的成员
@see #field
@see #method(Type, Type,...)
@see #method(Type argname, Type argname,...)

引用当前包或导入包中的其他类
@see Class#field
@see Class#method(Type, Type,...)
@see Class#method(Type argname, Type argname,...)
@see Class

引用其他包(全限定)
@see package.Class#field
@see package.Class#method(Type, Type,...)
@see package.Class#method(Type argname, Type argname,...)
@see package.Class
@see package  

下述说明适用于上表: 

第一套形式(没有类和包)将导致 Javadoc 仅搜索当前类层次。它将查找当前类或接口、其父类或超接口、或其包含类或接口的成员(搜索步骤 1-3)。它不会搜索当前包的其余部分或其他包(搜索步骤 4-5)。 
如果任何方法或构造函数输入为不带括号的名字,例如 getValue,且如果没有具有相同名字的域,则 Javadoc 将正确创建到它的链接,但是将显示警告信息,提示添加括号和参数。如果该方法被重载,则 Javadoc 将链接到它搜索到的第一个未指定方法。 
对于所有形式,内部类必须指定为 outer.inner,而不是简单的 inner。 
如上所述,hash 字符(#)而不是点(.)用于分隔类和成员。这使 Javadoc 可正确解析,因为点还用于分隔类、内部类、包和子包。当 hash 字符(#)是第一个字符时,它是绝对不可少的。但是,在其他情况下,Javadoc 通常不严格,并允许在不产生歧义时使用点号,但是它将显示警告。 
@see 的搜索次序 - Javadoc 将处理出现在源文件(.java)、包文件(package.html)或概述文件(overview.html)中的 @see 标记。在后两种文件中,必须完全限定用 @see 提供的名字。在源文件中,可指定全限定或部分限定的名字。

当 Javadoc 在 .java 中遇到不是全限定的 @see 标记时,它按照与 Java 编译器相同的次序搜索指定名字(Javadoc 将不检测名字空间二义性,因为它假定源代码不会有这些错误) 搜索次序在 Java 语言规范 第六章“名字”中正式定义,由“内部类规范”修改。Javadoc 在所有相关和导入类和包中搜索该名字。特别地,它按如下次序搜索: 

当前类或接口 
任何包含类和接口,先搜索最近的 
任何父类和超接口,先搜索最近的 
当前包 
任何导入包、类和接口,按导入语句中的次序搜索 
Javadoc 继续对它遇到的每个类重复步骤 1-3 进行搜索,直到找到匹配项。这就是说,当它搜索当前类及其包含类 E 之后,它在搜索 E 的包含类之前先搜索 E 的父类。 在步骤 4 和 5 中,Javadoc 不按任何指定的次序(该次序取决于特定编译器)搜索包中的类或接口。在步骤 5 中,Javadoc 将在 in java.lang 中查找,因为它是由所有程序自动导入的。

Javadoc 没有必要在子类中查找,也没有必要在其他包中查找,即使它们的文档在同一次运行中生成。例如,如果 @see 标记位于 java.awt.event.KeyEvent 类中并引用 java.awt 包中的名字,则 javadoc 将不查找该包,除非该类导入它。

如果显示名字 - 如果省略 label,则将显示 package.class.member。一般地,将相对于当前类和包适当缩短它。这里“缩短”是指仅显示必要的名字,使之尽可能短。例如: 

方法包含 @see Tag  @see 标记  显示为  
String.toUpperCase()  @see String#toLowerCase() 
(引用相同类的成员)  toLowerCase() 
(省略类名)  
String.toUpperCase()  @see Character#toLowerCase(char) 
(引用其他类的成员)  Character.toLowerCase(char) 
(包括类名)  

@see 示例
右边的注释显示了当 @see 标记位于其他包(例如 java.applet.Applet)中时,如何显示名字。

                                           参见:
@see java.lang.String                   //  String                          
@see java.lang.String The String class  //   String 类                
@see String                             //  String                          
@see String#equals(Objetc)              //  String.equals(Object)           
@see String#equals                      //  String.equals(java.lang.Object) 
@see java.lang.Object#wait(long)        //  java.lang.Object.wait(long)     
@see Character#MAX_RADIX                //  Character.MAX_RADIX             
@see Java Spec  //  Java 规范           
@see "The Java Programming Language"    //  "Java 编程语言"        

 

@since since-text 
用 since-text 指定的内容给生成文档添加“Since”标题。该文本没有特殊内部结构。该标记表示该改变或功能自 since-text 所指定的软件版本之后就存在了。例如:
    @since JDK1.1


@serial field-description 
用于缺省可序列化域的文档注释中。
可选的 field-description 增强了文档注释对域的描述能力。该组合描述必须解释该域的意义并列出可接受值。如需要,该描述可有多行。

应该对自 Serializable 类的最初版本之后添加的每个可序列化域添加 @since 标记。

要获得私有类的序列化形式,可使用 -private 选项。因而,要生成所有公共类和私有类的序列化形式,可用 -private 选项运行 javadoc。

有关如何使用这些标记的信息,以及相应示例,参见 Java 对象序列化规范 中第 1.6 节“建立类的可序列化域和数据的文档。


@serialField field-name field-type field-description 
建立 Serializable 类的 serialPersistentFields 成员的 ObjectStreamField 组件的文档。应该对每个 ObjectStreamField 使用一个 @serialField 标记。

@serialData data-description 
data-description 建立数据(尤其是 writeObject 方法所写入的可选数据和 Externalizable.writeExternal 方法写入的全部数据)序列和类型的文档,。
@serialData 标记可用于 writeObject、readObject、writeExternal 和 readExternal 方法的文档注释中。


@throws class-name description 
@throws 和 @exception 标记同义。用 class-name 和 description 文本给生成的文档添加“抛出”子标题。其中 class-name 是该方法可抛出的异常名。如果该类不是全限定的,则 Javadoc 使用 搜索次序 查找该类。

@version version-text 
当使用 -version 选项时用 version-text 指定的内容给生成文档添加“版本”子标题。该文本没有特殊内部结构。文档注释最多只能包含一个 @version 标记。版本通常是指包含该类或成员的软件(例如 JDK)版本。 



可使用标记的地方
下面介绍了在哪些地方可使用标记。注意这四个标记可用于所有文档注释中:@see、@link、@since、@deprecated。




概述文档标记
概述标记可出现在概述页的文档注释中(该文档通常位于叫作 overview.html 的源文件中)。像在任何其他文档注释中一样,这些标记必须位于描述后面。

注意 - {@link} 标记在 JDK 1.2 的概述文档中有一个 bug -- 文档正确显示,但没有链接。

概述标记  
@see 
{@link}  
@since  
 




包文档标记
包标记可出现在包的文档注释中(该文档位于叫作 package.html 的源文件中)。

包标记  
@see 
{@link}  
@since  
@deprecated 
 




类和接口文档标记
下面是可出现在类或接口的文档注释中的标记。

类/接口标记  
@see 
{@link}  
@since  
@deprecated 
@author 
@version 
 

类注释示例:
/**
 * 代表屏幕上窗口的类。
 * 例如:
 * 

 *    Window win = new Window(parent);
 *    win.show();
 * 

 *
 * @author  Sami Shaio
 * @version 1.6, 06/25/99
 * @see     java.awt.BaseWindow
 * @see     java.awt.Button
 */
class Window extends BaseWindow {
   ...
}




域文档标记
下面是可出现在域文档注释中的标记。

域标记  
@see 
{@link}  
@since  
@deprecated 
@serial 
@serialField 
 

域注释示例:
    /**
     * 组件的 X 坐标。
     *
     * @see #getLocation()
     */
    int x = 1263732;




构造函数和方法文档标记
下面是可出现在构造函数或方法的文档注释中的标记。

方法/构造函数标记  
@see 
{@link}  
@since  
@deprecated 
@param 
@return 
@throws (@exception) 
@serialData 
 

方法文档注释示例:
    /**
     * 返回指定索引处的字符。索引
     * 范围为 0 至 length() - 1.
     *
     * @param     index  想要的字符的索引。
     * @return    想要的字符。
     * @exception StringIndexOutOfRangeException
     *              如果索引不在范围 0
     *              到 length()-1 中。
     * @see       java.lang.Character#charValue()
     */
    public char charAt(int index) {
       ...
    }




命令行参数文件
为了缩短或简化 javadoc 命令,可指定一个或多个其中每行包含一个源文件名或包名的文件。在命令行中,采用 '@' 字符加上文件名的方法将它指定为文件列表。当 javadoc 遇到用字符‘@’开头的参数时,它将操作该文件中的名字,仿佛这些名字位于命令行上一样。

例如,可以在名为 packages 的文件中列出所有包名。该文件可能形如: 

     com.mypackage1
     com.mypackage2
     com.mypackage3

然后可用如下命令运行 javadoc:

     C:> javadoc -d apidocs @packages




选项
javadoc 工具使用 doclets 确定其输出。除非使用 -doclet 选项指定自定义 doclet ,否则 Javadoc 使用缺省的标准 doclet。Javadoc 提供一套命令行选项,可用于任何 doclet -- 这些选项将在下面的子标题 Javadoc 选项 中介绍。标准 doclet 提供了一套额外的命令行选项,它们将在下面的子标题 标准 Doclet 提供的选项 中介绍。所有选项名都不区分大小写,但是其参数可能区分大小写。

选项包括: 

-1.1
-author
-bootclasspath
-bottom
-classpath
-d
-docencoding
-doclet
-docletpath
-doctitle
-encoding
-extdirs
-footer
-group
 -header
-help
-helpfile
-J
-link
-linkoffline
-locale
-nodeprecated
-nodeprecatedlist
-nohelp
-noindex 
-nonavbar
-notree 
-overview
 -package
-private
-protected
-public
-sourcepath
-splitindex
-stylesheetfile
-title
-use
-verbose
-version
-windowtitle
 


Javadoc 选项
-overview  i>path/filename 
指定 javadoc 应该从 path/filename 所指定的“源”文件中获取概述文档,并将它放到概述页中(overview-summary.html)。其中 path/filename 是相对于 -sourcepath 的相对路径名。
尽管可对 filename 使用任何名字并将它放在 path 指定的任何地方,但是通常将它命令为 overview.html 并将它放入包含最顶级包目录的源目录树中。在该位置,建立包文档时不需要 path,因为 -sourcepath 将指向该文件。例如,如果 java.lang 包的源目录树是 /src/classes/java/lang/,则可以概述文件放到 /src/classes/overview.html。参见 实际示例。

有关 path/filename 指定文件的信息,参见 概述注释文件。

在一定情况下,将不产生概述页。有关详细信息,参见 HTML 框架。


-public 
只显示公有类及成员。

-protected 
只显示受保护的和公有的类及成员。这是缺省状态。

-package 
只显示包、受保护的和公有的类及成员。

-private 
显示所有类和成员。

-help 
显示联机帮助,它将列出这些 javadoc 和 doclet 命令行选项。

-doclet class 
指定启动用于生成文档的 doclet 的类文件。该 doclet 定义了输出的内容和格式。如果未使用 -doclet 选项,则 javadoc 使用标准 doclet 生成缺省 HTML 格式。该类必须包含 start(Root) 方法。该启动类的路径由 -docletpath 选项定义。

-docletpath classpathlist 
指定 doclet 类文件的路径,该类文件用 -doclet 选项指定。如果 doclet 已位于搜索路径中,则没有必要使用该选项。

-1.1 
生成具有用 Javadoc 1.1 生成的文档的外观和功能的文档。也就是说,页的背景为灰色,用图像做页眉,使用 bullet 列表而不是表格,具有单级目的目录结构,不包含继承 API,不使用 HTML 框架,并且不支持内部类。该选项还将索引分割成每个字母一个文件。如果想要这种外观,则该选项比 javadoc 1.1 优越之处在于修正了一些错误。
不是所有选项都能用于 -1.1 选项。为了查看哪些选项可用,可执行:

  C:> javadoc -1.1 -help

在该列表中显示的 -footer 选项在功能上与本页中其他地方介绍的 -bottom 选项相同。而 -title 选项在功能上与 -doctitle 相同。


-sourcepath sourcepathlist 
当将包名传递到 javadoc 命令中时,指定查找源文件(.java)的搜索路径。注意只有当用 javadoc 命令指定包名时才能使用 sourcepath 选项 -- 它将不会定位传递到 javadoc 命令中的 .java 文件。如果省略 -sourcepath,则 javadoc 使用类路径查找源文件(参见 -classpath)。
将 sourcepathlist 设置成正在生成其文档的包的源树的根目录。例如,假定想要为叫作 com.mypackage 的包建立文档,其源文件位于:

C:/user/src/com/mypackage/*.java

在这种情况下,将把 sourcepath 指定为 C:/user/src,该目录包含 com/mypackage,然后提供包名 com.mypackage:

javadoc -sourcepath C:/user/src com.mypackage

这是相当容易记忆的,注意如果将源路径和包名级联到一起,并将点号改为斜杠“/”,则最后将得到该包的完整路径:C:/user/src/com/mypackage. 


-classpath classpathlist 
指定 javadoc 将在其中查找 引用类 的路径 -- 引用类是指带文档的类加上它们引用的任何类。Javadoc 将搜索指定路径的所有子目录。classpathlist 可以包含多个路径,它们用分号分隔。有关如何指定 classpathlist,请遵循 类路径 文档中的指令。
如果省略 -sourcepath,则 Javadoc 使用 -classpath 查找源文件和类文件(为了向后兼容性)。因而,如果想要在不同的路径中搜索源文件和类文件,则应使用 -sourcepath 和 -classpath 两个选项。

例如,如果想要建立 com.mypackage 的文档,其类位于目录 C:/user/src/com/mypackage 中,并且该包依赖于 C:/user/lib 中的库,则将会指定: 

  C:> javadoc -classpath /user/lib -sourcepath /user/src com.mypackage

与其他工具一样,如果不指定 -classpath,则 Javadoc 将使用 CLASSPATH 环境变量(如果它已设置)。如果二者都未设置,则 Javadoc 将从当前目录中搜索类。

有关 Javadoc 如何使用 -classpath 查找用户类及相关扩展类和自举类的深入介绍,参见 如何查找类。


-bootclasspath classpathlist 
指定自举类所在路径。它们名义上是 Java 平台类。这个 bootclasspath 是 Javadoc 将用来查找源文件和类文件的搜索路径的一部分。有关详细信息,参见 如何查找类。在 classpathlist 中用分号(;)分隔目录。

-extdirs dirlist 
指定扩展类所在的目录。它们是任何使用 Java 扩展机制的类。这个 extdirs 是 Javadoc 将用来查找源文件和在文件的搜索路径的一部分。有关详细信息,参见上面的 -classpath。在 dirlist 中用分号(;)分隔目录。

-verbose 
在 javadoc 运行时提供更详细的信息。不使用 verbose 选项时,将显示加载源文件、生成文档(每个源文件一条信息)和排序的信息。verbose 选项导致打印额外的信息,指定解析每个 java 源文件的毫秒数。

-locale language_country_variant 
指定 javadoc 在生成文档时使用的环境。该参数为环境名,如 java.util.Locale 文档中所述,例如 en_US(英语,美国)或 en_US_WIN(Windows 变量)。
指定环境将导致 javadoc 为各种信息(导航栏中的字符串、列表和表格的标题、帮助文件内容、stylesheet.css 中的注释,等等)选择使用该环境的资源文件。它还指定按字母次序排序列表的排序次序,以及用于确定第一句结束的语句分隔符。它不决定带文档类的源文件中指定的文档注释文本的环境。


-encoding name 
指定源文件编码名,例如 EUCJIS/SJIS。如果未指定该选项,则使用平台缺省转换器。

-Jflag 
将 flag 直接传递给运行 javadoc 的运行时系统 java。注意在 J 和 flag 之间不能有空格。例如,如果需要确保系统分配 32 兆内存用于处理生成文档,则应按如下使用该标志: 
? C:> javadoc -J-Xmx32m -J-Xms32m com.mypackage 

标准 Doclet 提供的选项
-d directory 
指定 javadoc 保存生成的 HTML 文件的目的目录。("d" 表示 "destination.") 省略该选项将导致把文件保存到当前目录中。其中 directory 可以是绝对路径或相对当前工作目录的相对路径。例如,下列代码将生成 com.mypackage 包的文档并将结果保存在 C:/user/doc/ 目录中: 
  C:> javadoc -d /user/doc com.mypackage


-use 
对每个带文档类和包包括一个“用法”页。该页描述使用给定类或包的任何 API 的包、类、方法、构造函数和域。对于给定类 C,使用类 C 的任何东西将包括 C 的子类、声明为 C 的域、返回 C 的方法以及具有 C 类型参数的方法和构造函数。
例如,下面来看一下出现在 String 的“用法”页上的内容。java.awt.Font 类中的 getName() 方法返回类型 String。因而,getName() 使用 String,从而可在 String 的“用法”页上找到该方法。

注意它只产生使用 API 的文档,而不包括实现。如果方法在其实现中使用 String 但不接受字符串参数也不返回字符串,则将不认为它使用 String。

可通过先转到类或包,然后在导航栏上单击“用法”链接,访问生成的“用法”页。 

-version 
在生成文档中包括 @version 文本。缺省地将省略该文本。

-author 
在生成文档中包括 @author 文本。

-splitindex 
将索引文件按字母分割成多个文件,每个字母一个文件,再加上一个包含所有以非字母字符开头的索引项的文件。

-windowtitle title 
指定放入 HTML  标记中的标题。它将出现在窗口标题栏中和为该页创建的任何浏览器书签(最喜欢的地方)中。该标题不应该包含任何 HTML 标记,因为浏览器将不能正确解释它们。在 title 中的任何内部引号必须转义。如果省略 -windowtitle,则 Javadoc 对该选项使用 -doctitle 的值。<br><br>-doctitle title <br>指定放置在靠近概述概览文件顶部的标题。该标题将作为一级标题,居中地直接放在导航栏下面。title 可包含 html 标记和空格,但是如果这样,则必须用引号将它括起。在 title 中的任何内部引号必须转义。<br><br>-title title <br>该选项不再存在。它仅存在于 Javadoc 1.2 的 Beta 版中。它已重命名为 -doctitle。重命名该选项是为了更清楚地表示它定义文档标题而不是窗口标题。<br><br>-header header <br>指定放置在每个输出文件顶部的页眉文本。该页眉将放在上部导航栏的右边。header 可包含 HTML 标记和空格,但是如果这样则必须用引号将它括起。在 header 中的任何内部引号必须转义。<br><br>-footer footer <br>指定放置在每个输出文件底部的脚注文本。脚本将放置在下部导航栏的右边。footer 可包含 html 标记和空格,但是如果这样,则必须用引号将它括起。在 footer 中的任何内部引号必须转义。<br><br>-bottom text <br>指定放置在每个输出文件底部的文本。该文本将放置在页底,位于下部导航栏的下面。其中 text 可包含 HTML 标记和空格,但是如果这样,则必须用引号将它括起。在 text 中的任何内部引号必须转义。<br><br>-link docURL <br><br>创建链接指向已用 javadoc-生成的 外部引用类 的文档。参数 docURL是想要链接到的 javadoc-生成外部文档的 URL。该位置可以是相对的或绝对的 URL。<br>也就是说,该选项使得可链接到代码所引用但是当前 javadoc 运行没有产生其文档的类。为保证这些链接指向有效页,必须知道那些 HTML 页所在位置,并用 docURL 指定其位置。例如,这将允许第三方文档链接到 </font> <font face="Arial">http://java.sun.com 上的 java.* 文档。另一种用途是用于包集之间的 交叉-链接: 对一个包集执行 javadoc,然后再对另一个包集运行 javadoc,在两个集合之间创建双向链接。另一个用途是作为到 更新文档 的“hack”: 在整个包集上执行 javadoc,然后对更改过的包的较小集再次运行 javadoc,从而将更新文件插回到原集中。(这样做可节省时间,但是需要小心使用 -- 如果从子集中添加或删除 API,则将会丢失或破坏索引中的链接。) </font> <font face="Arial">;<br><br>按如下使用 -link 选项: <br><br>省略 -link 选项,使 javadoc 只创建指向当前运行中正在生成的文档中 API 的链接。(不使用 -link 选项,Javadoc 将不创建外部引用文档的链接,因为它不知道该文件是否存在(或其位置)。) <br>包括 -link 选项,使用 javadoc 还创建指向位于 docURL 的 外部引用类 文档的链接。 <br>注意如果 URL 位于 WWW 上,则 javadoc 在生成文档时必须具有 web 连接以访问 package-list。如果不能访问,则可使用 -linkoffline 代替。<br><br>Package List - -link 选项需要一个名为 package-list 的文件(它由 Javadoc 生成)位于用 -link 指定的 URL 中。package-list 文件是简单的文本文件,列出在该位置有文档的包名。在下面将介绍 Javadoc 如何使用包列表。<br><br>例如,Java 平台 1.2 API 的包列表位于 </font> <font face="Arial">http://java.sun.com/products/jdk/1.2/docs/api/package-list。并且以如下内容开始:</font> <br> <br> <font face="Arial">  java.applet<br>  java.awt<br>  java.awt.color<br>  java.awt.datatransfer<br>  java.awt.dnd<br>  java.awt.event<br>  java.awt.font<br>  等等。<br><br>当 javadoc 不带 -link 选项运行时,在它生成文档时,当它遇到属于 外部引用类 的名字时,它将打印不带链接的名字。但是,如使用 -link 选项,则 Javadoc 将在指定 docURL 的 package-list 文件中搜索该包名。如果它查找到该包名,则将 URL 添加到该名字前面。(如果 URL 是相对路径并且 -d 目的目录选项是相对路径,则 Javadoc 将目的目录的相对路径添加到 URL 中,以使链接在目的目录中可用。) <br><br>为了不产生无效链接,外部引用的所有文档都必须在指定 URL 存在。Javadoc 将不会检查这些页的存在 -- 它只检查 package-list 的存在。<br><br>如果 javadoc 的参数是源文件而不是包,则将创建 package-list, 文件但是为空。<br><br>示例 - 例如,下面命令导致 Javadoc 在给定 URL 查找 package-list 文件,读取该文件中的包名,然后在添加指向那些外部包中 API 的链接时使用给定 URL:<br><br>  C:> javadoc -link </font> <font face="Arial">http://java.sun.com/products/jdk/1.2/docs/api com.mypackage</font> <br> <br> <font face="Arial">多链接 - 可提供多个 -link 选项,链接到任意多个外部生成文档。 已知 Bug - Javadoc 1.2 有一个已知 bug,它使得不能提供多个 -link 命令。在未来版本中将会修正它。<br><br>为每个要链接的外部文档指定不同的链接选项: <br><br>? C:> javadoc -link docURL1 -link docURL2 ... -link docURLn com.mypackage <br><br>其中 docURL1、 docURL2、 ... docURLn 分别指向外部文档的根目录,各自包含一个 package-list 文件。<br><br>交叉链接 - 注意在交叉链接两个或多个还没有生成的文档时,可能需要“启动”。也就是说,如果任何文档的 package-list 都不存在,则在对第一个文档运行 javadoc 时,第二个文档的包列表文件也将不存在。因而,要创建外部链接,必须在生成第二个文档之后重新生成第一个文档。<br><br>在这种情况中,第一次生成文档的目的是创建其包列表(如果能确定包名,也可手工创建包列表)。然后生成带外部链接的第二个文档。Javadoc 在需要的外部 package-list 文件不存在时打印警告信息。<br><br>更新文档 - -link 选项的第三个用途是如果项目有数十个或数百个包,并且已对整个目录树运行了 javadoc,现在,在单独的运行中,想要快速地进行一些小的修改,并对源目录树的一小部分重新运行 javadoc,这时它是非常有用的。这有些类似于 hack,因为它只在改变文档注释时才能正常工作,而修改签名则不行。如果想要在源代码中添加、删除或改变任何签名,则可能在索引、包目录树、继承成员列表、用法页或其他位置出现无效链接。<br><br>首先,为这次小运行新建一个目的目录,并将 -link 和 -d 设置成相同的相对路径: 如果原文档位于目录 html 中,则为:<br><br>  C:> javadoc -d update -linkoffline . html com.mypackage<br><br>当 javadoc 完成后,复制 update 中生成的文件并覆盖 html 中的原文件。<br><br>背景知识: 一般地,在 javadoc 运行时,它有可能为其生成页中出现的名字产生链接: 例如在签名、@see 标记、{@link} 标记、概览、层次、概述和索引中。有些链接将转到当前运行中生成的页,而其他链接有可能转到不是在当前运行中生成的页。<br><br><br>-linkoffline docURL packagelistURL <br><br>该选项为外部引用类名字创建指向文档的链接,其中: <br>docURL 是想要链接到的 javadoc 生成的外部文档的根目录的 URL。该位置可以是相对的或绝对的 URL。 <br>packagelistURL 是包含文档的包列表文件所在目录的 URL。(如果需要,可手工创建该文件。) <br>该选项是 -link 的一种变体。如果在运行 javadoc 时包列表文件在 docURL 位置不存在,则可使用 -linkoffline。如果知道文档链接到的包名和文档所在位置,则可以在该包列表文件实际存在于该位置之前,生成带外部链接的文档。这使得可用自己的包列表副本,生成具有适当链接的文档。<br><br>当需要生成链接指向包名已知但尚未发布的新外部文档(但是还没有建立)时,这时非常有用的。这使得两个公司可同时发布他们的文档。它还允许生成链接到没有包列表文件的外部文档(或许它是用 Javadoc 1.0、1.1 或最高 1.2 Beta3 生成)的文档。<br><br>注意该选项在运行 javadoc 时不需要访问文档 URL。因而,即使该 URL 位于 WWW 上,在生成文档时也不需要 web 链接。<br><br>如下所示,要使用该选项,请指定 docURL1(javadoc 生成的外部引用类的文档的位置)和 packagelistURL1(其包列表文件的位置)。如果它们具有相同位置,则可仅使用 -link 选项。对每个想要引用的生成文档,需要包括 -linkoffline 一次: <br><br>C:> javadoc -linkoffline docURL1 packagelistURL1 -linkoffline docURL2 packagelistURL2 <br><br>例如,下面的命令使用第一个参数给定的 URL 添加链接,并在第二个参数给定的路径中查找 package-list 文件。<br><br>C:> javadoc -linkoffline </font> <font face="Arial">http://java.sun.com/products/jdk/1.2/docs/api /usr/web/work/products/jdk/1.2/docs/api/</font> <br> <br> <font face="Arial">-group groupheading packagepattern:packagepattern:... <br>将概述页上的包分成指定的组,每组一个表格。可以用不同的 -group 选项指定每个组。各组按命令行中指定的次序出现在页面上,组内的包按字母排序。对于给定 -group 选项,与 packagepattern 表达式列表匹配的包出现在标题为 groupheading 的表格中。<br>groupheading 可以为任何文本,并可包括空格。该文本将放置在该组的表格标题中。 <br>packagepattern 可以为任何包名,也可以为任何包名的开头后跟星号(*)。星号是通配符,表示“匹配任何字符”。它是唯一允许的通配符。一组中可包包括多个模式,并用分号(;)分隔它们。 <br>注意: 如果在模式或模式列表中使用星号,则模式 列表必须位于引号内部,例如 "java.lang*:java.util" <br><br>如果没有提供任何 -group 选项,则所有包都将放在一组中,并且其标题为“包”。如果所有组未包括全部带文档包,则剩余的任何包将出现在一个单独的组中,且其标题为“其他包”。<br><br>例如,下面的选项将四个带文档包分成“核心包”、“扩展包”和“其他包”。注意后面的“点”号不出现在 "java.lang*" 中 -- 包括点号,例如“java.lang.*”将忽略 java.lang 包。<br><br>  C:> javadoc -group "核心包" "java.lang*:java.util"<br>            -group "扩展包" "javax.*"<br>            java.lang java.lang.reflect java.util javax.servlet java.new<br><br>结果分组为: <br><br>核心包 <br>java.lang <br>java.lang.reflect <br>java.util <br>扩展包 <br>javax.servlet <br>其他包 <br>java.new <br><br>-nodeprecated <br>防止在文档中生成任何不鼓励使用的 API。它执行 -nodeprecatedlist 所做的事情,并且它不在文档其余部分生成任何不鼓励使用的 API。当编写代码并不想被不鼓励使用的代码分心时,这是非常有用的。<br><br>-nodeprecatedlist <br>防止在生成文件中包含不鼓励使用的 API 列表(deprecated-list.html)并防止在导航栏中包含该页的链接。(但是,javadoc 继续在文档其余部分生成不鼓励使用的 API。) 如果源代码未包含不鼓励使用的 API,并且想要导航栏更干净,则它是非常有用的。<br><br>-notree <br>在生成文档中忽略类/接口层次。缺省地,将产生该层次。<br><br>-noindex <br>在生成文档中忽略索引。缺省地,将产生索引。<br><br>-nohelp <br>在输出的每页顶部和底部的导航栏中忽略“帮助”链接。<br><br>-nonavbar <br>防止产生导航栏、页眉和脚注,否则它们将出现在生成页的顶部和底部。它对“bottom”选项没有影响。当只对内容感兴趣并且没有必要导航时,例如仅将文件转换成 PostScript 或 PDF 以进行打印,-nonavbar 选项是非常有用的。<br><br>-helpfile path/filename <br>指定顶部和底部导航栏中“帮助”链接所链接到的替代帮助文件 path/filename 的路径。不使用该选项时,Javadoc 自动创建帮助文件 help-doc.html,它在 Javadoc 中硬编码。该选项使得可覆盖这种缺省情况。其中 filename 可以是任何名字,不局限于 help-doc.html -- Javadoc 将相应调整导航栏中的链接。例如:<br>  C:> javadoc -helpfile C:/user/myhelp.html java.awt<br><br> <br><br>-stylesheetfile path/filename <br>指定替代 HTML 样式表单文件的路径。不使用该选项时,Javadoc 将自动创建样式表单文件 stylesheet.css,它在 Javadoc 中硬编码。该选项使得可覆盖这种缺省情况。其中 filename 可以是任何名字,不局限于 stylesheet.css。例如:<br>  C:> javadoc -stylesheetfile C:/user/mystylesheet.css com.mypackage<br><br> <br><br>-docencoding name <br>指定输出 HTML 文件的编码方式。 <br><br><br><br>简单示例<br>可以对整个包或单个类运行 javadoc。每个包名有一个相应的目录名。在下面的示例中,源文件位于 C:/home/src/java/awt/*java。目的目录是 C:/home/html。 <br><br>建立包的文档<br>要建立包的文档,该包的源文件(*.java)必须位于一个与该包名字相同的目录中。如果包名由几个标识符组成(用点号分隔),则每个标识符代表一个不同的目录。因而,所有 java.awt 类必须位于名为 java/awt/ 的目录中。可用如下两种方式之一运行 javadoc -- 通过改变目录(用 cd)或使用 sourcepath 选项。不能使用通配符指定多个包。<br><br>情况 1- 换到包目录 - 换到全限定包的父目录。然后运行 run javadoc,并提供想要建立其文档的一个或多个包的名字:<br>  C:> cd C:/home/src/<br>  C:> javadoc -d C:/home/html java.awt java.awt.event<br><br>情况 2 - 从任何目录 - 在这种情况下,当前目录是什么没有关系。运行 javadoc 时用 sourcepath 提供全限定包的父目录,并提供想要建立其文档的一个或多个包的名字:<br>  C:> javadoc -d C:/home/html -sourcepath C:/home/src java.awt java.awt.event<br><br>这两种情况都将产生包 java.awt 和 java.awt.event 中公共和保护类和接口的 HTML 格式文档,并将 HTML 文件保存在指定目的目录(C:/home/html)中。因为要生成两个或多个包,所以文档具有三个框架 -- 包列表、类列表和主页。 <br><br>建立类的文档<br>要建立一个或多个源文件(.java)的文档,这些文件不必位于特定目录中。可以用如下两种方式之一运行 javadoc -- 通过改变目录(用 cd)或完全指定 .java 文件的路径。选项 -sourcepath 在建立源文件的文档时没有作用。可使用命令行通配符,例如星号(*),指定多个类。<br><br>情况 1 - 换到源目录 - 换到保存 .java 文件的目录。然后运行 javadoc,并提供想要建立其文档的一个或多个源文件名。<br>  C:> cd C:/home/src/java/awt<br>  C:> javadoc -d C:/home/html Button.java Canvas.java Graphics*.java<br><br>该示例产生类 Button、Canvas 和以 Graphics 开头的类的 HTML 格式文档。因为是源文件而不是包名作为参数传递给 javadoc,所以文档具有两个框架 -- 类列表和主页。<br><br>情况 2 - 改变到包的根目录 - 当要为相同根目录下不同子包中的单个源文件建立文档时,这是非常有用的。改变到包的根目录,并提供源文件相对于其根的路径。<br>  C:> cd /home/src/<br>  C:> javadoc -d /home/html java/awt/Button.java java/applet/Applet.java<br><br>该示例产生类 Button 和 Applet 的 HTML 格式文档。<br><br>情况 3 - 从任何目录 - 在这种情况下,当前目录是什么没有关系。运行 javadoc,并提供想要建立其文档的 .java 文件的绝对路径(或相对于当前目录的相对路径)。<br>  C:> javadoc -d C:/home/html C:/home/src/java/awt/Button.java C:/home/src/java/awt/Graphics*.java<br><br>该示例产生类 Button 和以 Graphics 开头的类的 HTML 格式文档。<br><br><br>建立包和类的文档<br>可同时建立整个包和单个类的文档。下面是一个混合前两个示例的示例。可使用 -sourcepath 指定包的路径但不作为单个类的路径。<br><br>  C:> javadoc -d C:/home/html -sourcepath C:/home/src java.awt C:/home/src/java/applet/Applet.java<br><br>该示例生成包 java.awt 和类 Applet 的 HTML 格式文档(Javadoc 从 Applet.java 源文件中的包声明(如果有)中确定 Applet 的包名)。 <br><br><br><br><br>实际示例<br>Javadoc 有许多有用的选项,有些相对其他更为常用。下面是实际中我们用来在 Java 平台 API 上运行 javadoc 的命令,它使用了 makefile 变量(除了未列出所有要建文档的包之外)。<br><br>javadoc -sourcepath /jdk/src/share/classes /   /* 源文件路径        */<br>        -d /jdk/build/api                  /   /* 目的目录          */<br>        -use                               /   /* 添加“用法”文件  */<br>        -splitIndex                        /   /* 分割索引 A-Z      */<br>        -windowtitle $(WINDOWTITLE)        /   /* 添加窗口标题      */<br>        -doctitle $(DOCTITLE)              /   /* 添加文档标题      */<br>        -header $(HEADER)                  /   /* 添加运行页眉文本  */<br>        -bottom $(BOTTOM)                  /   /* 添加底部文本      */<br>        -group $(GROUPCORE)                /   /* 概述页的核心标题  */<br>        -group $(GROUPEXT)                 /   /* 概述页的扩展标题  */<br>        -overview overview-core.html       /   /* 概述文本          */<br>        -J-Xmx180m                         /   /* 180MB 内存        */<br>        java.lang java.lang.reflect        /   /* 要建立其文档的包  */<br>        java.util java.io java.net         /<br>        java.applet<br><br>WINDOWTITLE = 'Java 平台 1.2 最终 API 规范'<br>DOCTITLE = 'Java<sup><font size="-2">TM</font></sup> Platform 1.2 Final API Specification'<br>HEADER = '<b>Java Platform 1.2</b><br><font size="-1">Final</font>'<br>BOTTOM = '<font size="-1"><a href="http://java.sun.com/cgi-bin/bugreport.cgi"> 提交<br>    bug 或功能 </a><br><br>Java 是 Sun Microsystems , Inc 在美国和其他国家<br>    的商标或注册商标。<br>Copyright 1993-1998<br>    Sun Microsystems, Inc. 901 San Antonio Road,<br>Palo Alto, California, 94303, U.S.A.<br>    保留所有权利。</font>'<br>GROUPCORE = '"核心包" "java.*:com.sun.java.*:org.omg.*"<br>GROUPEXT  = '"扩展包" "javax.*"'<br><br>如果省略 -windowtitle 选项,则 javadoc 将文档标题复制到窗口标题。-windowtitle 选项是没有必要的,除非文档标题包含 HTML 标记。<br><br>如果像这里所做的一样省略 -footer 选项,则 javadoc 将页眉文本复制到脚注文本。<br><br>其他重要的选项是 -classpath 和 -link。<br><br><br><br><br>环境<br><br>CLASSPATH <br>提供 javadoc 用于查找用户类文件路径的环境变量。该环境变量将被 -classpath 选项覆盖。用分号分隔目录,例如: <br><br>.;C:/classes;C:/home/java/classes <br><br><br><br>另请参阅<br>javac <br>java <br>jdb <br>javah <br>javap <br>Javadoc 主页 <br>如何为 Javadoc 编写文档注释 <br>如有意见,请发送到: javadoc-tool@sun.com </font> </div> </div> </div> </div> </div> <!--PC和WAP自适应版--> <div id="SOHUCS" sid="1290336726392315904"></div> <script type="text/javascript" src="/views/front/js/chanyan.js"></script> <!-- 文章页-底部 动态广告位 --> <div class="youdao-fixed-ad" id="detail_ad_bottom"></div> </div> <div class="col-md-3"> <div class="row" id="ad"> <!-- 文章页-右侧1 动态广告位 --> <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_1"> </div> </div> <!-- 文章页-右侧2 动态广告位 --> <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_2"></div> </div> <!-- 文章页-右侧3 动态广告位 --> <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad"> <div class="youdao-fixed-ad" id="detail_ad_3"></div> </div> </div> </div> </div> </div> </div> <div class="container"> <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(javadoc - Java API 文档生成器)</h4> <div id="paradigm-article-related"> <div class="recommend-post mb30"> <ul class="widget-links"> <li><a href="/article/1950232820773351424.htm" title="移动端城市区县二级联动选择功能实现包" target="_blank">移动端城市区县二级联动选择功能实现包</a> <span class="text-muted">good2know</span> <div>本文还有配套的精品资源,点击获取简介:本项目是一套为移动端设计的jQuery实现方案,用于简化用户在选择城市和区县时的流程。它包括所有必需文件:HTML、JavaScript、CSS及图片资源。通过动态更新下拉菜单选项,实现城市到区县的联动效果,支持数据异步加载。开发者可以轻松集成此功能到移动网站或应用,并可基于需求进行扩展和优化。1.jQuery移动端解决方案概述jQuery技术简介jQuery</div> </li> <li><a href="/article/1950232781174927360.htm" title="15个小技巧,让我的Windows电脑更好用了!" target="_blank">15个小技巧,让我的Windows电脑更好用了!</a> <span class="text-muted">曹元_</span> <div>01.桌面及文档处理第一部分的技巧,主要是围绕桌面的一些基本操作,包括主题设置、常用文档文件快捷打开的多种方式等等。主题换色默认情况下,我们的Win界面可能就是白色的文档界面,天蓝色的图表背景,说不出哪里不好看,但是就是觉得不够高级。imageimage说到高级感,本能第一反应就会和暗色模式联想起来,如果我们将整个界面换成黑夜模式的话,它会是这样的。imageimage更改主题颜色及暗色模式,我们</div> </li> <li><a href="/article/1950228031117258752.htm" title="深入解析JVM工作原理:从字节码到机器指令的全过程" target="_blank">深入解析JVM工作原理:从字节码到机器指令的全过程</a> <span class="text-muted"></span> <div>一、JVM概述Java虚拟机(JVM)是Java平台的核心组件,它实现了Java"一次编写,到处运行"的理念。JVM是一个抽象的计算机器,它有自己的指令集和运行时内存管理机制。JVM的主要职责:加载:读取.class文件并验证其正确性存储:管理内存分配和垃圾回收执行:解释或编译字节码为机器指令安全:提供沙箱环境限制恶意代码二、JVM架构详解JVM由三个主要子系统组成:1.类加载子系统类加载过程分为</div> </li> <li><a href="/article/1950227023859347456.htm" title="Linux系统配置(应用程序)" target="_blank">Linux系统配置(应用程序)</a> <span class="text-muted">1风天云月</span> <a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F/1.htm">应用程序</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%AF%91%E5%AE%89%E8%A3%85/1.htm">编译安装</a><a class="tag" taget="_blank" href="/search/rpm/1.htm">rpm</a><a class="tag" taget="_blank" href="/search/http/1.htm">http</a> <div>目录前言一、应用程序概述1、命令与程序的关系2、程序的组成3、软件包封装类型二、RPM1、RPM概述2、RPM用法三、编译安装1、解包2、配置3、编译4、安装5、启用httpd服务结语前言在Linux中的应用程序被视为将软件包安装到系统中后产生的各种文档,其中包括可执行文件、配置文件、用户手册等内容,这些文档被组织为一个有机的整体,为用户提供特定的功能,因此对于“安装软件包”与“安装应用程序”这两</div> </li> <li><a href="/article/1950226517397139456.htm" title="JVM 内存模型深度解析:原子性、可见性与有序性的实现" target="_blank">JVM 内存模型深度解析:原子性、可见性与有序性的实现</a> <span class="text-muted">练习时长两年半的程序员小胡</span> <a class="tag" taget="_blank" href="/search/JVM/1.htm">JVM</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%89%96%E6%9E%90%EF%BC%9A%E4%BB%8E%E9%9D%A2%E8%AF%95%E8%80%83%E7%82%B9%E5%88%B0%E7%94%9F%E4%BA%A7%E5%AE%9E%E8%B7%B5/1.htm">深度剖析:从面试考点到生产实践</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8B/1.htm">内存模型</a> <div>在了解了JVM的基础架构和类加载机制后,我们需要进一步探索Java程序在多线程环境下的内存交互规则。JVM内存模型(JavaMemoryModel,JMM)定义了线程和主内存之间的抽象关系,它通过规范共享变量的访问方式,解决了多线程并发时的数据一致性问题。本文将从内存模型的核心目标出发,详解原子性、可见性、有序性的实现机制,以及volatile、synchronized等关键字在其中的作用。一、J</div> </li> <li><a href="/article/1950226390070652928.htm" title="Flowable 高级扩展:自定义元素与性能优化实战" target="_blank">Flowable 高级扩展:自定义元素与性能优化实战</a> <span class="text-muted">练习时长两年半的程序员小胡</span> <a class="tag" taget="_blank" href="/search/Flowable/1.htm">Flowable</a><a class="tag" taget="_blank" href="/search/%E6%B5%81%E7%A8%8B%E5%BC%95%E6%93%8E%E5%AE%9E%E6%88%98%E6%8C%87%E5%8D%97/1.htm">流程引擎实战指南</a><a class="tag" taget="_blank" href="/search/%E6%B5%81%E7%A8%8B%E5%9B%BE/1.htm">流程图</a><a class="tag" taget="_blank" href="/search/flowable/1.htm">flowable</a><a class="tag" taget="_blank" href="/search/BPMN/1.htm">BPMN</a><a class="tag" taget="_blank" href="/search/%E6%B5%81%E7%A8%8B%E5%BC%95%E6%93%8E/1.htm">流程引擎</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>在前五篇文章中,我们从基础概念、流程设计、API实战、SpringBoot集成,到外部系统协同,逐步构建了Flowable的应用体系。但企业级复杂场景中,原生功能往往难以满足定制化需求——比如需要特殊的审批规则网关、与决策引擎联动实现动态路由,或是在高并发场景下优化流程引擎性能。本文将聚焦Flowable的高级扩展能力,详解如何自定义流程元素、集成规则引擎,并掌握大型系统中的性能调优策略。一、自定</div> </li> <li><a href="/article/1950225785054883840.htm" title="Java | 多线程经典问题 - 售票" target="_blank">Java | 多线程经典问题 - 售票</a> <span class="text-muted">Ada54</span> <div>一、售票需求1)同一个票池2)多个窗口卖票,不能出售同一张票二、售票问题代码实现(线程与进程小总结,请戳:Java|线程和进程,创建线程)step1:定义SaleWindow类实现Runnable接口,覆盖run方法step2:实例化SaleWindow对象,创建Thread对象,将SaleWindow作为参数传给Thread类的构造函数,然后通过Thread.start()方法启动线程step3</div> </li> <li><a href="/article/1950225381961297920.htm" title="SpringMVC的执行流程" target="_blank">SpringMVC的执行流程</a> <span class="text-muted"></span> <div>1、什么是MVCMVC是一种设计模式。MVC的原理图如下所示M-Model模型(完成业务逻辑:有javaBean构成,service+dao+entity)V-View视图(做界面的展示jsp,html……)C-Controller控制器(接收请求—>调用模型—>根据结果派发页面2、SpringMVC是什么SpringMVC是一个MVC的开源框架,SpringMVC=Struts2+Spring,</div> </li> <li><a href="/article/1950224616647618560.htm" title="JAVA接口机结构解析" target="_blank">JAVA接口机结构解析</a> <span class="text-muted">秃狼</span> <a class="tag" taget="_blank" href="/search/SpringBoot/1.htm">SpringBoot</a><a class="tag" taget="_blank" href="/search/%E5%85%AB%E8%82%A1%E6%96%87/1.htm">八股文</a><a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a> <div>什么是接口机在Java项目中,接口机通常指用于与外部系统进行数据交互的中间层,负责处理请求和响应的转换、协议适配、数据格式转换等任务。接口机的结构我们的接口机的结构分为两个大部分,外部接口机和内部接口机,在业务的调度上也是通过mq来实现的,只要的目的就是为了解耦合和做差异化。在接口机中主要的方法就是定时任务,消息的发送和消费,其他平台调用接口机只能提供外部接口机的方法进行调用,外部接口机可以提供消</div> </li> <li><a href="/article/1950223497875746816.htm" title="最新阿里四面面试真题46道:面试技巧+核心问题+面试心得" target="_blank">最新阿里四面面试真题46道:面试技巧+核心问题+面试心得</a> <span class="text-muted">风平浪静如码</span> <div>前言做技术的有一种资历,叫做通过了阿里的面试。这些阿里Java相关问题,都是之前通过不断优秀人才的铺垫总结的,先自己弄懂了再去阿里面试,不然就是去丢脸,被虐。希望对大家帮助,祝面试成功,有个更好的职业规划。一,阿里常见技术面1、微信红包怎么实现。2、海量数据分析。3、测试职位问的线程安全和非线程安全。4、HTTP2.0、thrift。5、面试电话沟通可能先让自我介绍。6、分布式事务一致性。7、ni</div> </li> <li><a href="/article/1950223483048882176.htm" title="【ARM】FPU,VFP,ASE,NEON,SVE...是什么意思?" target="_blank">【ARM】FPU,VFP,ASE,NEON,SVE...是什么意思?</a> <span class="text-muted">亿道电子Emdoor</span> <a class="tag" taget="_blank" href="/search/ARM/1.htm">ARM</a><a class="tag" taget="_blank" href="/search/arm%E5%BC%80%E5%8F%91/1.htm">arm开发</a><a class="tag" taget="_blank" href="/search/ARM/1.htm">ARM</a> <div>1、文档目标对执行浮点和SIMD操作的逻辑的各种名称的缩写词进行简要解释。2、问题场景Arm处理器内核中有用于执行浮点和SIMD操作的逻辑,有各种名称。它们通常是一系列的缩写形式,因此本文旨在对每一个缩写词进行简要解释。3、软硬件环境1、软件版本:不涉及2、电脑环境:不涉及4、相关缩写FPU(Floating-PointUnit)浮点单元浮点单元是处理器核心中的一个模块,用于使用浮点数执行算术运算</div> </li> <li><a href="/article/1950222345163567104.htm" title="深入理解汇编语言子程序设计与系统调用" target="_blank">深入理解汇编语言子程序设计与系统调用</a> <span class="text-muted">网安spinage</span> <a class="tag" taget="_blank" href="/search/%E6%B1%87%E7%BC%96%E8%AF%AD%E8%A8%80/1.htm">汇编语言</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E6%B1%87%E7%BC%96/1.htm">汇编</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a> <div>本文将全面解析汇编语言中子程序设计的核心技术以及系统调用的实现方法,涵盖参数传递的多种方式、堆栈管理、API调用等关键知识点,并提供实际案例演示。一、子程序设计:参数传递的艺术1.寄存器传参:高效简洁.386.modelflat,stdcalloptioncasemap:none.dataxdd5;定义变量ydd6sumdd?.code;函数定义:addxy1addxy1procpushebpmo</div> </li> <li><a href="/article/1950218946015719424.htm" title="图论算法经典题目解析:DFS、BFS与拓扑排序实战" target="_blank">图论算法经典题目解析:DFS、BFS与拓扑排序实战</a> <span class="text-muted">周童學</span> <a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95/1.htm">数据结构与算法</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E4%BC%98%E5%85%88/1.htm">深度优先</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E8%AE%BA/1.htm">图论</a> <div>图论算法经典题目解析:DFS、BFS与拓扑排序实战图论问题是算法面试中的高频考点,本博客将通过四道LeetCode经典题目(均来自"Top100Liked"题库),深入讲解图论的核心算法思想和实现技巧。涵盖DFS、BFS、拓扑排序和前缀树等知识点,每道题配有Java实现和易错点分析。1.岛屿数量(DFS遍历)问题描述给定一个由'1'(陆地)和'0'(水)组成的二维网格,计算岛屿的数量。岛屿由水平或</div> </li> <li><a href="/article/1950218818781507584.htm" title="【异常】使用 LiteFlow 框架时,提示错误ChainDuplicateException: [chain name duplicate] chainName=categoryChallenge" target="_blank">【异常】使用 LiteFlow 框架时,提示错误ChainDuplicateException: [chain name duplicate] chainName=categoryChallenge</a> <span class="text-muted">本本本添哥</span> <a class="tag" taget="_blank" href="/search/002/1.htm">002</a><a class="tag" taget="_blank" href="/search/-/1.htm">-</a><a class="tag" taget="_blank" href="/search/%E8%BF%9B%E9%98%B6%E5%BC%80%E5%8F%91%E8%83%BD%E5%8A%9B/1.htm">进阶开发能力</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>一、报错内容Causedby:com.yomahub.liteflow.exception.ChainDuplicateException:[chainnameduplicate]chainName=categoryChallengeatcom.yomahub.liteflow.parser.helper.ParserHelper.lambda$null$0(ParserHelper.java:1</div> </li> <li><a href="/article/1950218314064130048.htm" title="Java并发核心:线程池使用技巧与最佳实践! | 多线程篇(五)" target="_blank">Java并发核心:线程池使用技巧与最佳实践! | 多线程篇(五)</a> <span class="text-muted">bug菌¹</span> <a class="tag" taget="_blank" href="/search/Java%E5%AE%9E%E6%88%98%28%E8%BF%9B%E9%98%B6%E7%89%88%29/1.htm">Java实战(进阶版)</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Java%E9%9B%B6%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8/1.htm">Java零基础入门</a><a class="tag" taget="_blank" href="/search/Java%E5%B9%B6%E5%8F%91/1.htm">Java并发</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B%E6%B1%A0/1.htm">线程池</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B%E7%AF%87/1.htm">多线程篇</a> <div>本文收录于「Java进阶实战」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!环境说明:Windows10+IntelliJIDEA2021.3.2+Jdk1.8本文目录前言摘要正文何为线程池?为什么需要线程池?线程池的好处线程池使用场景如何创建线程池?线程池的常见配置源码解析案例分享案例代码演示案例运行</div> </li> <li><a href="/article/1950217936077647872.htm" title="Java 队列" target="_blank">Java 队列</a> <span class="text-muted">tryxr</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E9%98%9F%E5%88%97/1.htm">队列</a> <div>队列一般用什么哪种结构实现队列的特性数据入队列时一定是从尾部插入吗数据出队列时一定是从头部删除吗队列的基本运算有什么队列支持随机访问吗队列的英文表示什么是队列队列从哪进、从哪出队列的进出顺序队列是用哪种结构实现的Queue和Deque有什么区别Queue接口的方法Queue中的add与offer的区别offer、poll、peek的模拟实现如何利用链表实现队列如何利用顺序表实现队列什么叫做双端队列</div> </li> <li><a href="/article/1950216170401492992.htm" title="常规笔记本和加固笔记本的区别" target="_blank">常规笔记本和加固笔记本的区别</a> <span class="text-muted">luchengtech</span> <a class="tag" taget="_blank" href="/search/%E7%94%B5%E8%84%91/1.htm">电脑</a><a class="tag" taget="_blank" href="/search/%E4%B8%89%E9%98%B2%E7%AC%94%E8%AE%B0%E6%9C%AC/1.htm">三防笔记本</a><a class="tag" taget="_blank" href="/search/%E5%8A%A0%E5%9B%BA%E8%AE%A1%E7%AE%97%E6%9C%BA/1.htm">加固计算机</a><a class="tag" taget="_blank" href="/search/%E5%8A%A0%E5%9B%BA%E7%AC%94%E8%AE%B0%E6%9C%AC/1.htm">加固笔记本</a> <div>在现代科技产品中,笔记本电脑因其便携性和功能性被广泛应用。根据使用场景和需求的不同,笔记本可分为常规笔记本和加固笔记本,二者在多个方面存在显著区别。适用场景是区分二者的重要标志。常规笔记本主要面向普通消费者和办公人群,适用于家庭娱乐、日常办公、学生学习等相对稳定的室内环境。比如,人们在家用它追剧、处理文档,学生在教室用它完成作业。而加固笔记本则专为特殊行业设计,像军事、野外勘探、工业制造、交通运输</div> </li> <li><a href="/article/1950215540215705600.htm" title="JVM 内存分配与回收策略:从对象创建到内存释放的全流程" target="_blank">JVM 内存分配与回收策略:从对象创建到内存释放的全流程</a> <span class="text-muted"></span> <div>在JVM的运行机制中,内存分配与回收策略是连接对象生命周期与垃圾收集器的桥梁。它决定了对象在堆内存中的创建位置、存活过程中的区域迁移,以及最终被回收的时机。合理的内存分配策略能减少GC频率、降低停顿时间,是优化Java应用性能的核心环节。本文将系统解析JVM的内存分配规则、对象晋升机制,以及实战中的内存优化技巧。一、对象优先在Eden区分配:新生代的“临时缓冲区”大多数情况下,Java对象在新生代</div> </li> <li><a href="/article/1950214657335685120.htm" title="代码随想录算法训练营第三十五天" target="_blank">代码随想录算法训练营第三十五天</a> <span class="text-muted"></span> <div>01背包问题二维题目链接01背包问题二维题解importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);intM=sc.nextInt();intN=sc.nextInt();int[]space=newint[M];int[]value=new</div> </li> <li><a href="/article/1950208107430866944.htm" title="python笔记14介绍几个魔法方法" target="_blank">python笔记14介绍几个魔法方法</a> <span class="text-muted">抢公主的大魔王</span> <a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>python笔记14介绍几个魔法方法先声明一下各位大佬,这是我的笔记。如有错误,恳请指正。另外,感谢您的观看,谢谢啦!(1).__doc__输出对应的函数,类的说明文档print(print.__doc__)print(value,...,sep='',end='\n',file=sys.stdout,flush=False)Printsthevaluestoastream,ortosys.std</div> </li> <li><a href="/article/1950207097413103616.htm" title="微信公众号回调java_处理微信公众号消息回调" target="_blank">微信公众号回调java_处理微信公众号消息回调</a> <span class="text-muted">weixin_39607620</span> <a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7%E5%9B%9E%E8%B0%83java/1.htm">微信公众号回调java</a> <div>1、背景在上一节中,咱们知道如何接入微信公众号,可是以后公众号会与咱们进行交互,那么微信公众号如何通知到咱们本身的服务器呢?咱们知道咱们接入的时候提供的url是GET/mp/entry,那么公众号以后产生的事件将会以POST/mp/entry发送到咱们本身的服务器上。html2、代码实现,此处仍是使用weixin-java-mp这个框架实现一、引入weixin-java-mpcom.github.</div> </li> <li><a href="/article/1950204701714739200.htm" title="环境搭建 | Python + Anaconda / Miniconda + PyCharm 的安装、配置与使用" target="_blank">环境搭建 | Python + Anaconda / Miniconda + PyCharm 的安装、配置与使用</a> <span class="text-muted"></span> <div>本文将分别介绍Python、Anaconda/Miniconda、PyCharm的安装、配置与使用,详细介绍Python环境搭建的全过程,涵盖Python、Pip、PythonLauncher、Anaconda、Miniconda、Pycharm等内容,以官方文档为参照,使用经验为补充,内容全面而详实。由于图片太多,就先贴一个无图简化版吧,详情请查看Python+Anaconda/Minicond</div> </li> <li><a href="/article/1950200667587014656.htm" title="学C++的五大惊人好处" target="_blank">学C++的五大惊人好处</a> <span class="text-muted"></span> <div>为什么要学c++学c++有什么用学习c++的好处有1.中考可以加分2.高考可能直接录取3.就业广且工资高4.在未来30--50年c++一定是一个很受欢迎的职业5.c++成功的例子deepsick等AI智能C++语言兼备编程效率和编译运行效率的语言C++语言是C语言功能增强版,在c语言的基础上添加了面向对象编程和泛型编程的支持既继承了C语言高效,简洁,快速和可移植的传统,又具备类似Java、Go等其</div> </li> <li><a href="/article/1950200541233606656.htm" title="Android 基础知识:Android 应用权限详解" target="_blank">Android 基础知识:Android 应用权限详解</a> <span class="text-muted">流水mpc</span> <a class="tag" taget="_blank" href="/search/android/1.htm">android</a> <div>这篇文章为大家系统的梳理一下Android权限相关的知识,在日常开发中,我们都用过权限,但是对于权限的一些细节我们可能掌握的还不够全面,这篇文章会全面的为大家介绍权限相关的知识。当然,本篇文章依然是参考了Google的官方文档:应用权限。本文目录一、认识Android权限(一)Android系统为什么需要权限?Android系统设置权限的目的是保护Android用户的隐私。对于用户的敏感数据And</div> </li> <li><a href="/article/1950199532725792768.htm" title="Android GreenDao介绍和Generator生成表对象代码" target="_blank">Android GreenDao介绍和Generator生成表对象代码</a> <span class="text-muted"></span> <div>目录(?)[-]介绍创建工程转载请注明:http://blog.csdn.net/sinat_30276961/article/details/50052109最近无意中发现了GreenDao,然后查看了一些资料后,发现这个数据库框架很适合用,于是乎,查看了官网的api,并自己写了一个小应用总结一下它的使用方法。介绍按照国际惯例,在开篇,总要先介绍一下什么是GreenDao吧。首先需要说明的是Gr</div> </li> <li><a href="/article/1950199406426910720.htm" title="百度地图 雷达/地理编码 功能使用" target="_blank">百度地图 雷达/地理编码 功能使用</a> <span class="text-muted">安卓开发者</span> <div>目录(?)[-]地图雷达基本使用首先你需要在你的API控制台注册你的雷达初始化并注入你的信息开始上传单次上传定时重复上传取回信息打完收工元古巨坑地理编码最近一直在优化软件的bug..然后后面可能又要大改..所以趁这两天有时间赶紧码两篇博文..=.=地图功能可以说是现在APP中最常用的功能…呃..之一..不管是电商,社交,o2o,b2c,p2p,锟斤拷,烫烫烫都需要用地图来辅助..博客里基本的地图实</div> </li> <li><a href="/article/1950199278483861504.htm" title="Android 媒体播放开发完全指南" target="_blank">Android 媒体播放开发完全指南</a> <span class="text-muted">安卓开发者</span> <a class="tag" taget="_blank" href="/search/Android/1.htm">Android</a><a class="tag" taget="_blank" href="/search/Jetpack/1.htm">Jetpack</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/%E5%AA%92%E4%BD%93/1.htm">媒体</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a> <div>引言在当今移动应用生态中,媒体播放功能已成为许多应用的核心组成部分。无论是音乐流媒体应用、视频平台、播客客户端还是游戏应用,都需要强大的媒体播放能力。Android平台提供了丰富的API来支持各种媒体播放场景。本文将全面介绍Android媒体播放的开发技术,从基础到高级功能实现。一、Android媒体播放基础1.1支持的媒体格式Android原生支持多种媒体格式:音频:MP3、AAC、FLAC、W</div> </li> <li><a href="/article/1950198522972270592.htm" title="Java8 Stream流的sorted()的排序【正序、倒序、多字段排序】" target="_blank">Java8 Stream流的sorted()的排序【正序、倒序、多字段排序】</a> <span class="text-muted">Tony666688888</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a> <div>针对集合排序,java8可以用Stream流的sorted()进行排序。示例Bean以下我们会使用这个Bean来做示例。publicclassOrder{privateStringweight;privateDoubleprice;privateStringdateStr;//忽略getter、setter、构造方法、toString}字段排序首先是比较器Comparator,形式如下:Compa</div> </li> <li><a href="/article/1950198270882017280.htm" title="《UNIX网络编程卷1:套接字联网API》第8章:基本UDP套接字编程深度解析" target="_blank">《UNIX网络编程卷1:套接字联网API》第8章:基本UDP套接字编程深度解析</a> <span class="text-muted"></span> <div>《UNIX网络编程卷1:套接字联网API》第8章:基本UDP套接字编程深度解析(8000字图文实战)一、UDP协议核心特性与编程模型1.1UDP协议设计哲学UDP(UserDatagramProtocol)是面向无连接的传输层协议(图1),其核心特征包括:无连接通信:无需三次握手,直接发送数据报尽最大努力交付:不保证可靠性、不维护连接状态报文边界保留:接收方读取的数据与发送方写入完全一致低开销高效</div> </li> <li><a href="/article/1950194868756213760.htm" title="程序员必备:10 个提升代码质量的工具" target="_blank">程序员必备:10 个提升代码质量的工具</a> <span class="text-muted">大力出奇迹985</span> <a class="tag" taget="_blank" href="/search/%E5%AE%A0%E7%89%A9/1.htm">宠物</a> <div>在软件开发过程中,代码质量对项目的成功起着决定性作用。高质量的代码不仅易于维护和扩展,还能有效降低成本并提升可靠性。本文精心挑选了10个程序员必备工具,助力提升代码质量。这些工具涵盖代码格式化、静态分析、代码审查、测试、性能优化、安全扫描、版本控制、依赖管理、代码生成以及文档生成等多个关键领域。通过使用它们,开发者能够高效地发现并解决代码中的潜在问题,遵循最佳实践,提升代码的可读性、可维护性与安全</div> </li> <li><a href="/article/23.htm" title="HttpClient 4.3与4.3版本以下版本比较" target="_blank">HttpClient 4.3与4.3版本以下版本比较</a> <span class="text-muted">spjich</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/httpclient/1.htm">httpclient</a> <div>网上利用java发送http请求的代码很多,一搜一大把,有的利用的是java.net.*下的HttpURLConnection,有的用httpclient,而且发送的代码也分门别类。今天我们主要来说的是利用httpclient发送请求。 httpclient又可分为 httpclient3.x httpclient4.x到httpclient4.3以下 httpclient4.3</div> </li> <li><a href="/article/150.htm" title="Essential Studio Enterprise Edition 2015 v1新功能体验" target="_blank">Essential Studio Enterprise Edition 2015 v1新功能体验</a> <span class="text-muted">Axiba</span> <a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a> <div>概述:Essential Studio已全线升级至2015 v1版本了!新版本为JavaScript和ASP.NET MVC添加了新的文件资源管理器控件,还有其他一些控件功能升级,精彩不容错过,让我们一起来看看吧! syncfusion公司是世界领先的Windows开发组件提供商,该公司正式对外发布Essential Studio Enterprise Edition 2015 v1版本。新版本</div> </li> <li><a href="/article/277.htm" title="[宇宙与天文]微波背景辐射值与地球温度" target="_blank">[宇宙与天文]微波背景辐射值与地球温度</a> <span class="text-muted">comsci</span> <a class="tag" taget="_blank" href="/search/%E8%83%8C%E6%99%AF/1.htm">背景</a> <div>         宇宙这个庞大,无边无际的空间是否存在某种确定的,变化的温度呢?      如果宇宙微波背景辐射值是表示宇宙空间温度的参数之一,那么测量这些数值,并观测周围的恒星能量输出值,我们是否获得地球的长期气候变化的情况呢?   &nbs</div> </li> <li><a href="/article/404.htm" title="lvs-server" target="_blank">lvs-server</a> <span class="text-muted">男人50</span> <a class="tag" taget="_blank" href="/search/server/1.htm">server</a> <div>#!/bin/bash # # LVS script for VS/DR # #./etc/rc.d/init.d/functions # VIP=10.10.6.252 RIP1=10.10.6.101 RIP2=10.10.6.13 PORT=80 case $1 in start)   /sbin/ifconfig eth2:0 $VIP broadca</div> </li> <li><a href="/article/531.htm" title="java的WebCollector爬虫框架" target="_blank">java的WebCollector爬虫框架</a> <span class="text-muted">oloz</span> <a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a> <div>WebCollector主页: https://github.com/CrawlScript/WebCollector 下载:webcollector-版本号-bin.zip将解压后文件夹中的所有jar包添加到工程既可。 接下来看demo package org.spider.myspider; import cn.edu.hfut.dmic.webcollector.cra</div> </li> <li><a href="/article/658.htm" title="jQuery append 与 after 的区别" target="_blank">jQuery append 与 after 的区别</a> <span class="text-muted">小猪猪08</span> <div>1、after函数 定义和用法: after() 方法在被选元素后插入指定的内容。 语法: $(selector).after(content) 实例: <html> <head> <script type="text/javascript" src="/jquery/jquery.js"></scr</div> </li> <li><a href="/article/785.htm" title="mysql知识充电" target="_blank">mysql知识充电</a> <span class="text-muted">香水浓</span> <a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a> <div>索引 索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型。 根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。 大多数存储引擎有更高的限制。MYSQL中索引的存储类型有两种:BTREE和HASH,具体和表的存储引擎相关; MYISAM和InnoDB存储引擎</div> </li> <li><a href="/article/912.htm" title="我的架构经验系列文章索引" target="_blank">我的架构经验系列文章索引</a> <span class="text-muted">agevs</span> <a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a> <div>下面是一些个人架构上的总结,本来想只在公司内部进行共享的,因此内容写的口语化一点,也没什么图示,所有内容没有查任何资料是脑子里面的东西吐出来的因此可能会不准确不全,希望抛砖引玉,大家互相讨论。 要注意,我这些文章是一个总体的架构经验不针对具体的语言和平台,因此也不一定是适用所有的语言和平台的。 (内容是前几天写的,现附上索引)   前端架构 http://www.</div> </li> <li><a href="/article/1039.htm" title="Android so lib库远程http下载和动态注册" target="_blank">Android so lib库远程http下载和动态注册</a> <span class="text-muted">aijuans</span> <a class="tag" taget="_blank" href="/search/andorid/1.htm">andorid</a> <div>一、背景      在开发Android应用程序的实现,有时候需要引入第三方so lib库,但第三方so库比较大,例如开源第三方播放组件ffmpeg库, 如果直接打包的apk包里面, 整个应用程序会大很多.经过查阅资料和实验,发现通过远程下载so文件,然后再动态注册so文件时可行的。主要需要解决下载so文件存放位置以及文件读写权限问题。   二、主要</div> </li> <li><a href="/article/1166.htm" title="linux中svn配置出错 conf/svnserve.conf:12: Option expected 解决方法" target="_blank">linux中svn配置出错 conf/svnserve.conf:12: Option expected 解决方法</a> <span class="text-muted">baalwolf</span> <a class="tag" taget="_blank" href="/search/option/1.htm">option</a> <div>在客户端访问subversion版本库时出现这个错误: svnserve.conf:12: Option expected 为什么会出现这个错误呢,就是因为subversion读取配置文件svnserve.conf时,无法识别有前置空格的配置文件,如### This file controls the configuration of the svnserve daemon, if you##</div> </li> <li><a href="/article/1293.htm" title="MongoDB的连接池和连接管理" target="_blank">MongoDB的连接池和连接管理</a> <span class="text-muted">BigCat2013</span> <a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a> <div>在关系型数据库中,我们总是需要关闭使用的数据库连接,不然大量的创建连接会导致资源的浪费甚至于数据库宕机。这篇文章主要想解释一下mongoDB的连接池以及连接管理机制,如果正对此有疑惑的朋友可以看一下。 通常我们习惯于new 一个connection并且通常在finally语句中调用connection的close()方法将其关闭。正巧,mongoDB中当我们new一个Mongo的时候,会发现它也</div> </li> <li><a href="/article/1420.htm" title="AngularJS使用Socket.IO" target="_blank">AngularJS使用Socket.IO</a> <span class="text-muted">bijian1013</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/Socket.IO/1.htm">Socket.IO</a> <div>        目前,web应用普遍被要求是实时web应用,即服务端的数据更新之后,应用能立即更新。以前使用的技术(例如polling)存在一些局限性,而且有时我们需要在客户端打开一个socket,然后进行通信。         Socket.IO(http://socket.io/)是一个非常优秀的库,它可以帮你实</div> </li> <li><a href="/article/1547.htm" title="[Maven学习笔记四]Maven依赖特性" target="_blank">[Maven学习笔记四]Maven依赖特性</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a> <div>三个模块 为了说明问题,以用户登陆小web应用为例。通常一个web应用分为三个模块,模型和数据持久化层user-core, 业务逻辑层user-service以及web展现层user-web, user-service依赖于user-core user-web依赖于user-core和user-service   依赖作用范围  Maven的dependency定义</div> </li> <li><a href="/article/1674.htm" title="【Akka一】Akka入门" target="_blank">【Akka一】Akka入门</a> <span class="text-muted">bit1129</span> <a class="tag" taget="_blank" href="/search/akka/1.htm">akka</a> <div>什么是Akka Message-Driven Runtime is the Foundation to Reactive Applications In Akka, your business logic is driven through message-based communication patterns that are independent of physical locatio</div> </li> <li><a href="/article/1801.htm" title="zabbix_api之perl语言写法" target="_blank">zabbix_api之perl语言写法</a> <span class="text-muted">ronin47</span> <a class="tag" taget="_blank" href="/search/zabbix_api%E4%B9%8Bperl/1.htm">zabbix_api之perl</a> <div>zabbix_api网上比较多的写法是python或curl。上次我用java--http://bossr.iteye.com/blog/2195679,这次用perl。for example: #!/usr/bin/perl use 5.010 ; use strict ; use warnings ; use JSON :: RPC :: Client ; use </div> </li> <li><a href="/article/1928.htm" title="比优衣库跟牛掰的视频流出了,兄弟连Linux运维工程师课堂实录,更加刺激,更加实在!" target="_blank">比优衣库跟牛掰的视频流出了,兄弟连Linux运维工程师课堂实录,更加刺激,更加实在!</a> <span class="text-muted">brotherlamp</span> <a class="tag" taget="_blank" href="/search/linux%E8%BF%90%E7%BB%B4%E5%B7%A5%E7%A8%8B%E5%B8%88/1.htm">linux运维工程师</a><a class="tag" taget="_blank" href="/search/linux%E8%BF%90%E7%BB%B4%E5%B7%A5%E7%A8%8B%E5%B8%88%E6%95%99%E7%A8%8B/1.htm">linux运维工程师教程</a><a class="tag" taget="_blank" href="/search/linux%E8%BF%90%E7%BB%B4%E5%B7%A5%E7%A8%8B%E5%B8%88%E8%A7%86%E9%A2%91/1.htm">linux运维工程师视频</a><a class="tag" taget="_blank" href="/search/linux%E8%BF%90%E7%BB%B4%E5%B7%A5%E7%A8%8B%E5%B8%88%E8%B5%84%E6%96%99/1.htm">linux运维工程师资料</a><a class="tag" taget="_blank" href="/search/linux%E8%BF%90%E7%BB%B4%E5%B7%A5%E7%A8%8B%E5%B8%88%E8%87%AA%E5%AD%A6/1.htm">linux运维工程师自学</a> <div>比优衣库跟牛掰的视频流出了,兄弟连Linux运维工程师课堂实录,更加刺激,更加实在!   ----------------------------------------------------- 兄弟连Linux运维工程师课堂实录-计算机基础-1-课程体系介绍1 链接:http://pan.baidu.com/s/1i3GQtGL 密码:bl65   兄弟连Lin</div> </li> <li><a href="/article/2055.htm" title="bitmap求哈密顿距离-给定N(1<=N<=100000)个五维的点A(x1,x2,x3,x4,x5),求两个点X(x1,x2,x3,x4,x5)和Y(" target="_blank">bitmap求哈密顿距离-给定N(1<=N<=100000)个五维的点A(x1,x2,x3,x4,x5),求两个点X(x1,x2,x3,x4,x5)和Y(</a> <span class="text-muted">bylijinnan</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div> import java.util.Random; /** * 题目: * 给定N(1<=N<=100000)个五维的点A(x1,x2,x3,x4,x5),求两个点X(x1,x2,x3,x4,x5)和Y(y1,y2,y3,y4,y5), * 使得他们的哈密顿距离(d=|x1-y1| + |x2-y2| + |x3-y3| + |x4-y4| + |x5-y5|)最大</div> </li> <li><a href="/article/2182.htm" title="map的三种遍历方法" target="_blank">map的三种遍历方法</a> <span class="text-muted">chicony</span> <a class="tag" taget="_blank" href="/search/map/1.htm">map</a> <div> package com.test; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class TestMap { public static v</div> </li> <li><a href="/article/2309.htm" title="Linux安装mysql的一些坑" target="_blank">Linux安装mysql的一些坑</a> <span class="text-muted">chenchao051</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div>1、mysql不建议在root用户下运行   2、出现服务启动不了,111错误,注意要用chown来赋予权限, 我在root用户下装的mysql,我就把usr/share/mysql/mysql.server复制到/etc/init.d/mysqld, (同时把my-huge.cnf复制/etc/my.cnf)  chown -R cc /etc/init.d/mysql</div> </li> <li><a href="/article/2436.htm" title="Sublime Text 3 配置" target="_blank">Sublime Text 3 配置</a> <span class="text-muted">daizj</span> <a class="tag" taget="_blank" href="/search/%E9%85%8D%E7%BD%AE/1.htm">配置</a><a class="tag" taget="_blank" href="/search/Sublime+Text/1.htm">Sublime Text</a> <div>Sublime Text 3 配置解释(默认){// 设置主题文件“color_scheme”: “Packages/Color Scheme – Default/Monokai.tmTheme”,// 设置字体和大小“font_face”: “Consolas”,“font_size”: 12,// 字体选项:no_bold不显示粗体字,no_italic不显示斜体字,no_antialias和</div> </li> <li><a href="/article/2563.htm" title="MySQL server has gone away 问题的解决方法" target="_blank">MySQL server has gone away 问题的解决方法</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/SQL+Server/1.htm">SQL Server</a> <div>MySQL server has gone away 问题解决方法,需要的朋友可以参考下。 应用程序(比如PHP)长时间的执行批量的MYSQL语句。执行一个SQL,但SQL语句过大或者语句中含有BLOB或者longblob字段。比如,图片数据的处理。都容易引起MySQL server has gone away。 今天遇到类似的情景,MySQL只是冷冷的说:MySQL server h</div> </li> <li><a href="/article/2690.htm" title="javascript/dom:固定居中效果" target="_blank">javascript/dom:固定居中效果</a> <span class="text-muted">dcj3sjt126com</span> <a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a> <div><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&</div> </li> <li><a href="/article/2817.htm" title="使用 Spring 2.5 注释驱动的 IoC 功能" target="_blank">使用 Spring 2.5 注释驱动的 IoC 功能</a> <span class="text-muted">e200702084</span> <a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/%E9%85%8D%E7%BD%AE%E7%AE%A1%E7%90%86/1.htm">配置管理</a><a class="tag" taget="_blank" href="/search/IOC/1.htm">IOC</a><a class="tag" taget="_blank" href="/search/Office/1.htm">Office</a> <div>使用 Spring 2.5 注释驱动的 IoC 功能 developerWorks 文档选项 将打印机的版面设置成横向打印模式 打印本页 将此页作为电子邮件发送 将此页作为电子邮件发送 级别: 初级 陈 雄华 (quickselect@163.com), 技术总监, 宝宝淘网络科技有限公司 2008 年 2 月 28 日  &nb</div> </li> <li><a href="/article/2944.htm" title="MongoDB常用操作命令" target="_blank">MongoDB常用操作命令</a> <span class="text-muted">geeksun</span> <a class="tag" taget="_blank" href="/search/mongodb/1.htm">mongodb</a> <div>1.   基本操作 db.AddUser(username,password)               添加用户 db.auth(usrename,password)      设置数据库连接验证 db.cloneDataBase(fromhost)     </div> </li> <li><a href="/article/3071.htm" title="php写守护进程(Daemon)" target="_blank">php写守护进程(Daemon)</a> <span class="text-muted">hongtoushizi</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a> <div>转载自: http://blog.csdn.net/tengzhaorong/article/details/9764655   守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。守护进程是一种很有用的进程。php也可以实现守护进程的功能。   1、基本概念   &nbs</div> </li> <li><a href="/article/3198.htm" title="spring整合mybatis,关于注入Dao对象出错问题" target="_blank">spring整合mybatis,关于注入Dao对象出错问题</a> <span class="text-muted">jonsvien</span> <a class="tag" taget="_blank" href="/search/DAO/1.htm">DAO</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a><a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a><a class="tag" taget="_blank" href="/search/prototype/1.htm">prototype</a> <div>今天在公司测试功能时发现一问题: 先进行代码说明: 1,controller配置了Scope="prototype"(表明每一次请求都是原子型)    @resource/@autowired service对象都可以(两种注解都可以)。 2,service 配置了Scope="prototype"(表明每一次请求都是原子型) </div> </li> <li><a href="/article/3325.htm" title="对象关系行为模式之标识映射" target="_blank">对象关系行为模式之标识映射</a> <span class="text-muted">home198979</span> <a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E4%BC%81%E4%B8%9A%E5%BA%94%E7%94%A8/1.htm">企业应用</a><a class="tag" taget="_blank" href="/search/%E5%AF%B9%E8%B1%A1%E5%85%B3%E7%B3%BB/1.htm">对象关系</a><a class="tag" taget="_blank" href="/search/%E6%A0%87%E8%AF%86%E6%98%A0%E5%B0%84/1.htm">标识映射</a> <div>HELLO!架构   一、概念 identity Map:通过在映射中保存每个已经加载的对象,确保每个对象只加载一次,当要访问对象的时候,通过映射来查找它们。其实在数据源架构模式之数据映射器代码中有提及到标识映射,Mapper类的getFromMap方法就是实现标识映射的实现。     二、为什么要使用标识映射? 在数据源架构模式之数据映射器中 //c</div> </li> <li><a href="/article/3452.htm" title="Linux下hosts文件详解" target="_blank">Linux下hosts文件详解</a> <span class="text-muted">pda158</span> <a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a> <div> 1、主机名:   无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号。   公网:IP地址不方便记忆,所以又有了域名。域名只是在公网(INtERNET)中存在,每个域名都对应一个IP地址,但一个IP地址可有对应多个域名。   局域网:每台机器都有一个主机名,用于主机与主机之间的便于区分,就可以为每台机器设置主机</div> </li> <li><a href="/article/3579.htm" title="nginx配置文件粗解" target="_blank">nginx配置文件粗解</a> <span class="text-muted">spjich</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a> <div>#运行用户#user  nobody;#启动进程,通常设置成和cpu的数量相等worker_processes  2;#全局错误日志及PID文件#error_log  logs/error.log;#error_log  logs/error.log  notice;#error_log  logs/error.log  inf</div> </li> <li><a href="/article/3706.htm" title="数学函数" target="_blank">数学函数</a> <span class="text-muted">w54653520</span> <a class="tag" taget="_blank" href="/search/java/1.htm">java</a> <div>public  class  S {        // 传入两个整数,进行比较,返回两个数中的最大值的方法。      public  int  get( int  num1, int  nu</div> </li> </ul> </div> </div> </div> <div> <div class="container"> <div class="indexes"> <strong>按字母分类:</strong> <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a> </div> </div> </div> <footer id="footer" class="mb30 mt30"> <div class="container"> <div class="footBglm"> <a target="_blank" href="/">首页</a> - <a target="_blank" href="/custom/about.htm">关于我们</a> - <a target="_blank" href="/search/Java/1.htm">站内搜索</a> - <a target="_blank" href="/sitemap.txt">Sitemap</a> - <a target="_blank" href="/custom/delete.htm">侵权投诉</a> </div> <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved. <!-- <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>--> </div> </div> </footer> <!-- 代码高亮 --> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script> <script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script> <link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/> <script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script> </body> </html>