??xml version="1.0" encoding="utf-8" standalone="yes"?>精品国产乱码久久久久久影片,欧美极品影院,久久精品日产第一区二区三区精品版 http://www.aygfsteel.com/tojava/zh-cnSat, 17 May 2025 18:18:11 GMTSat, 17 May 2025 18:18:11 GMT60sqlhttp://www.aygfsteel.com/tojava/archive/2008/03/12/sq.htmll like life i like javal like life i like javaWed, 12 Mar 2008 07:58:00 GMThttp://www.aygfsteel.com/tojava/archive/2008/03/12/sq.htmlhttp://www.aygfsteel.com/tojava/comments/185718.htmlhttp://www.aygfsteel.com/tojava/archive/2008/03/12/sq.html#Feedback0http://www.aygfsteel.com/tojava/comments/commentRss/185718.htmlhttp://www.aygfsteel.com/tojava/services/trackbacks/185718.html

]]>
ajax http://www.aygfsteel.com/tojava/archive/2007/12/12/ajax.htmll like life i like javal like life i like javaWed, 12 Dec 2007 11:46:00 GMThttp://www.aygfsteel.com/tojava/archive/2007/12/12/ajax.htmlhttp://www.aygfsteel.com/tojava/comments/167314.htmlhttp://www.aygfsteel.com/tojava/archive/2007/12/12/ajax.html#Feedback2http://www.aygfsteel.com/tojava/comments/commentRss/167314.htmlhttp://www.aygfsteel.com/tojava/services/trackbacks/167314.html http://www-128.ibm.com/developerworks/cn/java/j-ajax2/
http://www-128.ibm.com/developerworks/cn/java/j-ajax3/

]]>
websphere5.1 配置集群Q水qIhttp://www.aygfsteel.com/tojava/archive/2007/10/19/was.htmll like life i like javal like life i like javaFri, 19 Oct 2007 07:47:00 GMThttp://www.aygfsteel.com/tojava/archive/2007/10/19/was.htmlhttp://www.aygfsteel.com/tojava/comments/154237.htmlhttp://www.aygfsteel.com/tojava/archive/2007/10/19/was.html#Feedback9http://www.aygfsteel.com/tojava/comments/commentRss/154237.htmlhttp://www.aygfsteel.com/tojava/services/trackbacks/154237.html 2、在本机安装was5.1ND;
http://wiki.hoodong.com/wiki/wUEYACAMERUdNXBNY

]]>
webshpere 5.1 增加本地OS 安全?/title><link>http://www.aygfsteel.com/tojava/archive/2007/09/05/142922.html</link><dc:creator>l like life i like java</dc:creator><author>l like life i like java</author><pubDate>Wed, 05 Sep 2007 08:15:00 GMT</pubDate><guid>http://www.aygfsteel.com/tojava/archive/2007/09/05/142922.html</guid><wfw:comment>http://www.aygfsteel.com/tojava/comments/142922.html</wfw:comment><comments>http://www.aygfsteel.com/tojava/archive/2007/09/05/142922.html#Feedback</comments><slash:comments>22</slash:comments><wfw:commentRss>http://www.aygfsteel.com/tojava/comments/commentRss/142922.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/tojava/services/trackbacks/142922.html</trackback:ping><description><![CDATA[<p>websphere 安装时最好创建独立的用户l和用户. <br /> linuxq_?l名wasadmin,用户名wasadmin;windowsq_?l名为wasadmins,用户?wasadmin; websphere v6 安装完成?d到管理控制台 <a href="http://localhost:9060/">http://localhost:9060</a>(安装时控制台监听端口)/admin/, 此时可以用Q何名U?包括I?而且不用输入密码)q陆到理控制台进?理操作.此时首页提示 未启用安全? 如果想锁定管理控制台,只允许某个用戯?理权限.可以登陆到控制台(<a href="http://localhost:9060/ibm/console">http://localhost:9060/ibm/console</a>) 开启安全性设|? <br /> <br /> (1)登陆到管理控制台,q入 "pȝ理--控制台设|?-控制台组",d控制台组, 是安装前创建的llinux上ؓ wasadmin,windows上ؓwasadmins; 记得要保存设|呀. <br /> <br /> (2)q入"pȝ理--控制台设|?-控制台用?,d控制台用? 是前面创徏得websphere用户.linux上ؓwasadmin,windows上ؓwasadmin.保存讄. </p> <p>(3)?安全?-全局安全?里进行安全性设|? 扑ֈ"用户注册?-本地OS"q行用户注册. <br /> 服务器用h?wasadmin(和第二步中设|得用户名要一?.服务器用户密? pȝ中创建wasadmin用户时指定的用户密码.保存讄. (4)现在要启用全局安全性了.选中"启用全局安全?复选框,切记:一定要?强制Java2安全? l勾掉即不选中.(pȝ默认 启用全局安全??nbsp;启用 强制Java2安全?.如果你没有设|?java2安全?jvm授权),q里?启用了强制java2安全?服务可能会启动不了呀. zd协议默认:CSI和SAS;zd认证机制:我用的默认的"单WebSphere认证机制". 如果用LTPA的话,q需要再讄一ơ用户密?能不能用我可没试. zd用户注册?默认选中"本地OS".定制好像需要自己去写认证类? <br /> <br /> 至于LDAP好像需要指定的用户名是LDAP中的用户名和密码(2000中的AD,其他的不清楚) 至于"使用联邦信息处理标准QFIPSQ?q个选项我可没选中. 我是q么配置?重新启动服务器后,再登陆控制台时会弹出一?<br /> 认证???. 控制台让输入用户名和密码. 刚开始几ơ配|时没有执行1,2?W?步中q选中?强制Java2安全??"使用联邦信息处理标准QFIPSQ?.?启动服务都不能了.不知道是哪步出的问题. </p><img src ="http://www.aygfsteel.com/tojava/aggbug/142922.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/tojava/" target="_blank">l like life i like java</a> 2007-09-05 16:15 <a href="http://www.aygfsteel.com/tojava/archive/2007/09/05/142922.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>0727http://www.aygfsteel.com/tojava/archive/2007/07/27/132845.htmll like life i like javal like life i like javaFri, 27 Jul 2007 09:22:00 GMThttp://www.aygfsteel.com/tojava/archive/2007/07/27/132845.htmlhttp://www.aygfsteel.com/tojava/comments/132845.htmlhttp://www.aygfsteel.com/tojava/archive/2007/07/27/132845.html#Feedback6http://www.aygfsteel.com/tojava/comments/commentRss/132845.htmlhttp://www.aygfsteel.com/tojava/services/trackbacks/132845.html2.日期控g1-2-3Q?br>3.HIBERNATE U联更新、删除;

]]>
ACEGI 1.03 mysql sqlhttp://www.aygfsteel.com/tojava/archive/2007/04/13/acegi.htmll like life i like javal like life i like javaFri, 13 Apr 2007 09:58:00 GMThttp://www.aygfsteel.com/tojava/archive/2007/04/13/acegi.htmlhttp://www.aygfsteel.com/tojava/comments/110509.htmlhttp://www.aygfsteel.com/tojava/archive/2007/04/13/acegi.html#Feedback2http://www.aygfsteel.com/tojava/comments/commentRss/110509.htmlhttp://www.aygfsteel.com/tojava/services/trackbacks/110509.htmlCREATE TABLE ACL_SID(ID bigint(20)  NOT NULL auto_increment,
PRINCIPAL tinyint(1) NOT NULL,
SID varchar(45) NOT NULL,
constraint UNIQUE_UK_1 unique key(SID,PRINCIPAL)
PRIMARY KEY  (`id`)
)

CREATE TABLE ACL_OBJECT_IDENTITY(ID bigint(20)  NOT NULL auto_increment,
OBJECT_ID_CLASS bigint(20) NOT NULL,
OBJECT_ID_IDENTITY bigint(20) NOT NULL,
PARENT_OBJECT bigint(20),
OWNER_SID bigint(20),
ENTRIES_INHERITING tinyint(1) NOT NULL,
CONSTRAINT UNIQUE_UK_3 unique key(OBJECT_ID_CLASS,OBJECT_ID_IDENTITY),
CONSTRAINT FOREIGN_FK_1 FOREIGN KEY(PARENT_OBJECT)REFERENCES ACL_OBJECT_IDENTITY(ID),
CONSTRAINT FOREIGN_FK_2 FOREIGN KEY(OBJECT_ID_CLASS)REFERENCES ACL_CLASS(ID),
CONSTRAINT FOREIGN_FK_3 FOREIGN KEY(OWNER_SID)REFERENCES ACL_SID(ID)
PRIMARY KEY  (`id`)
)

CREATE TABLE ACL_ENTRY(ID bigint(20)  NOT NULL auto_increment,
ACL_OBJECT_IDENTITY BIGINT(20) NOT NULL,
ACE_ORDER INT(11) NOT NULL,
SID BIGINT(20) NOT NULL,
MASK INTEGER NOT NULL,
GRANTING BOOLEAN NOT NULL,AUDIT_SUCCESS BOOLEAN NOT NULL,
AUDIT_FAILURE BOOLEAN NOT NULL,
CONSTRAINT UNIQUE_UK_4 UNIQUE(ACL_OBJECT_IDENTITY,ACE_ORDER),
CONSTRAINT FOREIGN_FK_4 FOREIGN KEY(ACL_OBJECT_IDENTITY) REFERENCES ACL_OBJECT_IDENTITY(ID),
CONSTRAINT FOREIGN_FK_5 FOREIGN KEY(SID) REFERENCES ACL_SID(ID)
PRIMARY KEY  (`id`)
)

CREATE TABLE USERS(USERNAME varchar(50) NOT NULL ,
PASSWORD varchar(50) NOT NULL,
ENABLED BOOLEAN NOT NULL
PRIMARY KEY  (USERNAME)
)
           

 CREATE TABLE AUTHORITIES(USERNAME varchar(50) NOT NULL,
 AUTHORITY varchar(50) NOT NULL,
 CONSTRAINT FK_AUTHORITIES_USERS FOREIGN KEY(USERNAME) REFERENCES USERS(USERNAME));
 
CREATE UNIQUE INDEX IX_AUTH_USERNAME ON AUTHORITIES(USERNAME,AUTHORITY
)


CREATE TABLE CONTACTS(ID BIGINT(20) NOT NULL PRIMARY KEY, CONTACT_NAME varchar(50) NOT NULL,
EMAIL varchar(50) NOT NULL)
PRIMARY KEY  (`id`)

CREATE TABLE Productions(ID BIGINT(20) NOT NULL ,
contactid BIGINT(20) NOT NULL,
production_NAME varchar(50) NOT NULL,
EMAIL varchar(50) NOT NULL
PRIMARY KEY  (`id`)
)


       



]]>
ORACE DDhttp://www.aygfsteel.com/tojava/archive/2006/07/22/DD.htmll like life i like javal like life i like javaSat, 22 Jul 2006 08:17:00 GMThttp://www.aygfsteel.com/tojava/archive/2006/07/22/DD.htmlhttp://www.aygfsteel.com/tojava/comments/59549.htmlhttp://www.aygfsteel.com/tojava/archive/2006/07/22/DD.html#Feedback0http://www.aygfsteel.com/tojava/comments/commentRss/59549.htmlhttp://www.aygfsteel.com/tojava/services/trackbacks/59549.htmlpseudocolumns, such as the ROWNUM, SYSDATE, and USER
SELECT ROWNUM, SYSDATE, and USER FROM DUAL;
TRUNC(A,B)
UPPER(last_name), LOWER(A) ,INITCAP(first_name), INITCAP(last_name)
RTRIM(first_name)  LTRIM(last_name)  TRIM(last_name)  TRIM(first_name),RPAD(last_name, 30, ' ')
SUBSTR(last_name, 1, 10),REPLACE()
TO_CHAR(SYSDATE, 'DD-MON-YYYY AD')
EXTRACT(MONTH FROM SYSDATE),TO_NUMBER('1234.99'),TO_DATE('27-OCT-98', 'DD-MON-RR')
TO_TIMESTAMP('10-Sep-05 14:10:10.123000', 'DD-Mon-RR HH24:MI:SS.FF')
MONTHS_BETWEEN(SYSDATE, HIRE_DATE)),     ADD_MONTHS(hire_date, 3),LAST_DAY(hire_date),SYSTIMESTAMP
Aggregate functions include AVG, COUNT, DENSE_RANK, MAX, MIN, PERCENT_RANK, RANK, STDDEV, and SUM 
DISTINCT  COMMIT   ROLLBACK
DDL statements include CREATE, ALTER, and DROP
DML statements include SELECT, INSERT, and UPDATE
ALTER TABLE tablen ADD/MODIFY/DROP ....
 
ALTER TABLE personal_info
  ADD CONSTRAINT personal_info_pkey
  PRIMARY KEY (employee_id);
-- disable a constraint
ALTER TABLE personal_info
  DISABLE CONSTRAINT personal_info_check_con;
ALTER TABLE personal_info
  ADD CONSTRAINT personal_info_fkey
  FOREIGN KEY (employee_id) REFERENCES employees (employee_id)
  ON DELETE CASCADE;

-- add a unique constraint
ALTER TABLE personal_info
  ADD CONSTRAINT personal_info_unique_con
  UNIQUE (social_security_id);

-- add a check constraint
ALTER TABLE personal_info
  ADD CONSTRAINT personal_info_check_con
  CHECK ( dependents_claimed > 0);

-- enable a constraint
ALTER TABLE personal_info
  ENABLE CONSTRAINT personal_info_check_con;

-- drop a constraint
ALTER TABLE personal_info
  DROP CONSTRAINT personal_info_check_con;
NVL2   NVL
ALTER TABLE my_birthdays RENAME to birthdays;
-- create an index on a single column to make queries faster on that column
CREATE INDEX emp_hiredate_idx ON employees (hire_date);

-- rename the index
ALTER INDEX emp_hiredate_idx
  RENAME TO emp_hire_date_idx;

-- drop the index
DROP INDEX emp_hire_date_idx;

-- create an index on two columns to make queries faster on the first column
-- or both columns
CREATE INDEX emp_mgr_id_ix ON employees (employee_id, manager_id);
DROP INDEX emp_mgr_id_ix;

-- a function-based index precalculates the result and speeds up queries that
-- use the function for searching or sorting, in this case UPPER(last_name)
CREATE INDEX emp_upper_last_name_ix ON employees (UPPER(last_name));
DROP INDEX emp_upper_last_name_ix;
CREATE OR REPLACE VIEW my_emp_view AS
SELECT d.department_id, d.department_name, d.manager_id,
  e.employee_id, e.first_name, e.last_name
  FROM employees e, departments d
  WHERE d.manager_id = e.employee_id;
 CURRVAL and NEXTVAL
CREATE SEQUENCE new_employees_seq START WITH 1000 INCREMENT BY 1;
DECODE(job_id, 'PU_CLERK', salary*1.05,--IF THEN  ELSE
                             salary) "Revised Salary" FROM employees;
CREATE SYNONYM emps for HR.employees;
PL/SQL:anonymous blocks, stored functions, stored procedures, and packages
DBMS_OUTPUT.PUT_LINE
DECLARE
  monthly_salary         NUMBER(6);
  number_of_days_worked  NUMBER(2);
  pay_per_day            NUMBER(6,2);

-- the following is the executable part, from BEGIN to END
BEGIN
  monthly_salary := 2290;
  number_of_days_worked := 21;
  pay_per_day := monthly_salary/number_of_days_worked;

-- the following displays output from the PL/SQL block
  DBMS_OUTPUT.PUT_LINE('The pay per day is ' || TO_CHAR(pay_per_day));

-- the following is an optional exception part that handles errors
EXCEPTION
  WHEN ZERO_DIVIDE THEN
      pay_per_day := 0;

END;
/
CONSTANT  :=
use the special qualifiers %TYPE and %ROWTYPE to declare variables that hold table columns or table rows.
IF-THEN, IF-THEN-ELSE, or IF-THEN-ELSEIF-ELSE
EXIT-WHEN
-- use WHILE LOOP to process data
  WHILE i <= 10 LOOP
    i_cubed := i**3;
    DBMS_OUTPUT.PUT_LINE('Number: ' || TO_CHAR(i)
                       || ' Cube: ' || TO_CHAR(i_cubed));
    i := i + 1;
  END LOOP;
  FOR loop_counter IN 1..10 LOOP
    DBMS_OUTPUT.PUT_LINE('Number: ' || TO_CHAR(loop_counter)
                          || ' Square: ' || TO_CHAR(loop_counter**2));
  END LOOP;
   GOTO print_now;
    END IF;
  END LOOP;
  p := ' is a prime number';
<<print_now>>

IN  OUT IN OUT

A
 ALL, ALTER, AND, ANY, ARRAY, ARROW, AS, ASC, AT
 
B
 BEGIN, BETWEEN, BY
 
C
 CASE, CHECK, CLUSTERS, CLUSTER, COLAUTH, COLUMNS, COMPRESS, CONNECT, CRASH, CREATE, CURRENT
 
D
 DECIMAL, DECLARE, DEFAULT, DELETE, DESC, DISTINCT, DROP
 
E
 ELSE, END, EXCEPTION, EXCLUSIVE, EXISTS
 
F
 FETCH, FORM, FOR, FROM
 
G
 GOTO, GRANT, GROUP
 
H
 HAVING
 
I
 IDENTIFIED, IF, IN, INDEXES, INDEX, INSERT, INTERSECT, INTO, IS
 
L
 LIKE, LOCK
 
M
 MINUS, MODE
 
N
 NOCOMPRESS, NOT, NOWAIT, NULL
 
O
 OF, ON, OPTION, OR, ORDER,OVERLAPS
 
P
 PRIOR, PROCEDURE, PUBLIC
 
R
 RANGE, RECORD, RESOURCE, REVOKE
 
S
 SELECT, SHARE, SIZE, SQL, START, SUBTYPE
 
T
 TABAUTH, TABLE, THEN, TO, TYPE
 
U
 UNION, UNIQUE, UPDATE, USE
 
V
 VALUES, VIEW, VIEWS
 
W
 WHEN, WHERE, WITH
 

 

A
 ACCESS, ADD*, ALL*, ALTER*, AND*, ANY*, AS*, ASC*, AUDIT
 
B
 BETWEEN*, BY*
 
C
 CHAR*, CHECK*, CLUSTER, COLUMN, COMMENT, COMPRESS, CONNECT*, CREATE*, CURRENT*
 
D
 DATE*, DECIMAL*, DEFAULT*, DELETE*, DESC*, DISTINCT*, DROP*
 
E
 ELSE*, EXCLUSIVE, EXISTS
 
F
 FILE, FLOAT*, FOR*, FROM*
 
G
 GRANT*, GROUP*
 
H
 HAVING*
 
I
 IDENTIFIED, IMMEDIATE*, IN*, INCREMENT, INDEX, INITIAL, INSERT*, INTERSECT*, INTO*, IS*
 
L
 LEVEL*, LIKE*, LOCK, LONG
 
M
 MAXEXTENTS, MINUS, MLSLABEL, MODE, MODIFY
 
N
 NOAUDIT, NOCOMPRESS, NOT*, NOWAIT, NULL*, NUMBER
 
O
 OF*, OFFLINE, ON*, ONLINE, OPTION*, OR*, ORDER*
 
P
 PCTREE, PRIOR*, PRIVLEGES*, PUBLIC*
 
R
 RAW, RENAME, RESOURCE, REVOKE*, ROW, ROWID, ROWNUM, ROWS*
 
S
 SELECT*, SESSION*, SET*, SHARE, SIZE*, SMALLINT*, START, SUCCESSFUL, SYNONYM, SYSDATE
 
T
 TABLE*, THEN*, TO*, TRIGGER
 
U
 UID, UNION*, UNIQUE*, UPDATE*, USER*
 
V
 VALIDATE, VALUES*, VARCHAR*, VARCHAR2, VIEW*
 
W
 WHENEVER*, WHERE, WITH*
 


&my_variable &&my_variable DEFINE &my_variable="aaa"

V$RESERVED_WORDS
SELECT * FROM USER_OBJECTS
DESCRIBE wordcount
GRANT/REVOKE EXECUTE ON wordcount TO/FROM scoot
SELECT table_name, grantee,privilege FROM USER_TAB_PRIVS_MADE ;
EXEC DBMS_OUTPUT.PUT_LINE(booktitle('00-908-77889-0'))

HEADER
IS
 Declaration Section
BEGIN 
 Execution Section
EXCEPTION
 Exception Section
END;

DESC SYS.STANDARD

SELECT * FROM V$RESERVED_WORDS; GET RESERVED WORDS OF ORACLE

 

update standarditem set 規格=replace(規格,'','')
什么是索引
  
  索引是徏立在表的一列或多个列上的辅助对象,目的是加快访问表中的数据Q?
  
  Oracle存储索引的数据结构是B*树,位图索引也是如此Q只不过是叶子节点不同B*数烦引;
  
  索引由根节点、分支节点和叶子节点l成Q上U烦引块包含下索引块的索引数据Q叶节点包含索引数据和确定行实际位置的rowid?
  
使用索引的目?
  加快查询速度
  减少I/O操作
  消除盘排序
  
何时使用索引
  查询q回的记录数
  排序?lt;40%
  非排序表 <7%
  表的片较多Q频J增加、删除)
  
索引的种c?
  非唯一索引Q最常用Q?
  唯一索引
  位图索引
  局部有前缀分区索引
  局部无前缀分区索引
  全局有前~分区索引
  散列分区索引
  Z函数的烦?
  
理索引的准?
  
  在表中插入数据后创徏索引
  
  。在用SQL*Loader或import工具插入或装载数据后Q徏立烦引比较有效;
  
  索引正确的表和列
  
  。经常检索排序大表中40%或非排序?%的行Q徏议徏索引Q?
  。ؓ了改善多表关联,索引列用于联l;
  。列中的值相Ҏ较唯一Q?
  。取D_大:B*树烦引,:位图索引Q;
  。Date型列一般适合Z函数的烦引;
  。列中有许多I|不适合建立索引
  
  为性能而安排烦引列
  
  。经怸起用多个字D|索记录,l合索引比单索引更有效;
  。把最常用的列攑֜最前面Q例Qdx_groupid_serv_id(groupid,serv_id)Q在where条g中用groupid或groupid,serv_idQ查询将使用索引Q若仅用到serv_id字段Q则索引无效Q?
  。合q?拆分不必要的索引?
  
  限制每个表烦引的数量
  
  。一个表可以有几百个索引Q你会这样做吗?Q,但是对于频繁插入和更新表Q烦引越多系lCPUQI/O负担p重;
  。徏议每张表不超q?个烦引?
  
  删除不再需要的索引
  
  。烦引无效,集中表现在该使用Z函数的烦引或位图索引Q而用了B*树烦引;
  。应用中的查询不使用索引Q?
  。重建烦引之前必d删除索引Q若用alter index ?rebuild重徏索引Q则不必删除索引?
  
  索引数据块空间?
  
  。创建烦引时指定表空_特别是在建立主键Ӟ应明指定表I间Q?
  。合理设定pctfressQ注意:不能l烦引指定pctusedQ?
  。估计烦引的大小和合理地讄存储参数Q默认ؓ表空间大,或initial与next讄成一样大?
  
  考虑q行创徏索引
  
  。对大表可以采用q行创徏索引Q在q行创徏索引Ӟ存储参数被每个查询服务器q程分别使用Q例如:initial?MQƈ行度?Q则创徏索引期间臛_要消?MI间Q?
  
  考虑用nologging创徏索引
  
  。对大表创徏索引可以使用nologging来减重做日志;
  。节省重做日志文件的I间Q?
  。羃短创建烦引的旉Q?
  。改善了q行创徏大烦引时的性能?
  
怎样建立最佳烦?
  
  明确地创建烦?
  Code:
create index index_name on table_name(field_name)
   tablespace tablespace_name
   pctfree 5
   initrans 2
   maxtrans 255
   storage
   (
   minextents 1
   maxextents 16382
   pctincrease 0
   );

  
  创徏Z函数的烦?
  
  。常用与UPPER、LOWER、TO_CHAR(date){函数分cMQ例Q?
  Code:
create index idx_func on emp (UPPER(ename)) tablespace
       tablespace_name;
  
  创徏位图索引
  
  。对基数较小Q且基数相对E_的列建立索引Ӟ首先应该考虑位图索引Q例Q?
  Code:
create bitmap index idx_bitm on class (classno) tablespace
      tablespace_name;

  
  明确地创建唯一索引
  
  。可以用create unique index语句来创建唯一索引Q例Q?
  Code:
create unique index dept_unique_idx on dept(dept_no) tablespace
       idx_1;
  
  创徏与约束相关的索引
  
  。可以用using index字句Qؓ与unique和primary keyU束相关的烦引,例如Q?
  Code:
alter table table_name
   add constraint PK_primary_keyname primary key (field_name)
   using index tablespace tablespace_nameQ?/p>

  
如何创徏局部分区烦?
  
  。基表必L分区表;
  。分区数量与基础表相同;
  。每个烦引分区的子分区数量与相应的基表分区相同;
  。基表的子分Z的行的烦引项Q被存储在该索引的相应的子分Z,例如:
  Code:
Create Index TG_CDR04_SERV_ID_IDX On TG_CDR04(SERV_ID)
   Pctfree 5
   Tablespace TBS_AK01_IDX
   Storage (
   MaxExtents 32768
   PctIncrease 0
   FreeLists 1
   FreeList Groups 1
   )
   local
   /

  
如何创徏范围分区的全局索引
  
  。基表可以是全局表和分区表?
  create index idx_start_date on tg_cdr01(start_date)
  global partition by range(start_date)
  (partition p01_idx vlaues less than (?106?
  partition p01_idx vlaues less than (?111?
  ?
  partition p01_idx vlaues less than (?401?))
  /
  
  重徏现存的烦?
  
  重徏现存的烦引的当前时刻不会影响查询Q?
  
  重徏索引可以删除额外的数据块Q?
  
  提高索引查询效率Q?
  alter index idx_name rebuild nologging;
  
  对于分区索引Q?
  alter index idx_name rebuild partition partiton_name nologging;
  
  要删除烦引的原因
  
  。不再需要的索引Q?
  。烦引没有针对其相关的表所发布的查询提供所期望的性能改善Q?
  。应用没有用该烦引来查询数据Q?
  。该索引无效Q必d重徏之前删除该烦引;
  。该索引已经变的太碎了,必须在重Z前删除该索引Q?
  。语句:drop index idx_name;drop index idx_name drop partition partition_name;
  
建立索引的代?
  
  基础表维护时Q系l要同时l护索引Q不合理的烦引将严重影响pȝ资源Q主要表现在CPU和I/O上;
  
  插入、更新、删除数据生大量db file sequential read锁;
  
SQL优化器简?
  
  Z规则的优化器
  
  。L使用索引
  。L从驱动表开始(from子句最双的表Q?
  。只有在不可避免的情况下Q才使用全表扫描
  。Q何烦引都可以
  
  Z成本的优化器
  
  。需要表、烦引的l计资料
  Analyze table customer compute statistics;
  Analyze table customer estimate statistics sample 5000 rows;
  。表中设|ƈ行度、表分区
  
  优化器模?
  
  rule模式
  
  。d略CBO和统计信息而基于规?
  choose模式
  
  。OracleҎ情况选择rule or first_rows or all_rows
  first_rows 模式
  
  。基于成本,以最快的速度q回记录Q会造成M查询速度的下降或消耗更多的资源Q們֐索引扫描Q适合OLTPpȝ
  all_rows模式
  
  。基于成本,保M查询旉最短,們֐q行全表扫描
  
  例如Q?
  Select last_name from customer order by last_name;用first_rowsӞq速返回记录,但I/O量大Q用all_rowsӞq回记录慢,但用资源少?
  
调整SQL表访?
  
  全表扫描
  
  。返回记录:未排序表>40%Q排序表>7%Q徏议采用ƈ行机制来提高讉K速度QDDSQ?
  
  索引讉K
  
  。最常用的方法,包括索引唯一扫描和烦引范围扫描,OLTPQ?
  
  快速完全烦引扫?
  
  。访问烦引中所有数据块Q结果相当于全表扫描Q可以用索引扫描代替全表扫描Q例如:
  
  Select serv_id,count(* ) from tg_cdr01 group by serv_id;
  
  评估全表扫描的合法?
  
  如何实现q行扫描
  
  。永久ƈ行化Q不推荐Q?
  alter table customer parallel degree 8;
  
  。单个查询ƈ行化
  select /*+ full(emp) parallel(emp,8)*/ * from emp;
  
  分区表效果明?
  
  优化SQL语句排序
  
  排序的操作:
  
  。order by 子句
  。group by 子句
  。select distinct子句
  。创建烦引时
  。union或minus
  。排序合q连?
  
  如何避免排序
  
  。添加烦?
  。在索引中用distinct子句
  。避免排序合q连?
  
  使用提示q行调整
  
  使用提示的原?
  
  。语法:/*+ hint */
  。用表别名:select /*+ index(e dept_idx)*/ * from emp e
  。检验提C?
  
  常用的提C?
  
  。rule
  。all_rows
  。first_rows
  。use_nl
  。use_hash
  。use_merge
  。index
  。index_asc
  。no_index
  。index_descQ常用于使用max内置函数Q?
  。index_combine(强制使用位图索引)
  。index_ffsQ烦引快速完全扫描)
  。use_concat(查询中所有or条g使用union all)
  。parallel
  。noparallel
  。full
  。orderedQ基于成本)
  
  调整表连?
  
  表连接的cd
  
  。等q接
  where 条g中用{式q接Q?
  。外部连接(左、右q接Q?
  
  在where条g子句的等式谓词放|一?+)来实玎ͼ例如Q?
  select a.ename,b.comm from emp a,bonus b where a.ename=b.ename(+);
  
  该语句返回所有emp表的记录Q?
  。自q接
   Select a.value total, B.value hard, (A.value - b.value) soft ,
  Round((b.value/a.value)*100,1) perc
  From v$sysstat a,v$sysstat b
  Where a.statistic# = 179
  and B.statistic# = 180;
  
  反连?
  
  反连接常用于not in or not exists中,是指在查询中扑ֈ的Q何记录都不包含在l果集中的子查询Q不使用not in or not exists;
  
  。半q接
  
  查询中用existsQ含义:即在子查询中返回多条重复的记录Q外部查询也只返回一条记录?
  
  嵌套循环q接
  
  。被q接表中存在索引的情况下使用Q?
  。用use_nl?
  
  hashq接
  
  。Hashq接驱动表加蝲在内存中Qƈ使用hash技术连接第二个表,提高{连接速度?
  。适合于大表和表q接Q?
  。用use_hash?
  
  排序合ƈq接
  
  。排序合q连接不使用索引
  。用原则:
  
  q接表子D中不存在可用烦引;
  
  查询q回两个表中大部分的数据快;
  
  CBO认ؓ全表扫描比烦引扫描执行的更快?
  
  。用use_merge
  
  使用临时/中间?
  
  多个大表兌Ӟ可以分别把满x件的l果集存攑ֈ中间表,然后用中间表兌Q?
  
  SQL子查询的调整
  
  兌与非兌子查?
  
  。关联:子查询的内部引用的是外部表,每行执行一ơ;
  。非兌Q子查询只执行一ơ,存放在内存中?
  
  调整not in 和not exists语句
  
  。可以用外部连接优化not in子句Q例如:
  Code:
select ename from emp where dept_no not in
   (select dept_no from dept where dept_name =‘Math?;
  
  改ؓQ?
  Code:
select ename from emp,dept
   where emp.dept_no=dept.dept_no
   and dept.dept_name is null;
  
  使用索引调整SQL
  
Oracle Z么不使用索引
  
  。检查被索引的列或组合烦引的首列是否出现在PL/SQL语句的WHERE子句中,q是“执行计划”能用到相关索引的必要条件?
  
  。看采用了哪U类型的q接方式。ORACLE的共有Sort Merge JoinQSMJQ、Hash JoinQHJQ和Nested Loop JoinQNLQ。在两张表连接,且内表的目标列上建有索引Ӟ只有Nested Loop才能有效地利用到该烦引。SMJ即相关列上建有索引Q最多只能因索引的存在,避免数据排序q程。HJ׃dHASHq算Q烦引的存在Ҏ据查询速度几乎没有影响?
  
  。看q接序是否允许使用相关索引。假设表emp的deptno列上有烦引,表dept的列deptno上无索引QWHERE语句有emp.deptno=dept.deptno条g。在做NLq接Ӟemp做ؓ外表Q先被访问,׃q接机制原因Q外表的数据讉K方式是全表扫描,emp.deptno上的索引昄是用不上Q最多在其上做烦引全扫描或烦引快速全扫描?
  
  。是否用到系l数据字典表或视图。由于系l数据字典表都未被分析过Q可能导致极差的“执行计划”。但是不要擅自对数据字典表做分析Q否则可能导致死锁,或系l性能下降?
  
  。烦引列是否函数的参数。如是,索引在查询时用不上?
  
  。是否存在潜在的数据cd转换。如字W型数据与数值型数据比较QORACLE会自动将字符型用to_number()函数q行转换Q从而导致上一U现象的发生?
  
  。是否ؓ表和相关的烦引搜集够的l计数据。对数据l常有增、删、改的表最好定期对表和索引q行分析Q可用SQL语句“analyze table xxxx compute statistics for all indexes;”。ORACLE掌握了充分反映实际的l计数据Q才有可能做出正的选择?
  
  。烦引列的选择性不高?  我们假设典型情况Q有表empQ共有一百万行数据,但其中的emp.deptno列,数据只有4U不同的|?0?0?0?0。虽然emp数据行有很多QORACLE~省认定表中列的值是在所有数据行均匀分布的,也就是说每种deptno值各?5万数据行与之对应。假设SQL搜烦条gDEPTNO=10Q利用deptno列上的烦引进行数据搜索效率,往往不比全表扫描的高?
  
  。烦引列值是否可为空QNULLQ。如果烦引列值可以是I|在SQL语句中那些要q回NULL值的操作Q将不会用到索引Q如COUNTQ?Q,而是用全表扫描。这是因为烦引中存储g能ؓ全空?
  
  。看是否有用到ƈ行查询(PQOQ。ƈ行查询将不会用到索引?
  
  。如果从以上几个斚w都查不出原因的话Q我们只好用采用在语句中加hint的方式强制ORACLE使用最优的“执行计划”? hint采用注释的方式,有行注释和段注释两种方式? 如我们想要用到A表的IND_COL1索引的话Q可采用以下方式Q? “SELECT /*+ INDEXQA IND_COL1Q?/ * FROM A WHERE COL1 = XXX;"
  
如何屏蔽索引
  
  语句的执行计划中有不良烦引时Q可以h为地屏蔽该烦引,ҎQ?
  
  。数值型Q在索引字段上加0Q例?
  Code:
select * from emp where emp_no+0 = v_emp_no;

  
  。字W型Q在索引字段上加‘’,例如
  Code:
select * from tg_cdr01 where msisdn||’?v_msisdn;

 

[1] 基本的烦引概?br />    查询DBA_INDEXES视图可得到表中所有烦引的列表Q注意只能通过USER_INDEXES的方法来索模?schema)的烦引。访问USER_IND_COLUMNS视图可得C个给定表中被索引的特定列?/p>

[2] l合索引
    当某个烦引包含有多个已烦引的列时Q称q个索引为组合(concatentedQ烦引。在 Oracle9i引入跌式扫描的索引讉KҎ之前Q查询只能在有限条g下用该索引。比如:表emp有一个组合烦引键Q该索引包含了empno、ename和deptno。在Oracle9i之前除非在where之句中对W一列(empnoQ指定一个|否则׃能用这个烦引键q行一ơ范围扫描?br />    特别注意Q在Oracle9i之前Q只有在使用到烦引的前导索引时才可以使用l合索引Q?/p>

[3] ORACLE ROWID
    通过每个行的ROWIDQ烦引Oracle提供了访问单行数据的能力。ROWID其实是直接指向单独行的U\图。如果想查重复值或是其他对ROWID本n的引用,可以在Q何表中用和指定rowid列。  ?

[4] 限制索引
    限制索引是一些没有经验的开发h员经常犯的错误之一。在SQL中有很多陷阱会一些烦引无法用。下面讨Z些常见的问题Q?br />   
    4.1 使用不等于操作符Q?lt;>?=Q?br />        下面的查询即使在cust_rating列有一个烦引,查询语句仍然执行一ơ全表扫描?br />         select cust_Id,cust_name
         from   customers
         where  cust_rating <> 'aa';
         把上面的语句Ҏ如下的查询语句,q样Q在采用Z规则的优化器而不是基于代L优化器(更智能)Ӟ会使用索引?br />         select cust_Id,cust_name
         from   customers
         where  cust_rating < 'aa' or cust_rating > 'aa';
     特别注意Q通过把不{于操作W改成OR条gQ就可以使用索引Q以避免全表扫描?br />    
     4.2 使用IS NULL 或IS NOT NULL
         使用IS NULL 或IS NOT NULL同样会限制烦引的使用。因为NULL值ƈ没有被定义。在SQL语句中用NULL会有很多的麻烦。因此徏议开     发h员在Ӟ把需要烦引的列设成NOT NULL。如果被索引的列在某些行中存在NULL|׃会用这个烦引(除非索引是一个位囄     引,关于位图索引在稍后在详细讨论Q?/p>

     4.3 使用函数
         如果不用基于函数的索引Q那么在SQL语句的WHERE子句中对存在索引的列使用函数Ӟ会优化器忽略掉q些索引?br />         下面的查询不会用烦引(只要它不是基于函数的索引Q?br />          select empno,ename,deptno
          from   emp
          where  trunc(hiredate)='01-MAY-81';
          把上面的语句Ҏ下面的语句,q样可以通过索引q行查找?br />          select empno,ename,deptno
          from   emp
          where  hiredate<(to_date('01-MAY-81')+0.9999);

     4.4 比较不匹配的数据cd
         比较不匹配的数据cd也是比较难于发现的性能问题之一?br />         注意下面查询的例子,account_number是一个VARCHAR2cdQ在account_number字段上有索引。下面的语句执行全表扫描?br />         select bank_name,address,city,state,zip
         from   banks
         where  account_number = 990354;
         Oracle可以自动把where子句变成to_number(account_number)=990354Q这样就限制了烦引的使用,Ҏ下面的查询就可以使用索引Q?br />         select bank_name,address,city,state,zip
         from   banks
         where  account_number ='990354';
     特别注意Q不匚w的数据类型之间比较会让Oracle自动限制索引的用,即便对这个查询执行Explain Plan也不能让您明白ؓ什么做了一               ơ“全表扫描”?/p>

[5] 选择?br />    使用USER_INDEXES视图Q该视图中显CZ一个distinct_keys列。比较一下唯一键的数量和表中的行数Q就可以判断索引的选择性。选择性越高,索引q回的数据就少?/p>

[6] 集因子(Clustering Factor)
    Clustering Factor位于USER_INDEXES视图中。该列反映了数据相对于已索引的列是否昑־有序。如果Clustering Factor列的值接q于索引中的树叶?leaf block)的数目,表中的数据就有序。如果它的值接q于表中的行敎ͼ则表中的数据׃是很有序?br />   

[7] 二元高度(Binary height)
    索引的二元高度对把ROWIDq回l用戯E时所要求的I/O量v到关键作用。在对一个烦引进行分析后Q可以通过查询DBA_INDEXES的B-level列查看它的二元高度。二元高度主要随着表的大小以及被烦引的列中值的范围的狭H程度而变化。烦引上如果有大量被删除的行Q它的二元高度也会增加。更新烦引列也类g删除操作Q因为它增加了已删除键的数目。重建烦引可能会降低二元高度?/p>

[8] 快速全局扫描
    在Oracle7.3后就可以使用快速全局扫描(Fast Full Scan)q个选项。这个选项允许Oracle执行一个全局索引扫描操作。快速全局扫描dB-树烦引上所有树叶块。初始化文g中的DB_FILE_MULTIBLOCK_READ_COUNT参数可以控制同时被读取的块的数目?/p>

[9] 跌式扫?br />    从Oracle9i开始,索引跌式扫描特性可以允怼化器使用l合索引Q即便烦引的前导列没有出现在WHERE子句中。烦引蟩跃式扫描比全索引扫描要快的多。下面的E序清单昄出性能的差别:
    create index skip1 on emp5(job,empno);
    index created.

    select count(*)
    from emp5
    where empno=7900;

    Elapsed:00:00:03.13

    Execution Plan
    0     SELECT STATEMENT Optimizer=CHOOSE(Cost=4 Card=1 Bytes=5)
    1  0    SORT(AGGREGATE)
    2  1      INDEX(FAST FULL SCAN) OF 'SKIP1'(NON-UNIQUE)

    Statistics

    6826 consistent gets
    6819 physical   reads

    select /*+ index(emp5 skip1)*/ count(*)
    from emp5
    where empno=7900;

    Elapsed:00:00:00.56

    Execution Plan
    0     SELECT STATEMENT Optimizer=CHOOSE(Cost=6 Card=1 Bytes=5)
    1  0    SORT(AGGREGATE)
    2  1      INDEX(SKIP SCAN) OF 'SKIP1'(NON-UNIQUE)

    Statistics

    21 consistent gets
    17 physical   reads

[10] 索引的类?br />     B-树烦?br />     位图索引
     HASH索引
     索引~排?br />     反{键烦?br />     Z函数的烦?br />     分区索引
     本地和全局索引



]]>
DOM4J 修改 xml 文ghttp://www.aygfsteel.com/tojava/archive/2005/12/20/24862.htmll like life i like javal like life i like javaTue, 20 Dec 2005 12:52:00 GMThttp://www.aygfsteel.com/tojava/archive/2005/12/20/24862.htmlhttp://www.aygfsteel.com/tojava/comments/24862.htmlhttp://www.aygfsteel.com/tojava/archive/2005/12/20/24862.html#Feedback6http://www.aygfsteel.com/tojava/comments/commentRss/24862.htmlhttp://www.aygfsteel.com/tojava/services/trackbacks/24862.html
使用 domj4 API 创徏与修?XML 文档
  from http://vip.6to23.com/wocienyoung/in/dom4j.htm

dom4j 是一U解?XML 文档的开放源代码 XML 框架。本文介l如何用包含在 dom4j 中的解析器创建ƈ修改 XML 文档?/P>

dom4j API 包含一个解?XML 文档的工兗本文中用这个解析器创徏一个示?XML 文档。清?1 昄了这个示?XML 文档Qcatalog.xml?/P>清单 1. CZ XML 文档Qcatalog.xmlQ?/B>

<?xml version="1.0" encoding="UTF-8"?> 
<catalog> 
<!--An XML Catalog--> 
<?target instruction?>
  <journal title="XML Zone" 
                  publisher="IBM developerWorks"> 

<article level="Intermediate" date="December-2001">
 <title>Java configuration with XML Schema</title> 
 <author> 
     <firstname>Marcello</firstname> 
     <lastname>Vitaletti</lastname> 
 </author>
  </article>
  </journal> 
</catalog>

然后使用同一个解析器修改 catalog.xmlQ清?2 是修改后?XML 文档Qcatalog-modified.xml?/P>清单 2. 修改后的 XML 文档Qcatalog-modified.xmlQ?/B>

<?xml version="1.0" encoding="UTF-8"?> 
<catalog> 
<!--An XML catalog--> 
<?target instruction?>
  <journal title="XML Zone"
                   publisher="IBM developerWorks"> 

<article level="Introductory" date="October-2002">
 <title>Create flexible and extensible XML schemas</title> 
 <author> 
     <firstname>Ayesha</firstname> 
     <lastname>Malik</lastname> 
 </author> 
  </article>
  </journal> 
</catalog>

?W3C DOM API 相比Q?dom4j 所包含的解析器的好处是 dom4j 拥有本地?XPath 支持。DOM 解析器不支持使用 XPath 选择节点?/P>

本文包括以下几个部分Q?/P>

  • 预先讄
  • 创徏文档
  • 修改文档

预先讄
q个解析器可以从 http://dom4j.org/ 获取。通过讄?dom4j-1.4/dom4j-full.jar 能够?classpath 中访问,该文件中包括 dom4j cRXPath 引擎以及 SAX ?DOM 接口。如果已l用了 JAXP 解析器中包含?SAX ?DOM 接口Q向 classpath 中增?dom4j-1.4/dom4j.jar?CODE>dom4j.jar 包括 dom4j cd XPath 引擎Q但是不?SAX ?DOM 接口?/P>

创徏文档
本节讨论使用 dom4j API 创徏 XML 文档的过E,q创建示?XML 文档 catalog.xml?/P>

使用 import 语句导入 dom4j API c:


import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

使用 DocumentHelper cdZ个文档实例?CODE>DocumentHelper 是生?XML 文档节点?dom4j API 工厂cR?/P>
 Document document = DocumentHelper.createDocument();

使用 addElement() Ҏ创徏根元?catalog?CODE> addElement() 用于?XML 文档中增加元素?/P>
Element catalogElement = document.addElement("catalog");

?catalog 元素中?addComment() Ҏd注释“An XML catalog”?/P>
 catalogElement.addComment("An XML catalog");

?catalog 元素中?addProcessingInstruction() Ҏ增加一个处理指令?/P>
catalogElement.addProcessingInstruction("target","text");

?catalog 元素中?addElement() Ҏ增加 journal 元素?/P>
Element journalElement =  catalogElement.addElement("journal");

使用 addAttribute() Ҏ?journal 元素d title ?publisher 属性?/P>
journalElement.addAttribute("title", "XML Zone");
         journalElement.addAttribute("publisher", "IBM developerWorks");

?article 元素中添?journal 元素?/P>
Element articleElement=journalElement.addElement("article");

?article 元素增加 level ?date 属性?/P>
articleElement.addAttribute("level", "Intermediate");
      articleElement.addAttribute("date", "December-2001");

?article 元素中增?title 元素?/P>
Element titleElement=articleElement.addElement("title");

使用 setText() Ҏ讄 article 元素的文本?/P>
titleElement.setText("Java configuration with XML Schema");

?article 元素中增?author 元素?/P>
Element authorElement=articleElement.addElement("author");

?author 元素中增?firstname 元素q设|该元素的文本?/P>
Element  firstNameElement=authorElement.addElement("firstname");
     firstNameElement.setText("Marcello");

?author 元素中增?lastname 元素q设|该元素的文本?/P>
Element lastNameElement=authorElement.addElement("lastname");
     lastNameElement.setText("Vitaletti");

q样向 XML 文档中增加文档类型说明:

<!DOCTYPE catalog SYSTEM "file://c:/Dtds/catalog.dtd">

如果文档要用文档类型定义(DTDQ文档验证则必须?Doctype?/P>

XML 声明 <?xml version="1.0" encoding="UTF-8"?> 自动d?XML 文档中?/P>

清单 3 所C的例子E序 XmlDom4J.java 用于创徏 XML 文档 catalog.xml?/P>清单 3. 生成 XML 文档 catalog.xml 的程序(XmlDom4J.javaQ?/B>

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;
import org.dom4j.io.OutputFormat;
import java.io.*;



public class XmlDom4J{


public void generateDocument(){
Document document = DocumentHelper.createDocument();
     Element catalogElement = document.addElement("catalog");
     catalogElement.addComment("An XML Catalog");
     catalogElement.addProcessingInstruction("target","text");
     Element journalElement =  catalogElement.addElement("journal");
     journalElement.addAttribute("title", "XML Zone");
     journalElement.addAttribute("publisher", "IBM developerWorks");


     Element articleElement=journalElement.addElement("article");
     articleElement.addAttribute("level", "Intermediate");
     articleElement.addAttribute("date", "December-2001");
     Element  titleElement=articleElement.addElement("title");
     titleElement.setText("Java configuration with XML Schema");
     Element authorElement=articleElement.addElement("author");
     Element  firstNameElement=authorElement.addElement("firstname");
     firstNameElement.setText("Marcello");
     Element lastNameElement=authorElement.addElement("lastname");
     lastNameElement.setText("Vitaletti");

     //document.addDocType("catalog",null,"file://f:/catalog.dtd");

    try{
    
	OutputFormat format = OutputFormat.createPrettyPrint();

	XMLWriter output = new XMLWriter(
new FileWriter( new File("f:/dom4j/catalog.xml") ), format);
        output.write( document );
        output.close();
       

        }
     catch(IOException e){System.out.println(e.getMessage());}
}

public static void main(String[] argv){
XmlDom4J dom4j=new XmlDom4J();
dom4j.generateDocument();
}}

q一节讨Z创徏 XML 文档的过E,下一节将介绍使用 dom4j API 修改q里创徏?XML 文档?/P>

修改文档
q一节说明如何?dom4j API 修改CZ XML 文档 catalog.xml?/P>

使用 SAXReader 解析 XML 文档 catalog.xmlQ?/P>
SAXReader saxReader = new SAXReader();
 Document document = saxReader.read(inputXml);

SAXReader 包含?org.dom4j.io 包中?/P>

inputXml 是从 c:/catalog/catalog.xml 创徏?java.io.File。?XPath 表达式从 article 元素中获?level 节点列表。如?level 属性值是“Intermediate”则改ؓ“Introductory”?/P>
List list = document.selectNodes("http://article/@level" );
      Iterator iter=list.iterator();
        while(iter.hasNext()){
            Attribute attribute=(Attribute)iter.next();
               if(attribute.getValue().equals("Intermediate"))
               attribute.setValue("Introductory"); 
       }

获取 article 元素列表Q从 article 元素中的 title 元素得到一个P代器Qƈ修改 title 元素的文本?/P>
list = document.selectNodes("http://article" );
     iter=list.iterator();
   while(iter.hasNext()){
       Element element=(Element)iter.next();
      Iterator iterator=element.elementIterator("title");
   while(iterator.hasNext()){
   Element titleElement=(Element)iterator.next();
   if(titleElement.getText().equals("Java configuration with XML Schema"))
     titleElement.setText("Create flexible and extensible XML schema");

    }}

通过?title 元素cM的过E修?author 元素?/P>

清单 4 所C的CZE序 Dom4JParser.java 用于?catalog.xml 文档修改?catalog-modified.xml 文档?/P>清单 4. 用于修改 catalog.xml 的程序(Dom4Jparser.javaQ?/B>

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Attribute;
import java.util.List;
import java.util.Iterator;
import org.dom4j.io.XMLWriter;
import java.io.*;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader; 

public class Dom4JParser{

 public void modifyDocument(File inputXml){

  try{
   SAXReader saxReader = new SAXReader();
   Document document = saxReader.read(inputXml);

   List list = document.selectNodes("http://article/@level" );
   Iterator iter=list.iterator();
   while(iter.hasNext()){
    Attribute attribute=(Attribute)iter.next();
    if(attribute.getValue().equals("Intermediate"))
      attribute.setValue("Introductory"); 

       }
   
   list = document.selectNodes("http://article/@date" );
   iter=list.iterator();
   while(iter.hasNext()){
    Attribute attribute=(Attribute)iter.next();
    if(attribute.getValue().equals("December-2001"))
      attribute.setValue("October-2002");

       }

   list = document.selectNodes("http://article" );
   iter=list.iterator();
   while(iter.hasNext()){
    Element element=(Element)iter.next();
    Iterator iterator=element.elementIterator("title");
      while(iterator.hasNext()){
        Element titleElement=(Element)iterator.next();
        if(titleElement.getText().equals("Java configuration with XML

      Schema"))
        titleElement.setText("Create flexible and extensible XML schema");

                                          }

                                }

    list = document.selectNodes("http://article/author" );
    iter=list.iterator();
     while(iter.hasNext()){
     Element element=(Element)iter.next();
     Iterator iterator=element.elementIterator("firstname");
     while(iterator.hasNext()){
      Element firstNameElement=(Element)iterator.next();
      if(firstNameElement.getText().equals("Marcello"))
      firstNameElement.setText("Ayesha");
                                     }

                              }

    list = document.selectNodes("http://article/author" );
    iter=list.iterator();
     while(iter.hasNext()){
      Element element=(Element)iter.next();
      Iterator iterator=element.elementIterator("lastname");
     while(iterator.hasNext()){
      Element lastNameElement=(Element)iterator.next();
      if(lastNameElement.getText().equals("Vitaletti"))
      lastNameElement.setText("Malik");

                                  }

                               }
     XMLWriter output = new XMLWriter(
      new FileWriter( new File("f:/dom4j/catalog-modified.xml") ));
     output.write( document );
     output.close();
   }
 
  catch(DocumentException e)
                 {
                  System.out.println(e.getMessage());
                            }

  catch(IOException e){
                       System.out.println(e.getMessage());
                    }
 }

 public static void main(String[] argv){

  Dom4JParser dom4jParser=new Dom4JParser();
  dom4jParser.modifyDocument(new File("f:/dom4j/catalog.xml"));

                                        }

   }

q一节说明了如何使用 dom4j 中的解析器修改示?XML 文档。这个解析器不?DTD 或者模式验?XML 文档。如?XML 文档需要验证,可以解释?dom4j ?JAXP SAX 解析器?/P>

]]>
~译COMPIERE253A in Eclipse sdk 3.1.1http://www.aygfsteel.com/tojava/archive/2005/12/16/24203.htmll like life i like javal like life i like javaFri, 16 Dec 2005 06:16:00 GMThttp://www.aygfsteel.com/tojava/archive/2005/12/16/24203.htmlhttp://www.aygfsteel.com/tojava/comments/24203.htmlhttp://www.aygfsteel.com/tojava/archive/2005/12/16/24203.html#Feedback0http://www.aygfsteel.com/tojava/comments/commentRss/24203.htmlhttp://www.aygfsteel.com/tojava/services/trackbacks/24203.html1.下蝲COMPIERE253A-SOURCE FROM WWW.COMPIERE-CHINA.COM;
2.在compiere-all  目录下新?classpath 文g内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
 <classpathentry kind="src" path="base/src"/>
 <classpathentry kind="src" path="serverApps/src/main/servlet"/>
 <classpathentry kind="src" path="serverRoot/src/main/server"/>
 <classpathentry kind="src" path="client/Src"/>
 <classpathentry kind="src" path="dbPort/src"/>
 <classpathentry kind="src" path="extend/src"/>
 <classpathentry kind="src" path="install/src"/>
 <classpathentry kind="src" path="interfaces/src"/>
 <classpathentry kind="src" path="looks/src"/>
 <classpathentry kind="src" path="print/src"/>
 <classpathentry excluding="main/servlet/|main/servlet/" kind="src" path="serverApps/src"/>
 <classpathentry kind="src" path="sqlj/src"/>
 <classpathentry kind="src" path="tools/Src"/>
 <classpathentry kind="lib" path="lib/compiereRoot.jar"/>
 <classpathentry kind="lib" path="data/seed/Compiere.jar"/>
 <classpathentry kind="lib" path="jboss/server/compiere/lib/jboss.jar"/>
 <classpathentry kind="lib" path="lib/jPDF.jar"/>
 <classpathentry kind="lib" path="client/lib/RXTXcomm.jar"/>
 <classpathentry kind="lib" path="client/lib/Serial.jar"/>
 <classpathentry kind="lib" path="lib/postgresql.jar"/>
 <classpathentry kind="lib" path="tools/lib/activation.jar"/>
 <classpathentry kind="lib" path="tools/lib/ant.jar"/>
 <classpathentry kind="lib" path="tools/lib/ant-commons-net.jar"/>
 <classpathentry kind="lib" path="tools/lib/ant-launcher.jar"/>
 <classpathentry kind="lib" path="tools/lib/bsh-1.3.0.jar"/>
 <classpathentry kind="lib" path="tools/lib/commons-net-1.4.0.jar"/>
 <classpathentry kind="lib" path="tools/lib/commons-collections-3.1.jar"/>
 <classpathentry kind="lib" path="tools/lib/commons-logging.jar"/>
 <classpathentry kind="lib" path="tools/lib/j2ee.jar"/>
 <classpathentry kind="lib" path="tools/lib/jconn3.jar"/>
 <classpathentry kind="lib" path="tools/lib/jpayment.jar"/>
 <classpathentry kind="lib" path="tools/lib/jsp-api.jar"/>
 <classpathentry kind="lib" path="tools/lib/jstl.jar"/>
 <classpathentry kind="lib" path="tools/lib/jTDS3.jar"/>
 <classpathentry kind="lib" path="tools/lib/jtds-1.0.jar"/>
 <classpathentry kind="lib" path="tools/lib/junit.jar"/>
 <classpathentry kind="lib" path="tools/lib/log4j.jar"/>
 <classpathentry kind="lib" path="tools/lib/mail.jar"/>
 <classpathentry kind="lib" path="tools/lib/ocrs12.jar"/>
 <classpathentry kind="lib" path="tools/lib/ojdbc14.jar"/>
 <classpathentry kind="lib" path="tools/lib/postgresql.jar"/>
 <classpathentry kind="lib" path="tools/lib/servlet-api.jar"/>
 <classpathentry kind="lib" path="tools/lib/standard.jar"/>
 <classpathentry kind="lib" path="tools/lib/Verisign.jar"/>
 <classpathentry kind="lib" path="tools/lib/xdoclet-1.2.3.jar"/>
 <classpathentry kind="lib" path="tools/lib/xdoclet-ejb-module-1.2.3.jar"/>
 <classpathentry kind="lib" path="tools/lib/xdoclet-web-module-1.2.3.jar"/>
 <classpathentry kind="lib" path="tools/lib/xdoclet-xdoclet-module-1.2.3.jar"/>
 <classpathentry kind="lib" path="tools/lib/xjavadoc-1.1.jar"/>
 <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
 <classpathentry kind="lib" path="jboss/server/compiere/lib/jmx-adaptor-plugin.jar"/>
 <classpathentry kind="lib" path="jboss/server/compiere/lib/jnpserver.jar"/>
 <classpathentry kind="lib" path="jboss/lib/commons-httpclient.jar"/>
 <classpathentry kind="lib" path="jboss/lib/commons-logging.jar"/>
 <classpathentry kind="lib" path="jboss/lib/concurrent.jar"/>
 <classpathentry kind="lib" path="jboss/lib/getopt.jar"/>
 <classpathentry kind="lib" path="jboss/lib/gnu-regexp.jar"/>
 <classpathentry kind="lib" path="jboss/lib/jaxen.jar"/>
 <classpathentry kind="lib" path="jboss/lib/jboss-common.jar"/>
 <classpathentry kind="lib" path="jboss/lib/jboss-jmx.jar"/>
 <classpathentry kind="lib" path="jboss/lib/jboss-system.jar"/>
 <classpathentry kind="lib" path="jboss/lib/dom4j.jar"/>
 <classpathentry kind="lib" path="jboss/lib/log4j-boot.jar"/>
 <classpathentry kind="lib" path="jboss/lib/namespace.jar"/>
 <classpathentry kind="lib" path="jboss/lib/webdavlib.jar"/>
 <classpathentry kind="output" path="bin"/>
</classpath>


3.在compiere-all  目录下新?project 文g内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
 <name>C-253a</name>
 <comment>from compiere-china20051215</comment>
 <projects>
  <project>base</project>
  <project>Looks</project>
  <project>client</project>
  <project>dbPort</project>
  <project>extend</project>
  <project>install</project>
  <project>interfaces</project>
  <project>jboss</project>
  <project>print</project>
  <project>server</project>
  <project>serverApps</project>
  <project>serverRoot</project>
  <project>tools</project>
 </projects>

 <buildSpec>
  <buildCommand>
   <name>org.eclipse.jdt.core.javabuilder</name>
   <arguments>
   </arguments>
  </buildCommand>
 </buildSpec>
 <natures>
  <nature>org.eclipse.jdt.core.javanature</nature>
 </natures>
</projectDescription>

4.从ECLIPSE 3.1.1SDK  IMPORT   PROJECT   UNDER compiere-all;




]]>
վ֩ģ壺 Ϫ| Ȩ| | | | | | | | Զ| ƾ| ԭ| | | ˮ| Դ| | Ǹ| | | | | | | ľ| | | Դ| | ϲ| ʤ| | | ɳ| Ͷ| | ƽ| | ̰| | ƺ|