2011年4月30日 星期六

救援Windows 7中被誤刪的檔案

除了使用Recuva來還原被誤刪的檔案外,
也試試Windows 7這個系統還原檔案先前版本的方法

救援檔案
選取欲還原檔案的磁碟區,滑鼠右鍵點選「內容」,
找到「以前的版本」,「開啟舊檔」,
把想要找回的檔案複製出來即可

開啟系統保護
預設只有系統安裝磁碟才有預設開啟檔案還原功能
其他磁碟則並需手動開啟建立,
開啟「控制台」,點選「系統及安全性」,
點選「系統」,左側欄找到「系統保護」開啟,
在下方磁碟區中,選取想要開啟此項的磁碟點選「建立」
之後選取已開啟系統保護的磁碟區,並點選「設定」
在「設定」視窗中,
非系統碟只要選取「只還原檔案先前的版本」,
而系統安裝磁碟則選取「還原系統設定與檔案先前的版本」

參考文章:一點通 - 在 Windows 7 中,不小心刪除檔案該怎麼辦?
##ShowAll##

2011年4月11日 星期一

JAVA筆記-wait()、notify()、notifyAll() 執行緒間的等待與喚醒機制的互動

必須撰寫在synchronized的區塊內,
當wait()被呼叫時,則會釋放所有的鎖,
並寫在try-catch(InterruptedException e)內,

1. void wait()
讓執行緒進入等待狀態
2. void notify()
喚醒一個等待中的執行緒,若有多個執行緒,則由JVM決定
3. void notifyAll()
喚醒所有等待中的執行緒

注意:考慮在複雜程式上的邏輯正確,在執行緒交互呼叫wait()和notify()時,可能先配合滿足的條件再呼叫函式,例如設計前置布林值或計數器來作為呼叫的條件
##ReadMore##
import static java.lang.System.out;
public class Ex_WaitNotify {
  public static void main(String[] args) {
    One one = new One();
    one.start();
    synchronized(one) { // 主執行緒取得one的鎖
      String tName = Thread.currentThread().getName();
      out.print("one 進入 wait pool ");
      out.println("(" + tName + ")");
      try {
        one.wait();
      } catch (InterruptedException e) {}
      out.print("one 離開 wait pool ");
      out.println("(" + tName + ")");
    }
  }
}

class One extends Thread {
  public void run() {
    synchronized (this) {
      String tName = Thread.currentThread().getName();
      out.print("呼叫 notify() ");
      out.println("(" + tName + ")");
      notify();
      out.print("notify() 呼叫完畢! ");
      out.println("(" + tName + ")");
    }
  }
}

JAVA筆記-synchronized 同步物件資料,避免Race Condition

當多執行緒存取一共享變數時,會有race condition問題,
亦即變數產生不一致性的同步問題,
JAVA提供synchronized的方法,利用lock來鎖定物件,
使得在同一時間內最多只能予許一個執行緒存取共享變數

synchronized有兩種撰寫方法:
1. synchronized method
當同時有多個執行緒存取方法時,先到者優先使用,
後到者必須持續等待前一個執行緒執行完離開方法後,
釋放其lock才可進入使用
synchronized method其lock是該類別的lock,
因此如果這個類別擁有兩個以上的同步化方法,
而又有多個執行緒存取該類別不同個的同步化方法,
也是只會只有一個執行緒可以正常進入執行,
其他執行緒仍然必須等待,因為lock是class lock,
鎖住的是一整個類別
public class Sync {
  public synchronized void one(...){...}
  public synchronized void two(...){...}
}

2. synchronizated block
為了減少synchronized過於影響執行效率,所以期望把受影響的範圍縮小,
因此使用其他物件來當lock,但仍然可用class lock,將lock指定為this即可
public void three{
  synchronized (lock) {...}
}


關於static method synchronized,
我的觀念不夠成熟,可能不夠充足與正確,
所以不多闡述,可參考[Java] Synchronized 心得

在所有類別上,同時只有一個執行緒可以執行在synchronized static method;
而對於同一個類別所new出來的instance,
同時只有一個執行緒可以執行它自己的synchronized method(non-static),
因為每一個instance是鎖自己的lock

2011年4月10日 星期日

Comodo Internet Security 強悍的防毒防駭防火牆軟體

前身為Comodo Firewall,相當知名厲害的防火牆軟體,更是為免費軟體
Comodo Internet Security具備超強的防火牆及主機入侵防禦系統,
而防毒功能相較其他防毒軟體較不突出,
所以許多人選擇只安裝防火牆,而再另搭防毒軟體Avira、NOD32等
在此資安網站頁面Proactive Security Challenge
針對安全防禦的評分也打敗Kaspersky、Norton等知名軟體取得最高分數
##ReadMore##
以下為「電腦玩物」站長對C.I.S.的強力推薦介紹、教學與心得
2010/09 Comodo Internet Security 5.0 免費防毒防火牆軟體新手上手教學
2009/02 Comodo Internet Security 防毒+防駭+防火牆三合一,免費電腦安全中心完全心得筆記
2007/11 Comodo Internet Security 4.0 免費防毒防駭防火牆新版心得
2007/02 Comodo Firewall + AntiVirus:全中文免費防火牆+防毒軟體上手教學

軟體語言有英文、簡體中文,但沒有繁體中文,
網上有外掛繁體中文語系,
可至此網頁試找Comodo Internet Security 繁體中文語言包
或者只使用舊版的Comodo Firewall 2.4中文版

參考文章(下載):Comodo Internet Security 5.0 免費防毒防火牆軟體新手上手教學

如何開啟Windows 7系統控制台之神之模式

簡單說就是可設定更多選項的控制台,
可設定多達272種系統設定,
稱為神之模式或上帝模式,
新建一個資料夾即可,名稱命名為
GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}

參考文章:一點通 - Windows 7 中有趣的小秘密:神之模式
##ShowAll##

如何在Windows 7中使用Telnet協定連線BBS網站

Windows 7預設Telnet協定是關閉,
如果想上BBS,卻不想另外下載PCMAN軟體來觀看,可以用這個簡易方法
操作步驟 =>
控制台->程式集->開啟或關閉Windows功能->
勾選【Telnet用戶端】,點選【確定】

參考文章:一點通 - 爲什麽我無法在 Windows 7 中使用 Telnet 功能呢? (MVP 撰寫)
#ShowAll#

如何在PowerPoint投影時,同時在不同的螢幕上顯示投影片及備忘講稿

上台報告時,投影片會打在投影機屏幕上,
但演講者可能希望在筆電上同時看到投影片和備忘稿,就需要此功能

找到「投影片放映」功能欄,將「使用簡報者檢視畫面」選項打勾,即可設定

參考文章:一點通 - 如何才能在 PowerPoint 投影時,同時在不同的屏幕上顯示投影片以及備忘稿
##ShowAll##

2011年4月9日 星期六

如何在Windows 7中設定開機寬頻自動網路連線

Step 1
寬頻連線圖示位於 => 控制台 -> 網路和網際網路 -> 網路和共用中心 -> 變更介面卡設定 -> 寬頻連線

Step 2
滑鼠右鍵「內容」,點選「選項」標籤,
取消勾選「提示名稱、密碼、憑證等」,完成後「確定」

Step 3
點擊「視窗鍵 」-> 所有程式 -> 啟動
再「啟動」上滑鼠右鍵點選「開啟」或「開啟所有使用者」,
建立一個寬頻連線捷徑,放入到此系統「啟動」資料夾內即可



參考文章:一點通 - 如何在 Windows 7 中設定開機後 ADSL 寬頻自動連線?
##ShowAll##

JAVA筆記-Thread 多執行緒基本撰寫範例與常用函式

public class Thread extends Object implements Runnable
Thread繼承了Object類別,並由於是因為需實作Runnable介面,
所以要撰寫run()來運行想要的程序,Thread程式撰寫方法有兩種:

1. 繼承Thread類別(撰寫較為容易,本身已繼承類別之類別,將無法再繼承Thread類別)
public class Test
  public static void main(String[] args){
    HelloThread t1 = new HelloThread();
    HelloThread t2 = new HelloThread();
    t1.setName("T1");
    t1.setName("T2");
    t1.start();
    t2.start();
    // 取得目前執行緒數量
    System.out.println(Thread.activeCount());
  }
}
class HelloThread extends Thread{
  public void run(){
    for(int i=1; i<100; i++){
      // 取得目前執行緒名稱
      String tName = Thread.currentThread().getName();     System.out.println(tName + ":" + i);
    }
  }
}

2. 實作Runnable介面(程式有共同介面標準,可避免單一繼承問題)
public class Test
  public static void main(String[] args){
    HellowThread t1 = new HelloThread();
    HellowThread t2 = new HelloThread();
    Thread t1 = new Thread(t1, "T1");
    Thread t2 = new Thread(t2, "T2");
    t1.start();
    t2.start();
    // 取得目前執行緒數量
    System.out.println(Thread.activeCount());
  }
}
class HelloThread implements Runnable{
  public void run(){
    for(int i=1; i<100; i++){
      // 取得目前執行緒名稱
      String tName = Thread.currentThread().getName();       System.out.println(tName + ":" + i);
    }
  }
}

##ReadMore##
建構子方法:
1. Thread() 分派新的執行緒
2. Thread(String name)
3. Thread(Runnable target) 傳入一個Runnable物件,並分派新的執行緒
4. Thread(Runnable target, String name)

常用方法:
1. String getName() 取得名稱
2. int getPriority() 取得優先權
3. void setPriority() 可設參數1~10或MIN_PRIORITY=1、NORM_PRIORITY=5、MAX_PRIORITY=10
4. void start 將執行丟入Runnable pool中,等待系統run()呼叫
5. void run() 開始執行工作(由系統自動呼叫,非程式設計師撰寫)
6. static void yield() 將目前執行緒先行暫停,重新排程,讓與其他執行緒執行
7. static void sleep(long millis) 暫停目前執行緒,需在try-catch中呼叫,會丟出throws InterruptedException
8. void join() / void join(long millis) 用於調整執行緒執行順序,先暫停目前執行緒,而指定其他執行緒加入執行工作,執行完畢後才回復,或可設定執行時間,需在try-catch中呼叫,會丟出throws InterruptedException
9. void stop() 停止正在執行的執行緒 (不建議使用,易造成死結)
10. void suspend() 停止正在執行的執行緒 (不建議使用,易造成死結)
11. void destroy() 毀掉執行緒
12. boolean isAlive() 取得目前執行緒狀態
13. void wait() 讓執行緒進入等待狀態
14. void notify() 喚醒一個等待中的執行緒,若有多個執行緒,則由JVM決定
15. void notifyAll() 喚醒所有等待中的執行緒

2011年4月4日 星期一

Marxio Timer 自動關機程式,可開啟特定程式工作

與許多自動關機程式相比,介面美觀,功能眾多,操作容易
可依據條件時間來執行自動關機或特定程式與任務
P.S. 不要更新,較高版本似乎是非免費軟體的?!

參考文章(下載):Marxio Timer 免安裝中文版
##ReadMore##
note 2012/11/14
也參考另一套軟體,Wise Auto Shutdown 讓電腦定時自動關機、重開機、登出、睡眠

Complete Internet Repair 網路問題一鍵修復

反正就是遇到網路怪怪有問題時,使用這軟體來嘗試修復看看

參考文章(下載):網路修復工具【Complete Internet Repair】一鍵修復/重置網路設定
##ShowAll##

Convert Files 支援各式文件、影音、圖片等330種線上轉檔,包含PDF與WORD互轉

各式轉檔軟體並不難找,
但如果臨時要轉一兩個小檔,
就直接用線上服務的吧!
另外,這網站也支援PDF轉WORD

連結網址:Convert Files
參考文章:Convert Files 強大的線上轉檔服務,支援壓縮檔、文件、簡報、圖片、音訊及影片等 330 種格式組合!

note 2012/11/4
Online PDF Tools
##ShowAll##

WebBrowserPassView 抓出瀏覽器內儲存的所有帳號和密碼

可立即抓出IE、Firefox、Chrome、Opera瀏覽器儲存的所有帳號密碼
所以帳號密碼千萬不要存放在公用電腦上

參考文章(下載):還在用瀏覽器幫你記住密碼?免安裝200K小程式一次把瀏覽器密碼全都看光光!
##ShowAll##