2024年7月6日 星期六

Java - 程式碼排版的好處

目的

隨著開逐漸頻繁,我們就會產生非常多的程式碼內容,之後要如何將程式碼做有效的留存?如何要轉交給下一位同仁時能夠更快能夠更快上手。

爲什麼要排版

提高可讀性

清晰的程式碼結構和一致的格式可以讓程式碼更容易理解。良好的排版使得程式碼邏輯一目了然,減少理解程式碼的時間和精力。

減少錯誤

良好的排版有助於發現和避免錯誤。整潔的程式碼可以讓潛在的錯誤更容易被發現,例如缺失的括號或錯誤的縮排。

便於合作

在團隊合作中,一致的程式碼風格能夠讓團隊成員更容易閱讀和理解彼此的程式碼,減少溝通成本和程式碼衝突。

提高維護

程式碼在維護過程中需要頻繁地被閱讀和修改。良好的排版可以使得維護人員更容易理解程式碼邏輯,從而提高維護效率。


實際範例

修改前

public class Example {
public static void main(String[] args) {
int a = 10;
int b = 20;

if (a > b) {
System.out.println("a is greater");
} else {
System.out.println("b is greater");
}
}
}

修改後

public class Example {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        
        if (a > b) {
            System.out.println("a is greater");
        } else {
            System.out.println("b is greater");
        }
    }
}

歡迎轉載,請註明出處。

2024年6月10日 星期一

Java-錯誤及例外處理的第一步

各位大大
想必大家想順順利利的編寫程式碼
最好都不要有任何重大的錯誤
但是
通常事與願違
在開發的過程中
只會一直遇到錯誤並且快速修正減少錯誤再次發生
然後無限迴圈
直到事前直接想到之前有遇到過相同的雷
直接去迴避它

對的
面對他才是有效解決的好辦法
最怕的是連錯誤訊息都沒有顯示
那真的讓人恐懼

我們就先簡單介紹如何快速去排除問題吧!


錯誤項目

一般錯誤排除

常常發生於直接複製程式碼、編寫程式碼打錯字、沒有引用到正確資源等。
排除方式:
1. 會在錯誤的地方文字底下有紅蚯蚓提醒


2. 在當行前面有紅色燈泡提醒 Icon 點選下去有建議調整( 排除 )方式
PS: 雖然有提供方式給你選擇,但實際方向開發者要自己知道。



例外錯誤排除( Checked and Unchecked Exception  )

通常是在執行中遇到不符合預期內容、類別...等問題
排除方式:
1. 查看 Console Log 視窗或是 *.log 檔案
2. 如有明顯錯誤內容會存在 Error 敏感文字
3. 分析該區塊文字說明( 由上而下閱讀 )
- 先找第一行的例外類別為何( 下圖中第一個紅框框 ) ? ( 可先 Google 該例外簡易說明 )
- EX: Exception in thread "main" java.lang.NumberFormatException: For input string: "一"

- 在訊息內發生問題( 錯誤 )的程式碼位置
PS: 通常我們直接從專案底下( Packages )的程式碼找起,較少機會出現在依賴的資源內。
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) 
at java.lang.Integer.parseInt(Integer.java:580) 
at java.lang.Integer.valueOf(Integer.java:766) 
at com.text.Hello.main(Hello.java:9)





歡迎轉載,請註明出處。

Maven - Java 專案管理用途 ( 一 )

這章節不談論環境相關、安裝相關等問題

前提

各位大大
想必為啥 Java 專案用 Jar 匯入專案就可以用的嚇嚇叫
為啥最後要用啥 Maven 的東西來介入該專案內
用這一個東西到底有什麼好處?
如果是有好處的的話那要怎麼閱讀?

本文

自從工作後就沒有再離開過 Maven 了
不是說離不開
而是走到哪就被使用到哪裡
這就像是一個專案已經被定義好注定

生活例子( 前 ):

蛋糕的製作( 草莓蛋糕 )
成份:
雞蛋、麵粉、牛奶、草莓...等

我相信大家看到以上菜單就一股腦兒直接去蒐集材料並且開始製作
但是
如果你是幫XX超商出的蛋糕
能夠北區、中區、南區的長相、口味、口感沒有標準嗎?
材料的來源及作法能夠自己說的算嗎?
當然不能的
所以要制定規範

生活例子( 後 ):

蛋糕的製作( 草莓蛋糕 )
成份:
雞蛋( 台南XX山烏骨雞雞蛋 )
麵粉( XX貿易商X筋麵粉 )
牛奶( 日本北海道XX鮮乳 )
....

有了以上的規範
就能讓產出的內容更加有保障
也不會因為生產地區的不同導致產出的結果不一致
這就是 Maven 專案管理主要的用意

結論

因為有管理資源的設定
所以不管是哪裡支援的工程師( 蛋糕師傅 )
都可以快速掌握並且不會因為材料來源的不同
導致產出不符預期的產品出來


官方網站: 連結

2024年5月1日 星期三

MySQL-安裝與執行( 一 ) Mac

因為近期有安裝 MySQL 在 Mac 的需求
發現安裝起來好像在微軟的程序有點差異
所以在此記錄下來
以便下次瀏覽和確步驟

安裝 MySQL

  1. 首先到 MySQL 官方網站( 連結 )並且點擊網頁最下方的 Download Server 項目




  2. 點選其他下載版本



  3. 選擇合適你 Mac OS 版本以及 CPU 版本的安裝包
    PS: 我電腦版本 Mac OS 12 所以只能選 8.0.30



  4. 點選安裝包
    PS: 有時候會出現惡意程式提醒,記得去安全性及隱私權解除封鎖







  5. 我們這裡點選預設值



  6. 開始設定密碼( 目前預設長度看起來都要超過 8 碼 )
    PS: 因為僅在本機練習,所以先設定: 12345678




  7. 安裝完成



  8. 確認是否安裝成功,所以我們要去系統偏好內是否存在 MySQL 項目
    PS: 這項目檢測建議重新開機 





安裝 MySQL WorkBench

因為我們上方的步驟僅在本地安裝資料庫 ( DataBase ),如果要查看這資料庫或者是遠端( 線上 ) 資料庫,如果要實際對該資料庫( DataBase )操作,除了終端機外,還有使用官方提供的工具對指定資料庫操作。
  1. 首先到 MySQL 官方網站的 WorkBench( 連結 )並且點擊網頁最下方的 Download WorkBench 項目



  2. 點選其他下載版本



  3. 選擇合適你 Mac OS 版本以及 CPU 版本的安裝包
    PS: 我電腦版本 Mac OS 12 所以只能選 8.0.30



  4. 執行安裝步驟



  5. 安裝完成及歡迎介面



  6. 在 MySQL Connections 旁邊圖示( + ) 點選新增並設定剛剛在本機新增的資料庫連線資料
    Connection Name: TestDB
    Hostname: 127.0.0.1
    Port: 3306
    Password: 12345678( 請自行依照設定填寫 )



  7. 點選 Test Connection 進行測試確認結果



  8. 點選 OK 後,此新增的項目就會添加在介面內以便後續管理



  9. 點選後就可對此資料庫進行管理





歡迎轉載,請註明出處。

2024年4月21日 星期日

WebSite-如何匯入 Dynamic Web Project 至 Eclipse



如何載入 Dynamic Web Project 專案?
0. 下載專案並開啟 Eclipse
PS: 需要在 Eclipse 設置 Tomcat Server


1.  開啟專案
2. 選擇專案
3. 確認專案
4. 匯入專案

PS: 因為有些專案用得到 HttpServler,所以我們要針對專案進行相關設定,否則會出現一堆紅蚯蚓( 錯誤提醒 )
1. 查看專案特性
2. 確認專案內容
以此專案需要用到 Java 、 HttpServlet...etc
所以要勾選以上項目並且在 Web 項目掛載本機的 Server 才能載入相關的資源


測試網址: http://localhost:8080/xxxx/


歡迎轉載,請註明出處。


2023年5月10日 星期三

Java-下載憑證放置檔案

各位大大是否有碰過連上 Https 時候出現交握失敗的錯誤訊息
主要原因在於

1. 到瀏覽器下載憑證, 並改為cer副檔名格式

2. 確認jdk路徑( 可能是系統的或是開發用的 )

3. cmd 切換到jdk底下

4. 匯入將憑證到cacerts內讓jvm能執行


 import

bin\keytool.exe -importcert -alias "www.xxx.com.tw" -file jre\lib\security\www.xxx.com.tw.cer -lkeystore jre\lib\security\cacerts -storepass changeit


check

bin\keytool.ext -list -v -alias "www.xxx.com.tw" -keystore jre\lib\security\cacerts - storepass changeit


remove

bin\keytool.exe -delete -alias "www.xxx.com.tw" -keystore jre\lib\security\cacerts -storepass chageit


常見功能說明

*.cer: 網站憑證
alias: 別名
importcacert: 匯入憑證至cacerts
file: 來源檔案路徑
keystore: 憑證庫
storepass: 憑證庫密碼


2023年5月9日 星期二

Jave-Proxy設定

各位大大再開發的時候多少有以下的經驗吧
要如何從內部網路藉由代理伺服器(Proxy)出去外網取得相關資源
如果沒設定好不管如何去執行都只會得到UnKnowHost這錯誤訊息吧
在此紀錄說明

以下當然有少很多說明
特別是 Proxy 機制
有興趣可以查維基百科

一般網路:
Local - 數據機 - Internet

企業( 特殊 ) 網路:
Local - Proxy - Internet


import java.io.IOException;
import java.io.InputStream;
import java.net.Authenticator;
import java.net.MalformedURLException;
import java.net.PasswordAuthentication;
import java.net.URL;
import java.net.URLConnection;

public class TestProxy {

	public final static String acc = "A123456789";
	public final static String pwd = "!QAZ2wsx";

	public static void main(String[] args) {

		Authenticator.setDefault(new Authenticator() {

			@Override
			protected PasswordAuthentication getPasswordAuthentication() {
				// TODO Auto-generated method stub
				return new PasswordAuthentication(acc, pwd.toCharArray());
			}

		});

		System.setProperty("http.proxyHost", "proxy.com.tw");
		System.setProperty("http.proxyPort", "80");

		System.setProperty("https.proxyHost", "proxy.com.tw");
		System.setProperty("https.proxyPort", "80");

		URL url;
		try {
			url = new URL("https://tw.yahoo.com/");
			URLConnection connection = url.openConnection();
			InputStream is = connection.getInputStream();

			int i;
			while ((i = is.read()) != -1) {
				System.out.print((char)i);
			}

		} catch (MalformedURLException e) {
			e.printStackTrace();
			
		} catch (IOException e) {
			e.printStackTrace();
			
		}
	}
}