JAVA架構師學習方向
posted @ 2018-10-26 14:12 JavaSuns 閱讀(176) | 評論 (0) | 編輯 收藏
SunsplHello,everyone,i am sun.
天道酬勤,笨鳥先飛.
隨筆 - 47, 文章 - 0, 評論 - 24, 引用 - 0
|
POI操作package cc.dynasoft.struts.action; posted @ 2009-06-13 19:52 JavaSuns 閱讀(602) | 評論 (0) | 編輯 收藏 linux創建文件夾命令
mkdir /home/u1 創建文件夾/home/u1
chown oracle /home/u1 表示改變目錄所有者為oracle賬戶; chgrp dba /home/u1 改變/home/u1目錄為dba所有; chmod 755 /home/u1 表示oracle賬戶對/home/u1目錄有755權限; rmdir /home/u1 表示刪除/home/u1目錄 hostname可以查看linux的計算機名; whoami可以查看當前用戶; pwd顯示當前路徑; df查看系統的硬件信息 ls -lrt l表示顯示詳細列表,-t表示按時間排序,-r反向排序 cat orcl_ora_3436.trc|grep bucket 以下查看相關文件內容: more /etc/oratab cat /etc/passwd cat /etc/group posted @ 2008-07-28 09:01 JavaSuns 閱讀(38642) | 評論 (4) | 編輯 收藏 Linux中復制文件或目錄的命令(為了響應新工作,要學習一下LINUX)copy命令 該命令的功能是將給出的文件或目錄拷貝到另一文件或目錄中,同MSDOS下的copy命令一樣,功能十分強大。 語法: cp [選項] 源文件或目錄 目標文件或目錄 說明:該命令把指定的源文件復制到目標文件或把多個源文件復制到目標目錄中。 該命令的各選項含義如下: - a 該選項通常在拷貝目錄時使用。它保留鏈接、文件屬性,并遞歸地拷貝目錄,其作用等于dpR選項的組合。 - d 拷貝時保留鏈接。 - f 刪除已經存在的目標文件而不提示。 - i 和f選項相反,在覆蓋目標文件之前將給出提示要求用戶確認。回答y時目標文件將被覆蓋,是交互式拷貝。 - p 此時cp除復制源文件的內容外,還將把其修改時間和訪問權限也復制到新文件中。 - r 若給出的源文件是一目錄文件,此時cp將遞歸復制該目錄下所有的子目錄和文件。此時目標文件必須為一個目錄名。 - l 不作拷貝,只是鏈接文件。 需要說明的是,為防止用戶在不經意的情況下用cp命令破壞另一個文件,如用戶指定的目標文件名已存在,用cp命令拷貝文件后,這個文件就會被新源文件覆蓋,因此,建議用戶在使用cp命令拷貝文件時,最好使用i選項。 posted @ 2008-07-28 08:59 JavaSuns 閱讀(2316) | 評論 (0) | 編輯 收藏 解析oracle的rownum(學習)
對于rownum來說它是oracle系統順序分配為從查詢返回的行的編號,返回的第一行分配的是1,第二行是2,依此類推,這個偽字段可以用于限制查詢返回的總行數,而且rownum不能以任何表的名稱作為前綴。
舉例說明: 例如表:student(學生)表,表結構為: ID char(6) --學號 name VARCHAR2(10) --姓名 create table student (ID char(6), name VARCHAR2(100)); insert into sale values('200001',‘張一’); insert into sale values('200002',‘王二’); insert into sale values('200003',‘李三’); insert into sale values('200004',‘趙四’); commit; (1) rownum 對于等于某值的查詢條件 如 果希望找到學生表中第一條學生的信息,可以使用rownum=1作為條件。但是想找到學生表中第二條學生的信息,使用rownum=2結果查不到數據。因 為rownum都是從1開始,但是1以上的自然數在rownum做等于判斷是時認為都是false條件,所以無法查到rownum = n(n>1的自然數)。 SQL> select rownum,id,name from student where rownum=1;(可以用在限制返回記錄條數的地方,保證不出錯,如:隱式游標) SQL> select rownum,id,name from student where rownum=1; ROWNUM ID NAME ---------- ------ --------------------------------------------------- 1 200001 張一 SQL> select rownum,id,name from student where rownum =2; ROWNUM ID NAME ---------- ------ --------------------------------------------------- (2)rownum對于大于某值的查詢條件 如果想找到從第二行記錄以后的記錄,當使用rownum>2是查不出記錄的,原因是由于rownum是一個總是從1開始的偽列,Oracle 認為rownum> n(n>1的自然數)這種條件依舊不成立,所以查不到記錄 SQL> select rownum,id,name from student where rownum >2; ROWNUM ID NAME ---------- ------ --------------------------------------------------- 那如何才能找到第二行以后的記錄呀。可以使用以下的子查詢方法來解決。注意子查詢中的rownum必須要有別名,否則還是不會查出記錄來,這是因為rownum不是某個表的列,如果不起別名的話,無法知道rownum是子查詢的列還是主查詢的列。 SQL>select * from(select rownum no ,id,name from student) where no>2; NO ID NAME ---------- ------ --------------------------------------------------- 3 200003 李三 4 200004 趙四 SQL> select * from(select rownum,id,name from student)where rownum>2; ROWNUM ID NAME ---------- ------ --------------------------------------------------- (3)rownum對于小于某值的查詢條件 如果想找到第三條記錄以前的記錄,當使用rownum<3是能得到兩條記錄的。顯然rownum對于rownum<n((n>1的自然數)的條件認為是成立的,所以可以找到記錄。 SQL> select rownum,id,name from student where rownum <3; ROWNUM ID NAME ---------- ------ --------------------------------------------------- 1 200001 張一 2 200002 王二 綜 上幾種情況,可能有時候需要查詢rownum在某區間的數據,那怎么辦呀從上可以看出rownum對小于某值的查詢條件是人為true的,rownum對 于大于某值的查詢條件直接認為是false的,但是可以間接的讓它轉為認為是true的。那就必須使用子查詢。例如要查詢rownum在第二行到第三行之 間的數據,包括第二行和第三行數據,那么我們只能寫以下語句,先讓它返回小于等于三的記錄行,然后在主查詢中判斷新的rownum的別名列大于等于二的記 錄行。但是這樣的操作會在大數據集中影響速度。 SQL> select * from (select rownum no,id,name from student where rownum<=3 ) where no >=2; NO ID NAME ---------- ------ --------------------------------------------------- 2 200002 王二 3 200003 李三 (4)rownum和排序 Oracle中的rownum的是在取數據的時候產生的序號,所以想對指定排序的數據去指定的rowmun行數據就必須注意了。 SQL> select rownum ,id,name from student order by name; ROWNUM ID NAME ---------- ------ --------------------------------------------------- 3 200003 李三 2 200002 王二 1 200001 張一 4 200004 趙四 可以看出,rownum并不是按照name列來生成的序號。系統是按照記錄插入時的順序給記錄排的號,rowid也是順序分配的。為了解決這個問題,必須使用子查詢 SQL> select rownum ,id,name from (select * from student order by name); ROWNUM ID NAME ---------- ------ --------------------------------------------------- 1 200003 李三 2 200002 王二 3 200001 張一 4 200004 趙四 這樣就成了按name排序,并且用rownum標出正確序號(有小到大) posted @ 2008-06-26 10:23 JavaSuns 閱讀(426) | 評論 (0) | 編輯 收藏 Java里的list,set,map操作方法(練習)
//ArrayList
{ ArrayList arraylist=new ArrayList(); arraylist.add(0,"end");//指定索引加入值 //需注意的是,如果現有2個值,我加入索引為5的那么就會出現異常 for(int i=0;i<2;i++){ arraylist.add(i,String.valueOf(i)); } System.out.println("ArrayList:"); for(int i=0;i<arraylist.size();i++){ System.out.print(arraylist.get(i)+";"); } arraylist.add("0");//直接加入值到ArrayList的最后 arraylist.add("0"); System.out.print("\nArrayList\'s lastIndexOf(\"0\") is "+arraylist.lastIndexOf("0")); } //Arrays { String []array=new String[]{"a","b","c"}; List list=Arrays.asList(array); System.out.println("\nArrays:"); for(int i=0;i<list.size();i++){ System.out.print(list.get(i)+";"); } System.out.print("\nArrays\'s length is "+array.length);//打印數組的長度 } //Collections { String []array=new String[]{"a","b","c"}; List list=Arrays.asList(array); Collections.fill(list,"Fill");//用Fill填充全部元素 System.out.println("\nCollections:"); for(int i=0;i<list.size();i++){ System.out.print(list.get(i)+";"); } array=new String[]{"1","2","3"}; List list2=Arrays.asList(array); Collections.copy(list,list2);//拷貝list2的數據進list System.out.println("\n"+list); Collections.swap(list,2,1);//調換索引為1和2的元素的位置 System.out.println(list); } //EventObject { String s="hello"; String s2=s; EventObject eventobject=new EventObject(s);//一個準容器類型,確切的歸類它不是容器 System.out.println("EventObject:"); System.out.println(eventobject.getSource()); System.out.println(eventobject.equals(s2)); } //HashMap { HashMap hashmap=new HashMap();//一個速度最快的容器 hashmap.put("0","c"); hashmap.put("1","a"); hashmap.put("2","b"); hashmap.put("3","a"); System.out.println("HashMap:"); System.out.println(hashmap);//該容器有其內部的排序方式 Set set=hashmap.keySet();//獲取全部鍵 Iterator iterator=set.iterator(); while(iterator.hasNext()){ System.out.print(hashmap.get(iterator.next())+";"); } } //HashSet { HashSet hashset=new HashSet();//一個絕對不能重復的類型 hashset.add("c"); hashset.add("b"); hashset.add("a"); hashset.add("a"); hashset.add("b"); System.out.println("\nHashSet:"); System.out.println(hashset); Iterator iterator=hashset.iterator();//取出元素 while(iterator.hasNext()){ System.out.print(iterator.next()+";"); } } //Hashtable { Hashtable hashtable=new Hashtable();//一個完全可以由其他容器替換的老容器類型 hashtable.put("0","c"); hashtable.put("1","a"); hashtable.put("3","c"); hashtable.put("2","b"); System.out.println("\nHashtable:"); Enumeration enumeration=hashtable.elements();//獲取元素,Enumeration已經不是主流,Iterator是它的下一代替代品 while(enumeration.hasMoreElements()){ System.out.print(enumeration.nextElement()+";"); } } //IdentityHashMap { IdentityHashMap identityhashmap=new IdentityHashMap(); identityhashmap.put("0","c"); identityhashmap.put("1","a"); identityhashmap.put("3","b"); identityhashmap.put("2","a"); System.out.println("\nIdentityHashMap:"); System.out.println(identityhashmap); System.out.println(identityhashmap.containsKey("3"));//是否包含這個鍵 System.out.println(identityhashmap.containsValue("a"));//是否包含值 Set set=identityhashmap.entrySet();//傳為Set類型 System.out.println(set); set=identityhashmap.keySet();//全部鍵 System.out.println(set); } //LinkedHashMap { LinkedHashMap linkedhashmap=new LinkedHashMap(); linkedhashmap.put("0","b"); linkedhashmap.put("2","a"); linkedhashmap.put("1","c"); linkedhashmap.put("3","b"); System.out.println("LinkedHashMap:"); System.out.println(linkedhashmap); System.out.println(linkedhashmap.containsKey("2"));//是否包含這個鍵 System.out.println(linkedhashmap.containsValue("c"));//是否包含值 Set set=linkedhashmap.keySet(); Iterator iterator=set.iterator(); while(iterator.hasNext()){ System.out.print(linkedhashmap.get(iterator.next())+";"); } } //LinkedHashSet { LinkedHashSet linkedhashset=new LinkedHashSet();//它包含了幾種Set的屬性但卻沒有自己的特色 linkedhashset.add("c"); linkedhashset.add("a"); linkedhashset.add("a"); linkedhashset.add("b"); System.out.println("\nLinkedHashSet:"); System.out.println(linkedhashset); System.out.println(linkedhashset.contains("a"));//是否包含對象 Iterator iterator=linkedhashset.iterator(); while(iterator.hasNext()){ System.out.print(iterator.next()+";"); } } //LinkedList { LinkedList linkedlist=new LinkedList();//自由使用是它的特色 linkedlist.add("a"); linkedlist.add(1,"c"); linkedlist.addLast("b"); linkedlist.addFirst("d"); System.out.println("\nLinkedList:"); System.out.println(linkedlist); //linkedlist.clear();//該方法清空容器 //linkedlist.remove(0);//刪除索引為0的元素 //linkedlist.remove("d");//刪除值為d的元素 //linkedlist.removeFirst();//刪除第一個元素 //linkedlist.removeLast();//刪除最后一個元素 for(int i=0;i<linkedlist.size();i++){ System.out.print(linkedlist.get(i)+";"); } } //Stack { Stack stack=new Stack();//堆棧 stack.add("b"); stack.add(0,"c"); stack.push("d"); stack.add("e"); stack.push("a"); Enumeration enumeration=stack.elements(); System.out.println("\nStack:"); while(enumeration.hasMoreElements()){ System.out.print(enumeration.nextElement()+";"); } //后進先出 System.out.println("\n"+stack.peek()); System.out.println(stack.pop()); System.out.println(stack.contains("d")+";"+stack.contains("a"));//是否包含該元素,有趣的事情發生了 System.out.println(stack.search("c"));//非常有用的屬性,檢索,但是由后向前的排列 } //TreeMap { TreeMap treemap=new TreeMap(); treemap.put("0","d"); treemap.put("2","a"); treemap.put("1","b"); treemap.put("3","c"); System.out.println("\nTreeMap:");//可以對鍵排序 System.out.println(treemap); System.out.println(treemap.firstKey());//返回第一個鍵 Set set=treemap.keySet(); Iterator iterator=set.iterator(); while(iterator.hasNext()){ System.out.print(treemap.get(iterator.next())+";"); } } //TreeSet { TreeSet treeset=new TreeSet();//自動排序內容 treeset.add("b"); treeset.add("a"); treeset.add("c"); treeset.add("d"); System.out.println("\nTreeSet:"); System.out.println(treeset); System.out.println(treeset.first());//返回第一個元素 Iterator iterator=treeset.iterator(); while(iterator.hasNext()){ System.out.print(iterator.next()+";"); } } //Vector { Vector vector=new Vector(); vector.add(0,"b"); vector.add("a"); vector.addElement("d"); vector.add("c"); System.out.println("\nVector:"); System.out.println(vector); vector.set(2,"h");//替換掉指定索引的元素 System.out.println(vector); Object []str=vector.toArray(); for(int i=0;i<str.length;i++){ System.out.print(str[i]+";"); } vector.setSize(2);//重新設置大小為2 System.out.println("\n"+vector); } //WeakHashMap { WeakHashMap weakhashmap=new WeakHashMap(); weakhashmap.put("1","b"); weakhashmap.put("2","c"); weakhashmap.put("0","d"); weakhashmap.put("3","a"); System.out.println("\nWeakHashMap:"); System.out.println(weakhashmap); System.out.println(weakhashmap.containsKey("3"));//是否包含鍵 System.out.println(weakhashmap.containsValue("d"));//是否包含值 Set set=weakhashmap.entrySet(); Iterator iterator=set.iterator(); while(iterator.hasNext()){ System.out.print(iterator.next()+";"); } //weakhashmap.remove("2");//刪除該鍵對應的值 //weakhashmap.get("1");//獲取指定鍵的值 } } posted @ 2008-06-25 17:33 JavaSuns 閱讀(3875) | 評論 (0) | 編輯 收藏 map,set,list,等JAVA中集合解析(了解)
在JAVA的util包中有兩個所有集合的父接口Collection和Map,它們的父子關系:
java.util +Queue 接口 +Set 接口 +Map 接口 以下對眾多接口和類的簡單說明:首先不能不先說一下數組(Array) Java所有“存儲及隨機訪問一連串對象”的做法,array是最有效率的一種。 1、 2、Java中有一個Arrays類,專門用來操作array。
若撰寫程序時不知道究竟需要多少對象,需要在空間不足時自動擴增容量,則需要使用容器類庫,array不適用。 1、Collection 和 Map 的區別 容器內每個為之所存儲的元素個數不同。 2、Java2容器類類庫的用途是“保存對象”,它分為兩類,各自旗下的子類關系 Collection Map----一組成對的“鍵值對”對象,即其元素是成對的對象,最典型的應用就是數據字典,并且還有其它廣泛的應用。另外,Map可以返回其所有鍵組成的Set和其所有值組成的Collection,或其鍵值對組成的Set,并且還可以像數組一樣擴展多維Map,只要讓Map中鍵值對的每個“值”是一個Map即可。 3、其他特征 * List,Set,Map將持有對象一律視為Object型別。
Collections是針對集合類的一個幫助類。提供了一系列靜態方法實現對各種集合的搜索、排序、線程完全化等操作。 四、如何選擇? 1、容器類和Array的區別、擇取 2、 結論:最常用的是ArrayList,HashSet,HashMap,Array。而且,我們也會發現一個規律,用TreeXXX都是排序的。
1、Collection沒有get()方法來取得某個元素。只能通過iterator()遍歷元素。 5、Map用 put(k,v) / get(k),還可以使用containsKey()/containsValue()來檢查其中是否含有某個key/value。 6、Map中元素,可以將key序列、value序列單獨抽取出來。 為什么一個生成Set,一個生成Collection?那是因為,key總是獨一無二的,value允許重復。 posted @ 2008-06-25 17:32 JavaSuns 閱讀(11779) | 評論 (1) | 編輯 收藏 |
|