??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品亚洲产品一区二区三区,精品久久久久久亚洲,亚洲精品国产免费http://www.tkk7.com/HotJava/zh-cnTue, 13 May 2025 18:28:43 GMTTue, 13 May 2025 18:28:43 GMT60Linux 指o大全http://www.tkk7.com/HotJava/archive/2006/11/23/83046.htmlHotJavaHotJavaThu, 23 Nov 2006 07:02:00 GMThttp://www.tkk7.com/HotJava/archive/2006/11/23/83046.htmlhttp://www.tkk7.com/HotJava/comments/83046.htmlhttp://www.tkk7.com/HotJava/archive/2006/11/23/83046.html#Feedback0http://www.tkk7.com/HotJava/comments/commentRss/83046.htmlhttp://www.tkk7.com/HotJava/services/trackbacks/83046.html此帖送给初学LINUX的穷ZQLINUX的书太贵了)

名称Qcat
使用权限Q所有用?
使用方式Qcat [-AbeEnstTuv] [--help] [--version] fileName
说明Q把档案串连接后传到基本输出Q萤q或?> fileName 到另一个档案)
参数Q?
-n ?--number ?1 开始对所有输出的行数~号
-b ?--number-nonblank ?-n 怼Q只不过对于I白行不~号
-s ?--squeeze-blank 当遇到有q箋两行以上的空白行Q就代换Z行的I白?
-v ?--show-nonprinting

范例Q?
cat -n textfile1 > textfile2 ?textfile1 的档案内容加上行号后输入 textfile2 q个档案?
cat -b textfile1 textfile2 >> textfile3 ?textfile1 ?textfile2 的档案内容加上行PI白行不加)之后内定w加到 textfile3

名称 : cd
使用权限 : 所有用?

使用方式 : cd [dirName]

说明 : 变换工作目录?dirName?其中 dirName 表示法可为绝对\径或相对路径。若目录名称省略Q则变换至用者的 home directory (也就是刚 login 时所在的目录)?

另外Q?~" 也表CZؓ home directory 的意思,"." 则是表示目前所在的目录Q?.." 则表C目前目录位|的上一层目录?

范例 : 跛_ /usr/bin/ :
cd /usr/bin

跛_自己?home directory :
cd ~

跛_目前目录的上上两?:
cd ../..



指o名称 : chmod
使用权限 : 所有用?

使用方式 : chmod [-cfvR] [--help] [--version] mode file...

说明 : Linux/Unix 的档案存取权限分ZU?: 档案拥有者、群l、其他。利?chmod 可以藉以控制档案如何被他人所存取?

把计 :

mode : 权限讑֮字串Q格式如?: [ugoa...][[+-=][rwxX]...][,...]Q其中u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群?group)者,o 表示其他以外的hQa 表示q三者皆是?
+ 表示增加权限? 表示取消权限? 表示唯一讑֮权限?
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行?
-c : 若该档案权限实已经更改Q才昄其更改动?
-f : 若该档案权限无法被更改也不要昄错误讯息
-v : 昄权限变更的详l资?
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 昄辅助说明
--version : 昄版本

范例 :档?file1.txt 设ؓ所有h皆可d :
chmod ugo+r file1.txt

档?file1.txt 设ؓ所有h皆可d :
chmod a+r file1.txt

档?file1.txt ?file2.txt 设ؓ该档案拥有者,与其所属同一个群体者可写入Q但其他以外的h则不可写?:
chmod ug+w,o-w file1.txt file2.txt

?ex1.py 讑֮为只有该档案拥有者可以执?:
chmod u+x ex1.py

目前目录下的所有档案与子目录皆设ؓM人可d :
chmod -R a+r *

此外chmod也可以用数字来表C权限如 chmod 777 file
语法为:chmod abc file

其中a,b,c各ؓ一个数字,分别表示User、Group、及Other的权限?

r=4Qw=2Qx=1
若要rwx属性则4+2+1=7Q?
若要rw-属性则4+2=6Q?
若要r-x属性则4+1=7?

范例Q?
chmod a=rwx file

?
chmod 777 file

效果相同
chmod ug=rwx,o=x file

?
chmod 771 file

效果相同





若用chmod 4755 filename可此程式具有root的权?


指o名称 : chown
使用权限 : root

使用方式 : chmod [-cfhvR] [--help] [--version] user[:group] file...

说明 : Linux/Unix 是多人多工作业系l,所有的档案皆有拥有者。利?chown 可以档案的拥有者加以改变。一般来_q个指o只有是由pȝ理?root)所使用Q一般用者没有权限可以改变别人的档案拥有者,也没有权限可以自q档案拥有者改设ؓ别h。只有系l管理?root)才有q样的权限?

把计 :

user : 新的档案拥有者的使用?IDgroup : 新的档案拥有者的使用者群?group)-c : 若该档案拥有者确实已l更改,才显C其更改动作-f : 若该档案拥有者无法被更改也不要显C错误讯?h : 只对于连l?link)q行变更Q而非?link 真正指向的档?v : 昄拥有者变更的详细资料-R : 对目前目录下的所有档案与子目录进行相同的拥有者变?即以递回的方式逐个变更)--help : 昄辅助说明--version : 昄版本

范例 :
档?file1.txt 的拥有者设?users 体的用?jessie :
chown jessie:users file1.txt

目前目录下的所有档案与子目录的拥有者皆设ؓ users 体的用?lamport :
chmod -R lamport:users *


名称Qcp
使用权限Q所有用?

使用方式Q?

cp [options] source dest
cp [options] source... directory

说明Q将一个档案拷贝至另一档案Q或数个档案拷贝至另一目录?

把计?

-a 可能将档案状态、权限等资料都照原状予以复制?
-r ?source 中含有目录名Q则目录下之档案亦皆依序拷贝至目的地?
-f 若目的地已经有相同档名的档案存在Q则在复制前先予以删除再行复制?
范例Q?
档?aaa 复制(已存?Qƈ命名?bbb :
cp aaa bbb

所有的C语言E式拯?Finished 子目录中 :
cp *.c Finished



名称Qcut

使用权限Q所有用?

用法Qcut -cnum1-num2 filename

说明Q显C每行从开头算?num1 ?num2 的文字?

范例Q?

shell>> cat example
test2
this is test1
shell>> cut -c0-6 example ## print 开头算起前 6 个字?
test2
this i


名称 : find
用法 : find
使用说明 :

档案系l内W合 expression 的档案列出来。你可以指要档案的名U、类别、时间、大、权限等不同资讯的组合,只有完全相符的才会被列出来?

find Ҏ(gu)下列规则判断 path ?expressionQ在命o列上W一?- ( ) , ! 之前的部份ؓ pathQ之后的?expression。如?path 是空字串则用目前\径,如果 expression 是空字串则?-print 为预?expression?

expression 中可使用的选项有二三十个之多,在此只介l最常用的部份?

-mount, -xdev : 只检查和指定目录在同一个档案系l下的档案,避免列出其它档案pȝ中的档案
-amin n : 在过?n 分钟内被dq?
-anewer file : 比档?file 更晚被读取过的档?
-atime n : 在过?n 天过dq的档案
-cmin n : 在过?n 分钟内被修改q?
-cnewer file :比档?file 更新的档?
-ctime n : 在过?n 天过修改q的档案
-empty : I的档案-gid n or -group name : gid ?n 或是 group 名称?name
-ipath p, -path p : 路径名称W合 p 的档案,ipath 会忽略大写
-name name, -iname name : 档案名称W合 name 的档案。iname 会忽略大写
-size n : 档案大小 ?n 单位Qb 代表 512 位元l的区块Qc 表示字元敎ͼk 表示 kilo bytesQw 是二个位元组?type c : 档案cd?c 的档案?
d: 目录
c: 字型装置档案
b: 区块装置档案
p: 具名贮列
f: 一般档?
l: W号q结
s: socket
-pid n : process id ?n 的档?

你可以?( ) 运式分隔Qƈ使用下列q算?
exp1 -and exp2
! expr
-not expr
exp1 -or exp2
exp1, exp2
范例:
目前目录及其子目录下所有g伸档名是 c 的档案列出来?
# find . -name "*.c"


目前目录其其下子目录中所有一般档案列?
# find . -ftype f


目前目录及其子目录下所有最q?20 分钟内更新过的档案列?
# find . -ctime -20



名称Qless

使用权限Q所有用?

使用方式Q?

less [Option] filename

说明Q?
less 的作用与 more 十分怼Q都可以用来览文字档案的内容,不同的是 less 允许使用者往回卷?
以浏览已l看q的部䆾Q同时因?less q未在一开始就d整个档案Q因此在遇上大型档案的开启时Q会比一般的文书~辑??vi)来的快速?


范例Q?


指o名称 : ln
使用权限 : 所有用?

使用方式 : ln [options] source distQ其?option 的格式ؓ :

[-bdfinsvF] [-S backup-suffix] [-V {numbered,existing,simple}]
[--help] [--version] [--]
说明 : Linux/Unix 档案pȝ中,有所谓的q结(link)Q我们可以将其视为档案的别名Q而连l又可分ZU?: 连l?hard link)与Yq结(symbolic link)Q硬q结的意思是一个档案可以有多个名称Q而Yq结的方式则是生一个特D的档案Q该档案的内Ҏ(gu)指向另一个档案的位置。硬q结是存在同一个档案系l中Q而Yq结却可以跨不同的档案pȝ?
ln source dist 是生一个连l?dist)?sourceQ至于用硬q结或Y铄则由参数军_?

不论是硬q结或Y铄都不会将原本的档案复制一份,只会占用非常量的磁空间?


-f : 铄时先与 dist 同档名的档案删除-d : 允许pȝ理者硬铄自己的目?i : 在删除与 dist 同档名的档案时先q行询问-n : 在进行Yq结Ӟ?dist 视ؓ一般的档案-s : q行软链l?symbolic link)-v : 在连l之前显C其档名-b : 在铄时会被覆写或删除的档案进行备?S SUFFIX : 备份的档案都加?SUFFIX 的字?V METHOD : 指定备䆾的方?-help : 昄辅助说明--version : 昄版本
范例 :
档?yy 产生一?symbolic link : zz
ln -s yy zz

档?yy 产生一?hard link : zz
ln yy xx



名称Qlocate
使用权限Q所有用?
使用方式Q?locate [-q] [-d ] [--database=]
locate [-r ] [--regexp=]
locate [-qv] [-o ] [--output=]
locate [-e ] [-f ] <[-l ] [-c]
<[-U ] [-u]>
locate [-Vh] [--version] [--help]
说明Q?
locate 让用者可以很快速的搜寻档案pȝ内是否有指定的档案。其Ҏ(gu)是先建立一个包括系l内所有档案名U及路径的资料库Q之后当L时就只需查询q个资料库,而不必实际深入档案系l之中了?

在一般的 distribution 之中Q资料库的徏立都被放?contab 中自动执行。一般用者在使用时只要用

# locate your_file_name

的型式就可以了?参数Q?
-u
-U

建立资料库,-u 会由根目录开始,-U 则可以指定开始的位置?

-e

?
排除在寻扄范围之外?

-l
如果 ?1Q则启动安全模式。在安全模式下,使用者不会看到权限无法看到的档案。这会始速度减慢Q因?locate 必须臛_际的档案pȝ中取得档案的权限资料?

-f
特定的档案pȝ排除在外Q例如我们没有到理要?proc 档案pȝ中的档案攑֜资料库中?

-q
安静模式Q不会显CZQ何错误讯息?

-n
臛_昄 个输出?

-r
使用正规q算?做寻扄条g?

-o
指定资料库存的名U?

-d

指定资料库的路径

-h
昄辅助讯息

-v
昄更多的讯?

-V
昄E式的版本讯?范例Q?

locate chdrv : L所有叫 chdrv 的档?
locate -n 100 a.out : L所有叫 a.out 的档案,但最多只昄 100 ?
locate -u : 建立资料?


名称 : ls
使用权限 : 所有用?

使用方式 : ls [-alrtAFR] [name...]

说明 : 昄指定工作目录下之内容Q列出目前工作目录所含之档案及子目录)?


-a 昄所有档案及目录 (ls内定档案名或目录名U开头ؓ"."的视为隐藏档Q不会列?
-l 除档案名U外Q亦档案型态、权限、拥有者、档案大等资讯详细列出
-r 档案以相反ơ序昄(原定依英文字母次?
-t 档案依建立旉之先后次序列?
-A ?-a Q但不列?"." (目前目录) ?".." (父目?
-F 在列出的档案名称后加一W号Q例如可执行档则?"*", 目录则加 "/"
-R 若目录下有档案,则以下之档案亦皆依序列出

范例Q?
列出目前工作目录下所有名U是 s 开头的档案Q愈新的排愈后面 :
ls -ltr s*

?/bin 目录以下所有目录及档案详细资料列出 :
ls -lR /bin

列出目前工作目录下所有档案及目录Q目录于名称后加 "/", 可执行档于名U后?"*" :
ls -AF

名称Qmore
使用权限Q所有用?
使用方式Qmore [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
说明Q类?cat Q不q会以一一늚昄方便使用者逐页阅读Q而最基本的指令就是按I白键(spaceQ就往下一|C,?b 键就会往回(backQ一|C,而且q有搜寻字串的功能(?vi 怼Q,使用中的说明文gQ请?h ?
参数Q?num 一ơ显C的行数
-d 提示使用者,在画面下Ҏ(gu)C?[Press space to continue, q to quit.] Q如果用者按错键Q则会显C?[Press h for instructions.] 而不???
-l 取消遇见Ҏ(gu)字元 ^LQ送纸字元Q时会暂停的功能
-f 计算行数Ӟ以实际上的行敎ͼ而非自动换行q后的行敎ͼ有些单行字数太长的会被扩展ؓ两行或两行以上)
-p 不以卷动的方式显C每一,而是先清除萤q后再显C内?
-c ?-p 怼Q不同的是先昄内容再清除其他旧资料
-s 当遇到有q箋两行以上的空白行Q就代换Z行的I白?
-u 不显CZ引号 Q根据环境变?TERM 指定?terminal 而有所不同Q?
+/ 在每个档案显C前搜寻该字ԌpatternQ,然后从该字串之后开始显C?
+num 从第 num 行开始显C?
fileNames Ʋ显C内容的档案Q可为复C?
范例Q?
more -s testfile 逐页昄 testfile 之档案内容,如有q箋两行以上I白行则以一行空白行昄?
more +20 testfile 从第 20 行开始显C?testfile 之档案内宏V?


名称Qmv
使用权限Q所有用?

使用方式Q?

mv [options] source dest
mv [options] source... directory
说明Q将一个档案移臛_一档案Q或数个档案移臛_一目录?
参数Q?i 若目的地已有同名档案Q则先询问是否覆盖旧档?

范例Q?

档?aaa 更名?bbb :
mv aaa bbb

所有的C语言E式U至 Finished 子目录中 :
mv -i *.c



名称Qrm
使用权限Q所有用?

使用方式Qrm [options] name...

说明Q删除档案及目录?

把计?

-i 删除前逐一询问认?
-f 即原档案属性设为唯读,亦直接删除,无需逐一认?
-r 目录及以下之档案亦逐一删除?
范例Q?
删除所有C语言E式档;删除前逐一询问认 :
rm -i *.c

?Finished 子目录及子目录中所有档案删?:
rm -r Finished



名称Qrmdir
使用权限Q于目前目录有适当权限的所有用?

使用方式Q?rmdir [-p] dirName

说明Q?删除I的目录?

参数Q?-p 是当子目录被删除后它也成ؓI目录的话,则顺便一q删除?

范例Q?

工作目录下Q名?AAA 的子目录删除 :
rmdir AAA

在工作目录下?BBB 目录中,删除名ؓ Test 的子目录。若 Test 删除后,BBB 目录成ؓI目录,?BBB 亦予删除?
rmdir -p BBB/Test



名称Qsplit
使用权限Q所有用?

使用方式Qsplit [OPTION] [INPUT [PREFIX]]

说明Q?

一个档案分割成C。而从 INPUT 分割输出成固定大的档案Q其档名依序?PREFIXaa, PREFIXab...QPREFIX 预设gؓ `x。若没有 INPUT 档或?`-Q则从标准输入读q资料?

匡兜?

-b, --bytes=SIZE

SIZE gؓ每一输出档案的大,单位?byte?
-C, --line-bytes=SIZE

每一输出档中Q单行的最?byte 数?
-l, --lines=NUMBER

NUMBER gؓ每一输出档的列数大小?
-NUMBER

?-l NUMBER 相同?
--verbose

于每个输出档被开启前Q列印出侦错资讯到标准错误输出?
--help

昄辅助资讯然后d?
--version

列出版本资讯然后d?
SIZE 可加入单? b 代表 512Q?k 代表 1KQ?m 代表 1 Meg?

范例Q?

PostgresSQL 大型资料库备份与回存Q?

?Postgres 允许表格大过你系l档案的最大容量,所以要表?dump 到单一的档案可能会有问题,使用 splitq行档案分割?


% pg_dump dbname | split -b 1m - filename.dump.



重新载入


% createdb dbname
% cat filename.dump.* | pgsql dbname



名称Qtouch
使用权限Q所有用?

使用方式Q?
touch [-acfm]
[-r reference-file] [--file=reference-file]
[-t MMDDhhmm[[CC]YY][.ss]]
[-d time] [--date=time] [--time={atime,access,use,mtime,modify}]
[--no-create] [--help] [--version]
file1 [file2 ...]


说明Q?
touch 指o改变档案的时间记录?ls -l 可以昄档案的时间记录?


参数Q?
a 改变档案的读取时间记录?
m 改变档案的修Ҏ(gu)间记录?
c 假如目的档案不存在,不会建立新的档案。与 --no-create 的效果一栗?
f 不用,是ؓ了与其他 unix pȝ的相Ҏ(gu)而保留?
r 使用参考档的时间记录,?--file 的效果一栗?
d 讑֮旉与日期,可以使用各种不同的格式?
t 讑֮档案的时间记录,格式?date 指o相同?
--no-create 不会建立新档案?
--help 列出指o格式?
--version 列出版本讯息?


范例Q?


最单的使用方式Q将档案的时候记录改为现在的旉。若档案不存在,pȝ会徏立一个新的档案?

touch file
touch file1 file2

?file 的时间记录改?5 ?6 ?18 ?3 分,公元两千q。时间的格式可以参?date 指oQ至需输入 MMDDHHmm Q就是月日时与分?

touch -c -t 05061803 file
touch -c -t 050618032000 file

?file 的时间记录改变成?referencefile 一栗?

touch -r referencefile file

?file 的时间记录改?5 ?6 ?18 ?3 分,公元两千q。时间可以?am, pm 或是 24 时的格式,日期可以使用其他格式?6 May 2000 ?

touch -d "6:03pm" file
touch -d "05/06/2000" file
touch -d "6:03pm 05/06/2000" file
名称 : at
使用权限 : 所有用?

使用方式 : at -V [-q queue] [-f file] [-mldbv] TIME

说明 : at 可以让用者指定在 TIME q个特定时刻执行某个E式或指令,TIME 的格式是 HH:MM其中?HH 为小ӞMM 为分钟,甚至你也可以指定 am, pm, midnight, noon, teatime(是下午 4 炚w){口语词?

如果惌指定过一天内的时_则可以用 MMDDYY 或?MM/DD/YY 的格式,其中 MM 是分钟,DD 是第几日QYY 是指q䆾。另外,使用者甚至也可以使用像是 now + 旉间隔来弹性指定时_其中的时间间隔可以是 minutes, hours, days, weeks?

另外Q用者也可指?today ?tomorrow 来表CZ天或明天。当指定了时间ƈ按下 enter 之后Qat 会进入交谈模式ƈ要求输入指o或程式,当你输入完后按下 ctrl+D 卛_完成所有动作,至于执行的结果将会寄回你的帐号中?

把计 :

-V : 印出版本~号
-q : 使用指定的O?Queue)来储存,at 的资料是存放在所谓的 queue 中,使用者可以同时用多?queueQ?queue 的编号ؓ a, b, c... z 以及 A, B, ... Z ?52 ?
-m : 即ɽE式/指o执行完成后没有输出结? 也要寄封信给使用?
-f file : d预先写好的命令档。用者不一定要使用交谈模式来输入,可以先将所有的指定先写入档案后再一ơ读?
-l : 列出所有的指定 (使用者也可以直接使用 atq 而不?at -l)
-d : 删除指定 (使用者也可以直接使用 atrm 而不?at -d)
-v : 列出所有已l完成但未删除的指?

例子 :
三天后的下午 5 炚w执行 /bin/ls :
at 5pm + 3 days /bin/ls

三个星期后的下午 5 炚w执行 /bin/ls :
at 5pm + 2 weeks /bin/ls

明天?17:20 执行 /bin/date :
at 17:20 tomorrow /bin/date

1999 q的最后一天的最后一分钟印出 the end of world !
at 23:59 12/31/1999 echo the end of world !




名称Qcal

使用权限Q所有用?

使用方式Qcal [-mjy] [month [year]]

说明Q?

昄日历。若只有一个参敎ͼ则代表年?1-9999)Q显Cq的q历。年份必d部写出:``cal 89\ 不会是昄 1989 q的q历。用两个参敎ͼ则表C月份及q䆾。若没有参数则显C个月的月历?
1752 q?9 月第 3 日v改用西洋新历Q因q时大部份的国家都采用新历,?10 天被去除Q所以该月䆾的月历有些不同。在此之前ؓ西洋旧历?

匡兜?

-m : 以星期一为每周的W一天方式显C?
-j : 以凯撒历昄Q即以一月一日v的天数显C?
-y : 昄今年q历?

范例Q?

cal : 昄本月的月历?



[root@mylinux /root]# date
Tue Aug 15 08:00:18 CST 2000
[root@mylinux /root]# cal
August 2000
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

[root@mylinux /root]#


cal 2001 : 昄公元 2001 q年历?

[root@mylinux /root]# cal 2001
2001

January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1 2 3
7 8 9 10 11 12 13 4 5 6 7 8 9 10 4 5 6 7 8 9 10
14 15 16 17 18 19 20 11 12 13 14 15 16 17 11 12 13 14 15 16 17
21 22 23 24 25 26 27 18 19 20 21 22 23 24 18 19 20 21 22 23 24
28 29 30 31 25 26 27 28 25 26 27 28 29 30 31

April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7 1 2 3 4 5 1 2
8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9
15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16
22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23
29 30 27 28 29 30 31 24 25 26 27 28 29 30

July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 7 1 2 3 4 1
8 9 10 11 12 13 14 5 6 7 8 9 10 11 2 3 4 5 6 7 8
15 16 17 18 19 20 21 12 13 14 15 16 17 18 9 10 11 12 13 14 15
22 23 24 25 26 27 28 19 20 21 22 23 24 25 16 17 18 19 20 21 22
29 30 31 26 27 28 29 30 31 23 24 25 26 27 28 29
30
October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 5 6 1 2 3 1
7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8
14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15
21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22
28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29
30 31

[root@mylinux /root]#





cal 5 2001 : 昄公元 2001 q?5 月月历?



[root@mylinux /root]# cal 5 2001
May 2001
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

[root@mylinux /root]#





cal -m : 以星期一为每周的W一天方式,昄本月的月历?



[root@mylinux /root]# cal -m
August 2000
Mo Tu We Th Fr Sa Su
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

[root@mylinux /root]#





cal -jy : 以一月一日v的天数显CZq的q历?



[root@mylinux /root]# cal -jy
2000

January February
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
1 32 33 34 35 36
2 3 4 5 6 7 8 37 38 39 40 41 42 43
9 10 11 12 13 14 15 44 45 46 47 48 49 50
16 17 18 19 20 21 22 51 52 53 54 55 56 57
23 24 25 26 27 28 29 58 59 60
30 31
March April
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
61 62 63 64 92
65 66 67 68 69 70 71 93 94 95 96 97 98 99
72 73 74 75 76 77 78 100 101 102 103 104 105 106
79 80 81 82 83 84 85 107 108 109 110 111 112 113
86 87 88 89 90 91 114 115 116 117 118 119 120
121
May June
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
122 123 124 125 126 127 153 154 155
128 129 130 131 132 133 134 156 157 158 159 160 161 162
135 136 137 138 139 140 141 163 164 165 166 167 168 169
142 143 144 145 146 147 148 170 171 172 173 174 175 176
149 150 151 152 177 178 179 180 181 182

July August
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
183 214 215 216 217 218
184 185 186 187 188 189 190 219 220 221 222 223 224 225
191 192 193 194 195 196 197 226 227 228 229 230 231 232
198 199 200 201 202 203 204 233 234 235 236 237 238 239
205 206 207 208 209 210 211 240 241 242 243 244
212 213
September October
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
245 246 275 276 277 278 279 280 281
247 248 249 250 251 252 253 282 283 284 285 286 287 288
254 255 256 257 258 259 260 289 290 291 292 293 294 295
261 262 263 264 265 266 267 296 297 298 299 300 301 302
268 269 270 271 272 273 274 303 304 305

November December
Sun Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat
306 307 308 309 336 337
310 311 312 313 314 315 316 338 339 340 341 342 343 344
317 318 319 320 321 322 323 345 346 347 348 349 350 351
324 325 326 327 328 329 330 352 353 354 355 356 357 358
331 332 333 334 335 359 360 361 362 363 364 365
366

[root@mylinux /root]#




名称 : crontab
使用权限 : 所有用?

使用方式 :

crontab [ -u user ] filecrontab [ -u user ] { -l | -r | -e }
说明 :
crontab 是用来让使用者在固定旉或固定间隔执行程式之用,换句话说Q也是cM使用者的时程表?u user 是指讑֮指定 user 的时E表Q这个前提是你必要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话Q就是表C定自q时程表?

数 :

-e : 执行文字~辑器来讑֮时程表,内定的文字编辑器?VIQ如果你想用别的文字~辑器,则请先设?VISUAL 环境变数来指定用那个文字编辑器(比如?setenv VISUAL joe)
-r : 删除目前的时E表
-l : 列出目前的时E表

时程表的格式如下 :
f1 f2 f3 f4 f5 program

其中 f1 是表C分钟,f2 表示时Qf3 表示一个月份中的第几日Qf4 表示月䆾Qf5 表示一个星期中的第几天。program 表示要执行的E式?
?f1 ?* 时表C每分钟都要执行 programQf2 ?* 时表C每时都要执行E式Q其余类?
?f1 ?a-b 时表CZW?a 分钟到第 b 分钟q段旉内要执行Qf2 ?a-b 时表CZW?a 到第 b 时都要执行Q其余类?
?f1 ?*/n 时表C每 n 分钟个时间间隔执行一ơ,f2 ?*/n 表示?n 时个时间间隔执行一ơ,其余cL
?f1 ?a, b, c,... 时表C第 a, b, c,... 分钟要执行,f2 ?a, b, c,... 时表C第 a, b, c...个小时要执行Q其余类?

使用者也可以所有的讑֮先存攑֜档案 file 中,?crontab file 的方式来讑֮时程表?
例子 :

每月每天每小时的W?0 分钟执行一?/bin/ls :
0 7 * * * /bin/ls

?12 月内, 每天的早?6 点到 12 点中Q每?20 分钟执行一?/usr/bin/backup :
0 6-12/3 * 12 * /usr/bin/backup

周一到周五每天下?5:00 寄一信l?alex@domain.name :
0 17 * * 1-5 mail -s "hi" alex@domain.name < /tmp/maildata

每月每天的午?0 ?20 ? 2 ?20 ? 4 ?20 ?...执行 echo "haha"
20 0-23/2 * * * echo "haha"

注意 :

当程式在你所指定的时间执行后Q系l会寄一信l你Q显CE式执行的内容,若是你不希望收到q样的信Q请在每一行空一g后加?> /dev/null 2>&1 卛_?

名称 : date
使用权限 : 所有用?

使用方式 :

date [-u] [-d datestr] [-s datestr] [--utc] [--universal] [--date=datestr] [--set=datestr] [--help] [--version] [+FORMAT] [MMDDhhmm[[CC]YY][.ss]]

说明 :

date 可以用来昄或设定系l的日期与时_在显C方面,使用者可以设定欲昄的格式,格式讑֮Z个加号后接数个标讎ͼ其中可用的标记列表如?:

旉斚w :

% : 印出 %
%n : 下一?
%t : x
%H : 时(00..23)
%I : 时(01..12)
%k : 时(0..23)
%l : 时(1..12)
%M : 分钟(00..59)
%p : 昄本地 AM ?PM
%r : 直接昄旉 (12 时Ӟ格式?hh:mm:ss [AP]M)
%s : ?1970 q?1 ?1 ?00:00:00 UTC 到目前ؓ止的U数
%S : U?00..61)
%T : 直接昄旉 (24 时?
%X : 相当?%H:%M:%S
%Z : 昄时区

日期斚w :
%a : 星期?(Sun..Sat)
%A : 星期?(Sunday..Saturday)
%b : 月䆾 (Jan..Dec)
%B : 月䆾 (January..December)
%c : 直接昄日期与时?
%d : ?(01..31)
%D : 直接昄日期 (mm/dd/yy)
%h : ?%b
%j : 一q中的第几天 (001..366)
%m : 月䆾 (01..12)
%U : 一q中的第几周 (00..53) (?Sunday Z周的W一天的情Ş)
%w : 一周中的第几天 (0..6)
%W : 一q中的第几周 (00..53) (?Monday Z周的W一天的情Ş)
%x : 直接昄日期 (mm/dd/yy)
%y : q䆾的最后两位数?(00.99)
%Y : 完整q䆾 (0000..9999)

若是不以加号作ؓ开_则表C讑֮旉Q而时间格式ؓ MMDDhhmm[[CC]YY][.ss]Q其?MM 为月份,DD 为日Qhh 为小Ӟmm 为分钟,CC 为年份前两位数字QYY 为年份后两位数字Qss 为秒?
把计 :

-d datestr : 昄 datestr 中所讑֮的时?(非系l时?
--help : 昄辅助讯息
-s datestr : 系l时间设?datestr 中所讑֮的时?
-u : 昄目前的格林威L?
--version : 昄版本~号

例子 :
昄旉后蟩行,再显C目前日?:
date +%T%n%D

昄月䆾与日?:
date +%B %d

昄日期与设定时?12:34:56) :
date --date 12:34:56

注意 :

当你不希望出现无意义?0 ?比如?1999/03/07)Q则可以在标C插入 - W号Q比如说 date +%-H:%-M:%-S 会把时分U中无意义的 0 l去掉,像是原本?08:09:04 会变?8:9:4。另外,只有取得权限?比如?root)才能讑֮pȝ旉?

当你?root w分更改了系l时间之后,误得以 clock -w 来将pȝ旉写入 CMOS 中,q样下次重新开机时pȝ旉才会持箋抱持最新的正确倹{?


名称 : sleep
使用权限 : 所有用?

使用方式 : sleep [--help] [--version] number[smhd]

说明 : sleep 可以用来目前动作gq一D|?

参数说明 :

--help : 昄辅助讯息
--version : 昄版本~号
number : 旉长度Q后面可?s、m、h ?d
其中 s 为秒Qm ?分钟Qh 为小Ӟd 为日?

例子 :
昄目前旉后gq?1 分钟Q之后再ơ显C时?:
date;sleep 1m;date



名称Q?time
使用权限Q?所有用?

使用方式Q?time [options] COMMAND [arguments]

说明Q?time 指o的用途,在于量测特定指o执行时所需消耗的旉及系l资源等资讯。例?CPU 旉、记忆体、输入输出等{。需要特别注意的是,部分资讯?Linux 上显CZ出来。这是因为在 Linux 上部分资源的分配函式?time 指o所预设的方式ƈ不相同,以致?time 指o无法取得q些资料?

把计?

-o or --output=FILE
讑֮l果输出档。这个选项会将 time 的输出写?所指定的档案中。如果档案已l存在,pȝ覆写其内容?
-a or --append
配合 -o 使用Q会结果写到档案的末端Q而不会覆盖掉原来的内宏V?
-f FORMAT or --format=FORMAT
?FORMAT 字串讑֮昄方式。当q个选项没有被设定的时候,会用pȝ预设的格式。不q你可以用环境变?time 来设定这个格式,如此一来就不必每次dpȝ都要讑֮一ơ?
一般设定上Q你可以?
\t
表示xQ或者是?
\n
表示换行。每一资料要?% 做ؓ前导。如果要在字串中使用癑ֈ比符Pq 。(学过 C 语言的h大概会觉得很熟?zhn)Q?
time 指o可以昄的资源有四大,分别是:

Time resources
Memory resources
IO resources
Command info

详细的内容如下:


Time Resources
E 执行指o所p的时_格式是:[hour]:minute:second。请注意q个数字q不代表实际?CPU 旉?
e 执行指o所p的时_单位是秒。请注意q个数字q不代表实际?CPU 旉?
S 指o执行时在核心模式Qkernel modeQ所p的时_单位是秒?
U 指o执行时在使用者模式(user modeQ所p的时_单位是秒?
P 执行指o?CPU 的占用比例。其实这个数字就是核心模式加上用者模式的 CPU 旉除以L间?


Memory Resources
M 执行时所占用的实体记忆体的最大倹{单位是 KB
t 执行时所占用的实体记忆体的^均|单位?KB
K 执行E序所占用的记忆体总量Qstack+data+textQ的q_大小Q单位是 KB
D 执行E序的自有资料区Qunshared data areaQ的q_大小Q单位是 KB
p 执行E序的自有堆叠(unshared stackQ的q_大小Q单位是 KB
X 执行E序间共享内容(shared textQ的q_|单位?KB
Z pȝ记忆体页的大,单位?byte。对同一个系l来说这是个常数


IO Resources
F 此程序的主要记忆体页错误发生ơ数。所谓的主要记忆体页错误是指某一记忆体页已经|换到置换档Qswap file)中,而且已经分配l其他程序。此时该늚内容必须从置换档里再d来?
R 此程序的ơ要记忆体页错误发生ơ数。所谓的ơ要记忆体页错误是指某一记忆体页虽然已经|换到置换档中,但尚未分配给其他E序。此时该늚内容q未被破坏,不必从置换档里读出来
W 此程序被交换到置换档的次?
c 此程序被中断Q像是分配到?CPU 旉耗尽Q的ơ数
w 此程序自愿中断(像是在等待某一?I/O 执行完毕Q像是磁读取等{)的次?
I 此程序所输入的档案数
O 此程序所输出的档案数
r 此程序所收到?Socket Message
s 此程序所送出?Socket Message
k 此程序所收到的信?( Signal )数量


Command Info
C 执行时的参数以及指o名称
x 指o的结束代?( Exit Status )




-p or --portability
q个选项会自动把昄格式讑֮成ؓQ?
real %e
user %U
sys %S
q么做的目的是ؓ了与 POSIX 规格相容?
-v or --verbose
q个选项会把所有程式中用到的资源通通列出来Q不但如一般英文语句,q有说明。对不想花时间去熟习格式讑֮或是刚刚开始接触这个指令的人相当有用?

范例Q?
利用下面的指?
time -v ps -aux

我们可以获得执行 ps -aux 的结果和所p的系l资源。如下面所列的资料Q?
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.4 1096 472 ? S Apr19 0:04 init
root 2 0.0 0.0 0 0 ? SW Apr19 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Apr19 0:00 [kpiod]
......
root 24269 0.0 1.0 2692 996 pts/3 R 12:16 0:00 ps -aux

Command being timed: "ps -aux"
User time (seconds): 0.05
System time (seconds): 0.06
Percent of CPU this job got: 68%
Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.16
Average shared text size (kbytes): 0
Average unshared data size (kbytes): 0
Average stack size (kbytes): 0
Average total size (kbytes): 0
Maximum resident set size (kbytes): 0
Average resident set size (kbytes): 0
Major (requiring I/O) page faults: 238
Minor (reclaiming a frame) page faults: 46
Voluntary context switches: 0
Involuntary context switches: 0
Swaps: 0
File system inputs: 0
File system outputs: 0
Socket messages sent: 0
Socket messages received: 0
Signals delivered: 0
Page size (bytes): 4096
Exit status: 0



名称Q?uptime
使用权限Q?所有用?
使用方式Q?uptime [-V]
说明Q?uptime 提供使用者下面的资讯Q不需其他参数Q?

现在的时?
pȝ开转到现在l过的时?
q线的用者数?
最q一分钟Q五分钟和十五分钟的pȝ负蝲
参数Q?-V 昄版本资讯?
范例Q?uptime
其结果ؓQ?
10:41am up 5 days, 10 min, 1 users, load average: 0.00, 0.00, 1.99

名称Qchfn

使用权限Q所有用?

用法Qshell>> chfn

说明Q提供用者更改个讯,用于 finger and mail username

范例Q?

shell>> chfn
Changing finger information for user
Password: [del]
Name[]:Johnney Huang ### 提供 finger 时的资料
Office[]:NCCU
Office Phone[]: [del]
Home Phone[]: [del]


名称Qchsh

使用权限Q所有用?

用法Qshell>> chsh

说明Q更改用?shell 讑֮

范例Q?

shell>> chsh
Changing fihanging shell for user1
Password: [del]
New shell [/bin/tcsh]: ### [是目前用的 shell]
[del]

shell>> chsh -l ### 展示 /etc/shells 档案内容
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh



?finger [q回]
名称Q?finger
使用权限Q?所有用?

使用方式Q?finger [options] user[@address]

说明Qfinger 可以让用者查询一些其他用者的资料。会列出来的资料有:

Login Name
User Name
Home directory
Shell
Login status
mail status
.plan
.project
.forward

其中 .plan Q?project ?.forward 是使用者在他的 Home Directory 里的 .plan Q?.project ?.forward {档案里的资料。如果没有就没有。finger 指oq不限定于在同一伺服器上查询Q也可以L某一个远端伺服器上的使用者。只要给一个像?E-mail address 一般的地址卛_?
把计?

-l
多行昄?

-s
单行昄。这个选项只显C登入名Uͼ真实姓名Q终端机名称Q闲|时_d旉Q办公室L及电(sh)话号码。如果所查询的用者是q端伺服器的使用者,q个选项无效?

范例Q下列指令可以查询本机管理员的资料:
finger root

其结果如下:
Login: root Name: root
Directory: /root Shell: /bin/bash
Never logged in.
No mail.
No Plan.




名称Qlast

使用权限Q所有用?

使用方式Qshell>> last [options]

说明Q显C系l开Z来获是从每月初登入者的讯息

把计?

-R 省略 hostname 的栏?
-num 展示?num ?
username 展示 username 的登入讯?
tty 限制d讯息包含l端Z?

范例Q?

shell>> last -R -2
johnney pts/1 Mon Aug 14 20:42 still logged in
johnney pts/0 Mon Aug 14 19:59 still logged in

wtmp begins Tue Aug 1 09:01:10 2000 ### /var/log/wtmp


shell>> last -2 minery
minery pts/0 140.119.217.115 Mon Aug 14 18:37 - 18:40 (00:03)
minery pts/0 140.119.217.115 Mon Aug 14 17:22 - 17:24 (00:02)

wtmp begins Tue Aug 1 09:01:10 2000




名称:login

q个命o都不会就不要q算了!呵呵我也不在q里多费W墨耽误大家好青春了^_^



名称Qpasswd

使用权限Q所有用?

使用方式Qpasswd [-k] [-l] [-u [-f]] [-d] [-S] [username]

说明Q用来更改用者的密码

参数Q?
-k

-l

-u

-f

-d 关闭使用者的密码认证功能, 使用者在d时将可以不用输入密码, 只有具备 root 权限的用者方可?

-S 昄指定使用者的密码认证U类, 只有具备 root 权限的用者方可?

[username] 指定帐号名称.



名称 : who
使用权线 : 所有用者都可?

使用方式 : who - [husfV] [user]

说明 : 昄pȝ中有那些使用者正在上面,昄的资料包含了使用?IDQ用的l端机,从那边连上来的,上线旉Q呆滞时_CPU 使用量,动作{等?

把计 :

-h : 不要昄标题?
-u : 不要昄使用者的动作/工作
-s : 使用短的格式来显C?
-f : 不要昄使用者的上线位置
-V : 昄E式版本
名称Q?etc/aliases
使用权限Q系l管理?
使用方式Q?L newaliases 更新资料?
说明Q?
sendmail 会用一个在 /etc/aliases 中的档案做用者名U{换的动作。当 sendmail 收到一个要送给 xxx 的信Ӟ它会依据 aliases档的内容送给另一个用者。这个功能可以创造一个只有在信gpȝ内才有效的用者。例?mailing list ׃用到q个功能Q在 mailinglist 中,我们可能会创造一个叫 redlinux@link.ece.uci.edu ?mailinglistQ但实际上ƈ没有一个叫 redlinux 的用者。实?aliases 档的内容是将送给q个使用者的信都收给 mailing list 处理E式负责分送的工作?

/etc/aliases 是一个文字模式的档案Qsendmail 需要一个二q位格式?/etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一?sendmail 所能了解的资料库。范例:
# newaliases

下面命o会做相同的事Q?
# sendmail -bi

相关命o:
mail, mailq, newaliases, sendmail

?mail [q回]
名称Qmail

使用权限Q所有用?


使用方式Qmail [-iInv] [-s subject] [-c cc-addr] [-b bcc-addr] user1 [user 2 ...]


说明Q?
mail 不仅只是一个指令, mail q是一个电(sh)子邮件程式,不过利用 mail 来读信的人应该很吧Q对于系l管理者来?mail 很有用Q因为管理者可以用 mail 写成 script Q定期寄一些备忘录提醒pȝ的用者?


参数Q?
i 忽略 tty 的中断讯受?(interrupt)
I 设成互动模式?(Interactive)
v 列印息,例如送信的地炏V状态等{?(verbose)
n 不读?mail.rc 讑֮档?
s 邮g标题?
c cc 邮g地址?
b bcc 邮g地址?


范例Q?


信仉给一个或以上的电(sh)子邮件地址Q由于没有加入其他的选项Q用者必输入标题与信g的内容等。?user2 没有L位置Q就会送给邮g伺服器的 user2 使用者?



mail user1@email.address
mail user1@email.address user2



?mail.txt 的内容寄l?user2 同时 cc l?user1 。如果将q一行指令设?cronjob 可以定时将备忘录寄l系l用者?

mail -s 标题 -c user1 user2 < mail.txt



指oQmesg
使用权限 : 所有用?

使用方式 : mesg [y|n]

说明 Q?军_是否允许其他Z讯息到自ql端Z?


把计 ?

y : 允许讯息传到l端Z面上?
n : 不允许讯息传到终端机介面??
如果没有讑֮Q则讯息传递与否则q端机界面目前状态而定?

例子 :
改变目前讯息讑֮Q改成不允许讯息传到l端Z面上 :
mesg n


?mesg 相关的指令有Q?talkQwriteQwall?


名称Q?etc/aliases
使用权限Q系l管理?
使用方式Q?newaliases
说明Q?
sendmail 会用一个在 /etc/aliases 中的档案做用者名U{换的动作。当 sendmail 收到一个要送给 xxx 的信Ӟ它会依据 aliases档的内容送给另一个用者。这个功能可以创造一个只有在信gpȝ内才有效的用者。例?mailing list ׃用到q个功能Q在 mailinglist 中,我们可能会创造一个叫 redlinux@link.ece.uci.edu ?mailinglistQ但实际上ƈ没有一个叫 redlinux 的用者。实?aliases 档的内容是将送给q个使用者的信都收给 mailing list 处理E式负责分送的工作?

/etc/aliases 是一个文字模式的档案Qsendmail 需要一个二q位格式?/etc/aliases.db。newaliases 的功能传是将 /etc/aliases 转换成一?sendmail 所能了解的资料库?

参数Q没有Q何参数?范例Q?
# newaliases

下面命o会做相同的事Q?
# sendmail -bi

相关命o:
mail, mailq, newaliases, sendmail



名称 : talk
使用权限 : 所有用?

使用方式 :

talk person [ttyname]
说明 : 与其他用者对?

把计 :

person : 预备对谈的用者帐P如果该用者在其他机器上,则可输入 person@machine.name
ttyname : 如果使用者同时有两个以上?tty q线Q可以自行选择合适的 tty 传讯?

例子.1 :

与现在机器上的用者Rollaend对谈Q此?Rollaend 只有一个连U?:
talk Rollaend


接下来就是等Rollaend回应Q若Rollaend接受Q则Rollaend输入 `talk jzlee`卛_开始对谈,l束h ctrl+c

例子.2 :与linuxfab.cx上的使用者Rollaend对谈Q用pts/2来对?:
talk Rollaend@linuxfab.cx pts/2


接下来就是等Rollaend回应Q若Rollaend接受Q则Rollaend输入 `talk jzlee@jzlee.home`卛_开始对谈,l束h ctrl+c

注意 : 若萤q的字会出现不正常的字元Q试着?ctrl+l 更新萤幕画面?


名称 : wall
使用权限 : 所有用?

使用方式 :

wall [ message ]
使用说明Q?
wall 会将讯息传给每一?mesg 讑֮?yes 的上U用者。当使用l端Z面做为标准传入时, 讯息l束旉加上 EOF (通常?Ctrl+D)?

例子 :

传讯?hi" l每一个用?:
wall hi




名称 : write
使用权限 : 所有用?

使用方式 :

write user [ttyname]
说明 : 传讯息给其他使用?

把计 :

user : 预备传讯息的使用者帐?
ttyname : 如果使用者同时有两个以上?tty q线Q可以自行选择合适的 tty 传讯?

例子.1 :

传讯息给 RollaendQ此?Rollaend 只有一个连U?:
write Rollaend


接下来就是将讯息打上去,l束h ctrl+c

例子.2 :传讯息给 RollaendQRollaend 的连U有 pts/2Qpts/3 :
write Rollaend pts/2


接下来就是将讯息打上去,l束h ctrl+c

注意 : 若对方设?mesg nQ则此时讯席无法传l对?

名称Qkill
使用权限Q所有用?

使用方式Q?

kill [ -s signal | -p ] [ -a ] pid ...
kill -l [ signal ]
说明Qkill 送出一个特定的信号 (signal) l行E?id ?pid 的行E根据该信号而做特定的动? 若没有指? 预设是送出l止 (TERM) 的信?
把计?

-s (signal) : 其中可用的讯h HUP (1), KILL (9), TERM (15), 分别代表着重跑, 砍掉, l束; 详细的信号可以用 kill -l
-p : 印出 pid , q不送出信号
-l (signal) : 列出所有可用的信号名称
范例Q?

?pid ?323 的行E砍?(kill) :
kill -9 323

?pid ?456 的行E重?(restart) :
kill -HUP 456




名称Qnice
使用权限Q所有用?

使用方式Qnice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command [arg...]]

说明Q以更改q的优先序来执行E式, 如果未指定程? 则会印出目前的排E优先序, 内定?adjustment ?10, 范围?-20 (最高优先序) ?19 (最低优先序)


把计?

-n adjustment, -adjustment, --adjustment=adjustment 皆ؓ该原有优先序的增加 adjustment
--help 昄求助讯息
--version 昄版本资讯
范例Q?
?ls 的优先序?1 q执?:
nice -n 1 ls

?ls 的优先序?10 q执?:
nice ls?ls 的优先序?10 q执?

注意 : 优先?(priority) Z业系l用来决?CPU 分配的参敎ͼLinux 使用『回合制(round-robin)』的演算法来?CPU 排程Q优先序高Q所可能获得?CPU旉p多?



名称Qps
使用权限Q所有用?
使用方式Qps [options] [--help]
说明Q显C瞬间行E?(process) 的动?
参数Q?
ps 的参数非常多, 在此仅列出几个常用的参数q大略介l含?
-A 列出所有的行程
-w 昄加宽可以昄较多的资?
-au 昄较详l的资讯
-aux 昄所有包含其他用者的行程

au(x) 输出格式 :

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有?
PID: pid
%CPU: 占用?CPU 使用?
%MEM: 占用的记忆体使用?
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: l端的次要装|号?(minor device number of tty)
STAT: 该行E的状?
D: 不可中断的静?(通?zhn)□□~bq行 I/O 动作)
R: 正在执行?
S: 静止状?
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有_的记忆体分页可分?
<: 高优先序的行E?
N: 低优先序的行E?
L: 有记忆体分页分配q在记忆体?(xpȝ或捱A I/O)
START: 行程开始时?
TIME: 执行的时?
COMMAND:所执行的指?

范例Q?

ps
PID TTY TIME CMD
2791 ttyp0 00:00:00 tcsh
3092 ttyp0 00:00:00 ps
% ps -A
PID TTY TIME CMD
1 ? 00:00:03 init
2 ? 00:00:00 kflushd
3 ? 00:00:00 kpiod
4 ? 00:00:00 kswapd
5 ? 00:00:00 mdrecoveryd
.......
% ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.7 1096 472 ? S Sep10 0:03 init [3]
root 2 0.0 0.0 0 0 ? SW Sep10 0:00 [kflushd]
root 3 0.0 0.0 0 0 ? SW Sep10 0:00 [kpiod]
root 4 0.0 0.0 0 0 ? SW Sep10 0:00 [kswapd]
........



名称Qpstree
使用权限Q所有用?
使用方式Q?
pstree [-a] [-c] [-h|-Hpid] [-l] [-n] [-p] [-u] [-G|-U] [pid|user]
pstree -V
说明Q将所有行E以树状图显C? 树状囑ְ会以 pid (如果有指? 或是?init q个基本行程为根 (root) ,如果有指定用?id , 则树状图会只昄该用者所拥有的行E?
参数Q?
-a 昄该行E的完整指o及参? 如果是被记忆体置换出ȝ行程则会加上括号
-c 如果有重覆的行程? 则分开列出 (预设值是会在前面加上 *
范例Q?

pstree

init-+-amd
|-apmd
|-atd
|-httpd---10*[httpd]
%pstree -p
init(1)-+-amd(447)
|-apmd(105)
|-atd(339)
%pstree -c
init-+-amd
|-apmd
|-atd
|-httpd-+-httpd
| |-httpd
| |-httpd
| |-httpd
....



名称Qrenice
使用权限Q所有用?

使用方式Qrenice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]

说明Q重新指定一个或多个行程(Process)的优先序(一个或多个根据所下的参数而定)

把计?

-p pid 重新指定行程?id ?pid 的行E的优先?
-g pgrp 重新指定行程组(process group)?id ?pgrp 的行E?(一个或多个) 的优先序
-u user 重新指定行程拥有者ؓ user 的行E的优先?
范例Q?
行E?id ?987 ?32 的行E与行程拥有者ؓ daemon ?root 的优先序L?1 :
renice +1 987 -u daemon root -p 32

注意 : 每一个行E?Process)都有一个唯一?(unique) id?



名称Qtop
使用权限Q所有用?

使用方式Qtop [-] [d delay] [q] [c] [S] [s] [i] [n] [b]

说明Q即时显C?process 的动?

把计?

d : 改变昄的更新速度Q或是在交谈式指令列( interactive command)?s
q : 没有M延迟的显C速度Q如果用者是?superuser 的权限,?top 会以最高的优先序执?
c : 切换昄模式Q共有两U模式,一是只昄执行档的名称Q另一U是昄完整的\径与名称S : 累积模式Q会己完成或消q子行E?( dead child process ) ?CPU time 累积h
s : 安全模式Q将交谈式指令取? 避免潜在的危?
i : 不显CZQ何闲|?(idle) 或无?(zombie) 的行E?
n : 更新的次敎ͼ完成后将会退?top
b : Ҏ(gu)档模式,搭配 "n" 参数一起用,可以用来?top 的结果输出到档案?

范例Q?
昄更新十次后退?;
top -n 10

使用者将不能利用交谈式指令来对行E下命o :
top -s

更新显CZơ的l果输入到名UCؓ top.log 的档案里 :
top -n 2 -b < top.log

名称Qskill

使用权限Q所有用?

使用方式Q?skill [signal to send] [options] 选择E序的规?

说明Q?

送个讯号l正在执行的E序,预设的讯息ؓ TERM (中断) , 较常使用的讯息ؓ HUP , INT , KILL , STOP , CONT ,?0

讯息有三U写?分别?-9 , -SIGKILL , -KILL , 可以使用 -l ?-L 已列出可使用的讯息?

一般参敎ͼ

-f 快速模?未完成

-i 互动模式/ 每个动作要被确?

-v 详细输出/ 列出所选择E序的资?

-w 警告讯息/ 未完成

-n 没有动作/ 昄E序代号

参数Q选择E序的规则可以是, l端Z?使用者名U?E序代号,命o名称?

-t l端Z?( tty ?pty )

-u 使用者名U?

-p E序代号 ( pid )

-c 命o名称 可用的讯号:

以下列出已知的讯号名U?讯号代号,功能?

名称 (代号) 功能/ 描述

ALRM 14 d

HUP 1 d

INT 2 d

KILL 9 d/ 关闭

PIPE 13 d

POLL d

PROF d

TERM 15 d

USR1 d

USR2 d

VTALRM d

STKFLT d/ 只适用于i386, m68k, arm ?ppc 体

UNUSED d/ 只适用于i386, m68k, arm ?ppc 体

TSTP 停止 /产生与内容相关的行ؓ

TTIN 停止 /产生与内容相关的行ؓ

TTOU 停止 /产生与内容相关的行ؓ

STOP 停止 /关闭

CONT 从新启动 /如果在停止状态则从新启动,否则忽略

PWR 忽略 /在某些系l中会离开

WINCH 忽略

CHLD 忽略

ABRT 6 核心

FPE 8 核心

ILL 4 核心

QUIT 3 核心

SEGV 11 核心

TRAP 5 核心

SYS 核心 /或许未实作

EMT 核心 /或许未实作

BUS 核心 /核心p|

XCPU 核心 /核心p|

XFSZ 核心 /核心p|

范例Q?

停止所有在 PTY 装置上的E序
skill -KILL -v pts/*

停止三个使用?user1 , user2 , user3
skill -STOP user1 user2 user3



其他相关的命? kill



名称Qexpr

使用权限Q所有用?
### 字串长度

shell>> expr length "this is a test"
14

### 数字商数

shell>> expr 14 % 9
5

### 从位|处抓取字串

shell>> expr substr "this is a test" 3 5
is is

### 数字?only the first character

shell>> expr index "testforthegame" e
2

### 字串真实重现

shell>> expr quote thisisatestformela
thisisatestformela




名称: tr

### 1.比方说要把目录下所有的大写档名换ؓ写档名?

g有很多方式,"tr"是其中一U?

#!/bin/sh

dir="/tmp/testdir";
files=`find $dir -type f`;
for i in $files
do
dir_name=`dirname $i`;
ori_filename=`basename $i`
new_filename=`echo $ori_filename | tr [:upper:] [:lower:]` > /dev/null;
#echo $new_filename;
mv $dir_name/$ori_filename $dir_name/$new_filename
done


### 2.自己试验?..lowercase to uppercase

tr abcdef...[del] ABCDE...[del]
tr a-z A-Z
tr [:lower:] [:upper:]

shell>> echo "this is a test" | tr a-z A-Z > www
shell>> cat www
THIS IS A TEST

### 3.L不想要的字串

shell>> tr -d this ### L有关 t.e.s.t
this

man
man
test
e

### 4.取代字串

shell>> tr -s "this" "TEST"
this
TEST
th
TE




指oQclear
用途:清除萤幕用?

使用Ҏ(gu)Q在 console 上输?clear?


名称: reset, tset
使用Ҏ(gu): tset [-IQqrs] [-] [-e ch] [-i ch] [-k ch] [-m mapping] [terminal]

使用说明:

reset 其实?tset 是一同个命oQ它的用途是讑֮l端机的状态。一般而言Q这个命令会自动的从环境变数、命令列或是其它的组态档军_目前l端机的型态。如果指定型态是 ? 的话Q这个程式会要求使用者输入终端机的型别?

׃q个E式会将l端回原始的状态,除了?login 时用外Q当pȝl端机因为程式不正常执行而进入一些奇怪的状态时Q你也可以用它来重设l端机o 例如不小心把二进位档?cat 指oq到l端机,怼有终端机不再回应键盘输入Q或是回应一些奇怪字元的问题。此时就可以?reset 终端机回复臛_始状态。选项说明:


-p
终端机cd昄在萤q上Q但不做讑֮的动作。这个命令可以用来取得目前终端机的类别?
-e ch
?erase 字元设成 ch
-i ch
中断字元设?ch
-k ch
删除一行的字元设成 ch
-I
不要做设定的动作Q如果没有用选项 -Q 的话Qerase、中断及删除字元的目前g然会送到萤幕上?
-Q
不要昄 erase、中断及删除字元的值到萤幕上?
-r
终端机cd印在萤幕上?
-s
设?TERM 用的命o用字串的型式送到l端ZQ通常?.login ?.profile 中用
范例:
让用者输入一个终端机型别q将l端到该型别的预讄态?
# reset ?



?erase 字元讑֮ control-h
# reset -e ^B



设定用的字串显C在萤幕?
# reset -s
Erase is control-B (^B).
Kill is control-U (^U).
Interrupt is control-C (^C).
TERM=xterm;

名称Qcompress

使用权限Q所有用?


使用方式Qcompress [-dfvcV] [-b maxbits] [file ...]


说明Q?
compress 是一个相当古老的 unix 档案压羃指oQ压~后的档案会加上一?.Z 延档名以区别未压羃的档案,压羃后的档案可以?uncompress 解压。若要将C档案压成一个压~档Q必d档?tar h再压~。由?gzip 可以产生更理想的压羃比例Q一般h多已改用 gzip 为档案压~工兗?


参数Q?
c 输出l果x准输备(一般指荧幕Q?
f 写入档案Q若目的档已l存在,则会被覆?(force)
v 程式执行的讯息印在荧幕?(verbose)
b 讑֮共同字串数的上限Q以位元计算Q可以设定的gؓ 9 ?16 bits 。由于D大,能用的共同字串?多Q压~比例就大Q所以一般用预讑ր?16 bits (bits)
d 压~档解压~?
V 列出版本讯息


范例Q?


?source.dat 压羃?source.dat.Z Q若 source.dat.Z 已经存在Q内容则会被压羃档覆盖?



compress -f source.dat



?source.dat 压羃?source.dat.Z Qƈ列印出压~比例?
-v ?-f 可以一起?



compress -vf source.dat



压~后的资料输出后再导?target.dat.Z 可以改变压羃档名?



compress -c source.dat > target.dat.Z



-b 的D大,压羃比例p大,范围?9-16 Q预讑ր是 16 ?



compress -b 12 source.dat



?source.dat.Z 解压?source.dat Q若档案已经存在Q用者按 y 以确定覆盖档案,若?-df E式则会自动覆盖档案。由于系l会自动加入 .Z 为g伸档名,所?source.dat 会自动当?source.dat.Z 处理?



compress -d source.dat
compress -d source.dat.Z




名称Q?lpd

使用权限Q?所有用?

使用方式Qlpd [-l] [#port]
lpd 是一个常ȝ印表机管理程式,它会Ҏ(gu) /etc/printcap 的内Ҏ(gu)理本地或远端的印表机?etc/printcap 中定义的每一个印表机必须?/var/lpd 中有一个相对应的目录,目录中以 cf 开头的档案表示一个等待送到适当装置的印表工作。这个档案通常是由 lpr 所产生?

lpr ?lpd l成了一个可以离U工作的pȝQ当你?lpr Ӟ印表Z需要能立即可用Q甚至不用存在。lpd 会自动监视印表机的状况,当印表机上线后,便立卛_档案送交处理。这个得所有的应用E式不必{待印表机完成前一工作?

参数Q?


-l: 一些除错讯息显C在标准输出上?
#port: 一般而言Qlpd 会?getservbyname 取得适当?TCP/IP portQ你可以使用q个参数 lpd 使用指定?port?

范例Q?
q个E式通常是由 /etc/rc.d 中的E式在系l启始阶D|行?



名称 lpq
-- 昄列表列中未完成的工作 用法

lpq [l] [P] [user]

说明
lpq 会显C由 lpd 所理的列表机贮列中未完成的项目?

范例
范例 1. 昄所有在 lp 列表列中的工?


# lpq -PlpRank Owner Job Files Total Size1st root 238 (standard input) 1428646 bytes




相关函数
lpr,lpc,lpd



名称Q?lpr

使用权限Q?所有用?

使用方式Qlpr [ -P printer ]
档案或是由标准输入送进来的资料送到印表列之中,印表机管理程?lpd 会在E后这个档案送给适当的程式或装置处理。lpr 可以用来料资送给本地或是q端的主机来处理?

参数Q?


-p Printer: 资料送至指定的印表机 PrinterQ预讑րgؓ lp?

范例Q?
?www.c ?kkk.c 送到印表?lp?
lpr -Plp www.c kkk.c




名称: lprm
-- 一个工作由印表列中U除 用法

/usr/bin/lprm [P] [file...]

说明
未完成的印表机工作会被攑֜印表列之中,q个命o可用来将常未送到印表机的工作取消。由于每一个印表机都有一个独立的贮列Q你可以?-P q个命o讑֮惌作用的印列机。如果没有设定的话,会用系l预讄印表机?

q个命o会检查用者是否有_的权限删除指定的档案Q一般而言Q只有档案的拥有者或是系l管理员才有q个权限?

范例
印表机 hpprinter 中的W?1123 号工作移?


lprm -Phpprinter 1123


第 1011 号工作由预设印表ZU除


lprm 1011




名称Q?fdformat

使用权限Q?所有用?

使用方式Qfdformat [-n] device

使用说明 :
Ҏ(gu)定的软碟|进行低阶格式化。用这个指令对软碟格式化的时候,最好指定像是下面的装置Q?


/dev/fd0d360 碟?A: Q磁片ؓ 360KB 碟
/dev/fd0h1440 碟?A: Q磁片ؓ 1.4MB 碟
/dev/fd1h1200 碟?B: Q磁片ؓ 1.2MB 碟
如果使用像是 /dev/fd0 之类的装|,如果里面的磁不是标准容量,格式化可能会p|。在q种情况之下Q用者可以用 setfdprm 指o先行指定必要参数?

参数Q?


-n 关闭认功能。这个选项会关闭格式化之后的确认步骤?

范例Q?

fdformat -n /dev/fd0h1440

磁机 A 的磁片格式化?1.4MB 的磁片。ƈ且省略确认的步骤?



名称Q?mformat

使用权限Q?所有用?

使用方式Q?

mformat [-t cylinders] [-h heads] [-s sectors] [-l volume_label] [-F] [-I fsVer-sion] [-S sizecode] [-2 sectors_on_track_0] [-M software_sector_size] [-a] [-X] [-C] [-H hidden_sectors] [-r root_sectors] [-B boot_sector] [-0 rate_on_track_0] [-A rate_on_other_tracks] [-1] [-k] drive:

在已l做q低阶格式化的磁片上建立 DOS 档案pȝ。如果在~译 mtools 的时候把 USE_2M 的参数打开Q部分与 2M 格式相关的参数就会发生作用。否则这些参敎ͼ像是 S,2,1,MQ不会发生作用?

参数Q?

-t 柱QsynliderQ数
-h 头QheadQ数
-s 每一轨的磁区数
-l 标签
-F 磁格式化?FAT32 格式Q不q这个参数还在实验中?
-I 讑֮ FAT32 中的版本受这当然也还在实验中?
-S 区大小代码Q计方式ؓ sector = 2^(大小代码+7)
-c 丛QclusterQ的区数。如果所l定的数字会D丛数超q?FAT 表的限制Qmformat 会自动放大磁区数?
-s
-M 软体区大小。这个数字就是系l回报的区大小。通常是和实际的大相同?
-a 如果加上q个参数Qmformat 会生一l?Atari pȝ的序Lq块软碟?
-X Y格式化?XDF 格式。用前必须先用 xdfcopy 指o对Y作低阶格式化的动作?
-C 产生一个可以安?MS-DOS 档案pȝ的磁媄像档Qdisk imageQ。当然对一个实体磁机下这个参数是没有意义的?
-H 隐藏区的数目。这通常适用在格式化碟的分割区Ӟ因ؓ通常一个分割区的前面还有分割表。这个参数未l测试,能不用就不用?
-n 碟序号
-r 根目录的大小Q单位是区数。这个参数只?FAT12 ?FAT16 有效?
-B 使用所指定的档案或是设备的开机磁区做片磁片或分割区的开机磁区。当然当中的体参数会随之更动?
-k 量保持原有的开机磁区?
-0 W?0 轨的资料传输?
-A W?0 轨以外的资料传输?
-2 使用 2m 格式
-1 不?2m 格式

范例Q?
mformat a:

q样会用预设值把 a: Q就?/dev/fd0Q里的磁片格式化?



名称Q?mkdosfs

使用权限Q?所有用?

使用方式Q?mkdosfs [ -c | -l filename ]
[ -f number_of_FATs ]
[ -F FAT_size ]
[ -i volume_id ]
[ -m message_file ]
[ -n volume_name ]
[ -r root_dir_entry ]
[ -s sector_per_cluster ]
[ -v ]
device
[ block_count ]



说明Q?建立 DOS 档案pȝ?device 指你惌建立 DOS 档案pȝ的装|代受像?/dev/hda1 {等?block_count 则是你希望配|的区块数。如?block_count 没有指定则系l会自动替你计算W合该装|大的区块数?

参数Q?


-c 建立档案pȝ之前先检查是否有坏轨?
-l 从得定的档案中读取坏轨记录?
-f 指定档案配置表(FAT , File Allocation Table)的数量。预讑րgؓ 2 。目?Linux ?FAT 档案pȝ不支援超q?2 ?FAT 表。通常q个不需要改?
-F 指定 FAT 表的大小Q通常?12 或是 16 个位元组?2 位元l通常用于碟片,16 位元l用于一般硬的分割区,也就是所谓的 FAT16 格式。这个值通常pȝ会自己选定适当的倹{在碟片上?FAT16 通常不会发生作用Q反之在碟上用 FAT12 亦然?
-i 指定 Volume ID。一般是一?4 个位元组的数字,像是 2e203a47 。如果不l系l会自己产生?
-m 当用者试囄q片片或是分割区开机,而上面没有作业系l时Q系l会l用者一D警告讯息。这个参数就是用来变更这个讯息的。你可以先用档案~辑好,然后用这个参数指定,或是?
-m -
q样pȝ会要求你直接输入q段文字。要特别注意的是Q档案里的字串长度不要超q?418 个字Q包括展开的蟩栏符PTABQ和换行W号Q换行符号在 DOS 底下两个字元!Q?
-n 指定 Volume NameQ就是磁标{。如同在 DOS 底下?format 指o一Pl不l都可以。没有预讑ր{?
-r 指定根目录底下的最大档案数。这里所谓的档案数包括目录。预讑ր是在Y上?112 或是 224 Q在碟上是 512。没事不要改q个数字?
-s 每一个磁丛(clusterQ的区数。必L 2 的次Ҏ(gu)。不q除非你知道你在作什么,q个g要ؕl?
-v 提供额外的讯?

范例Q?
mkdosfs -n Tester /dev/fd0 ?A 槽里的磁片格式化ؓ DOS 格式Qƈ标{设?Tester

HotJava 2006-11-23 15:02 发表评论
]]>
利用DES加密法保护Java源代?http://www.tkk7.com/HotJava/archive/2006/11/03/78982.htmlHotJavaHotJavaFri, 03 Nov 2006 12:11:00 GMThttp://www.tkk7.com/HotJava/archive/2006/11/03/78982.htmlhttp://www.tkk7.com/HotJava/comments/78982.htmlhttp://www.tkk7.com/HotJava/archive/2006/11/03/78982.html#Feedback0http://www.tkk7.com/HotJava/comments/commentRss/78982.htmlhttp://www.tkk7.com/HotJava/services/trackbacks/78982.html 作者:李琴 李家明 ? 出处Q计机与信息技?/span>

 ??/strong>Q本文首先分析了Java源代码需要加密的原因Q简要介l了DES法及Java密码体系和Java密码扩展Q最后说明了利用DES加密法保护Java源代码的Ҏ(gu)及步骤?br />
  关键?/strong> Java 加密 DES法

  Java语言是一U非帔R用?a class="bluekey" target="_blank">|络~程的语aQ它的基本结构与C++极ؓ怼Q但抛弃?a class="bluekey" target="_blank">C/C++中指针等内容Q同时它吸收了Smalltalk、C++面向对象的编E思想。它h单性、鲁性、可UL性、动态性等特点。这些特点得Java成ؓ跨^台应用开发的一U规范,在世界范围内q泛传?br />
  加密Java源码的原?/strong>

  Java源代码经q编译以后在JVM中执行。由于JVM界面是完全透明的,Javac?/a>文g能够很容易通过反编?/a>器重新{换成源代码。因此,所有的法、类文g{都可以以源代码的Ş式被公开Q得Y件不能受C护,Z保护产权Q一般可以有以下几种Ҏ(gu)Q?br />
  Q?Q?模糊"cLӞ加大?a class="bluekey" target="_blank">~译?/a>反编译源代码文g的难度。然而,可以修改反编译器Q之能够处理这些模p类文g。所以仅仅依?模糊cL?来保证代码的安全是不够的?br />
  Q?Q流行的加密工具?a class="bluekey" target="_blank">源文?/a>q行加密Q比?a class="bluekey" target="_blank">PGP
Q?a class="bluekey" target="_blank">Pretty Good PrivacyQ或GPGQ?a class="bluekey" target="_blank">GNU Privacy GuardQ。这Ӟ最l用户在q行应用之前必须先进?a class="bluekey" target="_blank">解密。但解密之后Q最l用户就有了一份不加密的类文gQ这和事先不q行加密没有什么差别?br />
  Q?Q加密类文gQ在q行中JVM用定制的c装载器QClass LoaderQ解密类文g。Javaq行时装入字节码的机刉含地意味着可以对字节码q行修改。JVM每次装入cL件时都需要一个称为ClassLoader的对象,q个对象负责把新的类装入正在q行的JVM。JVMlClassLoader一个包含了待装入类Q例如java.lang.ObjectQ名字的字符Ԍ然后由ClassLoader负责扑ֈcLӞ装入原始数据Qƈ把它转换成一个Class对象?br />
  用户下蝲的是加密q的cLӞ在加密类文g装入之时q行解密Q因此可以看成是一U即时解密器。由于解密后的字节码文g永远不会保存?a class="bluekey" target="_blank">文gpȝQ所?a class="bluekey" target="_blank">H密者很隑־到解密后的代码?

  ׃把原始字节码转换成Class对象的过E完全由pȝ负责Q所以创建定制ClassLoader对象其实q不困难Q只需先获得原始数据,接着可以进行包含解密在内的M转换?br />
  Java密码体系和Java密码扩展

  Java密码体系(JCA)和Java密码扩展(JCE)的设计目的是为Java提供与实现无关的加密函数API。它们都用factoryҎ(gu)来创建类的例E,然后把实际的加密函数委托l提供者指定的底层引擎,引擎中ؓcL供了服务提供者接口在Java中实现数据的加密/解密Q是使用其内|的JCE(Java加密扩展)来实现的?a class="bluekey" target="_blank">Java开?/a>工具?.1为实现包?a class="bluekey" target="_blank">数字{֐和信息摘要在内的加密功能Q推Z一U基于供应商的新型灵zd用编E接口。Java密码体系l构支持供应商的互操?同时支持g和Y件实现?br />
  Java密码?a class="bluekey" target="_blank">l构设计遵@两个原则:

  (1)法的独立性和可靠性?br />
  (2)实现的独立性和怺作用性?br />
  法的独立性是通过定义密码服务cL获得。用户只需了解密码法的概?而不用去兛_如何实现q些概念。实现的独立性和怺作用性通过密码服务提供器来实现。密码服务提供器是实C个或多个密码服务的一个或多个E序包。Y件开发商Ҏ(gu)一定接?各U算法实现后,打包成一个提供器,用户可以安装不同的提供器。安装和配置提供?可将包含提供器的ZIP?a class="bluekey" target="_blank">JAR文g攑֜CLASSPATH?再编辑Java安全属性文件来讄定义一个提供器。Javaq行环境Sun版本? 提供一个缺省的提供器Sun?br />
  下面介绍DES法及如何利用DES法加密和解?/a>cL件的步骤?br />
  DES法?/strong>

  DESQ?a class="bluekey" target="_blank">Data
Encryption StandardQ是发明最早的最q泛使用的分l对U加密算法。DES法的入口参数有三个Q?a class="bluekey" target="_blank">Key?a class="bluekey" target="_blank">Data、Mode。其?a class="bluekey" target="_blank">Key?个字节共64位,是DES法的工作密钥;Data也ؓ8个字?4位,是要被加密或被解密的数据QMode为DES的工作方式,有两U:加密或解密?br />
  DES法工作程如下Q若Mode为加密模式,则利用Key Ҏ(gu)据Dataq行加密Q?生成Data的密码Ş式(64位)作ؓDES的输出结果;如Mode密模式,则利用Key对密码Ş式的数据Dataq行解密Q还原ؓData的明码Ş式(64位)作ؓDES的输出结果。在通信|?/a>l的两端Q双方约定一致的KeyQ在通信的源点用KeyҎ(gu)心数据进行DES加密Q然后以密码形式在公共通信|(?a class="bluekey" target="_blank">?sh)话|?/a>Q中传输?a class="bluekey" target="_blank">通信|络的终点,数据到达目的地后Q用同样的Key对密码数据进行解密,便再C明码形式的核心数据。这P便保证了核心数据在公共通信|中传输的安全性和可靠性?br />
  也可以通过定期在通信|络的源端和目的端同时改用新的KeyQ便能更q一步提高数据的保密性?br />利用DES法加密的步?br />
  Q?Q生成一个安全密钥。在加密或解密Q何数据之前需要有一个密钥。密钥是随同被加密的应用E序一起发布的一D|据,密钥代码如下所C?br />
  【生成一个密钥代码?br />

//  生成一个可信Q的随机数?/span>
Secure Random sr  =   new  SecureRandom();
//  为我们选择的DES法生成一个KeyGenerator对象
KeyGenerator kg  =  KeyGenerator.getInstance ( " DES "  );
Kg.init (sr);
//  生成密钥
Secret Key key  =  kg.generateKey();
//  密钥数据保存ؓ文g供以后用,其中key FilenameZ存的文g?/span>
Util.writeFile (key Filename, key.getEncoded () );

2Q加密数据。得到密钥之后,接下来就可以用它加密数据。如下所C?br />
  【用密钥加密原始数据?br />
// 产生一个可信Q的随机数?/span>
SecureRandom sr = new SecureRandom();
//从密钥文件key Filename中得到密钥数?/span>
Byte rawKeyData [] = Util.readFile (key Filename);
// 从原始密钥数据创建DESKeySpec对象
DESKeySpec dks = new DESKeySpec (rawKeyData);
// 创徏一个密钥工厂,然后用它把DESKeySpec转换成Secret Key对象
SecretKeyFactory key Factory = SecretKeyFactory.getInstance("DES" );
Secret Key key 
= keyFactory.generateSecret( dks );
// Cipher对象实际完成加密操作
Cipher cipher = Cipher.getInstance( "DES" );
// 用密钥初始化Cipher对象
cipher.init( Cipher.ENCRYPT_MODE, key, sr );
// 通过ȝ文g获取需要加密的数据
Byte data [] = Util.readFile (filename);
// 执行加密操作
Byte encryptedClassData [] = cipher.doFinal(data );
// 保存加密后的文gQ覆盖原有的cL件。?/span>
Util.writeFile( filename, encryptedClassData );
Q?Q解密数据。运行经q加密的E序ӞClassLoader分析q解密类文g。操作步骤如下所C?

  【用密钥解密数据?br />
// 生成一个可信Q的随机数?/span>
SecureRandom sr = new SecureRandom();
// 从密钥文件中获取原始密钥数据
Byte rawKeyData[] = Util.readFile( keyFilename );
// 创徏一个DESKeySpec对象
DESKeySpec dks = new DESKeySpec (rawKeyData);
// 创徏一个密钥工厂,然后用它把DESKeySpec对象转换成Secret Key对象 
SecretKeyFactory key Factory = SecretKeyFactory.getInstance( "DES" );
SecretKey key 
= keyFactory.generateSecret( dks );
// Cipher对象实际完成解密操作
Cipher cipher = Cipher.getInstance( "DES" );
// 用密钥初始化Cipher对象
Cipher.init( Cipher.DECRYPT_MODE, key, sr );
// 获得l过加密的数?/span>
Byte encrypted Data [] = Util.readFile (Filename);
//执行解密操作
Byte decryptedData [] = cipher.doFinal( encryptedData );
// 然后解密后的数据{化成原来的类文g?/span>
上qC码与自定义的c装载器l合可以做到边解密边运行,从而vC护源代码的作用?br />
  l束?/a>

  加密/解密是数据传输中保证数据安全性和完整性的常用Ҏ(gu)QJava语言因其q_无关性,在Internet上的应用非常之广泛。用DES法加密Java源码在一定程度上能保护Y件的产权?br />

HotJava 2006-11-03 20:11 发表评论
]]>
Hibernate性能优化 http://www.tkk7.com/HotJava/archive/2006/11/02/78782.htmlHotJavaHotJavaThu, 02 Nov 2006 13:35:00 GMThttp://www.tkk7.com/HotJava/archive/2006/11/02/78782.htmlhttp://www.tkk7.com/HotJava/comments/78782.htmlhttp://www.tkk7.com/HotJava/archive/2006/11/02/78782.html#Feedback1http://www.tkk7.com/HotJava/comments/commentRss/78782.htmlhttp://www.tkk7.com/HotJava/services/trackbacks/78782.html本文依照HIBERNATE帮助文档Q一些网l书c及目l验整理而成Q只提供要点和思\Q具体做法可以留a探讨Q或是找一些更详细更有针对性的资料?

  初用HIBERNATE的h也许都遇到过性能问题Q实现同一功能Q用HIBERNATE与用JDBC性能相差十几倍很正常Q如果不及早调整Q很可能影响整个目的进度?/p>

  大体上,对于HIBERNATE性能调优的主要考虑点如?

  Ø 数据库设计调?/p>

  Ø HQL优化

  Ø API的正?如根据不同的业务cd选用不同的集合及查询API)

  Ø 主配|参?日志Q查询缓存,fetch_size, batch_size{?

  Ø 映射文g优化(ID生成{略Q二U缓存,延迟加蝲Q关联优?

  Ø 一U缓存的理

  Ø 针对二~存Q还有许多特有的{略

  Ø 事务控制{略?/p>

  1?数据库设?/p>

  a) 降低兌的复杂?/p>

  b) 量不用联合主?/p>

  c) ID的生成机Ӟ不同的数据库所提供的机制ƈ不完全一?/p>

  d) 适当的冗余数据,不过分追求高范式

  2?HQL优化

  HQL如果抛开它同HIBERNATE本n一些缓存机制的兌QHQL的优化技巧同普通的SQL优化技巧一P可以很容易在|上扑ֈ一些经验之谈?/p>

  3?主配|?/p>

  a) 查询~存Q同下面讲的~存不太一P它是针对HQL语句的缓存,卛_全一L语句再次执行时可以利用缓存数据。但是,查询~存在一个交易系l?数据变更频繁Q查询条件相同的机率q不?中可能会起反作用:它会白白耗费大量的系l资源但却难以派上用场?/p>

  b) fetch_sizeQ同JDBC的相兛_C用类|参数q不是越大越好,而应Ҏ(gu)业务特征去设|?/p>

  c) batch_size同上?/p>

  d) 生pȝ中,切记要关掉SQL语句打印?/p>

  4?~存

  a) 数据库~存:q~存是最高效和安全的Q但不同的数据库可管理的层次q不一P比如Q在ORACLE中,可以在徏表时指定整个表|于~存当中?/p>

  b) SESSION~存:在一个HIBERNATE SESSION有效Q这U缓存的可干预性不强,大多于HIBERNATE自动理Q但它提供清除缓存的Ҏ(gu)Q这在大扚w增加/更新操作是有效的。比如,同时增加十万条记录,按常规方式进行,很可能会发现OutofMemeroy的异常,q时可能需要手动清除这一U缓?Session.evict以及Session.clear

  c) 应用~存:在一个SESSIONFACTORY中有效,因此也是优化的重中之重,因此Q各cȝ略也考虑的较多,在将数据攑օq一U缓存之前,需要考虑一些前提条?

  i. 数据不会被第三方修改(比如Q是否有另一个应用也在修改这些数?)

  ii. 数据不会太大

  iii. 数据不会频繁更新(否则使用CACHE可能适得其反)

  iv. 数据会被频繁查询

  v. 数据不是关键数据(如涉及钱Q安全等斚w的问??/p>

  ~存有几UŞ式,可以在映文件中配置:read-only(只读Q适用于很变更的静态数?历史数据)Qnonstrict-read-writeQread-write(比较普遍的Ş式,效率一?Qtransactional(JTA中,且支持的~存产品较少)

  d) 分布式缓?同c)的配|一P只是~存产品的选用不同Q在目前的HIBERNATE中可供选择的不多,oscache, jboss cacheQ目前的大多数项目,对它们的用于集群的?特别是关键交易系l?都持保守态度。在集群环境中,只利用数据库U的~存是最安全的?/p>

  5?延迟加蝲

  a) 实体延迟加蝲:通过使用动态代理实?/p>

  b) 集合延迟加蝲:通过实现自有的SET/LISTQHIBERNATE提供了这斚w的支?/p>

  c) 属性gq加?

  6?Ҏ(gu)选用

  a) 完成同样一件事QHIBERNATE提供了可供选择的一些方式,但具体用什么方式,可能用性能/代码都会有媄响。显C,一ơ返回十万条记录(List/Set/Bag/Map{?q行处理Q很可能D内存不够的问题,而如果用Z游标(ScrollableResults)或Iterator的结果集Q则不存在这L问题?/p>

  b) Session的load/getҎ(gu)Q前者会使用二~存Q而后者则不用?/p>

  c) Query和list/iteratorQ如果去仔细研究一下它们,你可能会发现很多有意思的情况Q二者主要区?如果使用了SpringQ在HibernateTemplate中对应find,iteratorҎ(gu)):

  i. list只能利用查询~存(但在交易pȝ中查询缓存作用不?Q无法利用二U缓存中的单个实体,但list查出的对象会写入二~存Q但它一般只生成较少的执行SQL语句Q很多情况就是一?无关??/p>

  ii. iterator则可以利用二U缓存,对于一条查询语句,它会先从数据库中扑և所有符合条件的记录的IDQ再通过IDȝ存找Q对于缓存中没有的记录,再构造语句从数据库中查出Q因此很Ҏ(gu)知道Q如果缓存中没有MW合条g的记录,使用iterator会生N+1条SQL语句(N为符合条件的记录?

  iii. 通过iteratorQ配合缓存管理APIQ在量数据查询中可以很好的解决内存问题Q如:

  while(it.hasNext()){

  YouObject object = (YouObject)it.next();

  session.evict(youObject);

  sessionFactory.evice(YouObject.class, youObject.getId());

  }

  如果用listҎ(gu)Q很可能出OutofMemory错误了?/p>

  iv. 通过上面的说明,我想你应该知道如何去使用q两个方法了?/p>

  7?集合的选用

  在HIBERNATE 3.1文档的?9.5. Understanding Collection performance”中有详l的说明?/p>

  8?事务控制

  事务斚wҎ(gu)能有媄响的主要包括:事务方式的选用Q事务隔ȝ别以及锁的选用

  a) 事务方式选用:如果不涉及多个事务管理器事务的话Q不需要用JTAQ只有JDBC的事务控制就可以?/p>

  b) 事务隔离U别:参见标准的SQL事务隔离U别

  c) 锁的选用:(zhn)观?一般由具体的事务管理器实现)Q对于长事务效率低,但安全。乐观锁(一般在应用U别实现)Q如在HIBERNATE中可以定义VERSION字段Q显Ӟ如果有多个应用操作数据,且这些应用不是用同一U乐观锁机制Q则乐观锁会失效。因此,针对不同的数据应有不同的{略Q同前面许多情况一P很多时候我们是在效率与安全/准确性上找一个^衡点Q无论如何,优化都不是一个纯技术的问题Q你应该对你的应用和业务特征有够的了解?/p>

  9?扚w操作

  即是用JDBCQ在q行大批数据更新ӞBATCH与不使用BATCH有效率上也有很大的差别。我们可以通过讄batch_size来让其支持批量操作?/p>

  举个例子Q要扚w删除某表中的对象Q如“delete Account”,打出来的语句Q会发现HIBERNATE扑և了所有ACCOUNT的IDQ再q行删除Q这主要是ؓ了维护二U缓存,q样效率肯定高不了,在后l的版本中增加了bulk delete/updateQ但q也无法解决~存的维护问题。也是_׃有了二~存的维护问题,HIBERNATE的批量操作效率ƈ不尽如h?

  从前面许多要点可以看出,很多时候我们是在效率与安全/准确性上找一个^衡点Q无论如何,优化都不是一个纯技术的问题Q你应该对你的应用和业务特征有够的了解Q一般的Q优化方案应在架构设计期基本确定,否则可能D没必要的q工Q致佉K目g期,而作为架构师和项目经理,q要面对开发h员可能的抱怨,必竟Q我们对用户需求更改的控制力不大,但技?架构风险是应该在初期意识到ƈ制定好相关的对策?/p>

  q有一点要注意Q应用层的缓存只是锦上添花,永远不要把它当救命稻草,应用的根?数据库设计,法Q高效的操作语句Q恰当API的选择{?才是最重要的。?/p>

Hibernate的缓?**********************************

1、首先设|EhCacheQ徏立配|文件ehcache.xmlQ默认的位置在class-pathQ可以放C的src目录下:

Q?xml version="1.0" encoding="UTF-8"?Q?br />QehcacheQ?br /> QdiskStore path="java.io.tmpdir"/Q?
  QdefaultCache
   maxElementsInMemory="10000" Q?-- ~存最大数?--Q?br />   eternal="false" Q?-- ~存是否持久 --Q?br />   overflowToDisk="true" Q?-- 是否保存到磁盘,当系l当机时--Q?br />   timeToIdleSeconds="300" Q?-- 当缓存闲|nU后销?--Q?br />   timeToLiveSeconds="180" Q?-- 当缓存存?gu)znU后销?-Q?br />   diskPersistent="false"
   diskExpiryThreadIntervalSeconds= "120"/Q?
Q?ehcacheQ?/td>

  2、在Hibernate配置文g中设|:

Q?-- 讄Hibernate的缓存接口类Q这个类在Hibernate包中 --Q?br />Qproperty name="cache.provider_class"Qorg.hibernate.cache.EhCacheProviderQ?propertyQ?
 Q?-- 是否使用查询~存 --Q?br /> Qproperty name="hibernate.cache.use_query_cache"QtrueQ?propertyQ?br />  如果使用spring调用Hibernate的sessionFactory的话Q这栯|:
  Q?--HibernateSession工厂理 --Q?br />   Qbean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"Q?br />   Qproperty name="dataSource"Q?br />    Qref bean="datasource" /Q?br />   Q?propertyQ?br />   Qproperty name="hibernateProperties"Q?br />   QpropsQ?br />    Qprop key="hibernate.dialect"Qorg.hibernate.dialect.Oracle9DialectQ?propQ?br />    Qprop key="connection.provider_class"Qorg.hibernate.connection.C3P0ConnectionProviderQ?propQ?br />    Qprop key="hibernate.show_sql"QtrueQ?propQ?br />    Qprop key="hibernate.cache.use_query_cache"QtrueQ?propQ?br />    Qprop key="hibernate.cache.provider_class"Qorg.hibernate.cache.EhCacheProviderQ?propQ?br />   Q?propsQ?br /> Q?propertyQ?br /> Qproperty name="mappingDirectoryLocations"Q?br />  QlistQ?br />   QvalueQ?WEB-INF/classes/cn/rmic/manager/hibernate/Q?valueQ?br />  Q?listQ?br /> Q?propertyQ?
Q?beanQ?/td>

  说明一下:如果不设|“查询缓存”,那么hibernate只会~存使用load()Ҏ(gu)获得的单个持久化对象Q如果想~存使用findall()、list()、Iterator()、createCriteria()、createQuery(){方法获得的数据l果集的话,需要设|?br />hibernate.cache.use_query_cache true 才行

  3、在Hbm文g中添加<cache usage="read-only"/Q?br />
  4、如果需要“查询缓存”,q需要在使用Query或Criteria()时设|其setCacheable(true);属?br />
  5、实践出真知Q给一D|试程序,如果成功的话W二ơ查询时不会d数据?br />
package cn.rmic.hibernatesample;

import java.util.List;

import org.hibernate.CacheMode;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;

import cn.rmic.hibernatesample.hibernate.HibernateSessionFactory;
import cn.rmic.manager.po.Resources;

public class testCacheSelectList ...{

 /** *//**
 * @param args
 */
 public static void main(String[] args) ...{
  // TODO Auto-generated method stub

  Session s=HibernateSessionFactory.getSession();
  Criteria c=s.createCriteria(Resources.class);
  c.setCacheable(true);
  List l=c.list();
  // Query q=s.createQuery("From Resources r")
  // .setCacheable(true)
  // .setCacheRegion("frontpages") ;
  // List l=q.list();
  Resources resources=(Resources)l.get(0);
  System.out.println("-1-"+resources.getName());
  HibernateSessionFactory.closeSession();
  try ...{
   Thread.sleep(5000);
  } catch (InterruptedException e) ...{
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  s=HibernateSessionFactory.getSession();
  c=s.createCriteria(Resources.class);
  c.setCacheable(true);
  l=c.list();
  // q=s.createQuery("From Resources r").setCacheable(true)
  // .setCacheRegion("frontpages");
  // l=q.list();
  resources=(Resources)l.get(0);
  System.out.println("-2-"+resources.getName());
  HibernateSessionFactory.closeSession();
 }
}


HotJava 2006-11-02 21:35 发表评论
]]>
Hibernate性能优化 http://www.tkk7.com/HotJava/archive/2006/11/02/78781.htmlHotJavaHotJavaThu, 02 Nov 2006 13:33:00 GMThttp://www.tkk7.com/HotJava/archive/2006/11/02/78781.htmlhttp://www.tkk7.com/HotJava/comments/78781.htmlhttp://www.tkk7.com/HotJava/archive/2006/11/02/78781.html#Feedback0http://www.tkk7.com/HotJava/comments/commentRss/78781.htmlhttp://www.tkk7.com/HotJava/services/trackbacks/78781.html本文依照HIBERNATE帮助文档Q一些网l书c及目l验整理而成Q只提供要点和思\Q具体做法可以留a探讨Q或是找一些更详细更有针对性的资料?

  初用HIBERNATE的h也许都遇到过性能问题Q实现同一功能Q用HIBERNATE与用JDBC性能相差十几倍很正常Q如果不及早调整Q很可能影响整个目的进度?/p>

  大体上,对于HIBERNATE性能调优的主要考虑点如?

  Ø 数据库设计调?/p>

  Ø HQL优化

  Ø API的正?如根据不同的业务cd选用不同的集合及查询API)

  Ø 主配|参?日志Q查询缓存,fetch_size, batch_size{?

  Ø 映射文g优化(ID生成{略Q二U缓存,延迟加蝲Q关联优?

  Ø 一U缓存的理

  Ø 针对二~存Q还有许多特有的{略

  Ø 事务控制{略?/p>

  1?数据库设?/p>

  a) 降低兌的复杂?/p>

  b) 量不用联合主?/p>

  c) ID的生成机Ӟ不同的数据库所提供的机制ƈ不完全一?/p>

  d) 适当的冗余数据,不过分追求高范式

  2?HQL优化

  HQL如果抛开它同HIBERNATE本n一些缓存机制的兌QHQL的优化技巧同普通的SQL优化技巧一P可以很容易在|上扑ֈ一些经验之谈?/p>

  3?主配|?/p>

  a) 查询~存Q同下面讲的~存不太一P它是针对HQL语句的缓存,卛_全一L语句再次执行时可以利用缓存数据。但是,查询~存在一个交易系l?数据变更频繁Q查询条件相同的机率q不?中可能会起反作用:它会白白耗费大量的系l资源但却难以派上用场?/p>

  b) fetch_sizeQ同JDBC的相兛_C用类|参数q不是越大越好,而应Ҏ(gu)业务特征去设|?/p>

  c) batch_size同上?/p>

  d) 生pȝ中,切记要关掉SQL语句打印?/p>

  4?~存

  a) 数据库~存:q~存是最高效和安全的Q但不同的数据库可管理的层次q不一P比如Q在ORACLE中,可以在徏表时指定整个表|于~存当中?/p>

  b) SESSION~存:在一个HIBERNATE SESSION有效Q这U缓存的可干预性不强,大多于HIBERNATE自动理Q但它提供清除缓存的Ҏ(gu)Q这在大扚w增加/更新操作是有效的。比如,同时增加十万条记录,按常规方式进行,很可能会发现OutofMemeroy的异常,q时可能需要手动清除这一U缓?Session.evict以及Session.clear

  c) 应用~存:在一个SESSIONFACTORY中有效,因此也是优化的重中之重,因此Q各cȝ略也考虑的较多,在将数据攑օq一U缓存之前,需要考虑一些前提条?

  i. 数据不会被第三方修改(比如Q是否有另一个应用也在修改这些数?)

  ii. 数据不会太大

  iii. 数据不会频繁更新(否则使用CACHE可能适得其反)

  iv. 数据会被频繁查询

  v. 数据不是关键数据(如涉及钱Q安全等斚w的问??/p>

  ~存有几UŞ式,可以在映文件中配置:read-only(只读Q适用于很变更的静态数?历史数据)Qnonstrict-read-writeQread-write(比较普遍的Ş式,效率一?Qtransactional(JTA中,且支持的~存产品较少)

  d) 分布式缓?同c)的配|一P只是~存产品的选用不同Q在目前的HIBERNATE中可供选择的不多,oscache, jboss cacheQ目前的大多数项目,对它们的用于集群的?特别是关键交易系l?都持保守态度。在集群环境中,只利用数据库U的~存是最安全的?/p>

  5?延迟加蝲

  a) 实体延迟加蝲:通过使用动态代理实?/p>

  b) 集合延迟加蝲:通过实现自有的SET/LISTQHIBERNATE提供了这斚w的支?/p>

  c) 属性gq加?

  6?Ҏ(gu)选用

  a) 完成同样一件事QHIBERNATE提供了可供选择的一些方式,但具体用什么方式,可能用性能/代码都会有媄响。显C,一ơ返回十万条记录(List/Set/Bag/Map{?q行处理Q很可能D内存不够的问题,而如果用Z游标(ScrollableResults)或Iterator的结果集Q则不存在这L问题?/p>

  b) Session的load/getҎ(gu)Q前者会使用二~存Q而后者则不用?/p>

  c) Query和list/iteratorQ如果去仔细研究一下它们,你可能会发现很多有意思的情况Q二者主要区?如果使用了SpringQ在HibernateTemplate中对应find,iteratorҎ(gu)):

  i. list只能利用查询~存(但在交易pȝ中查询缓存作用不?Q无法利用二U缓存中的单个实体,但list查出的对象会写入二~存Q但它一般只生成较少的执行SQL语句Q很多情况就是一?无关??/p>

  ii. iterator则可以利用二U缓存,对于一条查询语句,它会先从数据库中扑և所有符合条件的记录的IDQ再通过IDȝ存找Q对于缓存中没有的记录,再构造语句从数据库中查出Q因此很Ҏ(gu)知道Q如果缓存中没有MW合条g的记录,使用iterator会生N+1条SQL语句(N为符合条件的记录?

  iii. 通过iteratorQ配合缓存管理APIQ在量数据查询中可以很好的解决内存问题Q如:

  while(it.hasNext()){

  YouObject object = (YouObject)it.next();

  session.evict(youObject);

  sessionFactory.evice(YouObject.class, youObject.getId());

  }

  如果用listҎ(gu)Q很可能出OutofMemory错误了?/p>

  iv. 通过上面的说明,我想你应该知道如何去使用q两个方法了?/p>

  7?集合的选用

  在HIBERNATE 3.1文档的?9.5. Understanding Collection performance”中有详l的说明?/p>

  8?事务控制

  事务斚wҎ(gu)能有媄响的主要包括:事务方式的选用Q事务隔ȝ别以及锁的选用

  a) 事务方式选用:如果不涉及多个事务管理器事务的话Q不需要用JTAQ只有JDBC的事务控制就可以?/p>

  b) 事务隔离U别:参见标准的SQL事务隔离U别

  c) 锁的选用:(zhn)观?一般由具体的事务管理器实现)Q对于长事务效率低,但安全。乐观锁(一般在应用U别实现)Q如在HIBERNATE中可以定义VERSION字段Q显Ӟ如果有多个应用操作数据,且这些应用不是用同一U乐观锁机制Q则乐观锁会失效。因此,针对不同的数据应有不同的{略Q同前面许多情况一P很多时候我们是在效率与安全/准确性上找一个^衡点Q无论如何,优化都不是一个纯技术的问题Q你应该对你的应用和业务特征有够的了解?/p>

  9?扚w操作

  即是用JDBCQ在q行大批数据更新ӞBATCH与不使用BATCH有效率上也有很大的差别。我们可以通过讄batch_size来让其支持批量操作?/p>

  举个例子Q要扚w删除某表中的对象Q如“delete Account”,打出来的语句Q会发现HIBERNATE扑և了所有ACCOUNT的IDQ再q行删除Q这主要是ؓ了维护二U缓存,q样效率肯定高不了,在后l的版本中增加了bulk delete/updateQ但q也无法解决~存的维护问题。也是_׃有了二~存的维护问题,HIBERNATE的批量操作效率ƈ不尽如h?

  从前面许多要点可以看出,很多时候我们是在效率与安全/准确性上找一个^衡点Q无论如何,优化都不是一个纯技术的问题Q你应该对你的应用和业务特征有够的了解Q一般的Q优化方案应在架构设计期基本确定,否则可能D没必要的q工Q致佉K目g期,而作为架构师和项目经理,q要面对开发h员可能的抱怨,必竟Q我们对用户需求更改的控制力不大,但技?架构风险是应该在初期意识到ƈ制定好相关的对策?/p>

  q有一点要注意Q应用层的缓存只是锦上添花,永远不要把它当救命稻草,应用的根?数据库设计,法Q高效的操作语句Q恰当API的选择{?才是最重要的。?/p>

Hibernate的缓?**********************************

1、首先设|EhCacheQ徏立配|文件ehcache.xmlQ默认的位置在class-pathQ可以放C的src目录下:

Q?xml version="1.0" encoding="UTF-8"?Q?br />QehcacheQ?br /> QdiskStore path="java.io.tmpdir"/Q?
  QdefaultCache
   maxElementsInMemory="10000" Q?-- ~存最大数?--Q?br />   eternal="false" Q?-- ~存是否持久 --Q?br />   overflowToDisk="true" Q?-- 是否保存到磁盘,当系l当机时--Q?br />   timeToIdleSeconds="300" Q?-- 当缓存闲|nU后销?--Q?br />   timeToLiveSeconds="180" Q?-- 当缓存存?gu)znU后销?-Q?br />   diskPersistent="false"
   diskExpiryThreadIntervalSeconds= "120"/Q?
Q?ehcacheQ?/td>

  2、在Hibernate配置文g中设|:

Q?-- 讄Hibernate的缓存接口类Q这个类在Hibernate包中 --Q?br />Qproperty name="cache.provider_class"Qorg.hibernate.cache.EhCacheProviderQ?propertyQ?
 Q?-- 是否使用查询~存 --Q?br /> Qproperty name="hibernate.cache.use_query_cache"QtrueQ?propertyQ?br />  如果使用spring调用Hibernate的sessionFactory的话Q这栯|:
  Q?--HibernateSession工厂理 --Q?br />   Qbean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"Q?br />   Qproperty name="dataSource"Q?br />    Qref bean="datasource" /Q?br />   Q?propertyQ?br />   Qproperty name="hibernateProperties"Q?br />   QpropsQ?br />    Qprop key="hibernate.dialect"Qorg.hibernate.dialect.Oracle9DialectQ?propQ?br />    Qprop key="connection.provider_class"Qorg.hibernate.connection.C3P0ConnectionProviderQ?propQ?br />    Qprop key="hibernate.show_sql"QtrueQ?propQ?br />    Qprop key="hibernate.cache.use_query_cache"QtrueQ?propQ?br />    Qprop key="hibernate.cache.provider_class"Qorg.hibernate.cache.EhCacheProviderQ?propQ?br />   Q?propsQ?br /> Q?propertyQ?br /> Qproperty name="mappingDirectoryLocations"Q?br />  QlistQ?br />   QvalueQ?WEB-INF/classes/cn/rmic/manager/hibernate/Q?valueQ?br />  Q?listQ?br /> Q?propertyQ?
Q?beanQ?/td>

  说明一下:如果不设|“查询缓存”,那么hibernate只会~存使用load()Ҏ(gu)获得的单个持久化对象Q如果想~存使用findall()、list()、Iterator()、createCriteria()、createQuery(){方法获得的数据l果集的话,需要设|?br />hibernate.cache.use_query_cache true 才行

  3、在Hbm文g中添加<cache usage="read-only"/Q?br />
  4、如果需要“查询缓存”,q需要在使用Query或Criteria()时设|其setCacheable(true);属?br />
  5、实践出真知Q给一D|试程序,如果成功的话W二ơ查询时不会d数据?br />
package cn.rmic.hibernatesample;

import java.util.List;

import org.hibernate.CacheMode;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;

import cn.rmic.hibernatesample.hibernate.HibernateSessionFactory;
import cn.rmic.manager.po.Resources;

public class testCacheSelectList ...{

 /** *//**
 * @param args
 */
 public static void main(String[] args) ...{
  // TODO Auto-generated method stub

  Session s=HibernateSessionFactory.getSession();
  Criteria c=s.createCriteria(Resources.class);
  c.setCacheable(true);
  List l=c.list();
  // Query q=s.createQuery("From Resources r")
  // .setCacheable(true)
  // .setCacheRegion("frontpages") ;
  // List l=q.list();
  Resources resources=(Resources)l.get(0);
  System.out.println("-1-"+resources.getName());
  HibernateSessionFactory.closeSession();
  try ...{
   Thread.sleep(5000);
  } catch (InterruptedException e) ...{
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  s=HibernateSessionFactory.getSession();
  c=s.createCriteria(Resources.class);
  c.setCacheable(true);
  l=c.list();
  // q=s.createQuery("From Resources r").setCacheable(true)
  // .setCacheRegion("frontpages");
  // l=q.list();
  resources=(Resources)l.get(0);
  System.out.println("-2-"+resources.getName());
  HibernateSessionFactory.closeSession();
 }
}


HotJava 2006-11-02 21:33 发表评论
]]>
javaE序员面试之150++ http://www.tkk7.com/HotJava/archive/2006/11/02/78780.htmlHotJavaHotJavaThu, 02 Nov 2006 13:33:00 GMThttp://www.tkk7.com/HotJava/archive/2006/11/02/78780.htmlhttp://www.tkk7.com/HotJava/comments/78780.htmlhttp://www.tkk7.com/HotJava/archive/2006/11/02/78780.html#Feedback0http://www.tkk7.com/HotJava/comments/commentRss/78780.htmlhttp://www.tkk7.com/HotJava/services/trackbacks/78780.html阅读全文

HotJava 2006-11-02 21:33 发表评论
]]>
用hibernate实现数据库底层分?http://www.tkk7.com/HotJava/archive/2006/11/02/78768.htmlHotJavaHotJavaThu, 02 Nov 2006 12:43:00 GMThttp://www.tkk7.com/HotJava/archive/2006/11/02/78768.htmlhttp://www.tkk7.com/HotJava/comments/78768.htmlhttp://www.tkk7.com/HotJava/archive/2006/11/02/78768.html#Feedback0http://www.tkk7.com/HotJava/comments/commentRss/78768.htmlhttp://www.tkk7.com/HotJava/services/trackbacks/78768.html阅读全文

HotJava 2006-11-02 20:43 发表评论
]]>
常用log4j配置http://www.tkk7.com/HotJava/archive/2006/10/10/74354.htmlHotJavaHotJavaTue, 10 Oct 2006 11:02:00 GMThttp://www.tkk7.com/HotJava/archive/2006/10/10/74354.htmlhttp://www.tkk7.com/HotJava/comments/74354.htmlhttp://www.tkk7.com/HotJava/archive/2006/10/10/74354.html#Feedback0http://www.tkk7.com/HotJava/comments/commentRss/74354.htmlhttp://www.tkk7.com/HotJava/services/trackbacks/74354.html 常用log4j配置Q一般可以采用两U方式,.properties?xml,下面举两个简单的例子Q?br />一、log4j.properties
### 讄org.zblog域对应的U别INFO,DEBUG,WARN,ERROR和输出地A1QA2 ##
log4j.category.org.zblog=ERROR,A1
log4j.category.org.zblog=INFO,A2
log4j.appender.A1=org.apache.log4j.ConsoleAppender
### 讄输出地A1QؓConsoleAppender(控制? ##
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
### 讄A1的输出布局格式PatterLayout,(可以灉|地指定布局模式Q?#
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%c]-[%p] %m%n
### 配置日志输出的格?#
log4j.appender.A2=org.apache.log4j.RollingFileAppender
### 讄输出地A2到文Ӟ文g大小到达指定寸的时候生一个新的文Ӟ##
log4j.appender.A2.File=E:/study/log4j/zhuwei.html
### 文g位置##
log4j.appender.A2.MaxFileSize=500KB
### 文g大小##
log4j.appender.A2.MaxBackupIndex=1
log4j.appender.A2.layout=org.apache.log4j.HTMLLayout
##指定采用html方式输出
二、log4j.xml
<?xml version="1.0" encoding="GB2312" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="org.zblog.all" class="org.apache.log4j.RollingFileAppender">
<!-- 讄通道ID:org.zblog.all和输出方式:org.apache.log4j.RollingFileAppender -->
   <param name="File" value="E:/study/log4j/all.output.log" /><!-- 讄File参数Q日志输出文件名 -->
   <param name="Append" value="false" /><!-- 讄是否在重新启动服务时Q在原有日志的基d新日?-->
   <param name="MaxBackupIndex" value="10" />
   <layout class="org.apache.log4j.PatternLayout">
       <param name="ConversionPattern" value="%p (%c:%L)- %m%n" /><!-- 讄输出文g目和格?-->
   </layout>
</appender>
<appender name="org.zblog.zcw" class="org.apache.log4j.RollingFileAppender">
   <param name="File" value="E:/study/log4j/zhuwei.output.log" />
   <param name="Append" value="true" />
   <param name="MaxFileSize" value="10240" /> <!-- 讄文g大小 -->
   <param name="MaxBackupIndex" value="10" />
   <layout class="org.apache.log4j.PatternLayout">
       <param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
   </layout>
</appender>
<logger name="zcw.log"> <!-- 讄域名限制Q即zcw.log域及以下的日志均输出C面对应的通道?-->
   <level value="debug" /><!-- 讄U别 -->
   <appender-ref ref="org.zblog.zcw" /><!-- 与前面的通道id相对?-->
</logger>
<root> <!-- 讄接收所有输出的通道 -->
   <appender-ref ref="org.zblog.all" /><!-- 与前面的通道id相对?-->
</root>
</log4j:configuration>
三、配|文件加载方法:
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.xml.DOMConfigurator;
public class Log4jApp {
   public static void main(String[] args) {
       DOMConfigurator.configure("E:/study/log4j/log4j.xml");//加蝲.xml文g
       //PropertyConfigurator.configure("E:/study/log4j/log4j.properties");//加蝲.properties文g
       Logger log=Logger.getLogger("org.zblog.test");
       log.info("试");
   }
}
四、项目用log4j
在web 应用中,可以配|文件的加蝲攑֜一个单独的servlet中,q在web.xml中配|该servlet在应用启动时候加载。对于在多h目中,可以l每一个h讄一个输出通道Q这样在每个人在构徏LoggerӞ用自q域名Uͼ让调试信息输出到自己的log文g中?br />五、常用输出格?br /># -X?X信息输出时左寚wQ?br /># %p:日志信息U别
# %d{}:日志信息产生旉
# %c:日志信息所在地Q类名)
# %m:产生的日志具体信?br /># %n:输出日志信息换行



HotJava 2006-10-10 19:02 发表评论
]]>
计算机日?日文式样书常出现的句?http://www.tkk7.com/HotJava/archive/2006/10/10/74345.htmlHotJavaHotJavaTue, 10 Oct 2006 09:58:00 GMThttp://www.tkk7.com/HotJava/archive/2006/10/10/74345.htmlhttp://www.tkk7.com/HotJava/comments/74345.htmlhttp://www.tkk7.com/HotJava/archive/2006/10/10/74345.html#Feedback0http://www.tkk7.com/HotJava/comments/commentRss/74345.htmlhttp://www.tkk7.com/HotJava/services/trackbacks/74345.html 
【‘と’の用法についてQ?①並列助?★中国語Q和、与、同 ◆例QAとBをワヹ{エリアにゅRトする?②動作、関係等的対?★中国語Q和、与、同 ◆例Q 条g書の内容はソヹ{と一致していない。     委託元と打合せする?③共同完成動作的対象 ★中国語Q和××一起?◆例Q皆さんと同じ職場で働いている?④結?★中国語Q成為(変為Q?◆例Q水は氷となる。    修正された後、AはAQ?となる?⑤比較対?★中国語Q和、同、跟 ◆例QAはBと等しい。    AはBと違っている?⑥思考、発a、記q内容的引用 ★中国語Q…書、…記q、…認為、…所q?◆例Q詳細設a書には「AQ?」と書いてありますが、こちら側はA?と思っております。    委託元からソヹ{がOKだとaわれました。    こちら側は以上の通り処理を行なうのが正しいと思っております。    ONSITE側からソヹ{に問があると指摘されてきた?⑦後跟否定Ş?★中国語Q不到、不?◆例Q?時間とはかからなかった。     ⑧由前因致後果 ★中国語Q由××致○○的結?◆例QこのようにソーわV修正すると大和ルヹ{と違反している部分があると思います?⑨一般条件下成立的条仉?★中国語Q一.…就…?◆例QAにBをたすとCになる。     ⑩䄝a?★中国語Q如果…就?◆例Qもし仕様が変更されるとそれと関連する幾つかの部分も変更する必要がある?【連続詞について?①から  Q主x方) ★中国語Q因為…所?◆例Q 仕様理解のほうが大変ですから、フローを提出してくれませんか。   axQ仕様很難理解、能否(向我方)提供程囟?②ので  Q客覛_在) ★中国語Q因為…所?◆例Q 今回の案件は出力全て西暦なので、和暦の場合、まず西暦に変更して下さい。    axQ因為本ơ案件的出力全部是西暦、所以請和暦変更為西暦?③ため  Q表C原因) ★中国語Q由于…(発生Q…結?◆例Q 現行E制が変更されたため、関連PGMを修正する必要が出て来る。    axQ由于現行税制発生変更、因而産生了関連PGM修正的必要?④が ★中国語Q雖然…但是例Q 詳細a計書には「AQ?」と書いてありますが、こちら側はA?と思っております。   axQ雖然在詳細a計怸是「AQ?」、但是我方認為応該是A??⑤のに Q遺憾、失望) ★中国語Q却…、 居然 ◆例Q Aにすればよかったなのに、何故わざわざBにしなければならない。   axQ用A方式来処理本来很好、為什q還要特意用B方式陻I ⑥動詞未然ŞQず?★中国語Q不?◆例Qソヹ{の論理を変わらずに修正して下さい。   axQ請在不改変SOURCE LOGIC的前提下、進行修正?⑦動詞未然ŞQないように ★中国語Q不要?◆例Q二度とこのようなミわV発生しないように良く注意して下さい。   axQ為避免再次発生這様的錯誤、請加D注意?⑧動詞未然ŞQ無ければなれな?★中国語Q必須?◆例QテわVをやらなければなれない。   axQ必須要作測試?⑨動詞未然ŞQ無くでも良い(無くでも構いません) ★中国語Q不需要?◆例Qこの論理についてテわVをやらなくても良い。   axQ針N?logic不需要進行測試??…てはいけな?★中国語Q不可?◆例Q修正された部分についてテストをしなくてはいけない   axQ針対被修正的部分必須要進行測試Q不作測試不可以Q?⑪全て…ではない?★中国語Q不全是?◆例Qデヹ{は全て‘0’ではない。   axQ数拠ƈ不全是?’?⑫…わけではない?★中国語Qƈ非?◆例Q全てのテストデヹ{が間違っているわけではない。   axQƈ非所有的測試数拠都是錯誤的?⑬○○における?★中国語Q在○○中?◆例Qコヹ{ヅRット信用取引cビスにおける閉鎖基準は、普通の信用取引cビスと異なる。   axQ在CALLNET信用交易中的閉鎖基準与普通的信用交易   service不同?⑭○○に対す?★中国語Q対于○○、針䏗?◆例QBDAMファイルに対して、更新等の処理を行います。  axQ針対BDAM FILE進行更新{処理?⑮○○につい?★中国語Q関于○?◆例Q今度案件背景について詳しく紹介していただきませんか?  axQ請詳細紹介一下(関于Q本回案件的背景?⑯○○による ★中国語Q根拠、通過○○ ◆例Q仕様理解により、ACO380はTABLEで出力すると思います。  axQ根拠対于仕様的理解、我方認為ACO380要通過TABLE来出?⑰○○に関す?★中国語Q与○○盔R ◆例Qこれと関する情報は条g書に明らかに書いています。  axQ与此相関的信息在条件書中有詳細的記q?⑱○○に伴い ★中国語Q伴随○○、発生?◆例QAファイルの追加に伴い、それと関連しているある処理とルーチンもそれぞれ追加される。  axQ伴随着A FILE的追加、与光連的処理?ROUTINE也分別被q加?⑜y○にとっ?★中国語Q対于○○来説?◆例Q今度提出してくれた詳細a計書はこちら側にとって、なかなか理解できないので、  もっと詳しく説明して頂きませんか。  axQ本ơ案件的詳細a計書対于我Ҏ(gu)説、某些部分非帔R于理解、     請進一歩于詳細的説明?⑳○○になる?★中国語Q一…就?◆例QABENDになると、ABENDメッゅRジがリタヹ{されて来る。  axQ一旦発生ABEND、就会返回ABEND信息。【いずれといずれもの用法について?★ いず?①《どれ、どちら》陳个、陳斚w ◆ 1001   この数字にいずれ?である数字が入っています。  axQ?001   在這串数字中包?這個数字?②《やがて、その内》不久、早?◆ このことはいずれ分かることだ。  axQ這g事早晩会水落矛_?★ いずれも ①《全部、どれも?◆ 0000  この数字にいずれ?Qの数字Qです。  axQ?000  這串数字全都??◆ 1253  これはいずれ?が入っていない数字です。  axQ?253  這串数字全都不是0?★ AQBQC ◆ A끙BはCだ。  AにBを加するとCになる?★ A-BQC ◆ A引くBはCだ。  AにBを引くとCになる?★ AQBQC ◆ A掛けるBはCになる。  AとB乗法するとCになる?★ A÷BQC ◆ A剌ӂBはCになる。  BでAを割るとCになる?【比率と比例?①○○に××の割引で?★○○比××的比?◆例Q3人にQhの割合で大学進学を希望している。  axQ大学的昇学率是3?的比率?②○○分の×?★○○分之×?◆例Q全員のQ分の2がその案に賛成している。  axQ全員的3分之2都賛成那個提案?③○○と××の比 ★○○和××的比 ◆例Q1QとQの比はQとQの比に{しい1Q:Q=Q:Q。  axQ?0?的比{于2?的比10Q?Q?Q?. ④○○対×× ★○○比×× ◆例QA対Bイコヹ{X対Y A:B=X:Y。 axQA比B{于X比Y A:B=X:Y。  【‘に’の用法についてQ?① に違いな?◆ 中国語:一定、必?   例文Qこれらのデヹ{でテわVするのはきっと正しいに違いない。   axQ用這些数拠来測試一定正?② に係わら?◆ 中国語:不論…都   例文Q修正と新規に係わらず、大和ルヹ{を守った上で開発を行われなければなりません。   axQ不論是修正還是新規、都必須在遵守大和RULE的基準上進行開発?③ にそって ◆ 中国語:按照…、沿着?   例文Q案仉発では標準化にそって逌ӂなければなりません。   axQ案仉発必須要按照標準化来進行?◆ ○○を元?★中国語Q以…為基礎 例:課税?01kを元に、判定結果ファイルを作成する。 a끙Q以課税?01k為基準来作成判定i果FILE?◆ ○○を分けて?★中国語Q分開、分別? 例:『デヹ{区分』ごとに変換処理を分けて行う。 a끙Q毎個『DATA区分』都要分別進行変更処理?◆ ○○を××から△▟끸GETする ★中国語Q把○○从××中GET到△△中 例:課税?01kデーѝ企業cバからHOSTへGETする。 a끙Q把課税?01kDATA从企業SEVER中GET到HOST中?◆ 【…を…へqす?★ …返回…   例:判別i果をメインプログラムへqす。  中国語:判別結果返回主E序?◆ 【…に…を加算?★ 向…中加算?  例:売買に従い、自p資カウンѝ株数を加  中国語:按照売買、向自己融資counter中加株数?◆ 【…から…へ変更する?★ 従…変更為?  例:決済REC䘃䘌゙䘙【KESTBL】の䘚zn;䘞長を1Q2からQ8Qへ変更する。  中国語:決済REC䘃䘌゙䘙【KESTBL】的RECORD長従162変更?85?◆ 【…とする?★ 認為…、䄝定?  例:ホールには媄ѝ与えない事とする  中国語:認為対于HOST来説没有什q媄ѝ?◆ 【…を…へ出力?★ …向…出力  例:定配当R集_アのデーѝOUTDD1へ出力する。  中国語:確定配当編集area的数拠向OUTDD1中出力?◆ 【…を…にゅRト?★ …設|到?  例:ス{を(付替Q差?支払にゅRトする。  中国語:零a置到差引支払額中?◆ 【…上に…?★ 不但…而且?  例:ルールを基づく上に委a元の指Cを応じるわけだ。  中国語:不但要以RULE為基準、而且同時還要従委託元的指示?◆ 【…上で…?★ …方面、…上  例:テストの上ではまちがいはない。  中国語:在TEST上没有錯誤?◆ 【…上は…?★ 既然…就?  例:見られた上はしかたがない。  中国語:既然p発現那就没有Ҏ(gu)了?◆ 【…かもしれない?★ 可能…、也a?  例:あしたは雪が降るかもしれない?  中国語:明天可能下雨。  例:そんなことをaったかもしれない。  中国語:或許我説過那様的話?◆ 【…とはいえ?★ …尽…但是?  例:qいとはいえ歩い?0分はたっしかかる。  中国語:管q、還是需?0分?◆ 【…ところが?★ …可是?  例:うまくいくだろうと思った.ところがQ失敗した。  中国語:原本認為会順誉K行、可是失敗了?◆ 【…すると…?★ 于是?  例:わたしが歌った、すると妏V歌いだした  中国語:我唱?首歌、于是妹也唱了v来?◆ 【…そして…?★ 而且?  例:今日は楽しくそして有意義な日でした  中国語:今日是愉快而且有意的一日?◆ 【…ために…?★ 因此?  例:病気のためにこられなかった。  中国語:因病没能来?◆ 【…ところが…?★ 可是?  例:新聞はかるく取り扱っていたようだ、ところが、これは大事件なんだ。  中国語:新聞没有作重要的登載、不過這是件大事?◆ 【ほど…ない?★ 再也没有更…、最?  例:野球ぅR好きなものはない。  中国語:我最喜歓球?◆ 【…てしまう?★ 完了…、尽?  例:1日で読んでしまった。  中国語:用了1天就読完了?◆ 【わけが無い?★ 不会…、不能…。…是不可能的  Q従道理上確信完全不可能Q  例:努力もしないで成^があがるわけが無い。  中国語:不努力就不能取得好成^?◆ 【わけではない?★ q…。ƈ不是?  ?日本にも数民族が無いわけではない。  中国語:是日本也ƈ非没有少数民族?◆ 【わけにはいかない?★ 不能…、不可能?  例:自分の職場を離れるわけにはいかない。  中国語:不能離開自己的職守?【列挙、並a、例C?◆ およた뀀    ★ 和、及  例:会社の運営 およた뀀理を、彼にQせる。  中国語:公司的運営及管理委a了他?◆ ~が ★ 両g事g的連続詞  例:もしもし、田中です が、一郎さんをお願いします。  中国語:我是C、請叫一下一郎先生?◆ ~て     ★ 並且、既…又?  例:あのレストラミ끯、 安くて、おいしいです。  中国語:那個飯店、既便宜又好吃?◆ そして     ★ 並且、既…又?  例:木村さんはきれいです。 そして たいへん親切です。  中国語:木村姐既美麗、又非常熱情?◆ それから    ★ 然後  例:切手を下さい。 それから このLもおいします。  中国語:請我郵。然後将行李也拜托艇了?◆ たり     ★ 両個動作和状態的並列  例:日曜日、買い物したり、映甅R 見たり します。  中国語:星期日又h西又看電影?◆ で      ★ 表並列  例:木村さんは きれいで、たいへん親切です。  中国語:木村先生既美麗又情熱?◆ また      ★ 又、同時  例:役{有名な音楽家であり、また、陶芸家でもある。  中国語:他是有名的音楽家、同時也是陶芸家?【時間的な連続性、前後関係、条件の指定?◆ それから    ★ 然後  例:晩ご飯を食べます。それから テレビを見ます。  中国語:吃過晩飯。然後看電視?◆ ~て、~?★ …後  例:晩ご飯を 食べて、テレビを 見て、日本語を勉弗ます。  中国語:在吃過晩飯、看電視後、学日語?◆ ~てから    ★ …後  例:晩ご飯を 食べてから テレビを見ます。  中国語:在吃過晩飯後、看電視?◆ ~とき     ★ …時  例:会社へ行くとき、いつも電車で行きます。  中国語:i常乗電車、去公司。(d司時、経怹電車。) ◆ ~まえに   ★ 在…前  例:寝る前に、日本語を勉弗ます。  中国語:在睡覚前、学日語?【前の文と対立し、問提赗或は意見を表わす。予惟뀁期待に反する結果をaう?◆ ~が      ★ 有逆接与順接両E用法、  ①順接  例:今日はここまでにしますが、何かご質問は。  中国語:今天p到這、還有什q問?   ②逆接Q但是)  例:日本の食べ物はおいしいですが、高いです。  中国?日本的食品好吃、但是MD?◆ けれども    ★ 但是  例:見学はおもしろいです。けれども、質問の時間が短いと思います。  中国語:参観学習是非常有的。但是、我認為提問的時間太短了?◆ しかし     ★ 但是   例:たくさん食べた。しかし、お腏Vいっぱいにならない。   中国語:吃了很多、但是肚子不覚得飽?◆ だが   ★ 但是、可是   例:一生懸命勉弗た。だが、安心はできない。   中国語:竭尽全力努力学習。但是、還是不攑ֿ?◆ でも      ★ 但是、不過   例:カメラがƌӁいです。 でも、お金がありません。   中国語:惌照相。不過、没有銭?◆ ところが    ★ 然而、可是   例:万事まるく収まるはずだった。ところが とんでもないことになった。   中国語:一切本応該非常順調。可是 予想不到的事発生了。  【前に示す理由、条件により、結果や意見、理由をqべる?◆ だから     ★ 因此、所以  例:役{けちんぼうだQだからQみなに嫌われる。  中国語:他是個吝嗇鬼、所以、大安不喜歓他?◆ ~た?★ 如果…的話  例:もし 明日、雨が 降ったら、うちにいます。  中国語:如果明日下雨的話、就呆在安?◆ ~と      ★ Q如果)…就?  例:この道をまっすぐ行く と、右に工場があります。  中国語:沿着這条路直走、工場就在右辺?◆ なぜなら ★ 原因是?  例:Uは夏がきらいです。なぜなら、暑いし、泳げないから。  中国語:我不喜歓夏天、原因是Q太׃、ƈ且不会游泟?【前に示した文に対して、同じ意呟끧別の表現をする?◆ すなわち      中国語:也就是説…、換a之?  例:痩せるということは、すなわち、体重が減ることだ。  中国語:説v減肥、換句話説、就是減体重?◆ つまり        中国語:也就是説…、換句話説  例:役{嫌われるのも、つまり 実力がないからだ。  中国語:他被嫌棄、(換句pQ是因為没有実力的原因?◆ 要するに     ★ R之…、換句話説?  例:太り過ぎだよ。要するに、食ずwぎだね。  中国語:太胖、換句話説就是吃的太多?【それまでの話と話題を変える時にѝ表現?◆ さて       ★ 那ُ…(話題的転換)  例:さて、雑談はそれぐらいにして本題に入りましょう。  中国語:那ُ閑談到此為止、進入正題?◆ ところで    ★ 順便提一下(話題的転換)  例:今日は楽しかったですね。ところで お嬢さんはお元気ですか。  中国語:今日高興。順便問一下、小嬢好? ◆ それでは ★ 那ُ…(話題的転換)  例:それではこれで失C{ます。  中国語:那ُ我就失陪了?【前qの事柄に追加あるいは補充する?◆ しかも      ★ 而且、ƈ且  例:わたしの部屋は広くて、しかも明るい。  中国語:我的屋子大而且明亮?◆ なお       ★ 此外、而且   例:会議は以上でiります。なお、次回は水曜日です。  中国語:会議此i束。此外、下一ơ定于周三進行?◆ その?★ 而且、ƈ且  例:雨が降り出し、その上雗で鳴りだした。  中国語:下v雨来、而且開始打雷?【どちらかを選ぶ?◆ それとも    ★ 還有、戓者  例:お土産は人Şがいいですか。それとも お菓子がいいですか。  中国語:物是選択玩偶好、還是点心好呀Q?◆ または     ★ 戓者  例:傘、または レイミ낳ヹ{を準備して来てください。  中国語:請準備一下傘戓者雨衣?◆ もしくは ★ 戓者  例:雨、もしくは雪になるでしょう。  中国語:快要下雨戓者下雪了吧。馬鹿(ばか bakaQ:是?sh)视里日本兵常说的“八嘎”。是愚蠢、傻瓜、笨脑子的意思。很常用?貴様Qきさま ki sa maQ:h对Ҏ(gu)轻蔑的称|也用在亲qh的随便称呹{?/div>

HotJava 2006-10-10 17:58 发表评论
]]>各个框架~点http://www.tkk7.com/HotJava/archive/2006/10/05/73466.htmlHotJavaHotJavaThu, 05 Oct 2006 07:05:00 GMThttp://www.tkk7.com/HotJava/archive/2006/10/05/73466.htmlhttp://www.tkk7.com/HotJava/comments/73466.htmlhttp://www.tkk7.com/HotJava/archive/2006/10/05/73466.html#Feedback0http://www.tkk7.com/HotJava/comments/commentRss/73466.htmlhttp://www.tkk7.com/HotJava/services/trackbacks/73466.html下面开始比较各个框Ӟ仅摘要如下,h本h只看~点Q不看优炏V因ZҎ(gu)说不完的
Struts: used since June 2001 - same time 1.0 was released.
Spring MVC: used since January 2004 - before 1.0 was released.
WebWork: used since July 2004.
Tapestry: used since July 2004.
JSF: used since July 2004 - both Sun’s RI and MyFaces. 

Struts~点Q?/p>

ActionForms - they’re a pain
Can’t unit test - StrutsTestCase only does integration
Project has been rumored as “dead?/p>

Display TagQ?/p>

Spring MVC~点Q?/p>

Configuration intensive - lots of XML
Requires writing lots of code in JSPs
Almost too flexible - no common parent Controller

WebWork~点Q?/p>

Small Community
Documentation is poorly organized

Tapestry~点Q?/p>

Documentation very conceptual, rather than
pragmatic
Steep learning curve - very few examples
Long release cycles - major upgrades every year

JSF~点Q?/p>

Tag soup for JSPs
Doesn't play well with REST or Security
No single source for implementation

SiteMeshQ?/p>

 

IDE支持

Struts has a lot of IDE support and even has frameworks built on top of it (i.e. Beehive’s PageFlow)
Spring has Spring IDE - only does XML validation, not a UI/web tool
WebWork has EclipseWork
Tapestry has Spindle - great for coders
JSF has many, and they're getting better and better



HotJava 2006-10-05 15:05 发表评论
]]>
遇到得问?/title><link>http://www.tkk7.com/HotJava/archive/2006/09/27/72375.html</link><dc:creator>HotJava</dc:creator><author>HotJava</author><pubDate>Wed, 27 Sep 2006 11:42:00 GMT</pubDate><guid>http://www.tkk7.com/HotJava/archive/2006/09/27/72375.html</guid><wfw:comment>http://www.tkk7.com/HotJava/comments/72375.html</wfw:comment><comments>http://www.tkk7.com/HotJava/archive/2006/09/27/72375.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.tkk7.com/HotJava/comments/commentRss/72375.html</wfw:commentRss><trackback:ping>http://www.tkk7.com/HotJava/services/trackbacks/72375.html</trackback:ping><description><![CDATA[ <p>难怪连接不了,以前?br /><hibernate-configuration></p> <p><session-factory></p> <p><!-- Database connection settings --><br /><property name="connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property><br /><property name="connection.url">jdbc:microsoft:sqlserver://localhost:1433/First</property><br /><property name="connection.username">sa</property><br /><property name="connection.password">123</property></p> <p><!-- JDBC connection pool (use the built-in) --><br /><property name="connection.pool_size">1</property></p> <p><!-- SQL dialect --><br /><property name="dialect">org.hibernate.dialect.SQLServerDialect</property></p> <p><!-- Enable Hibernate's automatic session context management --><br /><property name="current_session_context_class">thread</property></p> <p><!-- Disable the second-level cache  --><br /><property name="cache.provider_class"><br />org.hibernate.cache.NoCacheProvider<br /></property></p> <p><!-- Echo all executed SQL to stdout --><br /><property name="show_sql">true</property></p> <p><!-- Drop and re-create the database schema on startup --><br /><property name="hbm2ddl.auto">create</property><br /><mapping resource="aa/FirstDemo.hbm.xml" /></p> <p></session-factory></p> <p></hibernate-configuration><br /><br />----------------------------------------------------------------------------------<br /><session-factory><br /><property name="connection.username">sa</property><br /><property name="connection.url">jdbc:microsoft:sqlserver://localhost:1433;databasename=First</property>q里写错了晕<br /><property name="dialect">org.hibernate.dialect.SQLServerDialect</property><br /><property name="myeclipse.connection.profile">ballacks</property><br /><property name="connection.password">sa</property><br /><property name="connection.driver_class">com.microsoft.jdbc.sqlserver.SQLServerDriver</property><br /><property name="show_sql">true</property><br /><mapping resource="bean/Classes.hbm.xml" /><br /><mapping resource="bean/Student.hbm.xml" /></p> <p></session-factory><br /><br /></p> <img src ="http://www.tkk7.com/HotJava/aggbug/72375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.tkk7.com/HotJava/" target="_blank">HotJava</a> 2006-09-27 19:42 <a href="http://www.tkk7.com/HotJava/archive/2006/09/27/72375.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.tkk7.com/" title="亚洲av成人片在线观看">亚洲av成人片在线观看</a> <div class="friend-links"> </div> </div> </footer> վ֩ģ壺 <a href="http://jinlaifubuxiugang.com" target="_blank">޾Ʒɫһ</a>| <a href="http://abab14.com" target="_blank">avƷҹɫҹ</a>| <a href="http://cdlsy.com" target="_blank">޹ƷþþþϼӰԺ</a>| <a href="http://zs0451.com" target="_blank">þþþþùaѹۿ</a>| <a href="http://f4f8.com" target="_blank">ڵĤѿ</a>| <a href="http://bjtjchem.com" target="_blank">ɫɫBwwW</a>| <a href="http://longcais.com" target="_blank">Ů18ëƬؼһƵ</a>| <a href="http://otkaxap.com" target="_blank">һAVٸӰ</a>| <a href="http://mysb123.com" target="_blank">Ѹ߰Ƶ</a>| <a href="http://dxjz120.com" target="_blank">avһվ²</a>| <a href="http://2222jjjj.com" target="_blank">ĻӰƵۿ</a>| <a href="http://aiqingdao999.com" target="_blank">װɫƵ</a>| <a href="http://91sebo.com" target="_blank">޹Ʒַ</a>| <a href="http://youkabaitiao.com" target="_blank">ŮоƷվѹۿ</a>| <a href="http://zzanfang.com" target="_blank">ɫWWWַ</a>| <a href="http://bjymt.com" target="_blank">޷츾</a>| <a href="http://xa69.com" target="_blank">Ʒ޳aƬ߹ۿ </a>| <a href="http://740740740.com" target="_blank">vavavaþ</a>| <a href="http://xj47777.com" target="_blank">ѲһëƬ</a>| <a href="http://8xxon8.com" target="_blank">޾ƷƵ</a>| <a href="http://haichuanwangluo.com" target="_blank">avѲۿ</a>| <a href="http://7x966.com" target="_blank">ĻƷþ</a>| <a href="http://iguasheng.com" target="_blank">һõþۺ</a>| <a href="http://s88s88.com" target="_blank">AVվ</a>| <a href="http://hnshlt.com" target="_blank">޹ۺϾƷ</a>| <a href="http://rj150.com" target="_blank">vѹۿ</a>| <a href="http://sswg2.com" target="_blank">ˬaëƬ</a>| <a href="http://by6216.com" target="_blank">һĻ</a>| <a href="http://tqdrhj.com" target="_blank">ҹϼӰԺ</a>| <a href="http://6464k.com" target="_blank">պƵ</a>| <a href="http://sdbfgcjx.com" target="_blank">˳վ߲</a>| <a href="http://6464k.com" target="_blank">޸avվ</a>| <a href="http://ipx588.com" target="_blank">ѿֻվ</a>| <a href="http://vo168.com" target="_blank">avһ</a>| <a href="http://f2dai.com" target="_blank">޾Ʒר</a>| <a href="http://bjgelinhotel.com" target="_blank">ĻƵww</a>| <a href="http://hs969.com" target="_blank">޾ƷѶ</a>| <a href="http://douhuowang.com" target="_blank">߹ۿƷ</a>| <a href="http://ytshdiping.com" target="_blank">AAƬ߹ۿ</a>| <a href="http://yy1288.com" target="_blank">ƷŮƵۿ</a>| <a href="http://hzkjjy.com" target="_blank">޹߾Ʒһ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>