-
.抽象主題角色類
- package com.observe;
- public interface AbstractWatched {
- //增加一個觀察者
- public void addAbstactWatcher(AbstractWatcher watcher);
- //移除一個觀察者
- public void removeAbstactWatcher(AbstractWatcher watcher);
- //移除所有的觀察着
- public void removeAll();
- //通知所有的觀察者
- public void notifyWatchers();
- }
- package com.observe;
- public interface AbstractWatcher {
- public void update();
- }
- package com.observe;
- import java.util.ArrayList;
- import java.util.List;
- public class ConcreteWatched implements AbstractWatched {
- //list:存放觀察者的一個集合對象
- List<AbstractWatcher> list = new ArrayList<AbstractWatcher>();
- //增加一個觀察者
- public void addAbstactWatcher(AbstractWatcher watcher) {
- list.add(watcher);
- }
- //移除一個觀察者
- public void removeAbstactWatcher(AbstractWatcher watcher) {
- list.remove(watcher);
- }
- //移除所有的觀察着
- public void removeAll() {
- list.clear();
- }
- //通知所有的觀察者
- public void notifyWatchers() {
- for(AbstractWatcher watcher : list){
- watcher.update();
- }
- }
- }
- package com.observe;
- public class ConcreteWatcher implements AbstractWatcher {
- //觀察到被觀察者發生變化時,執行的方法
- public void update() {
- System.out.println("update.....");
- }
- }
- package com.observe;
- public class ClientTest {
- public static void main(String[] args){
- //定義一個被觀察者對象
- AbstractWatched watched = new ConcreteWatched();
- //定義三個觀察者對象
- AbstractWatcher watcher1 = new ConcreteWatcher();
- AbstractWatcher watcher2 = new ConcreteWatcher();
- AbstractWatcher watcher3 = new ConcreteWatcher();
- //被觀察者添加觀察者. 被觀察者和觀察者之間關係是一對多關係
- watched.addAbstactWatcher(watcher1);
- watched.addAbstactWatcher(watcher2);
- watched.addAbstactWatcher(watcher3);
- System.out.println("第1次...");
- //被觀察者發生改變時,通知觀察者執行相應方法
- watched.notifyWatchers();
- //移除一個觀察者
- watched.removeAbstactWatcher(watcher2);
- System.out.println("第2次...");
- //被觀察者發生改變時,通知觀察者執行相應方法
- watched.notifyWatchers();
- //移除一個所有觀察者
- watched.removeAll();
- System.out.println("第3次...");
- //被觀察者發生改變時,通知觀察者執行相應方法
- watched.notifyWatchers();
- }
- }
【硬連接】
硬連接指通過索引節點來進行連接。在Linux的文件系統中,保存在磁盤分區中的文件不管是什麼類型都給它分配一個編號,稱爲索引節點號(Inode Index)。在Linux中,多個文件名指向同一索引節點是存在的。一般這種連接就是硬連接。硬連接的作用是允許一個文件擁有多個有效路徑名,這樣用戶就可以建立硬連接到重要文件,以防止“誤刪”的功能。其原因如上所述,因爲對應該目錄的索引節點有一個以上的連接。只刪除一個連接並不影響索引節點本身和其它的連接,只有當最後一個連接被刪除後,文件的數據塊及目錄的連接纔會被釋放。也就是說,文件真正刪除的條件是與之相關的所有硬連接文件均被刪除。
【軟連接】
另外一種連接稱之爲符號連接(Symbolic Link),也叫軟連接。軟鏈接文件有類似於Windows的快捷方式。它實際上是一個特殊的文件。在符號連接中,文件實際上是一個文本文件,其中包含的有另一文件的位置信息。
cat file1 從第一個字節開始正向查看文件的內容
tac file1 從最後一行開始反向查看一個文件的內容
more file1 查看一個長文件的內容
less file1 類似於 'more' 命令,但是它允許在文件中和正向操作一樣的反向操作
head -2 file1 查看一個文件的前兩行
tail -2 file1 查看一個文件的最後兩行
tail -f /var/log/messages 實時查看被添加到一個文件中的內容
舉例:(假設我們有一文件名爲ab)
刪除某行
[root@localhost ruby] # sed '1d' ab #刪除第一行
[root@localhost ruby] # sed '$d' ab #刪除最後一行
[root@localhost ruby] # sed '1,2d' ab #刪除第一行到第二行
[root@localhost ruby] # sed '2,$d' ab #刪除第二行到最後一行
顯示某行
. [root@localhost ruby] # sed -n '1p' ab #顯示第一行
[root@localhost ruby] # sed -n '$p' ab #顯示最後一行
[root@localhost ruby] # sed -n '1,2p' ab #顯示第一行到第二行
[root@localhost ruby] # sed -n '2,$p' ab #顯示第二行到最後一行
使用模式進行查詢
[root@localhost ruby] # sed -n '/ruby/p' ab #查詢包括關鍵字ruby所在所有行
[root@localhost ruby] # sed -n '/\$/p' ab #查詢包括關鍵字$所在所有行,使用反斜線\屏蔽特殊含義
代替一行或多行
[root@localhost ruby] # sed '1c Hi' ab #第一行代替爲Hi
Hi
ruby is me,welcome to my blog.
end
[root@localhost ruby] # sed '1,2c Hi' ab #第一行到第二行代替爲Hi
Hi
end
替換一行中的某部分
格式:sed 's/要替換的字符串/新的字符串/g'
(要替換的字符串可以用正則表達式)
[root@localhost ruby] # sed -n '/ruby/p' ab | sed 's/ruby/bird/g' #替換ruby爲bird
[root@localhost ruby] # sed -n '/ruby/p' ab | sed 's/ruby//g' #刪除ruby