常見的OO原則
封裝變化
多用組合,少用繼承
針對接口編程,不針對實現編程
為交互對象之間的松耦合設計而努力
類應該對擴展開放,對修改關閉
只和朋友交談
別找我,我會找你
類應該只有一個改變的理由
posted @ 2011-02-13 10:23 XXXXXX 閱讀(512) | 評論 (0) | 編輯 收藏
封裝變化
多用組合,少用繼承
針對接口編程,不針對實現編程
為交互對象之間的松耦合設計而努力
類應該對擴展開放,對修改關閉
只和朋友交談
別找我,我會找你
類應該只有一個改變的理由
posted @ 2011-02-13 10:23 XXXXXX 閱讀(512) | 評論 (0) | 編輯 收藏
38、只針對不正常的條件使用異常
異常只應該被用于不正常的條件,它們永遠不應該被用于不正常的條件
設計API啟示:一個良好的API不應該強迫它的客戶為了正常的控制流而使用異常。對于邊界的判斷常用的有兩種方法:狀態測試方法和可被識別的返回值
40、對于可以恢復的條件使用被檢查的異常,對于程序錯誤使用運行時異常
Thowable(可拋出異常)有三種結構:被檢查的異常(checked exception)、運行時異常(run-time exception)和錯誤(error)
如果期望調用者能夠恢復,那么,對于這樣的條件應該使用被檢查的異常
運行時異常和錯誤,不需要也不應該是被捕獲的拋出物
用運行時異常來指明程序錯誤
對于被檢查的異常,提供一些輔助方法是非常重要的,通過這些方法,調用者可以獲得一些有助于恢復的信息
41、避免不必要地使用被檢查的異常
42、盡量使用標準異常
43、拋出的異常要適合于相應的抽象
高層的實現應該捕獲低層的異常,同時導出一個可以按照高層抽象進行解釋的---異常轉譯
低層的異常對于調試該異常被撥出的情形非常有幫助的話,可以使用異常鏈接。即低層的異常被高層的異常保存起來,并且高層的異常提供一個公有的訪問方法來獲得低層異常
44、每個異常的拋出都必須有文檔
45、在細節消息中包含失敗--捕獲信息
為了捕獲失敗,一個異常的的字符串表示應該包含所有“對異常有貢獻”的參數和域的值
在異常構造函數中以參數形式引入這些信息
46、努力使失敗保持原子性
一個失敗方法調用應該使用對象保持“它在被調用之前的狀態” ---failure atomic
幾種解決方法:在執行操作之前檢查參數的有效性
調整計算機過程,使得任何可能會失敗的計算部分發生在對象狀態被修改之前
編寫一段恢復代碼
在對象上臨時都拷貝一份,當操作完成之后把臨時拷貝中的結果復制給原來的對象。如:Collections.sort
47、不要忽略異常
寫上try catch塊
posted @ 2011-02-12 18:02 XXXXXX 閱讀(261) | 評論 (0) | 編輯 收藏
posted @ 2011-01-14 11:20 XXXXXX 閱讀(281) | 評論 (0) | 編輯 收藏
posted @ 2011-01-11 11:49 XXXXXX 閱讀(374) | 評論 (0) | 編輯 收藏
posted @ 2011-01-08 10:41 XXXXXX 閱讀(236) | 評論 (0) | 編輯 收藏
posted @ 2011-01-04 11:05 XXXXXX 閱讀(490) | 評論 (0) | 編輯 收藏
posted @ 2010-12-29 00:20 XXXXXX 閱讀(338) | 評論 (0) | 編輯 收藏
在《組合數學》里面全排列是一個常見的問題。
描述如下:有x1,x2,x3,...xn,共n個元素,打印出它的全排列。
如:1 , 2 , 3
有6種排列: 123, 132, 213, 231, 312, 321
思路: 元素的全排列,其實就是遍列全部元素組成的一個排列樹,用回溯法可以得到比較好的效率,特別是空間上,,由于遍列整棵樹,時間復雜度為O(n!)
引申:類似此種算法的還有就是打印字符串(如:ABC)的真子集,其核心算法還是一樣的
posted @ 2010-11-21 00:27 XXXXXX 閱讀(514) | 評論 (0) | 編輯 收藏
crontab 五個域的含義
0~59 表示分
1~23 表示小時
1~31 表示日
1~12 表示月份
0~6 表示星期(其中0表示星期日
* * * * * /home/milch/tmpmail #每隔一分鐘執行一次后臺程序tmpmail
腳本的路徑必須為全局路徑
一個定時任務例子:
1)設置環境變量
在$HOME .profile后面添加 export $EDITOR=vi
2) 新建一個文件 davecron
* * * * * /bin/echo `date` >>$HOME/dateInfo.txt
3) 提交給cron進程
crontab davecron
4)查看定時任務
crontab -l
//
root@ubuntu:/var/spool/cron/crontabs# cat root
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (davecron installed on Mon Oct 25 11:29:52 2010)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
* * * * * /bin/echo `date` >>$HOME/dateInfo.txt
//
---------------------------------------------
重啟crond:
service crond restart
或者
/etc/rc.d/init.d/crond restart
查看自動自行項:
crontab -l
添加/編輯自動執行項:
crontab -e
----------------------------------------------
at命令
at命令,用戶向cron守護進程提-交作業,提交后保留所有當前的環境變量
/etc 下at.allow & at.deny 規定哪些用戶可以使用at和不可能使用
提交一個任務
列出所提交的作業 at -l
清除一個作業 atrm job n.o. # atrm 8
向后臺提交命令
命令 &
find /etc -name "passwd" -print >$HOME/find.txt 2>&1 &
退出帳戶后仍執行命令
nohup command &
-------------
SSH
1. 首先在服務器上安裝ssh的服務器端。
$ sudo aptitude install openssh-server
2. 啟動ssh-server。
$ /etc/init.d/ssh restart
3. 確認ssh-server已經正常工作。
$ netstat -tlp
tcp6 0 0 *:ssh *:* LISTEN -
看到上面這一行輸出說明ssh-server已經在運行了。
---------------
posted @ 2010-10-28 22:13 XXXXXX 閱讀(215) | 評論 (0) | 編輯 收藏