小知识、小技巧:
1、转换字符编码:
在Java\jdk1.6.0_13\bin>目录下有native2ascii.exe这个文件,将中文字符转换成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的内容编译后保存到3.txt中 2、数据库编码方式的问题:
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下的所有服务器编码:show variables;
我们可以看到| character_set_server | latin1 时, 我们插入的中文就会
变成乱码,为了解决这个问题,我们将colin 文件放到mysql 的bin路径下,改变colin的权限,然后打开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相似,但它不是删除整个数据表,所以索引、完整性约束、触发器、权限等都不会被删除。 C) 增、删、改表结构: 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)更新表中的数据: 更新: 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; ×要注意的是在删除列时关于该列的约束和完整性约束也同时删除,注意关键字cascade constrains,如果删除的列是多列约束的一部分
,那么这个约束条件相对其他列也同时删除。 4、将Oracle表里的数据导到某个文件里面(导出表): (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、将文件里的数据导到表里边去(导入表):
(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'; 当执行这条语句时:必须先将数据库里面的guides_student表删除掉,否则将会报错。 因为(imp esp/esp file=student.dmp tables=guides_student full=n; )这条语句会帮你自动建表和插入数据 2)把删除数据库表语句列出来: select 'drop table '||tname ||';' from tab where rownum<500; 3)把创建表语句列出来 select 'create table '||table_name||' as (select * from '||table_name||'@esp_51 where 1=2);' from user_tables; 4)显示数据库所有的表: select table_name from user_table; 6、怎么用一个sql实现删除表中数据,任意保留其中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服务器上将acctmast表的数据导入到40服务器上的acctmast上来,语句如下: create table acctmast as(select * from acctmast@esp_41); create table acctmast as(select * from acctmast@esp_41 where rownum<1000001); //将1000001条数据 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 删除一张大表时空间不释放,非常慢是因为占用了大量的系统资源,支持回退操作,空间还被这张表占用着。 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; 创建索引:create index index_name on table_name(field1,field2); 删除索引:drop index index_name; 10、将本地文件(D:\acctmast.dmp)放到服务器上: ftp> ftp 10.14.53.50 ftp> espccs ftp> ccssdb! ftp> cd /esplinkprd/ics/runtime/report ftp> bin ftp> put D:\acctmast.dmp 11、查看日志(根据本机电脑的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、创建数据库连接(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服务器上拷贝51上的表:
SQL> create table guides_student as (select * from guides_studetn@esp_51); 15、在51服务器上给52服务器上的表插入数据:
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 语句中使用关键字as------
SQL> create table emp from as select * from employee; 需要注意的是如果查询涉及long数据类型,那么create table、、、as、、、将不在工作
16、查询两个段中的数据:
select count(*) from acctmast where acctnum between 07980906000000 and 07980907000000; 17、当出现无法更新数据,报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、启动定时作业:恢复额度 先查看进程: 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、改变日期格式:
alter session set nls_date_format = 'dd/mm/yyyy'; 22、查看报表:
(espccs@XYKCCSUAT2)/esplinkprd/ics/runtime/report$ ls -lrt ccs_active_inc_loc_itxn* 23、恢复额度的脚本:
(espccs@XYKCCSUAT1)/esplinkprd/ics/runtime/bin$ more ccs_increase_loc_itxn.sql ps -ef|grep ccs_increase_loc_itxn 24、当界面无法连接的时候,先检查服务,如果服务起来了,那就是apachectl死掉了,重启一下apachectl [ecardrun@10 ecardrun]$ su - root Password: [root@10 root]# apachectl start 25、如果是连不上数据库:
新开一个终端,启动后台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命令可以把查询结果保存在一个文件中。
espccs@XYKCCSUAT2)/appdata$ sqlplus esp/esp sql> spool 1.txt sql> select * from student; sql> spool off; 这样我们就可以从1.txt文件中看到命令的执行结果。1.txt在/appdata目录下 5、启动174数据库:
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数据库插入汉字,出现乱码: 设置: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)。 对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。 SHOW VARIABLES LIKE 'character_set_%'; SHOW VARIABLES LIKE 'collation_%'; 修改表的字符集:alter table 表名 Default character set gb2312; 5、更改项目的执行权限:
在C:\Program Files\Java\jdk1.6.0_16\jre\lib\security下, 将 grant codeBase "file:${{java.ext.dirs}}/*" { permission java.security.AllPermission; }; 复制一份,改为 grant { permission java.security.AllPermission; }; 放在下面就可以了。 6、切换目录:use
---------------------------------------------------------------------------------------------------------------------
四、CoreJava知识点: 1、最常用的java包有:
java applet :applet 是一种不能单独运行但可嵌入在其他应用程序中的小程序。 java awt java lang java net java io java util java.sql java text javax swing ---是java awt的升级版 2、corejava最常考的几点: A)多线程:Thread
B)集合:Collection set:无序且不可重复 list:有序且可重复 map:将键映射到值的对象。 C)字符串:string, stringBuffer,stringButter 3、退出循环的关键字
break: 退出break所在的循环 continue: 结束本次循环,进入下一轮循环 return :结束return 所在的方法 exit:结束整个程序,也就是Main方法都结束了 4、遇到的技术难题及解决方案
1.Struts在做表单数据收集时如果日期类型的表单没有填写则会出错(因为Struts的类型转换器不能把null值转换成java.sql.Date类型 )。 解决办法:在ActionForm中把该表单对应的属性设成String类型,然后在Action中再把从FormBean中获得的值转换成java.sql.Date类型 。 2.如何用HQL根据日期进行搜索(模糊查询),如果不进行类型转换则会出错 。 解决办法:可以把日期类型的数据在数据库中用varchar2类型进行存储;或者用HQL的str()函数把对应的日期类型转换成字符串类型 。 3.往数据库里插入数据,如果数据有中文,在数据库里就会出现乱码,且查询出来的结果也是乱码。 解决方案:在Hibernate的配置文件中增加<property name=”connection.characterEncoding”>utf-8</property> 或者在建表的时候加上一句代码DEFAULT CHARSET=utf8; --------------------------------------------------------------------------------------------------------------------- 五,字符编码问题(JSP文件):
1、如果页面与页面之间出现编码问题的话:
发送页面设置:<% response.setContentType("text/html;charset=utf-8"); %> 接收页面设置:<%request.setCharacterEncoding="utf-8";%> 还跟表单(form)的提交方法(method="post"或"get")存在很大的关系。
创建数据库连接(database link):@ ----与57数据库已连接好---
在46数据库上 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数据库上 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 重复的数据库连接 ecard用户:
user: ecard
password: ecardsdb cd /var/www/html/ecard server user: ecardrun
password: cd server
|
|