小知識、小技巧:
1、轉(zhuǎn)換字符編碼:
在Java\jdk1.6.0_13\bin>目錄下有native2ascii.exe這個文件,將中文字符轉(zhuǎn)換成ascii碼 C:\Program Files\Java\jdk1.6.0_13\bin> native2ascii 2.txt 3.txt [tarena@localhost ~]$ native2ascii 2.txt
\u534e\u751f\u6d77 \u6768\u5fb7
[tarena@localhost ~]$ native2ascii 2.txt 3.txt
表示:將2.txt的內(nèi)容編譯后保存到3.txt中 2、數(shù)據(jù)庫編碼方式的問題:
drop database if existes netctoss; create database if not existes netctoss default charactor set utf-8; drop database if existes test;
create database if not existes test default charactor set utf-8; 查看mysql下的所有服務(wù)器編碼:show variables;
我們可以看到| character_set_server | latin1 時, 我們插入的中文就會
變成亂碼,為了解決這個問題,我們將colin 文件放到mysql 的bin路徑下,改變colin的權(quán)限,然后打開colin,運行colin | character_set_server | latin1 就會變成 | character_set_server | utf8 一、Oracle知識點: 1、Oracle下 查看所有的表:
select table_name from all_tables; Mysql下: show tables; A)刪除表和更改表名:
刪除:drop table table_name; 更改:rename old_table to new_table; 或者: alter table guides_student rename to g_student; B) 截短表 truncate table table_name; truncate和drop相似,但它不是刪除整個數(shù)據(jù)表,所以索引、完整性約束、觸發(fā)器、權(quán)限等都不會被刪除。 C) 增、刪、改表結(jié)構(gòu): alter table table_name [add/drop column/modify] (field_name type); alter table hold add(merchid varchar2(16)); alter table hold drop column merchid; alter table hold modify(merchid merchcode); D)更新表中的數(shù)據(jù): 更新: update 表名 set 字段名=需要的值 where 字段=條件 update student set salary=30000 where id=2010; 刪:delete from student where id=1111; 增:insert into student values(0901,'zhangsan','sd0901','zhangsan@163.com',4000,'16-09-2009'); 2、改變表里面字段的取值范圍:
alter table guides_student modify(name VARCHAR2(20)); insert into guides_student(id,no,name,email) values(1001,'sd0102','zhangsan','zhangsan@sina.com'); insert into guides_student values(1002,'sd0102','黃斌','zhangsan@sina.com',200.00); //這樣寫也可以 3、在表里添加域(字段):
增加:alter table custmast add (ssn_idtype NUMBER, ssn_origin VARCHAR(80), houstat NUMBER); 修改:alter table g_student modify NAME NUMBER(20); 刪除:alter table g_student drop column column_name; ×要注意的是在刪除列時關(guān)于該列的約束和完整性約束也同時刪除,注意關(guān)鍵字cascade constrains,如果刪除的列是多列約束的一部分
,那么這個約束條件相對其他列也同時刪除。 4、將Oracle表里的數(shù)據(jù)導(dǎo)到某個文件里面(導(dǎo)出表): (esp@XYKCCSUAT1)/esplinkprd/espfts/runtime/bin$ exp esp/esp tables=acctmast file=acctmast.dmp (esp@XYKCCSUAT1)/esplinkprd/espfts/runtime/bin$ exp esp/esp tables=g_student file=student.dmp 5、將文件里的數(shù)據(jù)導(dǎo)到表里邊去(導(dǎo)入表):
(esp@XYKCCSUAT1)/esplinkprd/espfts/runtime/bin$ imp esp/esp file=acctmast.dmp tables=acctmast full=n; imp esp/esp file=acttxn20100427.dmp tables=acttxn full=n imp esp/esp file=student.dmp tables=g_student ignore='Y' (esp@XYKCCSUAT1)/esplinkprd/espfts/runtime/bin$ imp esp/esp file=student.dmp tables=guides_studnet ignore='Y'; //ignore='Y' 表示忽略錯誤 imp esp/esp file=aaa.dmp tables=guides_studnet ignore='Y'; 當執(zhí)行這條語句時:必須先將數(shù)據(jù)庫里面的guides_student表刪除掉,否則將會報錯。 因為(imp esp/esp file=student.dmp tables=guides_student full=n; )這條語句會幫你自動建表和插入數(shù)據(jù) 2)把刪除數(shù)據(jù)庫表語句列出來: select 'drop table '||tname ||';' from tab where rownum<500; 3)把創(chuàng)建表語句列出來 select 'create table '||table_name||' as (select * from '||table_name||'@esp_51 where 1=2);' from user_tables; 4)顯示數(shù)據(jù)庫所有的表: select table_name from user_table; 6、怎么用一個sql實現(xiàn)刪除表中數(shù)據(jù),任意保留其中N條? delete x where rowid not in (select * from (select rowid from x order by dbms_random.random) where rownum<20); delete from guides_student where rownum<20; 7、從41服務(wù)器上將acctmast表的數(shù)據(jù)導(dǎo)入到40服務(wù)器上的acctmast上來,語句如下: create table acctmast as(select * from acctmast@esp_41); create table acctmast as(select * from acctmast@esp_41 where rownum<1000001); //將1000001條數(shù)據(jù) create table guides_student as(select * from guides_student@esp_40); 8、delete 刪除記錄命令語法:
delete from table_name where id=..; delete from table_name;(沒有where條件,就是刪除表中的所有記錄) truncate table 表名(刪除表中所有記錄時,釋放表空間); delete 刪除一張大表時空間不釋放,非常慢是因為占用了大量的系統(tǒng)資源,支持回退操作,空間還被這張表占用著。 9、查看表里是否含有索引:
/× select index_name from user_indexes where table_name='CARDMAST';×/ 查看唯一索引: select INDEX_NAME,UNIQUENESS,TABLE_NAME from user_indexes where table_name='CALINK'; 查看索引: col column_name format A20; set line 200; select column_name , index_name from user_ind_columns where table_name ='CUSTMAST' order by index_name; 創(chuàng)建索引:create index index_name on table_name(field1,field2); 刪除索引:drop index index_name; 10、將本地文件(D:\acctmast.dmp)放到服務(wù)器上: ftp> ftp 10.14.53.50 ftp> espccs ftp> ccssdb! ftp> cd /esplinkprd/ics/runtime/report ftp> bin ftp> put D:\acctmast.dmp 11、查看日志(根據(jù)本機電腦的IP換成16進制來顯示日志文件):
telnet 10.14.53.33 user: espccs password: ccssdb! (espccs@R70ccsdev)/home/espccs$ cd logfile (espccs@R70ccsdev)/esplinkprd/ics/runtime/logfile$ tail nohup.out //查看文件的后10行 12、查看是否有匹配ACT開頭的表:
select tname from tab where tname like 'ACT%'; 13、創(chuàng)建數(shù)據(jù)庫連接(database link):@ create database link esp_51 connect to esp identified by esp using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.14.53.51)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = sdbnccs) ) )'; 14、在49服務(wù)器上拷貝51上的表:
SQL> create table guides_student as (select * from guides_studetn@esp_51); 15、在51服務(wù)器上給52服務(wù)器上的表插入數(shù)據(jù):
SQL> insert into ctxndef@esp_52(select * from ctxndef where (cpnum = '100' or cpnum = '999') and chtype = 'IDR' and cur_code = '156'); 15、從其他表中建立表:----- 在create table 語句中使用關(guān)鍵字as------
SQL> create table emp from as select * from employee; 需要注意的是如果查詢涉及l(fā)ong數(shù)據(jù)類型,那么create table、、、as、、、將不在工作
16、查詢兩個段中的數(shù)據(jù):
select count(*) from acctmast where acctnum between 07980906000000 and 07980907000000; 17、當出現(xiàn)無法更新數(shù)據(jù),報ORA-14402錯誤時:使用以下語句 alter table table_name enable row movement; 18、撈赤道信息: (espccs@XYKCCSUAT1)/esplinkprd/ics/runtime/report/emboss$ grep 卡號 * 重跑emboss_rpt:
(espccs@XYKCCSUAT1)/esplinkprd/ics/runtime/report/emboss$ emboss_rpt 19、按時間排序:ls -lrt (espccs@XYKCCSUAT1)/esplinkprd/ics/runtime/bin$ ls -lrt 20、啟動定時作業(yè):恢復(fù)額度 先查看進程: ps -ef|grep ccs_increase_loc (espccs@XYKCCSUAT1)/esplinkprd/ics/runtime/bin$ nohup ccs_increase_loc.sh & 查看審計表:audtrail select FLD_NAME,BEFORE_VAL,AFTER_VAL,USER_ID,CHANGE_DATE from audtrail where INDEX_1='91014099' and FLD_NAME='cardstat'; 21、改變?nèi)掌诟袷剑?br> alter session set nls_date_format = 'dd/mm/yyyy';
22、查看報表:
(espccs@XYKCCSUAT2)/esplinkprd/ics/runtime/report$ ls -lrt ccs_active_inc_loc_itxn* 23、恢復(fù)額度的腳本:
(espccs@XYKCCSUAT1)/esplinkprd/ics/runtime/bin$ more ccs_increase_loc_itxn.sql ps -ef|grep ccs_increase_loc_itxn 24、當界面無法連接的時候,先檢查服務(wù),如果服務(wù)起來了,那就是apachectl死掉了,重啟一下apachectl [ecardrun@10 ecardrun]$ su - root Password: [root@10 root]# apachectl start 25、如果是連不上數(shù)據(jù)庫:
新開一個終端,啟動后臺cblauncher [ecard@10 ecard]$su – espccs (password:espccs) [espccs@10 espccs]$nohup cblauncher -p 20110 -l /esplinkprd/ics/runtime/logfile & ---------------------------------------------------------------------------------------------------------------------
二、Unix知識點: 1、解壓包(CBL20100513.gz):
(espccs@XYKCCSUAT2)/appdata$ gunzip CBL20100513.gz 2、分割文件(CBL20100513): (espccs@XYKCCSUAT2)/appdata$ split -b 5m CBL20100513 分割后自動生成 xad 文件 4、使用spool命令可以把查詢結(jié)果保存在一個文件中。
espccs@XYKCCSUAT2)/appdata$ sqlplus esp/esp sql> spool 1.txt sql> select * from student; sql> spool off; 這樣我們就可以從1.txt文件中看到命令的執(zhí)行結(jié)果。1.txt在/appdata目錄下 5、啟動174數(shù)據(jù)庫:
conn sys/oraclesdb as sysdba startup 6、如果是批量上傳或下載: ftp> bin ftp> prompt off ftp> mput *.jar 批量上傳 ftp> mget *.jar 批量下載 7、打包和解包 打包: tar -cvf web_v20101014.tar web_v20101014
解包: tar -xvf web_v20101014.tar --------------------------------------------------------------------------------------------------------------------- 三、Mysql知識點: 1、Mysql下 查看所有的表: show tables; 2、向Mysql數(shù)據(jù)庫插入漢字,出現(xiàn)亂碼: 設(shè)置:Connection con =
DriverManager.getConnection("jdbc:mysql://localhost:3306/test?user=root&password=1234&useUnicode=true&characterEncoding=utf-8"); 3、可以在MySQL Command Line Client 下輸入如下命令查看mysql的字符集 SHOW CHARACTER SET; 4、MySQL 4.1的字符集支持(Character Set Support)有兩個方面:字符集(Character set)和排序方式(Collation)。 對于字符集的支持細化到四個層次: 服務(wù)器(server),數(shù)據(jù)庫(database),數(shù)據(jù)表(table)和連接(connection)。 SHOW VARIABLES LIKE 'character_set_%'; SHOW VARIABLES LIKE 'collation_%'; 修改表的字符集:alter table 表名 Default character set gb2312; 5、更改項目的執(zhí)行權(quán)限:
在C:\Program Files\Java\jdk1.6.0_16\jre\lib\security下, 將 grant codeBase "file:${{java.ext.dirs}}/*" { permission java.security.AllPermission; }; 復(fù)制一份,改為 grant { permission java.security.AllPermission; }; 放在下面就可以了。 6、切換目錄:use
---------------------------------------------------------------------------------------------------------------------
四、CoreJava知識點: 1、最常用的java包有:
java applet :applet 是一種不能單獨運行但可嵌入在其他應(yīng)用程序中的小程序。 java awt java lang java net java io java util java.sql java text javax swing ---是java awt的升級版 2、corejava最??嫉膸c: A)多線程:Thread
B)集合:Collection set:無序且不可重復(fù) list:有序且可重復(fù) map:將鍵映射到值的對象。 C)字符串:string, stringBuffer,stringButter 3、退出循環(huán)的關(guān)鍵字
break: 退出break所在的循環(huán) continue: 結(jié)束本次循環(huán),進入下一輪循環(huán) return :結(jié)束return 所在的方法 exit:結(jié)束整個程序,也就是Main方法都結(jié)束了 4、遇到的技術(shù)難題及解決方案
1.Struts在做表單數(shù)據(jù)收集時如果日期類型的表單沒有填寫則會出錯(因為Struts的類型轉(zhuǎn)換器不能把null值轉(zhuǎn)換成java.sql.Date類型 )。 解決辦法:在ActionForm中把該表單對應(yīng)的屬性設(shè)成String類型,然后在Action中再把從FormBean中獲得的值轉(zhuǎn)換成java.sql.Date類型 。 2.如何用HQL根據(jù)日期進行搜索(模糊查詢),如果不進行類型轉(zhuǎn)換則會出錯 。 解決辦法:可以把日期類型的數(shù)據(jù)在數(shù)據(jù)庫中用varchar2類型進行存儲;或者用HQL的str()函數(shù)把對應(yīng)的日期類型轉(zhuǎn)換成字符串類型 。 3.往數(shù)據(jù)庫里插入數(shù)據(jù),如果數(shù)據(jù)有中文,在數(shù)據(jù)庫里就會出現(xiàn)亂碼,且查詢出來的結(jié)果也是亂碼。 解決方案:在Hibernate的配置文件中增加<property name=”connection.characterEncoding”>utf-8</property> 或者在建表的時候加上一句代碼DEFAULT CHARSET=utf8; --------------------------------------------------------------------------------------------------------------------- 五,字符編碼問題(JSP文件):
1、如果頁面與頁面之間出現(xiàn)編碼問題的話:
發(fā)送頁面設(shè)置:<% response.setContentType("text/html;charset=utf-8"); %> 接收頁面設(shè)置:<%request.setCharacterEncoding="utf-8";%> 還跟表單(form)的提交方法(method="post"或"get")存在很大的關(guān)系。
創(chuàng)建數(shù)據(jù)庫連接(database link):@ ----與57數(shù)據(jù)庫已連接好---
在46數(shù)據(jù)庫上 SQL> create database link esp_49 connect to esp identified by esp using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.14.53.49)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = sdbnccs) ) )'; 在57數(shù)據(jù)庫上 SQL> create database link esp_57 connect to esp identified by esp using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.14.53.57)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = sdbnccs) ) )'; create database link esp_32 connect to esp identified by esp using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.14.53.32)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = sdbnccs) ) )'; 報錯:
duplicate database link name 重復(fù)的數(shù)據(jù)庫連接 ecard用戶:
user: ecard
password: ecardsdb cd /var/www/html/ecard server user: ecardrun
password: cd server
|
|