欢迎来到Heck's Blog,专业承接拿站、企业建站、仿站、网上商城架构、门户网站搭建、空间域名注册、软件定制等项目。关注网络安全,因为专注,所以专业,懂得放弃,才能收获。有事请发邮件至i@heckjj.com,请记住本站网址:http://www.heckjj.com,多谢。
9月21
分组 XML 技术
很多年前,当 XML 成为最热门的技术之一时,很难想象得到 XML 会在十年内变得如此重要,而且您可以找到大量与 XML 相关的有趣技术。实际上,可以通过多种途径了解 XML 技术。
传统的 XML 分组
可以将与 XML 相关的技术划分为一些基本的分组或主要区域:
1. 文档创作:此分组面向将主要的时间用于创作 XML 的人。无论他们是创建原始 XML 数据,还是用 XML 格式表示现有数据,这里主要关注的都是纯 XML,很少关注可能使用这些文档的编程任务。这就是 XML 的核心思想所在,这个分组还包括特定的 XML 词汇表(比如 MathML)或一些科学 XML 词汇表。
2. 处理 XML:这些技术(比如 XSL)允许对 XML 进行转换、修改或由一种格式迁移到另一种格式。这些技术主要关注的仍然是 XML 文档及其内部数据,但有时候也使用编程语言来完成这些转换。
3. 读取/编写 XML(以及持久化数据):这些技术与编程联系更加紧密,包括从低级的 API(比如 SAX 和 DOM)到数据处理技术(比如 JAXB 和 Castor)。这些技术将 XML 看作一种数据存储机制,而且在许多情形下看作一种达到目的的手段。
到目前为止,这些分组是主要的技术类别,每个分组中都在不断出现最新的技术和规范。
将 XML 转变为一类数据居民
XML 的一个主要问题就是缺乏良好的搜索支持,尽管这个问题仅限于上面的三个分组。如果想要对 XML 格式的数据进行搜索,则这会是一个问题。实际上,通常的解决方案是将上面的一些分组结合起来。文档创作者可能使用命令行工具(比如 grep,这是一种笨拙的搜索方式。编程人员可能读入 XML(另一个分组),然后使用他们的编程语言(比如 Java 或 C#)对非 XML 格式的数据进行搜索。这种方法是可行的,但暴露了 XML 的一些局限性。
幸运的是,XPath(和 XQuery,本文稍后将会谈到)的引入和流行带来了一个新分组:
4. 搜索 XML:XPath 和 XQuery 就属于这个分组。这些规范/技术允许以 XML 的方式对 XML 文档进行搜索。换句话说,可以使用 XML 语义进行搜索,并且不但能够搜索 XML 文档中的数据,还能够搜索这些文档的结构。
借助 XPath 和 XQuery,不再需要将数据由 XML 转换为一种编程语言,然后使用这种语言的工具来搜索数据。使用这种方法不仅会受到编程语言的约束,通常还会丢失大多数 XML 语义和结构(比如元素之间的父子关系等等)。使用 XPath 和 XQuery,无需编程语言 就可以对 XML 进行搜索。
很多年前,当 XML 成为最热门的技术之一时,很难想象得到 XML 会在十年内变得如此重要,而且您可以找到大量与 XML 相关的有趣技术。实际上,可以通过多种途径了解 XML 技术。
传统的 XML 分组
可以将与 XML 相关的技术划分为一些基本的分组或主要区域:
1. 文档创作:此分组面向将主要的时间用于创作 XML 的人。无论他们是创建原始 XML 数据,还是用 XML 格式表示现有数据,这里主要关注的都是纯 XML,很少关注可能使用这些文档的编程任务。这就是 XML 的核心思想所在,这个分组还包括特定的 XML 词汇表(比如 MathML)或一些科学 XML 词汇表。
2. 处理 XML:这些技术(比如 XSL)允许对 XML 进行转换、修改或由一种格式迁移到另一种格式。这些技术主要关注的仍然是 XML 文档及其内部数据,但有时候也使用编程语言来完成这些转换。
3. 读取/编写 XML(以及持久化数据):这些技术与编程联系更加紧密,包括从低级的 API(比如 SAX 和 DOM)到数据处理技术(比如 JAXB 和 Castor)。这些技术将 XML 看作一种数据存储机制,而且在许多情形下看作一种达到目的的手段。
到目前为止,这些分组是主要的技术类别,每个分组中都在不断出现最新的技术和规范。
将 XML 转变为一类数据居民
XML 的一个主要问题就是缺乏良好的搜索支持,尽管这个问题仅限于上面的三个分组。如果想要对 XML 格式的数据进行搜索,则这会是一个问题。实际上,通常的解决方案是将上面的一些分组结合起来。文档创作者可能使用命令行工具(比如 grep,这是一种笨拙的搜索方式。编程人员可能读入 XML(另一个分组),然后使用他们的编程语言(比如 Java 或 C#)对非 XML 格式的数据进行搜索。这种方法是可行的,但暴露了 XML 的一些局限性。
幸运的是,XPath(和 XQuery,本文稍后将会谈到)的引入和流行带来了一个新分组:
4. 搜索 XML:XPath 和 XQuery 就属于这个分组。这些规范/技术允许以 XML 的方式对 XML 文档进行搜索。换句话说,可以使用 XML 语义进行搜索,并且不但能够搜索 XML 文档中的数据,还能够搜索这些文档的结构。
借助 XPath 和 XQuery,不再需要将数据由 XML 转换为一种编程语言,然后使用这种语言的工具来搜索数据。使用这种方法不仅会受到编程语言的约束,通常还会丢失大多数 XML 语义和结构(比如元素之间的父子关系等等)。使用 XPath 和 XQuery,无需编程语言 就可以对 XML 进行搜索。
9月21
Reflection 是 Java 程序开发语言的特征之一,它允许运行中的 Java 程序对自身进行检查,或者说“自审”,并能直接操作程序的内部属性。例如,使用它能获得 Java 类中各成员的名称并显示出来。
Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。
JavaBean 是 reflection 的实际应用之一,它能让一些工具可视化的操作软件组件。这些工具通过 reflection 动态的载入并取得 Java 组件(类) 的属性。
1. 一个简单的例子
考虑下面这个简单的例子,让我们看看 reflection 是如何工作的。
Java 的这一能力在实际应用中也许用得不是很多,但是在其它的程序设计语言中根本就不存在这一特性。例如,Pascal、C 或者 C++ 中就没有办法在程序中获得函数定义相关的信息。
JavaBean 是 reflection 的实际应用之一,它能让一些工具可视化的操作软件组件。这些工具通过 reflection 动态的载入并取得 Java 组件(类) 的属性。
1. 一个简单的例子
考虑下面这个简单的例子,让我们看看 reflection 是如何工作的。
9月21
内存溢出的原因
有三种可能导致OutOfMemoryError。首先是,此JVM有真实的内存泄漏,导致此JVM堆在内部实现时产生了一个Bug。这极不可靠。所有JVM都经过充分的测试,并且,如果有人发现这种bug,它将绝对是最高的优先级。因此你可以非常宽心地排除这种可能性。
第二种可能的OutOfMemoryError原因只不过是,你没有为你的应用程序运行时给予足够多的可用内存。这种情况,有两种可能的方案,或者增加 JVM堆可用大小,或者减少你的应用程序所需的内存总量。提高JVM可用堆大小可以简单的使用JVM的 -Xmx 参数。假如你将此参数设置尽可能的大(可用内存极限不要超过系统物理内存,否则你的应用程序将分页并暂停),仍然有以上所提到的内存问题,那么,你需要减少你的应用程序所可能用到内存总量。减少应用程序内存可能是简单的,你可能允许一些集合过大,例如使用了许多大的缓冲区。或者它过于复杂,要求你重新实现一些类,乃至重新设计应用程序。
有些JVM还有一个“Perm”参数用来处理JVM结构与类对象。如果你正在使用一个数量非常巨大的类集,它有可能运行在"Perm"空间之外,然后你需要增加此空间的大小,例如,sun的JVM使用 -XX:PermSize 与 -XX:MaxPermSize 选项。
第三种导致OutOfMemoryError最为常见,无心的对象引用保持。你没有明确无误的释放对象,以致于你的堆增长再增长,直到你没有额外的空间。
有三种可能导致OutOfMemoryError。首先是,此JVM有真实的内存泄漏,导致此JVM堆在内部实现时产生了一个Bug。这极不可靠。所有JVM都经过充分的测试,并且,如果有人发现这种bug,它将绝对是最高的优先级。因此你可以非常宽心地排除这种可能性。
第二种可能的OutOfMemoryError原因只不过是,你没有为你的应用程序运行时给予足够多的可用内存。这种情况,有两种可能的方案,或者增加 JVM堆可用大小,或者减少你的应用程序所需的内存总量。提高JVM可用堆大小可以简单的使用JVM的 -Xmx 参数。假如你将此参数设置尽可能的大(可用内存极限不要超过系统物理内存,否则你的应用程序将分页并暂停),仍然有以上所提到的内存问题,那么,你需要减少你的应用程序所可能用到内存总量。减少应用程序内存可能是简单的,你可能允许一些集合过大,例如使用了许多大的缓冲区。或者它过于复杂,要求你重新实现一些类,乃至重新设计应用程序。
有些JVM还有一个“Perm”参数用来处理JVM结构与类对象。如果你正在使用一个数量非常巨大的类集,它有可能运行在"Perm"空间之外,然后你需要增加此空间的大小,例如,sun的JVM使用 -XX:PermSize 与 -XX:MaxPermSize 选项。
第三种导致OutOfMemoryError最为常见,无心的对象引用保持。你没有明确无误的释放对象,以致于你的堆增长再增长,直到你没有额外的空间。
9月21
9月21
我们在很多时候你可能需要在程序中解析HTML文件或者字符串并从中抽取出文本内容来,要实现这个功能有很多工具可用。今天介绍的这个示例是使用swing中的一个类HTMLEditorKit.ParserCallback来实现这个功能。下面是一段示例代码:
其中:静态方法htmlToPlainText可以用来将html转化为纯文本,main函数示例了如何将一个网页的内容转化成为纯文本.
其中:静态方法htmlToPlainText可以用来将html转化为纯文本,main函数示例了如何将一个网页的内容转化成为纯文本.
9月10
首先你要确定你的jdk环境变量配置是正确的,对于java初学者来说,编译和运行java程序是一件很头疼的东西。显然,在命令方式下编译和运行java程序用久了,确实是很麻烦, 而我们又不想使用大型的开发工具时,UltraEdit是一个不错的选择, 很多初学者都是用它来编写java源文件的,可以高亮度显示关键字。
1.关键字高亮度显示。
打开UltraEdit->视图->高亮显示类型->java;
此时在UltraEdit输入java程序时,关键字和java包下的类可以高亮度显示,
还有注释也是啊,如果你不喜欢它的默认色彩,可以自己更改。
在顶层的菜单栏中选择 高级->配置->语法高亮(对话框的一个选项卡)->语言->java
你就可以配子你自己喜欢的色彩了。
1.关键字高亮度显示。
打开UltraEdit->视图->高亮显示类型->java;
此时在UltraEdit输入java程序时,关键字和java包下的类可以高亮度显示,
还有注释也是啊,如果你不喜欢它的默认色彩,可以自己更改。
在顶层的菜单栏中选择 高级->配置->语法高亮(对话框的一个选项卡)->语言->java
你就可以配子你自己喜欢的色彩了。
9月10
最近突然有个项目要用Java 读取 JPEG文件的信息, 宽度, 高度, 颜色表示等信息
。
下载了一个工具jar 包 metadata-extractor-2.3.1.jar , 网上搜一下 放到lib 里面。
一个简单的类来读取信息
ReadFileProperties.java
。 下载了一个工具jar 包 metadata-extractor-2.3.1.jar , 网上搜一下 放到lib 里面。
一个简单的类来读取信息
ReadFileProperties.java






。这几天用java进行socket编程,收获不少。首先,进行服务端的编程,作为服务端,编程主要按下面几个步骤进行:
