2011年2月27日 星期日

Java Concept

JVM
  • 對於Java程式而言,其實它只認識一種作業系統(或說是一種機器),這個系統叫作JVM。
    • 而對於JVM而言,位元碼檔案就是它的可執行檔案!
    • 也就是副檔名為.class的檔案。
    • Java程式理想上,並不用理會真正執行於哪個平台之上,它只要知道如何執行於JVM之上就可以了,至於JVM實際上如何與底層平台作溝通,則是JVM自己的事!
  • Java編譯時,並不直接翻譯為相依於某平台的0101指令,而是翻譯為中介格式的位元碼(byte code)。
  • Java 的原始碼副檔名為*.java,經過編譯器翻譯過後,會變成*.class的位元碼。如果想要執行這個位元碼檔案,目標平台上必須安裝有JVMJava Virtual Machine)JVM會將位元碼翻譯為平台相依的語言
  • 編譯器對於每個.class檔案,都會標示主版本號與次版本號,不同的版本號,意味著這個類別檔案是不同版本的JDK編譯出來,而.class的格式可能有所不同。JVM在載入.class前,會先確認其版本號是否在可接受的範圍,否則就不會處理該.class檔案。

JRE
  • Java不僅僅是個語言,更是一個標準。大廠們共同製定的API,就是所謂的標準程式庫,或叫作Java SE API
  • Java程式會引用標準程式庫,並執行在JVM這個唯一認識的系統之上,這樣才能達到跨平台的目的。標準程式庫及JVM,都包含在JRE之中。所以Java程式要能夠執行在電腦中,就必須安裝JRE。
  • JRE包括:
    • 部署技術
    • Java SE API(也就是標準程式庫)
    • JVM
  • 在執行java指令時,可以附帶一個-version引數,這可以顯示所執行的JRE版本,這是確認所執行JRE版本的一個方式。
  • JRE目錄中:
    • lib目錄,有個rt.jar,這就是封裝為JAR檔的Java SE API,是一堆.class所組成。
    • bin目錄中,
      • 如果是Public JRE,則會有個client資料夾,當中會有個jvm.dll,這個就是JVM
      • 如果是JDK的Private JRE,則會發現,bin底下除了client資料夾外,還有個server資料夾,當中也有個jvm.dll。
  • 預設安裝下,只有JDK附帶的JRE中的bin會有server資料夾,而Public JRE沒有。你在執行java時,無論是Private JRE或Public JRE,預設會執行的是client中的jvm.dll。
  • 如果是Public JRE,嘗試執行java時指定-server,則會出現以下的錯誤
    • Error: no `server' JVM at `C:\Program Files\Java\jre6\bin\server\jvm.dll'.
  • JDK中多數工具程式,本身就是用Java寫的,執行時自然就得有JRE
  • Java本身的目標之一是跨平台,其許多工具程式本身就實現了這個理念,也因為許多工具程式本身是Java所撰寫,因此JDK本身必須附帶Private JRE,如此即使在沒有另行安裝Public JRE的情況下,也可以執行JDK相關工具程式。
  • client強調啟動速度,一開始不配置太大量的記憶體。
  • server的話,則是會配置較大量的記憶體,因為伺服器不強制啟動速度,而強調有客戶請求時的回應速度,因此將基本需要的資源先載入記憶體,回應時就不用慢吞吞地進行載入再回應。

JDK
  • 要執行java程式,只需要裝JRE就可以了。不用裝JDK,不需要編譯器之類的東西。
  • Development Tools就是安裝編譯器之類的工具程式
  • JDK自己本身附有一個JRE,相對於Public JRE這個名稱,JDK自己所附的JRE稱之為Private JRE,你只要有裝JDK,就一定會有Private JRE可以用。安裝Public JRE,只不過是為了方便有另一個JRE來模擬客戶端的JRE環境而已。
  • JDK就包括了:
    • JRE
      • JRE包括了Java SE API與JVM。
  • 先有原生編譯器,一開始編譯器是可能使用C寫的,而後用Java程式碼寫個編譯器,用原生編譯器來編譯Java寫的編譯器,然後就有了Java版的編譯器。
  • 事實上,JDK多數的工具程式,都是使用Java語言所撰寫的。
  • JDK的bin目錄中,.exe的原生可執行檔都是方便不用輸入一長串指令,以作業系統原生執行檔包裹的包裹器(Wrapper)。
  • 真正的編譯器等工具程式,其實是位於JDK目錄底下lib目錄中的tools.jar。

CLASSPATH
  • 執行java,其實就是啟動JVM,之後接下類別名稱,表示由JVM載入該類別的.class並執行。
  • PATH: 
    • 實體作業系統PATH中的路徑資訊來尋找可執行指令(對Windows就是.exe、.bat等,對Linux等就是有執行權限的檔案)。
    • JVM(虛擬作業系統)依CLASSPATH中的路徑資訊來尋找可執行指令(.class檔案)。
    • JVM會依路徑的順序,找尋是否有對應的類別檔案,先找到先贏,先找到先載入。如果在JVM的CLASSPATH路徑資訊中都找不到指定的類別檔案,則會出現java.lang.NoClassDefFoundError的資訊。
  • JAR檔案實際上是使用ZIP格式作壓縮,當中包含一堆.class檔案。將JAR檔案當作一個特別的資料夾,在使用IDE的時候,會在IDE的專案中設定(或有時稱匯入)所謂的「程式庫」,其實就是在IDE專案環境下的CLASSPATH中設定JAR檔案的位置與名稱。
  • 預設的CLASSPATH就會讀取當前目錄下的.class,但是如果你自行指定了CLASSPATH,則以你指定的為主。
  • CLASSPATH的路徑設定,是給應用程式類別載入器(AppClassLoader)使用的資訊。

* Reference
為什麼需要 JVM?
什麼是 JRE?
來安裝 JDK
CLASSPATH 是什麼?
你執行的是哪個 JRE?
Java SE Technologies at a Glance
降級你的類別檔案

2011年2月25日 星期五

Internationalization

* 在 struts.xml 中可以設定 interceptor,指定抓取特定參數與想對應處理的 class,且會將此值存入 session。

* http request 預設參數為: request_locale

* JSP 欲取 properties 時,便可因此知道該使用那種語系


* Reference
Struts 2 – i18n or localization example
Interceptors
Struts2学习笔记(7)--Internationalization - 纸飞机 - 51CTO技术博客
I18nInterceptor (Struts 2 Core 2.1.2 API)
Struts 2 国际化 [Localization] (转) - Tony的日志 - 网易博客

2011年2月24日 星期四

[JSP] Session and Cookie

Session


* Passing session specific data through the application object is not safe.

* Different sessions could override each other.

* When the browser is closed and started again, a new session object is created but the application is still the same.

* Flow:
  1. When the first request comes from a browser on a new host, the server makes the beginning of a new session, and assigns a new session ID. 
  2. The session ID will be then send to the browser as cookie. 
  3. The browser will remember this ID, and send the ID back to the server in the subsequent requests. 
  4. When the server receives a request with session ID in them, it knows this is a continuation of an existing session.When the server receives a request from a browser on a new host (request without a session ID), the server not only creates a new session ID, it also creates a new session object associated with the session ID. 
* If there is no subsequent request coming back for a long time for a particular session ID, that session will be timed out. After the session has been timed out, if the browser comes back again with the associated session ID, the server will give an invalid session error.


Cookie


Cookie: A small amount of information sent by a Web server to a Web browser, saved by the browser, and sent back to the server later. 


* Cookies are transmitted inside the HTTP header.

* C
ookies are actually saved to the hard disk of Web browser user's machines. 

If I keep clicking the refresh button, more and more cookies would be added to the request and response. But there is a limit. The browser will only take up to 20 cookies from one Web server.


* Reference
JSP and JSTL Tutorials - Herong's Tutorial Notes - JSP Sessions and Debugging
JSP and JSTL Tutorials - Herong's Tutorial Notes - Using Cookies

[DWR] Direct Web Remoting

Open Source Project


* DWR is a Java library that enables Java on the server and JavaScript in a browser to interact and call each other as simply as possible.  


DWR is Easy Ajax for Java,目標在於讓 Java programmer 可以很容易很輕鬆的開發 AJAX 的應用。


* 提供Java程式開發者一個前端(JavaScript)呼叫後端元件(例如Java Bean、POJO、Spring的Bean...)的完整架構,在撰寫這些前後端程式時,可以完全不用理會AJAX的例行工作 (例如: XML、透過XMLHTTP傳遞資料、解析XML、把資料mapping到POJO...等)。

* 包含兩部份:
  1. 伺服器端的Java Servlet,負責處理瀏覽器的請求並發送反饋給瀏覽器
  2. 在瀏覽器端的Java Script,負責發生請求並動態修改web頁面

2011年2月22日 星期二

[UML] 繪圖注意事項

* element 應分類 (package)

* 內容的 element 的應由上而下,由左至右靠近核心層

* method 參數可略

* attribute and method 依其可視度順序,public、static、private

* 可為 model 加一致性的前置命名,如: CLS_、ACT_、SEQ_。

* astah 設定:
  1. Grid: 2
  2. image size: 100
  3. enable shadow
  4. no color
  5. using straight line
  6. 用 export 得到的圖為 32 bits,用複製貼上的圖為 24 bits

* 記得對齊橫向與直向元素,以及之間的線

* usage 的線可用間隔來計算,使每條線的間隔相同

* 縮小間距,以A4為評估範圍

* 字的位置保持一致

* 若屬性有 set/get method,則表示外面可以取得,可視為 public

* 圖片若是用「插入」的方式放置,word會自動將圖縮放到適當的大小;若是用「貼上」的則不會

圖要精要可視,圖若內容太多 可將頁面上功能再拆 為細項




Sequence Diagram default value references
取消 Frame Visibility、Message Parameter Visibility(Initial)、Message Parameter Type Visibility(Initial)、Message Parameter Direction Kind Visibility(Initial)、Message Return Value Variable Visibility(Initial)、Message Return Value Visibility(Initial)




# Update on 20120303


* 整張圖中 element 的分佈位置、空間分配(不要留太多空白浪費空間)

* astah 中用 bind 畫出 generic 關係

* 有繼承關係的 elements 盡量擺放為一般繼承圖示表示的方式

* 有關係的 elements 應拉近距離,讓'一張圖能以一區塊一區塊來看,清楚看出誰與誰是關係較緊密的

* In Word, Headline 1 and 2 (ex: 1 ... 1.1 ...) 都應換頁(enter + ctrl)


dependency:  A -> B =  a 會受 b 的改變影響


* 以 png 匯出圖 (jpg will loss data)

[JSP] JavaServer Pages

* Is a technology, not a language.


* To put dynamic data into a Web document with Java statements embedded in special HTML tags.


The embedded Java statements will be executed by the JSP enabled Web server, not by the Web browser.


There are two key processes involved in serving a JSP page:
  • Compilation: A JSP page must be compiled into a Java Servlet class, before it can be executed. The server can compile a JSP page in real-time when the page is requested for the first time, if the page is not pre-compiled.
  • Execution: When a JSP page is requested, its compiled class will be executed on the server. The server will send back the output of the execution, not the content of the JSP page.

* Example for hello.jspWhat happened here was that Tomcat, the JSP Web server, has translated hello.jsp into hello_jsp.java, and compiled it to hello_jsp.class.

The Java file, hello_jsp.java, shows that:
  • hello_jsp is a sub class of org.apache.jasper.runtime.HttpJspBase, which is a sub class of javax.servlet.http.HttpServlet.
  • The important method in hello_jsp is _jspService() with two objects listed as parameters: one represents the Servlet request, and the other represents the Servlet response.
  • The static content of hello.jsp is translated into out.write() statements.
  • The embedded Java statement in hello.jsp is copied directly.

JSP page is served by the JSP Web server by executing the JSP Servlet Java class translated from the JSP page.


Java statements embedded in JSP pages will translated into _jspService() method of a special Servlet class.

pre-defined objects ready for the embedded Java statements:
  • out: The output stream to collect dynamic data to be mixed into the final Web document.
  • this: The instance of the special Servlet class.
  • request: An HttpServletRequest object representing the request received from the Web browser.
  • response: An HttpServletResponse object representing the response to be delivered back to the Web browser.
  • session: An HttpSession object representing the concept of linking multiple trips of requests and response into a single process unit.
  • application: A ServletContext object representing the concept of grouping Servlets into a single application.

A new session will be established, if this JSP page is requested for the first time. Subsequent requests will share the same session. 

session: A object provided by the JSP server to hold information and methods common to all JSP pages running under one session. The session object must be an instance of a class that implements the javax.servlet.http.HttpSession interface defined by the J2EE specification. 


* Reference
JavaServer Pages (JSP)
Execution Context

2011年2月16日 星期三

[Struts2] OGNL

* Object Graph Navigation Language

* Map是處理OGNL中最上層的物件(usually referred as a context map or context)。若是想取得其他物件,則必須要加上"#"符號,但若是 root object,則不需要加上此符號。

* struts2 中 OGNL context 為 ActionContext,value stack 為 OGNL 的 root object(The value stack is a set of several objects, but to OGNL it appears to be a single object.)。

* ActionContext 中除了 value stack,還有其他物件,例如:
                     |
                     |--application
                     |
                     |--session
       context map---|
                     |--value stack(root)
                     |
                     |--request
                     |
                     |--parameters
                     |
                     |--attr (searches page, request, session, then application scopes)

* The Action instance is always pushed onto the value stack. Because the Action is on the stack, and the stack is the OGNL root. 所以使用 Action instance 時不需要加"#",反之,若不是 root object,則必須加,例如:
 or
 or


* The ActionContext is also exposed to Action classes via a static method.
ActionContext.getContext().getSession().put("mySessionPropKey", mySessionObject);

* Syntax for list: {e1,e2,e3}.
// List containing the String "name1", "name2" and "name3". It also selects "name2" as the default value.


* Syntax for map: #{key1:value1,key2:value2}.


* To determine if an element exists in a Collection, use the operations in and not in.

   muhahaha


   boo


* use a wildcard within the collection:
? - All elements matching the selection logic
^ - Only the first element matching the selection logic
$ - Only the last element matching the selection logic

* To obtain a subset of just male relatives from the object person:
person.relatives.{? #this.gender == 'male'}

* OGNL supports basic lamba expression syntax enabling you to write simple functions.


* Under JSP 2.1 the # character is now used by the JSP EL.This may cause problems with some applications that use the OGNL # operator.


* Reference
- OGNL
- OGNL Basics
- C# 3.0 極簡風 - Lambda Expression
- Lambda 運算式 (C# 程式設計手冊)

2011年2月12日 星期六

[Struts2] Tag Syntax

* tag 是為了顯示動態資料,例如:
  textfield 會帶入屬性 postalCode 的值(call getPostalCode()),相對的,若 value stack 中有此屬性,在頁面 submit 後,此 textfield 的值便會被設定會此屬性(call setPostalCode())。

* 動態顯示 tag 相關資訊,例如:
  藉 application's messages resources,得到 text label at runtime,framework 會轉換 key 中的 expression 找到相對應的資訊。
  任何以 "%{ ... }" 表示的都會被視為 expression。在 struts2 中默許的 expression language 是 OGNL,而能呼叫 method and property,例如 base class ActionSupport 中的 getText()。因為 Action 在 stack 中,所以能藉 expression 呼叫使用其中的 method。例如:

* The HTTP protocol is text-base.

* the framework evaluates all non-String attributes as an expression. 例如以下三種寫法,皆可:
// verbose
// with property
// verbose with property

* value is an Object: 通常 framework 會透過 name 去呼叫設定相對應屬性,然後自動帶入 value,因此若 value 被直接指定了,表示的是一個物件。
// Probably wrong!! 因為 value 非字串,所以不管指定什麼都視為 expression,也就是會被看成 %{ca}
// 所以若是想傳一個屬性名稱為 ca 的字串,則必須再加上單引號

* Overview: the tag attributes evaluated using rules:
- All String attribute types are parsed for the "%{ ... }" notation.
- All non-String attribute types are not parsed, but evaluated directly as an expression
- The exception to rule #2 is that if the non-String attribute uses the escape notion "%{}", the notation is ignored as redundant, and the content evaluated.

* Expression Language Notations
// A JavaBean object in a standard context in Freemarker, Velocity, or JSTL EL (Not OGNL).

Username: ${user.username}

// A username property on the Value Stack.
// Another way to refer to a property placed on the Value Stack.

  
    es
  

Espanol
// The username property of the User object in the Session context.
// A static Map, as in put("username","trillian").


* Reference
Tag Syntax
- STRUTS2 TAG 語法
Struts 2 key attribute example
Message Resource Files

Hyper-Threading

.超執行緒(Hyper-Threading,HT)  Intel 研發的技術 於2002發佈
   和 AMD的Hyper Teansport 是完全不同的

.技術簡單來說 就是利用軟體將一顆處理器"視為"兩顆邏輯處理器 讓處理器能在同一時間內進行兩項邏輯運算
    增加cpu運作效率 藉以有效地善用資源 減少系統資源的浪費

.由於處理器實際上只有一個核心 能夠提升的效能約為5~15%左右 但萬一發生資源互搶的情形時 整體效能反而會下拉

.Dual Core:直接在一顆CPU內放置兩顆核心
Multi-core:透過Hyper-Threading 用一顆CPU模擬出兩顆CPU來增加系統運作上的效能 但是實際運作上 HT是利用填滿CPU多餘執行緒的方式達成的(所以HT稱為超執行緒技術)


.reference
-- 維基 超執行緒
-- cctg

安全模式

.是 Windows 用於修復作業系統錯誤的專用模式,是一種不加載任何驅動的最小系統環境。用安全模式啟動電腦,可以便於排除問題、修復錯誤。

.當電腦啟動至「安全模式」時,作業系統只會將啟動時的必要元件載入。安全模式時無法使用某些功能,例如 Internet 連線功能,而且它只載入標準的低解析度視訊驅動程式,因此您的程式與 Windows 桌面看起來會跟正常解析度的畫面有些不同。此外,桌面上的圖示位置也會也些不同。

.除了 Windows 3.1 與 Windows NT 之外,所有的 Windows 作業系統都能啟動至安全模式。

.在安全模式下,不會執行其它常駐程式(如防毒.等的)及部份的.DLL檔案,在一般你執行WIN時,某些檔案是一定會被執行的,我想你也知道在執行中的檔案是不能被刪除的,所以可以進入安全模式中刪除。

.一般情況下,在系統出現下列情況時,建議可先透過安全模式進行除錯與修復:
-- 在啟動作業系統時出現失敗的資訊。
-- 電腦在啟動作業系統時很長時間沒有反應。
-- 在進入作業系統後,工作不穩定,或者出現意想不到的結果。
-- 電腦出現經常性當機。
-- 電腦的顯示色彩出現問題。
-- 電腦在運行系統時速度突然降低了。

.安全模式的作用
-- 修復系統故障
-- 回復系統設置
-- 移除鎖定的文件
-- 徹底清除病毒
-- 磁碟重組 

.啟動Windows XP安全模式的方式
-- 當電腦開機並完成 POST(Power On Self Test)自我檢測後按下鍵盤「F8」,出現 Windows 進階選項功能表後選擇所需啟動的安全模式即可。
-- 進 入系統後由「開始」→「執行」→輸入 msconfig 後按「確定」→選擇「BOOT . INI」的頁籤→勾選「/SAFEBOOT」→選擇所需啟動的模式,如:MINIMAL、NETWORK、DSREPAIR 或 MINIMAL(ALTERNATESHELL)→點選「確定」→選擇「重新開機」即可。
若下次不需要啟動至安全模式,重複方法二取消勾選「/SAFEBOOT」即可。

.Windows XP 安全模式開機選項說明
1. 安全模式 - (Minimal)
    -- 這個選項會使用最基本的裝置驅動程式與服務來啟動 Windows,不載入網路支援。
    -- 載入的驅動程式和模組用於滑鼠、顯示器、鍵盤、磁碟機、基本的顯示和最少的系統服務,在安全模式下也可以啟用開機記錄檔。
   -- 這種模式有助於診斷系統產生的問題所在,如果新增加的裝置或對驅動程式進行更改後導致的系統問題就可以進入安全模式,將出現問題的裝置移除,然後再安裝。如果安全模式下不能解決問題的話,則多半需要重新使用安裝光碟來修復系統。

2. 安全模式(含網路功能)—(Network)
    -- 這種模式使用基本系統檔和驅動程式,與「安全模式」相比多載入了網路驅動程式。
    -- 主要作用與基本安全模式相同,但是並不支援 PCMCIA 卡連接網路。如果電腦已經接上網路,且用安全模式啟動時沒有檢測到任何錯誤,則可能是網卡問題,用此模式可以發現一些在安全模式下潛藏的問題。

3. 安全模式(含命令提示字元)—MINIMAL(ALTERNATESHELL)
    -- 使用基本系統檔和驅動程式啟動 Windows,啟動後進入命令提示字元視窗。
    -- 此模式下將不會出現桌面和開始功能表,如果不小心關閉了命令提示字元視窗,則關機只能通過按『Ctrl +Alt +DEL』來打開「Windows 工作管理員」,然後從它的「關機」選單下選擇;或者在工作管理員中「應用程式」頁籤下選擇「新工作」,輸入 explorer.exe 即可出現桌面和開始功能表,然後可像正常模式一樣關機。

4. 啟用開機記錄檔
    -- 如果電腦以任何一項「安全模式」選項啟動(除了「上次的良好設定」以外),這個選項就會啟用記錄。
    -- 開機記錄檔的內容記錄在 Windows 資料夾的 Ntbtlog.txt 檔案中,透過這個記錄檔文件可以分析系統啟動時出現問題的根本原因。

5. 啟用 VGA 模式
    -- 這個選項會使用目前的顯示卡驅動程式 (而不是 Vga.sys),以 640 x 480 模式啟動 Windows。
    -- 如果顯示卡是設定成螢幕無法顯示的設定值,此模式就派得上用場。
    -- 不過安全模式、含網路功能的安全模式及含命令提示字元的安全模式,均載入 Vga.sys 驅動程式。Vga.sys 驅動程式為Windows 系統預設的顯示驅動程式。

6. 上次良好設定(您上一次正常運作的設定)
    -- 使用 Windows XP 在最後一次關機時保存的設定(註冊資訊)來啟動Windows XP,僅在設定錯誤時使用,並不能解決因驅動程式或系統檔案毀損或遺失而引起的問題。
    -- 當使用者選擇「上次良好設定(您上一次正常運作的設定)」選項後,則 在最後一次正確的設定之後所做的修改和系統設定將會遺失。

7. 目錄服務還原模式(只給 Windows 網域控制站)
    -- 這個模式只有在 Windows 的網域控制站才有效用,此模式會執行目錄服務修復功能。
    -- 用於還原網域控制器上的 Sysvol 目錄和 Active Directory 服務的,實際上也是安全模式的一種。

8. 偵錯模式
    -- 這個選項會在 Windows 中開啟偵錯模式。偵錯資訊可以經由序列電纜線傳送到另一台執行偵錯工具的電腦,此模式預設為使用 COM2。

9. 正常啟用 Windows
    -- 這個選項以正常模式啟動 Windows。

10. 重新開機
      -- 這個選項可命令電腦重新開機。

11. 回到 OS 選擇功能表
       -- 電腦如果設定成以超過一種以上的作業系統開機,這個選項會回到開機功能表。


.如 果電腦無法正常啟動,可以先行使用「安全模式」來修改一些設定以排除系統故障,或是透過其他方式,如:「系統還原」、「回復驅動程式」及使用備份文件來恢 復系統。如果系統在啟動時的問題是由一些致命的錯誤造成的話,譬如系統檔案遺失、硬碟啟動磁區毀損,那麼安全模式也愛莫能助了,這時就必須透過其他方式, 如:重裝作業系統來解決。 


.Reference:
-- 知識+  1   2

FAT, NTFS and FAT32

 以下資料自網路上搜尋所得。
您可以在三種檔案系統之間選擇,以作為執行 Windows XP 電腦上的磁碟分割:NTFSFAT 及FAT32。請使用下列資訊來比較檔案系統。
基於下列原因,建議使用 NTFS 檔案系統。
  • NTFS 比 FAT 或 FAT32 更強而有力,且包括主控 Active Directory 所需的功能以及其他重要的安全性功能。只有選擇 NTFS 作為您的檔案系統,您才可以使用一些像是 Active Directory 及網域型安全設定的功能。
  • 將 磁碟分割轉換到 NTFS 很容易。不論您的磁碟分割是使用 FAT、FAT32 或舊版的 NTFS,安裝程式都讓轉換更加簡單。這種轉換可保持您檔案的完整性 (不同於格式化磁碟分割)。如果您需要保持檔案原狀,且具有 FAT 或 FAT32 磁碟分割時,建議使用 NTFS 來格式化磁碟分割,而不要從 FAT 或 FAT32 轉換。將磁碟分割格式化可清除磁碟分割上的所有資料,並可讓您從全新的磁碟開始。
    不論以 NTFS 來格式化或使用轉換命令來轉換磁碟分割,NTFS 都是較佳的檔案系統選擇。如需 Convert.exe 的相關資訊,請在完成安裝後,依序按一下 [開始] 及 [執行] 後,輸入 cmd,再按 ENTER 鍵。在命令視窗中鍵入 help convert,再按 ENTER 鍵。
  • 為了維護檔案及資料夾上的存取控制並支援受限制的帳戶,您必須使用 NTFS。如果您使用 FAT32,則所有的使用者都可以存取您硬碟上的所有檔案,不論他們的帳戶類型為何 (系統管理員、受限制的帳戶或標準的帳戶)。
  • NTFS 是在大型磁碟中最好用的檔案系統。(大型磁碟的下一個最佳檔案系統是 FAT32。)
有一種情況下,您可能會要選擇 FAT 或 FAT32 作為您的檔案系統。如果必需有一台電腦有時候執行舊版的作業系統,而有時候執行 Windows XP, 您將會需要 FAT 或 FAT32 磁碟分割,作為硬碟上主要的 (或啟動) 磁碟分割。如果使用最新版本的 NTFS,則大多數的 Windows 早期版本都無法存取磁碟分割。Windows 2000 以及含 Service Pack 4 或更新版的 Windows NT 4.0 是兩個例外。含 Service Pack 4 或更新版的 Windows NT 4.0 可以用最新版的 NTFS 存取磁碟分割,不過有一些限制:Windows NT 4.0 無法存取使用在它發行時不存在的 NTFS 功能所儲存的檔案。
不過,除了多重作業系統的狀況以外,還是建議的檔案系統為 NTFS。
 重要事項
  • 一旦您將磁碟機或磁碟分割轉換成 NTFS,您就無法將它轉換回 FAT 或 FAT32。您將需要重新格式化磁碟機或磁碟分割,而這會清除所有的資料,包括磁碟分割上的程式及個人檔案。
下表說明每種檔案系統與各種作業系統的相容性。
NTFS FAT FAT32
執行 Windows XP 或 Windows 2000 的電腦,可以存取 NTFS 磁碟分割上的檔案。執行含有 Service Pack 4 或更新版的 Windows NT 4.0 電腦可能可以存取某些檔案。其他作業系統不允許存取。可以透過 MS-DOS、Windows 所有版本、Windows NT、Windows 2000、Windows XP 以及 OS/2 存取。唯有透過 Windows 95 OSR2、Windows 98、Windows Millennium Edition、Windows 2000 及 Windows XP,才能存取。

下表將可能的磁碟及檔案大小與每種檔案系統做比較。
NTFS FAT FAT32
建議的磁碟區大小最小值大約是 10 MB。
磁碟區可以超出 2 TB 許多。
無法用於磁片上。
磁片的磁碟區容量最多到 4 GB。
不支援網域。
從 512 MB 到 2 TB 的磁碟區。
在 Windows XP 中,您最多只能格式化 32 GB 的 FAT32 磁碟區。
不支援網域。
檔案大小僅受磁碟區大小的限制。最大檔案大小為 2 GB。最大檔案大小為 4 GB。

CPU and Memory

.cpu指的是中央處理器,是電腦五大單元中的〝控制單元〞和〝算數邏輯〞單元的綜合體﹝以前的電腦這兩個部分是分開的﹞。

.CPU的組成,就是來自於數萬 個晶圓組﹝光電產業的傑作﹞,儲存著許多的指令集,用來增加效能,在解釋與算數方面也相當強悍,他就像是電腦的心臟,控制著電腦的一切,掌管一切有關計算 的問題,關係著電腦計算速度的就是〝時脈〞,他代表著CPU的處理速度﹝最穩定的最高速﹞,但也並非代表一切,處理器的架構還是會左右CPU的效能﹝指令 集與快取記憶體便是其一﹞。

.目前PC的CPU廠商主要有分INTEL和AMD兩種,而兩者各有其優劣。但未來的CPU會走向〝感知平台〞,和更多核心的方向,提升時脈目前是AMD的努力方向,INTEL已經朝增強效能邁進。﹝時脈的提升,INTEL遇到瓶頸﹞


.記憶體則是屬於〝記憶單元〞,用來儲存等待處理的資料﹝0跟1﹞。

.記憶體現在又有分為主記憶體與快取記憶體
-- 主記憶體指的就是RAM、ROM,RAM是屬 於可重複存取的記憶體,一斷電資料便會流失,ROM則是屬於斷電後資料仍然存在,也不可重複讀寫﹝有些可以﹞。現在的RAM比較常見的有SDRAM與 DDRRAM,SDRAM市已經接近淘汰的規格,DDRRAM是目前主流,DDRRAM指的是〝雙倍速度的記憶體〞,也就是通稱的雙通道,目前主流時脈是 400與533,400屬於DDR1,533屬於DDR2。目前INTEL支援DDR2,而AMD預計要等到2006年。

-- 快取記憶體則是 建於CPU內,用來給CPU更快的處理速度,但一般來說不會太大,目前一般常見的會有L1、L2,較高級的會有L3,而此快取也關係著處理器的速度,假設 L1是256的CPU A與L1是512的CPU B相比,理論上B就快了一倍﹝不需要繞到RAM那去再取資料,等於縮短了路程﹞,許多的CPU也可用快取記憶體來分高低階,像INTEL P4 630與531在快取記憶體上就有差別。

.要使CPU效能更好,可以採用超頻的方式,但不建議使用,一般CPU的時脈已經是最穩定的設定,調太高對CPU而言不好,因為一般超頻指的雖是頻寬,但實際上改變的是〝電壓〞,把電壓調高對CPU而言是會造成傷害的﹝尤其是溫度很高的處理器,更危險﹞。

Reference: 整理自網路上

x86和x64的處理器

.x86其實是指過去處理器的通稱,Intel以前的處理器大多以86為其產品編號的末兩碼──8086、80286、386、486……。即使到了 Pentium時代,大家私底下還是用586、686這樣的說法。

.不考慮太舊的處理器,總之,現在
- x86,其實就是泛指過去32位 元的處理器──就是這樣,x86等於32位元。
- x64,泛指現在新一代,支援64位元(處理器裡面有64位元通用暫存器)處理器的相關產品。

.處理器
- 處理器裡面有很多的「暫存器」,而用來做運算的是一堆所謂的「通用暫存器」。
- 通常暫存器的「寬度」,就是我們俗稱的「幾位元處理器」。
- 通用暫存器是32位元寬,那一般就稱這處理器是32位元處理器。
- 處理器的定址能力,和處理器的「幾位元」是無關的。
- 一般處理器業界/學界所稱「這處理器是XX位元」,是指這處理器的「通用暫存器多寬」而不是定址能力

.x86
- x86作業系統只能支援到4GB(或是更少的)記憶體容量,不過這並非32位元處理器的限制,這是Windows本身設計的限制。

.x64
- x64作業系統可以支援更大的容量的記憶體,支援到超過4GB記憶體
- 資料量大時,x64Windows有其優勢
- 但如果你並不是執行資料量大的程式,那64位元對你就沒有太大的好處。
- 所以如果你的記憶體容量不大,64位元也沒有太大必要性。

. x86版的作業系統可以裝在x86和x64的處理器(因為相容的必要),而x64的作業系統,就只能裝在x64的處理器

.大多數的較老的應用軟體(32位元的),大多可以裝在x86和x64的作業系統裡面跑,但是專門的x64軟體,則一定得裝在x64作業系統底下跑才行



.Reference iT自救術─x86和x64到底有什麼差異?

Case Tool

.是軟體工程的電腦輔助工具,它必需依循軟體工程裡特定的方法論

.譬如 IDEF 、 UML 等,進而將 SDLC (系統發展生命週期,System Development Life Cycle)各階段工作自動化的軟體,其中對階段的定義包含有 ( 以 IEEE STD 1012 對 SDLC 定義為例 ) :
-- 概念規劃
-- 需求分析
-- 設計
-- 程式建置
-- 測試
-- 安裝與簽出
-- 運作與維護等七個階段
.在上述的七個階段裡, CASE Tool 分別透過下列技術方法與管理機制,來達成 SDLC 工作自動化的目標:
-- 標準化的方式,來提高效率 ( 譬如:各種 Standard, Template)
-- 知識化的方式,來累積及分享,開發的經驗與知識 ( 譬如: Repository)
-- MDA(Model Driven Architecture 模型導向架構 ) 作為增長有效溝通的方法與工具
-- MDD(Model Driven Development 模型導向開發 ) 作為可重覆利用的開發方法與工具
-- 依所採用的方法論,檢測是否遵循方法論的遊戲規則
-- 提供不同型態的 SDLC 樣板,給各式不同型態的軟體專案使用
-- 變更管理的機制,來控管需求變更所衍生的相關程序與問題
-- 型態管理的機制,來管理 SDLC 各階段自動化整合的問題
-- 安全管理機制,來管理與監控任務與使用的權限
-- 各種業界標準,如 XML 等,來與它牌 CASE Tool 整合
綜觀以上, CASE Tool 的功能是非常寬廣的,簡單說來:『從需求產生到軟體下架停用為止』, CASE Tool 提供了我們,一個在 SDLC 各階段的自動化工作中,所需之技術與管理的平台,也可以當成是軟體發展的基礎工程


.Reference 1

[UML] UML 優點和組成

.優:
    -- 模型元素的統一
    -- 意義的統一
    -- 不限制於特定方便論
    -- 能涵蓋開發各個階段
    -- 容易討論問題點與解決方式

.UML的組成元素:
    -- view: 從各種視點觀察要塑模的對象
    -- diagram: 說明view的內容
    -- model element: diagram的組成元素

GQM

.Goal Question Metric(度量指標) 

.軟體度量 (software measurement)為確保軟體品質的一種方法,透過度量程式 (measurement program) 的輔助 

.方法主要 分為兩個過程:
-- 由上而下的過程主要是利用問題(questions)的方式,引導度量目標產生相關的度量指標;
-- 由下而上的過程則是根據度量指標所收集的資料,經過分析(analysis)與解讀 (interpretation),檢視其與度量目標之間的對應關係。GQM提供了一個可行的度量程式機制,透過GQM所提供的指導原則,軟體度量人員可以明確的制定度量計畫與目標,同時透過這些度量指標,管理與改善軟體開發流程與組織架構,達到評估與改善先前所訂定之目標。 

.Reference: Wiki