2024-11-27

📝 紀錄一下幾個不同 JDK

這邊記錄一下幾個常見的 JDK(Java Development Kit)與其差異

JDK與其下載頁 License 備註
Oracle JDK 有商用限制。
除此之外,JDK 8、11和之後的版本 License有所不同。
詳細請參見 Oracle 的說明
有 Open JDK 不包含的額外功能。
Oracle Open JDK GPLv2 + CPE
BellSoft Liberica JDK GPLv2 + CPE Spring 推薦使用
有提供
  1. Full version 
  2. Standard version 
  3. Lite version 
三種版本的 JDK 可供下載
Microsoft JDK GPLv2 + CPE
Eclipse Temurin™ Open JDK GPLv2 + CPE
OpenLogic Open JDK GPLv2 + CPE 由 Open Logic 所建置的 JDK
內部已經包含了 JavaFX 相關 libraries 了
IBM Semeru Runtime™ GPLv2 + CPE 有特別針對性能進行優化
RedHat GPLv2 + CPE
SAP Machine GPLv2 + CPE 與 Open JDK 的差異可參見官方 wiki

除了上述的幾種以外,其實還有其他像是毕昇 JDK(華為建的)、Dragonwell JDK (阿里巴巴建的)、Kona JDK(騰訊)……等等的,就不列舉了。


我看了一下,有很多公司會特別建 JDK 就是要用在自家公司的服務之中,例如微軟的 JDK 適合部屬在 Azure 上、Red Hat JDK 會和自家平台整合……等等。


2024-10-18

📝紀錄:Go 語言一些我常需要用到的資訊

Go 各版本的 Windows 支援程度

參閱官方Wiki:《Go for Microsoft Windows

安裝多版本的 Go

參閱官方說明:«Download and install»

首先先執行以下指令

go install golang.org/dl/go{你要的版本}@latest

然後再執行

go{你要的版本}} download

列出所有支援操作系統及架構

指令:

go tool dist list
輸出結果
js/wasm
linux/386
linux/amd64
linux/arm
windows/386
windows/amd64
windows/arm
windows/arm64

可以在後面加上-json 以 JSON格式輸出

加上-json後的輸出結果
[
        {
                "GOOS": "linux",
                "GOARCH": "386",
                "CgoSupported": true,
                "FirstClass": true
        },
        {
                "GOOS": "linux",
                "GOARCH": "amd64",
                "CgoSupported": true,
                "FirstClass": true
        },
        {
                "GOOS": "linux",
                "GOARCH": "arm",
                "CgoSupported": true,
                "FirstClass": true
        },
        
        // 下略……
]

參考自:impluse:《go列出所有支持的系统平台及其架构》

2024-09-11

做 Hibernate envers 設定時遇到的坑

這篇算是延續先前《SpringBoot 使用多個資料庫連線》的狀況

我今天想要使用Hibernate envers來處理資料的版控。

原先我是這樣處理的:

  1. pom.xml 加上library

    <dependency>
    	<groupId>org.hibernate</groupId>
    	<artifactId>hibernate-envers</artifactId>
    </dependency>
  2. application.properties 加上設定

    spring.jpa.properties.hibernate.envers.audit_table_suffix=_rev
    spring.jpa.properties.hibernate.envers.revision_field_name=rev
    spring.jpa.properties.hibernate.envers.revision_type_field_name=revtype
    
  3. Hibernate Entity 加上 @Audit
    import javax.persistence.Entity;
    import javax.persistence.Table;
    
    import org.hibernate.envers.Audited;
    
    @Entity
    @Audit
    @Table(name = "my_entity")
    class MyEntity{
    	// 中略
    }

然而,實際執行時,Hibernate 處理版控資料時,都想要存入 my_entity_AUD,即

insert into `my_entity_AUD` 
# 下略

2024-08-16

以數字開頭的 class element

如果 HTML code 如下

<span>Hello</span>&nbsp;
<span class="123">John Smith</span>

而 CSS 寫成如下,是無法作用的

.123{
	font-weight: bold;
	color: CornflowerBlue;
}

2024-08-12

Logback 設定

最近在調整自己開發的系統的 log。程式使用 Spring Boot,log 使用 logback。

我的目的是要讓其 log 到一定量就自動壓縮成 .gz檔、每天壓縮。

2024-07-19

OAuth 2.0 的 PKCE 筆記

PKCE 詳細規格請參閱 RFC7636

我在撰寫 OAuth 2.0 的登入時,會遇到 code_verifiercode_challenge 一直對不起來的狀況。

舉例來說,我請求 token 的參數為

client_id=aaa&
client_secret=bbb&
code=thisisasimpletoken&
code_verifier=HelloWorld&
grant_type=authorization_code

按照規範,我取得 authorization code 的 request 應該是 

client_id=aaa&
response_type=code&
scope=User.Read.All&
response_mode=form_post&
code_challenge_method=S256&
code_challenge=<將“HelloWorld”以 S256 加密後的字串>