分享

小知识、小技巧:

 昵称3929452 2010-10-19
小知识、小技巧:
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 文件
3、查看日志文件:
 (espccs@XYKCCSUAT2)/appdata$ grep 卡号 X×
 
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
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多