2009年2月20日星期五

Linux之FTP

ftp 命令表
序号 命 令 功 能
1 ! 执行本地 shell 命令
2 $ 执行宏功能
3 account 发送帐号口令到远程服务器
4 append 附加到文件中
5 ascii 设置 ASCII 码传输类型
6 bell 命令完成时响铃
7 binaey 设置二进制码传输类型
8 bye 结束并退出 ftp
9 case 触发远程文件名大小写变化功能
10 cd 改变远程工作目录
11 cdup 把远程工作目录改为其父目录
12 close 结束 ftp
13 cr 触发回车换行功能
14 delete 删除远程文件
15 debug 触发调试方式
16 dir 列远程目录
17 disconnect 结束 ftp
18 form 设置文件传输格式
19 get 取文件
20 glob 触发本地文件名元字母扩展功能
21 hash 为每个传输缓区触发#号打印功能
22 help 显示求助信息
23 lcd 改变本地工作目录
24 ls 列远程工作目录内容
25 macdef 定义宏功能
26 mdelete 删除远程主机上的多个文件
27 mdir 列多个远程目录的内容
28 mget 取多个文件
29 mkdir 在远程主机上建新目录
30 mls 列多个远程目录的内容
31 mode 设置文件传输方式
32 mput 发送多个文件
33 nmap 设置或取消文件名映射机制
34 ntrans 设置或取消文件名字符变换机制
35 open 连接远程主机
36 prompt 触发交互提示功能
37 proxy 在辅助控制连接上执行一条 ftp 命令
38 put 发送一个文件
39 pwd 显示远程机器上的工作目录
40 quit 结束并退出 ftp
41 quote 发送任意 ftp 命令
42 recv 取文件
43 remotehelp 取远程主机的求助信息
44 rename 重新命名远程文件
45 reset 清除应答队列
46 rmdir 删除远程主机的一个目录
47 runique 触发用本地唯一文件名存储功能
48 send 发送一个文件
49 sendport 为每个数据连接触发使用 PORT
50 status 显示当前状态
51 struct 设置文件传输结构
52 sunique 触发远程唯一主机文件存储功能
53 tenex 设置 tenex 文件传输类型
54 trace 触发分组跟踪功能
55 type 设置文件传输类型
56 user 发送新的用户信息
57 verbose 触发 verbose 方式
58 xmkdir 生成远程主机目录
59 xpwd 显示远程主机工作目录
60 xrmdir 删除远程主机目录
61 ? 显示本地 ftp 求助信息
不同的系统,上述命令可能有所差异,可用“?”获得帮助!

2009年2月19日星期四

Class.forName()与ClassLoader.loadClass()

Class.forName()与ClassLoader.loadClass()都可以装载一个类,区别如下

1. ClassLoader.loadClass()更加底层

2. Class.forName()除了会load这个类一下还会clazz.newInstance()

3. 因此 Class.forName()保证了class里面的static块会执行或者初始化

4. JDBC driver的驱动注册正是在class的static块中完成的

2009年2月18日星期三

AOP术语

Aspect :切面是要实现的交叉功能,是应用系统模块化的一个切面或者领域。切面的最常见的例子是日至记录。
Join point:连接点是应用程序执行过程中插入切面的地点。这个地点可以是方法调用、异常抛出等
Advice:通知是切面的具体实现。它通知应用系统新的行为。如日至文件通知包含了实现日至功能的代码。
Point cut:切入点定义了通知应该应用在哪些连接点。一些AOP框架允许动态创建切入点
Introduction:引入允许你已存在类添加新的方法和属性。可以在不更改类的前提下引入。
Target:目标对象是被通知对象。
Proxy:代理是通知应用程序到目标对象后创建的对象。
Weaving:织入是将切面应用到目标对象从而创建一个新的代理对象的过程。

不忙的时候才是最重要的时候!

最近两个月被手头的工作弄的晕头转向,学习和作息计划经常被打乱,如果之前不忙的时候抓紧时间把该看该学该做的事情都解决了,现在能好过的多啊

忙的时候就应该专心致志的做好手上的事情,不忙的时候也一定要抓紧时间做好准备

2009年2月17日星期二

各种数据库的分页查询

DB2
SELECT * FROM (Select 字段1,字段2,字段3, rownumber() over (ORDER BY 排序用的列名 ASC) AS rn from 表名) AS a1 WHERE a1.rn BETWEEN 10 AND 20

Oracle
SELECT * FROM (SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= 40) WHERE RN >= 21

SQL Server
select top @pagesize * from table1 where id not in (select top @pagesize*(@page-1) id from table1 order by id) order by id

MySQL
select * from table LIMIT 5,10

SQLPlus登陆

方法一:(注意必须用双引号把后面的引上)
sqlplus "user/pwd@dbname as sysdba"

方法二:
sqlplus /nolog
conn user/pwd@dbname as sysdba

2009年2月16日星期一

Shell脚本

参考:http://www.gbunix.com/htmldata/2005_04/14/18/article_1149_1.html

1.Linux中有好多中不同的shell,但是通常我们使用bash.
程序必须以下面的行开始(必须方在文件的第一行):
#!/bin/sh
符号#!用来告诉系统它后面的参数是用来执行该文件的程序。

2.当编辑好脚本时,如果要执行该脚本,还必须使其可执行。
chmod +x filename

3.注释,
在进行shell编程时,以#开头的句子表示注释


4.
变量

在shell编程中,所有的变量都由字符串组成,并且您不需要对变量进行声明。要赋值给一个变量,您可以这样写:

变量名=值

取出变量值可以加一个美元符号($)在变量前面, 在字符串里用${a}

2009年2月15日星期日

SQL之DROP COLUMN的workaround

如果数据库(db2 v8, db2z, db2i)不提供drop column(有的特殊字段也不能drop的,如xml字段),怎么办呢?

原来的表是t1
1. 创建表t1', 它不含有应该drop的column
2. insert into t1' select x,x,x from t1
3. drop table t1
4. rename t1' to t1

DB2之RENAME

用来改table, view和index的名字

例如
RENAME TABLE test.table1 TO newname

注意新名字里面不要带schema

2009年2月11日星期三

Linux之export和shell的关系

参考:http://doc.linuxpk.com/3862.html
摘录要点:
0、export是将自定义变量变成系统环境变量
1、执行脚本时是在一个子shell环境运行的,脚本执行完后该子shell自动退出;
2、一个shell中的系统环境变量才会被复制到子shell中 (用export定义的变量);
3、一个shell中的系统环境变量只对该shell或者它的子shell有效,该shell结束时变量消失(并不能返回 到父shell中)。
4、不用export定义的变量只对该shell有效,对子shell也是无效的。
5、一个脚本直接执行和用source执行不一样:直接执行一个脚本文件是在一个子shell中运行的,而source则是在当前shell环境中运行的

Linux之profile文件zz

对整个生效的
etc/profile
对根的宿主生效
/root/.bash_profile
对普通用户生效的
/home/abc/.bash_profile

Linux之Source命令zz

Source命令也称为“点命令”,也就是一个点符号(.)。source命令通常用于重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录
用法:source filename 或 . filename

还有一个用法,执行多个命令,有点类似shell脚本,参考:http://tech.ccidnet.com/art/305/20080116/1343957_1.html

2009年2月10日星期二

Linux之环境变量

方法1:修改/etc/profile

(1)用文本编辑器打开/etc/profile

(2)在profile文件末尾加入:

JAVA_HOME=/usr/share/jdk1.5.0_05

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export JAVA_HOME

export PATH

export CLASSPATH

(3)重新登录


方法2:直接用export

只需在shell终端执行下列命令(换个shell就失效了):

export JAVA_HOME=/usr/share/jdk1.5.0_05

export PATH=$JAVA_HOME/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

2009年2月9日星期一

Informix之初体验

看了一评论说Informix10是不能再糟糕的产品,昨天装了Informix11,发现这款产品也很让人抓狂啊。装的时候被胡乱装了一堆东西,装完后开始菜单一堆东西,而且装的时候有些组件的默认路径竟然是temp,太弱智了啊,以下是我的一点总结:

1. 装完后会创建一个server,名字类似ol_ids_1150_1,也就相当于一个instance,然后这个server会作为一个服务,到windows/system32/drivers/etc/services里去找他的对应得端口,这个server的名称在JDBC URL里会用到

2. 没有图形界面的管理工具,有个叫做dbaccess的文本管理界面,极土无比让人发指,但是也有一些第三方的web管理工具

3. Jdbc驱动还要安装一下才能用,到安装文件目录里去找安装文件吧,URL的形式为jdbc:informix-sqli://localhost:9088/mydb:INFORMIXSERVER=ol_ids_1150_1
驱动名:com.informix.jdbc.ifxDriver

4. Infocenter: http://publib.boulder.ibm.com/infocenter/idshelp/v111/index.jsp

2009年2月3日星期二

Linux之chkconfig(zz)

chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息

列出系统所有的服务启动情况:
# chkconfig –list

想列出mysqld服务设置情况:
#chkconfig –list mysqld

设定mysqld在等级3和5为开机运行服务:
# chkconfig –level 35 mysqld on
–level 35表示操作只在等级3和5执行,on表示启动,off表示关闭

设定mysqld在各等级为on:
# chkconfig mysqld on
“各等级”包括2、3、4、5等级
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动

如何增加一个服务:
首先,服务脚本必须存放在/etc/ini.d/目录下;
其次,需要用chkconfig –add servicename来在chkconfig工具服务列表中增加此服务,此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了。
最后,你就可以上面教的方法修改服务的默认启动等级了。

删除一个服务:
# chkconfig –del servicename

DB2之SQL优化

这个题目太大,先开个头, 后面再补充

1. 用索引(废话), 建了索引还要经常RUNSTATS

2. exists比in快

3. 少用select *, 不但慢还不好维护

4.

2009年2月2日星期一

Linux之用户和组

参考文章:http://fedora.linuxsir.org/main/?q=node/91

1. User
1.1 配置文件
/etc/passwd 注:用户(user)的配置文件;
/etc/shadow 注:用户(user)影子口令文件;

1.2 常用命令
useradd/adduser 注:添加用户
passwd 注:为用户设置密码
usermod 注:修改用户命令,可以通过usermod 来修改登录名、用户的家目录等等;
finger 注:查看用户信息工具
id 注:查看用户的UID、GID及所归属的用户组
chfn 注:更改用户信息工具
su 注:用户切换工具
sudo 注:sudo 是通过另一个用户来执行命令(execute a command as another user)
whoiam 查看当前用户
groups 查看当前用户所在的组


2. Group
2.1 配置文件
/etc/group 注:用户组(group)配置文件;
/etc/gshadow 注:用户组(group)的影子文件;

2.2 常用命令
groupadd 注:添加用户组;
groupdel 注:删除用户组;
groupmod 注:修改用户组信息
groups 注:显示用户所属的用户组

SQL之BETWEEN...AND

只有一点要说,BETWEEN …AND…搜索的是闭区间