文档库 最新最全的文档下载
当前位置:文档库 › 外文资料翻译

外文资料翻译

外文资料翻译
外文资料翻译

毕业设计外文资料翻译

学院:信息科学与工程学院

专业:网络工程

姓名:

学号:

外文出处: Object persistence and Java

附件: 1.外文资料翻译译文;2.外文原文。

指导教师评语:

签名:

年月日(用外文写)

附件1:外文资料翻译译文

对象持久化和java

--深入的了解面向对象语言中的对象持久的讨论

Arsalan Saljoughy,https://www.wendangku.net/doc/a814064571.html,, 05/01/97 对象持久化这个术语你常常会和数据存储一起听到。持久化被期望用于事务完整性和更严格的条件(参看文献部分获取更多的事务处理的信息)。但是,编程语言提供的标准类库和包都没有包含事务约束。正如本文中我们将清楚的看到简单的java持久化很有可能会滋生语言本身,而复杂的数据库功能将由数据库厂商提供。

没有对象是一个岛屿

在真实的世界,你很少发现一个事物跟其它事物之间没有关系,事物是对象模型的成分。对事物的持久比对对象模型的持久要困难,而且我们可以观察到对象之间是通过他们之间的关系关联在一起的。关联方式的数据存储趋于根据类型进行数据汇总,表中的行表示硬盘上同一种类型对象的物理存储,对象之间的关系是通过多张表共享关键字表现的。虽然通过数据库组织,关系数据库有时允许多表能在同一逻辑块中一起使用组成群集,例如,一个数据库部分,它没有机制存储对象关系。因此,为了构建一个对象模型,这些关系从进程运行时已经存在的关键字被构建的,又被称作表连接。这同样时众所周知的关系数据库的一个特性叫做“数据独立性”。几乎所有的对象数据库都提供一些机制来增强系统的性能,包括复杂的对象关系,都超过传统的关系数据库。

查询或浏览?

在存储数据到磁盘上时,我们要面临的选择是协同定位有关的对象以更适合浏览访问,或者存储到表上-根据对象的类型进行汇集使更容易进行查询访问(查询),或者两者一起使用。对象的协同定位是持久化存储中关系和面向对象数据库非常不一样的一个方面。选择查询语言是另外一个值得考虑的方面。结构化查询语言(SQL)和它的扩展已经证明使用条件判断存取机制的关系系统的成功。对象查询语言(OQL)是SQL的一个变种,由ODMG定制的标准,但是对这个语言的支持却非常的少。多种形式组合的方法使对象的集合在构建语意查询上空前的简洁。例如,假设一个账户有多种行为组合叫做isInGoodStanding,这样所有的in good standing的账户都将会返回正确,其它的返回错误。现在可以想象查询账户集合的简洁性,ingoodstanding为多有in good standing的账户实行不同的基础上的业务规则。它看起来像:

setOfGoodCustomers = setOfAccounts.query(account.inGoodStanding());

大多数的对象数据库能够处理在C++和Samlltalk中像这样的查选语法,但是它门确很难处理更大数据的集合和更复杂的查询表达式。许多关系数据库公司,例如Oracle和Informix,将很快提供其它的方式,基于SQL语法来达到同样的效果。

持久化和类型

面向对象语言的支持者会说持久化和类型是对象的两个相交的特性,也就是说,同一类型的对象的持久和变化过程是能够相同的,因为一个特性不能够影响其它的特性。另一类观点认为持久化只是可持久对象的行为,某些行为可能被应用于持久性对象。后

面的方法提倡通知可持久化对象存储和从存储器检索,模型提供一个实体对象的应用试图――通常延伸虚拟内存。

规范化和语言独立

一种语言同一类型的对象应该已同样的方式储存到持久的储存器上,不管它们的表现形式是怎么样的。把对象的布局改变成普通形式的过程被大家称做对象形式的规范化。在编译语言中,静态类型对象一种语言编写,但在不同的系统下编译,在吃酒储存器中应该具有相同的表现形式。

对独立语言对象表示规范化的进行扩展。如果对象能以单独的一种语言表示,那么同一对象的不同表现形式就可以共享同一持久化存储器。

一种策略为达到这个目的就是通过接口定义语言(IDL)引进一个新的层。通过IDL 可以生成对象数据库接口和相应的数据结构。IDL机构的底部包括两种,第一,额外的中间层总是需要额外的转换成,这样会影响系统的总体性能;第二,它限制了数据库服务对于特定厂商是唯一的价值,这样可能对于应用开发人员来说是相当有价值的。

另一种简单的策略是通过对SQL的扩展来实现对对象服务的支持。关系数据库厂商和较小的对象/关系厂商都提倡这种做法;然而,这些公司在塑造对象存储框架上是否能成功仍有待观察。

但是问题依然存在:对象持久化是对象特征的一部分或者是外部服务通过提供分离的接口给对象?通过什么样的对象集合和方法查询它们?在对象数据库和java语言本身视持久化为语言的内在时,关系,扩展关系,对象/关系往往在语言之间主张分裂的做法。

串行化实现java持久化

对象串行化是java语言中对象和元素的流的存储和读取的特殊策略。值得提醒的是,虽然有商用的第三方库对串行化C++对象的支持,但是C++本身并没有提供对象串行化的策略。下面是如何使用java的串行化:

// Writing "foo" to a stream (for example, a file)

// Step 1. Create an output stream

// that is, create bucket to receive the bytes

FileOutputStream out = new FileOutputStream("fooFile");

// Step 2. Create ObjectOutputStream

// that is, create a hose and put its head in the bucket

ObjectOutputStream os = new ObjectOutputStream(out)

// Step 3. Write a string and an object to the stream

// that is, let the stream flow into the bucket

os.writeObject("foo");

os.writeObject(new Foo());

// Step 4. Flush the data to its destination

os.flush();

writeObject方法串行化了foo对象和它的传递闭包――指的就是图中所有引用foo的对象。流内部只有串行化对象的一个副本存在。其它引用对象以对象句柄的形式存在来保存空格和防止循环引用。串行化对象以继承结构的每个类的属性开始,如下类的实现:// Reading an object from a stream

// Step 1. Create an input stream

FileInputStream in = new FileInputStream("fooFile");

// Step 2. Create an object input stream

ObjectInputStream ins = new ObjectInputStream(in);

// Step 3. Got to know what you are reading

String fooString = (String)ins.readObject();

Foo foo = (Foo)s.readObject();

对象串行化和安全

默认情况下,串行化写入流中和从流中读取的都是非静态和非临时的属性。这种特性能够被用作一个安全策略,通过定义无需串行化的属性为私有临时类型的变量。如果一个类不被串行化,那么writeObject和readObject方法将抛出NoAccessException 异常。

使用事务完整性的持久化:介绍JDBC

与X/Open的SQL CLI(客户端接口)和微软抽象的ODBC类型,JDBC的目的也是提供一个与数据库管理系统(DBMS)无关的数据库连接策略。要成为适用的JDBC,驱动至少要支持ANSI SQL-2 entry-level API,它是提供第三方工具和灵活数据库访问应用的厂商。

JDBC被设计为能与java系统相互兼容。开发者们要求厂商们提供比ODBC更加完善的API,能够在编译时提供静态类型的检查。下面是关于几个主要JDBC接口的描述:●Java.sql.Driver.Manager 手动加载驱动和为新的数据库连接提供支持

●Java.sql.Connection 表示一个特殊数据库的连接

●Java.sql.Statement 在执行给定连接的SQL语句时担当容器

●Java.sql.ResultSet 控制访问的结果集

你可以多种方式来实现JDBC驱动。最简单的是构建ODBC桥,这种方法最适合工具和应用不需要很高的性能。一个更容易扩展的设计是引进一个中间层来连接DBMS服务器,该层提供一个JDBC网络驱动器,它通过公共的协议来访问DBMS服务器。但是最有效率的驱动器就是直接使用DBMS本身的API。

对象数据库和java持久化

在行业中许多正在进行的项目都在对象层面提供了java持久化。对象设计的PSE(持久性存储引擎)和PSE Pro是唯一完全基于java的,可用的面向对象数据库软件包(至少,这是我所知道的)。关于PSE和专业PSE的更多信息请参看文献部分。

对软件厂家来说,java开发引领颠覆了传统的开发形式,在开发过程中是显而易见的。例如,PSE和PSE Pro是在不同的环境下开发的。因为在开发过程中这个不是在连接这步上,开发者们不得不创建相互独立的多个功能模块,这样就形成了更好,更可靠的面向对象编码。

PSE Pro能够恢复由于系统故障导致失败的事务引起的数据库的破坏。负责额外功能的类没有在发布的PSE版本中体现出来。除了这个区别,两个产品就没有其它的区别了。这些产品是我们所称的" dribbleware "――通过插入新的组件来增强软件发布版本的功能。不远的将来,购买大型的单个软件的概念将成为过去的事。这种在网络空间中的新的商业环境,加上java的处理技术,使用户只需要购买他们需要的对象模型,这样就导致更紧凑的最终产品。

PSE的工作是通过后处理技术和在开发人员创建的类文件中添加注解。从PSE的视图可以看出,在对象图中的类不是有可能持久化的就是已知要持久化的。有可能持久化的类只能持久它们本身,而已知要持久化的类能够操作他们的持久化对象。这样的不同是必须的,因为对某些类来说持久化不是必须的操作。类文件的后处理技术添加了以下的修改到类中:

●使类从odi.Persistent 或者odi.util.HashPersistent继承

●定义initializeContents()方法来加载实参到你的Persistent子类的空实例中,

GenericObject类中提供的ObjectsStore方法,用来获取每个属性的类型。为了能调用正确的方法,应该需要一个独立的方法。ObjectStore需要调用initializeContents()方法。方法如下:

?Public void initilazeContects(GenericObject genObj);

●定义一个flushContects()方法,用来将修改的实例(当前的持久化对象)拷贝回

数据库中。ObjectStore在GenericObject中提供方法,确保你的持久化对象属性能调用正确的方法。这样就需要一个独立的方法来设置Field对象的类型,ObjectStore需要调用flushContents()方法。方法如下:

?Public void flushContents(GenericObject genObj);

●定义一个clearContents()方法,用来重新设置实例的值为默认值。该方法必须将

所有引用持久化对象的引用属性设置为null。ObjectStore需要调用该方法。方法如下:

?Public void clearContents();

●修改引用非静态属性的方法来调用Persistent.fetch()和Persistent.dirty()方

法。这些方法必须在持久化对象的内容能够分别的被访问和修改之前被调用。这个步骤是非强制性的,它能提供一个系统的方式来确保fetch()或者dirty()在对象内容被访问或者修改之前被调用。

●定义一个类来提供可持久化类的概要信息

以上所有的步骤都可以手工或者自动完成。

PSE的事务语意

以前的ObjectStore使用者或许会发现,数据库和事务总是关联在一起。有一个广泛的系统ObjectStore对象来初始化环境和参数。数据库类提供create,open,close 方法,事务类有开始事务(begin),停止事务(abort),结束事务(commit)等方法。以序列化来看,你应该找到一个入口点。Database类的getRoot和setRoot方法具有这个功能,我想看例子才是最有帮助的。第一段代码显展现了如何初始化ObjectStore:ObjectStore.initialize(serverName, null);

try {

db = Database.open(dbName, Database.openUpdate);

} catch(DatabaseNotFoundException exception) {

db = Database.create(dbName, 0664);

}

下面的代码片段展视了如何开始和提交事务:

Transaction transaction = Transaction.begin(Transaction.update);

try {

foo = (Foo)db.getRoot("fooHead");

} catch(DatabaseRootNotFoundException exception) {

db.createRoot("fooHead", new Foo());

}

https://www.wendangku.net/doc/a814064571.html,mit();

上面提到的三个类,Transaction,Database和ObjectStore是ObjectStore主要的类。PSE1.0不支持传播事务,备份和恢复,群集,大型数据库,对象安全等在语言中有用的和任何分配方式。激动人心的是随着基础产品的日趋成熟,所有的这些功能也都在逐步的增加。

作者简介

Arsalan Saljoughy是一名系统工程师,是Sun公司在对象技术方面的专家。他获得纽约州立大学的数学M.S.,后来在柏林的一所大学担任研究源。在加入Sun之前,他是一名开发人员和一所财经服务公司的IT顾问。

结束语

虽然现在来确定对象持久化的方法特别是java持久化是否将来会成为主流还为之尚早,但是可以确定的是多种多样的方法会同时存在。虽然已对象的方式来存储对象,而不是把对象映射到行和属性列的方式要慢很多,但是这种方式有可能会发生。同时我们更希望看到对象数据库将在工程技术和远程通信技术应用的优势,而不是银行业务和办公财政业务的应用。

附件2:外文原文

Object persistence and Java

Get an in-depth look at the issues surrounding object persistence in object-oriented languages

By Arsalan Saljoughy, https://www.wendangku.net/doc/a814064571.html,, 05/01/97

Object durability, or persistence, is the term you often hear used in conjunction with the issue of storing objects in databases. Persistence is expected to operate with transactional integrity, and as such it is subject to strict conditions. (See the Resources section of this article for more information on transaction processing.) In contrast, language services offered through standard language libraries and packages are often free from transactional constraints.

As we'll see in this article, evidence suggests that simple Java persistence will likely stem from the language itself, while sophisticated database functionality will be offered by database vendors.

No object is an island

I n the real world, you rarely find an object that lacks relations to other objects. Objects are components of object models. The issue of object durability transcends the issue of object model durability and distribution once we make the observation that objects are interconnected by virtue of their relations to one another.

The relational approach to data storage tends to aggregate data by type. Rows in a table represent the physical aggregate of objects of the same type on disk. The relationships among objects are then represented by keys that are shared across many tables. Although through database organization, relational databases sometimes allow tables that are likely to be used together to be co-located (or clustered) in the same logical partition, such as a database segment, they have no mechanism to store object relationships in the database. Hence, in order to construct an object model, these relationships are constructed from the existing keys at run time in a process referred to as table joins. This is the same well-known property of the relational databases called data independence. Nearly all variants of object databases offer some mechanism to enhance the performance of a system that involves complex object relationships over traditional relational databases.

To query or to navigate?

In storing objects on disk, we are faced with the choice of co-locating related objects to better accommodate navigational access, or to store objects in table-like collections that aggregate objects by type to facilitate predicate-based access (queries), or both. The co-location of objects in persistent storage is an area where relational and object-oriented databases widely differ. The choice of the query language is another area of consideration. Structured Query Language (SQL) and extensions of it have provided relational systems with a predicate-based access mechanism. Object Query Language (OQL) is an object variant of SQL, standardized by ODMG, but support for this language is currently scant. Polymorphic methods offer unprecedented elegance in constructing a semantic query for a collection of objects. For example, imagine a polymorphic behavior for acccount called isInGoodStanding. It may return the Boolean true for all accounts in good standing, and false otherwise. Now imagine the elegance of querying the collection of accounts, where inGoodStanding is implemented differently based on business rules, for all accounts in good standing. It may look something like:

setOfGoodCustomers = setOfAccounts.query(account.inGoodStanding());

While several of the existing object databases are capable of processing such a query style in C++ and Smalltalk, it is difficult for them to do so for larger (say, 500+ gigabytes) collections and more complex

query expressions. Several of the relational database companies, such as Oracle and Informix, will soon offer other, SQL-based syntax to achieve the same result.

Persistence and type

An object-oriented language aficionado would say persistence and type are orthogonal properties of an object; that is, persistent and transient objects of the same type can be identical because one property should not influence the other. The alternative view holds that persistence is a behavior supported only by persistable objects and certain behaviors may apply only to persistent objects. The latter approach calls for methods that instruct persistable objects to store and retrieve themselves from persistent storage, while the former affords the application a seamless view of the entire object model -- often by extending the virtual memory system.

Canonicalization and language independence

Objects of the same type in a language should be stored in persistent storage with the same layout, regardless of the order in which their interfaces appear. The processes of transforming an object layout to this common format are collectively known as canonicalization of object representation. In compiled languages with static typing (not Java) objects written in the same language, but compiled under different systems, should be identically represented in persistent storage.

An extension of canonicalization addresses language-independent object representation. If objects can be represented in a language-independent fashion, it will be possible for different representations of the same object to share the same persistent storage.

One mechanism to accomplish this task is to introduce an additional level of indirection through an interface definition language (IDL). Object database interfaces can be made through the IDL and the corresponding data structures. The downside of IDL style bindings is two fold: First, the extra level of indirection always requires an additional level of translation, which impacts the overall performance of the system; second, it limits use of database services that are unique to particular vendors and that might be valuable to application developers.

A similar mechanism is to support object services through an extension of the SQL. Relational database vendors and smaller object/relational vendors are proponents of this approach; however, how successful these companies will be in shaping the framework for object storage remains to be seen.

But the question remains: Is object persistence part of the object's behavior or is it an external service offered to objects via separate interfaces? How about collections of objects and methods for querying them? Relational, extended relational, and object/relational approaches tend to advocate a separation between language, while object databases -- and the Java language itself -- see persistence as intrinsic to the language:

Native Java persistence via serialization

Object serialization is the Java language-specific mechanism for the storage and retrieval of Java objects and primitives to streams. It is worthy to note that although commercial third-party libraries for serializing C++ objects have been around for some time, C++ has never offered a native mechanism for object serialization. Here's how to use Java's serialization:

// Writing "foo" to a stream (for example, a file)

// Step 1. Create an output stream

// that is, create bucket to receive the bytes

FileOutputStream out = new FileOutputStream("fooFile");

// Step 2. Create ObjectOutputStream

// that is, create a hose and put its head in the bucket

ObjectOutputStream os = new ObjectOutputStream(out)

// Step 3. Write a string and an object to the stream

// that is, let the stream flow into the bucket

os.writeObject("foo");

os.writeObject(new Foo());

// Step 4. Flush the data to its destination

os.flush();

The Writeobject method serializes foo and its transitive closure -- that is, all objects that can be referenced from foo within the graph. Within the stream only one copy of the serialized object exists. Other references to the objects are stored as object handles to save space and avoid circular references. The serialized object starts with the class followed by the fields of each class in the inheritance hierarchy.

// Reading an object from a stream

// Step 1. Create an input stream

FileInputStream in = new FileInputStream("fooFile");

// Step 2. Create an object input stream

ObjectInputStream ins = new ObjectInputStream(in);

// Step 3. Got to know what you are reading

String fooString = (String)ins.readObject();

Foo foo = (Foo)s.readObject();

Object serialization and security

By default, serialization writes and reads non-static and non-transient fields from the stream. This characteristic can be used as a security mechanism by declaring fields that may not be serialized as private transient. If a class may not be serialized at all, writeObject and readObject methods should be implemented to throw NoAccessException.

Persistence with transactional integrity: Introducing JDBC

Modeled after X/Open's SQL CLI (Client Level Interface) and Microsoft's ODBC abstractions, Java database connectivity (JDBC) aims to provide a database connectivity mechanism that is independent of the underlying database management system (DBMS).To become

JDBC-compliant, drivers need to support at least the ANSI SQL-2 entry-level API, which gives third-party tool vendors and applications enough flexibility for database access.

JDBC is designed to be consistent with the rest of the Java system. Vendors are encouraged to write an API that is more strongly typed than ODBC, which affords greater static type-checking at compile time.

Here's a description of the most important JDBC interfaces:

java.sql.Driver.Manager handles the loading of drivers and provides support for new database connections.

java.sql.Connection represents a connection to a particular database.

java.sql.Statement acts as a container for executing an SQL statement on a given connection.

java.sql.ResultSet controls access to the result set.

You can implement a JDBC driver in several ways. The simplest would be to build the driver as a bridge to ODBC. This approach is best suited for tools and applications that do not require high performance. A more extensible design would introduce an extra level of indirection to the

DBMS server by providing a JDBC network driver that accesses the DBMS server through a published protocol. The most efficient driver, however, would directly access the DBMS proprietary API

Object databases and Java persistence

A number of ongoing projects in the industry offer Java persistence at the object level. However, as of this writing, Object Design's PSE (Persistent Storage Engine) and PSE Pro are the only fully Java-based, object-oriented database packages available (at least, that I am aware of). Check the Resources section for more information on PSE and PSE Pro.

Java development has led to a departure from the traditional development paradigm for software vendors, most notably in the development process timeline. For example, PSE and PSE Pro are developed in a heterogeneous environment. And because there isn't a linking step in the development process, developers have been able to create various functional components independent of each other, which results in better, more reliable object-oriented code.

PSE Pro has the ability to recover a corrupted database from an aborted transaction caused by system failure. The classes that are responsible for this added functionality are not present in the PSE release. No other differences exist between the two products. These products are what we call "dribbleware" -- software releases that enhance their functionality by plugging in new components. In the not-so-distant future, the concept of purchasing large, monolithic software would become a thing of the past. The new business environment in cyberspace, together with Java computing, enable users to purchase only those parts of the object model (object graph) they need, resulting in more compact end products.

PSE works by post-processing and annotating class files after they have been created by the developer. From PSE's point of view, classes in an object graph are either persistent-capable or persistent-aware. Persistent-capable classes may persist themselves while persistent-aware classes can operate on persistent objects. This distinction is necessary because persistence may not be a desired behavior for certain classes. The class file post-processor makes the following modifications to classes:

Modifies the class to inherit from odi.Persistent or odi.util.HashPersistent.

Defines the initializeContents() method to load real values into hollow instances of your Persistent subclass. ObjectStore provides methods on the GenericObject class that retrieves each Field type.

Be sure to call the correct methods for the fields in your persistent object. A separate method is available for obtaining each type of Field object. ObjectStore calls the initializeContents() method as needed. The method signature is:

public void initializeContents(GenericObject genObj)

Defines the flushContents() method to copy values from a modified instance (active persistent object) back to the database. ObjectStore provides methods on the GenericObject Be sure to call the correct methods for the fields in your persistent object. A separate method is available for setting each type of Field object. ObjectStore calls the flushContents() method as needed. The method signature is:

public void flushContents(GenericObject genObj)

Defines the clearContents() method to reset the values of an instance to the default values. This method must set all reference fields that referred to persistent objects to null. ObjectStore calls this method as needed. The method signature is:

public void clearContents()

Modifies the methods that reference non-static fields to call the Persistent.fetch() and Persistent.dirty() methods as needed. These methods must be called before the contents of persistent objects can be accessed or modified, respectively. While this step is not mandatory, it does provide a systematic way to ensure that the fetch() or dirty() method is called prior to accessing or updating object content.

Defines a class that provides schema information about the persistence-capable class.

All these steps can be completed either manually or automatically.

PSE's transaction semantic

You old-time users of ObjectStore probably will find the database and transaction semantics familiar. There is a system-wide ObjectStore object that initializes the environment and is responsible for system-wide parameters. The Database class offers methods (such as create, open, and close), and the Transaction class has methods to begin, abort, or commit transactions. As with serialization, you need to find an entry point into the object graph. The getRoot and setRoot methods of the Database class serve this function. I think a few examples would be helpful here. This first snippet shows how to initialize ObjectStore:

ObjectStore.initialize(serverName, null);

try {

db = Database.open(dbName, Database.openUpdate);

} catch(DatabaseNotFoundException exception) {

db = Database.create(dbName, 0664);

}

This next snippet shows how to start and commit a transaction:

Transaction transaction = Transaction.begin(Transaction.update);

try {

foo = (Foo)db.getRoot("fooHead");

} catch(DatabaseRootNotFoundException exception) {

db.createRoot("fooHead", new Foo());

}

https://www.wendangku.net/doc/a814064571.html,mit();

The three classes specified above -- Transaction, Database, and ObjectStore -- are fundamental classes for ObjectStore. PSE 1.0 does not support nested transactions, backup and recovery, clustering, large databases, object security beyond what is available in the language, and any type of distribution. What is exciting, however, is all of this functionality will be incrementally added to the same foundation as the product matures.

About the author

Arsalan Saljoughy is asystems engineer specializing in object technology at Sun Microsystems. He earned his M.S. in mathematics from SUNY at Albany, and subsequently was a research fellow at the University of Berlin. Before joining Sun, he worked as a developer and as an IT consultant to financial services companies.

Conclusion

Although it is still too early to establish which methodology for object persistence in general

and Java persistence in particular will be dominant in the future, it is safe to assume that a myriad of such styles will co-exist. The shift of storing objects as objects without disassembly into rows and columns is sure to be slow, but it will happen. In the meantime, we are more likely to see object databases better utilized in advanced engineering and telecommunications applications than in banking and back-office financial applications.

1外文文献翻译原文及译文汇总

华北电力大学科技学院 毕业设计(论文)附件 外文文献翻译 学号:121912020115姓名:彭钰钊 所在系别:动力工程系专业班级:测控技术与仪器12K1指导教师:李冰 原文标题:Infrared Remote Control System Abstract 2016 年 4 月 19 日

红外遥控系统 摘要 红外数据通信技术是目前在世界范围内被广泛使用的一种无线连接技术,被众多的硬件和软件平台所支持。红外收发器产品具有成本低,小型化,传输速率快,点对点安全传输,不受电磁干扰等特点,可以实现信息在不同产品之间快速、方便、安全地交换与传送,在短距离无线传输方面拥有十分明显的优势。红外遥控收发系统的设计在具有很高的实用价值,目前红外收发器产品在可携式产品中的应用潜力很大。全世界约有1亿5千万台设备采用红外技术,在电子产品和工业设备、医疗设备等领域广泛使用。绝大多数笔记本电脑和手机都配置红外收发器接口。随着红外数据传输技术更加成熟、成本下降,红外收发器在短距离通讯领域必将得到更广泛的应用。 本系统的设计目的是用红外线作为传输媒质来传输用户的操作信息并由接收电路解调出原始信号,主要用到编码芯片和解码芯片对信号进行调制与解调,其中编码芯片用的是台湾生产的PT2262,解码芯片是PT2272。主要工作原理是:利用编码键盘可以为PT2262提供的输入信息,PT2262对输入的信息进行编码并加载到38KHZ的载波上并调制红外发射二极管并辐射到空间,然后再由接收系统接收到发射的信号并解调出原始信息,由PT2272对原信号进行解码以驱动相应的电路完成用户的操作要求。 关键字:红外线;编码;解码;LM386;红外收发器。 1 绪论

计算机专业外文文献及翻译

微软Visual Studio 1微软Visual Studio Visual Studio 是微软公司推出的开发环境,Visual Studio可以用来创建Windows平台下的Windows应用程序和网络应用程序,也可以用来创建网络服务、智能设备应用程序和Office 插件。Visual Studio是一个来自微软的集成开发环境IDE,它可以用来开发由微软视窗,视窗手机,Windows CE、.NET框架、.NET精简框架和微软的Silverlight支持的控制台和图形用户界面的应用程序以及Windows窗体应用程序,网站,Web应用程序和网络服务中的本地代码连同托管代码。 Visual Studio包含一个由智能感知和代码重构支持的代码编辑器。集成的调试工作既作为一个源代码级调试器又可以作为一台机器级调试器。其他内置工具包括一个窗体设计的GUI应用程序,网页设计师,类设计师,数据库架构设计师。它有几乎各个层面的插件增强功能,包括增加对支持源代码控制系统(如Subversion和Visual SourceSafe)并添加新的工具集设计和可视化编辑器,如特定于域的语言或用于其他方面的软件开发生命周期的工具(例如Team Foundation Server的客户端:团队资源管理器)。 Visual Studio支持不同的编程语言的服务方式的语言,它允许代码编辑器和调试器(在不同程度上)支持几乎所有的编程语言,提供了一个语言特定服务的存在。内置的语言中包括C/C + +中(通过Visual C++),https://www.wendangku.net/doc/a814064571.html,(通过Visual https://www.wendangku.net/doc/a814064571.html,),C#中(通过Visual C#)和F#(作为Visual Studio 2010),为支持其他语言,如M,Python,和Ruby等,可通过安装单独的语言服务。它也支持的 XML/XSLT,HTML/XHTML ,JavaScript和CSS.为特定用户提供服务的Visual Studio也是存在的:微软Visual Basic,Visual J#、Visual C#和Visual C++。 微软提供了“直通车”的Visual Studio 2010组件的Visual Basic和Visual C#和Visual C + +,和Visual Web Developer版本,不需任何费用。Visual Studio 2010、2008年和2005专业版,以及Visual Studio 2005的特定语言版本(Visual Basic、C++、C#、J#),通过微软的下载DreamSpark计划,对学生免费。 2架构 Visual Studio不支持任何编程语言,解决方案或工具本质。相反,它允许插入各种功能。特定的功能是作为一个VS压缩包的代码。安装时,这个功能可以从服务器得到。IDE提供三项服务:SVsSolution,它提供了能够列举的项目和解决方案; SVsUIShell,它提供了窗口和用户界面功能(包括标签,工具栏和工具窗口)和SVsShell,它处理VS压缩包的注册。此外,IDE还可以负责协调和服务之间实现通信。所有的编辑器,设计器,项目类型和其他工具都是VS压缩包存在。Visual Studio 使用COM访问VSPackage。在Visual Studio SDK中还包括了管理软件包框架(MPF),这是一套管理的允许在写的CLI兼容的语言的任何围绕COM的接口。然而,MPF并不提供所有的Visual Studio COM 功能。

外文翻译

Load and Ultimate Moment of Prestressed Concrete Action Under Overload-Cracking Load It has been shown that a variation in the external load acting on a prestressed beam results in a change in the location of the pressure line for beams in the elastic range.This is a fundamental principle of prestressed construction.In a normal prestressed beam,this shift in the location of the pressure line continues at a relatively uniform rate,as the external load is increased,to the point where cracks develop in the tension fiber.After the cracking load has been exceeded,the rate of movement in the pressure line decreases as additional load is applied,and a significant increase in the stress in the prestressing tendon and the resultant concrete force begins to take place.This change in the action of the internal moment continues until all movement of the pressure line ceases.The moment caused by loads that are applied thereafter is offset entirely by a corresponding and proportional change in the internal forces,just as in reinforced-concrete construction.This fact,that the load in the elastic range and the plastic range is carried by actions that are fundamentally different,is very significant and renders strength computations essential for all designs in order to ensure that adequate safety factors exist.This is true even though the stresses in the elastic range may conform to a recognized elastic design criterion. It should be noted that the load deflection curve is close to a straight line up to the cracking load and that the curve becomes progressively more curved as the load is increased above the cracking load.The curvature of the load-deflection curve for loads over the cracking load is due to the change in the basic internal resisting moment action that counteracts the applied loads,as described above,as well as to plastic strains that begin to take place in the steel and the concrete when stressed to high levels. In some structures it may be essential that the flexural members remain crack free even under significant overloads.This may be due to the structures’being exposed to exceptionally corrosive atmospheres during their useful life.In designing prestressed members to be used in special structures of this type,it may be necessary to compute the load that causes cracking of the tensile flange,in order to ensure that adequate safety against cracking is provided by the design.The computation of the moment that will cause cracking is also necessary to ensure compliance with some design criteria. Many tests have demonstrated that the load-deflection curves of prestressed beams are approximately linear up to and slightly in excess of the load that causes the first cracks in the tensile flange.(The linearity is a function of the rate at which the load is applied.)For this reason,normal elastic-design relationships can be used in computing the cracking load by simply determining the load that results in a net tensile stress in the tensile flange(prestress minus the effects of the applied loads)that is equal to the tensile strength of the concrete.It is customary to assume that the flexural tensile strength of the concrete is equal to the modulus of rupture of the

外文资料及其翻译

A Wavelet Based Approach for Fast Detection of Internal Fault in Power Transformers The power transformer is one of the most expensive elements of power system and its protection is an essential part of the overall system protection strategy. The differential protection provides the best protection for power transformer. Its operation principle is based on this point that the differential current during an internal fault is higher than normal condition. But, a large transient current (inrush current) can cause mal-operation of differential relays. Then, studies for the improvement of the transformer protection have focused on discrimination between internal short circuit faults and inrush currents in transformers. The magnetizing inrush current has a large second order harmonic component in comparison to internal faults. Therefore , some transformer protection systems are designed to halt operating during the inrush current by sensing this large second order harmonic. The second harmonic component in the magnetizing inrush currents tend to be relatively small in modern large power transformers because of improvements in the power transformer core materials. Also , it has been seen that the fault current can contain higher second order harmonics than the inrush current due to nonlinear fault resistance, CT saturation .the distributed capacitance in the transmission line, which transformer is connected to, or due to the use of extra high voltage underground cables. Various methods have been suggested for overcoming this protection system mal-operation. This paper presents a wavelet based method for discrimination among inrush current, internal short circuit ,external short circuit and energizing and it is not affected by CT saturation and it is able to detect internal faults while transformer energization. Unlike Artificial Neural Network and Fuzzy logic based algorithms. This approach is not system dependent. The operating time of the scheme is less than 10ms. The Daubechies mother wavelet is used with a sample rate of 5 kHz. Then , the differential currents of the three phases are decomposed into two details and only the second level will be considered by using db5 mother wavelet. Discrete Wavelet Transform The wavelet transform is a powerful tool to extract information from the non-stationary signals simultaneously in both time and frequency domains. The ability of the wavelet transform to focus on short time intervals for high-frequency components and long intervals for low-frequency components improves the analysis

土木外文翻译原文和译文

A convection-conduction model for analysis of the freeze-thaw conditions in the surrounding rock wall of a tunnel in permafrost regions Abstract Based on the analyses of fundamental meteorological and hydrogeological conditions at the site of a tunnel in the cold regions, a combined convection-conduction model for air flow in the tunnel and temperature field in the surrounding has been constructed. Using the model, the air temperature distribution in the Xiluoqi No. 2 Tunnel has been simulated numerically. The simulated results are in agreement with the data observed. Then, based on the in situ conditions of sir temperature, atmospheric pressure, wind force, hydrogeology and engineering geology, the air-temperature relationship between the temperature on the surface of the tunnel wall and the air temperature at the entry and exit of the tunnel has been obtained, and the freeze-thaw conditions at the Dabanshan Tunnel which is now under construction is predicted. Keywords: tunnel in cold regions, convective heat exchange and conduction, freeze-thaw. A number of highway and railway tunnels have been constructed in the permafrost regions and their neighboring areas in China. Since the hydrological and thermal conditions changed after a tunnel was excavated,the surrounding wall rock materials often froze, the frost heaving caused damage to the liner layers and seeping water froze into ice diamonds,which seriously interfered with the communication and transportation. Similar problems of the freezing damage in the tunnels also appeared in other countries like Russia, Norway and Japan .Hence it is urgent to predict the freeze-thaw conditions in the surrounding rock materials and provide a basis for the design,construction and

毕业设计外文翻译资料

外文出处: 《Exploiting Software How to Break Code》By Greg Hoglund, Gary McGraw Publisher : Addison Wesley Pub Date : February 17, 2004 ISBN : 0-201-78695-8 译文标题: JDBC接口技术 译文: JDBC是一种可用于执行SQL语句的JavaAPI(ApplicationProgrammingInterface应用程序设计接口)。它由一些Java语言编写的类和界面组成。JDBC为数据库应用开发人员、数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。 一、ODBC到JDBC的发展历程 说到JDBC,很容易让人联想到另一个十分熟悉的字眼“ODBC”。它们之间有没有联系呢?如果有,那么它们之间又是怎样的关系呢? ODBC是OpenDatabaseConnectivity的英文简写。它是一种用来在相关或不相关的数据库管理系统(DBMS)中存取数据的,用C语言实现的,标准应用程序数据接口。通过ODBCAPI,应用程序可以存取保存在多种不同数据库管理系统(DBMS)中的数据,而不论每个DBMS使用了何种数据存储格式和编程接口。 1.ODBC的结构模型 ODBC的结构包括四个主要部分:应用程序接口、驱动器管理器、数据库驱动器和数据源。应用程序接口:屏蔽不同的ODBC数据库驱动器之间函数调用的差别,为用户提供统一的SQL编程接口。 驱动器管理器:为应用程序装载数据库驱动器。 数据库驱动器:实现ODBC的函数调用,提供对特定数据源的SQL请求。如果需要,数据库驱动器将修改应用程序的请求,使得请求符合相关的DBMS所支持的文法。 数据源:由用户想要存取的数据以及与它相关的操作系统、DBMS和用于访问DBMS的网络平台组成。 虽然ODBC驱动器管理器的主要目的是加载数据库驱动器,以便ODBC函数调用,但是数据库驱动器本身也执行ODBC函数调用,并与数据库相互配合。因此当应用系统发出调用与数据源进行连接时,数据库驱动器能管理通信协议。当建立起与数据源的连接时,数据库驱动器便能处理应用系统向DBMS发出的请求,对分析或发自数据源的设计进行必要的翻译,并将结果返回给应用系统。 2.JDBC的诞生 自从Java语言于1995年5月正式公布以来,Java风靡全球。出现大量的用java语言编写的程序,其中也包括数据库应用程序。由于没有一个Java语言的API,编程人员不得不在Java程序中加入C语言的ODBC函数调用。这就使很多Java的优秀特性无法充分发挥,比如平台无关性、面向对象特性等。随着越来越多的编程人员对Java语言的日益喜爱,越来越多的公司在Java程序开发上投入的精力日益增加,对java语言接口的访问数据库的API 的要求越来越强烈。也由于ODBC的有其不足之处,比如它并不容易使用,没有面向对象的特性等等,SUN公司决定开发一Java语言为接口的数据库应用程序开发接口。在JDK1.x 版本中,JDBC只是一个可选部件,到了JDK1.1公布时,SQL类包(也就是JDBCAPI)

毕业设计外文资料翻译译文

附件1:外文资料翻译译文 包装对食品发展的影响 一个消费者对某个产品的第一印象来说包装是至关重要的,包括沟通的可取性,可接受性,健康饮食形象等。食品能够提供广泛的产品和包装组合,传达自己加工的形象感知给消费者,例如新鲜包装/准备,冷藏,冷冻,超高温无菌,消毒(灭菌),烘干产品。 食物的最重要的质量属性之一,是它的味道,其影响人类的感官知觉,即味觉和嗅觉。味道可以很大程度作退化的处理和/或扩展存储。其他质量属性,也可能受到影响,包括颜色,质地和营养成分。食品质量不仅取决于原材料,添加剂,加工和包装的方法,而且其预期的货架寿命(保质期)过程中遇到的分布和储存条件的质量。越来越多的竞争当中,食品生产商,零售商和供应商;和质量审核供应商有显着提高食品质量以及急剧增加包装食品的选择。这些改进也得益于严格的冷藏链中的温度控制和越来越挑剔的消费者。 保质期的一个定义是:在食品加工和包装组合下,在食品的容器和条件,在销售点分布在特定系统的时间能保持令人满意的食味品质。保质期,可以用来作为一个新鲜的概念,促进营销的工具。延期或保质期长的产品,还提供产品的使用时间,方便以及减少浪费食物的风险,消费者和/或零售商。包装产品的质量和保质期的主题是在第3章中详细讨论。 包装为消费者提供有关产品的重要信息,在许多情况下,使用的包装和/或产品,包括事实信息如重量,体积,配料,制造商的细节,营养价值,烹饪和开放的指示,除了法律准则的最小尺寸的文字和数字,有定义的各类产品。消费者寻求更详细的产品信息,同时,许多标签已经成为多语种。标签的可读性是为视障人士的问题,这很可能成为一个对越来越多的老年人口越来越重要的问题。 食物的选择和包装创新的一个主要驱动力是为了方便消费者的需求。这里有许多方便的现代包装所提供的属性,这些措施包括易于接入和开放,处置和处理,产品的知名度,再密封性能,微波加热性,延长保质期等。在英国和其他发达经济体显示出生率下降和快速增长的一个相对富裕的老人人口趋势,伴随着更加苛

【最新推荐】应急法律外文文献翻译原文+译文

文献出处:Thronson P. Toward Comprehensive Reform of America’s Emergency Law Regime [J]. University of Michigan Journal of Law Reform, 2013, 46(2). 原文 TOWARD COMPREHENSIVE REFORM OF AMERICA’S EMERGENCY LAW REGIME Patrick A. Thronson Unbenownst to most Americans, the United States is presently under thirty presidentially declared states of emergency. They confer vast powers on the Executive Branch, including the ability to financially incapacitate any person or organization in the United States, seize control of the nation’s communications infrastructure, mobilize military forces, expand the permissible size of the military without congressional authorization, and extend tours of duty without consent from service personnel. Declared states of emergency may also activate Presidential Emergency Action Documents and other continuity-of-government procedures, which confer powers on the President—such as the unilateral suspension of habeas corpus—that appear fundamentally opposed to the American constitutional order.

外文文献及翻译

文献翻译 原文 Combining JSP and Servlets The technology of JSP and Servlet is the most important technology which use Java technology to exploit request of server, and it is also the standard which exploit business application .Java developers prefer to use it for a variety of reasons, one of which is already familiar with the Java language for the development of this technology are easy to learn Java to the other is "a preparation, run everywhere" to bring the concept of Web applications, To achieve a "one-prepared everywhere realized." And more importantly, if followed some of the principles of good design, it can be said of separating and content to create high-quality, reusable, easy to maintain and modify the application. For example, if the document in HTML embedded Java code too much (script), will lead the developed application is extremely complex, difficult to read, it is not easy reuse, but also for future maintenance and modification will also cause difficulties. In fact, CSDN the JSP / Servlet forum, can often see some questions, the code is very long, can logic is not very clear, a large number of HTML and Java code mixed together. This is the random development of the defects. Early dynamic pages mainly CGI (Common Gateway Interface, public Gateway Interface) technology, you can use different languages of the CGI programs, such as VB, C / C + + or Delphi, and so on. Though the technology of CGI is developed and powerful, because of difficulties in programming, and low efficiency, modify complex shortcomings, it is gradually being replaced by the trend. Of all the new technology, JSP / Servlet with more efficient and easy to program, more powerful, more secure and has a good portability, they have been many people believe that the future is the most dynamic site of the future development of technology. Similar to CGI, Servlet support request / response model. When a customer submit a request to the server, the server presented the request Servlet, Servlet responsible for handling requests and generate a response, and then gave the server, and then from the server sent to

引进外资外文翻译资料

河南科技学院新科学院 2013届本科毕业生论文(设计) 英文文献及翻译 Foreign capital inflows and welfare in an economy with imperfect competition 学生姓名:王艳杰 所在院系:经济系 所学专业:国际经济与贸易 导师姓名:侯黎杰 完成时间:2013年4月15日

Foreign capital inflows and welfare in an economy with imperfect competition Abstract:This paper examines the resource allocational and welfare effects of exogenous inflows of foreign capital in a general-equilibrium model with oligopolistic competition and unemployment. Although the welfare impact for the short run is ambiguous and dependent upon the strength of excess profits and scale economies relative to unemployment in manufacturing, in the long run additional inflows of foreign capital always improve national welfare with capital mobility. Hence, attracting foreign capital remains a sound policy for economies characterized by imperfect competition, scale economies,and regional unemployment. Keywords: International capital mobility; Imperfect competition; Welfare 1.Introduction The welfare effects of exogenous inflows of foreign capital in the presence of trade restrictions have been extensively studied. Brecher and Diaz Alejandro (1977) show that when imports are subject to tariffs, an introduction of fo reign capital inflows accentuates the tariff distortion and hence reduces national welfare if the import-competing sector is relatively capital-intensive. In contrast, Dei (1985) shows that when imports are restricted by quotas,foreign capital inflows in the presence of foreign-owned capital always improve welfare by depressing the rental and so lowering the payments to existing foreign-owned capital. Recently, Neary (1981), using a common framework for both tariffs and quotas, obtains more general results of foreign capital inflows; the welfare effect of such inflows depends crucially on whether foreign-owned capital exists initially in the home country. In addition, Khan (1982) and Grinols (1991) have examined the effects of foreign capital inflows for a generalized Harris-Todaro economy under tariff protection. Khan finds that the result by Brecher and Diaz Alejandro is still valid even in the presence of unemployment, whereas Grinols argues that increased foreign capital need not be detrimental to welfare if the opportunity costs of labor are sufficiently low. Noteworthy is that the models used by these authors are all based upon the premise of perfect competition along with constant returns-to-scale technology. Although perfect competition serves as a useful assumption in crystallizing theoretical insights, it nevertheless fails to depict many of the real-world phenomena. The real-world economy is characterized, to a large extent, by imperfect competition and economies of scale. The policy implications of imperfect competition and economies

毕业设计(论文)外文资料翻译〔含原文〕

南京理工大学 毕业设计(论文)外文资料翻译 教学点:南京信息职业技术学院 专业:电子信息工程 姓名:陈洁 学号: 014910253034 外文出处:《 Pci System Architecture 》 (用外文写) 附件: 1.外文资料翻译译文;2.外文原文。 指导教师评语: 该生外文翻译没有基本的语法错误,用词准确,没 有重要误译,忠实原文;译文通顺,条理清楚,数量与 质量上达到了本科水平。 签名: 年月日 注:请将该封面与附件装订成册。

附件1:外文资料翻译译文 64位PCI扩展 1.64位数据传送和64位寻址:独立的能力 PCI规范给出了允许64位总线主设备与64位目标实现64位数据传送的机理。在传送的开始,如果回应目标是一个64位或32位设备,64位总线设备会自动识别。如果它是64位设备,达到8个字节(一个4字)可以在每个数据段中传送。假定是一串0等待状态数据段。在33MHz总线速率上可以每秒264兆字节获取(8字节/传送*33百万传送字/秒),在66MHz总线上可以528M字节/秒获取。如果回应目标是32位设备,总线主设备会自动识别并且在下部4位数据通道上(AD[31::00])引导,所以数据指向或来自目标。 规范也定义了64位存储器寻址功能。此功能只用于寻址驻留在4GB地址边界以上的存储器目标。32位和64位总线主设备都可以实现64位寻址。此外,对64位寻址反映的存储器目标(驻留在4GB地址边界上)可以看作32位或64位目标来实现。 注意64位寻址和64位数据传送功能是两种特性,各自独立并且严格区分开来是非常重要的。一个设备可以支持一种、另一种、都支持或都不支持。 2.64位扩展信号 为了支持64位数据传送功能,PCI总线另有39个引脚。 ●REQ64#被64位总线主设备有效表明它想执行64位数据传送操作。REQ64#与FRAME#信号具有相同的时序和间隔。REQ64#信号必须由系统主板上的上拉电阻来支持。当32位总线主设备进行传送时,REQ64#不能又漂移。 ●ACK64#被目标有效以回应被主设备有效的REQ64#(如果目标支持64位数据传送),ACK64#与DEVSEL#具有相同的时序和间隔(但是直到REQ64#被主设备有效,ACK64#才可被有效)。像REQ64#一样,ACK64#信号线也必须由系统主板上的上拉电阻来支持。当32位设备是传送目标时,ACK64#不能漂移。 ●AD[64::32]包含上部4位地址/数据通道。 ●C/BE#[7::4]包含高4位命令/字节使能信号。 ●PAR64是为上部4个AD通道和上部4位C/BE信号线提供偶校验的奇偶校验位。 以下是几小结详细讨论64位数据传送和寻址功能。 3.在32位插入式连接器上的64位卡

相关文档