第 1 - 100 条,共 2103 条 | 下一页 显示内容简介 | 隐藏内容简介 订阅搜索结果 (RSS)
|
题目
|
类别
|
日期
|
|---|---|---|
| 基于 Jython 的大型应用系统动态实现
伴随着 Jython 的出现,使 Java 代码和 Python 代码做到了无缝交互。而 Python 自身强大的字符处理能力和动态执行能力更佳弥补了大型 J2EE 应用的一些先天缺陷。本文将分为几个章节,配合生动的实例,着重阐述如何利用 Jython 让我们的大型 Java 应用系统更加灵活。
|
技术文章 | 2012年 05月 21日 |
| Spring Roo 简介,第 5 部分: 编写 Spring Roo 的高级附加组件和包装器附加组件
Spring Roo 高级附加组件提供了向应用程序添加 Java 代码的机制(例如,构建一个能够为您的域对象编写 equals 方法和 hashcode 方法的附加组件)。利用 addon create 命令,您可以创建一个高级附加组件模板。然后再对此模板进行扩展,以满足开发人员的需求。本文将介绍创建高级附加组件的各个步骤。
|
技术文章 | 2012年 05月 14日 |
| Java 性能优化之 String 篇
String 方法用于文本分析及大量字符串处理时会对内存性能造成不可低估的影响。我们在一个大文本数据分析的项目中(我们统计一个约 300MB 的 csv 文件中所有单词出现的次数)发现,用于存放结果的 Collection 占用了几百兆的内存,远远超出唯一单词总数 20000 个。 本文将通过分析 String 在 JVM 中的存储结构,以及常见 String 操作对内存的影响阐述问题产生的原因及解决。.
|
技术文章 | 2012年 05月 14日 |
| Java 持久化技术规范(JPA )中的主键生成策略
Java Persistence API(JPA)中要求每个实体(Entity)类必须有一个主键,并且提供了 Table,Sequence,Identity,Auto 四种主键生成策略。其中 Identity 为表自动增长字段;Sequence 通过序列产生主键;这两种主键生成策略在某些特定的数据库中得到了很好的支持。Table 策略是任何关系型数据库都支持的一种策略,所以如果想要得到良好的可移植行,可以选择这种策略;Auto 策略就是把控制权交给 JPA 本身,让它根据实际情况来自己决定使用哪种策略,默认情况下就是使用这种策略。 下面就分别探究一下它们的用法。
|
技术文章 | 2012年 05月 07日 |
| 函数式思维: 函数设计模式,第 2 部分
设计模式仅表现为一种解决问题的方法,然而,如果您主要使用的是面向对象语言,那么您可能会想到设计模式。在本期的函数式思维中,Neal Ford 将阐述使用传统设计模式、元编程和函数式组合处理一个常见问题(接口不兼容)的各个解决方案。每种方法各有利弊,但是考虑解决方案的设计可以帮助您以一种新的方式来看待问题。
|
技术文章 | 2012年 05月 03日 |
| 使用 Rational Application Developer V8 在 Websphere Application Server V8 上开发 EJB3.1 应用
Rational Application Developer V8(RAD V8)与 Websphere Application Server V8(WAS V8)在 EJB3.1 的开发上均有不错的支持,本文用一个简单的计数器示例代码,介绍了如何在 RAD V8.0 上进行 EJB 3.1 的开发,并发布到 WAS V8.0 的场景。
|
技术文章 | 2012年 05月 02日 |
| 使用 Sonar 进行代码质量管理
本文将介绍代码质量管理平台 Sonar 的搭建和使用。Sonar 是一个开源平台,用于管理源代码的质量。您将看到 Sonar 从安装到设置的过程,以及如何在项目中使用 Maven 插件方便地进行代码质量管理。
|
技术文章 | 2012年 04月 24日 |
| 在 CICS Java 环境之间传递数据对象: 第 1 部分:CICS Java 环境
Java 是一种 CICS 应用程序的流行编程语言。CICS 提供多种 Java 环境,每种环境都有自己的优势,因此在不同的 CICS Java 环境之间传递数据对象是一个重要的话题。本系列文章将为您提供详细信息。第 1 部分介绍 CICS Java 环境、每种环境的优势,以及在各种环境之间传递数据的不同方式。第 2 部分使用一个示例 Java 类来展示如何在应用程序之间传递 Java 数据对象,这些应用程序在 CICS 池 JVM、基于 Axis2 的 JVM、CICS Dynamic Scripting 环境和基于 CICS OSGi 的 JVM 中运行。第 3 部分介绍如何从 CICS Transaction Gateway Java 客户端程序将 Java 数据对象传递到基于 CICS 的 JVM 或基于 CICS OSGi 的 JVM 中。
|
技术文章 | 2012年 04月 23日 |
| 使用 Feed4JUnit 进行数据与代码分离的 Java 单元测试
JUnit 是被广泛应用的 Java 单元测试框架,但是它没有很好的提供参数化测试的支持,很多测试人员不得不把测试数据写在程序里或者通过其它方法实现数据与代码的分离,在后续的修改和维护上有诸多限制和不便。Feed4JUnit 是开源的基于 JUnit 的扩展,通过使用 Feed4JUnit 提供的注释,用户可以很方便的把测试数据存放在文件或其它数据源。本文通过介绍及简单示例,使读者了解并能够使用 Feed4JUnit, 方便的实现数据与代码分离的测试。
|
技术文章 | 2012年 04月 23日 |
| 使用 Dojo 和 Grails 快速实现数据的增删改查(CRUD)
使用 Grails 可以快速开发 web 应用,但其自带的 CRUD 功能(scaffold)过于简陋,本文选用 Dojo 丰富的控件来美化用户界面并增强实用功能。本文将通过一个例子来一步一步地教您如何使用 Dojo 和 Grails 快速开发数据的增删改查(CRUD)功能。 这个例子覆盖了所有常见的数据库数据类型(Data、String、Number),兼顾了主外键关联。
|
技术文章 | 2012年 04月 16日 |
| PowerMock 简介
本文将介绍使用扩展于 Mockito 的 PowerMock 来实现对于前者不支持的模拟形式的单元测试。
|
技术文章 | 2012年 04月 16日 |
| 使用 Contest 分析测试用例的代码覆盖率
本文从代码覆盖率的基本概念开始,详细介绍测试工程师如何使用 Contest 来分析测试用例的代码覆盖率,接着结合 FoCuS 来产生测试用例的源代码覆盖率报表,从一个特殊的角度来度量测试用例的优劣。同时通过一个实际例子来讲解取得代码覆盖率的基本流程,其间贯穿一些基本概念,并且在得到代码覆盖率的基础之上分析如何改进测试用例,在反复迭代的过程中来提高测试用例的代码覆盖率。您可以在短时间内了解代码覆盖率的概念,并且应用作者介绍的流程来发现测试用例的漏洞,以及分析改进测试用例。
|
技术文章 | 2012年 04月 09日 |
| 使用 TSAM 扩展来管理 J2EE 应用程序
IBM Tivoli Service Automation Manager (TSAM) V7.2.2 引入了新扩展,该扩展是一组 TSAM 软件组件,可以实现新的 IT 服务自动化解决方案(称为服务定义)或向现有服务定义添加功能。在本文中,作者将解释如何根据您的系统要求调整负载平衡策略;如何在业务应用程序的工作负载发生变化时添加和移除应用服务器;如何修改防火墙规则,以及您需要这样做的原因。
|
技术文章 | 2012年 04月 09日 |
| 函数式思维: 函数设计模式,第 1 部分
与人们的普遍看法相反,设计模式存在于函数式编程中,不过它们有时在外观和行为上不同于其面向对象的模式。在本期的函数式思维中,Neal Ford 探究了模式在函数范式中的表现方式,展示了各种解决方案的不同之处。
|
技术文章 | 2012年 03月 31日 |
| 从 Java 代码到 Java 堆
本文将为您提供 Java 代码内存使用情况的深入见解,包括将 int 值置入一个 Integer 对象的内存开销、对象委托的成本和不同集合类型的内存效率。您将了解到如何确定应用程序中的哪些位置效率低下,以及如何选择正确的集合来改进您的代码。
|
技术文章 | 2012年 03月 29日 |
| 利用 CoffeeScript 和 Node 进行函数式 JavaScript 编程
利用由 CoffeeScript、Node 和 Underscore.js 组成的超级函数式脚本编写架构来掌控 Web 应用程序的复杂性。
|
技术文章 | 2012年 03月 19日 |
| 使用 Java Socket 编程实现开放平台与 IBM 主机的文件传输
对于工作在开放平台和大型主机环境的研发及测试人员,常常会面临配置文件传输于两个环境的情况。实际上,实现文件传输使用的文件传输协议 (FTP),底层是使用 Socket 通信来实现的。在 Java 语言广泛应用的背景下,笔者将介绍如何使用 Java 语言的 Socket 编程来实现开放平台与大型主机环境的文件传输的功能,希望能让读者对 Java 的 Socket 编程也有一个大概的了解。
|
技术文章 | 2012年 03月 15日 |
| 使用 TSAM 扩展来部署 J2EE 应用程序
IBM Tivoli Service Automation Manager (TSAM) 7.2.2 引入了扩展的概念,TSAM 扩展是一组 TSAM 软件组件,可实现新的 IT 服务自动化解决方案(称为服务定义)或向现有的服务定义添加功能。在本文中,作者将定义一个场景,希望在其中安全地向云部署一个三层式企业应用程序(在本例中为 J2EE)。本文将演示如何设置和配置 TSAM 中的扩展,将这些作为完成上述任务的第一步。
|
技术文章 | 2012年 03月 12日 |
| 函数式思维: Groovy 中的函数式特性,第 3 部分
现代的动态语言整合了许多函数式特性,以帮助开发人员完成平常的任务。本文将使用 Groovy 探索在函数级别应用缓存的好处,并将这种缓存方法与一种命令式方法进行对比。本文将演示两种类型的缓存,即方法内缓存和外部缓存,还将探讨命令式和函数式版本的优缺点。
|
技术文章 | 2012年 03月 12日 |
| 用 STAF+Selenium 实现并行的自动化测试框架
我们有很多理由去开展自动化测试的工作,例如自动化测试可以节省时间、简化手工测试、提高测试覆盖率等等,这也充分说明实现软件自动化是非常重要的。自动化测试时一个很吸引人的技术问题是,对于不同的软件项目或多或少都要借助于自动化工具进行测试。如今随着 Agile 开发模式逐渐的应用到各个开发测试团队,如何快速连续地交付产品对于开发和测试团队都成为一个很大的挑战。对于测试人员来说,如何在有限的测试资源和测试时间之内保证产品质量成为一个至关重要的问题。
|
技术文章 | 2012年 03月 08日 |
| Java 开发 2.0: 保护用于云计算的 Java 应用程序数据
数据安全是考虑采用云计算的组织面临的一个严峻问题,但在许多情况下,无需对它过于担忧。在本期 Java 开发 2.0 中,将学习如何使用私钥加密和高级加密标准来保护用于云的敏感的应用程序数据。您还将快速了解加密策略,这对最大限度地提高针对分布式云数据存储的条件式搜索效率至关重要。
|
技术文章 | 2012年 03月 05日 |
| 使用 Spring Data JPA 简化 JPA 开发
本文由浅入深地讲述了使用 Spring Data JPA 需要关注的各个方面,为读者了解和使用该框架提供了指导,可以作为 Spring Data JPA 的学习指南。
|
技术文章 | 2012年 03月 01日 |
| 使用 XADisk 的文件系统事务
Java 应用程序将它们的部分数据存储在文件中,可通过使用事务访问文件系统获得多方面的收益。了解如何使用开源的 XADisk 进行事务性文件访问。
|
技术文章 | 2012年 02月 28日 |
| 利用 AuthenticRoast 自定义托管容器的安全性
AuthenticRoast 是一个开放源码项目,它能够与 Java Authentication Service Provider Interface for Containers (JSR 196) 协同工作,从而允许您开发自定义身份验证模块,以便配合托管容器的声明式安全性一起使用。Joe Sam Shirah 将展示 AuthenticRoast 如何最大程度地降低对 Java Enterprise Edition (JEE) 容器的配置影响,同时极大地减少自定义安全性要求的编码工作。文中提供了一个可供下载的 WAR,附带演示代码。
|
技术文章 | 2012年 02月 27日 |
| 使用带有 JSF 2 的 RichFaces
RichFaces 与专门为 JavaServer Faces (JSF) 配套使用而设计的大多数其他 rich/Ajax 组件框架类似,但进行了大量改进,以便与 JSF 2 的重要变更兼容。Joe Sam Shirah 研究了 RichFaces 4.1 中已变更和新增的组件,这些组件提供了与他在 “RichFaces 入门” 中版本 3.1 演示的组件具有相同功能。此外,他还更新了使用带有 JSF 的 RichFaces 的设置要求。
|
技术文章 | 2012年 02月 20日 |
| 实战如何使用 WebSphere Application Server 提供的 Embeddable EJB Container 开发并测试 EJB 应用
EJB 3.1 规范中提出 Embeddable EJB Container,旨在方便开发人员对 EJB 的应用程序进行开发和测试,改进了传统意义上需要运行时环境才能进行 EJB 程序测试的不利因素。使用 Embeddable EJB Container 程序开发人员只需要在相对方便简洁的 J2SE 环境中便可对 EJB 的业务逻辑进行测试。WebSphere Application Server V8 支持 EJB 3.1 的这一新特性。本文将详细介绍如何使用 WebSphere Application Server V8 中提供的 Embeddable EJB Container 来进行 EJB 3.1 实例程序的开发和基于 Junit 框架的单元测试。
|
技术文章 | 2012年 02月 16日 |
| 使用 Spring Batch 构建企业级批处理应用: 第 1 部分
Spring Batch 是一款基于 Spring 的批处理框架,通过它可以轻易构建出高内聚、低耦合的企业批处理应用。通过本文您可以一步步了解如何开发基于 Spring Batch 的批处理程序。同时,本文还介绍了 Spring Batch 的相关核心概念。
|
技术文章 | 2012年 02月 16日 |
| 函数式思维: Groovy 中的函数式特性,第 2 部分
凭借 Groovy,元编程 (metaprogramming) 和函数式编程形成了一个强有力的组合。了解元编程如何支持您为 Integer 数据类型添加方法,从而使您能够利用 Groovy 的内置函数式特性。学习如何使用元编程将 Functional Java 框架的丰富函数式特性集无缝地整合到 Groovy 中。
|
技术文章 | 2012年 02月 13日 |
| 基于 Spring 和 iBATIS 的动态可更新多数据源持久层
当开发拥有多重数据源的项目时,常常会遇到这样一种需求:用户希望能够通过 UI 来自己动态配置数据源。但实现这种需求通常会遇到三个问题,1, 应用程序需要重新发布来更新数据连接。2,数据源个数上限不能动态增长。3,数据源的维护和修改需要专业人员在后台操作。本文提出了一种创新性的解决方案,通过使用 Spring+iBATIS 的框架,来实现可动态更新的多重数据源的持久层。对于解决以上问题具有一定的参考价值。
|
技术文章 | 2012年 02月 09日 |
| Ant 脚本的结构化设计
本文主要在例子的基础上探讨如何对 Ant 脚本进行结构化设计,从而提高 Ant 脚本的重用及维护。
|
技术文章 | 2012年 02月 06日 |
| 自动化云虚拟机的开发和管理
最近出现了一种,即建立云应用程序和服务的开发与运营之间的紧密关系;特别是,这种趋势会导致应用程序生命周期管理 (ALM) 工具和云计算的集成变得更加紧密、更加高效。在本文中,作者将向您展示如何使用开源 Apache Maven 构建管理工具来自动化 IBM SmartCloud Enterprise 上的构建和部署项目。作者将演示如何通过开发一个 Apache Maven 插件,将云上虚拟机的管理集成到构建和部署生命周期中,该插件能够查找并创建可以在云上运行 J2EE 应用服务器的虚拟机。您还会发现在云上进行开发和部署的最佳实践,以及如何使用 IBM Cloud API 和 Maven 来实现这些最佳实践。
|
技术文章 | 2012年 02月 02日 |
| Java 开发 2.0: 现实世界中的 Redis
Redis 与 memcached 有许多相似之处,但是它拥有更加丰富的功能集。在本期的 Java 开发 2.0 中,Andrew 尝试将 Redis 添加(通过基于 Java 的变体 - Jedis 方法)到他自己的基于定位的移动应用程序。了解如何将 Redis 作为一个简单数据存储来使用,然后尝试再利用它进行超高速轻量级缓存。
|
技术文章 | 2012年 01月 30日 |
| Apache Thrift - 可伸缩的跨语言服务开发框架
Apache Thrift 是 Facebook 实现的一种高效的、支持多种编程语言的远程服务调用的框架。本文将从 Java 开发人员角度详细介绍 Apache Thrift 的架构、开发和部署,并且针对不同的传输协议和服务类型给出相应的 Java 实例,同时详细介绍 Thrift 异步客户端的实现,最后提出使用 Thrift 需要注意的事项。
|
技术文章 | 2012年 01月 16日 |
| Spring Roo 简介,第 4 部分: 用 Spring Roo 和 Cloud
Foundry 在云中快速开发应用程序
通过 VMWare 创建的第一个开放的 “平台即服务 (platform as a service)” 项目 Cloud Foundry,创建能够在云内使用的应用程序,这使得 Roo 快速应用程序开发又向前迈进了一步。了解有关此环境的更多信息,然后,使用 Roo shell 将应用程序部署到 Cloud Foundry。
|
技术文章 | 2012年 01月 09日 |
| Rhino 使 JavaScript 应用程序更灵动
脚本语言有良好的快速开发,高效率的执行,解释而非编译执行等优点,并且具有与其他语言编写的组件之间强大的通信功能。JavaScript 一直是脚本语言中的领头羊,它是一门具有非常丰富特性的语言。除了浏览器之外,JavaScript 也可以应用在其他场合,比如服务器端程序中。Rhino 是使用 Java 语言实现的 JavaScript 引擎,本文将介绍如何利用 Rhino 来使您的应用程序提供 JavaScript 脚本的支持。
|
技术文章 | 2012年 01月 09日 |
| 使用 ASM 实现 Java 语言的“多重继承”
尽管大部分情况下我们并不需要多重继承,但总有一些情况下我们不得不做出多重继承的考虑。但又由于 Java 语言本身不支持多重继承,这就会带来问题。本文试图使用 ASM 来解决这一问题。
|
技术文章 | 2012年 01月 04日 |
| 面向 Java 开发人员的 Node.js
Node.js 是一种激动人心的开发方式,可替代传统的 Java 并发性,只要有一个开放的心态和一点点 JavaScript 知识,就可以立即开始进行开发。
|
技术文章 | 2011年 12月 28日 |
| 函数式思维: Groovy 中的函数式特性,第 1 部分
随着时间的推移,语言和运行时为我们处理了越来越多琐碎的细节。函数式语言在这方面体现了它的趋势,而且现代的动态语言也采用了许多函数式特性,让开发者的工作变得更轻松。这期文章将介绍 Groovy 中的一些函数式特性,并将展示如何用递归隐藏状态和构建惰性列表。
|
技术文章 | 2011年 12月 27日 |
| 多态在 Java 和 C++ 编程语言中的实现比较
面向对象编程语言的一个重要特性就是多态,它使得可以用基类的指针或引用指向派生类的对象,而在具体访问时实现方法动态绑定。本文主要探讨多态在当前最流行的两种编程语言 C++ 和 Java 中的实现,并对其中的异同进行了比较,使读者对其有全面的理解,以便更好的在编程中正确使用这种特性。
|
技术文章 | 2011年 12月 22日 |
| 使用 Java Toolbox 访问 IBM i 上的打印资源
Java Toolbox 是一个 Java 类库,为 Java 程序提供一套方便访问 IBM i 的数据和资源的 API。本文介绍了如何使用 Java Toolbox 访问 IBM i 上的打印资源。
|
技术文章 | 2011年 12月 22日 |
| 评论专栏: 企业级 OSGi 带来的好处
WebSphere Application Server(WAS)从版本 6.1 开始,在其底层实现中引入 OSGi,接下来 WAS 版本 7.0 推出 OSGi 功能包,开始支持 OSGi 编程模型,再到最新的 WAS 版本 8.0,对 OSGi 应用的开发部署提供了更加全面的支持。OSGi,作为实现 JAVA 模块化最重要的方法。越来越多的受到软件架构师、开发人员以及服务器管理者的欢迎。那么 OSGi 究竟给我们带来了什么好处? WAS 版本 8.0 又是如何去实现这些好处,并让软件从业人员轻松的享用到这些好处呢?我们将在本文中一一向大家介绍。
|
技术文章 | 2011年 12月 22日 |
| Java 开发 2.0: 通过 Heroku 的 PaaS 用 Git 提交 Java 应用程序
了解 Heroku,一种基于 Ruby 的 PaaS,为云中的 Java 应用程序开发和部署带来了可配置性和易用性的成功组合。
|
技术文章 | 2011年 12月 19日 |
| 使用 Apache Commons CLI 开发命令行工具
虽然各种人机交互技术飞速发展,但最传统的命令行模式依然被广泛应用于各个领域:从编译代码到系统管理,命令行因其简洁高效而备受宠爱。各种工具和系统都提供了详尽的使用手册,有些还提供示例说明如何二次开发。然而关于如何开发一个易用、强壮的命令行工具的文章却很少。本文将结合 Apache Commons CLI,通过一个完整的例子展示如何准备、开发、测试一个命令行工具。希望本文对有相关需求的读者能有所帮助。
|
技术文章 | 2011年 12月 15日 |
| Apache Mahout:适合所有人的可扩展机器学习框架
Apache Mahout 专家 Grant Ingersoll 引领您快速了解最新版本 Mahout 中的机器学习库,并通过示例说明如何部署和扩展 Mahout 的某些最常用的算法。
|
技术文章 | 2011年 12月 15日 |
| 语言设计者的笔记本: 一揽子交易
向语言添加某个重要的新功能时,往往会出现以下情况:新功能是必需的,或者至少鼓励添加的,而附加的其他新功能则有好有坏。在这一期的语言设计人员笔记中,Brian Goetz 将讨论在添加语言功能时如何附带添加其相关功能。
|
技术文章 | 2011年 12月 12日 |
| 使用 Rational Application
Developer 剖析远程 WebSphere 应用程序
了解如何配置 IBM Rational
Application Developer 和 WebSphere Application Server,以便对您的远程 WebSphere 应用程序进行剖析。本文提供的步骤同时适用于 Java 分析和 J2EE Request Profiler。
|
技术文章 | 2011年 12月 12日 |
| 全球化测试中时间日期格式的自动化验证方法
本文主要介绍了一种验证时间日期格式的自动化方法。首先本文简要介绍了软件全球化的相关知识,以及简要叙述了 ICU 和 GVP 的相关内容,其次文章详细地介绍了如何实现时间日期格式的自动化验证。最后通过实例证明我们提出的方法具有较好的应用效果,并且具有较为广阔应用前景。
|
技术文章 | 2011年 12月 08日 |
| 使用 Dojo 的 JsonRestStore 连接您的 REST 服务
Dojo 的 JsonRestStore 是将您的 REST 服务连接到 Dojo 数据 API 更为高级的选择之一。如果您的服务不能符合 JsonRestStore 的数据结构预期,JsonRestStore 和您的 REST 服务之间的连接将变得很困难。在本文中,学习一个简单、通用的服务实现,来将非标准 REST 服务连接到 JsonRestStore。通过几个示例学习如何使用和扩展自己的服务实现。
|
技术文章 | 2011年 12月 05日 |
| 基于 JVM 的新一代编程语言:Fantom
自从 JVM 提供非 Java 语言的支持以来,很多风格迥异的编程语言都加入到 JVM 的备选语言行列中来。这其中包括一些“老”编程语言,如 JavaScript;也包括一些全新的编程语言,比如 Groovy、Scala,以及本文要介绍的 Fantom。
|
技术文章 | 2011年 12月 02日 |
| 函数式思维: 耦合和组合,第 2 部分
|
技术文章 | 2011年 12月 01日 |
| 通过 WebSphere Application Server V6.1 利用 OpenJPA
Apache OpenJPA 项目是 Java Persistence API 的一个开放源代码实现,旨在构建一个稳健、高性能、可伸缩的 JPA 规范实现。本文通过一个完整的示例来介绍 OpenJPA,该示例演示了如何通过 IBM® WebSphere® Application Server V6.1 来利用 OpenJPA 的部分功能。针对 JPA 2.0 更新。
|
技术文章 | 2011年 11月 28日 |
| 函数式思维: 耦合和组合,第 1 部分
每天都与特定的抽象(如面向对象)打交道,当它把您引向一个不是最佳的解决方案时,您几乎都无法察觉到。本文探讨代码重用中的面向对象思维的含义,并将它们与更加函数式的方案,如组合,进行比较。
|
技术文章 | 2011年 11月 28日 |
| 高效 JavaScript 单元测试
用户不想在您的应用程序上看到 “已针对 XYZ 浏览器而进行优化” 这样的说明,他们只要应用程序正常工作。在本文中,了解高效的 JavaScript 单元测试如何帮助您轻松支持更多浏览器。
|
技术文章 | 2011年 11月 28日 |
| 基于 Jenkins 快速搭建持续集成环境
持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础。Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使持续集成变成可能。本文正是从持续集成的基本概念入手,通过具体实例,介绍了如何基于 Jenkins 快速搭建持续集成环境。
|
技术文章 | 2011年 11月 24日 |
| 如何使用 IBM i System Debugger 调试 Java 程序
调试在 IBM i 上运行的 Java 程序有很多种选择,其中最为方便有效的是使用 IBM i 提供的 IBM i System Debugger。本文主要站在使用者的角度介绍如何在 IBM i 上使用
IBM i System Debugger 调试 Java 程序,为在 IBM i 上开发及调试 Java 程序的用户提供了较为详细的使用指南。保证了用户在 IBM i 上可以开发出更优质高效的 Java 程序。
|
技术文章 | 2011年 11月 17日 |
| Hibernate 延迟加载剖析与代理模式应用
Hibernate 的延迟加载(lazy load)是一个被广泛使用的技术。这种延迟加载保证了应用只有在需要时才去数据库中抓取相应的记录。通过延迟加载技术可以避免过多、过早地加载数据表里的数据,从而降低应用的内存开销。Hibernate 的延迟加载本质上就是代理模式的应用,当程序通过 Hibernate 装载一个实体时,默认情况下,Hibernate 并不会立即抓取它的集合属性、关联实体所以对应的记录,而是通过生成一个代理来表示这些集合属性、关联实体,这就是代理模式应用带来的优势。
|
技术文章 | 2011年 11月 17日 |
| 开发 Eclipse 插件的最佳实践
本教程着重介绍使用标记将信息标记为资源的最佳实践,接着介绍用于在工作台内突出标记的注释和修饰符。通过扩展扩展点,您可以重用和改编 Eclipse 插件的内置函数,并且执行高级资源标记,比如在编辑文本时移动一个文本标记。我们将讨论利用插件模型的方法,创建一个有效、高性能且具有综合外观的插件。
|
教程 | 2011年 11月 14日 |
| Watij - 面向 Web 的自动化测试工具
随着应用程序渐渐脱离独立的宿主模型并进入到云中,可靠性和可预测性的测试变得更加重要。在云环境中,有许多因素是我们无法控制的,因此编写健壮的、经过测试的代码比以往更加迫切。本文所要介绍的 Watij(Web Application Testing in Java)是一个优秀的开源工具,用于开发基于 Web 应用的自动化测试程序。它使用 Java 语言,提供了轻量级的自动化测试程序框架和丰富的程序开发库,有效地加速了自动化测试程序的开发。本文主要介绍了 Watij 的安装和配置、Watij 的实例应用以及 Watij 的特点及优势等三个方面的内容。
|
技术文章 | 2011年 11月 09日 |
| 为 Android 开发访问 JAX-RS Web 服务的 Apache HttpClient 客户端
使用 Apache HttpClient 库访问 JAX-RS web 服务。Jersey 是 JAX-RS 的参考实现,它简化了 Java 环境下的 RESTful Web 服务的开发。Android 是一款流行的智能手机,本文将展示如何为 Android 创建一个 JAX-RS 客户端。您将创建一个访问 JAX-RS Web 服务的 Apache HttpClient 库客户端。
|
技术文章 | 2011年 11月 07日 |
| Clojure 中的树形数据访问模式
访问者(Visitor)模式通常用于在 Java 和其他面向对象的程序中遍历和操作树形的数据。在这篇文章中,我们将观察 Alex Miller 使用 Clojure 的函数式 zippers 重写该模式之后的情况。
|
技术文章 | 2011年 11月 07日 |
| 使用 Antlr 开发领域语言 - 开发一个完整的应用
为了使应用系统能够快速地响应复杂多变的业务规则,通过让用户使用领域语言来自定义业务规则是一种常用的选择。 然而实现领域语言并非易事,本文使用 Antlr 语言识别工具,从语言定义、词法分析、语法分析、类型检查和生成中间代码入手,详细介绍了 Antlr 在语言处理各个阶段中的运用。为了完成最终的运算,本文还实现了一个虚拟机,用于解释执行之前产生的中间代码;文中所有的介绍都结合实例进行,希望能和读者一起分享构建领域语言的一些方法和思想。
|
技术文章 | 2011年 11月 02日 |
| 深入分析 Java I/O 的工作机制
I/O 问题可以说是当今互联网 Web 应用中所面临的主要问题之一,因为当前在这个海量数据时代,数据在网络中随处流动。这个流动的过程中都涉及到 I/O 问题,可以说大部分 Web 应用系统的瓶颈都是 I/O 瓶颈。本文的目的正是分析 I/O 的内在工作机制,你将了解到:Java 的 I/O 类库的基本架构;磁盘 I/O 工作机制;网络 I/O 的工作机制;其中以网络 I/O 为重点介绍 Java Socket 的工作方式;你还将了解到 NIO 的工作方式,还有同步和异步以及阻塞与非阻塞的区别,最后我们将介绍一些常用的关于 I/O 的优化技巧。
|
技术文章 | 2011年 10月 31日 |
| Java Web 高性能开发,第 1 部分: 前端的高性能
Web 发展的速度让许多人叹为观止,层出不穷的组件、技术,只需要合理的组合、恰当的设置,就可以让 Web 程序性能不断飞跃。所有 Web 的思想都是通用的,它们也可以运用到 Java Web。这一系列的文章,将从各个角度,包括前端高性能、反向代理、数据库高性能、负载均衡等等,以 Java Web 为背景进行讲述,同时用实际的工具、实际的数据来对比被优化前后的 Java Web 程序。第一部分 , 主要讲解网页前端的性能优化,这一部分是最直接与用户接触的。事实证明,与其消耗大量时间在服务器端,在前端进行的优化更易获得用户的肯定。
|
技术文章 | 2011年 10月 24日 |
| 函数式思维: 不变性
不变性 (immutability) 是函数式编程的基石之一。本文主要讨论了Java 语言中的不变性的许多方面,并介绍了如何以传统的和新式的风格来创建不可改变的 Java 类。本文还展示了使用 Groovy 创建不可变类的两种方法,这两种方法摈弃了 Java 实现中的许多令人头疼的缺陷。最后您还要了解的是,何时适合使用这种抽象。
|
技术文章 | 2011年 10月 17日 |
| 使用 jQuery、ZK 和 Java 代码的融合来增强 Ajax 开发
使用 jQuery 与服务器端 Java 应用程序通信非常简单。但是,当开发企业 web 应用程序时,代码会变得很复杂、使用 jQuery 进行客户端和服务器通信也会很耗时,而且容易出错。如果您使用纯 Java 代码实现整个应用程序那将会变得很简单。想要控制业务逻辑和利用客户端控件的所有优势吗?在本文中,您将学习如何使用 ZK 工具和 Java EE 技术来提高您的 Asynchronous JavaScript + XML (Ajax) 应用程序的开发,而无需放弃运行客户端功能。
|
技术文章 | 2011年 10月 12日 |
| 云计算环境下的 JVM 虚拟化特性初探
云计算的概念是 Google 提出的。从用户的角度理解,云计算强调的是 IT 服务的交付和使用模式。在云计算环境下,这些 IT 服务通过网络 ( 通常是 internet) 以按需 (On Demand)、易扩展 (Extensibility) 的方式获得。按照云计算平台提供的服务种类,划分出了云计算平台的三层架构,即:Infrastructure as a Service(IaaS),Platform as a Service (PaaS), 以及 Software as a Service (SaaS)。 IaaS 的代表如亚马逊的 Amazon Web services(AWS), PaaS 的代表如 Google App Engine(GAE), 以及 SaaS 的代表如 IBM Lotus Live。本文将在介绍这些典型的云计算环境基础上,围绕着云计算的两个重要的主题:多租户和资源管理,展开我们的讨论,讨论的重点涉及将来的 Java 平台会为云计算提供什么样的基础支持。
|
技术文章 | 2011年 10月 12日 |
| 技巧:防范代码的 finalizer() 漏洞
您的 Java 代码有可能会因终结操作带来的漏洞而易受到攻击,了解这一漏洞是如何起作用的,并学习如何通过修改代码来防止此类攻击。
|
技术文章 | 2011年 10月 10日 |
| 使用 Mashups4JSF 生成和消费 Mashup Feed
Mashups4JFS 是一种帮助您在 JSF 世界中轻松创建 mashup 程序的工具。我们将继续进行我们的探索,了解如何为应用程序创建 RSS feed。
|
技术文章 | 2011年 09月 26日 |
| Java 字节码工具 ASM 在 web services 开发中的应用
在基于 JAX-WS 标准的 web services 的开发中,不少实际场景都是希望采用自底向上的开发方式, 即基于已有的 Java bean 来创建 web services 。WebSphere Application Server ( 以下简称 WAS ) 提供了命令行的工具 wsgen 和相对应的 Ant task 来支持这种开发过程,而且这两个工具比较适合大型项目的自动化构建。 这两个工具的使用前提是 Java bean 中事先添加有 web services 的 Annotation 标注,而在现有的业务系统中,class 文件一般是不带 Annotation 的,这就需要开发人员去修改现有的代码,以手工方式添加 Annotation,但这样带来的工作量太大且容易出错。本文介绍了一种解决途径,可以不用修改源代码,而是利用字节码工具 ASM 直接修改 class 文件, 在字节码文件中自动注入 Annotation ,然后再利用 wsgen 工具就可以很方便地生成 web services 应用。 本文同时也总结了使用 ASM 的一些实践
|
技术文章 | 2011年 09月 26日 |
| Java 开发 2.0: 使用 Gretty 的超轻量级 Java Web 服务
Gretty 是构建 Web 服务超轻量级框架的新学派之一。构建于极快的 Java NIO API 之上,Gretty 将 Groovy 用作 Web 端点和 Grape 的 Maven 式依赖关系管理的一种域特定语言。本文介绍如何开始使用 Gretty 来构建和部署 Java Web 服务应用程序。
|
技术文章 | 2011年 09月 25日 |
| Jetty 的工作原理以及与 Tomcat 的比较
Jetty 应该是目前最活跃也是很有前景的一个 Servlet 引擎。本文将介绍 Jetty 基本架构与基本的工作原理:您将了解到 Jetty 的基本体系结构;Jetty 的启动过程;Jetty 如何接受和处理用户的请求。你还将了解到 AJP 的一些细节:Jetty 如何基于 AJP 工作;以及 Jetty 如何集成到 Jboss;最后我们将比较一下两个 Servlet 引擎:Tomcat 和 Jetty 的优缺点。
|
技术文章 | 2011年 09月 21日 |
| 语言设计者的笔记本: 首先,不要造成伤害
尽管一些建议的语言功能可以解决遇到的某个问题,但其中大部分功能的存在都有现实环境中的根源,在这些环境中,现有功能无法使程序员轻松、清晰、简洁或安全地表达他们想要的概念。尽管头脑中有一个用例,“此功能使我能够编写我希望能够编写的代码”,但语言设计师还需要评估语言功能可能带来的糟糕代码。
|
技术文章 | 2011年 09月 19日 |
| 几种任务调度的 Java 实现方法与比较
综观目前的 Web 应用,多数应用都具备任务调度的功能。本文由浅入深介绍了几种任务调度的 Java 实现方法,包括 Timer,Scheduler, Quartz 以及 JCron
Tab,并对其优缺点进行比较,目的在于给需要开发任务调度的程序员提供有价值的参考。
|
技术文章 | 2011年 09月 10日 |
| 使用 JavaFX 快速创建应用程序
学习如何使用 Eclipse IDE 开发基于 JavaFX 的 RIA。本文向您介绍 JavaFX,以及如何使用它结合 JavaFX Eclipse 插件来快速构建 GUI 应用程序。通过为桌面和移动模拟器构建一个样例应用程序来探索一些 JavaFX 功能。同时也可学习创建基础动画。
|
技术文章 | 2011年 09月 08日 |
| 函数式思维: 运用函数式思维,第 3 部分
系列文章 “函数式思维” 的作者 Neal Ford 将继续介绍函数式编程的构造和范例。您将了解 Scala 中的数字分类 (number-classification) 代码以及函数式世界中的单元测试。接下来,您将了解部分应用和局部套用 (currying),即两种简化代码重用的函数式方法,还将了解递归在函数式思维中发挥作用的方式。
|
技术文章 | 2011年 09月 07日 |
| Clojure 与并发性
Clojure 编程语言最近受到广泛关注。然而,这些关注并非出于一些显而易见的原因,比如因为它是现代的 Lisp 语言的继承,或是因为它运行在 Java 虚拟机上。它的最吸引人之处是其并发特性。可能 Clojure 已广为人知,主要是因为它本身支持 Software Transactional Memory (STM) 模型。然而,STM 并不是解决所有并发问题的最佳方案。Clojure 能够以 agents 和 atoms 的形式支持其他范例。本文考查 Clojure 所提供的每种并发方法,并研究每种方法的适用情况。
|
技术文章 | 2011年 09月 05日 |
| Java 开发 2.0: Play 框架在 Amazon RDS 中的应用
Amazon RDS,Amazon 越来越庞大的 PaaS 家族的成员,使您只需几次单击即可提高应用程序的关系数据存储容量。
|
技术文章 | 2011年 09月 05日 |
| 将社交网络集成到 BPM,第 1 部分: 收集 Twitter 数据
由于业务流程管理(BPM)工具的灵活性,您可以用最少的代码将社交网络集成到公司的业务流程中。这个两部分系列文章展示了怎样使用 Bonita 开源方案构建应用程序,Bonita 开源方案 -- 一个开源 BPM 工具 -- 收集、显示并使用来自社交网络站点的数据。第 1 部分展示了如何配置应用程序来连接到 Twitter Web 服务,使用户能对相关数据进行关键字搜索。在第 2 部分,您将看到应用程序如何连接到用户关系管理(CRM)系统。
|
技术文章 | 2011年 09月 01日 |
| 基于 Struts2 标签的 BigPipe 技术实现
Facebook 介绍了一个名为 BigPipe 的技术,这项技术可使 Facebook 站点的访问速度提升一倍。目前,也有一小部分文章介绍了该技术在 JSP 中的实现,但是这些文章只是基于 Servlet 的理论实现,对于 Java Web 开发者来说并不存在实际意义。本文基于 BigPipe 的思想,开发了 BigPipe 的 JSP 实现,该技术可以实现 JSP 页面的快速加载,增强用户体验,读者不仅可以从本文了解 BigPipe 原理,还可以使用开发的 Struts2 标签进行实际的开发,相信对读者的学习和开发有很大的好处。
|
技术文章 | 2011年 08月 29日 |
| 了解最新的 DB2 Universal JDBC 驱动程序中的新增 JVM exit 属性
通过使用 DB2 Universal JDBC Driver 中的新增全局属性,现在您可以在使用完 SQLJ 工具(比如 db2sqljcustomize 和 db2sqljbind)时捕获 JVM exit 或 System.exit()。本文将介绍 JDBC Universal Driver 的通用属性 db2.jcc.sqljToolsExitJVMOnCompletion 及其用法。本文用一个 Java 应用程序样例演示如何设置这个新属性。
|
技术文章 | 2011年 08月 29日 |
| 使用 InfoSphere DataStage Java stages 和 ICU4J 完成音译 ETL 作业
随着成长市场中的数据质量的重要性越来越大,无结构的脏数据需要立即清洁。然而,这项工作的一个挑战是,世界各国有多种语言,有效处理语言学数据的难度很大。例如,在印度,每个州的官方语言均有所不同,数据需要同时提供英语版本和本地语言版本,这种情况加剧了数据一致性问题的严重性。本文将阐述如何在音译过程中实现数据一致性,如何使用 IBM InfoSphere Information Server
DataStage 准备语言资料数据,这些是提取、转换和加载 (ETL) 场景的一部分。
|
技术文章 | 2011年 08月 25日 |
| 使用 Apache MINA2 实现 Web 系统的消息中间件
本文将介绍如何使用 Apache MINA2(以下简称 MINA2)解决复杂 Web 系统内各子系统之间同步消息中间件的问题。MINA2 为开发高性能和高可用性的网络应用程序提供了非常便利的框架。从本文中可以了解 MINA2 的基本原理和主要功能,此外在本文中您还可以看到 MINA2 实现消息中间件的服务端和客户端程序的详细内容。
|
技术文章 | 2011年 08月 25日 |
| IBM i 与 J9 VM
2010 年 4 月,IBM i 新的版本 V7R1 发布,在这一新的版本中,IBM i 对 Java 的支持做出了重要的调整。与以往版本中(V5R4,V6R1)同时支持 Classic 和 J9 两种 JVM 不同,从 V7R1 开始,IBM i 将只支持 J9 JVM。本文是对 J9 JVM 的介绍,并对 Classic JVM 和 J9 JVM 进行对比,给出为什么 IBM i V7R1 会做出上述改变以及 J9 JVM 将会给 IBM 带来什么。
|
技术文章 | 2011年 08月 24日 |
| Java 7 NIO.2 文件系统监视服务在安装测试中的应用
本文将介绍 Java 7 NIO.2 新特性文件系统监视服务应用编程接口(Java 7 NIO.2 File System Watch Service API)在软件安装测试中的应用。首先介绍软件安装测试需要关注的问题:如何监视安装过程中文件的更改,然后介绍如何利用这些 API 来解决这些问题。
|
技术文章 | 2011年 08月 24日 |
| Hibernate 3 深度解析
Hibernate 的重要性,我想各位一定很清楚.那么 Hibernate 的一些重要功能项大家是否真的很了解呢,是否明白它的执行逻辑呢?本文章将会带领大家深入到 Hibernate 的内部,深度解析下重要功能项或是关键属性的工作原理。
|
技术文章 | 2011年 08月 22日 |
| Struts2、Spring、Hibernate 高效开发的最佳实践
Struts2、Spring、Hibernate(SSH)是最常用的 Java EE Web 组件层的开发技术搭配,网络中和许多 IT 技术书籍中都有它们的开发教程,但是通常的教程都会让很多程序员陷入痛苦的配置与修改配置的过程。本文利用 SSH 中的技术特性,利用 Java 反射技术,按照规约优于配置的原理,基于 SSH 设定编写了一个通用开发框架,这使得开发者可以专注于业务逻辑的开发,而不用随着业务增加而添加或修改任何配置,并且对于权限控制和日志记录也提供了方便的接口。
|
技术文章 | 2011年 08月 17日 |
| 演化架构和紧急设计: 何时、为什么以及如何进行紧急设计
|
技术文章 | 2011年 08月 15日 |
| Java 开发 2.0: 面向 Java 开发人员的 JavaScript
Java 开发人员一直不看好 JavaScript,因为用它来编程显得太过轻量级了,而作为脚本又显得太过笨重。但有人还在使用 JavaScript,因为它是 GWT 与 Node.js 之类优秀 Web 技术的基础。在本期 Java 开发 2.0 中,Andrew Glover 解释了为何 JavaScript 是现代 Java 开发人员的重要工具。然后介绍了构建当前 Web 的一流应用程序所需的语法,包括 JavaScript 变量、类型、函数、和类。
|
技术文章 | 2011年 08月 10日 |
| 实战 Java 存储过程的编写及在 DB2 上的部署
在一个设计良好的数据库应用中,存储过程(Stored Procedure)几乎是必不可少的。DB2 对 Java 存储过程一直有着良好的支持。与一般的 Java 程序相比,Java 存储过程在其设计、编写过程中,都有许多不同之处。本文从一个 Java 程序员的角度,初步介绍了如何编写一个 Java 存储过程,以及两种在 DB2 中部署 Java 存储过程的方法。最后本文介绍了在存储过程开发之中需要注意的一些问题。
|
技术文章 | 2011年 08月 09日 |
| 使用 Antlr 处理文本
Antlr 是一个基于 Java 开发的功能强大的语言识别工具,其主要功能原本是用于识别编程语言,但是当我们遇到一些常规的文本处理工作时,使用 Antlr 做这些工作可能比单纯的使用正则表达式高效、有趣的多。本文将和您一起探讨如何使用 Antlr 完成抽取(Extract)、转换(Translate)和重写(Rewrite)这 3 类常见的文本处理工作。
|
技术文章 | 2011年 08月 08日 |
| 在 Java EE 容器中扩展云特性
在本文中,作者概述了云应用程序和 Java 企业版应用程序的基本特征,比较了他们的相同点和不同点,然后定义了一组策略并提供了一些模式来扩展
Java EE 容器和应用程序,增加一些云的特征,如并行性、灵活性、多租户和安全性。
|
技术文章 | 2011年 08月 03日 |
| 函数式思维: 运用函数式思维,第 2 部分
函数语言和框架可以让运行时来控制繁琐的编码细节,如遍历、并发和状态。但这并不意味着无法在需要的时候收回控制。以函数式思维的一个重要方面是知道放弃多少控制,以及何时放弃。
|
技术文章 | 2011年 08月 03日 |
| Java Web 服务: WS-SecurityPolicy 建模与验证
WS-SecurityPolicy 使您能够在 web services Description Language (WSDL) 服务描述中定义安全性配置。它是一个功能强大的工具,但是它在处理 WS-SecurityPolicy 文档方面并不出色。其中断言结构必须正确才能够生效,而版本名称空间也需要保持一致。在本文中,您将了解到创建 WS-SecurityPolicy 文档时会遇到的常见错误,您也将了解如何在 Java 中进行 WS-Policy 和 WS-SecurityPolicy 建模,以便进行验证和转换。
|
技术文章 | 2011年 08月 01日 |
| Spring Richclient 中的安全认证管理
作为企业级开发框架,Spring Richclient 为我们提供了完善的安全认证管理功能,使我们能够方便构建安全的企业级应用。本文将详细介绍 Spring Richclient 中安全认证管理的实现方式以及使用方法。
|
技术文章 | 2011年 07月 27日 |
| 函数式思维: 以函数式的方式思考,第 1 部分
函数式编程因其生成错误少且产能高而受到越来越多的关注。但是很多开发人员仍然无法理解对于某些类型的任务来说,函数式语言是否更具优势。学习一个新语言的语法并不难,但学习另一种思维方式却比较难。在函数式思维专栏系列的第一部分中,Neal Ford 介绍了一些函数式编程的概念,并探讨了如何在 Java 与 Groovy 中应用。
|
技术文章 | 2011年 07月 25日 |
| Google Guava Collections 使用介绍
Google Guava Collections 是一个对 Java Collections Framework 增强和扩展的一个开源项目。由于它高质量 API 的实现和对 JDK5 特性的充分利用,使得其在 Java 社区受到很高评价。笔者主要介绍它的基本用法和功能特性。
|
技术文章 | 2011年 07月 21日 |
| 非阻塞算法在并发容器中的实现
非阻塞算法在 Java 中的应用越来越广泛 , ConcurrentLinkedQueue 是 java. concurrent 包中基于非阻塞算法实现的并发容器的典范。通过本文,您将了解非阻塞算法的工作原理及其在 ConcurrentLinkedQueue 中的具体实现机制。
|
技术文章 | 2011年 07月 20日 |
| 语言设计者的笔记本: 定量语言设计
对于任何给定编程语言来说,都不缺乏新功能。语言设计者不仅要执行决定许多可能(而且经常不兼容)语言功能接收优先级这一困难任务,而且他们还必须考虑新语言功能与现有功能令人惊讶的交互。语言的进化通常需要在启用新编码模式的优势与破坏现有 “怪异” 代码潜在成本之间进行权衡。在这种情况下,可以使用实际数据量化 “怪异” 代码不寻常的程度,它可以为决策制定方式提供有价值的线索。
|
技术文章 | 2011年 07月 18日 |
| Struts2 内核之我见
本文首先探讨了 Struts2 核心控制器的源码,以帮助解读 Struts2 的工作流程。接着讲解相关外围类。最后对 Struts 的工作流程进行总结。
|
技术文章 | 2011年 07月 13日 |
| 关于 Java 中 finally 语句块的深度辨析
乍看这个题目,是不是有人会问,这个谁不知道啊,大凡熟悉 Java 编程的人都知道 finally 语句块的作用和用法。有什么可深度辨析的呢?事实并非如此,我发现即使写了很多年 Java 程序的人,也不一定能够透彻的理解 finally 语句块。本篇将以生动形象的案例来带您由浅入深的来分析一下这个小小的 finally,希望这篇文章能够让您真正的理解 finally 语句块的本质,至少阅读完本篇文章后,没有觉得浪费了时间。
|
技术文章 | 2011年 07月 13日 |
第 1 - 100 条,共 2103 条 | 下一页 显示内容简介 | 隐藏内容简介 订阅搜索结果 (RSS)