亚洲国产片在线观看,国产99久久亚洲综合精品,精品亚洲AV无码一区二区http://www.tkk7.com/youling/面對(duì)挑戰(zhàn),我告訴自己:面對(duì)是勇氣,積極面對(duì)是態(tài)度,堅(jiān)持積極面對(duì)是毅力!zh-cnSat, 10 May 2025 10:53:26 GMTSat, 10 May 2025 10:53:26 GMT60千萬級(jí)sql優(yōu)化http://www.tkk7.com/youling/archive/2011/09/06/358076.html黑豆熊黑豆熊Tue, 06 Sep 2011 04:18:00 GMThttp://www.tkk7.com/youling/archive/2011/09/06/358076.htmlhttp://www.tkk7.com/youling/comments/358076.htmlhttp://www.tkk7.com/youling/archive/2011/09/06/358076.html#Feedback22http://www.tkk7.com/youling/comments/commentRss/358076.htmlhttp://www.tkk7.com/youling/services/trackbacks/358076.html
select a.tcol2, a.departcode, a.sendtime, sum(a.mainamount) mainamount
  from sf02 a
 where a.ksdm = '11019204'
  and exists
 (select policyno
  from sf01 b
  where b.businessnature = '531'
  union all select policyno from sf01 b where b.businessnature = '532'
  and a.policyno = b.policyno)
  and (a.kindcode = 'R21' or a.kindcode = 'R29')
  and a.insert_time <= to_date('2011-09-05', 'yyyy-MM-dd')
  and a.insert_time >= to_date('2000-08-25', 'yyyy-MM-dd')
 group by a.tcol2, a.departcode, a.sendtime
 
由于數(shù)據(jù)庫是分公司的,創(chuàng)建臨時(shí)表不是太好使,這個(gè)問題一直沒有太好的解決辦法,不知道各位有沒有好的思路,希望各位留下寶貴的意見,由于這個(gè)帖子放在提問區(qū)一直沒有人瀏覽,不得已放在首頁,還請(qǐng)blogJava對(duì)該帖放行,非常感謝。

黑豆熊 2011-09-06 12:18 發(fā)表評(píng)論
]]>
關(guān)于:Cannot create JDBC driver of class '' for connect URL 'null' http://www.tkk7.com/youling/archive/2009/03/17/260230.html黑豆熊黑豆熊Tue, 17 Mar 2009 05:29:00 GMThttp://www.tkk7.com/youling/archive/2009/03/17/260230.htmlhttp://www.tkk7.com/youling/comments/260230.htmlhttp://www.tkk7.com/youling/archive/2009/03/17/260230.html#Feedback0http://www.tkk7.com/youling/comments/commentRss/260230.htmlhttp://www.tkk7.com/youling/services/trackbacks/260230.html
今天在使用潤乾報(bào)表的時(shí)候,出現(xiàn)了一個(gè)錯(cuò)誤:Cannot create JDBC driver of class '' for connect URL 'null'

當(dāng)我們用Tomcat5.0.XX時(shí),以O(shè)racle為例,一般我們的配置如下,但直接移到5.5.XX時(shí)就會(huì)發(fā)生錯(cuò)誤
   <Resource name="jdbc/XXX" type="javax.sql.DataSource"/>
  <ResourceParams name="jdbc/XXX">
    <parameter>
      <name>factory</name>
      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    </parameter>
    <parameter>
      <name>password</name>
      <value>password</value>
    </parameter>
    <parameter>
      <name>url</name>
      <value>jdbcracle:thin:@localhost:1521:SID</value>
    </parameter>
    <parameter>
      <name>driverClassName</name>
      <value>oracle.jdbc.driver.OracleDriver</value>
    </parameter>
    <parameter>
      <name>username</name>
      <value>username</value>
    </parameter>
  </ResourceParams>

當(dāng)要移植到Tomcat5.5.XX時(shí),配置應(yīng)當(dāng)修改一下,如下所示: 
    <Resource
    name="jdbc/XXX"
    type="javax.sql.DataSource"
    password="password"
    driverClassName="oracle.jdbc.driver.OracleDriver"
    maxIdle="2"
    maxWait="5000"
    username="username"
    url="jdbcracle:thin:@localhost:1521:SID"
    maxActive="4"/>


上面的錯(cuò)誤消失以后,緊接著出現(xiàn)了:Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver'

修改方法如下:

1. 將servlet-api.jar和classes12.jar考到WEB-INF/lib目錄下

2. 將servlet-api.jar和classes12.jar考到\Tomcat   5.0\common\lib下




黑豆熊 2009-03-17 13:29 發(fā)表評(píng)論
]]>
大家來說說改Bug的好方法http://www.tkk7.com/youling/archive/2008/12/16/246672.html黑豆熊黑豆熊Tue, 16 Dec 2008 09:02:00 GMThttp://www.tkk7.com/youling/archive/2008/12/16/246672.htmlhttp://www.tkk7.com/youling/comments/246672.htmlhttp://www.tkk7.com/youling/archive/2008/12/16/246672.html#Feedback6http://www.tkk7.com/youling/comments/commentRss/246672.htmlhttp://www.tkk7.com/youling/services/trackbacks/246672.html&#@$%^$#%$......
        改完這個(gè)Bug以后,我給自己一點(diǎn)時(shí)間,反思一下出現(xiàn)這種情況的原因,感覺最主要的原因就是自己對(duì)測(cè)試方法和調(diào)試方法比較陌生,在這次的錯(cuò)誤修改過程當(dāng)中,我主要用的是日志分段打印輸出,來查找出錯(cuò)的地方,真的是太浪費(fèi)時(shí)間了,不知道各位大俠一般是怎樣查找定位錯(cuò)誤,修改錯(cuò)誤以后,又是怎樣快速高效的測(cè)試?
         望各位大俠不吝賜教,小弟感激不盡,先行謝過!

黑豆熊 2008-12-16 17:02 發(fā)表評(píng)論
]]>
java.lang.UnsupportedClassVersionError異常的解決方法http://www.tkk7.com/youling/archive/2008/12/12/246015.html黑豆熊黑豆熊Fri, 12 Dec 2008 10:11:00 GMThttp://www.tkk7.com/youling/archive/2008/12/12/246015.htmlhttp://www.tkk7.com/youling/comments/246015.htmlhttp://www.tkk7.com/youling/archive/2008/12/12/246015.html#Feedback2http://www.tkk7.com/youling/comments/commentRss/246015.htmlhttp://www.tkk7.com/youling/services/trackbacks/246015.html今天下午的時(shí)候,一個(gè)同事買了一臺(tái)筆記本,把他的臺(tái)式機(jī)撤給我用,就在我把開發(fā)環(huán)境裝好準(zhǔn)備測(cè)試一下的時(shí)候,Tomcat啟動(dòng)時(shí)卻是報(bào)了java.lang.UnsupportedClassVersionErrorde的錯(cuò)誤,仔細(xì)看了一下,好像是什么:未知的版本錯(cuò)誤,這時(shí)候才想起來,自己的Myeclipse裝的是6.0的,jdk是1.4,Tomcat是5.5,而裝好Meclipse以后默認(rèn)的jdk版本是5.0,如果不注意著一點(diǎn),Tomcat服務(wù)器在啟動(dòng)的時(shí)候,就會(huì)報(bào)上面的錯(cuò)誤?,F(xiàn)把解決得方法貼出來:
    

1、Jbuilder2006自帶了1.5的JDK,但如果你還想繼續(xù)用JDK1.42,如果只是在Jbuilder2006的tool->configure->JDKs中添加一個(gè)JDK1.42或更低版本,那么即使你只寫一個(gè)最簡(jiǎn)單的HelloWorld程序,Jbuilder2006都會(huì)給你報(bào)出長(zhǎng)長(zhǎng)一串錯(cuò)誤,編寫的代碼在Jbuilder2005中也無法運(yùn)行。JBuilder2006在運(yùn)行編譯工程時(shí),會(huì)針對(duì)特定版本的VM進(jìn)行編譯,默認(rèn)的是Java 2 SDK, v 5.0 And Late,因此,如果工程用的是1.5以下的JDK,碰到都是java.lang.UnsupportedClassVersionError這個(gè)錯(cuò)誤。

解決的辦法其實(shí)很簡(jiǎn)單,只要更改這個(gè)選項(xiàng)就行了。具體步驟如下:
----------------------------------------------------------
1、右鍵點(diǎn)擊工程文件,選擇屬性(properties),
2、在屬性窗口中選擇 Build-->Java,在右邊的選項(xiàng)中有四個(gè)下拉框,就可以看到編譯選項(xiàng)了,
3、其中Compiler和Debug Option可以不用管,只在Languege features和Target VM中選擇相應(yīng)的JDK版本就可以了,然后確定,一切OK。
附件中是配置的圖片。
-----------------------------------------------------------
如果在Target VM中選擇了All Java SDKs,那么你的class文件在使用JDK1.1的VM上都可以運(yùn)行(Jbuilder2006幫助中是這么說的,估計(jì)沒幾個(gè)人的機(jī)子上還在用JDK1.1吧 :-)
2、Eclipse3.1同樣會(huì)出現(xiàn)相同的問題,這時(shí)候只需要把項(xiàng)目用的JDK與你安裝的JDK搞成版本一樣就解決了.
步驟:右擊你的項(xiàng)目-->屬性-->Java Compiler,設(shè)置合適的版本!!


黑豆熊 2008-12-12 18:11 發(fā)表評(píng)論
]]>
求教:讓人郁悶的時(shí)間問題http://www.tkk7.com/youling/archive/2008/12/01/243703.html黑豆熊黑豆熊Mon, 01 Dec 2008 06:15:00 GMThttp://www.tkk7.com/youling/archive/2008/12/01/243703.htmlhttp://www.tkk7.com/youling/comments/243703.htmlhttp://www.tkk7.com/youling/archive/2008/12/01/243703.html#Feedback8http://www.tkk7.com/youling/comments/commentRss/243703.htmlhttp://www.tkk7.com/youling/services/trackbacks/243703.html f.QUARTER1_BUDGET,f.QUARTER2_BUDGET,f.QUARTER3_BUDGET,f.QUARTER4_BUDGET,f.ID,f.PROJ_CODE,b.PROJ_TYPE,
b.PROJ_NAME,b.PROJ_SORT,b.PROJ_STAT,b.P_RECORD_TIME
其中DATA_YEAR和DATA_MONTH在數(shù)據(jù)庫中的存儲(chǔ)類型是String型,  DATA_DATE存儲(chǔ)的類型是Date型,使用到的DataParser.formatStringDate方法如下:
 public static Date formatStringDate(String sDate)
 {
  DateFormat df = new SimpleDateFormat("yyyy-MM-dd 00:00:00");
  Date tDate = null;
  try {
   tDate = df.parse(sDate);
  } catch (ParseException e) {
   e.printStackTrace();
  }
  return tDate;
 }
但是無論如何都是出不來結(jié)果,報(bào)的是一個(gè)Not all named parameters have been set: [00:00]的錯(cuò)誤,格式化出來的時(shí)間也不是想要的類型,而是這個(gè)衰樣:Sat Nov 01 00:00:00 CST 2008,與我想要的“yyyy-MM-dd hh:mm:ss”相去甚遠(yuǎn),不知道該怎么格式化一下,麻煩那位高手指點(diǎn)一下,感激不盡!

黑豆熊 2008-12-01 14:15 發(fā)表評(píng)論
]]>
sql語句的執(zhí)行順序--簡(jiǎn)介http://www.tkk7.com/youling/archive/2008/11/28/243177.html黑豆熊黑豆熊Fri, 28 Nov 2008 03:17:00 GMThttp://www.tkk7.com/youling/archive/2008/11/28/243177.htmlhttp://www.tkk7.com/youling/comments/243177.htmlhttp://www.tkk7.com/youling/archive/2008/11/28/243177.html#Feedback6http://www.tkk7.com/youling/comments/commentRss/243177.htmlhttp://www.tkk7.com/youling/services/trackbacks/243177.html 一、sql語句的執(zhí)行步驟:
 1)語法分析,分析語句的語法是否符合規(guī)范,衡量語句中各表達(dá)式的意義。
2) 語義分析,檢查語句中涉及的所有數(shù)據(jù)庫對(duì)象是否存在,且用戶有相應(yīng)的權(quán)限。
3)視圖轉(zhuǎn)換,將涉及視圖的查詢語句轉(zhuǎn)換為相應(yīng)的對(duì)基表查詢語句。
4)表達(dá)式轉(zhuǎn)換, 將復(fù)雜的 SQL 表達(dá)式轉(zhuǎn)換為較簡(jiǎn)單的等效連接表達(dá)式。
 5)選擇優(yōu)化器,不同的優(yōu)化器一般產(chǎn)生不同的“執(zhí)行計(jì)劃”
6)選擇連接方式, ORACLE 有三種連接方式,對(duì)多表連接 ORACLE 可選擇適當(dāng)?shù)倪B接方式。
7)選擇連接順序, 對(duì)多表連接 ORACLE 選擇哪一對(duì)表先連接,選擇這兩表中哪個(gè)表做為源數(shù)據(jù)表。
8)選擇數(shù)據(jù)的搜索路徑,根據(jù)以上條件選擇合適的數(shù)據(jù)搜索路徑,如是選用全表搜索還是利用索引或是其他的方式。
9)運(yùn)行“執(zhí)行計(jì)劃”
二、oracle 共享原理:
        ORACLE將執(zhí)行過的SQL語句存放在內(nèi)存的共享池(shared buffer pool)中,可以被所有的數(shù)據(jù)庫用戶共享 當(dāng)你執(zhí)行一個(gè)SQL語句(有時(shí)被稱為一個(gè)游標(biāo))時(shí),如果它和之前的執(zhí)行過的語句完全相同, ORACLE就能很快獲得已經(jīng)被解析的語句以及最好的 執(zhí)行路徑. 這個(gè)功能大大地提高了SQL的執(zhí)行性能并節(jié)省了內(nèi)存的使用
三、oracle 語句提高查詢效率的方法:1: where column in(select * from ... where ...); 2:... where exists (select 'X' from ...where ...); 第二種格式要遠(yuǎn)比第一種格式的效率高。在Oracle中可以幾乎將所有的IN操作符子查詢改寫為使用EXISTS的子查詢 使用EXIST,Oracle系統(tǒng)會(huì)首先檢查主查詢,然后運(yùn)行子查詢直到它找到第一個(gè)匹配項(xiàng),這就節(jié)省了時(shí)間 Oracle系統(tǒng)在執(zhí)行IN子查詢時(shí),首先執(zhí)行子查詢,并將獲得的結(jié)果列表存放在在一個(gè)加了索引的臨時(shí)表中 避免使用having字句 避免使用HAVING子句, HAVING 只會(huì)在檢索出所有記錄之后才對(duì)結(jié)果集進(jìn)行過濾. 這個(gè)處理需要排序,總計(jì)等操作. 如果能通過WHERE子句限制記錄的數(shù)目,那就能減少這方面的開銷

SQL Select語句完整的執(zhí)行順序: 

1、from子句組裝來自不同數(shù)據(jù)源的數(shù)據(jù);
 2、where子句基于指定的條件對(duì)記錄行進(jìn)行篩選;
3、group by子句將數(shù)據(jù)劃分為多個(gè)分組;
4、使用聚集函數(shù)進(jìn)行計(jì)算;
5、使用having子句篩選分組;
6、計(jì)算所有的表達(dá)式;
7、使用order by對(duì)結(jié)果集進(jìn)行排序。



黑豆熊 2008-11-28 11:17 發(fā)表評(píng)論
]]>
Hibernate 中的Formula 攻略(轉(zhuǎn)載)http://www.tkk7.com/youling/archive/2008/11/26/242749.html黑豆熊黑豆熊Wed, 26 Nov 2008 03:07:00 GMThttp://www.tkk7.com/youling/archive/2008/11/26/242749.htmlhttp://www.tkk7.com/youling/comments/242749.htmlhttp://www.tkk7.com/youling/archive/2008/11/26/242749.html#Feedback2http://www.tkk7.com/youling/comments/commentRss/242749.htmlhttp://www.tkk7.com/youling/services/trackbacks/242749.html

閱讀對(duì)象:

  1.已經(jīng)在使用Hibernate JPA完成持久化映射的朋友。

  2.在網(wǎng)上搜索Formula并通通搜到轉(zhuǎn)載oralce一篇技術(shù)文章或hibernate annotations技術(shù)文檔的朋友。

  3.發(fā)現(xiàn)@Formula不能使用并想Ctrl+Delete hibernate jar包,然后砸爛顯示器的朋友。

 

文章內(nèi)容

  本文將說明如何使用@Formula,并且說明在哪幾種情況下@Formula會(huì)失靈。

 

1.Formula的作用

  引用hibernate annotations技術(shù)文檔中的解釋可以很好的說明@Formula的作用,但它確實(shí)沒有說清楚怎么使用,并且給出的示例是用不了的,這讓我浪費(fèi)了好幾個(gè)鐘頭的時(shí)間!

   Formula的作用就是說白了就是用一個(gè)查詢語句動(dòng)態(tài)的生成一個(gè)類的屬性,比如java eye登陸之后 收件箱顯示有幾封未讀郵件的數(shù)字,就是一條select count(*)...構(gòu)成的虛擬列,而不是存儲(chǔ)在數(shù)據(jù)庫里的一個(gè)字段。用比較標(biāo)準(zhǔn)的說法就是:有時(shí)候,你想讓數(shù)據(jù)庫,而非JVM,來替你完成一些計(jì)算,也可能想創(chuàng)建某種虛擬列,你可以使用sql片段,而不是將屬性映射(物理)列。這種屬性是只讀的(屬性值由公式求得).Formula甚至可以包含sql子查詢

   Formula真的這么強(qiáng)大嗎?確實(shí),它很好很強(qiáng)大,節(jié)省了不少代碼!

 

2.使用Formula

 

Java代碼 復(fù)制代碼
  1. package aa;   
  2.   
  3. import static javax.persistence.GenerationType.IDENTITY;   
  4.   
  5. import javax.persistence.Entity;   
  6. import javax.persistence.GeneratedValue;   
  7. import javax.persistence.Id;   
  8. import javax.persistence.Table;   
  9.   
  10. import org.hibernate.annotations.Formula;   
  11.   
  12. /**  
  13.  * 注解必須是在屬性上的,如果有任何一個(gè)注解在方法上,那么@Formula將失效  
  14.  * @author 昆明蜂鳥軟件  
  15.  * @version 0.1.0 2008-7-15 下午06:09:38  
  16.  */  
  17. @Entity  
  18. @Table(name = "user", catalog = "test")   
  19. public class User {   
  20.        
  21.     @Id  
  22.     @GeneratedValue(strategy = IDENTITY)   
  23.     private int id;   
  24.   
  25.     @Formula("(select COUNT(*) from user)")   
  26.     private int count;   
  27.   
  28.     public int getId() {   
  29.         return id;   
  30.     }   
  31.   
  32.     public void setId(int id) {   
  33.         this.id = id;   
  34.     }   
  35.   
  36.     public int getCount() {   
  37.         return count;   
  38.     }   
  39.   
  40.     public void setCount(int count) {   
  41.         this.count = count;   
  42.     }   
  43. }  

 

 

 

 數(shù)據(jù)庫表:

Sql代碼 復(fù)制代碼
  1. CREATE TABLE  `test`.`user` (   
  2.   `id` int(10) unsigned NOT NULL auto_increment,   
  3.   PRIMARY KEY  USING BTREE (`id`)   
  4. ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;  

 

 

細(xì)節(jié)1.使用@Formula 你的注解必須是在屬性上,如果有一個(gè)注解在方法上,那么@Formula將失效。這個(gè)我是做過實(shí)驗(yàn)的,比如把以上的java文件改為:

Java代碼 復(fù)制代碼
  1. package aa;   
  2.   
  3. import static javax.persistence.GenerationType.IDENTITY;   
  4.   
  5. import javax.persistence.Entity;   
  6. import javax.persistence.GeneratedValue;   
  7. import javax.persistence.Id;   
  8. import javax.persistence.Table;   
  9.   
  10. import org.hibernate.annotations.Formula;   
  11.   
  12. /**  
  13.  * 注解必須是在屬性上的,如果有任何一個(gè)注解在方法上,那么@Formula將失效  
  14.  * @author 昆明蜂鳥軟件  
  15.  * @version 0.1.0 2008-7-15 下午06:09:38  
  16.  */  
  17. @Entity  
  18. @Table(name = "user", catalog = "test")   
  19. public class User {   
  20.        
  21.     private int id;   
  22.   
  23.     @Formula("(select COUNT(*) from user)")   
  24.     private int count;   
  25.        
  26.     @Id  
  27.     @GeneratedValue(strategy = IDENTITY)   
  28.     public int getId() {   
  29.         return id;   
  30.     }   
  31.   
  32.     public void setId(int id) {   
  33.         this.id = id;   
  34.     }   
  35.   
  36.     public int getCount() {   
  37.         return count;   
  38.     }   
  39.   
  40.     public void setCount(int count) {   
  41.         this.count = count;   
  42.     }   
  43. }  

 

 這樣@Formula就不可以運(yùn)行!??!我前邊就是被Hibernate官方的文檔給搞暈了。

細(xì)節(jié)2.既然@Formula 是一個(gè)虛擬列,那么數(shù)據(jù)庫中不需要建這一列,同樣可以,如果有個(gè)列存在,hibernate也會(huì)將   其忽略。以上示例中的user就沒有count列。

細(xì)節(jié)3.sql語句必須寫在()中,這個(gè)以前也有人說過。

細(xì)節(jié)4.如果有where子查詢,那么表需要用別名,比如 select COUNT(*) from user where id=1 是錯(cuò)的

而select COUNT(*) from user u where u.id=1是正確的

細(xì)節(jié)5.只要是你在數(shù)據(jù)庫的sql控制臺(tái)執(zhí)行過的語句,并且使用了表別名,那么@Formula都應(yīng)該是支持的。

 

 確實(shí)@Formula是一個(gè)很常用且好用的東西!希望這篇文章能幫助你~~

 



黑豆熊 2008-11-26 11:07 發(fā)表評(píng)論
]]>
JS的編碼與解碼http://www.tkk7.com/youling/archive/2008/11/17/240967.html黑豆熊黑豆熊Mon, 17 Nov 2008 07:07:00 GMThttp://www.tkk7.com/youling/archive/2008/11/17/240967.htmlhttp://www.tkk7.com/youling/comments/240967.htmlhttp://www.tkk7.com/youling/archive/2008/11/17/240967.html#Feedback0http://www.tkk7.com/youling/comments/commentRss/240967.htmlhttp://www.tkk7.com/youling/services/trackbacks/240967.html        今天遇到這樣一個(gè)問題,通過JS傳遞的URL中包含了一個(gè)中文詞語,傳遞過去的值就變成了亂碼,后來上網(wǎng)上一查,才發(fā)現(xiàn),原來JS傳遞URL參數(shù)是采用UTF-8,而我們平常的地址欄傳遞編碼格式是“ISO-8859-1”,因此在通過JS傳遞參數(shù)的時(shí)候,必須先編碼,然后在使用的時(shí)候進(jìn)行解碼,針對(duì)此情況,我們可以寫下面的一個(gè)方法,對(duì)它方便的進(jìn)行轉(zhuǎn)換:
public static String decodeParamString(String paramValue)
 {
  if(paramValue==null)
   return null;
  
  try
  {
   String tmp0=URLEncoder.encode(paramValue, "ISO-8859-1");
   
   String result=URLDecoder.decode(tmp0, "utf-8");
   
   if(log.isInfoEnabled())
    log.info("原始字符串:"+tmp0+",解碼結(jié)果:"+result);
   
   return result;
  }
  catch(Exception e)
  {
   log.error("解碼失敗:", e);
   return null;
  }
 }
不過在傳遞URL的時(shí)候,需要先對(duì)URL進(jìn)行處理url+=encodeURI(url);
然后在接收參數(shù)的時(shí)候進(jìn)行轉(zhuǎn)化,呵呵,通過實(shí)際測(cè)試,效果還是不錯(cuò)的!

黑豆熊 2008-11-17 15:07 發(fā)表評(píng)論
]]>
select中實(shí)現(xiàn)readonly的方法http://www.tkk7.com/youling/archive/2008/11/14/240472.html黑豆熊黑豆熊Fri, 14 Nov 2008 02:55:00 GMThttp://www.tkk7.com/youling/archive/2008/11/14/240472.htmlhttp://www.tkk7.com/youling/comments/240472.htmlhttp://www.tkk7.com/youling/archive/2008/11/14/240472.html#Feedback3http://www.tkk7.com/youling/comments/commentRss/240472.htmlhttp://www.tkk7.com/youling/services/trackbacks/240472.html          上網(wǎng)搜索了一下,發(fā)現(xiàn)一種不錯(cuò)的方法,貢獻(xiàn)給大家,代碼如下:
    <select name="projInveSour.phaseType" <c:if test='${method eq "update"}'> onbeforeactivate="return false" onfocus="this.blur()" onmouseover="this.setCapture()" onmouseout="this.releaseCapture()" </c:if>>
        <option value="">全部</option>
        <option value="立項(xiàng)" <c:if test='${projInveSourForm.projInveSour.phaseType eq "立項(xiàng)"}'>selected</c:if>>立項(xiàng)</option>
        <option value="初設(shè)" <c:if test='${projInveSourForm.projInveSour.phaseType eq "初設(shè)"}'>selected</c:if>>初設(shè)</option>
       </select>
紅色部分為關(guān)鍵代碼,大家參考一下,呵呵

黑豆熊 2008-11-14 10:55 發(fā)表評(píng)論
]]>
JAVA中的集合類http://www.tkk7.com/youling/archive/2008/11/09/239507.html黑豆熊黑豆熊Sun, 09 Nov 2008 03:24:00 GMThttp://www.tkk7.com/youling/archive/2008/11/09/239507.htmlhttp://www.tkk7.com/youling/comments/239507.htmlhttp://www.tkk7.com/youling/archive/2008/11/09/239507.html#Feedback0http://www.tkk7.com/youling/comments/commentRss/239507.htmlhttp://www.tkk7.com/youling/services/trackbacks/239507.html理解集合類

集合類存放于java.util包中。
集合類存放的都是對(duì)象的引用,而非對(duì)象本身,出于表達(dá)上的便利,我們稱集合中的對(duì)象就是指集合中對(duì)象的引用(reference)
集合類型主要有3種:set(集)、list(列表)和map(映射)。

(1)
集(set)是最簡(jiǎn)單的一種集合,它的對(duì)象不按特定方式排序,只是簡(jiǎn)單的把對(duì)象加入集合中,就像往口袋里放東西。
對(duì)集中成員的訪問和操作是通過集中對(duì)象的引用進(jìn)行的,所以集中不能有重復(fù)對(duì)象。
集也有多種變體,可以實(shí)現(xiàn)排序等功能,如TreeSet,它把對(duì)象添加到集中的操作將變?yōu)榘凑漳撤N比較規(guī)則將其插入到有序的對(duì)象序列中。它實(shí)現(xiàn)的是SortedSet接口,也就是加入了對(duì)象比較的方法。通過對(duì)集中的對(duì)象迭代,我們可以得到一個(gè)升序的對(duì)象集合。

(2)列表
列表的主要特征是其對(duì)象以線性方式存儲(chǔ),沒有特定順序,只有一個(gè)開頭和一個(gè)結(jié)尾,當(dāng)然,它與根本沒有順序的集是不同的。
列表在數(shù)據(jù)結(jié)構(gòu)中分別表現(xiàn)為:數(shù)組和向量、鏈表、堆棧、隊(duì)列。
關(guān)于實(shí)現(xiàn)列表的集合類,是我們?nèi)粘9ぷ髦薪?jīng)常用到的,將在后邊的筆記詳細(xì)介紹。

(3)映射
映射與集或列表有明顯區(qū)別,映射中每個(gè)項(xiàng)都是成對(duì)的。映射中存儲(chǔ)的每個(gè)對(duì)象都有一個(gè)相關(guān)的關(guān)鍵字(Key)對(duì)象,關(guān)鍵字決定了對(duì)象在映射中的存儲(chǔ)位置,檢索對(duì)象時(shí)必須提供相應(yīng)的關(guān)鍵字,就像在字典中查單詞一樣。關(guān)鍵字應(yīng)該是唯一的。
關(guān)鍵字本身并不能決定對(duì)象的存儲(chǔ)位置,它需要對(duì)過一種散列(hashing)技術(shù)來處理,產(chǎn)生一個(gè)被稱作散列碼(hash code)的整數(shù)值,散列碼通常用作一個(gè)偏置量,該偏置量是相對(duì)于分配給映射的內(nèi)存區(qū)域起始位置的,由此確定關(guān)鍵字/對(duì)象對(duì)的存儲(chǔ)位置。理想情況下,散列處理應(yīng)該產(chǎn)生給定范圍內(nèi)均勻分布的值,而且每個(gè)關(guān)鍵字應(yīng)得到不同的散列碼。

  • 集合類簡(jiǎn)介

java.util中共有13個(gè)類可用于管理集合對(duì)象,它們支持集、列表或映射等集合,以下是這些類的簡(jiǎn)單介紹

集:
HashSet
使用HashMap的一個(gè)集的實(shí)現(xiàn)。雖然集定義成無序,但必須存在某種方法能相當(dāng)高效地找到一個(gè)對(duì)象。使用一個(gè)HashMap對(duì)象實(shí)現(xiàn)集的存儲(chǔ)和檢索操作是在固定時(shí)間內(nèi)實(shí)現(xiàn)的.
TreeSet
在集中以升序?qū)?duì)象排序的集的實(shí)現(xiàn)。這意味著從一個(gè)TreeSet對(duì)象獲得第一個(gè)迭代器將按升序提供對(duì)象。TreeSet類使用了一個(gè)TreeMap.
列表:
Vector
實(shí)現(xiàn)一個(gè)類似數(shù)組一樣的表,自動(dòng)增加容量來容納你所需的元素。使用下標(biāo)存儲(chǔ)和檢索對(duì)象就象在一個(gè)標(biāo)準(zhǔn)的數(shù)組中一樣。你也可以用一個(gè)迭代器從一個(gè)Vector中檢索對(duì)象。Vector是唯一的同步容器類??當(dāng)兩個(gè)或多個(gè)線程同時(shí)訪問時(shí)也是性能良好的。
Stsck:
這個(gè)類從Vector派生而來,并且增加了方法實(shí)現(xiàn)棧??一種后進(jìn)先出的存儲(chǔ)結(jié)構(gòu)。
LinkedList:
實(shí)現(xiàn)一個(gè)鏈表。由這個(gè)類定義的鏈表也可以像?;蜿?duì)列一樣被使用。
ArrayList:
實(shí)現(xiàn)一個(gè)數(shù)組,它的規(guī)??勺儾⑶夷芟矜湵硪粯颖辉L問。它提供的功能類似Vector類但不同步。


映射:
HashTable
實(shí)現(xiàn)一個(gè)映象,所有的鍵必須非空。為了能高效的工作,定義鍵的類必須實(shí)現(xiàn)hashcode()方法和equal()方法。這個(gè)類是前面java實(shí)現(xiàn)的一個(gè)繼承,并且通常能在實(shí)現(xiàn)映象的其他類中更好的使用。
HashMap
實(shí)現(xiàn)一個(gè)映象,允許存儲(chǔ)空對(duì)象,而且允許鍵是空(由于鍵必須是唯一的,當(dāng)然只能有一個(gè))。
WeakHashMap
實(shí)現(xiàn)這樣一個(gè)映象:通常如果一個(gè)鍵對(duì)一個(gè)對(duì)象而言不再被引用,鍵/對(duì)象對(duì)將被舍棄。這與HashMap形成對(duì)照,映象中的鍵維持鍵/對(duì)象對(duì)的生命周期,盡管使用映象的程序不再有對(duì)鍵的引用,并且因此不能檢索對(duì)象。
TreeMap
實(shí)現(xiàn)這樣一個(gè)映象,對(duì)象是按鍵升序排列的。

SetList都是由公共接口Collection擴(kuò)展而來,所以它們都可以使用一個(gè)類型為Collection的變量來引用。這就意味著任何列表或集構(gòu)成的集合都可以用這種方式引用,只有映射類除外(但也不是完全排除在外,因?yàn)榭梢詮挠成浍@得一個(gè)列表。)所以說,把一個(gè)列表或集傳遞給方法的標(biāo)準(zhǔn)途徑是使用Collection類型的參數(shù)。

  • Vector 還是ArrayList,哪一個(gè)更好,為什么?

要回答這個(gè)問題不能一概而論,有時(shí)候使用Vector比較好;有時(shí)是ArrayList,有時(shí)候這兩個(gè)都不是最好的選擇。你別指望能夠獲得一個(gè)簡(jiǎn)單肯定答案,因?yàn)檫@要看你用它們干什么。下面有4個(gè)要考慮的因素:

(1)API

(2)同步處理

(3)數(shù)據(jù)增長(zhǎng)性

(4)使用模式

下面針對(duì)這4個(gè)方面進(jìn)行一一探討

API
在由Ken Arnold等編著的《Java Programming Language(Addison-Wesley, June 2000)一書中有這樣的描述,Vector類似于ArrayList.。所有從API的角度來看這兩個(gè)類非常相似。但他們之間也還是有一些主要的區(qū)別的。

同步性

Vector是同步的。這個(gè)類中的一些方法保證了Vector中的對(duì)象是線程安全的。而ArrayList則是異步的,因此ArrayList中的對(duì)象并不是線程安全的。因?yàn)橥降囊髸?huì)影響執(zhí)行的效率,所以如果你不需要線程安全的集合那么使用ArrayList是一個(gè)很好的選擇,這樣可以避免由于同步帶來的不必要的性能開銷。

數(shù)據(jù)增長(zhǎng)

從內(nèi)部實(shí)現(xiàn)機(jī)制來講ArrayListVector都是使用數(shù)組(Array)來控制集合中的對(duì)象。當(dāng)你向這兩種類型中增加元素的時(shí)候,如果元素的數(shù)目超出了內(nèi)部數(shù)組目前的長(zhǎng)度它們都需要擴(kuò)展內(nèi)部數(shù)組的長(zhǎng)度,Vector缺省情況下自動(dòng)增長(zhǎng)原來一倍的數(shù)組長(zhǎng)度,ArrayList是原來的50%,所以最后你獲得的這個(gè)集合所占的空間總是比你實(shí)際需要的要大。所以如果你要在集合中保存大量的數(shù)據(jù)那么使用Vector有一些優(yōu)勢(shì),因?yàn)槟憧梢酝ㄟ^設(shè)置集合的初始化大小來避免不必要的資源開銷。

使用模式

ArrayListVector中,從一個(gè)指定的位置(通過索引)查找數(shù)據(jù)或是在集合的末尾增加、移除一個(gè)元素所花費(fèi)的時(shí)間是一樣的,這個(gè)時(shí)間我們用O(1)表示。但是,如果在集合的其他位置增加或移除元素那么花費(fèi)的時(shí)間會(huì)呈線形增長(zhǎng):O(n-i),其中n代表集合中元素的個(gè)數(shù),i代表元素增加或移除元素的索引位置。為什么會(huì)這樣呢?以為在進(jìn)行上述操作的時(shí)候集合中第i和第i個(gè)元素之后的所有元素都要執(zhí)行位移的操作。這一切意味著什么呢?

這意味著,你只是查找特定位置的元素或只在集合的末端增加、移除元素,那么使用VectorArrayList都可以。如果是其他操作,你最好選擇其他的集合操作類。比如,LinkList集合類在增加或移除集合中任何位置的元素所花費(fèi)的時(shí)間都是一樣的—O(1),但它在索引一個(gè)元素的使用缺比較慢-O(i),其中i是索引的位置.使用ArrayList也很容易,因?yàn)槟憧梢院?jiǎn)單的使用索引來代替創(chuàng)建iterator對(duì)象的操作。LinkList也會(huì)為每個(gè)插入的元素創(chuàng)建對(duì)象,所有你要明白它也會(huì)帶來額外的開銷。

最后,在《Practical Java》一書中Peter Haggar建議使用一個(gè)簡(jiǎn)單的數(shù)組(Array)來代替VectorArrayList。尤其是對(duì)于執(zhí)行效率要求高的程序更應(yīng)如此。因?yàn)槭褂脭?shù)組(Array)避免了同步、額外的方法調(diào)用和不必要的重新分配空間的操作。

 



黑豆熊 2008-11-09 11:24 發(fā)表評(píng)論
]]>
主站蜘蛛池模板: 最新猫咪www免费人成| 国产精品入口麻豆免费观看| 无码人妻久久一区二区三区免费 | 久久丫精品国产亚洲av不卡| 亚洲国产精品张柏芝在线观看| 亚洲色无码专区一区| 全黄A免费一级毛片| 国产亚洲自拍一区| 精品国产_亚洲人成在线高清| 67pao强力打造67194在线午夜亚洲| 亚洲人成网站在线观看青青| 国产亚洲无线码一区二区| 亚洲午夜一区二区电影院| 国产成人久久精品亚洲小说| 在线观看免费播放av片| 日本精品人妻无码免费大全| 成人亚洲综合天堂| 亚洲天堂男人天堂| 91亚洲精品第一综合不卡播放| 亚洲中文精品久久久久久不卡| 一级毛片aaaaaa视频免费看| 1000部夫妻午夜免费 | 久久福利资源网站免费看| 免费一级毛片一级毛片aa| 日韩免费无砖专区2020狼| 国产麻豆剧传媒精品国产免费 | 亚洲乱码中文字幕综合234| 久久久久亚洲精品日久生情| 色五月五月丁香亚洲综合网| 九九美女网站免费| 国产免费怕怕免费视频观看| 亚洲国产精品人久久| 国产亚洲男人的天堂在线观看| 99精品免费观看| 国产高清不卡免费在线| 亚洲综合久久夜AV | 亚洲综合色婷婷在线观看| 免费视频成人手机在线观看网址| 日韩免费福利视频| 亚洲成a人片在线观看中文!!!| 亚洲日韩在线观看免费视频|