<?xml version="1.0" encoding="UTF-8"?><!-- generator="WordPress/2.6.2" -->
<rss version="0.92">
<channel>
	<title>北京广元顺天科技咨询中心</title>
	<link>http://www.nonetsky.com</link>
	<description>秉承专业技能，汇聚业界精英，致力于提供专业IT行业软件服务、企业信息化咨询以及信息安全服务</description>
	<lastBuildDate>Sun, 31 Jan 2010 01:20:33 +0000</lastBuildDate>
	<docs>http://backend.userland.com/rss092</docs>
	<language>en</language>
	
	<item>
		<title>Oracle调优(入门与提高)</title>
		<description>         在过去的十年中， Oracle 已经成为世界上最专业的数据库之一。对于 IT 专家来说，就是要确保利用 Oracle 的强大特性来提高他们公司的生产力。最有效的方法之一是通过 Oracle 调优。它有大量的调整参数和技术来改进你的 Oracle 数据库的性能。
Oracle 调优是一个复杂的主题。关于调优可以写整整一本书，不过，为了改善 Oracle 数据库的性能，有一些基本的概念是每个 Oracle DBA 都应该遵从的。
　　 在这篇简介中，我们将简要地介绍以下的 Oracle 主题：
　　-- 外部调整：我们应该记住 Oracle 并不是单独运行的。因此我们将查看一下通过调整 Oracle 服务器以得到高的性能。
　　--Row re-sequencing 以减少磁盘 I/O ：我们应该懂得 Oracle 调优最重要的目标是减少 I/O 。
　　--Oracle SQL 调整。 Oracle SQL 调整是 Oracle 调整中最重要的领域之一，只要通过一些简单的 SQL 调优规则就可以大幅度地提升 SQL 语句的性能，这是一点都不奇怪的。
　　-- 调整 Oracle 排序：排序对于 Oracle 性能也是有很大影响的。
　　-- ...</description>
		<link>http://www.nonetsky.com/course/oracle-database/oracletuning.html</link>
			</item>
	<item>
		<title>10个Oracle性能调整的要点：SGA</title>
		<description>十、操作系统优化和使用资源管理器
    1、操作系统优化
    1）概念
    操作系统优化时应该考虑的因素有：内存的使用；Cpu的使用；IO级别；网络流量。各个因素互相影响，正确的优化次序是内存、IO、CPU。
    操作系统使用了虚拟内存的概念，虚拟内存使每个应用感觉自己是使用内存的唯一的应用，每个应用都看到地址从0开始的单独的一块内存，虚拟内存被分成4K或8K的page，操作系统通过MMU（memory management unit）将这些page与物理内存映射起来，这个映射关系通过page table控制。
    Raw device是没有文件结构或目录结构的磁盘或磁盘分区，由于它忽略了操作系统缓存，在某些情况下可以显著提升性能，但是在windows NT下，由于操作系统IO操作本身不使用文件系统缓存，所以raw device不能显示性能上的优点。

    2）Guideline
    CPU的最高使用率：90％；
    OS/USER进程数之比：40/60；
    各个CPU的负载应该大致均衡。

    3）服务器安全性检查
    A、检查UNIX系统用户口令
    检查：/etc/passwd、/etc/shadow，UNIX密码采用了shadow机制，安全性能高
    建议：参考UNIX命令passwd，修改/etc/default/passwd文件的某些设置如MAXWEEKS、MINWEEKS、PASSLENGTH使口令修改更加合理化。
    建议：定期更改UNIX系统的如下用户口令：
    root、oraprod、applprod、appprod

    B、检查 Remote Login
    启动了rlogin，服务器数据库a、数据库b、数据库c，终端console1、console2、console3及T3形成相互非常信任的关系，用户只要拥有一个服务器的超级权限就可以rlogin到.rhosts指明的任一主机而无需要口令。
    建议：非常不安全，参考UNIX命令rlogin和/目录下的文件.rhosts。在正式环境服务器和测试环境服务器之间不要建立这种远程信任的机制。

    C、检查FTP服务
    检查可以FTP到服务器的用户（/etc/ftpusers），注释了root用户，就是说用户可以用root权限FTP到服务器上。权限太大。
    ...</description>
		<link>http://www.nonetsky.com/course/oracle-database/oraclesg.html</link>
			</item>
	<item>
		<title>db2读稳定性隔离级别</title>
		<description> </description>
		<link>http://www.nonetsky.com/course/db2-course/gelijibie.html</link>
			</item>
	<item>
		<title>db2读稳定性隔离级别</title>
		<description>读稳定性隔离级别

读稳定性隔离级别没有可重复读隔离级别那么严格；因此，它没有将事务与其他并发事务的效果完全隔离。读稳定性隔离级别可以防止脏读和不可重复的读，但是可能出现幻像。在使用这个隔离级别时，只锁定事务实际检索和修改的行。因此，如果一个事务扫描了 1000 行，但只检索 10 行，则只有被检索的 10 行（而不是所扫描的 1000 行）被锁定。因此，如果在同一个事务中发出同一个 SELECT 语句两次或更多次，那么每次产生的结果数据集可能不同。

与可重复读隔离级别一样，在读稳定性隔离级别下运行的事务可以检索一个行集，并可以对它们执行任意操作，直到事务终止。在这个事务存在期间，其他事务不能执行那些会影响这个事务检索到的行集的更新或删除操作；但是其他事务可以执行插入操作。如果插入的行与第一个事务的查询的选择条件匹配，那么这些行可能作为幻像出现在后续产生的结果数据集中。其他事务对其他行所做的更改，在提交之前是不可见的。

那么，读稳定性隔离级别会如何影响旅馆预订应用程序的工作方式呢？当一个顾客检索某个日期段内的所有可用房间列表时，您可以更改这个顾客的列表之外的任何房间的房价。同样，其他顾客可以进行或取消房间预订，如果第一个顾客再次运行同样的查询，其他顾客的操作可能会影响他获得的可用房间列表。如果第一个顾客再次查询同一个日期段内的所有可用房间列表，产生的列表中有可能包含新的房价或第一次产生列表时不可用的房间。 </description>
		<link>http://www.nonetsky.com/course/db2-course/readstability.html</link>
			</item>
	<item>
		<title>db2可重复读隔离级别</title>
		<description>可重复读隔离级别是最严格的隔离级别。在使用它时，一个事务的影响完全与其他并发事务隔离：脏读、不可重复的读、幻像都不会发生。当使用可重复的读隔离级别时，在事务执行期间锁定该事务以任何方式 引用的所有行。因此，如果在同一个事务中发出同一个 SELECT 语句两次或更多次，那么产生的结果数据集总是相同的。因此，使用可重复的读隔离级别的事务可以多次检索同一行集，并可以对它们执行任意操作，直到由提交或回滚操作终止事务。但是，在事务存在期间，不允许其他事务执行会影响这个事务正在访问的任何行的插入、更新或删除操作。为了确保这种行为，锁定该事务所引用的每一行 —— 而不是仅锁定被实际检索或修改的那些行。因此，如果一个事务扫描了 1000 行，但只检索 10 行，则所扫描的 1000 行（而不仅是被检索的 10 行）都会被锁定。

那么在现实环境中可重复读隔离级别是如何工作的呢？假定您使用 DB2 数据库跟踪旅馆记录，包括房间预订和房价信息，还有一个基于 Web 的应用程序，它允许顾客按 “先到先服务” 的原则预订房间。如果旅馆预订应用程序是在可重复读隔离级别下运行的，当顾客扫描某个日期段内的可用房间列表时，您（旅馆经理）将无法更改那些房间在指定日期范围内的房价。同样，其他顾客也无法进行或取消将会更改该列表的预订（直到第一个顾客的事务终止为止）。但是，对于生成第一个顾客的列表时没有读取的任何房间记录，您可以修改房价。同样，其他顾客也可以进行或取消这些房间的预订。 </description>
		<link>http://www.nonetsky.com/course/db2-course/repeatableread.html</link>
			</item>
	<item>
		<title>并发性和隔离级别</title>
		<description>并发性和隔离级别

当多个用户访问同一数据库时会发生的现象

在单用户环境中，每个事务都是顺序执行的，而不会遇到与其他事务的冲突。但是，在多用户环境下，多个事务可以（而且常常）同时执行。因此每个事务都有可能与其他正在运行的事务发生冲突。有可能与其他事务发生冲突的事务称为交错的 或并行的 事务，而相互隔离的事务称为串行化 事务，这意味着同时运行它们的结果与一个接一个连续地运行它们的结果没有区别。在多用户环境下，在使用并行事务时，会发生四种现象：

	丢失更新：这种情况发生在两个事务读取并尝试更新同一数据时，其中一个更新会丢失。例如：事务 1 和事务 2 读取同一行数据，并都根据所读取的数据计算出该行的新值。如果事务 1 用它的新值更新该行以后，事务 2 又更新了同一行，则事务 1 所执行的更新操作就丢失了。由于设计 DB2 的方法，DB2 不允许发生此类现象。
	脏读：当事务读取尚未提交的数据时，就会发生这种情况。例如：事务 1 更改了一行数据，而事务 2 在事务 1 提交更改之前读取了已更改的行。如果事务 1 回滚该更改，则事务 2 就会读取被认为是不曾存在的数据。
	不可重复的读：当一个事务两次读取同一行数据，但每次获得不同的数据值时，就会发生这种情况。例如：事务 1 读取了一行数据，而事务 2 在更改或删除该行后提交了更改。当事务 1 尝试再次读取该行时，它会检索到不同的数据值（如果该行已经被更新的话），或发现该行不复存在了（如果该行被删除的话）。
	幻像：当最初没有看到某个与搜索条件匹配的数据行，而在稍后的读操作中又看到该行时，就会发生这种情况。例如：事务 1 读取满足某个搜索条件的一组数据行，而事务 2 插入了与事务 1 的搜索条件匹配的新行。如果事务 1 再次执行产生原先行集的查询，就会检索到不同的行集。

维护数据库的一致性和数据完整性，同时又允许多个应用程序同时访问同一数据，这样的特性称为并发性。DB2 数据库用来尝试强制实施并发性的方法之一是通过使用隔离级别，它决定在第一个事务访问数据时，如何对其他事务锁定或隔离该事务所使用的数据。DB2 使用下列隔离级别来强制实施并发性：

	可重复的读（Repeatable Read）
	读稳定性（Read Stability）
	游标稳定性（Cursor Stability）
	未提交的读（Uncommitted Read）

可重复的读隔离级别可以防止所有现象，但是会大大降低并发性的程度（可以同时访问同一资源的事务数量）。未提交的读隔离级别提供了最大的并发性，但是后三种现象都可能出现。 </description>
		<link>http://www.nonetsky.com/course/db2-course/isolation.html</link>
			</item>
	<item>
		<title>数据库事务</title>
		<description>什么是数据一致性？回答这个问题的最佳方法是通过研究示例。假定您的公司拥有多家连锁饭店，公司用一个数据库来跟踪每家饭店中的货物存储量。为了使货物采购过程更方便，数据库包含每个连锁店的库存表。每当一家饭店收到或用掉一部分货物时，与该饭店相应的库存表就会被修改以反映库存变化。

现在，假定从一家店调配若干瓶番茄酱到另一家店。为了准确地表示这一次库存调配，调出方饭店表中存储的番茄酱瓶数必须减少，而接收方饭店表中存储的番茄酱瓶数必须增加。如果用户减少了调出方饭店库存表中的番茄酱瓶数，但没有增加接收方库存表中的番茄酱瓶数，则数据就会变得不一致。此时所有连锁店的番茄酱的总瓶数不再准确了。

如果用户忘记了进行所有必要的更改（正如在前面的示例中一样），或者如果在用户进行更改的过程中系统崩溃了，又或者如果数据库应用程序由于某种原因过早地停止了，数据库中的数据都会变得不一致。当几个用户同时访问相同的数据库表时，也可能发生不一致。为了防止数据的不一致（尤其是在多用户环境中），DB2 的设计中集成了下列数据一致性支持机制：

	事务
	隔离级别
	锁

事务和事务边界

事务（也称为工作单元）是一种将一个或多个 SQL 操作组合成一个单元的可恢复操作序列，通常位于应用程序进程中。事务的启动和终止定义了数据库一致性点；要么将一个事务中执行的所有 SQL 操作的结果都应用于数据库（提交），要么完全取消并丢弃已执行的所有 SQL 操作的结果（回滚）。

使用从 Command Center、Script Center 或 Command Line Processor 运行的嵌入式 SQL 应用程序和脚本，在可执行 SQL 语句第一次执行时（在建立与数据库的连接之后或在现有事务终止之后），事务就会自动启动。在启动事务之后，必须由启动事务的用户或应用程序显式地终止它，除非使用了称为自动提交（automatic commit） 的过程（在这种情况下，发出的每个单独的 SQL 语句被看作单个事务，它一执行就隐式地提交了）。

在大多数情况下，通过执行 COMMIT 或 ROLLBACK 语句来终止事务。当执行 COMMIT 语句时，自从事务启动以来对数据库所做的一切更改就成为永久性的了 —— 即，它们被写到磁盘。当执行 ROLLBACK 语句时，自从事务启动以来对数据库所做的一切更改都被撤消，而数据库返回到事务开始之前所处的状态。不管是哪种情况，数据库在事务完成时都保证能回到一致状态。

一定要注意一点：虽然事务通过确保对数据的更改仅在事务被成功提交之后才成为永久性的，从而提供了一般的数据库一致性，但还是需要用户或应用程序来确保每个事务中执行的 SQL 操作序列始终会导致一致的数据库。 </description>
		<link>http://www.nonetsky.com/course/db2-course/transaction.html</link>
			</item>
	<item>
		<title>13种J2EE的核心技术</title>
		<description>

 

Java最初是在浏览器和客户端机器中粉墨登场的。当时，很多人质疑它是否适合做服务器端的开发。现在，随着对Java2平台企业版（J2EE）第三方支持的增多，Java被广泛接纳为开发企业级服务器端解决方案的首选平台之一。

J2EE平台由一整套服务（Services）、应用程序接口（APIs）和协议构成，它对开发基于Web的多层应用提供了功能支持。

在本文中我将解释支撑J2EE的13种核心技术：JDBC, JNDI, EJBs, RMI, JSP, Java servlets, XML, JMS, Java IDL, JTS, JTA, JavaMail 和 JAF，同时还将描述在何时、何处需要使用这些技术。当然，我还要介绍这些不同的技术之间是如何交互的。

此外，为了让您更好地感受J2EE的真实应用，我将在WebLogic应用服务器,来自BEA Systems公司的一种广为应用的产品环境下来介绍这些技术。不论对于WebLogic应用服务器和J2EE的新手，还是那些想了解J2EE能带来什么好处的项目管理者和系统分析员，相信本文一定很有参考价值。

宏观印象: 分布式结构和J2EE

过去，二层化应用 -- 通常被称为client/server应用 -- 是大家谈论的最多的。在很多情况下，服务器提供的惟一服务就是数据库服务。在这种解决方案中，客户端程序负责数据访问、实现业务逻辑、用合适的样式显示结果、弹出预设的用户界面、接受用户输入等。client/server结构通常在第一次部署的时候比较容易，但难于升级或改进，而且经常基于某种专有的协议，通常是某种数据库协议。它使得重用业务逻辑和界面逻辑非常困难。更重要的是，在Web时代，二层化应用通常不能体现出很好的伸缩性，因而很难适应Internet的要求。

Sun设计J2EE的部分起因就是想解决二层化结构的缺陷。于是，J2EE定义了一套标准来简化N层企业级应用的开发。它定义了一套标准化的组件，并为这些组件提供了完整的服务。J2EE还自动为应用程序处理了很多实现细节，如安全、多线程等。

用J2EE开发N层应用包括将二层化结构中的不同层面切分成许多层。一个N层化应用A能够为以下的每种服务提供一个分开的层：

显示：在一个典型的Web应用中，客户端机器上运行的浏览器负责实现用户界面。

动态生成显示: 尽管浏览器可以完成某些动态内容显示，但为了兼容不同的浏览器，这些动态生成工作应该放在Web服务器端进行，使用JSP、Servlets，或者XML（可扩展标记语言）和（可扩展样式表语言）。

业务逻辑：业务逻辑适合用Session EJBs（后面将介绍）来实现。

数据访问：数据访问适合用Entity EJBs（后面将介绍）和JDBC来实现。

后台系统集成: 同后台系统的集成可能需要用到许多不同的技术，至于何种最佳需要根据后台系统的特征而定。

您可能开始诧异：为什么有这么多的层？事实上，多层方式可以使企业级应用具有很强的伸缩性，它允许每层专注于特定的角色。例如，让Web服务器负责提供页面，应用服务器处理应用逻辑，而数据库服务器提供数据库服务。

由于J2EE建立在Java2平台标准版（J2SE）的基础上，所以具备了J2SE的所有优点和功能。包括“编写一次，到处可用”的可移植性、通过JDBC访问数据库、同原有企业资源进行交互的CORBA技术，以及一个经过验证的安全模型。在这些基础上，J2EE又增加了对EJB（企业级Java组件）、Java servlets、Java服务器页面（JSPs）和XML技术的支持。

分布式结构与WebLogic应用服务器

J2EE提供了一个框架--一套标准API--用于开发分布式结构的应用，这个框架的实际实现留给了第三方厂商。部分厂商只是专注于整个J2EE架构中的的特定组件，例如Apache的Tomcat提供了对JSP和servlets的支持，BEA系统公司则通过其WebLogic应用服务器产品为整个J2EE规范提供了一个较为完整的实现。

WebLogic服务器已使建立和部署伸缩性较好的分布式应用的过程大为简化。WebLogic和J2EE代你处理了大量常规的编程任务，包括提供事务服务、安全领域、可靠的消息、名字和目录服务、数据库访问和连接池、线程池、负载平衡和容错处理等。

通过以一种标准、易用的方式提供这些公共服务，象WebLogic服务器这样的产品造就了具有更好伸缩性和可维护性的应用系统，使其为大量的用户提供了增长的可用性。

J2EE技术

在接下来的部分里，我们将描述构成J2EE的各种技术，并且了解WebLogic服务器是如何在一个分布式应用中对它们进行支持的。最常用的J2EE技术应该是JDBC、JNDI、EJB、JSP和servlets，对这些我们将作更仔细的考察。

Java Database Connectivity (JDBC)

JDBC API以一种统一的方式来对各种各样的数据库进行存取。和ODBC一样，JDBC为开发人员隐藏了不同数据库的不同特性。另外，由于JDBC建立在Java的基础上,因此还提供了数据库存取的平台独立性。

JDBC定义了4种不同的驱动程序，现分述如下：

类型 1: JDBC-ODBC Bridge

在JDBC出现的初期，JDBC-ODBC桥显然是非常有实用意义的，通过JDBC-ODBC桥，开发人员可以使用JDBC来存取ODBC数据源。不足的是，他需要在客户端安装ODBC驱动程序，换句话说，必须安装Microsoft Windows的某个版本。使用这一类型你需要牺牲JDBC的平台独立性。另外，ODBC驱动程序还需要具有客户端的控制权限。

类型 2: JDBC-native driver bridge

JDBC本地驱动程序桥提供了一种JDBC接口，它建立在本地数据库驱动程序的顶层，而不需要使用ODBC。 JDBC驱动程序将对数据库的API从标准的JDBC调用转换为本地调用。使用此类型需要牺牲JDBC的平台独立性，还要求在客户端安装一些本地代码。

类型 3: JDBC-network bridge

JDBC网络桥驱动程序不再需要客户端数据库驱动程序。它使用网络上的中间服务器来存取数据库。这种应用使得以下技术的实现有了可能，这些技术包括负载均衡、连接缓冲池和数据缓存等。由于第3种类型往往只需要相对更少的下载时间，具有平台独立性，而且不需要在客户端安装并取得控制权，所以很适合于Internet上的应用。

类型 4: Pure Java driver

第4种类型通过使用一个纯Java数据库驱动程序来执行数据库的直接访问。此类型实际上在客户端实现了2层结构。要在N-层结构中应用，一个更好的做法是编写一个EJB，让它包含存取代码并提供一个对客户端具有数据库独立性的服务。

WebLogic服务器为一些通常的数据库提供了JDBC驱动程序，包括Oracle, Sybase, Microsoft SQL ...</description>
		<link>http://www.nonetsky.com/course/j2ee-middleware/13-j2ee-tech.html</link>
			</item>
	<item>
		<title>J2EE开发入门技术</title>
		<description>一、J2EE的概念

　　目前，Java 2平台有3个版本，它们是适用于小型设备和智能卡的Java 2平台Micro版(Java 2 Platform Micro Edition，J2ME)、适用于桌面系统的Java 2平台标准版(Java 2 Platform Standard Edition，J2SE)、适用于创建服务器应用程序和服务的Java2平台企业版(Java 2 Platform EntERPrise Edition，J2EE)。

　　J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java 2平台的标准版，J2EE不仅巩固了标准版中的许多优点，例如“编写一次、随处运行”的特性、方便存取数据库的JDBC API、CORBA技术以及能够在Internet应用中保护数据的安全模式等等，同时还提供了对 EJB(Enterprise JavaBeans)、Java Servlets API、JSP(Java Server Pages)以及XML技术的全面支持。其最终目的就是成为一个能够使企业开发者大幅缩短投放市场时间的 体系结构。

　　J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用的需求。通过提供统一的开发平台，J2EE降低了开发多层应用的费用和复杂性，同时提供对现有应用程序集成强有力支持，完全支持Enterprise JavaBeans，有良好的向导支持打包和部署应用，添加目录支持，增强了安全机制，提高了性能。

　　二、J2EE的优势

　　J2EE为搭建具有可伸缩性、灵活性、易维护性的商务系统提供了良好的机制：

　　保留现存的IT资产： 由于企业必须适应新的商业需求，利用已有的企业信息系统方面的投资，而不是重新制定全盘方案就变得很重要。这样，一个以渐进的(而不是激进的，全盘否定的)方式建立在已有系统之上的服务器端平台机制是公司所需求的。J2EE架构可以充分利用用户原有的投资，如一些公司使用的BEA Tuxedo、IBM CICS, IBM Encina,、Inprise VisiBroker 以及Netscape Application Server。这之所以成为可能是因为J2EE拥有广泛的业界支持和一些重要的´企业计算´领域供应商的参与。每一个供应商都对现有的客户提供了不用废弃已有投资，进入可移植的J2EE领域的升级途径。由于基于J2EE平台的产品几乎能够在任何操作系统和硬件配置上运行，现有的操作系统和硬件也能被保留使用。

　　高效的开发：J2EE允许公司把一些通用的、很繁琐的服务端任务交给中间件供应商去完成。这样开发人员可以集中精力在如何创建商业逻辑上，相应地缩短了开发时间。高级中间件供应商提供以下这些复杂的中间件服务：

	　　状态管理服务

　　让开发人员写更少的代码，不用关心如何管理状态，这样能够更快地完成程序开发。

	　　持续性服务

　　让开发人员不用对数据访问逻辑进行编码就能编写应用程序，能生成更轻巧，与数据库无关的应用程序，这种应用程序更易于开发与维护。分布式共享数据对象CACHE服务 -- 让开发人员编制高性能的系统，极大提高整体部署的伸缩性。

　　支持异构环境：J2EE能够开发部署在异构环境中的可移植程序。基于J2EE的应用程序不依赖任何特定操作系统、中间件、硬件。因此设计合理的基于J2EE的程序只需开发一次就可部署到各种平台。这在典型的异构企业计算环境中是十分关键的。J2EE标准也允许客户订购与J2EE兼容的第三方的现成的组件，把他们部署到异构环境中，节省了由自己制订整个方案所需的费用。

　　可伸缩性：企业必须要选择一种服务器端平台，这种平台应能提供极佳的可伸缩性去满足那些在他们系统上进行商业运作的大批新客户。基于J2EE平台的应用程序可被部署到各种操作系统上。例如可被部署到高端UNIX与大型机系统，这种系统单机可支持64至256个处理器。(这是NT服务器所望尘莫及的)J2EE领域的供应商提供了更为广泛的负载平衡策略。能消除系统中的瓶颈，允许多台服务器集成部署。这种部署可达数千个处理器，实现可高度伸缩的系统，满足未来商业应用的需要。

　　稳定的可用性：一个服务器端平台必须能全天候运转以满足公司客户、合作伙伴的需要。因为INTERNET是全球化的、无处不在的，即使在夜间按计划停机也可能造成严重损失。若是意外停机，那会有灾难性后果。J2EE部署到可靠的操作环境中，他们支持长期的可用性。一些J2EE部署在Windows环境中，客户也可选择健壮性能更好的操作系统如Sun Solaris、IBM OS/390。最健壮的操作系统可达到99.999%的可用性或每年只需5分钟停机时间。这是实时性很强商业系统理想的选择。

　　三、J2EE 的四层模型

　　J2EE使用多层的分布式应用模型，应用逻辑按功能划分为组件，各个应用组件根据他们所在的层分布在不同的机器上。事实上，sun设计J2EE的初衷正是为了解决两层模式(client/server)的弊端，在传统模式中，客户端担当了过多的角色而显得臃肿，在这种模式中，第一次部署的时候比较容易，但难于升级或改进，可伸展性也不理想，而且经常基于某种专有的协议?D?D通常是某种数据库协议。它使得重用业务逻辑和界面逻辑非常困难。现在J2EE 的多层企业级应用模型将两层化模型中的不同层面切分成许多层。一个多层化应用能够为不同的每种服务提供一个独立的层，以下是 J2EE 典型的四层结构：

	　　运行在客户端机器上的客户层组件
	　　运行在J2EE服务器上的Web层组件
	　　运行在J2EE服务器上的业务逻辑层组件
	　　运行在EIS服务器上的企业信息系统(EntERPrise information system)层软件

　　J2EE应用程序组件

　　J2EE应用程序是由组件构成的.J2EE组件是具有独立功能的软件单元，它们通过相关的类和文件组装成J2EE应用程序，并与其他组件交互。J2EE说明书中定义了以下的J2EE组件：

	　　应用客户端程序和Applets是客户层组件。
	　　Java Servlet和JavaServer Pages(JSP)是web层组件。
	　　Enterprise JavaBeans(EJB)是业务层组件。

　　客户层组件

　　J2EE应用程序可以是基于web方式的,也可以是基于传统方式的.

　　web 层组件J2EE ...</description>
		<link>http://www.nonetsky.com/course/j2ee-middleware/j2ee-gateway.html</link>
			</item>
	<item>
		<title>Oracle数据库清除奇怪表名的方法</title>
		<description>    Oracle 10g 中出现表名：BIN$2cMp4FjwQ2Cw3Lj+BxLYTw==$0 最近发现Oracle数据库中出现了这些奇怪的表名，上网查找后发现是oracle10g的回收站功能，并没有彻底的删除表，而是把表放入回收站，最后就出现了这样一堆奇怪的表名……

    清除的方法如下：

    purge table origenal_tableName；

    purge index origenal_indexName；

    查询垃圾信息，可以用如下SQL语句：

    SELECT t.object_name，t.type ，t.original_name FROM user_recyclebin t；

    现在发现，原来还有这个命令：

    PURGE recyclebin；

    根本用不了上面那么复杂。呵呵！

    另：删除Table不进入Recycle的方法：

    drop table tableName purge； </description>
		<link>http://www.nonetsky.com/course/oracle-database/oracle-clear-tablename.html</link>
			</item>
</channel>
</rss>
