如何為 NetBeans 專案添加類別庫,下面以添加 Apache Commons-CSV 讀取CSV檔案的類別庫為例。 下載及解開 Apache Commons-CSV 類別庫 URL: https://commons.apache.org/proper/commons-csv/download_csv.cgi 點選 Binaries/commons-csv-1.10.0-bin.zip 解壓後路徑: C:\...\commons-csv-1.10.0 從 NetBeans 左欄面板,如下點選填入名稱,類別檔,原始碼,註解檔路徑。 Projects/Project Name/Libraries/Add Library.../Create Library Name: Commons-CSV Library Type: Class Libraries Classpath/Library Classpath: 類別檔路徑 Add JAR/Folder... C:\...\commons-csv-1.10.0\commons-csv-1.10.0.jar Sources/Library Sources: 原始碼路徑 Add JAR/Folder... C:\...\commons-csv-1.10.0\commons-csv-1.10.0-sources.jar Javadoc/Library Javadoc: 註解檔路徑 Add JAR/Folder... C:\...\commons-csv-1.10.0\apidocs 設定類別檔,原始碼,註解檔的完整路徑,安裝類別庫之後,NetBeans專案就可以使用如下類別庫套件: org.apache.commons.csv.* 遇到有疑問的類別或方法,可選擇其名字,按如下選單或快速鍵,查看其註解或原始碼: 看註解: Source/Show Documentation (Ctrl-Shift-Space) 看原始碼: Navigate/Go to Source (Ctrl-Shift-B)
2023年11月24日 星期五
how to add libraries for a NetBeans project
2023年11月3日 星期五
why thrashing occurs in virtual memory systems
依據現代電腦的馮紐曼運算架構,CPU始終只能從記憶體讀取資料執行,不能直接從硬碟讀取資料。因此,程式常受限於記憶體的容量限制而無法載入執行。可是明明電腦系統的硬碟容量常是記憶體的上千倍,難道不能克服困難,將硬碟當成記憶體使用嗎?
虛擬記憶體 (Virtual Memory)就是這樣一個應急措施,可將硬碟分一塊置換空間 (Swap Space),當成記憶體用。其明顯好處是從此電腦不再受記憶體的容量限制,再大、再多的程式也可執行。只要硬碟夠大,頂多暫時存放在硬碟的置換空間,要用時再搬進記憶體執行即可。
但記住虛擬記憶體始終只是一個應急措施,不能當成常態使用。理由是資料在記憶體和硬碟之間搬移 (swapping) 時,要花費很久的等候時間,互動式用戶將等的不耐煩,故只適合非不得已偶一為之。例如,記憶體的批次用戶較多,可暫時挪到硬碟休息,先讓互動用戶使用記憶體。
採用虛擬記憶體有一個副作用是如果管理不好,分配給程式的實體記憶體不夠,須要先將暫時不用的程式從記憶體搬出到硬碟 (page out),才能騰出空間,讓須要的程式碼從硬碟搬回到記憶體 (page in) 執行。萬一記憶體極端不足情況下,很可能剛搬出的程式,等下又要再搬入,造成所謂的掙扎 (thrashing) 現象。出現此反常現象時,系統效能將變極差,只見硬碟不斷亮燈,苦苦忙著將資料從記憶體搬出搬進,I/O使用率陡升,而CPU卻坐等資料搬好,閒閒沒事幹,CPU使用率陡降。
註: 上述 掙扎現象的英文 thrashing 查字典有如下諸多意思:
掙扎,輾轉,擺盪,振盪,顛簸,抖動,猛移,往復移動,頻繁置換;
徒勞,作虛功,無進展,白費力氣,原地踏步;打敗,痛打,窮忙,窮打,窮追猛打
常見直譯有 輾轉,擺盪,甚至意譯 窮忙,作虛功,也都很傳神。
選擇 掙扎 則兼有直譯及意譯,猶如泳者奮力浮水,離水之魚奮拍入水之勢。
active versus passive multiprogramming
多元規劃 (multiprogramming) 是作業系統演進上,早期一項重要發明。早期電腦的記憶體一次只放一支程式,遇到程式執行I/O指令,等候I/O結果,CPU就閒置浪費掉。因此,利用多元規劃技術,在記憶體放進多支程式,遇程式等I/O時,就將CPU分配給其他程式使用,如此即可提升CPU使用率 (utilization)。
至於為何將技術取名為多元規劃,讓人從字面不易猜透其義? 猜測可能是參考當時流行的線性規劃 (linear programming),整數規劃 (integer programming) 等最佳化技術的命名。顧名思義,多元 指的是記憶體一次載入多支程式,規劃 指的是安排多支程式執行。而某種意義上,這也的確是讓CPU使用率提升的一種最佳化技術。如果對多元用語的語義不明有芥蒂,也許稱為 多程式規劃 會更一目暸然。一個電腦系統的 多元規劃度 (degree of multiprogramming) 為記憶體可放進多少支程式的數量,其值越高,表示CPU有越多程式可執行,越有利於提升CPU使用率。
多元規劃依據作業系統排班器對CPU掌控程度分為兩種。主動式多元規劃 (active multiprogramming) 利用計時器中斷主動介入, 給定時間一到,CPU即須讓出跑其他程式,可防止CPU遭程式霸佔;被動式多元規劃 (passive multiprogramming) 的排班器只能被動等候程式志願退出或作I/O,才能重新取得CPU分配給其他程式,容易造成CPU遭程式霸佔。