Blogger 站內搜尋

2020年5月10日 星期日

Maven-環境建置


更新時間:05/10/2020

前言

Apache Maven,是一個專案管理及自動構建工具(特別是Java軟體)。Maven專案使用專案物件模型(Project Object Model,POM)來組態。專案物件模型儲存在名為 pom.xml 的檔案中。
通過在 pom.xml 配置一小段描述訊息來管理項目的建構(編譯、測試、報告、打包、部署),然後把Source Code放到默認的目錄中,最後下下幾個指令即可。
理想的項目構建是高度自動化,跨平台,可重用的組件,標準化的,使用maven就可以幫我們完成上述所說的項目構建過程。

2020年5月6日 星期三

Maven-開篇


更新時間:05/06/2020

前言、pom.xml?可以拿來做什麼嗎?

第一次碰到專案時,發現有一個pom.xml檔案,裏頭密密麻麻的文字,完全不瞭解其意義...。只好詢問開發人員,但卻被冷冷地回應:「Java不是都這樣開發的嗎?」,他也沒再多解釋什麼,默默地走掉了!
What the hell!?這種配置我從來沒有見過,懵了!還是繼續寫Code去...

2019年12月22日 星期日

Java OpenJDK 安裝與環境設置


更新時間:12/22/2019

前言

擔心 Oracle JDK 要收費?別擔心!Java 社群還是非常活耀!使用 OpenJDK 吧!

一、比較活耀的 Open JDK

1.1 Zulu:Zulu OpenJDK
推薦使用。
Azul System 這家公司推出基於 Open JDK 開發的開源 Zulu,標榜通過官方 TCK 認證,與 Java SE 完全相容,開放免費下載及使用,Azul 公司則靠技術支援服務營利。

2018年12月26日 星期三

Java SE 入門教學 - 圖形介面開發

更新時間:12/26/2018

前言

人是視覺動物(誤) 感性的物種,擁有獨自的喜好,看順眼與不順眼都很主觀,但唯一相同的是直覺性地操作工具,當接觸到未知的工具時,總是從看得見得開始摸索,並慢慢發覺隱藏在背後的功能,最後可以非常靈活使用工具。

程式設計師生產出來的產品也是一樣,如果一個系統只能使用文字介面操作,那它的使用對象一定是"工程師",一般使用者可不買單這種純文字的操作,操作一個功能還要查找要使用那個命令,這實在是太麻煩了!

圖形使用者介面(Graphical User Interface, GUI)是指採用圖形方式顯示的電腦操作用戶介面。與早期電腦使用的命令列介面相比,圖形介面對於使用者來說在視覺上更易於接受,以「各種美觀、而不單調的視覺訊息」提示使用者「狀態的改變」,勢必比純文字來得精彩。

2018年12月25日 星期二

Java SE 入門教學 - 執行緒(2)

更新時間:12/25/2018

前言

在前篇 執行緒(1) 初次介紹了執行緒,並提出執行緒的競速情況(Race Condition)。在此篇文章會介紹簡單、靈活地操作執行緒,至於更深入的控制執行緒的剖析,將不在此篇討論。

在執行緒中的"鎖"提供了兩種主要特性:互斥(mutual exclusion)和可見性(visibility)。

互斥即一次只允許一個執行緒持有某個特定的鎖,因此可使用該特性實作對共享數據的協調訪問協議,這樣,一次就只有一個執行緒能夠使用該共享數據。

可見性要更加複雜一些,它必須確保釋放鎖之前對共享數據做出更改,對於隨後獲得該鎖的另一個執行緒是可見的。如果沒有同步機制提供的這種可見性保證,執行緒看到的共享變數可能是修改前的值或不一致的值,這將引發許多嚴重問題。

2018年12月24日 星期一

Java SE 入門教學 - 執行緒(1)

更新時間:12/24/2018

前言

以前電腦的 CPU 只有單一實體核心,而現在電腦的 CPU 都是實體多顆核心,能夠讓作業系統同時處理許多程序(Process)與執行緒(Thread),使得應用程式充分利用 CPU 資源。此篇文章是 Java (多)執行緒的一個入門,其實 Java 裡頭的執行緒完全可以寫成一本書了!這邊就是如何在 Java 中簡單使用(多)執行緒,並介紹(多)執行緒產生的後遺症。

執行緒是作業系統能夠進行運算排程的最小單位。它被包含在程序之中,是程序中的實際運作單位。一條執行緒指的是程序中一個單一順序的控制流,一個程序中可以並行多個執行緒,每條執行緒並列執行不同的任務。

為什麼使用執行緒?

在 Java 程序中使用執行緒有許多原因。如果您使用 Swing、servlet、RMI 或 Enterprise JavaBeans(EJB)技術,您也許沒有意識到您已經在使用執行緒了。使用執行緒的一些原因是它們可以幫助:

使 UI 響應更快

事件驅動的 UI 工具箱(如 AWT 和 Swing)有一個事件執行緒,它處理 UI 事件,如按下鍵盤或點擊滑鼠。 AWT 和 Swing 程序把事件偵聽器與 UI 物件連接。當特定事件(如單擊了某個按鈕)發生時,這些偵聽器會得到通知。事件偵聽器是在 AWT 事件執行緒中調用的。 如果事件偵聽器要執行持續很久的任務,如檢查一個大文檔中的拼寫,事件執行緒將忙於運行拼寫檢查器,所以在完成事件偵聽器之前,就不能處理額外的 UI 事件。這就會使程序看來似乎停滯了,讓用戶不知所措。 要避免使UI 延遲響應,事件偵聽器應該把較長的任務放到另一個執行緒中,這樣 AWT 執行緒在任務的執行過程中就可以繼續處理 UI 事件(包括取消正在執行的長時間運行任務的請求)。

利用多處理器(MultiProcessor, MP)系統

多處理器(MP)系統比過去更普及了。以前只能在大型數據中心和科學計算設施中才能找到它們。現在許多低端服務器系統,甚至是一些個人主機或行動裝置系統都有多個處理器。 現代操作系統,包括 Linux、Solaris 和 Windows Server/7/10,都可以利用多個處理器並調度執行緒在任何可用的處理器上執行。 調度的基本單位通常是執行緒;如果某個程序只有一個活動的執行緒,它一次只能在一個處理器上運行。如果某個程序有多個活動執行緒,那麼可以同時調度多個執行緒。在精心設計的程序中,使用多個執行緒可以提高程序吞吐量和性能。

簡化建模

在某些情況下,使用執行緒可以使程序編寫和維護起來更簡單。考慮一個仿真應用程序,您要在其中模擬多個實體之間的交互作用。給每個實體一個自己的執行緒可以使許多仿真和對應用程序的建模大大簡化。 另一個適合使用單獨執行緒來簡化程序的示例是在一個應用程序有多個獨立的事件驅動組件的時候。例如,一個應用程序可能有這樣一個組件,該組件在某個事件之後用秒數倒數計時,並更新螢幕顯示。與其讓一個主循環定期檢查時間並更新顯示,不如讓一個執行緒什麼也不做,一直休眠,直到某一段時間後,更新螢幕上的計數器,這樣更簡單,而且不容易出錯。這樣,主執行緒就根本無需擔心計時器。

執行異步(Asynchronous)或後台處理

服務器應用程序從遠程來源,如網路插座(Network socket, 網路埠)獲取輸入。當讀取 Network socket 時,如果當前沒有可用數據,那麼對 SocketInputStream.read() 的調用將會阻塞,直到有可用數據為止。 如果單執行緒程序要讀取 Network socket,而 Network socket 另一端的實體並未發送任何數據,那麼該程序只會永遠等待,而不執行其它處理。相反,程序可以輪詢 Network socket,查看是否有可用數據,但通常不會使用這種做法,因為會影響性能。 但是,如果您創建了一個執行緒來讀取 Network socket,那麼當這個執行緒等待 Network socket 中的輸入時,主執行緒就可以執行其它任務。您甚至可以創建多個執行緒,這樣就可以同時讀取多個 Network socket。這樣,當有可用數據時,您會迅速得到通知(因為正在等待的執行緒被喚醒),而不必經常輪詢以檢查是否有可用數據。使用執行緒等待 Network socket 的代碼也比輪詢更簡單、更不易出錯。

2018年12月19日 星期三

Java SE 入門教學 - 簡單操作資料庫 - 語法使用

更新時間:12/19/2018

前言

在建立前端即 Java 程序和後端(即資料庫)之間的連接之前,我們應該了解 JDBC 究竟是什麼以及它為何存在。

什麼是 JDBC?

JDBC 是 Java Database Connectivity 的首字母縮寫。這是 ODBC(開放式資料庫連接)的進步。JDBC 是為了將數據從前端移動到後端而開發的標準 API 規範。此 API 由用 Java 編寫的類別和介面組成。它基本上充當介面(不是我們在 Java 中使用的介面)或 Java 程序和資料庫之間的通道,即它在兩者之間建立鏈接,以便程序員可以從 Java 代碼發送數據並將其存儲在資料庫中以備將來使用。

為什麼 JDBC 會出現?

如前所述,JDBC 是 ODBC 的一個進步,ODBC 依賴於平台有很多缺點。ODBC API 是用 C、C++、Python、Core、Java 編寫的,正如我們所知,上面的語言(除了 Java 和 Python 的某些部分)都依賴於平台。因此,為了消除依賴性,JDBC 由資料庫供應商開發,該供應商由用 Java 編寫的類別和介面組成。

2018年12月13日 星期四

Java SE 入門教學 - 簡單操作資料庫 - 環境架設

更新時間:12/13/2018

前言

有些資料執行完畢就可以丟掉,但有些資料必須保存,以利下一次的使用,我們可以使用序列化與反序列化將資料儲存在硬碟中,但資料多後,程式碼需要控制流程,又要管理資料,這會變得很難維護。

在紙筆發明前,我們的老祖宗只能使用我們的大腦記住所有的資料同時又必須思考要做什麼事情。在紙筆發明後,我們可以將一些資訊寫下來,這樣我們的老祖宗可以專心思考要做什麼事情,甚至可以創作一些詩詞廣為流傳,例如《江城子》蘇軾


近代,在電腦發明前,我們可能使用"資料夾"的方式來保存世界上所有國家的資料。


在電腦發明後,我們可能使用這樣的工作表軟體紀錄資料。


使用這種工作表來儲存國家資料,當然比用卡片好多了,尤其是想要尋找某個國家的資料,然後修改它的人口數量。雖然方便多了,不過在你查詢國家資料時,可能會有這樣的問題:各表單間還是不能連貫,那跟一個一個檔案分開也沒啥區別了

2018年12月12日 星期三

安裝 MariaDB

更新時間:12/12/2018

前言

MariaDB 資料庫管理系統是 MySQL 的一個分支,主要由開源社群在維護,採用 GPL 授權授權。開發這個分支的原因之一是:Oracle 公司收購了 MySQL 後,有將 MySQL 閉源的潛在風險,因此社群採用分支的方式來避開這個風險。

MariaDB 的目的是完全相容 MySQL,包括 API 和命令列,使之能輕鬆成為 MySQL 的代替品。在儲存引擎方面,10.0.9 版起使用 XtraDB(名稱代號為Aria)來代替 MySQL 的 InnoDB。

MariaDB 由 MySQL 的創始人米卡埃爾·維德紐斯(Ulf Michael Widenius)主導開發,他早前曾以 10 億美元的價格,將自己建立的公司 MySQL AB 賣給了 SUN,此後,隨著 SUN 被甲骨文收購,MySQL 的所有權也落入 Oracle 的手中。MariaDB 名稱來自米卡埃爾·維德紐斯的女兒瑪麗亞(英語:Maria)的名字。

2018年12月11日 星期二

第一次使用與設定 NetBeans IDE

更新時間:12/11/2018

前言

IDE(Integrated Development Environment, 集成開發環境) 用於提供程序開發,您可以在這個 IDE 上可以完成編輯、編譯、連結、運行和除錯所有步驟。
使用 IDE 的好處是:
 (i) 可以幫您偵測哪一行代碼有問題,直接(編譯)顯示出語法警告或語法錯誤。
 (ii) 可以幫您很快調用所需的 API,擁有提示功能,方便查看 API 的聲明或者源代碼。
 (iii) 可以幫你去調試應用程序,查找程序錯誤。