﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-&lt;font style="font-size:32px;"&gt;Code@Oxidy&lt;/font&gt;</title><link>http://www.blogjava.net/oxidy/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 06:01:00 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 06:01:00 GMT</pubDate><ttl>60</ttl><item><title>JPA &amp; Hibernate 注解</title><link>http://www.blogjava.net/oxidy/archive/2013/06/06/400266.html</link><dc:creator>oxidy</dc:creator><author>oxidy</author><pubDate>Thu, 06 Jun 2013 01:50:00 GMT</pubDate><guid>http://www.blogjava.net/oxidy/archive/2013/06/06/400266.html</guid><wfw:comment>http://www.blogjava.net/oxidy/comments/400266.html</wfw:comment><comments>http://www.blogjava.net/oxidy/archive/2013/06/06/400266.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/oxidy/comments/commentRss/400266.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxidy/services/trackbacks/400266.html</trackback:ping><description><![CDATA[
<p>@Entity(name="EntityName")
<br/>
必须,name为可选,对应数据库中一的个表
<br/>
<br/>
2、@Table(name="",catalog="",schema="")
<br/>
可选,通常和@Entity配合使用,只能标注在实体的class定义处,表示实体对应的数据库表的信息
<br/>
name:可选,表示表的名称.默认地,表名和实体名称一致,只有在不一致的情况下才需要指定表名
<br/>
catalog:可选,表示Catalog名称,默认为Catalog("").
<br/>
schema:可选,表示Schema名称,默认为Schema("").
<br/>
<br/>
3、@id
<br/>
必须
<br/>
@id定义了映射到数据库表的主键的属性,一个实体只能有一个属性被映射为主键.置于getXxxx()前.
<br/>
<br/>
4、@GeneratedValue(strategy=GenerationType,generator="")
<br/>
可选
<br/>
strategy:表示主键生成策略,有AUTO,INDENTITY,SEQUENCE 和 TABLE 4种,分别表示让ORM框架自动选择,
<br/>
根据数据库的Identity字段生成,根据数据库表的Sequence字段生成,以有根据一个额外的表生成主键,默认为AUTO
<br/>
generator:表示主键生成器的名称,这个属性通常和ORM框架相关,例如,Hibernate可以指定uuid等主键生成方式.
<br/>
示例:
<br/>
@Id
<br/>
@GeneratedValues(strategy=StrategyType.SEQUENCE)
<br/>
public int getPk() {
<br/>
return pk;
<br/>
}
<br/>
<br/>
5、@Basic(fetch=FetchType,optional=true)
<br/>
可选
<br/>
@Basic表示一个简单的属性到数据库表的字段的映射,对于没有任何标注的getXxxx()方法,默认即为@Basic
<br/>
fetch: 表示该属性的读取策略,有EAGER和LAZY两种,分别表示主支抓取和延迟加载,默认为EAGER.
<br/>
optional:表示该属性是否允许为null,默认为true
<br/>
示例:
<br/>
@Basic(optional=false)
<br/>
public String getAddress() {
<br/>
return address;
<br/>
}
<br/>
<br/>
6、@Column
<br/>
可选
<br/>
@Column描述了数据库表中该字段的详细定义,这对于根据JPA注解生成数据库表结构的工具非常有作用.
<br/>
name:表示数据库表中该字段的名称,默认情形属性名称一致
<br/>
nullable:表示该字段是否允许为null,默认为true
<br/>
unique:表示该字段是否是唯一标识,默认为false
<br/>
length:表示该字段的大小,仅对String类型的字段有效
<br/>
insertable:表示在ORM框架执行插入操作时,该字段是否应出现INSETRT语句中,默认为true
<br/>
updateable:表示在ORM框架执行更新操作时,该字段是否应该出现在UPDATE语句中,默认为true.对于一经创建就不可以更改的字段,该属性非常有用,如对于birthday字段.
<br/>
columnDefinition: 表示该字段在数据库中的实际类型.通常ORM框架可以根据属性类型自动判断数据库中字段的类型,但是对于Date类型仍无法确定数据库中字段类型究竟是 DATE,TIME还是TIMESTAMP.此外,String的默认映射类型为VARCHAR,如果要将String类型映射到特定数据库的BLOB或 TEXT字段类型,该属性非常有用.
<br/>
示例:
<br/>
@Column(name="BIRTH",nullable="false",columnDefinition="DATE")
<br/>
public String getBithday() {
<br/>
return birthday;
<br/>
}
<br/>
<br/>
7、@Transient
<br/>
可选
<br/>
@Transient表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性.
<br/>
如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic
<br/>
示例:
<br/>
//根据birth计算出age属性
<br/>
@Transient
<br/>
public int getAge() {
<br/>
return getYear(new Date()) - getYear(birth);
<br/>
}
<br/>
<br/>
8、@ManyToOne(fetch=FetchType,cascade=CascadeType)
<br/>
可选
<br/>
@ManyToOne表示一个多对一的映射,该注解标注的属性通常是数据库表的外键
<br/>
optional:是否允许该字段为null,该属性应该根据数据库表的外键约束来确定,默认为true
<br/>
fetch:表示抓取策略,默认为FetchType.EAGER
<br/>
cascade:表示默认的级联操作策略,可以指定为ALL,PERSIST,MERGE,REFRESH和REMOVE中的若干组合,默认为无级联操作
<br/>
targetEntity:表示该属性关联的实体类型.该属性通常不必指定,ORM框架根据属性类型自动判断targetEntity.
<br/>
示例:
<br/>
//订单Order和用户User是一个ManyToOne的关系
<br/>
//在Order类中定义
<br/>
@ManyToOne()
<br/>
@JoinColumn(name="USER")
<br/>
public User getUser() {
<br/>
return user;
<br/>
}
<br/>
<br/>
9、@JoinColumn
<br/>
可选
<br/>
@JoinColumn和@Column类似,介量描述的不是一个简单字段,而一一个关联字段,例如.描述一个@ManyToOne的字段.
<br/>
name:该字段的名称.由于@JoinColumn描述的是一个关联字段,如ManyToOne,则默认的名称由其关联的实体决定.
<br/>
例如,实体Order有一个user属性来关联实体User,则Order的user属性为一个外键,
<br/>
其默认的名称为实体User的名称+下划线+实体User的主键名称
<br/>
示例:
<br/>
见@ManyToOne
<br/>
<br/>
10、@OneToMany(fetch=FetchType,cascade=CascadeType)
<br/>
可选
<br/>
@OneToMany描述一个一对多的关联,该属性应该为集体类型,在数据库中并没有实际字段.
<br/>
fetch:表示抓取策略,默认为FetchType.LAZY,因为关联的多个对象通常不必从数据库预先读取到内存
<br/>
cascade:表示级联操作策略,对于OneToMany类型的关联非常重要,通常该实体更新或删除时,其关联的实体也应当被更新或删除
<br/>
例如:实体User和Order是OneToMany的关系,则实体User被删除时,其关联的实体Order也应该被全部删除
<br/>
示例:
<br/>
@OneToMany(cascade=ALL)
<br/>
public List getOrders() {
<br/>
return orders;
<br/>
}
<br/>
<br/>
11、@OneToOne(fetch=FetchType,cascade=CascadeType)
<br/>
可选
<br/>
@OneToOne描述一个一对一的关联
<br/>
fetch:表示抓取策略,默认为FetchType.LAZY
<br/>
cascade:表示级联操作策略
<br/>
示例:
<br/>
@OneToOne(fetch=FetchType.LAZY)
<br/>
public Blog getBlog() {
<br/>
return blog;
<br/>
}
<br/>
<br/>
12、@ManyToMany
<br/>
可选
<br/>
@ManyToMany 描述一个多对多的关联.多对多关联上是两个一对多关联,但是在ManyToMany描述中,中间表是由ORM框架自动处理
<br/>
targetEntity:表示多对多关联的另一个实体类的全名,例如:package.Book.class
<br/>
mappedBy:表示多对多关联的另一个实体类的对应集合属性名称
<br/>
示例:
<br/>
User实体表示用户,Book实体表示书籍,为了描述用户收藏的书籍,可以在User和Book之间建立ManyToMany关联
<br/>
@Entity
<br/>
public class User {
<br/>
private List books;
<br/>
@ManyToMany(targetEntity=package.Book.class)
<br/>
public List getBooks() {
<br/>
return books;
<br/>
}
<br/>
public void setBooks(List books) {
<br/>
this.books=books;
<br/>
}
<br/>
}
<br/>
<br/>
@Entity
<br/>
public class Book {
<br/>
private List users;
<br/>
@ManyToMany(targetEntity=package.Users.class, mappedBy="books")
<br/>
public List getUsers() {
<br/>
return users;
<br/>
}
<br/>
public void setUsers(List users) {
<br/>
this.users=users;
<br/>
}
<br/>
}
<br/>
两个实体间相互关联的属性必须标记为@ManyToMany,并相互指定targetEntity属性,
<br/>
需要注意的是,有且只有一个实体的@ManyToMany注解需要指定mappedBy属性,指向targetEntity的集合属性名称
<br/>
利用ORM工具自动生成的表除了User和Book表外,还自动生成了一个User_Book表,用于实现多对多关联
<br/>
<br/>
13、@MappedSuperclass
<br/>
可选
<br/>
@MappedSuperclass可以将超类的JPA注解传递给子类,使子类能够继承超类的JPA注解
<br/>
示例:
<br/>
@MappedSuperclass
<br/>
public class Employee() {
<br/>
....
<br/>
}
<br/>
<br/>
@Entity
<br/>
public class Engineer extends Employee {
<br/>
.....
<br/>
}
<br/>
@Entity
<br/>
public class Manager extends Employee {
<br/>
.....
<br/>
}
<br/>
<br/>
14、@Embedded
<br/>
可选
<br/>
@Embedded将几个字段组合成一个类,并作为整个Entity的一个属性.
<br/>
例如User包括id,name,city,street,zip属性.
<br/>
我们希望city,street,zip属性映射为Address对象.这样,User对象将具有id,name和address这三个属性.
<br/>
Address对象必须定义为@Embededable
<br/>
示例:
<br/>
@Embeddable
<br/>
public class Address {city,street,zip}
<br/>
@Entity
<br/>
public class User {
<br/>
@Embedded
<br/>
public Address getAddress() {
<br/>
..........
<br/>
}
<br/>
}
<br/>
<br/>
Hibernate验证注解
<br/>
注解
<br/>
适用类型
<br/>
说明
<br/>
示例
<br/>
@Pattern
<br/>
String
<br/>
通过正则表达式来验证字符串
<br/>
@attern(regex="[a-z]{6}")
<br/>
@Length
<br/>
String
<br/>
验证字符串的长度
<br/>
@length(min=3,max=20)
<br/>
@Email
<br/>
String
<br/>
验证一个Email地址是否有效
<br/>
@email
<br/>
@Range
<br/>
Long
<br/>
验证一个整型是否在有效的范围内
<br/>
@Range(min=0,max=100)
<br/>
@Min
<br/>
Long
<br/>
验证一个整型必须不小于指定值
<br/>
@Min(value=10)
<br/>
@Max
<br/>
Long
<br/>
验证一个整型必须不大于指定值
<br/>
@Max(value=20)
<br/>
@Size
<br/>
集合或数组
<br/>
集合或数组的大小是否在指定范围内
<br/>
@Size(min=1,max=255)
<br/>
以上每个注解都可能性有一个message属性，用于在验证失败后向用户返回的消息，还可以三个属性上使用多个注解 &lt;!--v:3.2--&gt;</p>
<p>****************************************************************************************************</p>
<p>1.@Entity
<br/>
通过注释@Entity或者（@Entity()）表示被标示的类对应数据库中的一张表。
<br/>
}
<br/>
@Entity
<br/>
public class TravelProfile {
<br/>
...
<br/>
}
<br/>
上面的例子告诉O/R映射引擎，类TravelProfile是可以持久化的，同时它对应数据库中的一张表。但是它没有指明对应哪个数据库中的哪张表。
<br/>
2.元数据映射标记
<br/>
2.1 @Table
<br/>
@Table()标记为实体初始化一张表，定义如下：
<br/>
@Target({TYPE}) @Retention(RUNTIME)
<br/>
public @interface Table {
<br/>
String name() default "";
<br/>
String catalog() default "";
<br/>
String schema() default "";
<br/>
UniqueConstraint[] uniqueConstraints() default {};
<br/>
}
<br/>
Name:指明表的名字。（可选）
<br/>
Catalog:表示表的catalog.（可选）
<br/>
Schema:表示表的schema.（可选）
<br/>
uniqueConstraints:制定表的唯一约束。（可选）
<br/>
因为所有的属性都是可选的，也就是说@Table可以在进行映射的时候可以不标明。当不标明的情况下表的名字就是实体的类名。表属于的schema就是所属实体单元集的schema（就是当前连接数据库的用户）。
<br/>
下面给出的例子中，指明表为CUST,所属的schema为RECORDS：
<br/>
@Entity
<br/>
@Table(name="CUST", schema="RECORDS")
<br/>
public class Customer { ... }
<br/>
<br/>
2.2 @UniqueConstraint标记
<br/>
@UniqueConstraint用来指定表字段的唯一约束，定义如下：
<br/>
@Target({}) @Retention(RUNTIME)
<br/>
public @interface UniqueConstraint {
<br/>
String[] columnNames();
<br/>
}
<br/>
columnNames：制定唯一约束的字段。
<br/>
<br/>
@Entity
<br/>
@Table(
<br/>
name="EMPLOYEE",
<br/>
uniqueConstraints=
<br/>
@UniqueConstraint(columnNames={"EMP_ID", "EMP_NAME"})
<br/>
)
<br/>
public class Employee { ... }
<br/>
上面的例子，唯一约束标记指定字段EMP_ID和字段EMP_NAME在表中EMPLOYEE中是唯一的。
<br/>
2.3@Column标记
<br/>
@Column标记把实体的属性或域映射到表的字段，当没有在实体的属性或域中使用该标记那数据库的对应表的字段名就是实体的属性名或域名。其定义为：
<br/>
@Target({METHOD, FIELD}) @Retention(RUNTIME)
<br/>
public @interface Column {
<br/>
String name() default "";
<br/>
boolean unique() default false;
<br/>
boolean nullable() default true;
<br/>
boolean insertable() default true;
<br/>
boolean updatable() default true;
<br/>
String columnDefinition() default "";
<br/>
String table() default "";
<br/>
int length() default 255;
<br/>
int precision() default 0; // decimal precision
<br/>
int scale() default 0; // decimal scale
<br/>
}
<br/>
Name:指定字段名。
<br/>
Unique：指明该字段是否唯一，默认为false。
<br/>
Nullable：指明是否可以为空，默认是true。
<br/>
Insertable：指明该字段在产生SQL INSERT语句中是否产生该字段。
<br/>
Updatable：指明该字段在产生SQL INSERT语句中是否产生该字段。
<br/>
columnDefinition：指定产生表的时候，使用它指定该字段一些属性。
<br/>
Table：当一个实体对应多个表的时候，指定该字段属于哪个表。
<br/>
Length：制定该字段的长度（只有在字段为字符类型的才有用），默认是255。
<br/>
Precision: 指明字段的精度（在字段为decimal类型的时候使用），默认是0
<br/>
Scale：为字段为number型指定标量，默认为0。
<br/>
下面给出例子：
<br/>
@Column(name="DESC", nullable=false, length=512)
<br/>
public String getDescription() { return description; }
<br/>
<br/>
@Column(name="DESC",
<br/>
columnDefinition="CLOB NOT NULL",
<br/>
table="EMP_DETAIL")
<br/>
@Lob
<br/>
public String getDescription() { return description; }
<br/>
<br/>
@Column(name="ORDER_COST", updatable=false, precision=12, scale=2)
<br/>
public BigDecimal getCost() { return cost; }
<br/>
<br/>
2.4@JoinColumn标记
<br/>
@JoinColumn标记用来映射实体之间的关联关系，定义如下：
<br/>
@Target({METHOD, FIELD}) @Retention(RUNTIME)
<br/>
public @interface JoinColumn {
<br/>
String name() default "";
<br/>
String referencedColumnName() default "";
<br/>
boolean unique() default false;
<br/>
boolean nullable() default true;
<br/>
boolean insertable() default true;
<br/>
boolean updatable() default true;
<br/>
String columnDefinition() default "";
<br/>
String table() default "";
<br/>
}
<br/>
Name:指定外键字段名，缺省的名字是被引用实体在引用实体内部的属性标量名或域名加上下划线"_"，再加上被引用实体的主键字段名构成。
<br/>
ReferencedColumnName：被引用表的字段，如果没有那缺省的就是该表的主键。
<br/>
Unique：指明该字段是否唯一，默认为false。
<br/>
Nullable：外键是否可以为空，默认是true。
<br/>
Insertable：指明该字段在产生SQL INSERT语句中是否产生该字段。
<br/>
Updatable：指明该字段在产生SQL INSERT语句中是否产生该字段。
<br/>
columnDefinition：指定产生表的时候，使用它指定该字段一些属性。
<br/>
Table：当一个实体对应多个表的时候，指定该字段属于哪个表。
<br/>
下面例子的多对一关系中，指明了被引用实体在本实体的外键为ADDR_ID。
<br/>
@ManyToOne
<br/>
@JoinColumn(name="ADDR_ID")
<br/>
public Address getAddress() { return address; }
<br/>
<br/>
2.5@JoinColumns标记
<br/>
@JoinColumns标记用在符合外键的时候，这个时候属性name和referencedColumnName必须在@JoinColumn中进行初始化。例如：
<br/>
@ManyToOne
<br/>
@JoinColumns({
<br/>
@JoinColumn(name="ADDR_ID", referencedColumnName="ID"),
<br/>
@JoinColumn(name="ADDR_ZIP", referencedColumnName="ZIP")
<br/>
})
<br/>
public Address getAddress() { return address; }
<br/>
<br/>
2.6@Id标记
<br/>
@Id标记把实体属性或域映射到表的主键。其定义如下：
<br/>
@Target({METHOD, FIELD}) @Retention(RUNTIME)
<br/>
public @interface Id {}
<br/>
下面例子通过标记@Id初始化实体的主键为id，也可以通过加上标记@Column(name="PrimaryKey")自定义表的主键。
<br/>
@Id
<br/>
public Long getId() { return id; }
<br/>
<br/>
2.7@GeneratedValue标记
<br/>
提供产生主键的策略，这就意味着它只能在出现标记@Id的情况下使用。其定义如下：
<br/>
@Target({METHOD, FIELD}) @Retention(RUNTIME)
<br/>
public @interface GeneratedValue {
<br/>
GenerationType strategy() default AUTO;
<br/>
String generator() default "";
<br/>
}
<br/>
<br/>
public enum GenerationType { TABLE, SEQUENCE, IDENTITY, AUTO };
<br/>
策略类型为枚举类型，共有四种类型分别为：TABLE, SEQUENCE, IDENTITY, AUTO。
<br/>
TABLE：提示持久化引擎实现者，使用数据库的表来产生和维护主键。
<br/>
SEQUENCE和IDENTITY：分别指定使用当前数据库的序列号和标识字段来产生唯一表识。
<br/>
AUTO：制定持久化引擎实现者，为不同的数据库选择合适的策略产生唯一标识。
<br/>
<br/>
Generator：制定主键产生器，默认有持久化实现者提供。例如：
<br/>
@Id
<br/>
@GeneratedValue(strategy=SEQUENCE, generator="CUST_SEQ")
<br/>
@Column(name="CUST_ID")
<br/>
public Long getId() { return id; }
<br/>
<br/>
@Id
<br/>
@GeneratedValue(strategy=TABLE, generator="CUST_GEN")
<br/>
@Column(name="CUST_ID")
<br/>
Long id;
<br/>
<br/>
2.8@IdClass标记
<br/>
这个标记用来指定一个实体类作为一个另外一个实体的主键。这个时候要求实体的复合主键的每个属性或域必须和复合主键类对应的属性或域是一样的。其定义如下：
<br/>
@Target({TYPE}) @Retention(RUNTIME)
<br/>
public @interface IdClass {
<br/>
Class value();
<br/>
}
<br/>
下面例子中，复合主键类为EmployeePK，包含域empName和birthday类型分别为String,Date。
<br/>
@IdClass(com.jl.hr.EmployeePK.class)
<br/>
@Entity
<br/>
public class Employee {
<br/>
@Id String empName;
<br/>
@Id Date birthDay;
<br/>
<br/>
2.9@Transient标记
<br/>
标记指示实体的属性或域是非持久化的。其定义如下：
<br/>
@Target({METHOD, FIELD}) @Retention(RUNTIME)
<br/>
public @interface Transient {}
<br/>
<br/>
下面的例子说明实体 Employee的域currentUser是非持久化的。
<br/>
@Entity
<br/>
public class Employee {
<br/>
@Id int id;
<br/>
@Transient User currentUser;
<br/>
...
<br/>
}
<br/>
<br/>
2.10@Version标记
<br/>
初始化实体的乐观锁的值，这个标记在大量并发访问的实体中非常有用。如果要对实体使用这个标记那最好的策略是一个实体使用一个@Version标记，同时这个标记对应字段的类型一般为：int,Integer,short,Short,long,Long,Timestamp中的一种。其定义如下：
<br/>
@Target({METHOD, FIELD}) @Retention(RUNTIME)
<br/>
public @interface Version {}
<br/>
<br/>
给出相关的例子如下：
<br/>
@Version
<br/>
@Column(name="OPTLOCK")
<br/>
protected int getVersionNum() { return versionNum; }
<br/>
<br/>
2.11@Lob标记
<br/>
此标记初始化实体的属性或域映射成数据库支持的大对象类型。大对象可以是字符也可以是二进制类型。除了字符串和字符类型的默认映射成Blob类型，其它的类型根据实体属性或域的类型来决定数据库大对象的类型。例如：
<br/>
@Lob
<br/>
@Column(name="REPORT")
<br/>
protected String report;
<br/>
<br/>
@Lob @Basic(fetch=LAZY)
<br/>
@Column(name="EMP_PIC", columnDefinition="BLOB NOT NULL")
<br/>
protected byte[] pic;
<br/>
<br/>
2.12@Enumerated标记
<br/>
用来指定实体持久化属性的为枚举类型，其定义如下：
<br/>
@Target({METHOD, FIELD}) @Retention(RUNTIME)
<br/>
public @interface Enumerated {
<br/>
EnumType value() default ORDINAL;
<br/>
}
<br/>
<br/>
public enum EnumType {
<br/>
ORDINAL,
<br/>
STRING
<br/>
}
<br/>
如果标记没有显性给出或者EnumType没有指定，那枚举类型默认为ORDINAL数字标识。例如：
<br/>
public enum EmployeeStatus {FULL_TIME, PART_TIME, CONTRACT}
<br/>
public enum SalaryRate {JUNIOR, SENIOR, MANAGER, EXECUTIVE}
<br/>
@Entity public class Employee {
<br/>
...
<br/>
public EmployeeStatus getStatus() {...}
<br/>
@Enumerated(STRING)
<br/>
public SalaryRate getPayScale() {...}
<br/>
...
<br/>
}
<br/>
上面例子中，定义了两个枚举类型EmployeeStatus和SalaryRate。在实体两个属性status类型为EmployeeStatus，而payScale为SalaryRate类型。其中一个显性给出了标记@Enumerated(STRING)来说明枚举类型的值当成字符串使用，而默认的是从1开始的数字来标识的。也可以通过标记@Enumerated(ORDINAL)指示枚举里面类型的值是数字类型的。例如在EmployeeStatus
<br/>
中的FULL_TIME, PART_TIME, CONTRACT分别代表的数字是1，2，3，4而SalaryRate
<br/>
中的JUNIOR, SENIOR, MANAGER, EXECUTIVE代表的分别是字符串"JUNIOR", "SENIOR", "MANAGER", "EXECUTIVE"。
<br/>
<br/>
2.13@ManyToOne标记
<br/>
当实体之间的关系是多对一的时候，该标记定义一个单值的字段与其它实体相关联。其定义如下：
<br/>
@Target({METHOD, FIELD}) @Retention(RUNTIME)
<br/>
public @interface ManyToOne {
<br/>
Class targetEntity() default void.class;
<br/>
CascadeType[] cascade() default {};
<br/>
FetchType fetch() default EAGER;
<br/>
boolean optional() default true;
<br/>
}
<br/>
<br/>
public enum CascadeType { ALL, PERSIST, MERGE, REMOVE, REFRESH};
<br/>
<br/>
targetEntity：表示相关联的实体类。
<br/>
Cascade：级联操作选项，PERSIST, MERGE, REMOVE, REFRESH分别对应增加，更新，删除和查找的联级设置选项。如果选择ALL就使得前面这些联级都生效，也就是cascade=ALL 等同于cascade={PERSIST, MERGE, REMOVE,REFRESH}
<br/>
Fetch：制定关联实体的加载方式，包括EAGER和LAZY两种方式。当为EAGER选选项的时候，当查询实体的时候会把它相关联的实体实例也加载。当为LAZY的时候加载实体实例的时候与之相关联的实体实例不会加载,默认为EAGER。
<br/>
Optional：指定关联实体关系是否可以为空，默认是为true。当为false的时候，那当有实体实例的存在总会有与之相关实体实例的存在。
<br/>
例如：
<br/>
@ManyToOne(optional=flase)
<br/>
@JoinColumn(name="CUST_ID", nullable=false, updatable=false)
<br/>
public Customer getCustomer() { return customer; }
<br/>
<br/>
2.14@OneToOne标记
<br/>
标记定义实体一对一关系的联系，通过一个字段来进行关联。其定义如下：
<br/>
@Target({METHOD, FIELD}) @Retention(RUNTIME)
<br/>
public @interface OneToOne {
<br/>
Class targetEntity() default void.class;
<br/>
CascadeType[] cascade() default {};
<br/>
FetchType fetch() default EAGER;
<br/>
boolean optional() default true;
<br/>
String mappedBy() default "";
<br/>
}
<br/>
前面四个选项和8.2.13中的意义是一样的。
<br/>
mappedBy：代表这个属性或域是关系的拥有者，也就是说mappedBy选择应该是在非关系拥有者方才会出现。所谓关系的拥有者就是在表中包含了关系字段的那张表。
<br/>
现在假设有实体Customer和实体CustomerRecoder它们之间是一对一的关系，同时实体Customer是关系的拥有者。这个时候通过标记@OneToOne来完成关联，在实体Customer相关代码如下：
<br/>
@OneToOne(optional=false)
<br/>
@JoinColumn(
<br/>
name="CUSTREC_ID", unique=true, nullable=false, updatable=false)
<br/>
public CustomerRecord getCustomerRecord() { return customerRecord; }
<br/>
在实体CustomerRecord相关代码如下：
<br/>
@OneToOne(optional=false, mappedBy="customerRecord")
<br/>
public Customer getCustomer() { return customer; }
<br/>
因为CustomerRecord是关系的非拥有者所有mappedBy只能在这边出现。
<br/>
<br/>
<br/>
2.15@OneToMany标记
<br/>
用来标记实体之间的一对多的关系，其定义如下：
<br/>
@Target({METHOD, FIELD}) @Retention(RUNTIME)
<br/>
public @interface OneToMany {
<br/>
Class targetEntity() default void.class;
<br/>
CascadeType[] cascade() default {};
<br/>
FetchType fetch() default LAZY;
<br/>
String mappedBy() default "";
<br/>
}
<br/>
值得注意的是表示关联实体的集合要使用范形来制定集合内部的关联实体，否则必须要指定targetEntity的实体类型。Fetch类型默认为LAZY而@OneToOne和ManyToOne则默认的为EAGER。
<br/>
假设现在有实体Customer和Order它们之间的关系是一对多的关系，同时Order是关系的拥有者。
<br/>
在实体Customer中的代码为：
<br/>
<br/>
@OneToMany(cascade=ALL, mappedBy="customer")
<br/>
public Set&lt;Order&gt; getOrders() { return orders; }
<br/>
<br/>
在实体Order中的代码为：
<br/>
<br/>
@ManyToOne
<br/>
@JoinColumn(name="CUST_ID", nullable=false)
<br/>
public Customer getCustomer() { return customer; }
<br/>
<br/>
2.16@JoinTable标记
<br/>
用来映射多对多和单项的一对多关系，当不是用该标记的时候会根据默认的映射原则产生关系连接表。其定义如下：
<br/>
public @interface JoinTable {
<br/>
String name() default "";
<br/>
String catalog() default "";
<br/>
String schema() default "";
<br/>
JoinColumn[] joinColumns() default {};
<br/>
JoinColumn[] inverseJoinColumns() default {};
<br/>
UniqueConstraint[] uniqueConstraints() default {};
<br/>
}
<br/>
Name：指定连接表的名字。
<br/>
Catalog：指定表所属的catalog。
<br/>
Schema：指定表所属的schema。
<br/>
joinColumns：指定关系拥有方作为外键的主键。
<br/>
inverseJoinColumns：指定关系非拥有方作为外键的主键。
<br/>
uniqueConstraints：指定表中的唯一约束。
<br/>
例如：
<br/>
@JoinTable(
<br/>
name="CUST_PHONE",
<br/>
joinColumns=
<br/>
@JoinColumn(name="CUST_ID", referencedColumnName="ID"),
<br/>
inverseJoinColumns=
<br/>
@JoinColumn(name="PHONE_ID", referencedColumnName="ID")
<br/>
)
<br/>
上面例子，连接表的名字为CUST_PHONE里面有两个外键，一个来自关系拥有方的主键ID对应外键为CUST_ID；另一个是来自于关系的非拥有方的主键ID对应外键为PHONE_ID。
<br/>
2.17@ManyToMany标记
<br/>
标记实体之间的多对多的关系，如果不通过范形来制定集合中的关联实体类型那必须指定相应的关联实体类型。其定义如下：
<br/>
@Target({METHOD, FIELD}) @Retention(RUNTIME)
<br/>
public @interface ManyToMany {
<br/>
Class targetEntity() default void.class;
<br/>
CascadeType[] cascade() default {};
<br/>
FetchType fetch() default LAZY;
<br/>
String mappedBy() default "";
<br/>
}
<br/>
各个属性的意义和标记@OneToMany是一样的，请参照8.2.1.15。
<br/>
如果关联是双向的两边都可以是关系的拥有方，可以通过标记@JoinTable来制定关系拥有方，请参照2.16。
<br/>
设有实体Customer和PhoneNumber，则它们的关系映射代码如下：
<br/>
在实体Customer中为：
<br/>
@ManyToMany
<br/>
@JoinTable(name="CUST_PHONES")
<br/>
public Set&lt;PhoneNumber&gt; getPhones() { return phones; }
<br/>
在实体PhoneNumber中为：
<br/>
@ManyToMany(mappedBy="phones")
<br/>
public Set&lt;Customer&gt; getCustomers() { return customers; }
<br/>
在实际开发中，对于多对多关系我们经常使用标记@JoinTable来制定关系的拥有方，则对于上面的映射为：
<br/>
@ManyToMany
<br/>
@JoinTable(
<br/>
name="CUST_PHONE",
<br/>
joinColumns=
<br/>
@JoinColumn(name="CUST_ID", referencedColumnName="ID"),
<br/>
inverseJoinColumns=
<br/>
@JoinColumn(name="PHONE_ID", referencedColumnName="ID")
<br/>
)
<br/>
public Set&lt;PhoneNumber&gt; getPhones() { return phones; }
<br/>
<br/>
@ManyToMany(mappedBy="phones")
<br/>
public Set&lt;Customer&gt; getCustomers() { return customers; }
<br/>
<br/>
2.18@OrderBy标记
<br/>
指定批量查询实例实例的时候指定排序的属性或域，其定义如下：
<br/>
@Target({METHOD, FIELD}) @Retention(RUNTIME)
<br/>
public @interface OrderBy {
<br/>
String value() default "";
<br/>
}
<br/>
对于使用该标记对应的字段必须是可以比较的，默认的使用的是ASC也可以根据需求改变成DESC。当没有指定value的时候，那默认的就是对实体的主键进行排序，例如：
<br/>
@Entity public class Course {
<br/>
...
<br/>
@ManyToMany
<br/>
@OrderBy("lastname ASC")
<br/>
public List&lt;Student&gt; getStudents() {...};
<br/>
...
<br/>
}
<br/>
@Entity public class Student {
<br/>
...
<br/>
@ManyToMany(mappedBy="students")
<br/>
@OrderBy // PK is assumed
<br/>
public List&lt;Course&gt; getCourses() {...};
<br/>
...
<br/>
}</p>
<img src ="http://www.blogjava.net/oxidy/aggbug/400266.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxidy/" target="_blank">oxidy</a> 2013-06-06 09:50 <a href="http://www.blogjava.net/oxidy/archive/2013/06/06/400266.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring jar 包详解</title><link>http://www.blogjava.net/oxidy/archive/2013/06/06/400267.html</link><dc:creator>oxidy</dc:creator><author>oxidy</author><pubDate>Thu, 06 Jun 2013 01:50:00 GMT</pubDate><guid>http://www.blogjava.net/oxidy/archive/2013/06/06/400267.html</guid><wfw:comment>http://www.blogjava.net/oxidy/comments/400267.html</wfw:comment><comments>http://www.blogjava.net/oxidy/archive/2013/06/06/400267.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxidy/comments/commentRss/400267.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxidy/services/trackbacks/400267.html</trackback:ping><description><![CDATA[
<p>spring.jar是包含有完整发布的单个jar包，spring.jar中包含除了 spring-mock.jar里所包含的内容外其它所有jar包的内容，因为只有在开发环境下才会用到spring-mock.jar来进行辅助测试，正式应用系统中是用不得这些类的。
<br/>
　　除了spring.jar文件，Spring还包括有其它13个独立的jar包，各自包含着对应的Spring组件，用户可以根据自己的需要来选择组合自己的jar包，而不必引入整个spring.jar的所有类文件。
<br/>
(1) spring-core.jar
<br/>
这个jar文件包含Spring框架基本的核心工具类，Spring其它组件要都要使用到这个包里的类，是其它组件的基本核心，当然你也可以在自己的应用系统中使用这些工具类。
<br/>
(2) spring-beans.jar
<br/>
这个jar文件是所有应用都要用到的，它包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency Injection（IoC/DI）操作相关的所有类。如果应用只需基本的IoC/DI支持，引入spring-core.jar及spring- beans.jar文件就可以了。
<br/>
(3) spring-aop.jar
<br/>
这个jar文件包含在应用中使用Spring的AOP特性时所需的类。使用基于AOP的Spring特性，如声明型事务管理（Declarative Transaction Management），也要在应用里包含这个jar包。
<br/>
(4) spring-context.jar
<br/>
　　这个jar文件为Spring核心提供了大量扩展。可以找到使用Spring ApplicationContext特性时所需的全部类，JDNI所需的全部类，UI方面的用来与模板（Templating）引擎如 Velocity、FreeMarker、JasperReports集成的类，以及校验Validation方面的相关类。
<br/>
(5) spring-dao.jar
<br/>
　　这个jar文件包含Spring DAO、Spring Transaction进行数据访问的所有类。为了使用声明型事务支持，还需在自己的应用里包含spring-aop.jar。
<br/>
(6) spring-hibernate.jar
<br/>
　　这个jar文件包含Spring对Hibernate 2及Hibernate 3进行封装的所有类。
<br/>
(7) spring-jdbc.jar
<br/>
　　这个jar文件包含对Spring对JDBC数据访问进行封装的所有类。
<br/>
(8) spring-orm.jar
<br/>
　　这个jar文件包含Spring对DAO特性集进行了扩展，使其支持 iBATIS、JDO、OJB、TopLink，因为Hibernate已经独立成包了，现在不包含在这个包里了。这个jar文件里大部分的类都要依赖 spring-dao.jar里的类，用这个包时你需要同时包含spring-dao.jar包。
<br/>
(9) spring-remoting.jar
<br/>
　　这个jar文件包含支持EJB、JMS、远程调用Remoting（RMI、Hessian、Burlap、Http Invoker、JAX-RPC）方面的类。
<br/>
(10) spring-support.jar
<br/>
　　这个jar文件包含支持缓存Cache（ehcache）、JCA、JMX、邮件服务（Java Mail、COS Mail）、任务计划Scheduling（Timer、Quartz）方面的类。
<br/>
(11) spring-web.jar
<br/>
　　这个jar文件包含Web应用开发时，用到Spring框架时所需的核心类，包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。
<br/>
(12) spring-webmvc.jar
<br/>
　　这个jar文件包含Spring MVC框架相关的所有类。包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、Tiles、Velocity、 XSLT相关类。当然，如果你的应用使用了独立的MVC框架，则无需这个JAR文件里的任何类。
<br/>
(13) spring-mock.jar
<br/>
　　这个jar文件包含Spring一整套mock类来辅助应用的测试。Spring测试套件使用了其中大量mock类，这样测试就更加简单。模拟HttpServletRequest和HttpServletResponse类在Web应用单元测试是很方便的。
<br/>
　　如何选择这些发布包，决定选用哪些发布包其实相当简单。如果你正在构建Web应用并将全程使用Spring，那么最好就使用单个全部的 spring.jar文件；如果你的应用仅仅用到简单的Inversion of Control / Dependency Injection（IoC/DI）容器，那么只需spring-core.jar与spring-beans.jar即可；如果你对发布的大小要求很高，那么就得精挑细选了，只取包含自己所需特性的jar文件了。采用独立的发布包你可以避免包含自己的应用不需要的全部类。当然你可以采用其它的一些工具来设法令整个应用包变小，节省空间的重点在于准确地找出自己所需的Spring依赖类，然后合并所需的类与包就可以了。Eclispe有个插件叫 ClassPath Helper可以帮你找找所依赖的类。
<br/>
Spring包依赖说明:
<br/>
1) spring-core.jar需commons-collections.jar，spring-core.jar是以下其它各个的基本。
<br/>
2) spring-beans.jar需spring-core.jar，cglib-nodep-2.1_3.jar
<br/>
3) spring-aop.jar需spring-core.jar，spring-beans.jar，cglib-nodep-2.1_3.jar，aopalliance.jar
<br/>
4) spring-context.jar需spring-core.jar，spring-beans.jar，spring-aop.jar，commons-collections.jar，aopalliance.jar
<br/>
5) spring-dao.jar需spring-core.jar，spring-beans.jar，spring-aop.jar，spring-context.jar
<br/>
6) spring-jdbc.jar需spring-core.jar，spring-beans.jar，spring-dao.jar
<br/>
7) spring-web.jar需spring-core.jar，spring-beans.jar，spring-context.jar
<br/>
8) spring-webmvc.jar需spring-core.jar/spring-beans.jar/spring-context.jar/spring-web.jar
<br/>
9) spring -hibernate.jar需spring-core.jar，spring-beans.jar，spring-aop.jar，spring- dao.jar，spring-jdbc.jar，spring-orm.jar，spring-web.jar，spring-webmvc.jar
<br/>
10) spring-orm.jar需spring-core.jar，spring-beans.jar，spring-aop.jar，spring- dao.jar，spring-jdbc.jar，spring-web.jar，spring-webmvc.jar
<br/>
11) spring -remoting.jar需spring-core.jar，spring-beans.jar，spring-aop.jar，spring- dao.jar，spring-context.jar，spring-web.jar，spring-webmvc.jar
<br/>
12) spring-support.jar需spring-core.jar，spring-beans.jar，spring-aop.jar，spring-dao.jar，spring-context.jar，spring-jdbc.jar
<br/>
13) spring-mock.jar需spring-core.jar，spring-beans.jar，spring-dao.jar，spring-context.jar，spring-jdbc.jar</p>
<p>来自：<a href="http://lukec.javaeye.com/blog/170933">http://lukec.javaeye.com/blog/170933</a>
<br/>
        </p>
<img src ="http://www.blogjava.net/oxidy/aggbug/400267.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxidy/" target="_blank">oxidy</a> 2013-06-06 09:50 <a href="http://www.blogjava.net/oxidy/archive/2013/06/06/400267.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 9i/10g安装包和PATCH下载地址汇总</title><link>http://www.blogjava.net/oxidy/archive/2013/06/06/400268.html</link><dc:creator>oxidy</dc:creator><author>oxidy</author><pubDate>Thu, 06 Jun 2013 01:50:00 GMT</pubDate><guid>http://www.blogjava.net/oxidy/archive/2013/06/06/400268.html</guid><wfw:comment>http://www.blogjava.net/oxidy/comments/400268.html</wfw:comment><comments>http://www.blogjava.net/oxidy/archive/2013/06/06/400268.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxidy/comments/commentRss/400268.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxidy/services/trackbacks/400268.html</trackback:ping><description><![CDATA[
<p>
          <br/>
---------------------------------------------------------------------------------------------------
<br/>
<strong>ORACLE</strong> 9i
<br/>
<br/>
Oracle9i Database Release 2 Enterprise/Standard/Personal Edition for Windows NT/2000/XP
<br/>
<a href="http://download.oracle.com/otn/nt/oracle9i/9201/92010NT_Disk1.zip" target="_blank">http://download.oracle.com/otn/nt/oracle9i/9201/92010NT_Disk1.zip</a>
<br/>
<a href="http://download.oracle.com/otn/nt/oracle9i/9201/92010NT_Disk2.zip" target="_blank">http://download.oracle.com/otn/nt/oracle9i/9201/92010NT_Disk2.zip</a>
<br/>
<a href="http://download.oracle.com/otn/nt/oracle9i/9201/92010NT_Disk3.zip" target="_blank">http://download.oracle.com/otn/nt/oracle9i/9201/92010NT_Disk3.zip</a>
<br/>
<br/>
Oracle9i Database Release 2 Enterprise/Standard/Personal/Client Edition for Windows XP 2003/Windows Server 2003 (64-bit)
<br/>
<a href="http://download.oracle.com/otn/nt/oracle9i/9202/92021Win64_Disk1.zip" target="_blank">http://download.oracle.com/otn/nt/oracle9i/9202/92021Win64_Disk1.zip</a>
<br/>
<a href="http://download.oracle.com/otn/nt/oracle9i/9202/92021Win64_Disk2.zip" target="_blank">http://download.oracle.com/otn/nt/oracle9i/9202/92021Win64_Disk2.zip</a>
<br/>
<br/>
Oracle9i Database Release 2 Enterprise/Standard Edition for Intel Linux
<br/>
<a href="http://download.oracle.com/otn/linux/oracle9i/9204/ship_9204_linux_disk1.cpio.gz" target="_blank">http://download.oracle.com/otn/linux/oracle9i/9204/ship_9204_linux_disk1.cpio.gz</a>
<br/>
<a href="http://download.oracle.com/otn/linux/oracle9i/9204/ship_9204_linux_disk2.cpio.gz" target="_blank">http://download.oracle.com/otn/linux/oracle9i/9204/ship_9204_linux_disk2.cpio.gz</a>
<br/>
<a href="http://download.oracle.com/otn/linux/oracle9i/9204/ship_9204_linux_disk3.cpio.gz" target="_blank">http://download.oracle.com/otn/linux/oracle9i/9204/ship_9204_linux_disk3.cpio.gz</a>
<br/>
<br/>
Oracle9i Database Release 2 (9.2.0.4) Enterprise/Standard Edition for Linux x86-64
<br/>
<a href="http://download.oracle.com/otn/linux/oracle9i/9204/amd64_db_9204_Disk1.cpio.gz" target="_blank">http://download.oracle.com/otn/linux/oracle9i/9204/amd64_db_9204_Disk1.cpio.gz</a>
<br/>
<a href="http://download.oracle.com/otn/linux/oracle9i/9204/amd64_db_9204_Disk2.cpio.gz" target="_blank">http://download.oracle.com/otn/linux/oracle9i/9204/amd64_db_9204_Disk2.cpio.gz</a>
<br/>
<a href="http://download.oracle.com/otn/linux/oracle9i/9204/amd64_db_9204_Disk3.cpio.gz" target="_blank">http://download.oracle.com/otn/linux/oracle9i/9204/amd64_db_9204_Disk3.cpio.gz</a>
<br/>
<br/>
Oracle9i Database Release 2 Enterprise/Standard Edition for AIX - Based 4.3.3 Systems (64-bit)
<br/>
<a href="http://download.oracle.com/otn/aix/oracle9i/9201/server_9201_AIX64_Disk1.cpio.gz" target="_blank">http://download.oracle.com/otn/aix/oracle9i/9201/server_9201_AIX64_Disk1.cpio.gz</a>
<br/>
<a href="http://download.oracle.com/otn/aix/oracle9i/9201/server_9201_AIX64_Disk2.cpio.gz" target="_blank">http://download.oracle.com/otn/aix/oracle9i/9201/server_9201_AIX64_Disk2.cpio.gz</a>
<br/>
<a href="http://download.oracle.com/otn/aix/oracle9i/9201/server_9201_AIX64_Disk3.cpio.gz" target="_blank">http://download.oracle.com/otn/aix/oracle9i/9201/server_9201_AIX64_Disk3.cpio.gz</a>
<br/>
<a href="http://download.oracle.com/otn/aix/oracle9i/9201/server_9201_AIX64_Disk4.cpio.gz" target="_blank">http://download.oracle.com/otn/aix/oracle9i/9201/server_9201_AIX64_Disk4.cpio.gz</a>
<br/>
<br/>
Oracle9i Database Release 2 Enterprise/Standard Edition for AIX- Based 5L Systems
<br/>
<a href="http://download.oracle.com/otn/aix/oracle9i/9201/A99331-01.zip" target="_blank">http://download.oracle.com/otn/aix/oracle9i/9201/A99331-01.zip</a>
<br/>
<a href="http://download.oracle.com/otn/aix/oracle9i/9201/A99331-02.zip" target="_blank">http://download.oracle.com/otn/aix/oracle9i/9201/A99331-02.zip</a>
<br/>
<a href="http://download.oracle.com/otn/aix/oracle9i/9201/A99331-03.zip" target="_blank">http://download.oracle.com/otn/aix/oracle9i/9201/A99331-03.zip</a>
<br/>
<a href="http://download.oracle.com/otn/aix/oracle9i/9201/A99331-04.zip" target="_blank">http://download.oracle.com/otn/aix/oracle9i/9201/A99331-04.zip</a>
<br/>
<br/>
Oracle9i Database Release 2 Enterprise/Standard Edition for Sun SPARC Solaris (32-bit)
<br/>
<a href="http://download.oracle.com/otn/solaris/oracle9i/9201/92010Sol_Disk1.cpio.gz" target="_blank">http://download.oracle.com/otn/solaris/oracle9i/9201/92010Sol_Disk1.cpio.gz</a>
<br/>
<a href="http://download.oracle.com/otn/solaris/oracle9i/9201/92010Sol_Disk2.cpio.gz" target="_blank">http://download.oracle.com/otn/solaris/oracle9i/9201/92010Sol_Disk2.cpio.gz</a>
<br/>
<a href="http://download.oracle.com/otn/solaris/oracle9i/9201/92010Sol_Disk3.cpio.gz" target="_blank">http://download.oracle.com/otn/solaris/oracle9i/9201/92010Sol_Disk3.cpio.gz</a>
<br/>
<br/>
Oracle9i Database Release 2 Enterprise/Standard Edition for Sun SPARC Solaris (64-bit)
<br/>
<a href="http://download.oracle.com/otn/solaris/oracle9i64/9201/solaris64_9.2.0.1.0.Disk1.cpio.gz" target="_blank">http://download.oracle.com/otn/solaris/oracle9i64/9201/solaris64_9.2.0.1.0.Disk1.cpio.gz</a>
<br/>
<a href="http://download.oracle.com/otn/solaris/oracle9i64/9201/solaris64_9.2.0.1.0.Disk2.cpio.gz" target="_blank">http://download.oracle.com/otn/solaris/oracle9i64/9201/solaris64_9.2.0.1.0.Disk2.cpio.gz</a>
<br/>
<a href="http://download.oracle.com/otn/solaris/oracle9i64/9201/solaris64_9.2.0.1.0.Disk3.cpio.gz" target="_blank">http://download.oracle.com/otn/solaris/oracle9i64/9201/solaris64_9.2.0.1.0.Disk3.cpio.gz</a>
<br/>
<br/>
-----------------------------------------------------------------------------------------------------
<br/>
ORACLE 10gR2
<br/>
<br/>
Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Microsoft Windows (32-bit)
<br/>
<a href="http://download.oracle.com/otn/nt/oracle10g/10201/10201_database_win32.zip" target="_blank">http://download.oracle.com/otn/nt/oracle10g/10201/10201_database_win32.zip</a>
<br/>
<a href="http://download.oracle.com/otn/nt/oracle10g/10201/10201_client_win32.zip" target="_blank">http://download.oracle.com/otn/nt/oracle10g/10201/10201_client_win32.zip</a>
<br/>
<a href="http://download.oracle.com/otn/nt/oracle10g/10201/10201_clusterware_win32.zip" target="_blank">http://download.oracle.com/otn/nt/oracle10g/10201/10201_clusterware_win32.zip</a>
<br/>
<a href="http://download.oracle.com/otn/nt/oracle10g/10201/10201_gateways_win32.zip" target="_blank">http://download.oracle.com/otn/nt/oracle10g/10201/10201_gateways_win32.zip</a>
<br/>
<br/>
Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Microsoft Windows (x64)
<br/>
<a href="http://download.oracle.com/otn/nt/oracle10g/10201/102010_win64_x64_database.zip" target="_blank">http://download.oracle.com/otn/nt/oracle10g/10201/102010_win64_x64_database.zip</a>
<br/>
<a href="http://download.oracle.com/otn/nt/oracle10g/10201/102010_win64_x64_client.zip" target="_blank">http://download.oracle.com/otn/nt/oracle10g/10201/102010_win64_x64_client.zip</a>
<br/>
<a href="http://download.oracle.com/otn/nt/oracle10g/10201/102010_win64_x64_clusterware.zip" target="_blank">http://download.oracle.com/otn/nt/oracle10g/10201/102010_win64_x64_clusterware.zip</a>
<br/>
<br/>
Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Linux x86
<br/>
<a href="http://download.oracle.com/otn/linux/oracle10g/10201/10201_database_linux32.zip" target="_blank">http://download.oracle.com/otn/linux/oracle10g/10201/10201_database_linux32.zip</a>
<br/>
<a href="http://download.oracle.com/otn/linux/oracle10g/10201/10201_client_linux32.zip" target="_blank">http://download.oracle.com/otn/linux/oracle10g/10201/10201_client_linux32.zip</a>
<br/>
<a href="http://download.oracle.com/otn/linux/oracle10g/10201/10201_gateways_linux32.zip" target="_blank">http://download.oracle.com/otn/linux/oracle10g/10201/10201_gateways_linux32.zip</a>
<br/>
<br/>
Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Linux x86-64
<br/>
<a href="http://download.oracle.com/otn/linux/oracle10g/10201/10201_database_linux_x86_64.cpio.gz" target="_blank">http://download.oracle.com/otn/linux/oracle10g/10201/10201_database_linux_x86_64.cpio.gz</a>
<br/>
<a href="http://download.oracle.com/otn/linux/oracle10g/10201/10201_client_linux_x86_64.cpio.gz" target="_blank">http://download.oracle.com/otn/linux/oracle10g/10201/10201_client_linux_x86_64.cpio.gz</a>
<br/>
<a href="http://download.oracle.com/otn/linux/oracle10g/10201/10201_clusterware_linux_x86_64.cpio.gz" target="_blank">http://download.oracle.com/otn/linux/oracle10g/10201/10201_clusterware_linux_x86_64.cpio.gz</a>
<br/>
<a href="http://download.oracle.com/otn/linux/oracle10g/10201/10201_gateways_linux_x86_64.cpio.gz" target="_blank">http://download.oracle.com/otn/linux/oracle10g/10201/10201_gateways_linux_x86_64.cpio.gz</a>
<br/>
<br/>
Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for AIX5L
<br/>
<a href="http://download.oracle.com/otn/aix/oracle10g/10201/10gr2_aix5l64_database.cpio.gz" target="_blank">http://download.oracle.com/otn/aix/oracle10g/10201/10gr2_aix5l64_database.cpio.gz</a>
<br/>
<a href="http://download.oracle.com/otn/aix/oracle10g/10201/10gr2_aix5l64_client.cpio.gz" target="_blank">http://download.oracle.com/otn/aix/oracle10g/10201/10gr2_aix5l64_client.cpio.gz</a>
<br/>
<a href="http://download.oracle.com/otn/aix/oracle10g/10201/10gr2_aix5l64_cluster.cpio.gz" target="_blank">http://download.oracle.com/otn/aix/oracle10g/10201/10gr2_aix5l64_cluster.cpio.gz</a>
<br/>
<a href="http://download.oracle.com/otn/aix/oracle10g/10201/10gr2_aix5l64_gateways.cpio.gz" target="_blank">http://download.oracle.com/otn/aix/oracle10g/10201/10gr2_aix5l64_gateways.cpio.gz</a>
<br/>
<br/>
Oracle Database 10g Release 2 (10.2.0.2) Enterprise/Standard Edition for Solaris Operating System (x86)
<br/>
<a href="http://download.oracle.com/otn/solaris/oracle10g/10202/10202_database_solx86.zip" target="_blank">http://download.oracle.com/otn/solaris/oracle10g/10202/10202_database_solx86.zip</a>
<br/>
<a href="http://download.oracle.com/otn/solaris/oracle10g/10202/10202_client_solx86.zip" target="_blank">http://download.oracle.com/otn/solaris/oracle10g/10202/10202_client_solx86.zip</a>
<br/>
<a href="http://download.oracle.com/otn/solaris/oracle10g/10202/10202_clusterware_solx86.zip" target="_blank">http://download.oracle.com/otn/solaris/oracle10g/10202/10202_clusterware_solx86.zip</a>
<br/>
<br/>
Oracle Database 10g Release 2 (10.2.0.1.0) Enterprise/Standard Edition for Solaris Operating System (x86-64)
<br/>
<a href="http://download.oracle.com/otn/solaris/oracle10g/10201/x8664/10201_database_solx86_64.zip" target="_blank">http://download.oracle.com/otn/solaris/oracle10g/10201/x8664/10201_database_solx86_64.zip</a>
<br/>
<a href="http://download.oracle.com/otn/solaris/oracle10g/10201/x8664/10201_client_solx86_64.zip" target="_blank">http://download.oracle.com/otn/solaris/oracle10g/10201/x8664/10201_client_solx86_64.zip</a>
<br/>
<a href="http://download.oracle.com/otn/solaris/oracle10g/10201/x8664/10201_clusterware_solx86_64.zip" target="_blank">http://download.oracle.com/otn/solaris/oracle10g/10201/x8664/10201_clusterware_solx86_64.zip</a>
<br/>
---------------------------------------------------------------------------------------------------------
<br/>
---------------------------------------------------------------------------------------------------------
<br/>
ORACLE PATCH
<br/>
<br/>
oracle 9206 patch:
<br/>
<a href="ftp://updates.oracle.com/3948480/p3948480_9206_AIX64-5L.zip" target="_blank">ftp://updates.oracle.com/3948480/p3948480_9206_AIX64-5L.zip</a>
<br/>
<a href="ftp://updates.oracle.com/3948480/p3948480_9206_HP64.zip" target="_blank">ftp://updates.oracle.com/3948480/p3948480_9206_HP64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/3948480/p3948480_9206_HPUX-IA64.zip" target="_blank">ftp://updates.oracle.com/3948480/p3948480_9206_HPUX-IA64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/3948480/p3948480_9206_LINUX.zip" target="_blank">ftp://updates.oracle.com/3948480/p3948480_9206_LINUX.zip</a>
<br/>
<a href="ftp://updates.oracle.com/3948480/p3948480_9206_Linux-x86-64.zip" target="_blank">ftp://updates.oracle.com/3948480/p3948480_9206_Linux-x86-64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/3948480/p3948480_9206_MVS.zip" target="_blank">ftp://updates.oracle.com/3948480/p3948480_9206_MVS.zip</a>
<br/>
<a href="ftp://updates.oracle.com/3948480/p3948480_9206_SOLARIS.zip" target="_blank">ftp://updates.oracle.com/3948480/p3948480_9206_SOLARIS.zip</a>
<br/>
<a href="ftp://updates.oracle.com/3948480/p3948480_9206_SOLARIS64.zip" target="_blank">ftp://updates.oracle.com/3948480/p3948480_9206_SOLARIS64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/3948480/p3948480_9206_TRU64.zip" target="_blank">ftp://updates.oracle.com/3948480/p3948480_9206_TRU64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/3948480/p3948480_9206_WINNT.zip" target="_blank">ftp://updates.oracle.com/3948480/p3948480_9206_WINNT.zip</a>
<br/>
<a href="ftp://updates.oracle.com/3948480/p3948480_9206_WINNT64.zip" target="_blank">ftp://updates.oracle.com/3948480/p3948480_9206_WINNT64.zip</a>
<br/>
<br/>
oracle 9207 patch:
<br/>
<a href="ftp://updates.oracle.com/4163445/p4163445_92070_AIX64-5L.zip" target="_blank">ftp://updates.oracle.com/4163445/p4163445_92070_AIX64-5L.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4163445/p4163445_92070_HP64.zip" target="_blank">ftp://updates.oracle.com/4163445/p4163445_92070_HP64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4163445/p4163445_92070_HPUX-IA64.zip" target="_blank">ftp://updates.oracle.com/4163445/p4163445_92070_HPUX-IA64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4163445/p4163445_92070_LINUX.zip" target="_blank">ftp://updates.oracle.com/4163445/p4163445_92070_LINUX.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4163445/p4163445_92070_Linux-IA64.zip" target="_blank">ftp://updates.oracle.com/4163445/p4163445_92070_Linux-IA64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4163445/p4163445_92070_Linux-x86-64.zip" target="_blank">ftp://updates.oracle.com/4163445/p4163445_92070_Linux-x86-64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4163445/p4163445_92070_MVS.zip" target="_blank">ftp://updates.oracle.com/4163445/p4163445_92070_MVS.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4163445/p4163445_92070_SOLARIS.zip" target="_blank">ftp://updates.oracle.com/4163445/p4163445_92070_SOLARIS.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4163445/p4163445_92070_SOLARIS64.zip" target="_blank">ftp://updates.oracle.com/4163445/p4163445_92070_SOLARIS64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4163445/p4163445_92070_WINNT.zip" target="_blank">ftp://updates.oracle.com/4163445/p4163445_92070_WINNT.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4163445/p4163445_92070_WINNT64.zip" target="_blank">ftp://updates.oracle.com/4163445/p4163445_92070_WINNT64.zip</a>(无)
<br/>
<br/>
oracle 9208 patch:
<br/>
<a href="ftp://updates.oracle.com/4547809/p4547809_92080_AIX64-5L.zip" target="_blank">ftp://updates.oracle.com/4547809/p4547809_92080_AIX64-5L.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547809/p4547809_92080_HP64.zip" target="_blank">ftp://updates.oracle.com/4547809/p4547809_92080_HP64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547809/p4547809_92080_HPUX-IA64.zip" target="_blank">ftp://updates.oracle.com/4547809/p4547809_92080_HPUX-IA64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547809/p4547809_92080_LINUX.zip" target="_blank">ftp://updates.oracle.com/4547809/p4547809_92080_LINUX.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547809/p4547809_92080_Linux-IA64.zip" target="_blank">ftp://updates.oracle.com/4547809/p4547809_92080_Linux-IA64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547809/p4547809_92080_Linux-x86-64.zip" target="_blank">ftp://updates.oracle.com/4547809/p4547809_92080_Linux-x86-64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547809/p4547809_92080_MVS.zip" target="_blank">ftp://updates.oracle.com/4547809/p4547809_92080_MVS.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547809/p4547809_92080_SOLARIS.zip" target="_blank">ftp://updates.oracle.com/4547809/p4547809_92080_SOLARIS.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547809/p4547809_92080_SOLARIS64.zip" target="_blank">ftp://updates.oracle.com/4547809/p4547809_92080_SOLARIS64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547809/p4547809_92080_WINNT.zip" target="_blank">ftp://updates.oracle.com/4547809/p4547809_92080_WINNT.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547809/p4547809_92080_WINNT64.zip" target="_blank">ftp://updates.oracle.com/4547809/p4547809_92080_WINNT64.zip</a>
<br/>
<br/>
oracle 10.2.0.2 patch:
<br/>
<a href="ftp://updates.oracle.com/4547817/p4547817_10202_AIX64-5L.zip" target="_blank">ftp://updates.oracle.com/4547817/p4547817_10202_AIX64-5L.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547817/p4547817_10202_HP64.zip" target="_blank">ftp://updates.oracle.com/4547817/p4547817_10202_HP64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547817/p4547817_10202_HPUX-IA64.zip" target="_blank">ftp://updates.oracle.com/4547817/p4547817_10202_HPUX-IA64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547817/p4547817_10202_LINUX.zip" target="_blank">ftp://updates.oracle.com/4547817/p4547817_10202_LINUX.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547817/p4547817_10202_Linux-IA64.zip" target="_blank">ftp://updates.oracle.com/4547817/p4547817_10202_Linux-IA64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547817/p4547817_10202_Linux-x86-64.zip" target="_blank">ftp://updates.oracle.com/4547817/p4547817_10202_Linux-x86-64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547817/p4547817_10202_MVS.zip" target="_blank">ftp://updates.oracle.com/4547817/p4547817_10202_MVS.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547817/p4547817_10202_SOLARIS.zip" target="_blank">ftp://updates.oracle.com/4547817/p4547817_10202_SOLARIS.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547817/p4547817_10202_SOLARIS64.zip" target="_blank">ftp://updates.oracle.com/4547817/p4547817_10202_SOLARIS64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547817/p4547817_10202_WINNT.zip" target="_blank">ftp://updates.oracle.com/4547817/p4547817_10202_WINNT.zip</a>
<br/>
<a href="ftp://updates.oracle.com/4547817/p4547817_10202_WINNT64.zip" target="_blank">ftp://updates.oracle.com/4547817/p4547817_10202_WINNT64.zip</a>
<br/>
<br/>
oracle 10.2.0.3 patch:
<br/>
<a href="ftp://updates.oracle.com/5337014/p5337014_10203_WINNT.zip" target="_blank">ftp://updates.oracle.com/5337014/p5337014_10203_WINNT.zip</a>
<br/>
<a href="ftp://updates.oracle.com/5337014/p5337014_10203_WINNT64.zip" target="_blank">ftp://updates.oracle.com/5337014/p5337014_10203_WINNT64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/5337014/p5337014_10203_AIX5L.zip" target="_blank">ftp://updates.oracle.com/5337014/p5337014_10203_AIX5L.zip</a>
<br/>
<a href="ftp://updates.oracle.com/5337014/p5337014_10203_WINNT.zip" target="_blank">ftp://updates.oracle.com/5337014/p5337014_10203_WINNT.zip</a>
<br/>
<a href="ftp://updates.oracle.com/5337014/p5337014_10203_WINNT.zip" target="_blank">ftp://updates.oracle.com/5337014/p5337014_10203_WINNT.zip</a>
<br/>
<a href="ftp://updates.oracle.com/5337014/p5337014_10203_WINNT.zip" target="_blank">ftp://updates.oracle.com/5337014/p5337014_10203_WINNT.zip</a>
<br/>
<br/>
oracle 10.2.0.4 patch:
<br/>
<a href="ftp://updates.oracle.com/6810189/p6810189_10204_AIX5L.zip" target="_blank">ftp://updates.oracle.com/6810189/p6810189_10204_AIX5L.zip</a>
<br/>
<a href="ftp://updates.oracle.com/6810189/p6810189_10204_LINUX.zip" target="_blank">ftp://updates.oracle.com/6810189/p6810189_10204_LINUX.zip</a>
<br/>
<a href="ftp://updates.oracle.com/6810189/p6810189_10204_Linux-x86-64.zip" target="_blank">ftp://updates.oracle.com/6810189/p6810189_10204_Linux-x86-64.zip</a>
<br/>
<a href="ftp://updates.oracle.com/6810189/p6810189_10204_Linux-x86.zip" target="_blank">ftp://updates.oracle.com/6810189/p6810189_10204_Linux-x86.zip</a>
<br/>
<a href="ftp://updates.oracle.com/6810189/p6810189_10204_Win32.zip" target="_blank">ftp://updates.oracle.com/6810189/p6810189_10204_Win32.zip</a>
<br/>
<a href="ftp://updates.oracle.com/6810189/p6810189_10204_Win64.zip" target="_blank">ftp://updates.oracle.com/6810189/p6810189_10204_Win64.zip</a>
<br/>
        </p>
<img src ="http://www.blogjava.net/oxidy/aggbug/400268.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxidy/" target="_blank">oxidy</a> 2013-06-06 09:50 <a href="http://www.blogjava.net/oxidy/archive/2013/06/06/400268.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>特殊字符</title><link>http://www.blogjava.net/oxidy/archive/2013/06/06/400269.html</link><dc:creator>oxidy</dc:creator><author>oxidy</author><pubDate>Thu, 06 Jun 2013 01:50:00 GMT</pubDate><guid>http://www.blogjava.net/oxidy/archive/2013/06/06/400269.html</guid><wfw:comment>http://www.blogjava.net/oxidy/comments/400269.html</wfw:comment><comments>http://www.blogjava.net/oxidy/archive/2013/06/06/400269.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxidy/comments/commentRss/400269.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxidy/services/trackbacks/400269.html</trackback:ping><description><![CDATA[
<p>任何特殊字符编码也都可用此程序获得,如
<br/>
<br/>
"\"单反斜杠 %5C
<br/>
"|" %7C
<br/>
回车 %0D%0A
<br/>
空格 %20
<br/>
双引号 %22
<br/>
"&amp;" %26
<br/>
        </p>
<img src ="http://www.blogjava.net/oxidy/aggbug/400269.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxidy/" target="_blank">oxidy</a> 2013-06-06 09:50 <a href="http://www.blogjava.net/oxidy/archive/2013/06/06/400269.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java读取properties文件的思考</title><link>http://www.blogjava.net/oxidy/archive/2013/06/06/400264.html</link><dc:creator>oxidy</dc:creator><author>oxidy</author><pubDate>Thu, 06 Jun 2013 01:49:00 GMT</pubDate><guid>http://www.blogjava.net/oxidy/archive/2013/06/06/400264.html</guid><wfw:comment>http://www.blogjava.net/oxidy/comments/400264.html</wfw:comment><comments>http://www.blogjava.net/oxidy/archive/2013/06/06/400264.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxidy/comments/commentRss/400264.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxidy/services/trackbacks/400264.html</trackback:ping><description><![CDATA[
<div>
          <strong>
            <span style="COLOR: #ff0000; FONT-SIZE: 0.9em">Java读取properties文件的思考</span>
          </strong>
        </div>
<div>Java读取properties文件的方法比较多，网上我最多的文章是"Java读取properties文件的六种方法"，但在Java应用中，最常用还是通过java.lang.Class类的getResourceAsStream(String name) 方法来实现，但我见到众多读取properties文件的代码中，都会这么干：</div>
<div>InputStream in = getClass().getResourceAsStream("资源Name");</div>
<div>这里面有个问题，就是getClass()调用的时候默认省略了this！我们都知道，this是不能在static（静态）方法或者static块中使用的，原因是static类型的方法或者代码块是属于类本身的，不属于某个对象，而this本身就代表当前对象，而静态方法或者块调用的时候是不用初始化对象的。</div>
<div>问题是：假如我不想让某个类有对象，那么我会将此类的默认构造方法设为私有，当然也不会写别的共有的构造方法。并且我这个类是工具类，都是静态的方法和变量，我要在静态块或者静态方法中获取properties文件，这个方法就行不通了。</div>
<div>那怎么办呢？其实这个类就不是这么用的，他仅仅是需要获取一个Class对象就可以了，那还不容易啊－－取所有类的父类Object，用Object.class难道不比你的用你正在写类自身方便安全吗 ？呵呵，下面给出一个例子，以方便交流。</div>
<div>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 16px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 4px; FONT-FAMILY: verdana, 宋体; COLOR: #000000; FONT-SIZE: 10pt; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px">
            <span style="COLOR: #0000ff">import</span> java.util.Properties;
<br/>
<span style="COLOR: #0000ff">import</span> java.io.InputStream;
<br/>
<span style="COLOR: #0000ff">import</span> java.io.IOException;
<br/>
<br/>
<span style="COLOR: #008000">/**
<br/>
* 读取Properties文件的例子
<br/>
* File: TestProperties.java
<br/>
* User: leizhimin
<br/>
* Date: 2008-2-15 18:38:40
<br/>
*/</span>
<br/>
<span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">final</span> <span style="COLOR: #0000ff">class</span> TestProperties {
<br/>
<span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">static</span> String param1;
<br/>
<span style="COLOR: #0000ff">private</span> <span style="COLOR: #0000ff">static</span> String param2;
<br/>
<br/>
<span style="COLOR: #0000ff">static</span> {
<br/>
Properties prop = <span style="COLOR: #0000ff">new</span> Properties();
<br/>
InputStream in = Object.<span style="COLOR: #0000ff">class</span>.getResourceAsStream(<span style="COLOR: #800000">"/test.properties"</span>);
<br/>
<span style="COLOR: #0000ff">try</span> {
<br/>
prop.load(in);
<br/>
param1 = prop.getProperty(<span style="COLOR: #800000">"initYears1"</span>).trim();
<br/>
param2 = prop.getProperty(<span style="COLOR: #800000">"initYears2"</span>).trim();
<br/>
} <span style="COLOR: #0000ff">catch</span> (IOException e) {
<br/>
e.printStackTrace();
<br/>
}
<br/>
}
<br/>
<br/>
<span style="COLOR: #008000">/**
<br/>
* 私有构造方法，不需要创建对象
<br/>
*/</span>
<br/>
<span style="COLOR: #0000ff">private</span> TestProperties() {
<br/>
}
<br/>
<br/>
<span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> String getParam1() {
<br/>
<span style="COLOR: #0000ff">return</span> param1;
<br/>
}
<br/>
<br/>
<span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> String getParam2() {
<br/>
<span style="COLOR: #0000ff">return</span> param2;
<br/>
}
<br/>
<br/>
<span style="COLOR: #0000ff">public</span> <span style="COLOR: #0000ff">static</span> <span style="COLOR: #0000ff">void</span> main(String args[]){
<br/>
System.out.println(getParam1());
<br/>
System.out.println(getParam2());
<br/>
}
<br/>
}</div>
</div>
<div>运行结果：</div>
<div>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 16px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 4px; FONT-FAMILY: verdana, 宋体; COLOR: #000000; FONT-SIZE: 10pt; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px">151
<br/>
152
<br/>
<br/>
Process finished with exit code 0</div>
</div>
<div>当然，把Object.class换成int.class照样行，呵呵，大家可以试试。</div>
<div>另外，如果是static方法或块中读取Properties文件，还有一种最保险的方法，就是这个类的本身名字来直接获取Class对象，比如本例中可写成TestProperties.class，这样做是最保险的方法。</div>
<div>周末愉快～～～！！！</div>
<p>本文出自 "<a href="http://lavasoft.blog.51cto.com/">
            <span style="COLOR: #000000">熔 岩</span>
          </a>" 博客，请务必保留此出处<a href="http://lavasoft.blog.51cto.com/62575/62174">
            <span style="COLOR: #000000">http://lavasoft.blog.51cto.com/62575/62174</span>
          </a>
        </p>
<p>
          <label style="FLOAT: left">[4楼] <img src="http://img1.51cto.com/image/skin/reply.gif" height="8" width="7"/> [匿名]51CTO游客</label>
        </p>
<div style="TEXT-ALIGN: right">2008-04-23 11:56:50</div>
<div class="commentcontent">我刚好遇到了这个问题,如果说我的读取属性文件的类(class文件)是放在工程下的WEB_INF/CLASSES/com/database/下的,我的属性文件也放在该目录下,那么我的相对路径该怎么写才不会抱错(tomcat说是找不到路径),请问是怎么回事?
<br/>
        </div>
<div style="WORD-WRAP: break-word; TABLE-LAYOUT: fixed" id="itcommentid4" class="itcomment">
<div>
<div style="BORDER-BOTTOM: #a0a0a0 1px solid; WIDTH: 100%; HEIGHT: 20px">
              <label style="FLOAT: left">[5楼] <img src="http://img1.51cto.com/image/skin/reply.gif" height="8" width="7"/> <a href="http://icansoft.blog.51cto.com/" class="operlink" target="_blank">
                  <strong>
                    <span style="COLOR: #00a0ff">Icansoft</span>
                  </strong>
                </a>
              </label>
            </div>
</div>
<div style="TEXT-ALIGN: right">2008-11-14 11:57:59</div>
<div class="commentcontent">4楼说的正中我所想的！！
<br/>
<br/>
我觉得，当客户请求时，web服务器的url是以web应用的web-inf所在的上一层文件夹为起点的。而web服务器在调用web容器的时候，容器本身有个mapping，当mapping到某url，例如请求/logon.do，在web-inf上层文件夹找不到相应的jsp或html文件，则在容器的map找，找到是调用org.can.LogonAction，这是容器是以classes文件夹为起点路径。
<br/>
<br/>
所以4楼的相对路径应该/com/database/xxx.properties。我尝试了，成功！</div>
<div id="recomment_resultid4" class="commentcontent">
            <br/>
<strong>博主回复:</strong>
<br/>
你说的很对，其实WEB应用的中的WEB-INF的classes文件夹就是web应用classpath，在这里面的文件都可以通过CLASSPATH的方式来找到。
<br/>
<br/>
其次，说明一点，如果你放到WEB-INF下面，或者web应用之外就不一定能找到了。
<br/>
<br/>
另外，再想想Properties文件的目的，就是为了给软件使用者来用的，让其可以在外部修改软件的一些属性。既然如此，那这个文件就不应该存在于软件包里面，而应该打在war包外（或者放到web应用的目录之外）。常见的做法是放到servlet容器的CLASSPATH里面。例如，在做使用tomcat的时候，常常放到common/classes文件夹下面。
<br/>
<br/>
<br/>
2008-11-14 12:32:30</div>
</div>
<img src ="http://www.blogjava.net/oxidy/aggbug/400264.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxidy/" target="_blank">oxidy</a> 2013-06-06 09:49 <a href="http://www.blogjava.net/oxidy/archive/2013/06/06/400264.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>java时间操作</title><link>http://www.blogjava.net/oxidy/archive/2013/06/06/400265.html</link><dc:creator>oxidy</dc:creator><author>oxidy</author><pubDate>Thu, 06 Jun 2013 01:49:00 GMT</pubDate><guid>http://www.blogjava.net/oxidy/archive/2013/06/06/400265.html</guid><wfw:comment>http://www.blogjava.net/oxidy/comments/400265.html</wfw:comment><comments>http://www.blogjava.net/oxidy/archive/2013/06/06/400265.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxidy/comments/commentRss/400265.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxidy/services/trackbacks/400265.html</trackback:ping><description><![CDATA[
<div class="tit">java时间操作(转)</div>
<div class="date">2008-03-05 09:19</div>
<table style="WIDTH: 100%; TABLE-LAYOUT: fixed">
<tbody>
<tr>
<td>
<div id="blog_text" class="cnt">
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>java</span>
                    <span>中的时间操作不外乎这四种情况：</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>1</span>
                    <span>、获取当前时间</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>2</span>
                    <span>、获取某个时间的某种格式</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>3</span>
                    <span>、设置时间</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>4</span>
                    <span>、时间的运算</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">好，下面就针对这三种情况，一个一个搞定。</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <strong>一、获取当前时间</strong>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>有两种方式可以获得，第一种，使用</span>
                    <span>Date</span>
                    <span>类。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>j2SE</span>
                    <span>的包里有两个</span>
                    <span>Date</span>
                    <span>类，一个是</span>
                    <span>java.sql.Date,</span>
                    <span>一个是</span>
                    <span>java.util.Date</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>这里，要使用</span>
                    <span>java.util.Date</span>
                    <span>。获取当前时间的代码如下</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span class="Code">Date date = new Date();</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>date.getTime()</span>
                    <span>;</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>还有一种方式，使用</span>
                    <span>
                      <span class="Code">
                        <span style="COLOR: #000000">
                          <span>System.currentTimeMillis()</span>
                          <span>;</span>
                        </span>
                      </span>
                    </span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>这两种方式获得的结果是一样的，都是</span>
                    <span style="COLOR: #ff00ff">得到一个当前的时间的long型的时间的毫秒值</span>
                    <span>，这个值实际上是当前时间值与</span>
                    <span>1970</span>
                    <span>年一月一号零时零分零秒相差的毫秒数。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>当前的时间得到了，但实际的应用中最后往往不是要用这个</span>
                    <span>long</span>
                    <span>型的东西，用户希望得到的往往是一个时间的字符串，比如"</span>
                    <span>2006</span>
                    <span>年</span>
                    <span>6</span>
                    <span>月</span>
                    <span>18</span>
                    <span>号"，或"</span>
                    <span>2006-06-18</span>
                    <span>"，老外可能希望得到的是"</span>
                    <span>06-18-2006</span>
                    <span>"，诸如此类等等。这就是下一个要解决的问题</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <strong>二、获取某个时间的某种格式</strong>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>获取时间的格式，需要用到一个专门用于时间格式的类</span>
                    <span style="COLOR: #ff00ff">java.text.SimpleDateFormat</span>
                    <span>。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>首先，定义一个</span>
                    <span>SimpleDateFormat</span>
                    <span>变量</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span class="Code">
                      <span style="FONT-FAMILY: Verdana; COLOR: #000000">SimpleDateFormat sdf = new SimpleDateFormat("",Locale.SIMPLIFIED_CHINESE);</span>
                    </span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">这个构造函数的定义如下：</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>SimpleDateFormat(String</span> <span>pattern, Locale</span> <span>locale)</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>第一个参数</span>
                    <span>pattern</span>
                    <span>，我们后面再解释，这里我们使用一个</span>
                    <span>"",</span>
                    <span>第二个参数，是用来设置时区的，这里用到了</span>
                    <span>java.util.Locale</span>
                    <span>这个类，这个类了面定义了很多静态变量，直接拿过来用就</span>
                    <span>OK</span>
                    <span>，我们把时区设置为</span>
                    <span>Locale.SIMPLIFIED_CHINESE</span>
                    <span>，只看名字，这个静态变量的意义已经很清楚了。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>接下来我们使用这个</span>
                    <span>SimpleDateFormat</span>
                    <span>把当前时间格式化为一个如下格式的时间字符串"</span>
                    <span>XXXX</span>
                    <span>年</span>
                    <span>XX</span>
                    <span>月</span>
                    <span>XX</span>
                    <span>日</span>
                    <span>_XX</span>
                    <span>时</span>
                    <span>XX</span>
                    <span>分</span>
                    <span>XX</span>
                    <span>秒"，代码：</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span class="Code">sdf.applyPattern("yyyy年MM月dd日_HH时mm分ss秒");</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">String timeStr = sdf.format(new Date());</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>获取时间格式的函数是</span>
                    <span>format</span>
                    <span>，这个函数的参数是</span>
                    <span>java.util.Date</span>
                    <span>对象，这个没有什么花头。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>要说明一下的是这个</span>
                    <span>pattern</span>
                    <span>，所谓的模式。这里，</span>
                    <span>yyyy,MM,dd</span>
                    <span>等，这就是模式。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>我们可以在</span>
                    <span>SimpleDateFormat</span>
                    <span>的构造函数中指定模式，比如</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>
                      <span class="Code">
                        <span style="COLOR: #000000">
                          <span style="FONT-FAMILY: Verdana">
                            <span>SimpleDateFormat sdf = new SimpleDateFormat("</span>
                            <span>yyyy-MM-dd</span>
                            <span>",Locale.SIMPLIFIED_CHINESE);</span>
                          </span>
                        </span>
                      </span>
                    </span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">也可以获取时间格式的时候使用applyPattern函数临时指定，上面的例子就是这样。</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>什么字符代表什么，这是</span>
                    <span>j2se</span>
                    <span>约定好的，设置模式的时候，我们可以使用约定好的字符加上任何我们想要的字符串。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>j2se</span>
                    <span>对字符所代表的模式的约定列表如下：</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<table cellpadding="1" width="500" align="center" cellspacing="1" border="0">
<tbody>
<tr>
<td>
                          <span style="FONT-SIZE: 0.9em">Letter</span>
                        </td>
<td>
                          <span style="FONT-SIZE: 0.9em">
                            <span style="FONT-WEIGHT: bold">
                              <span style="FONT-SIZE: 0.9em">Date or Time Component</span>
                            </span>
                          </span>
                        </td>
<td>
                          <span style="FONT-SIZE: 0.9em">
                            <span style="FONT-WEIGHT: bold">
                              <span style="FONT-SIZE: 0.9em">Presentation</span>
                            </span>
                          </span>
                        </td>
</tr>
<tr>
<td>G</td>
<td>Era designator</td>
<td>Text</td>
</tr>
<tr>
<td>y</td>
<td>Year</td>
<td>Year</td>
</tr>
<tr>
<td>M</td>
<td>Month in year</td>
<td>Month</td>
</tr>
<tr>
<td>w</td>
<td>Week in year</td>
<td>Number</td>
</tr>
<tr>
<td>W</td>
<td>Week in month</td>
<td>Number</td>
</tr>
<tr>
<td>D</td>
<td>Day in year</td>
<td>Number</td>
</tr>
<tr>
<td>d</td>
<td>Day in month</td>
<td>Number</td>
</tr>
<tr>
<td>F</td>
<td>Day of week in month</td>
<td>Number</td>
</tr>
<tr>
<td>E</td>
<td>Day in week</td>
<td>Text</td>
</tr>
<tr>
<td>a</td>
<td>Am/pm marker</td>
<td>Text</td>
</tr>
<tr>
<td>H</td>
<td>Hour in day (0-23)</td>
<td>Number</td>
</tr>
<tr>
<td>k</td>
<td>Hour in day (1-24)</td>
<td>Number</td>
</tr>
<tr>
<td>K</td>
<td>Hour in am/pm (0-11)</td>
<td>Number</td>
</tr>
<tr>
<td>h</td>
<td>Hour in am/pm (1-12)</td>
<td>Number</td>
</tr>
<tr>
<td>m</td>
<td>Minute in hour</td>
<td>Number</td>
</tr>
<tr>
<td>s</td>
<td>Second in minute</td>
<td>Number</td>
</tr>
<tr>
<td>S</td>
<td>Millisecond</td>
<td>Number</td>
</tr>
<tr>
<td>z</td>
<td>Time zone</td>
<td>General time zone</td>
</tr>
<tr>
<td>Z</td>
<td>Time zone</td>
<td>RFC 822 time zone</td>
</tr>
</tbody>
</table>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <strong>三、设置时间</strong>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">现实中的时间是由不得我们这些凡夫俗子的，如来老头来了也许还有点可能，但在程序里我们可以变得神通广大。设置时间最典型的应用就是定时任务，我们设置一个时间，到时执行某项任务。</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">但这里我们主要不是为了解决这个定时任务的问题，我们是为了搞清楚怎么设置时间。关于定时任务，在后面再讨论怎么做。</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>所谓的设置时间，其实就是我们把一个我们能看懂的时间的显性的值（数字、字符串等），转化成程序能看得懂的（</span>
                    <span>Date</span>
                    <span>类，</span>
                    <span>long</span>
                    <span>型的毫秒值等）告诉它。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>最直接的思路是，</span>
                    <span>new</span>
                    <span>一个</span>
                    <span>Date</span>
                    <span>类，使用它的某个方法，传进我们指定的数字或字符串类型的值，设置它的时间。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>那就先来看一下</span>
                    <span>Date</span>
                    <span>这个类，这个类里面有好多方法，什么</span>
                    <span>setYear</span>
                    <span>，</span>
                    <span>setMonth</span>
                    <span>的，看起来真是太好了，传个</span>
                    <span>int</span>
                    <span>值进去就搞定了。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>可惜，这些看起来非常</span>
                    <span>good</span>
                    <span>的方法从</span>
                    <span>JDK1.1</span>
                    <span>以后就不用了，只有一个</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>setTime</span>
                    <span>(long time)方法还勉强可以用，但是看看这个方法的参数吧，</span>
                    <span>TNND</span>
                    <span>，是个</span>
                    <span>long</span>
                    <span>，</span>
                    <span>2006</span>
                    <span>年</span>
                    <span>7</span>
                    <span>月</span>
                    <span>1</span>
                    <span>号的</span>
                    <span>long</span>
                    <span>值是什么？鬼才知道。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>所以这个方法不可取，刚才也提到</span>
                    <span>Date</span>
                    <span>类里有很多方法从</span>
                    <span>JDK1.1</span>
                    <span>以后就不用了，其中就有什么</span>
                    <span>setYear,setMonth</span>
                    <span>这样的方法。这些方法不是</span>
                    <span>JDK</span>
                    <span>里面没有了，而是被</span>
                    <span>Calendar</span>
                    <span>类里面的方法给取代了。（为什么取代？这个问题去问开发</span>
                    <span>JDK</span>
                    <span>的那帮人好了）</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>其实，还是用上面说到的</span>
                    <span>SimpleDateFormat</span>
                    <span>就可以搞定，代码,三行：</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span class="Code">SimpleDateFormat sdf = new SimpleDateFormat("",Locale.SIMPLIFIED_CHINESE);</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>sdf.</span>
                    <span>applyPattern("yyyy</span>
                    <span>年</span>
                    <span>MM</span>
                    <span>月</span>
                    <span>dd</span>
                    <span>日</span>
                    <span>_HH</span>
                    <span>时</span>
                    <span>mm</span>
                    <span>分</span>
                    <span>ss</span>
                    <span>秒</span>
                    <span>");</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>Date date = sdf.</span>
                    <span>parse("</span>
                    <span>2006</span>
                    <span>年</span>
                    <span>07</span>
                    <span>月</span>
                    <span>01</span>
                    <span>日</span>
                    <span>_</span>
                    <span>14</span>
                    <span>时</span>
                    <span>00</span>
                    <span>分</span>
                    <span>00</span>
                    <span>秒</span>
                    <span>");</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>一看就懂了吧，第一行是声明对象的，如果前面已经声明了，这一行也省了，第二行是设置模式（</span>
                    <span>pattern</span>
                    <span>）的，关于这个模式，前面已经解释的很详细了，没有什么好说的。第三行，就是要设置的时间跟模式对应的字符串。第三行就返回了我们要得到的</span>
                    <span>Date</span>
                    <span>类型。（啰嗦了这么半天，才啰嗦出这么三行代码</span>
                    <span>:)</span>
                    <span>）</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>Ok</span>
                    <span>，这个问题搞定，继续下一个。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <strong>四、时间的运算</strong>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>现在我们要开始用</span>
                    <span>Calendar</span>
                    <span>了，简单介绍一下先，</span>
                    <span>JDK</span>
                    <span>的文档里说，</span>
                    <span>Calendar</span>
                    <span>主要是用来对</span>
                    <span>Date</span>
                    <span>对象和</span>
                    <span>Integer</span>
                    <span>对象做转换的（这样看起来上面那个问题我们也可以使用</span>
                    <span>Calendar</span>
                    <span>）。事实上，实际的开发应用中，</span>
                    <span>Calendar</span>
                    <span>往往用来对时间进行操作，比如说设置个时间啊，对时间进行个对比运算什么滴。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>举个例子，已知两个</span>
                    <span>Date</span>
                    <span>型时间对象，</span>
                    <span>date1</span>
                    <span>、</span>
                    <span>date2</span>
                    <span>，我们需要计算出这两个时间之间相差几个小时，怎么做。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>一种思路：得到这两个时间对象的</span>
                    <span>long</span>
                    <span>值，然后相减，这就得到了他们相差的毫秒值，然后再根据这个毫秒值算出对应的小时。代码如下：</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>
                      <span class="Code">
                        <span style="COLOR: #000000">
                          <span style="FONT-FAMILY: Verdana">
                            <span>int distance = (int)((date2.getTime() - date1.getTime())/1000/60/60)</span>
                            <span>;</span>
                          </span>
                        </span>
                      </span>
                    </span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>简单解释一下</span>
                    <span>:</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>date2.getTime() - date1.getTime()</span>
                    <span>得到相应的</span>
                    <span>long</span>
                    <span>型时间值并相减，得到相差的毫秒值，再除</span>
                    <span>1000</span>
                    <span>，得到秒，再除</span>
                    <span>60</span>
                    <span>，得到分，再除</span>
                    <span>60</span>
                    <span>，得到小时。呵呵，我真是够啰嗦！从毫秒转化成秒的时候，我在</span>
                    <span>google</span>
                    <span>上搜索了半天才确定一秒等于</span>
                    <span>1000</span>
                    <span>毫秒，真是白痴</span>
                    <span>:)</span>
                    <span>。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">按上面的方式，似乎问题已经解决了。但是，结果得到的小时值很大可能是个小数，而且，有可能是个小数位很长的小数，这样就要考虑精确位的问题，上面那行代码就不够用了；还有一个比较关键的问题是，根据我们的习惯，往往可能是希望知道他们相差几小时几分几秒，而不是几点几个小时，也可能我们只想知道他们差几个小时，至于小时之外还差几分几秒，我们不感兴趣，这样，上面那行代码也不够用了。</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">如果要解决这种方式带来的后续的这两个问题，还要写更多的代码，麻烦死了，我是个懒人，不想费那脑子，我需要找一种更直接，更简单的方式来解决。</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>终于轮到</span>
                    <span>Calendar</span>
                    <span>出场了，对上面的问题，解决的代码如下：</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span class="Code">Calendar ca1 = Calendar.getInstance();</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">Calendar ca2 = Calendar.getInstance();</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">ca1.setTime(date1);</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">ca2.setTime(date2);</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">int distanceHour = ca2.get(Calendar.HOUR_OF_DAY) - ca1.get(Calendar.HOUR_OF_DAY);</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">虽然有五行代码，但这五行代码根本都不用费我的脑子考虑，不像前面的，还要考虑转化什么的，而且这五行代码完全可以像前面一样用一行代码搞定。</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">这样就得到了这两个时间相差的小时的值，我可以保证绝对是个整数，因为这个distanceHour只是这两个时间对象的小时数之差，而不考虑它们的分秒的差，如果想得它们差几分，代码如下</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>
                      <span class="Code">
                        <span style="COLOR: #000000">
                          <span>int distance</span>
                          <span>Min</span> <span>= ca2.get(Calendar.MINUTE) - ca1.get(Calendar.MINUTE);</span>
                        </span>
                      </span>
                    </span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>解释一下上面的代码</span>
                    <span>:</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span class="Code">
                      <span style="FONT-FAMILY: 宋体; COLOR: #000000">Calendar ca1 = Calendar.getInstance();</span>
                    </span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>得到一个</span>
                    <span>Calendar</span>
                    <span>对象，</span>
                    <span>Calendar</span>
                    <span>不提供公用的构造函数，不能</span>
                    <span>new</span>
                    <span>。这行代码得到的新对象的时间设置为当前时间。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span class="Code">
                      <span style="FONT-FAMILY: 宋体; COLOR: #000000">ca1.setTime(date1);</span>
                    </span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>把</span>
                    <span>Calendar</span>
                    <span>对象的时间设置为</span>
                    <span>date1</span>
                    <span>的时间。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>
                      <span class="Code">
                        <span style="COLOR: #000000">
                          <span>ca</span>
                          <span>1</span>
                          <span>.get(Calendar.HOUR_OF_DAY)</span>
                        </span>
                      </span>
                    </span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>获取</span>
                    <span>Calendar</span>
                    <span>对象的小时值，这里得到的是</span>
                    <span>24</span>
                    <span>小时制的。这个</span>
                    <span>get</span>
                    <span>方法参数是</span>
                    <span>int</span>
                    <span>型的，用来指定想要获取的域（</span>
                    <span>field</span>
                    <span>），就是什么年啊月啊周啊小时的东西。参数需要用</span>
                    <span>Calendar</span>
                    <span>类定义的常量，每个常量对应一个域（</span>
                    <span>field</span>
                    <span>），这些常量的含义都很明显（都可以顾名思义出来），用的时候在</span>
                    <span>IDE</span>
                    <span>环境里直接打点选择就可以。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>这个</span>
                    <span>get</span>
                    <span>方法用起来很灵活，比如得到一天的</span>
                    <span>int</span>
                    <span>值，我们可以得到这一天一个月里的第几天，也可以得到一周里的第几天，也可以得到一年里的第几天，只要传进对应的参数就</span>
                    <span>OK</span>
                    <span>了。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>有一点需要注意的是，按照我们的习惯，周一是一周的第一天，而老外的习惯是周日才是第一天，他们是先做完礼拜才开始这一周的。所以如果今天是周一，我们使用ca</span>
                    <span>1</span>
                    <span>.get(Calendar.DAY_OF_WEEK)时得到的值是</span>
                    <span>2</span>
                    <span>。</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1"> </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>前面提到，</span>
                    <span>Canlendar</span>
                    <span>也可以用来设置时间，代码如下</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span class="Code">Calendar ca = Calendar.getInstance();</span>
                  </p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">ca.set(Calendar.YEAR, 2006);</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">ca.set(Calendar.MONTH, 7);</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">ca.set(Calendar.DAY_OF_MONTH, 1);</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">ca.set(Calendar.HOUR_OF_DAY, 14);</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">ca.set(Calendar.MINUTE,0);</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">ca.set(Calendar.SECOND, 0);</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">Date date = ca.getTime();</p>
<p style="MARGIN: 0in; FONT-SIZE: 10pt; mso-outline-level: 1">
                    <span>这跟前面第三个问题中的那三行代码的结果基本上是一样的，为什么说基本上？因为毫秒值不一样，</span>
                    <span>ca</span>
                    <span>的毫秒值是当前时间的毫秒值，而我们没有进行设置，所以仍然是当前的毫秒值。用那三行代码，还是用这几行，任君选择</span>
                  </p>
</div>
</td>
</tr>
</tbody>
</table>
<img src ="http://www.blogjava.net/oxidy/aggbug/400265.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxidy/" target="_blank">oxidy</a> 2013-06-06 09:49 <a href="http://www.blogjava.net/oxidy/archive/2013/06/06/400265.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关闭Visual Studio 2008 实时调试器</title><link>http://www.blogjava.net/oxidy/articles/309978.html</link><dc:creator>oxidy</dc:creator><author>oxidy</author><pubDate>Mon, 18 Jan 2010 09:21:00 GMT</pubDate><guid>http://www.blogjava.net/oxidy/articles/309978.html</guid><wfw:comment>http://www.blogjava.net/oxidy/comments/309978.html</wfw:comment><comments>http://www.blogjava.net/oxidy/articles/309978.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxidy/comments/commentRss/309978.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxidy/services/trackbacks/309978.html</trackback:ping><description><![CDATA[
<p>发布测试:Zoundry Raven 客户端</p>
<p>关闭Visual Studio 2008 实时调试器</p>
<p><br/>
安装了visualStudio2008后，经常莫名其妙弹出一个"Visual Studio实时调试器"的对话框,提示某程序发生未处理的win32异常,并询问"要使用选定的调试器进行调试吗?"。在网上收集了一下，关闭实时调试器的方法大致有以下几种：</p>
<p>1. 修改Visual Studio 2008的调试设置
<br/>
打开visual studio 2008或visual studio 2005,打开菜单栏-工具-选项-调试-实时,然后看到三个选项,分别是本机,脚本,托管,全部取消掉</p>
<p>2. 改注册表
<br/>
删除注册表如下两项
<br/>
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
<br/>
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger
<br/>
如果想恢复原来的：
<br/>
执行： drwtsn32 -i</p>
<p>3.修改修改Visual Studio 2008的调试设置之二
<br/>
打开visual studio 2008或visual studio 2005,打开菜单栏-调试-&gt; 异常-&gt; win32 -&gt; "引发"前的钩去掉，确定</p>
<p>4.浏览器设置
<br/>
打开IE浏览器然后选择工具- internet选项-高级
<br/>
在菜单里你可以看到2个 禁用脚本调试 一个是指派给IE的,一个是指派给任何其他浏览器的. 全部打上勾,然后选择应用-确认.</p>
<p><a href="http://yingqi2008.blog.hexun.com/27044292_d.html">http://yingqi2008.blog.hexun.com/27044292_d.html</a></p>
<img src ="http://www.blogjava.net/oxidy/aggbug/309978.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxidy/" target="_blank">oxidy</a> 2010-01-18 17:21 <a href="http://www.blogjava.net/oxidy/articles/309978.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java工具类学习笔记[转载]</title><link>http://www.blogjava.net/oxidy/articles/306995.html</link><dc:creator>oxidy</dc:creator><author>oxidy</author><pubDate>Wed, 23 Dec 2009 03:15:00 GMT</pubDate><guid>http://www.blogjava.net/oxidy/articles/306995.html</guid><wfw:comment>http://www.blogjava.net/oxidy/comments/306995.html</wfw:comment><comments>http://www.blogjava.net/oxidy/articles/306995.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxidy/comments/commentRss/306995.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxidy/services/trackbacks/306995.html</trackback:ping><description><![CDATA[<a id="viewpost1_TitleUrl" class="postTitle2" href="../../xmatthew/archive/2008/10/25/236581.html">Java工具类学习笔记</a>
<br />
本人早期整理的Java工具类学习笔记,分享出来，希望大家多多提点建议和意见。<br />
<br />
集合类
<ul>
    <li>Set
    <ul>
        <li>HashSet
        <ul>
            <li>
            <p>优点：
            <br />
            &nbsp;&nbsp;后台实现一个hash table 加速get和contains方法。后台使用数组保存
            <br />
            缺点：
            <br />
            &nbsp;默认大小为16， 如果超过则需要重新申请内存空间，大小为原来的两倍，并把原来的数据内容复制到
            <br />
            &nbsp;新的内存空间中。
            <br />
            &nbsp;线程不安全(需通过Collections.synchronizedList方法设置)
            <br />
            &nbsp;加入的元素顺序会因其内部的hash排序而改变
            <br />
            <br />
            注：通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作。
            </p>
            </li>
        </ul>
        </li>
        <li>LinkedHashSet
        <ul>
            <li>
            <p>优点：
            <br />
            &nbsp;&nbsp;后台实现一个hash table 加速get和contains方法。后台使用链表保存
            <br />
            缺点：
            <br />
            &nbsp;默认大小为16， 如果超过则需要重新申请内存空间，大小为原来的两倍，并把原来的数据内容复制到
            <br />
            &nbsp;新的内存空间中。
            <br />
            &nbsp;线程不安全(需通过Collections.synchronizedList方法设置)
            <br />
            &nbsp;加入的元素顺序会因其内部的hash排序而改变
            <br />
            <br />
            注：通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作。
            </p>
            </li>
        </ul>
        </li>
        <li>TreeSet
        <ul>
            <li>
            <p>优点：
            <br />
            &nbsp;&nbsp;通过一个HashMap来实现数据的保存，内部实现红黑树数据结构，使所有元素按升序保存。
            <br />
            &nbsp;&nbsp;提供高效的get和contains方法，保存操作的效率为log(n)
            <br />
            缺点：
            <br />
            &nbsp;默认大小为16， 如果超过则需要重新申请内存空间，大小为原来的两倍，并把原来的数据内容复制到
            <br />
            &nbsp;新的内存空间中（来自HashMap)。
            <br />
            &nbsp;线程不安全(需通过Collections.synchronizedList方法设置)
            <br />
            &nbsp;加入的元素升级排序而改变
            <br />
            <br />
            注：treeset对元素有要求，必须实现Comparable接口或是Comparator 接口)
            <br />
            <br />
            注：通常缺省的load factor 0.75较好地实现了时间和空间的均衡。增大load factor可以节省空间但相应的查找时间将增大,这会影响像get和put这样的操作。
            </p>
            </li>
        </ul>
        </li>
        <li>CopyOnWriteArraySet
        <ul>
            <li>优点：
            <br />
            &nbsp;针对于对Set操作的情况有很多变化时使用，优其是在高并发的情况不想使用同步控制锁时
            <br />
            缺点：
            <br />
            &nbsp;消耗比较大的资料，每次作更新操作时，都会重新Copy一块内存后，再做合并操作。
            </li>
        </ul>
        </li>
    </ul>
    </li>
    <li>List
    <ul>
        <li>ArrayList
        <ul>
            <li>
            <p>优点：
            <br />
            &nbsp;&nbsp;&nbsp;使用数组,提供快速的get,add和iterate方法，占用比较小的内存空间
            <br />
            缺点：
            <br />
            &nbsp;&nbsp;&nbsp;线程不安全(需通过Collections.synchronizedList方法设置)
            <br />
            &nbsp;&nbsp;&nbsp;insert和remove操作，非常慢(需要移动数组元素来实现)
            <br />
            &nbsp;&nbsp;&nbsp;当size超过时，需要新建一个较大的数据(默认大小是10,增量是 (size * 3)/2 + 1,
            <br />
            &nbsp;&nbsp;&nbsp;且把原来的数据都复制到新的上面)
            <br />
            </p>
            </li>
        </ul>
        </li>
        <li>LinkedList
        <ul>
            <li>
            <p>优点：
            <br />
            &nbsp;&nbsp;&nbsp;使用链表结构,提供快速的add, insert, remove方法，占用比较小的内存空间
            <br />
            缺点：
            <br />
            &nbsp;&nbsp;&nbsp;线程不安全(需通过Collections.synchronizedList方法设置)
            <br />
            &nbsp;&nbsp;&nbsp;get操作，非常慢(需要从head一级级遍历查找)
            </p>
            </li>
        </ul>
        </li>
        <li>Vector
        <ul>
            <li>优点：
            <br />
            &nbsp;线程安全。
            <br />
            缺点：
            <br />
            &nbsp;相对于ArrayList效率要低。拥有ArrayList的缺点。
            </li>
        </ul>
        </li>
        <li>CopyOnWriteArrayList
        <ul>
            <li>优点：
            <br />
            &nbsp;针对于对List操作的情况有很多变化时使用，优其是在高并发的情况不想使用同步控制锁时
            <br />
            缺点：
            <br />
            &nbsp;消耗比较大的资料，每次作更新操作时，都会重新Copy一块内存后，再做合并操作。
            </li>
        </ul>
        </li>
        <li>TreeList(apache commons-collections)提供
        <ul>
            <li>
            <p>优点：
            <br />
            &nbsp;基于二叉数&nbsp;&nbsp;提供比较快速的get, add,insert,iterate,remove方法。其中get,add和iterate方法比ArrayList稍慢一点。
            <br />
            缺点：
            <br />
            &nbsp;相对于ArrayList和LinkedList占比较多的内存空间
            <br />
            &nbsp;线程不安全(需通过Collections.synchronizedList方法设置)
            </p>
            </li>
        </ul>
        </li>
    </ul>
    </li>
    <li>Map
    <ul>
        <li>ConcurrentHashMap
        <ul>
            <li>
            <p>优点：
            <br />
            &nbsp;基于二叉数&nbsp;&nbsp;提供比较快速的get, add,iterate方法。默认大小的16.
            <br />
            &nbsp;它是线程安全
            <br />
            缺点：
            <br />
            &nbsp;如果大小超过设定的大小时，效率会非常低。它会重新申请内存空间（原来空间的两倍)，同时把原来的值复制到新内存空间上。<br />
            </p>
            </li>
        </ul>
        </li>
    </ul>
    </li>
</ul>
http://www.blogjava.net/xmatthew/archive/2008/10/25/236581.html
<img src ="http://www.blogjava.net/oxidy/aggbug/306995.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxidy/" target="_blank">oxidy</a> 2009-12-23 11:15 <a href="http://www.blogjava.net/oxidy/articles/306995.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>当今计算机软件开发和应用领域最重要十种关键技术.TXT</title><link>http://www.blogjava.net/oxidy/articles/238410.html</link><dc:creator>oxidy</dc:creator><author>oxidy</author><pubDate>Mon, 03 Nov 2008 10:50:00 GMT</pubDate><guid>http://www.blogjava.net/oxidy/articles/238410.html</guid><wfw:comment>http://www.blogjava.net/oxidy/comments/238410.html</wfw:comment><comments>http://www.blogjava.net/oxidy/articles/238410.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxidy/comments/commentRss/238410.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxidy/services/trackbacks/238410.html</trackback:ping><description><![CDATA[本文列出了当今计算机软件开发和应用领域最重要十种关键技术排名，如果你想保证你现在以及未来的几年不失业，那么你最好跟上这些技术的发展。虽然你不必对这十种技术样样精通，但至少应该对它们非常熟悉。<br />
<br />
一、XML<br />
<br />
在十种技术中，最重要的一种技术我想应该非XML莫属。这里不仅仅指XML规范本身，还包括一系列有关的基于XML的语言：主要有XHTML，XSLT，XSL，DTDs，XML Schema(XSD)，XPath，XQuery和SOAP.如果你现在还对XML一无所知，那么赶快狂补吧。XML是包含类似于HTML标签的一个文本文件，在这个文件中定义了一个树型结构来描述它所保存的数据。<br />
<br />
XML最大的优点是你既可以在这个文本文件中存储结构化数据，也可以在其中存储非结构化数据——也就是说，它能包含和描述"粗糙的"文档数据，就象它描述"规则的"表格数据一样。<br />
<br />
XHTML是目前编写HTML的首选方法;因为XHTML本身就是格式良好的XML，与通常畸形的HTML文档相比， XHTML格式文档更容易处理。<br />
<br />
XSLT和XSL是对XML文档进行转换的语言。它们可以将XML文档转换成各种格式，比如另一个文本文件、PDF文件、HTML文件、逗号分割的文件，或者转换成其它的XML文档。<br />
<br />
DTDs 和XML Schema用来描述XML文件所包含的数据内容的类型，使你不用编写定制的代码就能对XML文档的内容进行"有效性"检查，使内容强行遵守给出的规则。<br />
<br />
XPath 和 XQuery是查询语言，用它们可以从XML文档中吸取单个的数据项或者数据项列表。XQuery的功能特别强大，因为它对XPath查询进行了扩展。实际上，XQuery和XML的关系就像SQL之于关系数据库一样。<br />
<br />
SOAP是Web services间进行通讯的标准协议。你不必知道SOAP协议的所有细节，但是你应该熟悉其常用规则及其工作原理，这样你才能使用它。<br />
<br />
二、Web Services<br />
<br />
Web服务是XML流行后的直接产物。因为XML可以描述数据和对象，XML大纲可以保证XML文档数据的有效性，因为XML的基于文本的规范，因而XML文档极其适合于作为一种跨平台通讯标准的基本格式。如果你还没有接触过Web服务，那么过不了多久你肯定会碰到它，所以必须熟练掌握Web服务，最好是精通它，因为它是迄今为止应用程序间跨不同种类机器、语言、平台和位置通讯的最简单的一种方式。不管你需不需要它，Web服务都会是将来互用性的主要趋势。<br />
<br />
XML工作组的John Bosak曾说过："XML使得Java有事可做"，那么，我们也可以说，Web服务使得所有语言都有事可做。Web服务让运行在大型机上的COBOL应用程序与运行在手持设备上的应用程序相互沟通;让Java小应用与。NET服务器相互通讯，让桌面应用与Web服务器进行无缝交互，不但为商业数据处理，同时也为商业功能提供了方便的实现——并且这种实现与语言、平台、和位置无关。<br />
<br />
三、面向对象编程<br />
<br />
许多程序员仍然认为OOP乃技术的象牙之塔，但是细细想一下过去十年里在面向对象领域里占据过统治地位的开发语言之后，你就不会这么认为了，OOP理念从Smalltalk开始，然后蔓延到C++和Pascal(Delphi)，到Java成为真正的主流，几年之后，VB.NET 和 C#的出现可以说是OOP发展到了登峰造极的地步。虽然使用这些语言不必了解OOP的概念，但如果你缺乏一些OOP的基本知识和方法，我想你很难在逐渐疲软的就业市场中找到工作。<br />
<br />
四、Java， C++， C#， VB.NET <br />
<br />
如果你热衷于技术，并且热爱编程，那么我想你应该轻松玩转这些高级语言，我说的玩转并不一定要你成为超级编程高手。而是能看懂用这些语言编写的代码即可。如果你还有精力用它们编码那就更好了。其实这种机会甚少。但是看代码的机会很多，学习编程的最有效的一种方式就是看源代码——浩如烟海的源代码中很多都不是用你所钟爱的开发语言编写的。<br />
<br />
在过去的几年里，各个语言功能的发展基本上都差不多。现在你完全可以用VB.NET来写Windows服务、Web应用或者命令行程序。即使你只用其中的一种语言写程序。我认为也完全有必要学习另外一种语言，使自己能阅读和理解它们现有的例子代码，并且能将一种语言编写的代码转换成你首选的编程语言代码。这里列出的四种语言可谓是一个强大的开发语言工具箱，如果你掌握了它们，毫无疑问你一定是一个众人仰慕的高手。这里我要声明一下：那就是我并没有要忽略和排除其它的高级语言，如：FORTRAN、COBOL、APL、ADA、Perl和Lisp等等，根据你所从事的领域不同，应该选择适合的语言和工具。<br />
<br />
五、JavaScript<br />
<br />
Java 和JavaScript两者的名字尽管很类似，但它们之间并没有什么关系。为什么一种脚本语言会如此重要，以至于将它列入十种关键技术之一呢?仔细想一下就知道了，目前所有主流的浏览器都使用JavaScript.如果你要编写Web应用程序，那么JavaScript不可或缺。此外，JavaScript还能作为一种服务器端的脚本语言，如将它嵌入在ASP、ASP.NET中，或者嵌入XSLT来扩展功能。目前JavaScript在Mozilla/Netscape中是激活基于XUL界面的首选语言，它派生出了ActionScript，成为Flash MX应用的编程语言。还有就是JavaScript极有可能成为未来新设备的脚本语言以及主流应用的宏语言。<br />
<br />
相比之下，VBScript虽然在微软的产品中得到很好的支持，但从长远来看，没有迹象表明它会有美好前途。微软自己都趋向于用JavaScript(或者用由JavaScript派生的JScript)来编写其客户端脚本代码。因此，如果你要选择脚本语言，非JavaScript莫属。<br />
<br />
六、Regular Expressions<br />
<br />
从所周知，关系数据库的查询使用SQL，搜索XML文档用XPath 和XQuery，而正则表达式则用来搜索纯文本。例如，你可以用一个命令来查找或删除HTML格式文件中的注释内容。大家都用过"IndexOf"、"InStr"以及"Like"这些内建在JavaScript或VB中的文本搜索函数，这些函数虽然很容易使用，但是它们的功能却无法与正则表达式同日而语——现在每一种主流的开发语言都提供对正则表达式的存取。尽管有人认为正则表达式本身的读写艰涩难懂，但毕竟它的功能强大，使用它的领域也越来越多。<br />
<br />
七、Design Patterns<br />
<br />
就像OOP通过创建和分类对象来简化编程一样，设计模式将普通的对象交互分类成指定的模型，这是一个从一般到具体的过程。OOP的成分使用得越多，设计模式就显得越有用武之地。所以你必须理解它们，跟上其总体理论的发展。<br />
<br />
八、Flash MX<br />
<br />
当你需要比HTML和CSS所能提供的更多的客户端图形和编程能力时，Flash是最佳选择。在Flash中编程比用Java小应用或者。NET代码来得快得多，也容易得多。<br />
<br />
在最新版本中(MX)，Flash不仅可以画图和进行动画打包，它还是个高度的可编程应用环境。具备强大的与SOAP Web服务沟通的能力，可以调用运行在远端服务器上的ColdFusion、Java或。NET代码。可以说Flash几乎无处不在，包括手持设备、置顶盒、甚至是新的平板电脑，你到处都可以见到它的身影，所以使用它实际上可以扩展和延伸你的应用程序使用领域。<br />
<br />
九、Linux/Windows <br />
<br />
这是当今PCs机操作系统的两大阵容，如果你想在计算机行业里混，就一定要熟悉它们。对于Linux，最好能自己安装，配置，下载它的图形用户界面以及一些应用程序。自己安装Apache并会编写Web应用程序。要清醒地认识到这个世界除了Windows之外，还有Linux的存在。并且这种局面将会长期存在。反过来，如果你是一个死忠的Linux开发者，不要再继续对Windows的憎恶，要相互学习，取长补短，看看Windows有什么好的东东可以采纳。记住Windows仍然是桌面之王。<br />
<br />
谁也说不准你们公司什么时候会决定从Linux转向Windows，或者从Windows转向Linux.谁也说不准什么时候你会跳槽跑到另外一个使用不同平台的公司上班——或者即便不跳槽，也有可能在不同平台上开始另外一个杀手级项目——所以最好在每个平台上都积累一些经验，而不要在一棵树上吊死。<br />
<br />
十、SQL<br />
<br />
尽管SQL在当今众多的技术中已不是什么新东西，而且在未来的十年里它的作用很有可能被削弱，甚至整个被淘汰，但它仍然是一种基本技能——别看它是一种基本技能，至今仍有许多开发人员不懂什么是SQL或对它了解不多。不要指望基于图形用户界面的SQL构造器会帮你的忙，还是自己亲手写SQL查询吧，确定你掌握了SQL的基本语法。现在理解了SQL，不仅对以后学习XQuery有所裨益，而且可以使你很快找到简化或改进当前开发项目的途径。<br />
<br />
尾声：培养对技术的好奇心<br />
<br />
其实，不管技术的发展趋势如何，每个人最重要的一个技能是好奇心。敢于面对挑战，在你目前或未来的工作中，新语言或新技术可能很重要，也可能不怎么重要，你所学习的东西并不一定非要针对你的工作。不要怕失败，任何新的技术对初学者来说都是困难的。大多数的失败都可以归咎于本身急功近利，希望速成。俗话说——千里之行，始于足下，应该脚踏实地，一步一个脚印地往前走。不要让时间来左右你行动，而是要利用时间来关注、研究、测试新的开发技术和工具<br />
<img src ="http://www.blogjava.net/oxidy/aggbug/238410.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxidy/" target="_blank">oxidy</a> 2008-11-03 18:50 <a href="http://www.blogjava.net/oxidy/articles/238410.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQLyog Enterprise执行快捷键</title><link>http://www.blogjava.net/oxidy/articles/238409.html</link><dc:creator>oxidy</dc:creator><author>oxidy</author><pubDate>Mon, 03 Nov 2008 10:48:00 GMT</pubDate><guid>http://www.blogjava.net/oxidy/articles/238409.html</guid><wfw:comment>http://www.blogjava.net/oxidy/comments/238409.html</wfw:comment><comments>http://www.blogjava.net/oxidy/articles/238409.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxidy/comments/commentRss/238409.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxidy/services/trackbacks/238409.html</trackback:ping><description><![CDATA[Set 数据是不区分顺序的 <br />
List 是分先后顺序的 <br />
Map Vector 很少在这种情况下用 <br />
ArrayList 是 List的一个实现。 <br />
<br />
所以，用 List ArrayList 的几率会高一些!<br />
<br />
-----------------------------------------------------------------<br />
<br />
SQLyog Enterprise执行快捷键<br />
<br />
F5&nbsp; 执行当前查询<br />
F1&nbsp; 帮助<br />
F3&nbsp; 快捷键窗口<br />
F6&nbsp; 更改表结构<br />
F7&nbsp; 管理索引窗口<br />
F9&nbsp; 刷新对象浏览器<br />
F10&nbsp; 管理外部关联<br />
F11&nbsp; 插入更新对话框<br />
<br />
Ctrl+1&nbsp; 显示/隐藏对象浏览器<br />
Ctrl+2&nbsp; 显示/隐藏结果面板<br />
Ctrl+3&nbsp; 显示/隐藏查询窗口<br />
Ctrl+B&nbsp; 对象浏览器获得焦点<br />
Ctrl+D&nbsp; 创建数据库<br />
Ctrl+E&nbsp; SQL 窗口获得焦点<br />
Ctrl+F&nbsp; 查找<br />
Ctrl+L&nbsp; 切换以文本/网格模式查看结果<br />
Ctrl+M&nbsp; 创建新连接<br />
Ctrl+N&nbsp; 使用当前连接属性创建新连接<br />
Ctrl+O&nbsp; 在 SQL 窗口打开 SQL 文档<br />
Ctrl+R&nbsp; 结果窗口获得焦点<br />
Ctrl+S&nbsp; 保存当前 SQL 文档<br />
Ctrl+U&nbsp; 添加新用户<br />
Ctrl+V&nbsp; 粘贴数据到 SQL 窗口<br />
Ctrl+Q&nbsp; 数据库同步工具<br />
Ctrl+F4&nbsp; 断开当前连接<br />
Ctrl+F5&nbsp; 执行选定查询<br />
<br />
Shift+F5 执行所有查询<br />
Shift+Del 清空一个表 / 清空一个数据库&nbsp; <br />
<br />
Ctrl+Alt+O 数据迁移工具包<br />
Ctrl+Alt+C 将表中数据导出为 CSV 格式<br />
Ctrl+Alt+X 将表中数据导出为 XML 格式<br />
Ctrl+Alt+H 将表中数据导出为 HTML 格式<br />
Ctrl+Alt+E 将数据导出为批处理脚本<br />
Ctrl+Alt+R 重排字段<br />
Ctrl+Alt+T 数据表诊断<br />
Ctrl+Alt+U 编辑用户权限<br />
Ctrl+Alt+F 强制刷新对话框<br />
Ctrl+Alt+N SQLyog 通知服务<br />
<br />
Ctrl+Shift+C 在 SQL 窗口注释所选内容<br />
Ctrl+Shift+E 导出结果集<br />
Ctrl+Shift+F 添加当前 SQL 到个人文件夹<br />
Ctrl+Shift+L 使选定内容小写<br />
Ctrl+Shift+P 激活个人文件夹菜单<br />
Ctrl+Shift+R 从所选内容删除注释<br />
Ctrl+Shift+S 打开创建架构对话框<br />
Ctrl+Shift+T 打开插入模板对话框<br />
Ctrl+Shift+U 使选定内容大写<br />
Ctrl+Shift+M 导入 CSV 数据到表中<br />
Ctrl+Shift+Q 执行 SQL 批处理文件<br />
Ctrl+Shift+W 打开管理用户对话框<br />
<br />
Alt+1...n 在结果窗口选择第 N 个标签页<br />
<br />
<br />
<img src ="http://www.blogjava.net/oxidy/aggbug/238409.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxidy/" target="_blank">oxidy</a> 2008-11-03 18:48 <a href="http://www.blogjava.net/oxidy/articles/238409.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Symantec 企业版 SEP/SCS/SAV 最新下载资源合集（简体中文版 + 英文版）[转载]</title><link>http://www.blogjava.net/oxidy/articles/233392.html</link><dc:creator>oxidy</dc:creator><author>oxidy</author><pubDate>Thu, 09 Oct 2008 09:22:00 GMT</pubDate><guid>http://www.blogjava.net/oxidy/articles/233392.html</guid><wfw:comment>http://www.blogjava.net/oxidy/comments/233392.html</wfw:comment><comments>http://www.blogjava.net/oxidy/articles/233392.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/oxidy/comments/commentRss/233392.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxidy/services/trackbacks/233392.html</trackback:ping><description><![CDATA[<div id="blog_text" class="cnt">
<div class="cnt">
<p><font color="#ff0000">注：企业版免激活免注册，可永久升级，因为企业已经帮你给了～～</font></p>
<p><strong><font color="#ff0000" size="5" face="楷体_GB2312">Symantec Endpoint Protection</font></strong></p>
<p>Symantec Endpoint Protection将Symantec
AntiVirus与高级威胁防御功能相结合，可以为笔记本、台式机和服务器提供无与伦比的恶意软件防护能力。
它在一个代理和管理控制台中无缝集成了基本安全技术，从而不仅提高了防护能力，而且还有助于降低总拥有成本。</p>
<p>主要功能<br />
* 无缝集成一些基本技术，如防病毒、反间谍软件、防火墙、入侵防御和设备控制。<br />
* 只需要一个代理，通过一个管理控制台即可进行管理。<br />
* 由端点安全领域的市场领导者提供无可匹敌的端点防护。<br />
* 无需对每个端点额外部署软件即可立即进行 NAC 升级。</p>
<p>主要优势<br />
* 阻截恶意软件，如病毒、蠕虫、特洛伊木马、间谍软件、恶意软件、bot、零日威胁和 rootkit。<br />
* 防止安全违规事件的发生，从而降低管理开销。<br />
* 降低保障端点安全的总拥有成本。</p>
<p>新功能</p>
<p>单个代理和单个控制台<br />
为所有 Symantec Endpoint Protection 技术和 Symantec Network Access Control
提供一个代理。为管理所有 Symantec Endpoint Protection 技术和 Symantec Network Access
Control 提供一个集成的界面。 允许对所有技术采用一种通信方法和一个内容交付系统。<br />
* 提供了出色的操作效能，如单个软件更新、单个策略更新等。<br />
* 提供了统一的集中报告。<br />
* 提供了统一的授权许可和维护。<br />
* 添加 Symantec Network Access Control 实施功能时不需要对客户端进行更改。<br />
* 降低保障端点安全的总拥有成本。<br />
* 降低了管理工作量。</p>
<p>主动威胁扫描<br />
基于行为的防护，可以防御零日威胁和前所未见的威胁。 与其它启发式技术不同，主动威胁扫描可以对未知应用程序的行为好坏进行分类，从而提供了更精确的恶意软件检测。<br />
* 无需设置基于规则的配置即可准确检测恶意软件。<br />
* 有助于降低误报数量。</p>
<p>高级 Rootkit 检测和删除功能<br />
通过集成 VxMS（Veritas 映射服务，Veritas 的一种技术）提供了出色的 rootkit 检测和删除功能，从而可以访问操作系统底层，进行全面分析和修复。<br />
* 检测并删除最难以处理的 rootkit。<br />
* 无需对受感染的计算机重新制作映像，因此节省了时间和金钱，同时防止工作效率下降。</p>
<p>应用程序控制<br />
允许管理员控制用户和其它应用程序访问特定进程、文件和文件夹。 它提供了应用程序分析、进程控制、文集和注册表访问控制，以及模块和 DLL 控制。 它使管理员能够限制某些被视为可疑或高风险类型的活动。<br />
* 防止恶意软件传播或破坏端点。<br />
* 锁定端点，防止数据泄漏。</p>
<p>设备控制<br />
控制可以连接到计算机的外设以及这些外设的使用方式。 它可以锁定一个端点，阻止其与拇指驱动器、CD 刻录机、打印机和其它 USB 设备相连。<br />
* 防止敏感的机密信息从端点被提取或窃取（数据泄漏）。<br />
* 防止端点被通过外设传播的病毒感染。</p>
<p><font color="#ff0000">Symantec Endpoint Protection 11.0.2010.56 MR2 MP2 简体中文版</font></p>
<p>CD1:<br />
<a href="http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11.0.2020_MR2_MP2_AllWin_CS_CD1.zip">http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11.0.2020_MR2_MP2_AllWin_CS_CD1.zip</a><br />
内容：<br />
SEP管理端<br />
SEP客户端<br />
SEP客户端64位<br />
CD2:（个人用户不必下载）<br />
<a href="http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11.0.2020_MR2_MP2_AllWin_CS_CD2.zip">http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11.0.2020_MR2_MP2_AllWin_CS_CD2.zip</a><br />
内容：<br />
中央隔离区<br />
LiveUpdate 服务端</p>
<p><font color="#ff0000">Symantec Endpoint Protection 11.0.2010.56 MR2 MP2 简体中文版客户端网盘下载</font><br />
<a href="http://www.namipan.com/d/38ca91225d96135a3d899b2a46c68cfb836e11e3b977a303">http://www.namipan.com/d/38ca91225d96135a3d899b2a46c68cfb836e11e3b977a303</a></p>
<p><font color="#ff0000">Symantec Endpoint Protection 11.0.2010.1567 MR2 MP1 简体中文版</font></p>
<p>完整版 2CD，其中CD1为客户端，含64位，个人用户下载CD1就够了，CD2为服务器集中管理工具</p>
<p>官方下载CD1：SHA-1 : 1a55fb422ea2b2ef17d9836c95dc23a8980e5661<br />
<a href="http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11.0.2010_MR2_MP1_AllWin_CS_CD1.zip">http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11.0.2010_MR2_MP1_AllWin_CS_CD1.zip</a><br />
官方下载CD2：SHA-1 : 48bef835098934ae8ad438924de4f561e9ebedcc<br />
<a href="http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11.0.2010_MR2_MP1_AllWin_CS_CD2.zip">http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11.0.2010_MR2_MP1_AllWin_CS_CD2.zip</a></p>
<p>下面是从官方客户端提取出来的32位客户端<br />
<a href="http://www.fs2you.com/zh-cn/files/9f75db51-3f53-11dd-af87-001143e7b41c/">http://www.fs2you.com/zh-cn/files/9f75db51-3f53-11dd-af87-001143e7b41c/</a></p>
<p>SEP 11.0.2010.1567 MR2 MP1 简体中文版客户端<br />
<a href="ftp://218.84.32.60/SEP11.0.2010.MR2_MP1_CS.rar">ftp://218.84.32.60/SEP11.0.2010.MR2_MP1_CS.rar</a></p>
<p><font color="#ff0000">Symantec Endpoint Protection 11.0.2010.1567 (MR2)英文版</font> <br />
官方下载CD1（内容：SEP管理端，SEP客户端，SEP客户端64位）：<a href="http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11.0.2010_MR2_MP1_AllWin_EN_CD1.zip">http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11.0.2010_MR2_MP1_AllWin_EN_CD1.zip</a><br />
官方下载CD2（内容：中央隔离区，LiveUpdate 服务端）[个人用户不必下载]：<a href="http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11.0.2010_MR2_MP1_AllWin_EN_CD2.zip">http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11.0.2010_MR2_MP1_AllWin_EN_CD2.zip</a></p>
<p><font color="#ff0000">Symantec Endpoint Protection 11.0.2000.1567 (MR2)简体中文版</font> <br />
官方下载CD1（372.80MB，内容：SEP管理端，SEP客户端，SEP客户端64位）：<a href="http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11.0.2000_MR2_AllWin_CS_CD1.zip">http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11.0.2000_MR2_AllWin_CS_CD1.zip</a><br />
官方下载CD2（156.10MB，内容：中央隔离区，LiveUpdate 服务端）[个人用户不必下载]：<a href="http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11.0.2000_MR2_AllWin_CS_CD2.zip">http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11.0.2000_MR2_AllWin_CS_CD2.zip</a><br />
客户端分离单机版下载地址（32位）：<br />
<a href="http://www.namipan.com/d/SEP.rar/381a68e5045832dcec9d66832cfe690e5a8e0cbab0be6203">http://www.namipan.com/d/SEP.rar/381a68e5045832dcec9d66832cfe690e5a8e0cbab0be6203</a><br />
<a href="http://bbs.qc668.net/imckt/SEPMR2/SEP.rar">http://bbs.qc668.net/imckt/SEPMR2/SEP.rar</a><br />
<a href="http://b.imckt.cn/soft/sep.rar">http://b.imckt.cn/soft/sep.rar</a><br />
客户端分离单机版下载地址（64位）：<br />
<a href="http://www.namipan.com/d/x64.rar/c25b66547e006fc5fefbaae31415346d1d832fa14efa9d03">http://www.namipan.com/d/x64.rar/c25b66547e006fc5fefbaae31415346d1d832fa14efa9d03</a><br />
<a href="http://bbs.qc668.net/imckt/SEPMR2/x64.rar">http://bbs.qc668.net/imckt/SEPMR2/x64.rar</a><br />
网盘下载（32位）：<a href="http://tele3.alidisk.net/down.aspx?down=ok&amp;filepath=tinypoint%2fSEP%2fSEP.rar">http://tele3.alidisk.net/down.aspx?down=ok&amp;filepath=tinypoint%2fSEP%2fSEP.rar</a><br />
网盘下载（64位）：<a href="http://tele3.alidisk.net/down.aspx?down=ok&amp;filepath=tinypoint%2fSEP%2fSEPWin64.rar">http://tele3.alidisk.net/down.aspx?down=ok&amp;filepath=tinypoint%2fSEP%2fSEPWin64.rar</a></p>
<p><font color="#ff0000">Symantec Endpoint Protection </font><font color="#ff0000">11.0.2000.1567 (MR2)英文版 </font><br />
官方下载CD1（374.64 MB ，MD5: 00E2C695A95DC5C5B25CBE57A7895AAB）：<a href="http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11_0_2000_MR2_AllWin_EN_CD1.zip">http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11_0_2000_MR2_AllWin_EN_CD1.zip</a><br />
官方下载CD2（154.23 MB，MD5: 9C8D9354A8009FA9F84E391BA88CC56C）：<a href="http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11_0_2000_MR2_AllWin_EN_CD2.zip">http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Endpoint_Protection_11_0_2000_MR2_AllWin_EN_CD2.zip</a><br />
网盘下载（32位）：<a href="http://rapidshare.com/files/107373820/EndpointProtection.11.0.2000.1567.MR2x32.rar">http://rapidshare.com/files/107373820/EndpointProtection.11.0.2000.1567.MR2x32.rar</a><br />
Endpoint Protection 11.0.2000.1567 MR2 (64-bit) Full<br />
网盘下载（64位）：<a href="http://rapidshare.com/files/107372559/EndpointProtection.11.0.2000.1567.MR2x64.rar">http://rapidshare.com/files/107372559/EndpointProtection.11.0.2000.1567.MR2x64.rar</a></p>
<p><font color="#ff0000">Symantec Endpoint Protection 11.0.2000.1253（MR2）简体中文版<br />
</font>网盘下载：<a href="http://www.fs2you.com/files/39e4c938-199a-11dd-a477-0014221b798a/">http://www.fs2you.com/files/39e4c938-199a-11dd-a477-0014221b798a/</a></p>
<p><font color="#ff0000">Symantec Endpoint Protection 11.0.1000.1375 官方简体中文版<br />
</font>单机客户端下载：<br />
下载地址：<a href="http://cachefile12.fs2you.com/zh-cn/download/c1a070551d9d46696151ba63d60cebb9/SEP11.0.1375_chs.rar">http://cachefile12.fs2you.com/zh-cn/download/c1a070551d9d46696151ba63d60cebb9/SEP11.0.1375_chs.rar</a><br />
引用页：<a href="http://www.fs2you.com/zh-cn/files/777c6421-ea87-11dc-b833-0014221f4662/">http://www.fs2you.com/zh-cn/files/777c6421-ea87-11dc-b833-0014221f4662/</a><br />
完整版客户端下载：<br />
CD1：<a target="_blank" href="ed2k://%7Cfile%7C%5B%E8%B5%9B%E9%97%A8%E9%93%81%E5%85%8B%E7%AB%AF%E7%82%B9%E4%BF%9D%E6%8A%A4%5D.Symantec_Endpoint_Protection_11.0.1375_AllWin_CS_CD1.zip%7C366925232%7C87a9ab66dc851a6e0e735b0afc0a216e%7C/">ed2k://|file|[赛门铁克端点保护].Symantec_Endpoint_Protection_11.0.1375_AllWin_CS_CD1.zip|366925232|87a9ab66dc851a6e0e735b0afc0a216e|/</a><br />
CD2：<a target="_blank" href="ed2k://%7Cfile%7C%5B%E8%B5%9B%E9%97%A8%E9%93%81%E5%85%8B%E7%AB%AF%E7%82%B9%E4%BF%9D%E6%8A%A4%5D.Symantec_Endpoint_Protection_11.0.1375_AllWin_CS_CD2.zip%7C122005869%7C8b61f9004199c703cf7b5a64f39831ac%7C/">ed2k://|file|[赛门铁克端点保护].Symantec_Endpoint_Protection_11.0.1375_AllWin_CS_CD2.zip|122005869|8b61f9004199c703cf7b5a64f39831ac|/</a></p>
<p><font color="#ff0000">Symantec Endpoint Protection 11.0.1000.1375 简体中文版（多特软件站）</font><br />
下载地址：<a href="http://26.duote.com/endpointprotection.exe">http://26.duote.com/endpointprotection.exe</a><br />
下载地址：<a href="http://36.duote.com/endpointprotection.exe">http://36.duote.com/endpointprotection.exe</a></p>
<p><font color="#ff0000">Symantec Endpoint Protection 11.0.901.2006简体中文版<br />
</font>下载地址：<a target="_blank" href="ed2k://%7Cfile%7CSEP11.09%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87.rar%7C49584511%7C40c69a2d3ee856c5e47bfc12f2890d86%7Ch=5YIRCCH3FI3EHKYBA7HNWBTK3PYW6RCG%7C/">ed2k://|file|SEP11.09简体中文.rar|49584511|40c69a2d3ee856c5e47bfc12f2890d86|h=5YIRCCH3FI3EHKYBA7HNWBTK3PYW6RCG|</a><br />
下载地址：<a href="ftp://software:software@218.84.32.24/SEP11_cn.rar">ftp://software:software@218.84.32.24/SEP11_cn.rar</a></p>
<p><font color="#ff0000">Symantec Endpoint Protection 11.0.780.1109 简体中文版</font><br />
363MB原版ISO镜像，这个可以理解为SCS的升级新一代版本，试用后感觉响应速度和PF占用都有了很大进步，使用symantec
SAV或者SCS的朋友可以考虑更新到这个版本了。内存占用在15-18M之间，如果打配置界面打开则多占20M左右。最重要的是和诺顿企业版一样升级不
用什么授权。<br />
下载地址（使用迅雷下载）：<a target="_blank" href="ed2k://%7Cfile%7CSymantec.Endpoint.Protection.11.0.780.1109.%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%E7%89%88.ISO%7C381018112%7C43fa6701514984ad83b0d56ee74da24c%7Ch=US44TGZEJM7JF2NQH6F7XIXGB35V2AO4%7C/">ed2k://|file|Symantec.Endpoint.Protection.11.0.780.1109.
简体中文
版.ISO|381018112|43fa6701514984ad83b0d56ee74da24c|h=US44TGZEJM7JF2NQH6F7XIXGB35V2AO4|</a></p>
<p><font color="#ff0000" size="5" face="楷体_GB2312"><strong>Symantec Client Security</strong></font></p>
<p>Symantec Client Security
3.1多用户软件包在一个易于管理的解决方案中提供了强大的多层安全。采用赛门铁克产品保护您的业务，您可以完全信赖其最新的病毒、黑客和混合型威胁防
护，以及世界级的支持。先进的防火墙保护和入侵检测能够自动隐藏您的桌面系统并禁止可疑连接。它们还能与Symantec AntiVirus&#8482;
无缝交互，以确保桌面系统、网络服务器和远程计算机的安全，防范病毒、蠕虫、特洛伊木马和混合型威胁。集中式管理工具有利于自动及时的防护并可轻松的从单
个位置来管理网络。同时，赛门铁克安全响应中心的专家将提供最新更新和专业支持，以应对新出现的威胁。</p>
<p>主要功能<br />
新！ 检测某些非病毒威胁，包括间谍软件和广告软件和击键记录程序。<br />
新！禁止 Outlook Express 和 Eudora 等 POP3 电子邮件带来的威胁。 <br />
新！禁止蠕虫通过电子邮件进行自传播。 <br />
新！自动删除由群发邮件蠕虫生成的整个邮件和附件。 <br />
新！跟踪混合威胁攻击，识别其在网络中的来源。 <br />
新！使用位置识别可确保防火墙策略遵从性，无需考虑计算机的位置。 <br />
新！确保远程 VPN 连接遵从客户端安全策略。 <br />
新！禁止弹出式窗口和旗帜广告。 <br />
新！扫描内存中进程以检查威胁，如果进程已被感染则将其终止。 <br />
自动杀除病毒、蠕虫和特洛伊木马。 <br />
禁止入侵尝试。 <br />
隐藏台式机和远程计算机，使黑客无从下手。 <br />
提供集中的配置、部署和管理。</p>
<p><font color="#ff0000">Symantec Client Security 10.1.7000 简体中文版<br />
</font>官方下载：<a href="http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Client_Security_3.1.7.7000_AllWin_CS.zip">http://esdownload.symantec.com/akdlm/CD/MTV/Symantec_Client_Security_3.1.7.7000_AllWin_CS.zip</a> <br />
网盘下载：<a href="http://www.fs2you.com/files/5da4d261-1e94-11dd-a2c2-00142218fc6e">http://www.fs2you.com/files/5da4d261-1e94-11dd-a2c2-00142218fc6e</a></p>
<p><font color="#ff0000">Symantec Client Security 10.1.7000 英文正式版</font><br />
下载地址: <a href="http://w-23.hn.52z.com//xl/Symantec.Client.Security.v10.1.7000.7.rar">http://w-23.hn.52z.com//xl/Symantec.Client.Security.v10.1.7000.7.rar</a><br />
下载地址: <a target="_blank" href="ed2k://%7Cfile%7CSymantec.Client.Security.v10.1.7000.7-DVT.zip%7C47353885%7C6B7085BC5455FDC4CF96217C5D4F4C1B%7C/%22%3ESymantec.Client.Security.v10.1.7000.7-DVT.zip">ed2k://|file|Symantec.Client.Security.v10.1.7000.7-DVT.zip|47353885|6B7085BC5455FDC4CF96217C5D4F4C1B|/"&gt;Symantec.Client.Security.v10.1.7000.7-DVT.zip</a></p>
<p><font color="#ff0000">Symantec Client Security 3.1.6.6000 英文版</font><br />
下载地址: <a href="http://soft11.greendown.cn/200704/SCS.rar">http://soft11.greendown.cn/200704/SCS.rar</a></p>
<p><font color="#ff0000">Symantec Client Security 3.1.5.5000 简体中文企业版</font><br />
下载地址: <a href="http://www.avkupdate.cn/SCS3.1.5.5000cs.rar">http://www.avkupdate.cn/SCS3.1.5.5000cs.rar</a></p>
<p><font color="#ff0000">Symantec Client Security 3.1.5.5000 简体中文版（服务器端+客户端）<br />
</font>下载地址（迅雷复制下载）：<a target="_blank" href="ed2k://%7Cfile%7C%5BSymantec.Client.Security%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%E4%BC%81%E4%B8%9A%E7%89%88%5D.Symantec_Client_Security_3.1.5.5000_AllWin_NetWare_CS.zip%7C639654021%7Cbba13b8c7f4dfb64c9b153683bac44b5%7Ch=KBHMMNS47P2ROPFE42KSSIVVSTSFSKPA%7C/">ed2k://|file|
[Symantec.Client.Security简体中文企业
版].Symantec_Client_Security_3.1.5.5000_AllWin_NetWare_CS.zip|639654021|bba13b8c7f4dfb64c9b153683bac44b5|h=KBHMMNS47P2ROPFE42KSSIVVSTSFSKPA|</a><br />
下载地址（迅雷复制下载）：<a target="_blank" href="ed2k://%7Cfile%7C%5BSymantec.Client.Security%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%E4%BC%81%E4%B8%9A%E7%89%88%5D.Symantec_Client_Security_3.1.5.5000_AllWin_NetWare_CS.zip%7C639654021%7Cbba13b8c7f4dfb64c9b153683bac44b5%7Ch=KBHMMNS47P2ROPFE42KSSIVVSTSFSKPA%7C/">ed2k://|file|%5BSymantec.Client.Security%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%E4%BC%81%E4%B8%9A%E7%89%88%5D.Symantec_Client_Security_3.1.5.5000_AllWin_NetWare_CS.zip|639654021|bba13b8c7f4dfb64c9b153683bac44b5|h=KBHMMNS47P2ROPFE42KSSIVVSTSFSKPA|</a></p>
<p><font size="4" face="楷体_GB2312"><font color="#ff0000" size="5"><strong>Symantec AntiVirus</strong></font><font size="3" face="Arial"><font color="#ff0000" size="5" face="楷体_GB2312"><strong> Corporate</strong></font> </font></font></p>
<p>Symantec AntiVirus Corporate
(诺顿杀毒软件企业版本)是世界上最优秀的杀毒软件之一，这个是企业版本，和专业版本、标准版本相比能为你带来更低的系统资源占用，更可靠的性能！希望大
家喜欢！ 为企业范围内的工作站和网路服务器提供全面的病毒防护-全球唯一病毒码更新的速度远快于病毒散播的速度的病毒防护方案
(台湾地区简称-赛门铁克企业防毒组合B-包含工作站及伺服主机的多层次防毒便利授权与中央控管的机制)
随着传播性、破坏性强的病毒出现得越来越多，企业范围内的病毒防护需求已经变为一项重要核心业务需求。仅仅在防火墙和电子邮件闸道具有安全性还不能够实现
病毒全面防护。工作站以及网路服务器层级的全面病毒防护是确保系统正常运行和用户生产率的重要需求</p>
<p>重要功能:<br />
1.可以在多种平台上实施病毒防护策略管理。 <br />
2.能够透过新的"漫游"病毒定义码更新功能，能够对可携式电脑实施最新的防护。<br />
3.可以从单个管理控制台来实现先进的防护和监控。 <br />
4.融入了业界领先技术的集中化、可延伸的管理。 <br />
5.透过减小病毒定义档大小和多工绪部署来快速部署并进行自动病毒防护。 <br />
6.现在可以为工作站、服务器提供逻辑组管理，并且为产品设置提供更好的防护能力。 <br />
7.广泛的平台支持，现在可以包括Netware 6.0。<br />
8.由赛门铁克安全机制应变中心--全球领先的网际网路安全研究及回应机构提供支持。</p>
<p><font color="#ff0000">Symantec Antivirus 10.1.7000.7 英文版</font><br />
下载地址: <a href="http://rapidshare.com/files/73845037/dvt-win32savce.10.1.7000.7.FULL.rar">http://rapidshare.com/files/73845037/dvt-win32savce.10.1.7000.7.FULL.rar</a><br />
下载地址: <a href="http://www.9down.com/down.php?site=1&amp;file=SAV_CE.v10.1.7000.7__9Down.COM.rar">http://www.9down.com/down.php?site=1&amp;file=SAV_CE.v10.1.7000.7__9Down.COM.rar</a></p>
<p><font color="#ff0000">Symantec Antivirus 10.1.7.7000 简体中文版</font><br />
无需Key或Sn，可自由升级。作为国际知名杀毒软件，它对机器资源的占用率极低。<br />
下载地址：<a href="http://www.fs2you.com/zh-cn/files/f5212438-bb9b-11dc-b5de-0014221b798a/">http://www.fs2you.com/zh-cn/files/f5212438-bb9b-11dc-b5de-0014221b798a/</a></p>
<p><font color="#ff0000">Symantec Antivirus 10.1.6.6010 简体中文版</font><br />
下载地址: <a href="http://download140.mediafire.com/mlxz9oze5hyg/70iemqjakxy/SAV10.16.exe">http://download140.mediafire.com/mlxz9oze5hyg/70iemqjakxy/SAV10.16.exe</a> <br />
下载地址: <a href="http://jx.10gb.cn/10gbdown/SAV.zip">http://jx.10gb.cn/10gbdown/SAV.zip</a></p>
<p><font color="#ff0000">Symantec Antivirus 10.1.4.4000 简体中文企业版（多特软件站）</font><br />
下载地址：<a href="http://26.duote.com/symantecantivirus.zip">http://26.duote.com/symantecantivirus.zip</a><br />
下载地址：<a href="http://36.duote.com/symantecantivirus.zip">http://36.duote.com/symantecantivirus.zip</a></p>
</div>
</div>
<img src ="http://www.blogjava.net/oxidy/aggbug/233392.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxidy/" target="_blank">oxidy</a> 2008-10-09 17:22 <a href="http://www.blogjava.net/oxidy/articles/233392.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>兰迪•弗雷德里克•波许(Randy Frederick Pausch)教授病逝</title><link>http://www.blogjava.net/oxidy/articles/219431.html</link><dc:creator>oxidy</dc:creator><author>oxidy</author><pubDate>Fri, 01 Aug 2008 10:40:00 GMT</pubDate><guid>http://www.blogjava.net/oxidy/articles/219431.html</guid><wfw:comment>http://www.blogjava.net/oxidy/comments/219431.html</wfw:comment><comments>http://www.blogjava.net/oxidy/articles/219431.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxidy/comments/commentRss/219431.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxidy/services/trackbacks/219431.html</trackback:ping><description><![CDATA[<p>兰迪&#8226;弗雷德里克&#8226;波许(Randy Frederick Pausch)教授,谷歌最好的老朋友之一,已于 2008 年 7 月 25
日因病去世.他是著名的虚拟现实研究的先驱,美国卡内基梅隆大学的计算机科学、人机交互及设计教授、计算机语言教学软件 Alice
项目的创立者、卡内基梅隆大学娱乐技术中心创立者之一,也是一位才华横溢的教育者.在他生命的最后时刻,数以千万的人被他的人生最后一次演说——&#8220;真正实
现你的童年梦想&#8221;深深感动.然而我们最终失去了他,我们深感悲痛,特载文以纪.<br />
<strong>在此文中,我们引述了开复的博文&#8220;引领你的一生&#8221;,兰迪教授的最后一课也在本文中原文呈上.我们希望能够以这样的方式纪念这位曾为人类科技事业做出重要贡献的人,纪念我们最亲爱的朋友.愿逝者安息.</strong><br />
<br />
</p>
<p><strong><a href="http://www.5xue.com/modules/leadyourlife/" target="_blank">引领你的一生</a></strong><br />
<br />
发表者  李开复 A Googler<br />
<br />
前
不久，我的同学兰迪&#8226;波许教授在我们的母校卡内基&#8226;梅隆大学做了一场风靡全美的讲座，题目是《真正实现你的童年梦想》。该讲座的视频在不同视频网站上被点
播了上千万次。《华尔街日报》把这次讲座称为&#8220;一生难觅的最后的讲座&#8221;。在美国一些高校里，&#8220;最后的讲座&#8221;是著名教授退休前的最后一课。兰迪教授并没有准
备退休，但是他患了胰腺癌，只剩下几个月的生命。这次讲座对他来说，竟真的是他一生中&#8220;最后的讲座&#8221;了。<br />
<br />
我的亲友纷纷在电子邮件中向我推 荐兰迪教授的此次讲座。我和女儿一起看了讲座的视频。看完后，我们感动地含着眼泪，同时又因为感悟和兴奋而相视一笑。
我们像每一个听过讲座或看过讲座视频的人一样，激动的心情久久不能平息。我经过电子邮件找到兰迪，他慷慨地答应让我们把他的视频加上中文字幕，并授权让我
们把视频、讲稿和讨论放在&#8220;我学网&#8221;与中国的网友分享(查看下载兰迪教授的演讲视频及讲稿请点击<a href="http://www.5xue.com/modules/leadyourlife/" target="_blank">这里</a>)。<br />
<br />
对这样一次出色的讲座，我的感触很深，也领悟到了许多东西，在这里和大家分享一下。<br />
<br />
<strong>幽默、乐观、无惧</strong><br />
<br />
兰迪和我同年进入卡内基&#8226;梅隆大学计算机学院的博士班。在学校里我们交往并不深，但是他是我们那届最出风头的学生。他外向、健谈，幽默、有表演天才，还有很强的亲和力。在他的讲座里，我们很容易发现这些特点。<br />
<br />
虽然兰迪已经进入癌症末期，但他还是在讲座中保持着他惯有的幽默感。演讲开始时，他说：&#8220;癌症让我比你们身材更好。&#8221;他还开玩笑说：&#8220;临终的人常会在死前信奉宗教。我也是这样。前几天，我买了一台苹果电脑。（我现在信奉苹果教。）&#8221;<br />
<br />
我 们常说，乐观的人看到半杯水时，总会说杯子是&#8220;半满&#8221;而不是&#8220;半空&#8221;。乐观的兰迪教授甚至在杯中只剩一滴水时，也依然能看到那仅存于最后一滴水中的
美，并因此而感恩。也正是因为有了这样的乐观天性，他才能够在自己的生命结束前，留下这样一次&#8220;照亮他人&#8221;的&#8220;人生作品&#8221;。<br />
<br />
兰迪说：&#8220;对于无法改变的事情，我们只能决定如何反应。我们不能改变手里的牌，但是可以决定如何出牌。&#8221;这充分体现出他乐观进取的心态和宽广的胸襟。我想，任何人如果有了这样的心态，无论是面对病痛的折磨还是人生的失意，他都能用一次次漂亮的出牌实现自己最大的价值。<br />
&nbsp;&nbsp;&nbsp;&nbsp;<a target="_blank" href="http://googlechinablog.com/uploaded_images/image001-760893.jpg"><br />
<img alt="" src="http://googlechinablog.com/uploaded_images/image001-760888.jpg" style="border: 1px solid grey;" border="0" /></a><br />
兰迪幽默的最后一课。有些人说他像金凯利<br />
<br />
<strong>你的梦想，自己会来找你</strong><br />
<br />
兰 迪教授此次讲座的主题是&#8220;真正实现你的童年梦想&#8221;。他谈到，小时候他的梦想是在嘉年华会上赢得超大型的动物玩偶，体验无重力的环境，参加全国橄榄球
联盟的比赛，当星际迷航记中的库克船长，写一篇百科全书的文章，以及加入迪斯尼梦幻工程队设计迪斯尼乐园的云宵飞车。这些梦想看起来杂乱无章，但是，在那
些纯真的孩子的心里，这些东西才是最真实，最不受外界影响的渴望。而对这些梦想的追寻就是 follow your heart（追随真心）。<br />
<br />
我和兰迪电子邮件交流中谈到今天许多年轻人把&#8220;财富&#8221;当作自己的梦想。他说：&#8220;只有极端缺乏想象力的人才会把财富当作自己的童年梦想。&#8221;何况，研究结果告诉我们追寻你真正的梦想反而比追逐财富可能得到更多财富。<br />
<br />
兰
迪教授感谢他的父母，因为是父母让他成为了一个心中有梦想的孩子，并给他创造了一个宽松的成长环境，鼓励他尝试和创新，帮助他建立自信心。他的父母甚至让
他在自己房间的墙壁上随意涂鸦。是他父母创造的良好环境让他的梦想得以清晰呈现，并在一生中不断督促、引导他前进。如果每个人都像兰迪那样从小心中有梦，
那么&#8220;你的梦想，自己会来找你&#8221;。<br />
<br />
令人惊讶也令人羡慕的是，兰迪这些儿时的梦想后来竟然大部分都实现了。其实，这些看似荒诞不羁的梦想反
映了他潜意识中隐藏的人生理想，也折射出他特有的思维方式与个性特点。例如，写百科全书的梦想意味着他希望做一个学识渊博的人，想体验无重力的环境体现他
的好奇，为迪斯尼乐园设计云霄飞车的梦想代表了
他对高科技的痴迷，而参加全国橄榄球联盟比赛的梦想则反映出他对团队、运动和竞争的兴趣。这些个性特质、思维方式和人生理想最终成就了今天的兰迪。<br />
&nbsp;&nbsp;&nbsp;&nbsp;<a target="_blank" href="http://googlechinablog.com/uploaded_images/image002-718786.jpg"><br />
<img alt="" src="http://googlechinablog.com/uploaded_images/image002-718783.jpg" style="border: 1px solid grey;" border="0" /></a><br />
兰迪在讲座中把他赢的超大动物玩偶搬上讲台，并赠送给观众<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;<a target="_blank" href="http://googlechinablog.com/uploaded_images/image003-760920.jpg"><br />
<img alt="" src="http://googlechinablog.com/uploaded_images/image003-760908.jpg" style="border: 1px solid grey;" border="0" /></a><br />
兰迪小时候的卧室。父母让他在墙上涂鸦<br />
<br />
<strong>砖墙挡不住追梦人</strong><br />
<br />
在
追寻梦想的途中，肯定会困难重重。兰迪教授在讲座中不止一次地使用一面咖啡色的砖墙来代表较难克服的困难。在追寻梦想的过程中，这面墙常常挡在我们面前。
但这面墙所能够挡住的其实是那些没有诚意的、不相信童年梦想的人！兰迪教授说：&#8220;这面墙让我们知道，为它后面的梦想而努力是值得的。这面墙迫使我们
向自己证明，我们是多么渴望墙后面的宝藏——我们的梦想！&#8221;<br />
<br />
兰迪教授认为，要得到砖墙后面的宝藏，你必须想尽办法，努力工作，还需要甘冒 风险，克服自己的惰性，离开自己的&#8220;安乐窝&#8221;，积极主动地去争取和开拓。
例如，当年轻的兰迪收到卡内基&#8226;梅隆大学的拒信时，他想尽办法安排了一次与卡内基&#8226;梅隆计算机系主任见面的机会，并当面说服了那位系主任，使之收回成命，
录取了他。<br />
<br />
兰迪教授的一个梦想是进入迪斯尼的梦幻工程队设计云霄飞车。虽然他多次收到迪斯尼公司寄给他的拒信，但他没有气馁，并保留这些
拒信，用它们激励自己继续努力。终于有一次，兰迪在一个学术会议上发表演讲后，一位梦幻工程队的工程师向他提问，兰迪是这么回答他的：&#8220;我很愿意回答你的
问题，但我想先问你：明天可以和我一起共进午餐吗？&#8221;这一次午餐终于让梦幻工程队认识了兰迪，此后不久，他就得到了梦幻工程队的工作邀请。<br />
<br />
兰 迪只有一个梦想没有实现——他没能成为职业橄榄球运动员。但是他认为，从这个没有实现的梦想中得到的东西，可能比从已经实现的梦想中得到的还要多。
他虽然没有成为职业球员，但是打球帮助他建立了信心，培养了努力的习惯，提高了团队合作的能力。对此，他总结说：&#8220;如果你非常想要某一样东西，而你努力过
了却又没有得到它，那么你收获的就是宝贵的经验。&#8221;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<a target="_blank" href="http://googlechinablog.com/uploaded_images/image004-786071.jpg"><br />
<img alt="" src="http://googlechinablog.com/uploaded_images/image004-786068.jpg" style="border: 1px solid grey;" border="0" /></a><br />
<br />
匹茨堡职业橄榄球队教练听了兰迪的演讲后，特别请他参加球队的排练，帮助兰迪圆最后一个未完成的童年梦想。<br />
<br />
<strong>最伟大的事：做老师，助人圆梦</strong><br />
<br />
如果完成梦想是重要的目标，那么，什么是伟大的目标呢？在兰迪看来，帮助别人完成梦想，做个助人圆梦者是真正伟大的目标。兰迪说：&#8220;年长之后，我发现帮助他人实现他们的梦想是唯一比实现自己梦想更有意义的事情。&#8221;<br />
<br />
从 这个意义上说，老师往往是最好的&#8220;助人圆梦者&#8221;。兰迪教授特别感谢他的恩师引导他肩负起教育这个伟大的任务。他的恩师曾对他说：
&#8220;你应该做教授。你是一个天生的推销员，任何一个得到你的公司都会利用你赚钱，不让你推销有价值的东西太可惜了。你还是做教授去推销教育吧！&#8221;<br />
<br />
成 为教授后，兰迪在卡内基&#8226;梅隆开了一个&#8220;圆梦&#8221;的课程，让各种科系的学生在一起用虚拟现实技术，开发一项完成童年梦想的项目。为了这个做&#8220;圆梦者&#8221;
的机会，他最后拒绝了梦幻工程队的邀请。为了长大后发现的新梦想，他放弃了儿时的梦想。但是，如果不是追逐儿时的梦想，他又怎么会找到长大后的新梦想呢？<br />
<br />
在他的&#8220;圆梦&#8221;课程中，一批学生只用了两个星期就完成了一般团队要做一个学期的项目。对此，兰迪倍感惊讶，但他只是对学生们说：&#8220;你们做的不错，但是我知道，你们可以做得更好。&#8221;有这样的老师，学生不但可以实现梦想，甚至可能超越梦想。<br />
<br />
我曾经雇用过一名兰迪的学生。他对我说：&#8220;兰迪是我所见过的老师里面最有激情的，他能够用生动有趣的例子解释复杂的科技。更重要的是，他真的在乎他的学生，他希望他们能发挥他们的潜力，实现他们的梦想。&#8221;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<a target="_blank" href="http://googlechinablog.com/uploaded_images/image005-748830.jpg"><br />
<img alt="" src="http://googlechinablog.com/uploaded_images/image005-748793.jpg" style="border: 1px solid grey;" border="0" /></a><br />
卡内基&#8226;梅隆学生排队参观兰迪&#8220;圆梦&#8221;课程项目的演示<br />
<br />
<strong>心存感激，心存包容</strong><br />
<br />
兰迪有一颗感恩的心。他劝我们随时心存感激，多想别人，少想自己。他在讲座中说，昨天是他妻子的生日，为了准备此次讲座，他没有好好替妻子过生日。随后，他当场推出了一个大蛋糕，请他妻子上台，亲自唱&#8220;祝你生日快乐&#8221;，以此来表示对妻子的感谢。<br />
<br />
他对他的恩师也心存感激。他记得，当他是一个不讨人喜欢又自以为是的本科生的时候，他的恩师利用和他散步的机会，亲切地搂着他肩膀说：&#8220;兰迪，你很有才华，可是有人觉得你很傲慢。这真遗憾，因为这样会限制你的发展。&#8221;这句话改变了他的一生。<br />
<br />
此 后，在兰迪的工作和生活中，他不但处处心存感激，而且善于包容他人。他说如果不是当时老师包容他，耐心地劝他，而只是批评他，他的傲慢可能一辈子都
不会改过来。有些人让你生气，但只要你有足够的耐心，就总能发现他们性格中闪光的地方。他说：&#8220;如果你对某个人有意见，那是因为，你还没有给他足够的时
间。&#8221;在这里，包容是感恩的第一步。<br />
<br />
兰迪教授的感恩之心，以及他的真诚打动了他周围的人。我的一位朋友参加了那次讲座，他说：&#8220;我从来没 有见过那么多成年人在一起失控并痛哭。连我们最严
肃的校长和一位最严厉的教授都被他打动而失声落泪。&#8221;我的朋友还说，兰迪曾经花很多时间帮助少数民族，资助贫困的亚洲国家的教育，希望给更多的人实现梦想
的机会。<br />
<br />
<strong>引领你的一生</strong><br />
<br />
关于此次讲座，兰迪教授有两个结论：<br />
第一：&#8220;今天的演讲不是讲如何实现你的梦想，而是如何引领你的一生（lead your life）。如果你正确引领你的一生，因缘自会带来一切你所应得的。&#8221;<br />
<br />
我 认为&#8220;Lead your life&#8221;这句话既简短有力又意味深长。 &#8220;Lead your life&#8221;而不是 &#8220;live your
life&#8221;，也就是说，不要只&#8220;过一生&#8221;，而是要用你的梦想引领你的一生，要用感恩、真诚、助人圆梦的心态引领你的一生，要用执着、无惧、乐观的态度来引
领你的一生。如果你做到了这些，因缘会给你一切你所应得的。<br />
<br />
孔子说: &#8220;未知生，焉知死 。&#8221; 而兰迪仿佛想通过他的&#8220;最后的讲座&#8221;告诉我们：&#8220;如果你尽力地去实现你的梦想，那你才是真正地生活过了。对一个曾经真正生活过的人，死亡是一点也不可怕的。&#8221;<br />
<br />
第二：&#8220;今天的讲座其实不是为你，而是为了我的孩子。&#8221;<br />
<br />
这是多么珍贵的遗产呀！我相信他的三个孩子会依据他&#8220;最后的讲座&#8221;来引领他们的一生。我也相信，经过互联网的传播，更多的孩子会因为看过兰迪的&#8220;最后的讲座&#8221;，而去追寻自己的梦想和更加精彩的一生。<br />
<br />
我十一岁的女儿看完&#8220;最后的讲座&#8221;后告诉我：&#8220;我要写下我童年的梦想。&#8221;我拍拍她的头，赞赏她的计划。她又说：&#8220;我可以去画我房间的墙壁吗？&#8221;我提醒她：&#8220;你小时候画的还不够吗？&#8221;她吐吐舌头说：&#8220;我知道。谢谢你以前让我画。&#8221;<br />
<br />
希望我们的孩子能和兰迪的孩子一样，用梦想引领他们的一生。<br />
&nbsp;&nbsp;&nbsp;&nbsp;<a target="_blank" href="http://googlechinablog.com/uploaded_images/image007-733913.jpg"><br />
<img alt="" src="http://googlechinablog.com/uploaded_images/image007-733909.jpg" style="border: 1px solid grey;" border="0" /></a><br />
兰迪和他的三个可爱孩子。<br />
<br />
兰迪.波许的最后讲座:真正实现你童年的梦想 —— 2007 年 9 月18 日卡内基.梅隆大学 （中文译文）&lt;<a href="http://download.srv.cs.cmu.edu/%7Epausch/Randy/pauschLastLectureChineseTranslation_10_25_07.pdf" target="_blank">http://download.srv.cs.cmu.edu/~pausch/Randy/pauschLastLectureChineseTranslation_10_25_07.pdf</a><br />
<br />
</p>
<div class="post"><embed type="application/x-shockwave-flash" allowscriptaccess="sameDomain" quality="high" src="http://player.youku.com/player.php/sid/XMzcyOTUyODQ=/v.swf" width="480" align="center" height="400">
<p style="margin-top: 1em;"><a href="http://googlechinablog.com/2008/07/blog-post_31.html">固定链接</a></p>
</div>
<img src ="http://www.blogjava.net/oxidy/aggbug/219431.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxidy/" target="_blank">oxidy</a> 2008-08-01 18:40 <a href="http://www.blogjava.net/oxidy/articles/219431.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>前Google工程师开发新搜索引擎“Cuil”</title><link>http://www.blogjava.net/oxidy/articles/218571.html</link><dc:creator>oxidy</dc:creator><author>oxidy</author><pubDate>Wed, 30 Jul 2008 00:44:00 GMT</pubDate><guid>http://www.blogjava.net/oxidy/articles/218571.html</guid><wfw:comment>http://www.blogjava.net/oxidy/comments/218571.html</wfw:comment><comments>http://www.blogjava.net/oxidy/articles/218571.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxidy/comments/commentRss/218571.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxidy/services/trackbacks/218571.html</trackback:ping><description><![CDATA[<p>硅谷一家名不经传的小公司&#8220;Cuil&#8221;近日自称推出了互联网上最大的搜索引擎，其索引页面的数量比Google还要大三倍。这家公司的总裁Anna
Patterson此前曾在Google工作，但是她在2006年离开了公司，并和她的丈夫和几位朋友共同创建了Cuil搜索引擎（<strong>Cuil发音为&#8220;酷&#8221;，源自于盖尔语，意为&#8220;知识&#8221;</strong>），她的丈夫Tom Costello此前帮助IBM构建了新型搜索引擎WebFountain，而另外另外工程师Russell Power和Louis Monier则是Google的TeraGoogle项目前工程师。<br />
<br />
</p>
<p>在界面上Cuil搜索引擎并没试图模仿Google，但是也<strong>不具备图片、视频搜索能力</strong>。但Cuil相信，通过其特有的识别方法和结果展示页面，它也能一枝独秀。Cuil的搜索结果页面提交就像是一本杂志的内容，而不只是内容的叠加。Cuil也承诺将不保留用户的搜索历史，以保证用户的隐私。</p>
<p>Cuil搜索引擎目前获得了3300万风险投资，他们宣称<strong>索引数量已经超过1200亿个网页</strong>，是Google的三倍左右。不过Google没有公开其索引页面的数量，所以Google的实际索引数量仍不得而知。Patterson表示，<strong>3年前Google索引的页面数量是82亿个页面。</strong></p>
<p>在Cuil对外公开索引页面数量之后，Google上周五在官方博客中透露，他们索引的<strong>页面数量在1万亿左右</strong>。不过<strong>Google并不会把所有索引到的页面都放到搜索结果中</strong>，因为这样<strong>会削弱搜索结果质量</strong>。</p>
<img alt="" src="http://www.cnbeta.com/articles/pic/sour.gif" /><strong>访问:</strong><a target="_blank" href="http://www.cuil.com/">cuil</a><br />
<br />
<br />
原文地址：http://www.cnbeta.com/articles/61181.htm<br />
<img src ="http://www.blogjava.net/oxidy/aggbug/218571.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxidy/" target="_blank">oxidy</a> 2008-07-30 08:44 <a href="http://www.blogjava.net/oxidy/articles/218571.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SQL Server 查询分析器快捷键集合</title><link>http://www.blogjava.net/oxidy/articles/216423.html</link><dc:creator>oxidy</dc:creator><author>oxidy</author><pubDate>Mon, 21 Jul 2008 11:17:00 GMT</pubDate><guid>http://www.blogjava.net/oxidy/articles/216423.html</guid><wfw:comment>http://www.blogjava.net/oxidy/comments/216423.html</wfw:comment><comments>http://www.blogjava.net/oxidy/articles/216423.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxidy/comments/commentRss/216423.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxidy/services/trackbacks/216423.html</trackback:ping><description><![CDATA[<p>下表列出 SQL Server 查询分析器提供的所有键盘快捷方式。</p>
<p>　　活动 快捷方式</p>
<p>　　书签：清除所有书签。 CTRL-SHIFT-F2</p>
<p>　　书签：插入或删除书签(切换)。 CTRL+F2</p>
<p>　　书签：移动到下一个书签。 F2 功能键</p>
<p>　　书签：移动到上一个书签。 SHIFT+F2</p>
<p>　　取消查询。 ALT+BREAK</p>
<p>　　连接：连接。 CTRL+O</p>
<p>　　连接：断开连接。 CTRL+F4</p>
<p>　　连接：断开连接并关闭子窗口。 CTRL+F4</p>
<p>　　数据库对象信息。 ALT+F1</p>
<p>　　编辑：清除活动的编辑器窗格。 CTRL+SHIFT+DEL</p>
<p>　　编辑：注释代码。 CTRL+SHIFT+C</p>
<p>　　编辑：复制。还可以使用 CTRL+INSERT。 CTRL+C</p>
<p>　　编辑：剪切。还可以使用 SHIFT+DEL。 CTRL+X</p>
<p>　　编辑：减小缩进。 SHIFT+TAB</p>
<p>　　编辑：在编辑器窗格中删除至行尾。 CTRL+DEL</p>
<p>　　编辑：查找。 CTRL+F</p>
<p>　　编辑：转到行号。 CTRL+G</p>
<p>　　编辑：增大缩进。 TAB</p>
<p>　　编辑：使选定内容为小写。 CTRL+SHIFT+L</p>
<p>　　编辑：使选定内容为大写。 CTRL+SHIFT+U</p>
<p>　　编辑：粘贴。还可以使用 SHIFT+INSERT。 CTRL+V</p>
<p>　　编辑：删除注释。 CTRL+SHIFT+R</p>
<p>　　编辑：重复上次搜索或查找下一个。 F3 功能键</p>
<p>　　编辑：替换。 CTRL+H</p>
<p>　　编辑：全选。 CTRL+A</p>
<p>编辑：撤消。 CTRL+Z</p>
<p>　　执行查询。还可以使用 CTRL+E (针对向后兼容性)。 F5 功能键</p>
<p>　　SQL 查询分析器帮助。 F1 功能键</p>
<p>　　对所选 Transact-SQL 语句的帮助。 SHIFT+F1</p>
<p>　　浏览：在查询窗格和结果窗格之间切换。 F6 功能键</p>
<p>　　浏览：切换窗格。 Shift+F6</p>
<p>　　浏览：窗口选择器。 CTRL+W</p>
<p>　　"新建查询"窗口。 CTRL+N</p>
<p>　　对象浏览器(显示/隐藏)。 F8 功能键</p>
<p>　　对象搜索。 F4 功能键</p>
<p>　　分析查询并检查语法。 CTRL+F5</p>
<p>　　打印。 CTRL+P</p>
<p>　　结果：以表格格式显示结果。 CTRL+D</p>
<p>　　结果：以文本格式显示结果。 CTRL+T</p>
<p>　　结果：移动拆分器。 CTRL+B</p>
<p>　　结果：将结果保存为文件。 CTRL+SHIFT+F</p>
<p>　　结果：显示结果窗格(切换)。 CTRL+R</p>
<p>　　保存。 CTRL+S</p>
<p>　　模板：插入模板。 CTRL+SHIFT+INSERT</p>
<p>　　模板：替换模板参数。 CTRL+SHIFT+M</p>
<p>　　优化：显示预估执行计划。 CTRL+L</p>
<p>　　优化：显示执行计划(切换开/关)。 CTRL+K</p>
<p>　　优化：索引优化向导。 CTRL+I</p>
<p>　　优化：显示客户统计 CTRL+SHIFT+S</p>
<p>　　优化：显示服务器跟踪。 CTRL+SHIFT+T</p>
<p>　　使用数据库。 CTRL+U<br />
<br />
</p>
<img src ="http://www.blogjava.net/oxidy/aggbug/216423.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxidy/" target="_blank">oxidy</a> 2008-07-21 19:17 <a href="http://www.blogjava.net/oxidy/articles/216423.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开发者版本：你属于哪个版本的程序员？ </title><link>http://www.blogjava.net/oxidy/articles/216082.html</link><dc:creator>oxidy</dc:creator><author>oxidy</author><pubDate>Sat, 19 Jul 2008 12:01:00 GMT</pubDate><guid>http://www.blogjava.net/oxidy/articles/216082.html</guid><wfw:comment>http://www.blogjava.net/oxidy/comments/216082.html</wfw:comment><comments>http://www.blogjava.net/oxidy/articles/216082.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/oxidy/comments/commentRss/216082.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/oxidy/services/trackbacks/216082.html</trackback:ping><description><![CDATA[<p>【6月25日 CSDN
付江/编译】国外开发者博客中有一篇有趣的文章，将程序员按水平像软件版本号那样划分为不同的版本。相对于在招聘时分为初级，中级，高级程序员，直接表明需要某种语言N版本的程序员或许更方便直接。根据作者的观点，可将WEB开发者大致分为以下几个版本：<br />
<br />
<strong>Alpha</strong>：阅读过一些专业书籍，大多数能用Dreamweaver或者FrontPage帮朋友制作一些Web页面。但在他们熟练掌握HTML代码以前，你大概不会雇佣他们成为职业的WEB制作人员。<br />
<br />
<strong>Beta</strong>：已经比较擅长整合站点页面了，在HTML技巧方面也有一定造诣，但还是用Tables来制作页面，不了解CSS，在面对动态页面或数据库连接时还是底气不足。<br />
<br />
<strong>Pre
Version 1
(0.1)</strong>：比Beta版的开发者水平要高。熟悉HTML，开始了解CSS是如何运作的，懂一点JavaScript，但还是基于业余水准，逐步开始关心动态站点搭建和数据库连接的知识。这个版本的WEB开发人员还远不能成为雇主眼中的香饽饽。<br />
<br />
<strong>1.0:</strong>
能够基本把控整个站点开发，针对每个问题尽可能的找到最直接的解决办法。但对可测性，可扩展性以及在不同(层)框架下如何选择最合适的WEB设计工具尚无概念。这个版本的WEB开发者有良好的技术基础，需要有进一步的帮助和指导。<br />
<br />
<img alt="" src="http://info-database.csdn.net/Upload/2008-06-25/evolution-white_thumb.jpg" width="376" height="106" /><br />
<br />
<strong>2.0：</strong>懂面向对象的编程语言，理解分层开发的必要性，关注代码分离，对问题寻找更完美的解决方法，偶然也会考虑设计模式的问题，但对此仍然概念不清。属于优秀的初级开发者，能完成较松散的代码开发(相对大型严谨的站点开发而言)，在面对较复杂问题寻找解决办法时需要周边人的帮助。<br />
<br />
<strong>3.0：</strong>开始较为深入的理解面向对象编程和设计模式，了解他们的用途，当看到好的设计模式时能看透其本质，逐步关注分层的架构解决办法和可测试性。理解不同的开发语言并能说出他们的异同(例如各自的优势)。属于优秀的中级别开发者，雇主也确信他们最终能找到问题的解决办法，这个版本的人可以给1.0和2.0的开发者以指导。但他们对架构的理解仍然不够清晰，值得一提的是，只要给予一些指导，他们能很快理解并熟记做出的决定，以及选定方案的优势所在。<br />
<strong><br />
4.0：</strong>理解模式，重视用户的反馈。着手研究方法论，架构设计和软件开发的最佳入口。头脑中已经形成了超越开发语言，技术架构的整体方案，可根据需求解构程序。能从理论的角度，不同模式如何融合成最佳形态，将多种X-驱动的模式应用到不同的方案中。是精通多语言的高手，理解不同系统和方法论的细微差别，属于高级程序员。这个级别的人能够轻易的辅导2.0和3.0的程序员，将他们推向更高的级别。<br />
<br />
<strong>5.0：</strong>从系统的角度考虑问题。对各种系统结构有深入研究，能对整个代码架构中的问题进行改进。在团队粘合性以及代码安全性方面有杰出贡献。对1.0到4.0版本的开发人员出现的问题能及时察觉，让整个团队保持积极性且保持兴奋的状态创建软件解决办法。举例来说，他们总是对新的技术和信息保持饥渴状态，试图用最简便的方案解决开发任务。在整个IT团队中获得信任，属于高级程序员和架构师。<br />
<br />
那么，您属于哪个版本的程序员呢？</p>
<p>原文地址：http://news.csdn.net/n/20080625/116964.html</p>
<p>英文地址：http://geekswithblogs.net/leesblog/archive/2008/06/22/developer-versioning-which-version-are-you.aspx<br />
</p>
<img src ="http://www.blogjava.net/oxidy/aggbug/216082.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/oxidy/" target="_blank">oxidy</a> 2008-07-19 20:01 <a href="http://www.blogjava.net/oxidy/articles/216082.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>