几 种 构 件 模 型 的 比 较 分 析
刘 江 宁-- 吴 泉 源-- 周 立
---- 软 件 构 件 模 型 是 关 于 开 发 可 重 用 软 件 构 件 和 构 件 之 间 相 互 通 信 的 一 组 标 准 的 描 述。 通 过 重 用 已 有 的 软 构 件, 使 用 构 件 对 象 模 型 的 软 件 开 发 者 可 以 像 搭 积 木 一 样 快 速 构 造 应 用 程 序。 这 样 不 仅 可 以 节 省 时 间 和 经 费, 提 高 工 作 效 率, 而 且 可 以 产 生 更 加 规 范、 更 加 可 靠 的 应 用 软 件。
---- 软 件 构 件 应 该 具 备 以 下 几 个 特 征:
----· 自 描 述 构 件 必 须 能 够 识 别 其 属 性、 存 取 方 法 和 事 件, 这 些 信 息 可 以 使 开 发 环 境 将 第 三 方 软 件 构 件 无 缝 地 结 合 起 来;
---- · 可 定 制 提 供 一 个 典 型 的 图 形 方 式 环 境, 软 件 构 件 的 属 性 只 能 通 过 控 制 面 板 来 设 置;
---- ·可 集 成 构 件 必 须 可 以 被 编 程 语 言 直 接 控 制。 构 件 也 可 以 和 脚 本 语 言 连 接 或 者 与 从 代 码 级 访 问 构 件 的 环 境 连 接, 这 个 特 性 使 得 软 件 构 件 可 以 在 非 可 视 化 开 发 项 目 中 使 用;
---- · 连 接 机 制 构 件 必 须 能 产 生 事 件 或 者 具 有 让 程 序 员 从 语 义 上 实 现 相 互 连 接 的 其 他 机 制。 这 意 味 着 程 序 员 可 以 很 容 易 地 向 按 钮 添 加 代 码, 使 点 中 按 钮 就 可 以 影 响 其 他 构 件 的 动 作。
---- 构 件 模 型 是 为 开 发 者 定 义 软 件 构 件 而 建 立 的 体 系 结 构 和API 集, 使 开 发 者 可 通 过 软 件 构 件 的 动 态 组 合 来 建 立 应 用 系 统。 构 件 模 型 由 构 件 与 容 器 两 种 主 要 成 份 构 成。 构 件 是 具 有 可 重 用 特 性 的 基 本 软 件 部 件。 容 器 用 于 存 放 和 安 排 构 件, 实 现 构 件 间 的 交 互。 容 器 也 可 以 作 为 另 一 个 容 器 的 构 件 使 用。
----本 文 对CORBA、DCOM 和Java 等 三 种 典 型 的 构 件 模 型 做 出 了 比 较 分 析。
CORBA 构 件 模 型 的 底 层 结 构 为ORB。 一 个CORBA 构 件 采 用IDL 进 行 描 述。CORBA 提 供 了IDL 到C、C + +、Java、 COBOL 等 语 言 的 映 射 机 制--IDL 编 译 器。IDL 编 译 器 可 以 生 成Server 方 的Skelton 和Client 方 的Stub 代 码, 通 过 分 别 与 客 户 端 和 服 务 端 程 序 的 联 编, 即 可 得 到 相 应 的Server 和Client 程 序。
---- CORBA 同 时 提 供 了 一 系 列 的 公 共 服 务 规 范--COSS, 其 中 包 括 名 字 服 务、 永 久 对 象 服 务、 生 命 周 期 服 务、 事 务 处 理 服 务、 对 象 事 件 服 务 和 安 全 服 务 等, 它 们 相 当 于 一 类 用 于 企 业 级 计 算 的 公 共 构 件。 此 外,CORBA 还 针 对 电 信、 石 油 等 典 型 的 应 用 行 业 提 供 了 一 系 列 的 公 共 设 施。
---- CORBA 是 一 种 语 言 中 性 的 软 件 构 件 模 型, 可 以 跨 越 不 同 的 网 络、 不 同 的 机 器 和 不 同 的 操 作 系 统, 实 现 分 布 对 象 之 间 的 互 操 作。
DCOM 是Microsoft 与 其 他 业 界 厂 商 合 作 提 出 的 一 种 分 布 构 件 对 象 模 型(Distributed Component Object Model), 其 发 展 经 历 了 一 个 相 当 曲 折 的 过 程。DCOM 起 源 于 动 态 数 据 交 换(DDE) 技 术, 通 过 剪 切/ 粘 贴(Cut/Paste) 实 现 两 个 应 用 程 序 之 间 共 享 数 据 的 动 态 交 换。 对 象 连 接 与 嵌 入OLE 就 是 从DDE 引 伸 而 来 的。
---- 随 后,Microsoft 引 入 了 构 件 对 象 模 型 COM, 形 成 了COM 对 象 之 间 实 现 互 操 作 的 二 进 制 标 准。COM 规 定 了 对 象 模 型 和 编 程 要 求, 使COM 对 象 可 以 与 其 他 对 象 相 互 操 作。 这 些 对 象 可 以 用 不 同 的 语 言 实 现, 其 结 构 也 可 以 不 同。 基 于COM, 微 软 进 一 步 将OLE 技 术 发 展 到OLE2。 其 中,COM 实 现 了OLE 对 象 之 间 的 底 层 通 信 工 作, 其 作 用 类 似 于CORBA/ORB。 不 过 此 时 的COM 只 能 作 用 在 单 机Wintel 平 台 上。 在OLE2 中, 也 出 现 了 我 们 今 天 熟 知 的 拖- 放 技 术 以 及OLE 自 动 化。
---- 同 时, 微 软 在VB 中 引 入 了 可 以 嵌 入 任 何 可 视 构 件 的 通 用 模 型VBX。VBX 的 主 要 局 限 在 于 它 并 不 是 一 个 开 放 的 结 构, 也 没 有 为 第 三 方 软 件 开 发 商 提 供VBX 集 成 的 标 准。 最 后, 微 软 将 上 述 思 想 集 中 在 一 起, 以COM 作 为 构 件 通 信 框 架。 VBX 也 发 展 为OLE 控 件OCX 的 形 式。DCOM 是COM 在 分 布 计 算 方 面 的 自 然 延 续, 它 为 分 布 在 网 络 不 同 节 点 的 两 个COM 构 件 提 供 了 互 操 作 的 基 础 结 构, 而 所 有 以OLE 为 标 志 的 技 术 如 今 也 已 挂 上 了 ActiveX 标 志。
---- 从CORBA 的 观 点 来 看, 我 们 可 以 粗 略 地 说,ActiveX 控 件 与DCOM 的 关 系 相 当 于CORBA 构 件 与ORB 的 关 系。 当 然, 按 照 微 软 一 贯 的 产 品 开 发 逻 辑, 微 妙 的 思 想 都 退 到 了 幕 后, 而 提 供 给 开 发 者 的 是 一 个 以Wizard 方 式 生 成 各 种 应 用 的 可 视 化 开 发 环 境。 在 公 共 服 务 方 面, 微 软 提 出 了 自 己 的 事 务 服 务 器 MTS(Microsoft Transaction Server) 和 消 息 队 列 服 务 器MSMQ(Microsoft Message Queue Server)。 前 者 与CORBA 对 象 事 务 服 务 目 标 类 似, 后 者 则 是 为 了 保 证 应 用 之 间 进 行 可 靠 的 消 息 通 讯 和 管 理。 此 外, 微 软 在 网 络 安 全 方 面 也 有 一 整 套 实 用 的 解 决 方 案。
按 照Sun 和Javasoft 对Java 的 界 定,Java 是 一 个 应 用 程 序 开 发 平 台, 它 按 照 高 性 能、 可 移 植、 可 解 释 的 原 则, 提 供 面 向 对 象 的 编 程 语 言 和 运 行 环 境。Java 计 算 的 本 质 就 是 利 用 分 布 在 网 络 中 的 各 类 对 象 共 同 完 成 相 应 的 任 务。 例 如Java Applet 可 按 用 户 的 需 求 从 服 务 器 上 动 态 地 下 载 到 客 户 机 的 浏 览 器 上, 完 成HTML 页 面 的 动 态 变 化。
---- Java 对 于 软 件 构 件 的 观 点 与CORBA 中 的 构 件 观 点 存 在 一 定 的 区 别。 在CORBA 中,CORBA/ORB 相 当 于 一 根 软 总 线, 构 件 可 以 即 插 即 用。 也 就 是 说, 从CORBA 的 观 点 看 来, 所 有 构 件 的 地 位 相 当, 完 全 是 一 种 平 行 的 关 系。 而 在Java 中, 软 件 构 件 是 能 够 进 行 可 视 化 操 作 的 可 重 用 软 件, 它 满 足 一 定 的 特 征 要 求, 并 可 以 根 据 需 要 进 行 定 制 和 组 装。
---- Java 的 软 件 构 件 称 为JavaBean, 或 者 简 称 Bean。 按 照Javasoft 给 出 的 定 义,Bean 是 能 够 在 构 造 工 具 中 进 行 可 视 化 操 作 的 可 重 用 软 件。JavaBean 的 组 件 模 型 包 含 组 件 和 容 器 两 个 基 本 要 素, 这 一 思 想 在ActiveX/DCOM 技 术 中 同 样 存 在。 作 为 一 种 典 型 的 组 件 模 型,JavaBean 具 有 属 性、 方 法、 事 件、 自 我 检 查、 定 制 和 永 久 性 等6 个 方 面 的 特 征。 其 中 前3 种 特 征( 属 性、 方 法、 事 件) 是 面 向 对 象 的 组 件 必 须 满 足 的 基 本 要 求, 属 性 和 方 法 保 证Bean 成 为 一 个 对 象, 而 事 件 可 以 描 述 组 件 之 间 的 相 互 作 用 以 及 组 件 与 容 器 之 间 相 互 感 兴 趣 的 事 情。 通 过 事 件 的 生 成、 传 播 和 处 理, 构 件 相 互 之 间 关 联 在 一 起, 共 同 完 成 复 杂 的 任 务。 后 三 种 特 征( 自 我 检 查、 定 制 和 永 久 性) 主 要 侧 重 于 对JavaBeans 组 件 性 质 的 刻 画。 内 省 用 于 暴 露 与 发 现 构 件 接 口。 使 用 内 省 机 制, 可 以 使 构 件 的 使 用 者 了 解 到 构 件 的 属 性、 方 法 和 事 件。 由 于 一 个 构 件 通 常 是 具 有 一 定 性 质 和 行 为 的 对 象 的 抽 象, 它 往 往 有 很 大 的 通 用 性。 为 了 在 一 个 具 体 的 应 用 环 境 中 使 用 构 件, 必 须 对 构 件 进 行 定 制。JavaBean 的 定 制 通 常 在 一 个 可 视 化 生 成 工 具 中 进 行, 通 过 构 件 的 内 省 机 制, 发 现 构 件 的 属 性、 方 法 和 事 件, 然 后 利 用 生 成 工 具 提 供 的 属 性 编 辑 器 实 现 定 制。 永 久 性 是 将 构 件 的 状 态 保 存 在 永 久 存 储 器 中 并 能 够 一 致 恢 复 的 机 制。Java 通 过 序 列 化(Serialize) 实 现 定 制 构 件 的 永 久 性 存 储, 通 过 反 序 列 化 可 以 实 现 构 件 状 态 的 恢 复。
---- JavaBean 构 件 的 本 地 活 动 是 在 与 其 容 器 相 同 的 地 址 空 间 内 进 行 的。 在 网 络 上,JavaBean 构 件 可 以 以 三 种 方 式 进 行 活 动:

图1 Java 三 种 网 络 访 问 机 制
---- 远 程 方 法 调 用 机 制RMI 是 构 成Java 分 布 对 象 模 型 的 基 础 结 构。RMI 系 统 包 括 桩/ 框 架 层、 远 程 引 用 层 和 传 输 层。 目 前,RMI 的 传 输 层 是 基 于TCP 实 现 的, 将 来 的RMI 体 系 结 构 建 立 在IIOP 协 议 之 上, 可 以 实 现Java 技 术 与CORBA 技 术 的 深 层 融 合。 应 用 层 建 立 在RMI 系 统 之 上。 图2 给 出 了 各 层 之 间 的 关 系。

图2 RMI 系 统 中 各 层 之 间 的 关 系
---- 最 近 两 年,Java 又 提 出 了 企 业JavaBean (EJB) 的 思 想, 其 结 构 完 全 采 用 基 于 软 件 构 件 模 型 的 分 布 对 象 计 算 体 系, 如 图3 所 示。

图3 企 业JavaBeans 结 构
---- 企 业JavaBean 各 组 成 部 分 的 含 义 为:
---- 用CORBA 的 观 点 来 看, 企 业JavaBean 中 包 括 了 分 布 构 件 的 基 础 结 构, 也 包 括 了 各 类 公 共 服 务 构 件。 并 且 由 于Java 与 生 俱 来 的 跨 平 台 性 和 语 言 的 一 致 性, 使 其 成 为 软 件 构 件 模 型 的 一 个 有 力 的 竞 争 者。
下 面, 我 们 从 企 业 计 算 的 角 度 出 发, 对CORBA、DCOM 和Java 三 种 构 件 模 型 进 行 分 析 比 较。 按 照 企 业 计 算 的 要 求, 构 件 模 型 的 比 较 分 析 应 该 依 据 以 下 原 则:
---- · 集 成 性 集 成 性 主 要 反 映 在 基 础 平 台 对 应 用 程 序 互 操 作 能 力 的 支 持 上。 它 要 求 分 布 在 不 同 机 器 平 台 和 操 作 系 统 上、 采 用 不 同 的 语 言 或 者 开 发 工 具 生 成 的 各 类 商 业 应 用 必 须 能 集 成 在 一 起, 构 成 一 个 统 一 的 企 业 计 算 框 架。 这 一 集 成 框 架 必 须 建 立 在 网 络 的 基 础 之 上, 并 且 具 备 对 于 遗 留 应 用 的 集 成 能 力;
----· 可 用 性 要 求 所 采 用 的 软 件 构 件 技 术 必 须 是 成 熟 的 技 术, 相 应 的 产 品 也 必 须 是 成 熟 的 产 品, 在 至 关 重 要 的 企 业 应 用 中 能 够 稳 定、 安 全、 可 靠 地 运 行。 另 外, 由 于 数 据 库 在 企 业 计 算 中 扮 演 着 重 要 角 色, 软 件 构 件 技 术 应 能 与 数 据 库 技 术 紧 密 集 成;
----·可 扩 展 性 集 成 框 架 必 须 是 可 扩 展 的, 能 够 协 调 不 同 的 设 计 模 式 和 实 现 策 略, 可 以 根 据 企 业 计 算 的 需 求 进 行 裁 剪, 并 能 迅 速 反 应 市 场 的 变 化 和 技 术 的 发 展 趋 势。 通 过 保 证 当 前 应 用 的 可 重 用 性, 最 大 程 度 地 保 护 企 业 的 投 资。
---- 这 些 观 点 实 质 上 反 映 了 将 软 件 构 件 技 术 看 作 一 个 黑 箱 时 给 予 企 业IT 经 理 们 的 重 要 观 感。
---- 表1 进 一 步 细 化 了 每 种 原 则 要 求, 并 给 出 了 三 种 软 件 构 件 技 术 的 比 较 结 果。 这 些 数 据 完 全 来 自 经 验, 并 不 代 表 深 入 细 致 的 调 查 结 果。

Java 提 供 了 一 个 概 念 清 晰、 结 构 紧 凑 的 分 布 计 算 模 型 和 构 件 互 操 作 的 方 法, 为 构 件 应 用 开 发 提 供 了 相 当 的 灵 活 性。 但 由 于 它 还 处 于 发 展 时 期, 因 此 其 形 态 很 难 界 定。CORBA 是 一 种 集 成 技 术, 而 不 是 编 程 技 术。 它 提 供 了 对 各 种 功 能 模 块 进 行 构 件 化 处 理 并 将 它 们 捆 绑 在 一 起 的 粘 合 剂。Java 和 CORBA 在 很 大 的 程 度 上 可 以 看 作 是 互 补 的。 为 了 适 应WEB 应 用 的 发 展 要 求, 许 多 软 件 厂 商 都 急 于 促 成CORBA 和Java 技 术 的 结 合, 将 来 的RMI 可 能 建 立 在IIOP 之 上。CORBA 不 只 是 对 象 请 求 代 理ORB, 也 是 一 个 非 常 完 整 的 分 布 式 对 象 平 台。CORBA 可 以 扩 展Java 在 网 络、 语 言、 组 件 边 界、 操 作 系 统 中 的 各 种 应 用。 其 次,Java 也 不 仅 仅 是 与 CORBA 捆 绑 的 语 言, 它 还 是 一 个 易 变 的 对 象 系 统, 也 是 一 个 运 行 对 象 的 便 携 式OS, 而 且 允 许CORBA 对 象 在 主 机、 网 络 计 算 机 和 蜂 窝 电 话 等 应 用 上 运 行。Java 还 简 化 了 大 型CORBA 系 统 中 的 代 码 分 配, 其 中 内 置 的 多 线 程 和 垃 圾 收 集 使 编 写 可 靠 的 网 络 对 象 更 为 方 便。 此 外,Java 能 创 建 可 移 动 对 象 并 将 它 们 分 发 出 去, 而 采 用CORBA 可 以 将 它 们 连 接 在 一 起, 并 与 计 算 环 境 中 的 数 据 库、 遗 留 系 统、 其 他 语 言 编 写 的 对 象 和 应 用 相 互 集 成。
---- CORAB 与Java 的 基 础 结 构 也 可 以 很 好 地 互 补。CORBA 处 理 网 络 透 明 性,Java 处 理 实 现 透 明 性。CORBA 提 供 了 Java 便 携 应 用 环 境 与 对 象 间 的 连 接。 由 此 看 来CORAB/Java 技 术 紧 密 结 合 的 趋 势 是 势 不 可 挡 的。 而 且 二 者 的 结 合 将 成 为ObjectWeb 技 术 的 主 要 形 态。
| EJB-Java服务器端构件模型介绍 | |
| 来自中国学生站 http://www.11baby.com/ | |
1998年3月在SanFrancisco召开的JavaOne98开发者大会上,Sun公司正式发布了业界期待已久的EJB1.0版(EnterpriseJavaBeans1.0)规范说明,在众多的大公司和开发人员中引起了巨大的反应,这标志着用Java开发企业级应用系统将变得非常简单。这次JavaOne大会也被称之为"EJB展览会",许多公司纷纷表示要推出有关EJB的产品,已经推出或正准备推出EJB产品的公司有:IBM、Inprise、Gemstone、Informix、NCR、NetDynamics、Netscape、Novell、Oracle、PersistenceSoftware、Progress、Secant、Sybase、Symantec、Weblogic等。目前,EJB已经成为Java技术研究中的重点。 一、EJB概要 EJB规范说明定义了Java的服务器端构件模型。目前,已有很多可供使用的、由第三方供应商提供的、用于客户端的构件,但用于服务器端的构件还不多。由于服务器端构件缺乏或很难构造,因此基本上每一个开发人员不得不从头开始构造服务器体系结构。EJB方法扩充了Java的客户端构件模型JavaBeans,以支持服务器端应用系统的开发。在EJB规范说明中,服务器中的很多功能由EJB容器提供,开发人员可以集中精力开发应用系统的核心功能。采用EJB技术可以大大减轻开发服务器端应用系统的工作量。因此,EJB规范说明一经发布,立即引起许多开发人员的极大兴趣。 Sun公司发布的文档中对EJB的定义是:EJB是用于开发和部署多层结构的、分布式的、面向对象的Java应用系统的跨平台的构件体系结构。采用EJB可以使开发商业应用系统变得容易,应用系统可以在一个支持EJB的环境中开发,开发完之后部署在其他的环境中,随着需求的改变,应用系统可以不加修改地迁移到其他功能更强、更复杂的服务器上。 EJB简化了多层体系结构应用系统的开发过程。在分布式应用系统的开发中,采用多层体系结构的方法有很多优点,如增加了应用系统的可伸缩性的、可靠性、灵活性等。因为服务器端构件可以根据应用需求迅速地加以修改,且构件在网络中的位置和应用无关,因此系统管理员可以很容易地重新配置系统的负载。多层体系结构非常适合于大数据量的商业事务系统,特别是在基于Web的应用中,需要多层体系结构支持瘦客户机及浏览器的快速Applet下载。目前,越来越多的系统开始采用多层体系结构的方法。 EJB把Java的"Writeonce,runanywhere"思想提到一个新的高度,服务器端构件在构件执行系统内运行,规范说明定义了构件执行系统所需要的服务。遵从EJB规范说明开发的构件可以在任何一个支持EJB的系统中运行。 通过使用RMI,EJB支持远程的客户端存取。RMI是一个高级程序设计接口,它使得服务器的位置对于客户机来说是透明的,RMI产生一个对象,这个对象被安装在客户机系统中,作为存取服务器对象的代理对象,EJB开发人员为每一个可存取的接口定义一个Java远程接口。 通过使用IIOP协议(InternetInter?ORBProtocol),EJB也可以和其他的非Java客户机进行通信。IIOP允许EJB系统和CORBA的集成,EJB可以存取CORBA服务器,CORBA客户机也可以存取EJB服务器。 一个开发商可以开发一个新的支持EJB的执行系统,但通常的做法是供应商对已有的系统进行改进以支持EJB。可以进行改进以支持EJB的系统包括: · 数据库管理系统,如Oracle、Sybase、DB2等; · Web应用服务器,如JavaWebServer、NetscapeEnterpriseServer、OracleApplicationServer等; · CORBA平台,如IonaOrbix/OTM、BorlandVisiBroker/ITS等; · 事务处理监控器,如IBMTXSeries(CICSandEncina)、BEA公司的Tuxedo等; · 构件事务服务器,如SybaseJaguarCTS或MicrosoftTransactionServer等。 · 二、软构件模型 软构件模型的思想是创建可重用的构件并将其组合到容器中,以得到新的应用系统。构件模型定义了构件的基本体系结构、构件界面的结构、与其他构件及容器相互作用的机制等。利用构件模型规范说明,构件开发人员开发那些实现了应用系统逻辑的构件,而应用系统开发人员则把这些预先开发好的构件组合成应用系统,这些应用系统也可以作为新的构件。软构件模型思想已经在软件开发界迅速流行,因为它可以达到以下这些目的:重用、高层开发、通过工具进行自动化开发,简化开发过程等。JavaBeans、EJB、COM/DCOM等都是软构件模型的例子。 有两种类型的软构件模型:客户端构件模型和服务器端构件模型。客户端构件模型如JavaBeans是专门用于处理程序的表示及用户界面问题的;服务器端构件模型如EJB则向面向事务的中间件提供基础设施。 服务器端构件模型把构件模型的开发和中间件联系在一起。企业级应用的中间件以其复杂性著称,它不仅涉及到应用逻辑、并发性和伸缩性问题,而且涉及到如何把不兼容的系统组合在一起的问题。服务器端构件模型解决了中间件开发的复杂性问题,它使中间件开发人员集中于应用系统的逻辑部分,而不用处理同步、可伸缩性、事务集成、网络、分布式对象框架等一些分布式应用系统中存在的复杂的细节问题。EJB构件模型如图1所示: EJB构件模型给开发者提供了以下的一些支持: · 构件包含应用系统逻辑 · 可重用的构件 · 可伸缩性 · 资源管理 · 事务支持 · 并发性管理。 三、EJB构件模型的目标 在EJB1.0规范说明中,列出了设计EJB构件模型的目标,其中的一些如下: (1)EJB将成为用Java语言开发分布式的、面向对象的商业应用系统的标准构件体系结构,EJB使得通过组合构件得到分布式应用系统成为可能。 (2)EJB使得应用系统开发更容易,应用系统开发人员不需要理解底层的事务处理细节、状态管理、多线程、资源共享管理以及其他复杂的底层API细节。 (3)EJB遵循Java的"Writeonce,runanywhere"的原则,一旦一个EJB开发完成之后,那么就可以部署在任何支持EJB的平台上,而不需要重新编译或对源代码进行修改。 (4)EJB定义了一个协议,使得用不同供应商提供的工具开发和部署的构件能在运行时互操作。 (5)EJB体系结构和已有的服务器平台、其他的JavaAPI、CORBA等兼容。 (6)EJB将支持EnterpriseBeans和其他的非Java应用系统的互操作性。 采用EJB开发应用系统有很多优点,如标准的Java技术使得应用系统可以在许多不同的服务器平台上运行;修改应用系统变得容易,对单个构件进行增加、修改、删除等操作,对应用系统体系结构的影响很小;应用系统经过划分之后,使得构件之间相互独立,又可以相互协作,提供给用户的是该用户所需要的构件;应用系统的开发变得容易,基本上是即插即用的方式;应用系统从本质上说是可伸缩的,可以运行在多线程、多处理机的环境中;EJB可以在新的应用系统中得到重用,减少了开发时间。 当然,和其他的新技术一样,EJB也存在一些缺点,主要有:EJB的数量可能非常多,以至在软件开发库中很难对这些EJB进行跟踪和管理;如果应用开发人员不能正确地使用EJB,可能导致不恰当的应用系统设计,结果使得应用系统的总体性能下降;除非JVM及编译器的性能得到提高,否则EJB应用系统的性能仍将是一个问题;由于EJB技术出现时间不长,因此目前可用的EJB还不多,要想得到大量的商业性EJB还需要一段时间。 四、EJB和其他技术的关系 1.EJB和JavaBeans的关系 很多人往往把JavaBeans和EJB混淆,JavaBeans提供了基于构件的开发机制,一般JavaBeans是可视化的构件,也有一些JavaBeans是非可视化的,JavaBeans可以在多个应用系统中重用。一个标准的JavaBean是一个客户端构件,在运行时不能被其他客户机程序存取或操作。但客户端的JavaBeans容器可以根据JavaBeans的属性、方法、事件的定义在设计时或运行时对JavaBeans进行操作,JavaBeans不一定要用于Client/Server系统。 EJB没有用户界面,并完全位于服务器端,EJB可以由多个JavaBean组成,规范详细说明了EJB容器需要满足的需求以及如何与EJB构件相互协作。EJB可以和远程的客户端程序通信,并提供一定的功能。根据规范说明,EJB是Client/Server系统的一部分,如果不和客户端程序交互,EJB一般不执行具体的功能,EJB和JavaBeans的一个重要区别是EJB提供了网络功能。 2.EJB和CORBA的关系 根据规范说明中的需求,以下的一些功能是需要的: · 一个CORBA客户机(用CORBA支持的语言写的程序)可以存取基于CORBA的EJB服务器上的构件。 · 一个客户机在一个事务过程中可以同时调用CORBA和EJB对象。 · 一个事务可以同时利用多个由不同开发商提供的基于CORBA的EJB服务器。 为了保证多个开发商之间的基于CORBA的EJB产品之间的互操作性,规范说明定义了EJB到CORBA的映射,分为四个部分: (1)分布映射:定义了EJB和CORBA对象之间的关系,以及EJB规范说明中定义的JavaRMI远程接口到OMGIDL的映射。 (2)命名映射:说明了如何利用COS命名服务来确定EJBHome对象。 (3)事务映射:定义了EJB的事务支持到OMGObjectTransactionService(OTS)v1.1的映射。 (4)安全性映射:定义了EJB中的安全性特征到CORBA安全性的映射。 映射确保了不管哪一种类型的客户机,通过生成相同的字节流,可以和基于CORBA的EJB服务器进行互操作,如图2所示。 从以上的论述中可以知道,对于EJB服务器来说,有两种类型的客户机可以使用EJB: (1)EJB/CORBA客户机:一个使用EJBAPI的Java客户机。客户机利用JNDI确定对象,利用IIOP协议上的JavaRMI来调用远程方法,其中CORBAIDL的使用是隐含的,也就是说,开发人员只使用Java代码,开发客户机程序时可以不用了解CORBA及其IDL知识。 (2)纯CORBA客户机:用CORBAIDL支持的任何语言写的客户机。客户机用COS命名服务来确定对象,用CORBAIDL来调用远程方法,用对象事务服务OTS来执行事务,其中程序设计人员要创建一个IDL文件,即CORBAIDL的使用是显式的。 3.EJB和网络计算由JavaBeans构造的应用系统可以根据用户的需求分解成不同的构件,根据用户当前所需要的功能提供相关的构件,并随着用户新的需求随时下载新的构件,而用户没有用到其功能的构件可以驻留在服务器上,这就是网络计算所倡导的概念。 |
| 给中国学生的第四封信--大学四年应是这样度过--李开复 |
| 本文作者:李开复 本文转载自:开复学生网 上传时间:〖2005-11-18〗 浏览次数:31 |
| 今天,我回复了“开复学生网”开通以来的第1000个问题。关掉电脑后,始终有一封学生来信萦绕在我的脑海里,挥之不去: 开复老师: 就要毕业了。 回头看自己所谓的大学生活, 我想哭,不是因为离别,而是因为什么都没学到。 我不知,简历该怎么写,若是以往我会让它空白。 最大的收获也许是……对什么都没有的忍耐和适应…… 这封来信道出了不少大三、大四学生的心声。大学期间,有许多学生放任自己、虚度光阴,还有许多学生始终也找不到正确的学习方向。当他们被第一次补考通知唤醒时,当他们收到第一封来自应聘企业的婉拒信时,这些学生才惊讶地发现,自己的前途是那么渺茫,一切努力似乎都为时已晚…… 这“第四封信”是写给那些希望早些从懵懂中清醒过来的大学生,那些从未贪睡并希望把握自己的前途和命运的大学生以及那些即将迈进大学门槛的未来大学生们的。在这封信中,我想对所有同学说: 大学是人一生中最为关键的阶段。从入学的第一天起,你就应当对大学四年有一个正确的认识和规划。为了在学习中享受到最大的快乐,为了在毕业时找到自己最喜爱的工作,每一个刚进入大学校园的人都应当掌握七项学习:学习自修之道、基础知识、实践贯通、兴趣培养、积极主动、掌控时间、为人处事。只要做好了这七点,大学生临到毕业时的最大收获就绝不会是“对什么都没有的忍耐和适应”,而应当是“对什么都可以有的自信和渴望”。只要做好了这七点,你就能成为一个有潜力、有思想、有价值、有前途的快乐的毕业生。 大学:人生的关键 大学是人生的关键阶段。这是因为,进入大学是你终于放下高考的重担,第一次开始追逐自己的理想、兴趣。这是你离开家庭生活,第一次独立参与团体和社会生活。这是你不再单纯地学习或背诵书本上的理论知识,第一次有机会在学习理论的同时亲身实践。这是你第一次不再由父母安排生活和学习中的一切,而是有足够的自由处置生活和学习中遇到的各类问题,支配所有属于自己的时间。 大学是人生的关键阶段。这是因为,这是你一生中最后一次有机会系统性地接受教育。这是你最后一次能够全心建立你的知识基础。这可能是你最后一次可以将大段时间用于学习的人生阶段,也可能是最后一次可以拥有较高的可塑性、集中精力充实自我的成长历程。这也许是你最后一次能在相对宽容的,可以置身其中学习为人处世之道的理想环境。 大学是人生的关键阶段。在这个阶段里,所有大学生都应当认真把握每一个“第一次”,让它们成为未来人生道路的基石;在这个阶段里,所有大学生也要珍惜每一个“最后一次”,不要让自己在不远的将来追悔莫及。在大学四年里,大家应该努力为自己编织生活梦想,明确奋斗方向,奠定事业基础。 大学四年每个人都只有一次,大学四年应这样度过…… 自修之道:从举一反三到无师自通 记得我在哥伦比亚大学任助教时,曾有位中国学生的家长向我抱怨说:“你们大学里到底在教些什么?我孩子读完了大二计算机系,居然连VisiCalc1 都不会用。” 我当时回答道:“电脑的发展日新月异。我们不能保证大学里所教的任何一项技术在五年以后仍然管用,我们也不能保证学生可以学会每一种技术和工具。我们能保证的是,你的孩子将学会思考,并掌握学习的方法,这样,无论五年以后出现什么样的新技术或新工具,你的孩子都能游刃有余。” 她接着问:“学最新的软件不是教育,那教育的本质究竟是什么呢?” 我回答说:“如果我们将学过的东西忘得一干二净时,最后剩下来的东西就是教育的本质了。 我当时说的这句话来自教育家B. F. Skinner的名言。所谓“剩下来的东西”,其实就是自学的能力,也就是举一反三或无师自通的能力。大学不是“职业培训班”,而是一个让学生适应社会,适应不同工作岗位的平台。在大学期间,学习专业知识固然重要,但更重要的还是要学习独立思考的方法,培养举一反三的能力,只有这样,大学毕业生才能适应瞬息万变的未来世界。我认识的不少在中国读完大学来美国念研究生的朋友。他们认为来美国后,不论是学习,工作还是生活他们最缺乏的是独立思考的能力因为在国内时他们很少独立思考和独立决策。 上中学时,老师会一次又一次重复每一课里的关键内容。但进了大学以后,老师只会充当引路人的角色,学生必须自主地学习、探索和实践。走上工作岗位后,自学能力就显得更为重要了。微软公司曾做过一个统计:在每一名微软员工所掌握的知识内容里,只有大约10%是员工在过去的学习和工作中积累得到的,其他知识都是在加入微软后重新学习的。这一数据充分表明,一个缺乏自学能力的人是难以在微软这样的现代企业中立足的。 自学能力必须在大学期间开始培养。许多同学总是抱怨老师教得不好,懂得不多,学校的课程安排也不合理。我通常会劝这些学生说:“与其诅咒黑暗,不如点亮蜡烛”。 大学生不应该只会跟在老师的身后亦步亦趋,而应当主动走在老师的前面。例如,大学老师在一个课时里通常要涵盖课本中几十页的信息内容,仅仅通过课堂听讲是无法把所有知识学通、学透的。最好的学习方法是在老师讲课之前就把课本中的相关问题琢磨清楚,然后在课堂上对照老师的讲解弥补自己在理解和认识上的不足之处。 中学生在学习知识时更多地是追求“记住”知识,而大学生就应当要求自己“理解”知识并善于提出问题。对每一个知识点,都应当多问几个“为什么”。一旦真正理解了理论或方法的来龙去脉,大家就能举一反三地学习其他知识,解决其他问题,甚至达到无师自通的境界。 事实上,很多问题都有不同的思路或观察角度。在学习知识或解决问题时,不要总是死守一种思维模式,不要让自己成为课本或经验的奴隶。只有在学习中敢于创新,善于从全新的角度出发思考问题,学生潜在的思考能力、创造能力和学习能力才能被真正激发出来。 《礼记·学记》上讲:“独学而无友,则孤陋而寡闻”。也就是说,大学生应当充分利用学校里的人才资源,从各种渠道吸收知识和方法。如果遇到好的老师,你可以主动向他们请教,或者请他们推荐一些课外的参考读物。除了资深的教授以外,大学中的青年教师、博士生、硕士生乃至自己的同班同学都是最好的知识来源和学习伙伴。每个人对问题的理解和认识都不尽相同,只有互帮互学,大家才能共同进步。 有些同学曾告诉我说,他们很羡慕我在读书时能有一位获得过图灵奖的大师传道授业。其实,虽然我非常推崇我的老师,但他在大学期间并没有教给我多少专业知识。他只是给我指明了大方向,让我分享他的经验,给我提供研究的资源,并教我做人的方法。他没有时间也没有必要指导我学习具体的专业知识。我在大学期间积累的专业知识都是通过自学获得的。刚入门时,我曾多次红着脸向我的师兄请教最基本的知识内容,开会讨论时我曾问过不少肤浅的问题,课余时间我还主动与同学探讨、切磋。“三人行必有我师”,大学生的周围到处是良师益友。只要珍惜这些难得的机会,大胆发问,经常切磋,我们就能学到最有用的知识和方法。 大学生应该充分利用图书馆和互联网,培养独立学习和研究的本领,为适应今后的工作或进一步的深造做准备。首先,除了学习老师规定的课程以外,大学生一定要学会查找书籍和文献,以便接触更广泛的知识和研究成果。例如,当我们在一门课上发现了自己感兴趣的课题,就应当积极去图书馆查阅相关文献,了解这个课题的来龙去脉和目前的研究动态。熟练和充分地使用图书馆资源,这是大学生特别是那些有志于科学研究的大学生的必备技能之一。读书时,应尽量多读一些英文原版教材。有些原版教材写得深入浅出,附有大量实例,比中文教材还适于自学。其次,在书本之外,互联网也是一个巨大的资源库,大学生们可以借助搜索引擎在网上查找各类信息。“开复学生网”开通半年以来,我发现很多同学其实并没有很好地掌握互联网的搜索技巧,有时他们提出的问题只要在搜索引擎中简单检索一下,就能轻易找到答案。还有些同学很容易相信网上的谣言,而不会利用搜索引擎自己查考、求证。除了搜索引擎以外,网上还有许多网站和社区也是很好的学习园地。 自学时,不要因为达到了学校的要求就沾沾自喜,也不要认为自己在大学里功课好就足够了。在二十一世纪的今天,人才已经变成了一个国际化的概念。当你对自己的成绩感到满意时,我建议你开始自学一些国际一流大学的课程。例如,美国麻省理工学院(MIT)的开放式课程已经在网上无偿发布出来,大家不妨去看看MIT的网上课程,做做MIT的网上试题。当你可以自如地掌握MIT课程时,你就可以更加自信地面对国际化的挑战了。 总之,善于举一反三,学会无师自通,这是大学四年中你可以送给自己的最好的礼物。 基础知识:数学、英语、计算机、互联网 我曾经说过,中国学生的一大优势是扎实的基础知识,如数学、物理等。但是,最近几年,同学们在目睹了很多速成的例子(如丁磊、陈天桥等)之后,也迫切希望能驶上成功的快车道。这渐渐形成了一种追求速成的浮躁风气。有许多大学生梦想在毕业后就立即能做“经理”、“老板”,还有许多大学生入学时直接选择了“管理”专业,因为他们认为从这样的专业毕业后马上就可以成为企业的管理者。可不少学生进入了管理专业后,才发现自己对本专业的学习毫无兴趣。其实,管理专业和其他专业一样,都是传授基础知识和基本方法的地方,没有哪个专业可以保证学生在毕业时就能走上领导岗位。无论同学们所学的是哪个专业,大学毕业才是个人事业的真正开始。想做企业领导或想做管理工作的同学也必须从基层做起,必须首先在人品方面学会做人,在学业方面打好基础。 如果说大学是一个学习和进步的平台,那么,这个平台的地基就是大学里的基础课程。在大学期间,同学们一定要学好基础知识其中包括数学、英语、计算机和互联网的使用,以及本专业要求的基础课程(如商学院的财务、经济等课程)。在科技发展日新月异的今天,应用领域里很多看似高深的技术在几年后就会被新的技术或工具取代。只有对基础知识的学习才可以受用终身。另一方面,如果没有打下好的基础,大学生们也很难真正理解高深的应用技术。最后,在许多的中国大学里,教授对基础课程也比对最新技术有更丰富的教学经验。 数学是理工科学生必备的基础。很多学生在高中时认为数学是最难学的,到了大学里,一旦发现本专业对数学的要求不高,就会彻底放松对数学知识的学习,而且他们看不出数学知识有什么现实的应用或就业前景。但大家不要忘记,绝大多数理工科专业的知识体系都建立在数学的基石之上。例如,要想学好计算机工程专业,那至少要把离散数学(包括集合论、图论、数理逻辑等)、线性代数、概率统计和数学分析学好;要想进一步攻读计算机科学专业的硕士或博士学位,可能还需要更高的数学素养。同时,数学也是人类几千年积累的智慧结晶,学习数学知识可以培养和训练人的思维能力。通过对几何的学习,我们可以学会用演绎、推理来求证和思考的方法;通过学习概率统计,我们可以知道该如何避免钻进思维的死胡同,该如何让自己面前的机会最大化。所以,大家一定要用心把数学学好,不能敷衍了事。学习数学也不能仅仅局限于选修多门数学课程,而是要知道自己为什么学习数学,要从学习数学的过程中掌握认知和思考的方法。 二十一世纪里最重要的沟通工具就是英语。有些同学在大学里只为了考过四级、六级而学习英语,有的同学仅仅把英语当作一种求职必备的技能来学习,甚至还有人认为学习和使用英语等于崇洋媚外。其实,学习英语的根本目的是为了掌握一种重要的学习和沟通工具。在未来的几十年里,世界上最全面的新闻内容,最先进的思想和最高深的技术,以及大多数知识分子间的交流都将用英语进行。因此,除非你甘心做一个与国际脱节的人,英语学习是至关重要的。在软件行业里,不但编程语言是以英语为基础设计出来的,最重要的教材、论文、参考资料、用户手册等资源也大多是用英语写就的。学英语绝不等于崇洋媚外。中国正在走向世界,中国需要学习西方的先进思想和先进科学技术,学好英语才是真正的爱国。 很多中国留学生的英语考试成绩不错,也高分考过四级、六级、托福,但是留学美国后上课时却很难听懂课程内容,和外国同学交流时就更加困难。我们该如何学好英语呢?既然英语是最重要的沟通工具,那么,最重要的学习方法就是尽量与实践结合起来,不能只“学”不“用”,更不能只靠背诵的方式学习英语。读书时,大家尽量阅读原版的专业教材(如果英语不够好,可以先从中英对照的教材看起),并适当地阅读一些自己感兴趣的专业论文,这可以同时提高英语和相关专业的知识水平。其次,提高英语听说能力的最好方法是直接与那些以英语为母语的外国人对话。现在有很多在中国学习和工作的外国人,他们中的不少人为了学中文,很愿意与中国学生对话、交流,这是很好的学习机会。此外,大家不要把学英语当作一件苦差事,完全可以用有趣的方法学习英语。例如,可以多看一些名人的对话或演讲,多看一些小说、戏剧甚至漫画。初学者可以找英文原版的教学节目和录像来学习,有一定基础的则应该看英文电视或电影。看一部英文电影时,最好先在有字幕的时候看一遍,同时查考生词、熟悉句式,然后在不加字幕的情况下再看一遍,仅靠耳朵去听。听英文广播也是很好的练习英文听力的方法,大家每天最好能抽出半小时到一小时的时间收听广播并尽量理解其中的内容,有必要的话还可以录下来反复收听。在互联网上也有许多互动式的英语学习网站,大家可以在网站上用游戏、自我测试、双语阅读等方式提升英语水平。总之,勇于实践、持之以恒是学习英语的必由之路。 信息时代已经到来,大学生在信息科学与信息技术方面的素养也已成为他们进入社会的必备基础之一。虽然不是每个大学生都需要懂得计算机原理和编程知识,但所有大学生都应能熟练地使用计算机、互联网、办公软件和搜索引擎,都应能熟练地在网上浏览信息和查找专业知识。在二十一世纪里,使用计算机和网络就像使用纸和笔一样是人人必备的基本功。不学好计算机,你就无法快捷全面地获得自己需要的知识或信息。 最后,每个特定的专业也有它自己的基础课程。以计算机专业为例,许多大学生只热衷于学习最新的语言、技术、平台、标准和工具,因为很多公司在招聘时都会要求这些方面的基础或经验。这些新技术虽然应该学习,但计算机基础课程的学习更为重要,因为语言和平台的发展日新月异,但只要学好基础课程(如数据结构、算法、编译原理、计算机原理、数据库原理等)就可以万变不离其宗。有位同学生动地把这些基础课程比拟为计算机专业的内功,而把新的语言、技术、平台、标准和工具比拟为外功。那些只懂得追求时髦的学生最终只知道些招式的皮毛,而没有内功的积累,他们是不可能成为真正的高手的。 虽然我一向鼓励大家追寻自己的兴趣,但在这里仍需强调,生活中有些事情即便不感兴趣也是必须要做的。例如,打好基础,学好数学、英语和计算机的使用就是这一类必须做的事情。如果你对数学、英语和计算机有兴趣,那你是幸运儿,可以享受学习的乐趣;但就算你没有兴趣,你也必须把这些基础打好。打基础是苦功夫,不愿吃苦是不能修得正果的。 实践贯通:“做过的才真正明白” 上高中时,许多学生会向老师提出“为什么?有什么用?”的问题,通常,老师给出的答案都是“不准问”。进入大学后,这些问题的答案应该是“不准不问”。在大学里,同学们应该懂得每一个学科的知识、理论、方法与具体的实践、应用如何结合起来,尤其是工科的学生更是如此。 有一句关于实践的谚语是这样说的:“我听到的会忘掉,我看到的能记住,我做过的才真正明白。 无论学习何种专业、何种课程,如果能在学习中努力实践,做到融会贯通,我们就可以更深入地理解知识体系,可以牢牢地记住学过的知识。因此,我建议同学们多选些与实践相关的专业课。实践时,最好是几个同学合作,这样,既可经过实践理解专业知识,也可以学会如何与人合作,培养团队精神。如果有机会在老师手下做些实际的项目,或者走出校门打工,只要不影响课业,这些做法都是值得鼓励的。外出打工或做项目时,不要只看重薪酬待遇(除非生活上确实有困难),有时候,即便待遇不满意,但有许多培训和实践的机会,我们也值得一试。 以计算机专业为例,实践经验对于软件开发来说更是必不可少的。微软公司希望应聘程序员的大学毕业生最好有十万行的编程经验。理由很简单:实践性的技术要在实践中提高。计算机归根结底是一门实践的学问,不动手是永远也学不会的。因此,最重要的不是在笔试中考高分,而是实践能力。但是,在与中国学生的交流过程中,我很惊讶地发现,中国某些学校计算机系的学生到了大三还不会编程。这些大学里的教学方法和课程的确需要更新。如果你不巧是在这样的学校中就读,那你就应该从打工、自学或上网的过程中寻求学习和实践的机会。在网上可以找到许多实践项目,例如,有一批爱好编程的学生建立了一个讨论软件技术的网站(www.diyinside.com),在其中共享他们的知识和实践经验,并成功举办了很多次活动(如在各大高校举办校园技术教育会议),还出版了帮助学生提高技术、解答疑难方面的图书,该网站有多位成员获得了“微软最有价值的专家”的称号。 培养兴趣:开拓视野,立定志向 孔子说:“知之者不如好之者,好之者不如乐之者。”我在“给中国学生的第三封信”中曾深入论述了快乐和兴趣是一个人成功的关键。如果你对某个领域充满激情,你就有可能在该领域中发挥自己所有的潜力,甚至为它而废寝忘食。这时候,你已经不是为了成功而学习,而是为了“享受”而学习了。在“第三封信”中,我也曾谈到我自己是如何在大学期间放弃了我不感兴趣的法律专业而进入我所热爱的计算机专业学习的。 有些同学问我,如何像我一样能找到自己的兴趣呢?我觉得,首先要客观地评估和寻找自己的兴趣所在:不要把社会、家人或朋友认可和看重的事当作自己的爱好;不要以为有趣的事就是自己的兴趣所在,而是要亲身体验它并用自己的头脑做出判断;不要以为有兴趣的事情就可以成为自己的职业,例如,喜欢玩网络游戏并不代表你会喜欢或有能力开发网络游戏;不要以为有兴趣就意味着自己有这方面的天赋,不过,你可以尽量寻找天赋和兴趣的最佳结合点,例如,如果你对数学有天赋但又喜欢计算机专业,那么你完全可以做计算机理论方面的研究工作。 最好的寻找兴趣点的方法是开拓自己的视野,接触众多的领域。唯有接触你才能尝试,唯有尝试你才能找到自己的最爱。而大学正是这样一个可以让你接触并尝试众多领域的独一无二的场所。因此,大学生应当更好地把握在校时间,充分利用学校的资源,通过使用图书馆资源、旁听课程、搜索网络、听讲座、打工、参加社团活动、与朋友交流、使用电子邮件和电子论坛等不同方式接触更多的领域、更多的工作类型和更多的专家学者。当年,如果我只是乖乖地到法律系上课,而不去尝试旁听计算机系的课程,我就不会去计算机中心打工,也不去找计算机系的助教切磋,就更不会发现自己对计算机的浓厚兴趣。 通过开拓视野和接触尝试,如果你发现了自己真正的兴趣爱好,这时就可以去尝试转系的可能性、尝试课外学习、选修或旁听相关课程;你也可以去找一些打工或假期实习的机会,进一步理解相关行业的工作性质;或者,努力去考自己感兴趣专业的研究生,重新进行一次专业选择。其实,本科读什么专业并不能完全决定毕业后的工作方向,正如我所强调的那样,大学期间的学习过程培养的是你的学习能力,只要具备了这种能力,即使从事的是全新的工作,你也能在边做边学的过程中获取足够的知识和经验。 除了“选你所爱”,大家也不妨试试“爱你所选”。有些同学后悔自己在入学时选错了专业,以至于对所学的专业缺乏兴趣,没有学习动力;有些同学则因为追寻兴趣而“走火入魔”,毕业后才发现荒废了本专业的课程;另一些同学因为在学习上遇到了困难或对本专业抱有偏见,就以兴趣为借口,不愿意面对自己的专业。这些做法都是不正确的。在大学中,转系可能并不容易,所以,大家首先应尽力试着把本专业读好,并在学习过程中逐渐培养自己对本专业的兴趣。此外,一个专业里可能有很多不同的领域,也许你对专业里的某一个领域会有兴趣。现在,有很多专业发展了交叉学科,两个专业的结合往往是新的增长点。因此,只要多接触、多尝试,你也许就会碰到自己真正感兴趣的方向。“数字笔”的发明人王坚博士在微软亚洲研究院负责用户界面的研究,可是谁又能想到他从本科到博士所学的都是心理学专业,而用户界面又正是计算机和心理学专业的最佳结合点。另一方面,就算你毕业后要从事其他的行业,你依然可以把自己的专业读好,这同样能成为你在新行业中的优势。例如,有一位同学不喜欢读工科,想毕业后进入服务业发展,我就建议他先把工科读好,将来可以在服务业中以精通技术作为自己的特长。 人生的路很长,每个人都可以有很多不同的兴趣爱好。在追寻兴趣之外,更重要的是要找寻自己终身不变的志向。有一本书的作者曾访问了几百个成功者,问他们有哪件事是他们今天已经懂得,但在年轻时却留下了遗憾的事情。在受访者的回答中,最多的一种是:“希望在年轻时就有前辈告诉我、鼓励我去追寻自己的理想和志向。”相比之下,兴趣固然关键,但志向更为重要。例如,我的志向是“使影响力最大化”,多年以来,我有许多兴趣爱好,如语音识别、对弈软件、多媒体、研究到开发的转换、管理学、满足用户的需求、演讲和写作、帮助中国学生等等,兴趣可以改变,但我的志向是始终不渝的。因此,大家不必把某种兴趣当作自己最后的目标,也不必把任何一种兴趣的发展道路完全切断,在志向的指引下,不同的兴趣完全可以平行发展,实在必要时再做出最佳的抉择。志向就像罗盘,兴趣就像风帆,两者相辅相成、缺一不可,它们可以让你驶向理想的港湾。 积极主动:果断负责,创造机遇 创立“开复学生网”时,我的初衷是“帮助学生帮助自己”。但让我很惊讶的是,更多的学生希望我直接帮他们做出决定,甚至仅在简短的几句自我介绍后就直接对我说:“只有你能告诉我,我该怎么做”。难道一个陌生人会比你更知道自己该怎么做吗?我慢慢认识到,这种被动的思维方式是从小在中国的教育环境中培养出来的。被动的人总是习惯性地认为他们现在的境况是他人和环境造成的,如果别人不指点,环境不改变,自己就只有消极地生活下去。持有这种态度的人,事业还没有开始,自己就已经被击败,我从来没见过这样消极的人可以取得持续的成功。 从大学的第一天开始,你就必须从被动转向主动,你必须成为自己未来的主人,你必须积极地管理自己的学业和将来的事业,理由很简单:因为没有人比你更在乎你自己的工作与生活。“让大学生活对自己有价值”是你的责任。许多同学到了大四才开始做人生和职业规划,而一个主动的学生应该从进入大学时就开始规划自己的未来。 积极主动的第一步是要有积极的态度。大家可以用我在“第三封信”里推荐的方法,积极规划自己的人生目标,追寻兴趣并尝试新的知识和领域。纳粹德国某集中营的一位幸存者维克托·弗兰克尔曾说过:“在任何特定的环境中,人们还有一种最后的自由,就是选择自己的态度。” 积极主动的第二步是对自己的一切负责,勇敢面对人生。不要把不确定的或困难的事情一味搁置起来。比如说,有些同学认为英语重要,但学校不考试就不学英语;或者,有些同学觉得自己需要参加社团磨练人际关系,但是因为害羞就不积极报名。但是,我们必须认识到,不去解决也是一种解决,不做决定也是一个决定,这样的解决和决定将使你面前的机会丧失殆尽。对于这种消极、胆怯的作风,你终有一天会付出代价的。 积极主动的第三步是要做好充分的准备:事事用心,事事尽力,不要等机遇上门;要把握住机遇,创造机遇。中国科技大学校长朱清时院士在大三时被分配到青海做铸造工人。但他不像其他同学那样放弃学习,整天打扑克、喝酒。他依然终日钻研数理化和英语。六年后,中国科学院要在青海做一个重要的项目,这时朱校长就脱颖而出,开始了他辉煌的事业。很多人可能说他运气好,被分配到缺乏人才的青海,才有这机会。但是,如果他没有努力学习,也无法抓住这个机遇。所以,做好充分的准备,当机遇来临时,你才能抓住它。 积极主动的第四步是“以终为始”,积极地规划大学四年。任何规划都将成为你某个阶段的终点,也将成为你下一个阶段的起点,而你的志向和兴趣将为你提供方向和动力。如果不知道自己的志向和兴趣,你应该马上做一个发掘志向和兴趣的计划;如果不知道毕业后要做什么,你应该马上制定一个尝试新领域的计划;如果不知道自己最欠缺什么,你应该马上写一份简历,找你的老师、朋友打分,或自己审阅,看看哪里需要改进;如果毕业后想出国读博士,你应该想想如何让自己在申请出国前有具体的研究经验和学术论文;如果毕业后想进入某个公司工作,你应该收集该公司的招聘广告,以便和你自己的履历对比,看自己还欠缺哪些经验。只要认真制定、管理、评估和调整自己的人生规划,你就会离你自己的目标越来越近。 掌控时间:事分轻重缓急,人应自控自觉 除了积极主动的态度,大学生还要学会安排自己的时间,管理自己的事务。一位同学是这么描述大学生活的: “大学和高中相比似乎没有什么太大的区别,每天依旧是学习,每次考试后依旧是担心考试成绩……不同的只是大学里上网的时间和睡觉的时间多了很多,压力也小了很多。” 这位同学并不明白,“时间多了很多”正是大学与高中之间巨大的差别。时间多了,就需要自己安排时间、计划时间、管理时间 安排时间出了做一个时间表外,更重要的是“事分轻重缓急”。在《高效能人士的七个习惯》一书中,作者史蒂芬·柯维提出,“重要事”和“紧急事”的差别是人们浪费时间的最大理由之一。因为人的惯性是先做最紧急的事,但这么做会导致一些重要的事被荒废掉。例如,我认为这篇文章里谈到的各种学习都是“重要的”,但它们不见得都是老师布置的必修课业,采纳我的建议的同学们依然会因为考试、交作业等紧急的事情而荒废了打好基础、学习做人等重要的事情。因此,每天管理时间的一种好方法是,早上确定今天要做的紧急事和重要事,睡前回顾一下,这一天有没有做到两者的平衡。 每个人都有许多“紧急事”和“重要事”,想把每件事都做到最好是不切实际的。我建议大家把“必须做的事”和“尽量做的事”分开。必须做的事要做到最好,但尽量做的事尽力而为即可。建议大家用良好的态度和宽广的胸怀接受那些你暂时不能改变的事情,多关注那些你能够改变的事情。此外,还要注意生物钟的运行规律,按时作息,劳逸结合,这样才能在学习时有最好的状态。 大学四年是最容易迷失方向的时期。大学生必须有自控的能力,让自己交些好朋友,学些好习惯,不要沉迷于对自己无益的习惯(如网络游戏)里。一位积极、主动的中国学生在“开复学生网”上劝告其他同学:“不要玩游戏,至少不要玩网络游戏。我所认识的专业水平比较高的大学朋友中没有一个玩网络游戏的。沉迷于网络游戏是对于现实的逃避,是不愿面对自己不足的一面。我认为,要脱离网络游戏,就得珍惜自己宝贵的大学时间,找到自己感兴趣的方向,做一些有意义并能给自己带来满足感的事情。” 为人处事:培养友情,参与群体 很多大学生入校时都是第一次离开父母,离开自己生长的环境。进入校园开始集体生活后,如何与同学、朋友以及社团的同事相处就成为了大学生学习内容的一部分。大学是大家最后一次可以在相对宽松的环境中学习、培养、训练如何与人相处的机会。在未来,人们在社会里、在工作中与人相处的能力会变得越来越重要,甚至超过了工作本身。所以,大学生要好好把握机会,培养自己的交流意识和团队精神。 “人际交往能力不够强,人际圈子不够广,但又没有什么特长可以引起大家的注意,在社团里也不知道怎么和其他人有效地建立联系。”这是一些大学生在人际交往方面经常遇到的困惑。对于如何在大学期间提高人际交往能力,我的建议是: 第一,以诚待人,以责人之心责己、以恕己之心恕人。对别人要抱着诚挚、宽容的胸襟,对自己要怀着自我批评、有过必改的态度。与人交往时,你怎样对待别人,别人也会怎样对待你。这就好比照镜子一样,你自己的表情和态度,可以从他人对你流露出的表情和态度中一览无遗。你若以诚待人,别人也会以诚待你。你若敌视别人,别人也会敌视你。最真挚的友情和最难解的仇恨都是由这种“反射”原理逐步造成的。因此,当你想修正别人时,你应该先修正自己。你想别人怎么对你,你就应该怎么对人。你想他人理解你,你就要首先理解他人。 第二,培养真正的友情。如果能做到第一点,很多大学时的朋友就会成为你一辈子的知己。在一起求学和寻求自身发展的道路上,这样的友谊弥足珍贵。交朋友时,不要只去找与你性情相近或只会附和你的人做朋友。好朋友有很多种:乐观的朋友、智慧的朋友、脚踏实地的朋友、幽默风趣的朋友、激励你上进的朋友、提升你能力的朋友、帮你了解自己的朋友、对你说实话的朋友等等。此外,大学时谈恋爱也可以教你如何照顾别人,增进同理心和自控力,但恋爱这件事要随缘,不必为了谈恋爱而谈恋爱。 第三,学习团队精神和沟通能力。社团是微观的社会,参与社团是步入社会前最好的磨练。在社团中,可以培养团队合作的能力和领导才能,也可以发挥你的专业特长。但更重要的是,你要做一个诚心诚意的服务者和志愿者,或在担任学生工作时主动扮演同学和老师之间沟通桥梁的角色,并以此锻炼自己的沟通能力,为同学和老师服务。这样的学习过程也不会很轻松,挫折是肯定有的,但是不要灰心,大学社团里的人际交往是一种不用“付学费”的学习,犯了错误也可以重头来过. 第四,从周围的人身上学习。在班级里、社团中,多观察周围的同学,特别是那些你觉得交往能力和沟通能力特别强的同学,看他们是如何与人相处的。比如,看他们如何处理交往中的冲突、如何说服他人和影响他人、如何发挥自己的合作和协调能力、如何表达对他人的尊重和真诚、如何表示赞许或反对,如何在不冒犯他人的情况下充分展示个性等等。通过观察和模仿,你渐渐地会发现,自己的人际交往能力会有意想不到的改进。在学校里,每一个朋友都可以成为你的良师,他们的热心、幽默、机智、博学、正直、沟通、礼貌等品德都可以成为你的学习对象。同时那些你不喜欢的人和事也可以为你敲响警钟,警告你千万不要做那样的人和事。当然,你也应当慷慨地帮助每一个朋友,试着做他们的良师和模范。 第五,提高自身修养和人格魅力。如果觉得没有特长、没有爱好可能会成为自己人际交往能力提高的一个障碍,那么,你可以有意识地去选择和培养一些兴趣爱好。共同的兴趣和爱好也是你与朋友建立深厚感情的途径之一。很多在事业上有所建树的人都不是只会闭门苦读的书呆子,他们大多都有自己的兴趣和爱好。我在微软亚洲研究院的同事中就有绘画、桥牌和体育运动方面的高手。业余爱好不仅是人际交往的一种方式,还可以让大家发掘出自己在读书以外的潜能。例如,体育锻炼既可以发挥你的运动潜能,也可以培养你的团队合作精神。如果真的没有什么兴趣爱好,那么,多读些好书丰富自己的知识也可以改进自己的人际交往能力,因为没有什么比智慧和渊博更能体现一个人的人格魅力了。 所以,学会与人相处,这也是大学中的一门“必修课”。 对大学生们的期望 踏入大学校门时,你还是一个忙碌的、青涩的、被动的、为分数读书的、被家庭保护着的中学毕业生。 就读大学时,你应当掌握七项学习,学好自修之道、基础知识、实践贯通、兴趣培养、积极主动、掌控时间、为人处事。 经过大学四年,你会从思考中确立自我,从学习中寻求真理,从独立中体验自主,从计划中把握时间,从交流中锻炼表达,从交友中品味成熟,从实践中赢得价值,从兴趣中攫取快乐,从追求中获得力量。 离开大学时,只要做到了这些,你最大的收获将是“对什么都可以拥有的自信和渴望”。你就能成为一个有潜力、有思想、有价值、有前途的中国未来的主人翁。 所以,我认为大学四年应是这样度过。 |
CVS是RCS的前端工具,它是用于多用户并行开发的版本控制工具,它的最大特点 是使用了“copy-modify-merge”机制而不是“lock-modify-unlock”。通过使用 CVS生成一个存储文件的仓库(repository),存储在仓库中的每个目录叫做模块 (module),在修改时将相应的模块检出到工作目录中(working directory)生成对应的目录,所有的修改都在工作目录中完成,修改完成后再提交到仓库中生成新的版本号,并加以保存。
CVS把文件保存在一个名叫仓库(repository)的地方,仓库中保存的文件并不是每个版本的副本,而是可以从任意版本回溯到初始版本的一些代码的主控信息,这样,就节省了大量的存储空间风靡全球的LINUX操作系统就是在大型分布式CVS系统上开发成功的。
全球最著名的软件工程软件提供商Rational Sofdtware的ClearCase是CVS的替代产品,比CVS稍有增强
大概有一年没碰oracle了,大三时学的是oracle8i。前几天心血来潮重新拾起它。于是隔壁同学那借来三张oracle 9i的盘。安装过程一切顺利。接着兴冲冲打开Enterprise Manager Console,发现窗口在屏幕上闪了下就没了,启动不起来!我试着又去启动SQLPlus Worksheet发现情况也是一样的。~~~超级郁闷!上网查了一些资料,还是解决不了。最后打开Enterprise Manager Consoler的目标文件:$OracleHomeoracleora90BINoemapp.bat 发现里面有一段Set Path的语句:
REM Make sure that our JRE is used for this invocation.
if Windows_NT == %OS% SET PATH=C:Program FilesOraclejre1.1.8bin;%PATH%
马上想到会不会是我的系统环境变量设置有问题呢?我的机子上装了jre 1.5 update 4, 可能是这个JVM虚拟机和oracle自带的JVM发生冲突了吧。因为oracle自带的是jre 1.1.8。
开始我的解决oracle jvm冲突之旅吧:
1. 进入 我的电脑->属性->高级->环境变量(environment viriables)
2. 分别对系统变量和本地用户的Path进行编辑,把C:Program FilesOraclejre1.1.8bin; 放在所有的环境路径之前。
现在重新启动Enterprise Manager Console, 启动正常,GOT IT!
此外安装oracle时还可能出现它的HttpServer打不开的情况,解决办法是关系IIS的Web Sites服务。因为它的两者默认的端口都是80。如果你机子事先有装过Apahce那么要修改Oracle安装目录下的Apache的监听端口,目录是$Oracle Homeoracleora90ApacheApacheconf 下的httpd.conf里的监听端口。
1 传输控制协议端口服务多路开关选择器
2 compressnet 管理实用程序
3 压缩进程
5 远程作业登录
7 回显(Echo)
9 丢弃
11 在线用户
13 时间
15 netstat
17 每日引用
18 消息发送协议
19 字符发生器
20 文件传输协议(默认数据口)
21 文件传输协议(控制)
22 SSH远程登录协议
23 telnet 终端仿真协议
24 预留给个人用邮件系统
25 smtp 简单邮件发送协议
27 NSW 用户系统现场工程师
29 MSG ICP
31 MSG验证
33 显示支持协议
35 预留给个人打印机服务
37 时间
38 路由访问协议
39 资源定位协议
41 图形
42 WINS 主机名服务
43 "绰号" who is服务
44 MPM(消息处理模块)标志协议
45 消息处理模块
46 消息处理模块(默认发送口)
47 NI FTP
48 数码音频后台服务
49 TACACS登录主机协议
50 远程邮件检查协议
51 IMP(接口信息处理机)逻辑地址维护
52 施乐网络服务系统时间协议
53 域名服务器
54 施乐网络服务系统票据交换
55 ISI图形语言
56 施乐网络服务系统验证
57 预留个人用终端访问
58 施乐网络服务系统邮件
59 预留个人文件服务
60 未定义
61 NI邮件?
62 异步通讯适配器服务
63 WHOIS+
64 通讯接口
65 TACACS数据库服务
66 Oracle SQL*NET
67 引导程序协议服务端
68 引导程序协议客户端
69 小型文件传输协议
70 信息检索协议
71 远程作业服务
72 远程作业服务
73 远程作业服务
74 远程作业服务
75 预留给个人拨出服务
76 分布式外部对象存储
77 预留给个人远程作业输入服务
78 修正TCP
79 Finger(查询远程主机在线用户等信息)
80 全球信息网超文本传输协议(www)
81 HOST2名称服务
82 传输实用程序
83 模块化智能终端ML设备
84 公用追踪设备
85 模块化智能终端ML设备
86 Micro Focus Cobol编程语言
87 预留给个人终端连接
88 Kerberros安全认证系统
89 SU/MIT终端仿真网关
90 DNSIX 安全属性标记图
91 MIT Dover假脱机
92 网络打印协议
93 设备控制协议
94 Tivoli对象调度
95 SUPDUP
96 DIXIE协议规范
97 快速远程虚拟文件协议
98 TAC(东京大学自动计算机)新闻协议
101 usually from sri-nic
102 iso-tsap
103 ISO Mail
104 x400-snd
105 csnet-ns
109 Post Office
110 Pop3 服务器(邮箱发送服务器)
111 portmap 或 sunrpc
113 身份查询
115 sftp
117 path 或 uucp-path
119 新闻服务器
121 BO jammerkillah
123 network time protocol (exp)
135 DCE endpoint resolutionnetbios-ns
137 NetBios-NS
138 NetBios-DGN
139 win98 共享资源端口(NetBios-SSN)
143 IMAP电子邮件
144 NeWS - news
153 sgmp - sgmp
158 PCMAIL
161 snmp - snmp
162 snmp-trap -snmp
170 network PostScript
175 vmnet
194 Irc
315 load
400 vmnet0
443 安全服务
456 Hackers Paradise
500 sytek
512 exec
513 login
514 shell - cmd
515 printer - spooler
517 talk
518 ntalk
520 efs
526 tempo - newdate
530 courier - rpc
531 conference - chat
532 netnews - readnews
533 netwall
540 uucp - uucpd 543 klogin
544 kshell
550 new-rwho - new-who
555 Stealth Spy(Phase)
556 remotefs - rfs_server
600 garcon
666 Attack FTP
750 kerberos - kdc
751 kerberos_master
754 krb_prop
888 erlogin
1001 Silencer 或 WebEx
1010 Doly trojan v1.35
1011 Doly Trojan
1024 NetSpy.698 (YAI)
1025 NetSpy.698
1033 Netspy
1042 Bla1.1
1047 GateCrasher
1080 Wingate
1109 kpop
1243 SubSeven
1245 Vodoo
1269 Mavericks Matrix
1433 Microsoft SQL Server 数据库服务
1492 FTP99CMP (BackOriffice.FTP)
1509 Streaming Server
1524 ingreslock
1600 Shiv
1807 SpySender
1981 ShockRave
1999 Backdoor
2000 黑洞(木马) 默认端口
2001 黑洞(木马) 默认端口
2023 Pass Ripper
2053 knetd
2140 DeepThroat.10 或 Invasor
2283 Rat
2565 Striker
2583 Wincrash2
2801 Phineas
3129 MastersParadise.92
3150 Deep Throat 1.0
3210 SchoolBus
3389 Win2000 远程登陆端口
4000 OICQ Client
4567 FileNail
4950 IcqTrojan
5000 WindowsXP 默认启动的 UPNP 服务
5190 ICQ Query
5321 Firehotcker
5400 BackConstruction1.2 或 BladeRunner
5550 Xtcp
5555 rmt - rmtd
5556 mtb - mtbd
5569 RoboHack
5714 Wincrash3
5742 Wincrash
6400 The Thing
6669 Vampire
6670 Deep Throat
6711 SubSeven
6713 SubSeven
6767 NT Remote Control
6771 Deep Throat 3
6776 SubSeven
6883 DeltaSource
6939 Indoctrination
6969 Gatecrasher.a
7306 网络精灵(木马)
7307 ProcSpy
7308 X Spy
7626 冰河(木马) 默认端口
7789 ICQKiller
8000 OICQ Server
9400 InCommand
9401 InCommand
9402 InCommand
9535 man
9536 w
9537 mantst
9872 Portal of Doom
9875 Portal of Doom
9989 InIkiller
10000 bnews
10001 queue
10002 poker
10167 Portal Of Doom
10607 Coma
11000 Senna Spy Trojans
11223 ProgenicTrojan
12076 Gjamer 或 MSH.104b
12223 Hack?9 KeyLogger
12345 netbus木马 默认端口
12346 netbus木马 默认端口
12631 WhackJob.NB1.7
16969 Priotrity
17300 Kuang2
20000 Millenium II (GrilFriend)
20001 Millenium II (GrilFriend)
20034 NetBus Pro
20331 Bla
21554 GirlFriend 或 Schwindler 1.82
22222 Prosiak
23456 Evil FTP 或 UglyFtp 或 WhackJob
27374 SubSeven
29891 The Unexplained
30029 AOLTrojan
30100 NetSphere
30303 Socket23
30999 Kuang
31337 BackOriffice
31339 NetSpy
31666 BO Whackmole
31787 Hack a tack
33333 Prosiak
33911 Trojan Spirit 2001 a
34324 TN 或 Tiny Telnet Server
40412 TheSpy
40421 MastersParadise.96
40423 Master Paradise.97
47878 BirdSpy2
50766 Fore 或 Schwindler
53001 Remote Shutdown
54320 Back Orifice 2000
54321 SchoolBus 1.6
61466 Telecommando
65000 Devil
#include<iostream>
using namespace std;
//Y类的不完全定义
class Y;
//X类的定义
class X {
public:
void disp(Y py,char *name); //成员函数原型
};
//定义Y类
class Y {
//声明本类的友元函数
//X类的disp()为本例的友元函数
friend void X::disp(Y py,char *name);
//普通函数putY() 为本例的友元函数
friend void putY(Y& yc,char *name);
private: //私有成员
int num;
void dispY(char *name){
cout<<name<<".num="<<num<<endl;
}
public: //公共成员函数
Y(int n){
num=n;
}
};
//X类成员函数的实现部分
void X::disp(Y py,char *name){
cout<<"In X::disp():"<<endl;
py.dispY(name); //访问Y类的私有函数
}
//普通函数putY()的定义
void putY(Y& yc,char *name){
cout<<"In getY:"<<endl;
yc.dispY(name);
cout<<name<<".num=";
cout<<yc.num<<endl;
}
//定义YourClass类,
class YourClass
{
//指定YourOtherClass是它的友元类
friend class YourOtherClass;
private:
int num;
public:
YourClass(int n){num=n;}
void display(char *YCname){
cout<<YCname<<".num :";
cout<<num<<endl;
}
};
//定义YourOtherClass,它是YourClass类的友元类
class YourOtherClass
{
public:
//使用YourClass类的私有成员
void disp1(YourClass yc,char *YCname){
cout<<YCname<<".num :";
cout<<yc.num<<endl;
}
//使用YourClass类的公共成员
void disp2(YourClass yc,char* YCname){
yc.display(YCname);
}
};
//在main()函数中创建和使用YourClass和YourOtherClass类对象
int main()
{
//创建Y和X类的对象
Y y1(100),y2(200);
X x;
//不可用Y类对象的私有成员函数显示
//y1.dispY("y1");
//y2.dispY("y2");
//调用X类对象的友元函数显示
x.disp(y1,"y1");
x.disp(y2,"y2");
//用getY函数显示Y类的对象显示
putY(y1,"y1");
putY(y2,"y2");
//声明YourClass类对象
YourClass a(10),b(100);
//显示a和b对象的值
cout<<"YourClass:"<<endl;
a.display("a");
b.display("b");
//声明YourOtherClass类对象
YourOtherClass temp;
//通过temp显示a和b对象的值
cout<<"YourOtherClass:"<<endl;
temp.disp1(a,"a");
temp.disp2(b,"b");
system("pause");
return 0;
}
#include <cstdlib>
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int atoi(string str);
int main(int argc, char *argv[])
{
string str;
cout << "Enter a Number: " << str;
cin >> str;
cout << atoi(str) << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
int atoi (string str)//string to number
{
stringstream sstr;
sstr.clear();
int a;
sstr<<str;
sstr>>a;
return a+1;
}
内网ip建立个人ftp服务器教程 查看全文
Java学习从入门到精通[原创]
作者:robbin
网址:http://hibernate.fankai.com/
当某天有人模仿着星爷的语气对你说着:"我对你的敬仰有如滔滔江水连绵不绝......"的时候, 你可以想像得到他大约是大小便失禁了......
布什在密西西比州比洛克西市想指点灾民到救世军中心求助。布什问灾民们:“你们知道救世军中心在哪里吗?”一位工人打断他的话说:“先生,那里根本没有什么中心,只有一架货车。它被飓风吹走了,不见了。”
“9.11”青铜雕像由来
据新华社10日专电为纪念纽约世界贸易中心遭袭4周年,一尊青铜雕像9月8日矗立在纽约曼哈顿区圣保罗教堂的院子里。这座红色的青铜雕像雕刻的是一棵桑树的树根。
2001年9月11日,纽约世贸大厦遭恐怖袭击而倒塌,周围建筑几乎都遭到了不同程度的毁坏。只有圣保罗教堂幸免于难。其原因是教堂前面的一棵70年的桑树用自己庞大的身躯遮挡了爆炸带来的冲击波。桑树倒下了,教堂却安然无恙。