網頁

2020/12/30

Spring Boot JdbcTemplate 印出SQL及參數 print query sql and params

在Spring Boot使用JdbcTemplate在console印出執行的SQL及條件參數的方法如下。

Spring Boot H2 Database JdbcTemplate datasource jdbc url

在Spring Boot H2資料庫的datasource jdbc url設定如下。

Canary Deployment 金絲雀部署

Canary Deployment(金絲雀部屬)是一種軟體部署發布策略/模式(deployment/release strategy/pattern)。

2020/12/27

TortoiseSVN 建立並切換分支 create and switch branch

TortoiseSVN建立新分支並切換到新分支的方式如下。

幹!台鐵又誤點了! 20201228

早上要搭2114車次08:03分桃園的區間車到台北誤點8分。

Docker 檢視容器的volume inspect container volumes

Docker 檢視容器的volume的方法如下。

Docker 顯示所有的volumes show all volumes

Docker 顯示所有的volumes的方法如下。

Docker 移除未使用的volumes remove unused volumes

Docker 移除未使用的volumes方法如下。

2020/12/26

2020年底回顧

2020年,充滿變數的一年即將邁入尾聲,依慣例回顧今年及展望明年。

2020/12/25

Spring Boot Web @ResponseBody 作用

Spring Boot Web (Spring MVC)的@ResponseBody作用如下。

Spring Boot Web @RestControllerAdvice與@ControllerAdvice區別

Spring Boot Web專案統一處理Controller拋出的例外錯誤可用@ControllerAdvice@RestControllerAdvice,兩者區別如下。

2020/12/24

Java 判斷潤年 leap year

Java判斷該年是否為潤年(leap year)的方式。

Quartz 排程表示式格式 cron expressions format

Quartz cron expressions(cron 表示式)格式如下。

2020/12/23

IntelliJ IDEA 調整縮排設定 indent format setting

IntelliJ IDEA 調整縮排設定的方式如下。

麥當勞 蕈菇豬肉滿福堡加蛋 SAUSAGE McMUFFIN WITH EGG AND MUSHROOM

最近麥當勞早餐在推加了蕈菇(蘑菇)的滿福堡。

Spring Boot use SPRING_APPLICATION_JSON environment variable properties in Windows

Spring Boot可在系統設定環境變數SPRING_APPLICATION_JSON的json格式變數注入properties。

幹!台鐵又誤點了! 20201223

從今天開始記錄每一次台鐵誤點。

2020/12/21

上班爬樓梯進辦公室的理由

上班的辦公地點在6樓,有電梯也有樓梯可以上去。

Spring Data JPA Repository INSERT INTO SELECT WHERE NOT EXISTS

在Spring Data JPA的Repository使用INSERT INTO .. SELECT .. WHERE NOT EXISTS避免資料重覆新增。

2020/12/19

Docker run Spring Boot + MySQL containers

本範例在本機分別啟動Spring Boot container與MySQL container並建立連結。

2020/12/18

Spring Data JPA Query Methods WHERE IS NULL條件查詢

Spring Data JPA 可用方法名稱查詢(query mehtods)撈取資料,查詢條件為WHERE <column> IS NULL的方法寫法如下。

2020/12/17

資料庫 schema 到底是什麼意思 database schema meaning

在寫程式頭兩年一直聽不懂同事口中的schema到底是什麼意思。

2020/12/16

Spring JdbcTemplate query BeanPropertyRowMapper return List elements are null

今天同事和我分享關於BeanPropertyRowMapper回傳List<String>長度大於零但內容為空的現象。

2020/12/15

IntelliJ IDEA Community 建立Spring Boot JSP專案

在IntelliJ IDEA Community(社群版)建立Spring Boot JSP專案。

Java 移除List中重複的元素 remove duplicates from List

Java把List中重複的元素移除的方法如下。

2020/12/13

Spring Boot Jib Maven build image to Docker Hub

使用GoogleContainerTools下的Jib maven plugin build Spring Boot docker image並推送到Docker Hub registry。

String Boot Jib Maven build docker image

使用GoogleContainerTools下的Jib maven plugin build Spring Boot docker image。

2020/12/10

資料庫 SQL交易隔離 不重覆讀 SQL transaction isolation non-repeatable read

ANSI SQL-92的4.28 SQL-transactions中提到的併發交易(concurrent transaction)隔離的不重覆讀(non-repeatable read)現象。

台北市 內湖區 洲子美食街 野人舒食

昨天開始打算之後午餐都吃野人舒食的雞胸肉沙拉看能不能幫助減重。

資料庫 SQL交易隔離 髒讀 SQL transaction isolation dirty read

ANSI SQL-92的4.28 SQL-transactions中提到的併發交易(concurrent transaction)隔離的髒讀(dirty read)現象。

2020/12/8

Python len() 取得物件長度

Python 的len(s)函式可取得物件的長度。

2020/12/7

Spring Data JPA 樂觀鎖 optimistic locking

Spring Data JPA 樂觀鎖(Optimistic locking)範例如下。

Python List 基本用法範例

Python的List的基本用法如下。

2020/12/6

MySQL 8 InnoDB SELECT FOR SHARE 與 SELECT FOR UPDATE 差異

MySQL 8 InnoDB 鎖定讀(Locking Reads)分為SELECT ... FOR SHARESELECT ... FOR UPDATE,兩者差異如下。

ANSI SQL-92 SQL-transaction isolation level

資料庫交易的ACID特性中的隔離性(Isolation)定義當一筆資料同時被多個交易存取時產生的影響程度。ANSI SQL-92文件中定義了四種隔離層級(isolation level):

Python 浮點數四捨五入,無條件進位,無條件捨去 floats round up and round down

Python 對浮點數做四捨五入,無條件進位,無條件捨去的方式如下。

Python 整數與字串轉換 convert int and string

Python整數與字串的轉換方式如下。

Python 使用abs()取得絕對值

Python的abs(x)函式可以把數值轉為絕對值。

2020/12/5

Python 使用input()取得使用者輸入

Python在程式中要取得使用者輸入,可使用input([prompt])函式。

Python 在IntelliJ IDEA 撰寫hello world

在IntelliJ IDEA 撰寫Python程式印出hello world。

2020/12/4

Python 什麼是IDLE

Python的IDLE(Integrated Development and Learning Environment)為整合開發與學習環境,簡單說就是撰寫Python程式的工具。

2020/12/3

2020 如何知道心儀女生的電話

在2020年(也許到2021年也適用)如果你暗戀一個女生,又想知道她的電話號碼,你可以...

Docker Docker Compose與Dockerfile差別

Docker的Docker Compose與Dockerfile的差別如下。

2020/12/1

Docker Jenkins Maven building Spring Boot from Github

使用Jenkins docker container的pipeline建置Github上的Spring Boot專案。

Mac Finder 顯示隱藏檔案快速鍵 show hidden files shortcut

Mac的Finder中顯示隱藏檔案的快速鍵為shift ⇧ + command ⌘ + .

Mac install Maven by Homebrew

Mac使用Homebrew安裝Maven的方式如下。

日誌 20201201 日 女兒滿月

女兒出生滿一個月了,身長51公分,體重3,900克。

2020/11/29

Docker build Spring Boot docker image

使用Docker建構Spring Boot的docker image。

2020/11/28

Docker Dockerfile是什麼

Docker的Dockerfile是用來建構docker images的指令檔。

Mac Docker 安裝GitLab

在macOS上安裝GitLab。

台北市 內湖區 洲子美食街 熱。咖哩 印度咖哩

星期五下班去洲子美食街吃飯,吃的是熱咖哩的印度咖哩。

2020/11/25

Spring Data JPA 未呼叫Repository.save()但資料卻更新

最近碰到Spring Data JPA的地雷,明明沒有呼叫CrudRepository.save()但資料卻更新。

Spring Data JPA org.springframework.orm.jpa.JpaSystemException: identifier of an instance of Entity was altered from x to y錯誤

Spring Data JPA的org.springframework.orm.jpa.JpaSystemException: identifier of an instance of Entity was altered from x to y
Hibernate的org.hibernate.HibernateException: identifier of an instance of Entity was altered from x to y錯誤原因如下。

Java Windows javac 編譯出現unmappable character for encoding MS950錯誤

在Windows 7的命令提示字元工具(cmd)用javac指令編譯在IDE(Eclipse, IntelliJ IDEA)編輯的java檔時出現unmappable character for encoding MS950錯誤訊息編譯失敗。

Spring Boot 取得Server主機IP位址

Spring Boot可透過InetAddress面取得本機的IP位址。

2020/11/24

Spring org.springframework.mail.MailSendException: Failed messages: javax.mail.internet.AddressException: Empty address in string ``''

今天使用Spring JavaMailSender發送email通知信時出現錯誤;
org.springframework.mail.MailSendException: Failed messages: javax.mail.internet.AddressException: Empty address in string ``''

Java 編譯器產生合成class檔的情況 complier create synthetic class $1.class files

Java 1.5及1.6編譯器在下面情況時會額外產生synthetic class檔,也就是類別名稱後接金錢符號(dolor symbol)的class檔(<Class&dollar;1.class>)。

2020/11/22

Java 合成建構式 synthetic constructor

Java合成建構式 sysnthetic constructor簡介。

Java 使用javac編譯原始碼為指定的Java版本

使用javac指令編譯Java原始碼檔為指定的Java版本的方式如下。

Java 使用javac指令編譯java檔

本編介紹如何使用JDK的編譯工具javac指令來編譯寫好的Java程式檔。

2020/11/21

日誌 20201121 六 女兒出生第二十二天 出月子中心

女兒出生第二十二天出月子中心回家。

2020/11/17

Java 設計模式 代理模式 Proxy Pattern

本篇介紹代理模式(Proxy Pattern)。

玉山銀行 線上申辦U Bear信用卡

今天心血來潮想趕快辦一張玉山的U Bear信用卡作為未來平日電子支付、線上購物、刷悠遊卡用的信用卡。

2020/11/15

2020/11/11

2020/11/10

漢堡王 雙層牛奶蛋堡 DOUBLE EGG BURGER

上班經過麥當勞的攤子單點豬肉滿福堡加蛋,但居然只能買超值全餐(就是非得要配難喝的黑咖啡),所以改去旁邊漢堡王的攤子買。

2020/11/9

台北市 內湖區 洲子美食街 聖陶沙 椒麻雞飯套餐

最近想說乾脆把洲子美食街的餐廳都吃一輪看看。今天吃的是聖陶沙的椒麻雞飯套餐。

2020/11/8

全家 鼎泰豐雞肉香辣醬炒麵

最近全家有一系列與鼎泰豐合作的微波熟食,買了「鼎泰豐雞肉香辣醬炒麵」來試試。

桃園 蘋果保衛站 iPhone換電池

最近每天在用的iPhone 6s變得非常耗電,光開著系統每五秒電量就少1%而且變得超燙。

2020/11/6

日誌 20201107 六 女兒出生第八天 辦戶口及申請生育補助

女兒出生第八天了,趁出生後的第一個週六去戶政事務所辦戶口。

2020/11/5

Spring Data JPA JPQL JOIN 簡單範例

Spring Data JPA 使用JPQL JOIN查詢簡單範例如下。

2020/11/4

Spring Data JPA @OneToMany LazyInitializationException could not initialize proxy - no Session

Spring Data JPA撈取一對多(One To Many)物件時,發生錯誤org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.abc.demo.entity.Department.employeeList, could not initialize proxy - no Session

日誌 20201104 三 女兒出生第五天

女兒出生第五天了,現在和媽媽一起在月子中心休息。

JPA JPQL簡介

JPQL(Java Persistence Query Language)是EJB-QL(Enterprise JavaBeans query language)的擴展,是類似SQL用來查詢JPA實體(entity)的物件導向持久化查詢語法。與SQL不同的是JPQL操作的對象為JPA的entity物件,而非資料庫的資料表,也就是對SQL及底層資料庫的抽象,所以JPQL是可攜的(portable),不會因為底層資料庫或資料表的異動而修改語法。

2020/11/3

Spring Data JPA Repository 方法回傳null處理

Spring Data JPA Repository方法回傳結果為空時,可以回傳null物件或以Optional包裝回傳。

新生兒命名

寫程式都知道命名是困難的,新生兒的命名也是,但困難點不同。

2020 11月 桃園醫院 非自願剖腹產生產費用

2020年11月在桃園市桃園區的衛生福利部桃園醫院(舊稱省立桃園醫院,簡稱省桃)的非自願剖腹生產費用。

2020/11/2

日誌 20201103 二 女兒出生第四天 入住桃園迎新產後護理之家月子中心

今天是女兒出生第四天,也是老婆出院去月子中心入住的日子。

2020/10/30

日誌 20201031 六 女兒出生

著床開始歷經39週多一點,女兒終於在2020年10月31日星期六上午9:55分從媽媽的肚子出來了,是個萬聖節出世的天蠍妹妹。出生時的體重2,995克,身長47公分的標準的大小。

IntelliJ IDEA Maven使用自訂的Nexus repository settings xml

IntelliJ IDEA Maven使用自訂的Nexus repository setting.xml設定方式如下。

2020/10/29

Spring Cloud Config Client 讀取Config Server配置範例 reading properties from Config server

Spring Cloud Config Client 讀取Config Server中的properties的設定方式如下。

2020/10/28

Spring Cloud Config Server 檔案系統classpath配置範例 filesystem classpath configuration

Spring Cloud Config Server 使用檔案系統classpath配置(File System Backend)。

2020/10/27

Spring Cloud Config Server 檔案系統配置範例 filesystem configuration

Spring Cloud Config Server 使用檔案系統配置(File System Backend)。

2020/10/24

Spring Data JPA AttributeConverter 轉換列舉屬性為資料表欄位值 convert Enum attribute to table column value

資料表中常有欄位用來儲存資料的類型(type)、種類(category)、狀態(state)、情況(status),這些欄位值通常對應到Java的enum。JPA 2.1可使用AttributeConverter轉換資料表欄位與entity的enum資料型態屬性。

面試自我介紹範本

面試最常碰到的第一個問題就是「請你自我介紹」,儘管我有不少面試經驗,自我介紹即使不準備也能說個大概,但若能事先準備好通用範本相信在自我介紹時能講得更有組織及條理,並更彰顯自己的戰績與豐功偉業(如果有的話:p)。

Spring Data JPA Hibernate 印出查詢SQL參數 print query sql parameters log

Spring Data JPA及Hibernate印出查詢SQL的參數的方法如下。。

2020/10/21

Spring 呼叫同類別的@Transactional方法不會回滾 call same class @Transactional method no rollback

Spring的交易管理(中國叫做事務管理)(Transactoinal Management)中,當由同類別中一個無交易管理(無@Transactional)的方法呼叫另一個有交易管理(有@Transactional)的方法時,有交易管理的方法發生例外時資料不會回滾(rollback)。

2020/10/20

台北市 內湖區 洲子美食街 輕履行水煮雞肉餐盒

最近來到之前一直抗拒不想去的內湖工作,中午去瑞光路西湖派出所隔壁的洲子美食街覓食,滿滿的中午上班族放飯人潮堵在門口等麥當勞。進去後看到有些人手上拿著透明的餐盒,跟著腳步去看發現是一家叫輕履行賣的健康餐盒。

2020/10/19

Google Sheets 試算表 插入時間日期快速鍵 insert date time shortcut

Google試算表在表格欄位插入日期及時間可使用下面快速鍵。

Google Sheets 試算表 日期格式 date format

Google試算表修改日期格式的方法如下。

String Boot 使用BeanFactory動態取得bean BeanFactory get bean dynamically

物件導向的特點是透過繼承與多型來達到的不同實作效果,而Spring容器管理的物件是以依賴注入取得,若介面有多個實作,並且要在執行期(runtime)依條件動態取得對應的bean的方法如下。

2020/10/18

Mamaway媽媽餵 芬蘭嬰兒箱

專賣孕婦嬰兒用品的品牌媽媽餵(Mamaway)有提供免費的芬蘭嬰兒箱,只要憑媽媽手冊就可以領取。

Jenkins 執行系統目錄下的shell script

Jenkins以job執行系統目錄中的shell script檔的方式如下。

Docker 複製檔案到容器 copy file from host to container

把本機(host)檔案複製到docker container的方式如下。

2020/10/17

Jenkins Execute shell job write file

Jenkins以Execute shell命令寫出檔案。

Docker 進入容器的命令介面 go into container bash shell

進入docker container的bash shell操作介面的方式如下。

Docker 重新命名容器名稱 rename container name

Docker重新命名容器container的名稱的方式如下。

2020/10/16

桃園市 桃園區 牛角燒肉 桃園遠百店 20201011

上周領到新工作第一個月的薪水,慶祝一下帶老婆去牛角桃園遠百店吃燒肉吃到飽。

2020/10/15

Spring Boot Test net.bull.javamelody MockMvc.perform() NullPointerException

今天在寫Spring Boot的Controller測試時,執行MockMvc.perform()總是發生NullPointerException如下。

2020/10/14

Apache Commons Lang3 StrSubstitutor用法

Apache Commons Lang3的StrSubstitutor用法如下。

2020/10/13

2020 9月 桃園、三重客運9005 桃園-內湖通勤記錄

桃園-三重客運9005班次經國道1號往返桃園與內湖兩地,是桃園市區上班族前往內湖工作的主要通勤工具之一,本人在2020年9月到10月間的實際搭乘時間紀錄如下。

Java 宣告變數 declare variables

Java 宣告變數的方式如下。

Java 原始資料型態預設值 primitive data type default value

Java 原始資料型態(primitive data types)的類別欄位(class field)(成員變數)預設值如下。

2020/10/12

Java 使用Scanner取得使用者輸入

Java 的Scanner可用來讀取使用者的輸入。

Java while迴圈語法

Java 若要讓一段程式反覆地執行,可使用while迴圈。

Java for迴圈語法

Java for迴圈用法如下。

2020/10/11

2020/10/10

Java 8 effectively final

Java 8開始有一個新的名詞叫effectively final的意思如下。,

Mac Docker 安裝Oracle 12c docker container

在macOS建立Oracle 12的docker container環境並使用Oracle SQL Developer連線。

2020/10/9

Spring Boot 用@TestPropertySource修改測試用的properties參數

Spring Boot測試類可使用@TestPropertySource修改測試時使用的properties參數值。

2020/10/8

懷舊風情 20201008

2020年10月8日星期四。

2020/10/3

Bash echo用途

Bash shell的內建的echo命令用途如下。

Shell Script if then else 簡單範例

我的第一支bash shell script if then else程式。

Jenkins 傳入參數至Execute Shell job

在Jenkins上建立一個簡單Execute Shell script任務並在build時傳入參數。

Jenkins 建立第一個Jenkins Pipeline

在Jenkins上建立並執行一個簡單pipeline任務。

2020/10/2

Jenkins 建立第一個Jenkins任務

在Jenkins上建立並執行一個簡單的任務。

Docker 安裝Jenkins

在macOS的docker上安裝jenkins。

2020/10/1

Spring Boot @PropertySource load yaml

Spring Boot @PropertySource預設只載入properties檔,如果想要用yaml來配置則要修改以下。

Spring Boot @ConfigurationProperties nested properties

Spring Boot @ConfigurationProperties類對應的properties可用巢狀類別(nested class)呈現。

2020/9/30

Spring Boot Configuration Processor 用途

Spring Boot spring-boot-configuration-processor用途如下。

2020/9/29

Java 執行緒 Reentrant Synchronization

Java Reentrant Synchronization(可重入同步化)機制

Java 設計模式 工廠方法模式 Factory Method Pattern

工廠方法模式屬於建構式模式(Creational Patterns)的一種,目的是用來建構物件。

2020/9/27

Spring Boot @PropertySource 依 spring.profiles.active載入對應的properties

Spring可在application.properties設定spring.profiles.active的值來切換不同環境用的application配置檔。而application外的自訂配置檔透過@PropertySource載入時也要依spring.profiles.active載入對應的配置檔的設定如下。

2020/9/26

Spring Data JPA @IdClass複合主鍵範例 composite key example

Spring Data JPA使用@IdClass設定複合主鍵(composite primary key)範例如下。

2020/9/25

Java 常用的運算子 common used operators

Java常用的運算子(operators)如下

Spring Boot 使用@ConfigurationProperties 綁定properties至Bean

Spring除了能使用@Value把properties配置設定值注入到成員變數中外,也可透過@ConfigurationProperties將properties檔內容綁定到Bean類的屬性。

Java 8 lambda combine two list with duplicate key

Java 8 lambda 合併兩個List,並排除具有相同key的物件。

2020/9/22

Oracle SYSDATE - ( 10 / 1440 )

今天看到一段Oracle SQL的條件中有SYSDATE - ( 10 / 1440 )這段敘述,意思如下。

C# 方法名稱命名慣例 method naming convention

今天無意間發現C#的方法命名慣例居然是大寫開頭的PascalCase,讓我小震驚了一下,真是孤陋寡聞。

2020/9/20

Java 變數(Variables)的種類 variable types

Java 變數(Varables)的種類如下。

2020/9/19

Spring Boot @ComponentScan掃描指定套件(包) scan specific package

在SpringBoot專案通常都直接把類別放在@SpringBootApplication類所在package下的package,然後Spring預設會掃描這些package並把掛有@Compoment@Repository@Service@Controller@Configuration的類別註冊為Spring bean

不過如果專案package及類別非常多會造成啟動時很慢,因為要花很多時間去掃描這些package。要改善此情況可設定只掃描特定的package來提高掃描註冊bean的效率。

Oracle COUNT(*) 與 COUNT(column) 區別

SQL計算資料筆數COUNT(*)COUNT(column)差別如下。

2020/9/18

菜鳥工程師 暗色主題 Dark Theme

最近很流行暗色主題,從Facebook,Youtube到IDE,Stackoverflow,Docker官網都推出暗色背景為基調的顏色配置,所以我也來跟隨潮流一下把菜鳥工程師的網頁改成暗色主題風格。暗色看起來真的對眼睛比較不吃力,提高閱讀體驗。

The fin.- Night Time

前幾天在查I Mean Us這個樂團的資訊時,發現他們有些歌似乎有抄襲的情況

2020/9/17

Spring Boot 使用@Schedule建立排程任務範例

Spring Boot使用@Schedule排程(scheduling task)簡單範例如下。

Spring Boot 操控台印出彩色文字 console log ANSI color output

Spring Boot預設在IDE(IntelliJ IDEA or Eclipse)印出的日誌訊息都是單色的,但透過設定以下參數即可在操控台(console)印出彩色日誌。

IntelliJ Spring Boot java.lang.ClassNotFoundException: javax.servlet.Filter

從SVN checkout下來一個Spring Boot專案在IntelliJ IDEA執行出現java.lang.ClassNotFoundException錯誤。

2020/9/16

Maven 安裝目錄檔案到本地倉庫發生指定檔案不存在錯誤 install file to local repository specified file not exists

在Windows有pom.xml的目錄以cmd執行Maven的mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>命令來安裝檔案到local repository時發生錯誤。

2020/9/15

Java inner class shadowing

如果內部類別(inner class)(即非靜態巢狀類別(non-static nested class))成員變數(member variable)名稱與外層類別(enclosing class)的成員變數名稱相同,則內部類別的成員變數會覆蓋(shadowing)外層類別相同名稱的成員變數。

Java 雙括弧初始化 double brace initialization

最近在專案中看到直接建立帶有元素的ArrayList物件的特殊寫法如下。

Java 巢狀類別與內部類別 nested class and inner class

在類別中定義的類別稱為巢狀類別(nested class)如下。

Java 程式執行時出現NoClassDefFoundError錯誤

最近在一個沒有CICD自動部屬的老舊專案。修改好的Java程式如果需要在Dev環境測試,需要把本機編譯好的class檔手動貼到Dev環境的Tomcat WEB/INF/classes下對照package結構的目錄中來更新。

在本機執行某項功能時明明都正常,但在Dev環境測試時確出現NoClassDefFoundError錯誤。

2020/9/14

Eclipse SVN文字內容比較顏色設定 text compare color settings

Eclipse SVN文字內容比較顏色設定的位置如下。

Oracle 找出限制條件資料表 find ORA-02292 constraint table

在Oracle異動資料表時,若發生
ORA-02292: 違反完整性限制條件 (<constraint_name>) - 發現子項記錄
ORA-02292: integrity constraint (<constraint_name>) violated - child record found
代表刪除的資料被外鍵參考,所以有外鍵的限制條件。應該先把參照的子表資料刪除後才能把主表的資料刪除。

透過<constraint_name>找出參照的資料表的方式如下。

2020/9/13

Tomcat Servlet怎麼建構的 how servlet construct?

Tomcat原始碼中Servlet實例的建構過程如下。

2020/9/12

Java 轉位元組陣列為十六進位字串 convert byte array to hexadecimal string

Java 轉位元組陣列byte[]為十六進位字串(hexadecimal string)的方法如下。

2020/9/6

Servlet 下載classpath的檔案 download file in classpath

Servlet把classpath中的檔案寫出可供下載的方法如下。

2020/9/5

Eclipse 關閉專案減少記憶體用量 closing project to free memory usage

Eclipse在日常工作中通常不會只有一個project(專案),如果project暫時沒有用到的話,可以使用[Close Project]將其關閉。

Servlet simple Restful API

Servlet實現Restful API簡單範例。

TortoiseSVN 建立及套用修補檔 create and apply patch

最近又回去用很難用的SVN,想把修改的程式暫存起來之後回復,在git有git stash,但在SVN似乎只能用patch來達成類似的目的,除了麻煩外限制也很多。

2020/9/4

ORA-01008: 部份變數未被連結 not all variables bound

今天寫好久沒碰的PreparedStatement,結果執行時出現
ORA-01008: 部份變數未被連結錯誤。

2020/9/2

RockTek Rii mini i8+ 無線語音觸控鍵盤開箱

上網買了RockTek Rii mini i8+ 無線觸控鍵盤,原因是長時間使用滑鼠鍵盤造成我的頸肩非常痠痛,所以買了這台掌上鍵盤做些輕量的事,例如瀏覽網頁、Youtube或PTT。

2020/9/1

懷舊風情 20200901

2020年9月1日星期二

2020/8/30

Spring Boot RabbitMQ @RabbitListener 簡單範例

Spring Boot RabbitMQ除了自行配置MessageListenerContainer及註冊MessageListener來收訊息外,也可使用@RabbitListener標註在方法上使其接收RabbitMQ的訊息。

Spring Boot Messaging with RabbitMQ 範例

本範例參考Spring官網Messaging with RabbitMQ,示範Spring Boot RabbitMQ的基本配置與傳送/接收訊息。

Spring @Transactional 標註在類別的效果

Spring處理交易管理的@Transactional注釋可標註在類別(class)或方法(method)前,標注在類別的效果如下。

2020/8/28

IntelliJ IDEA Maven 下載依賴函式庫原始碼 download dependency library source code

IntelliJ IDEA Maven預設只會下載依賴函式庫已編譯的jar,如果要查看原始碼的話就必須連同原始碼(source code)一起下載。

Spring Data JPA JpaRepository save() 與 saveAndFlush() 差別

使用Spring Data JPA的資料存取層會繼承JpaRepository,其儲存enity的方法有save()saveAndFlush(),兩者差別如下。

2020/8/27

2020/8/26

資策會結業五年心得

資策會Java班結業至今五年的心得。

Spring Boot H2 Database 初始資料

Spring Boot在H2資料庫產生初始資料的方式如下。

Spring Boot H2 Database Web Console

Spring Boot使用H2資料庫時自動配置了網頁控制台(web console)圖形化管理介面,使用方式如下。

2020/8/25

Mac install JDK by Homebrew

Mac使用Homebrew安裝JDK的方式如下。

Mac 找出已安裝的JDK find installed JDK

查看Mac中已安裝的JDK的方式如下。

Mac Homebrew 安裝 MySQL Workbench

本篇記錄在Mac用Homebrew安裝MySQL Workbench資料庫管理工具。

Docker 安裝MySQL

在Mac的Docker執行MySQL 8容器並連線。

2020/8/23

2020 奕兆有限公司面試

奕兆有限公司面試心得。

2020/8/22

Java synchronized block refactor 考題

最近面試的問題,測驗對於synchronized的理解。

Java test mock random 考題

最近面試的問題,主要是測試對單元測試中mock的概念及依賴注入替換物件的概念。

Java ThreadPoolExecutor maxPoolSize 考題

最近面試的筆試題中關於ThreadPoolExecutor的考題,測試對於ThreadPoolExecutorThread Pool生成thread的了解。

2020/8/21

Java HashSet and hashCode() 考題

最近面試的筆試題中關於HashSet的考題,測試面試者對於HashSetObject.hashCode()的了解。

資料庫 交易的悲觀鎖與樂觀鎖 Transaction pessimistic and optimistic locking

資料庫交易特性ACID中的交易隔離(Isolation)通常利用「鎖(locking)」來實現,目的為避免同一筆資料在併行交易(concurrent transaction)中被不同的交易同時修改以確保資料的完整性。

交易鎖又分為「悲觀鎖(pessimistic locking)」與「樂觀鎖(optimistic locking)」。

2020/8/20

Java Map hierarchy diagram

Java Map Framework hierarchy diagram - Java Map類別階層圖。

2020/8/19

為何在微服務中使用訊息佇列 Why use Messaging Queue in Microservices

在微服務架構(Microservice Architecture)中總是可以看到訊息佇列(Messageing Queue, MQ)技術的存在,為什麼微服務系統要使用MQ呢?

2020 景承科技 RawStone 面試

2020年7、8月間找工作,在104收到景承科技的面試邀請,應徵職位是[金融科技應用] Sr. Java Engineer

2020/8/16

戒菸成功心得

從2019年9月戒菸至今只差一個月就已經戒菸一年了,在此自行宣布戒菸成功。

2020/8/14

2020 新光證劵App電子下單股票交易成本試算

2020 新光證劵App電子下單股票交易成本試算如下。

Lombok @UtilityClass

Lombok lombok.experimental.UtilityClassv1.16.2推出的實驗功能,使用方法如下。

Apache Struts 1 簡介

Struts是Apache基金會開源的MVC框架。

2020/8/13

日誌 20200813

八月開始台灣第一高山銀行駐點工作,但待了不到一個月就提離職了。

2020/8/11

Oracle PL/SQL composite data types

Oracle PL/SQL的compsite data types(複合資料型態)是指儲存多個值的資料型態。

Oracle PL/SQL scalar data types

Oracle PL/SQL的scalar data types(純量資料型態)是指只儲存單一值的資料型態。

2020/8/10

Oracle PL/SQL test function return SYS_REFCURSOR

在PL/SQL block測試function回傳的SYS_REFCURSOR

Oracle PL/SQL MERGE statement in package function

Oracle 9i新增的MERGE語法搭配package function使用範例。

2020/8/9

Oracle SQL Developer 程式編輯器右側邊線 editor right margin

Oracle SQL Developer修改程式碼編輯器右側邊線位置的方式如下。

Oracle PL/SQL Nested Table FOR LOOP start index

Oracle集合(collection)型態中的Nested Table(表格類型)的index是從1開始起算。

2020 老婆送的生日禮物

2020年老婆送的生日禮物。

2020/8/7

Oracle PL/SQL Stored Procedure PLS-00428

在撰寫Oracle Stored Procedure時,出現
PLS-00428:在此SELECT敘述句中預期會出現一個INTO子句
PLS-00428: an INTO clause is expected in this SELECT statement.
錯誤的原因如下。

Git 設定提交名稱及信箱 setting commit username and email

Git commit(提交)程式碼時,需要提供提交者的usernameemail,設定方式如下。

2020/8/6

Oracle PL/SQL call function PLS-00221 error

在Oracle PL/SQL呼叫function時出現
PLS-00221: 'function_name' is not a procedure or is undefined
PLS-00221: 'function_name' 不是程序或未定義
錯誤的原因如下。

Oracle PL/SQL define Function in Package

Oracle define function in package

在Pacakge(套裝程式)中建立一個Function(函式)的方法如下。

ER-Model 系統權限的角色設計 Compound Role

最近工作的權限設計的角色的ER Model設計如下。

2020/8/5

Oracle LEAST function

Oracle LEAST函式可取得多個輸入參數中的最小值。

Oracle PL/SQL test Procedure in Package

本篇介紹如何以SQL測試Oracle套裝程式(Package)中的程序(Procedure)。

2020/8/4

SQL JOIN types

SQL查詢時用JOIN語法連接多個資料表,JOIN有以下幾種形式。

資料庫 交易的重要特性 ACID

關聯式資料庫的交易(Database Transaction)有四個重要特性簡稱為ACID

2020/8/1

20200801 臨時演員

今天和老婆又去當朋友的臨時演員。

2020/7/31

工作紀錄 Aug, 2019 - Jul, 2020

駐點於某公司開發ACS設定功能

日誌 2020年6-7月面試公司

2020年7月準備從某專案人力公司離職開始一連串的面試。以下紀錄這段時間面試的公司(無面試過程)。

Spring Boot 使用ResponseBodyAdvice修改Response

在Spring Boot Web (Spring Web MVC)修改API回應內容,也就是response body的作法如下。

2020/7/28

Spring Boot H2資料庫datasource預設配置

Spring Boot對 embbeded的H2資料庫的datasource自動配置預設如下。

Spring Boot 2與Spring Boot 1差異

Spring Boot 從1.5(最後的版本為1.5.22)之後就更新到了Spring Boot 2.0,其主要差別如下。

2020/7/26

2020 新竹 尖石 水田私房農園 一日住宿

最近肺炎的疫情趨緩了許多,老婆說趁她現在肚子還不大想出去走走,所以安排了這次新竹一日的旅行。

2020/7/24

Spring Boot Ehcache 3 JSR-107 範例

Spring Boot Ehcache 3 JSR-107的簡單配置方法如下。

2020/7/23

2020/7/22

懷舊風情 20200722

2020年7月22日星期三。

2020/7/19

Spring Boot Caching simple ConcurrentHashMap 範例

Spring Boot Caching(快取)使用預設的ConcurrentHashMap快取範例。

2020/7/17

IntelliJ IDEA Community Application Servers not found

從去年開始至今工作中已用改用IntelliJ IDEA Community(社群免費版)開發,也逐漸習慣這個方便好用的IDE。直到最近工作轉換才發現最終還是逃不了要付錢使用Ultimate版(付費版)的命運,要不然就是要回頭去用Eclipse。

2020/7/13

R2DBC 簡介

R2DBC (Reactive Relational Database Connectivity)是響應式關聯資料庫driver API專案。

Podcast 科技島讀 Ep. 103 賺錢容易留錢難 心得

今天運動無聊就一邊聽Podcast,科技島讀好像有點知名度就開來聽聽看,這是我第一次聽這個頻道,這集是講政府發行的數位貨幣。

2020/7/10

花月嵐拉麵 20200710

週五晚上和老婆一起去吃花月嵐拉麵。

Java 位元位移運算子 signed bit shift operators

Java 位元位移運算子(bit shift operators)範例如下。

Java 整數轉二進位 Integer convert to Binary

Java整數(int)轉二進位顯示的方式如下。

2020/7/9

Java For-Each Loop 運作原理

本篇探討Java的For-Each Loop如何運作。

2020/7/8

2020 一年換一個工作是不好的嗎?

最近在PTT Soft_Job版看到有人問「一年換一個工作是不好的嗎」(文章代碼#1V1K-AAX),對於此討論串的心得。

VuePress 配置文件 config.js

VuePress的配置文件放在.vuepress目錄,名稱為config.js

2020/7/7

Mac macOS Catalina default terminal zsh

新買的2020 MacBook Pro修改終端機(Terminal)的指令符號時,發現原本修改.bash_profile的做法沒用了,查了一下才發現從2019年10月7日開始發行的macOS 10.15 Catalinashell預設改為zsh,而非原本的bash

2020 MacBook Pro 13吋 Gen 10 Core i5

前陣子苦惱要買哪台筆電做為下個5年用的工具,因此寫了一篇「2020 Java Web程式開發筆電採購指南」分析一下需求,直到今天付諸行動去蘋果直營店買了MacBook Pro。

2020/7/6

建立 VuePress 網站

使用VuePress建立網站的方法如下。

2020/7/5

Java Collections hierarchy diagram

Java Collections Framework hierarchy diagram - Java 集合框架類別階層圖。

2020/7/3

VuePress 靜態網站生成器

這兩天在幫公司官網內容修改成日文。

Markdown bold angle brackets

Markdown要讓角括弧(angle brackets)<>顯示為粗體的語法如下。

2020/7/1

Spring Boot update i18n messages from database

Spring Boot 動態自訂i18n訊息messages.properties範例。

2020/6/30

Spring Boot i18n response message

Spring Boot回應代碼訊息多國語言(i18n)範例。

2020/6/29

Spring Boot MessageSource i18n 範例

Spring Boot自動配置MessageSource多國語言(i18n)簡單範例。

2020/6/28

Spring Boot MessageSource 自動配置

Spring Boot自動配置了MessageSource做i18n多國語言訊息,所以若無特殊需求不用自己配置MessageSource的bean。

理頭髮DIY

今天第二次自己理自己的頭髮。

2020/6/26

桃園市 楊梅區 埔心牧場半日遊 20200626

今天(20200626)端午節連假第二天下午和老婆去桃園埔心牧場走走。

睫毛卡在眼白的肉裡

昨天(2020/6/25)照鏡子發現左眼靠眼角的眼白卡了一小根睫毛,由於沒有異物及不適感所以一直沒發現,不曉得卡了多久。

2020/6/25

Spring Boot MessageSource 簡單範例

Spring Boot MessageSource讀取properties檔訊息範例。

2020/6/22

JMS 訊息傳送模式 Message Delivery Models

JMS支援兩種訊息傳送模式(Message Delivery Models):PTP及Pub/sub模式。

JMS 簡介

JMS(Java Message Service)(Java訊息服務)是一套標準的Java訊息傳送API,目的是讓Java應用程式能以共通的方式使用訊息導向中介軟體(messge-oriented middleware, MOM)的訊息傳送服務。

2020/6/21

JMS Message的意思

Java Message Service (JMS)的Message的意思如下。這邊介紹的不是JMS API的Message介面,而是Message的概念。)

Java package 名稱文字分隔符號

Java package名稱是兩個字要用什麼符號分開?

2020/6/20

Effective Java 3e - Item 4: Enforce noninstantiability with a private constructor 筆記

Effective Java 3e - Item 4: Enforce noninstantiability with a private constructor 使用private建構式使無法實例化。

Excel FIND 與 SEARCH 函式差別

Excel尋找儲存格(cell)文字中的某個字時,可以用FINDSEARCH,兩者的差別如下。

2020/6/19

Excel 取得指定字元後的字串 extract text after a character

Excel截取文字(text)中特定字元(character)後方的方法如下。

Java final 效能較好? add final to improve performance?

幾年前有個同事寫程式會加一堆final,當時我只知道final可避免變數值被修改,但不曉得為什麼他幾乎在每個地方都加,他的回答是效能較好,well...。

Java Functional Interface是什麼?

「A functional interface has exactly one abstract method」,也就是「Functional Interface是只有一個抽象方法的Interface」。

2020/6/18

Java OptionalInt 使用時機

讀了「Effective Java 3e - Item 55: Return optionals judiciously」後知道不要用Optional去包primitive type的boxed type類別,也就是不要用Optional<Integer>,應改用OptionalInt

Effective Java 3e - Item 55: Return optionals judiciously 筆記

Effective Java 3e - Item55: Return optionals judiciously 回傳Optional。

Effective Java 3e - Item 54: Return empty collections or arrays, not nulls 筆記

Effective Java 3e - Item 54: Return empty collections or arrays, not nulls 返回空集合或陣列,不要返回null。

Effective Java 3e - Item 51: Design method signatures carefully 筆記

Effective Java 3e - Item51: Design method signatures carefully 設計方法簽章。

2020/6/17

為什麼網際網路不用Socket直連而要用HTTP協議

最近實作Socket Client與Socket Server互連的範例後,腦中浮現出一個問題,既然Socket連線這麼簡單為什麼網路不用Socket構成而用HTTP呢?

Effective Java 3e - Item 50: Make defensive copies when needed 筆記

Effective Java 3e - Item 50: Make defensive copies when needed 防禦性複製。

2020/6/15

Java Socket 範例

Java Socket Client與Server溝通範例。

2020/6/14

Effective Java 3e - Item 49: Check parameters for validity 筆記

Effective Java 3e - Item 49: Check parameters for validity 檢查參數的有效性 筆記。

Spring Boot @Async 非同步方法範例

Spring的@Asyncannotation 可令方法為非同步(asynchronous)執行。

2020/6/13

Docker 檢視容器資訊 inspect container config info

Docker 查詢容器配置資訊的方法如下。

Docker 下載指定版本的映像檔 download specific version image

Docker下載指定版本的映像檔(image)的方法如下。

Spring Web 處理存取資料庫例外錯誤 handle database access exception

在Spring Web專案中,通常在DAO或Repository層存取資料庫,而存取資料庫時拋出例外錯誤該在哪處理?

2020/6/10

Git 修改遠端倉庫url位址 modify remote repository url

修改Git追蹤的遠端倉庫(remote repository)URL位址的方式如下。

老婆懷孕記錄 懷孕19週 超音波檢查 女生

今天早上請假去醫院做第19週的超音波檢查。

2020/6/8

Spring Boot應用程式連線資訊加解密流程

Spring Boot應用程式連線資訊加解密流程,本篇不討論加密方式。

Windows 安裝AWS CLI

本篇紀錄在Windows 7 64-Bit安裝AWS CLI命令列工具。

Git 回復上一次的commit undo last commit

Git回復上一次的commit的方式如下。

Spring Boot IntelliJ IDEA Maven executable jar

IntelliJ IDEA Maven打包Spring Boot為可執行的jar的方法如下。

2020/6/6

2020 Java Web程式開發筆電採購指南 Java Web Programmer Laptop Buying Guide

我的2020年寫Java Web程式的筆記型電腦採購策略如下。

2020/6/5

Java java.sql.Timestamp簡介

Java java.sql.Timestamp簡介。

Use milliseconds to record date time

In my current working project, our team uses milliseconds to record the moment of DML. The problem is using milliseconds is not intuitive for developers to read. They cannot tell the time through the long number. I have to copy the long number and use online converter to translate milliseconds to readable date time information when debugging, such a pain.

I asked a member about the reason, he told me maybe they wanted to record time directly by Java System.currentTimeMillis().

I would use TIMESTAMP instead.

2020/6/4

什麼是DER編碼檔案? What is DER encoded file

簡單說DER是ASN.1標準的二進位編碼方式,常用於憑證(certificate)的編碼

JWK (JSON Web Key) 是什麼?

JSON Web Key,簡稱JWK,是以JSON物件表示,用來驗證JWT的signature(簽章)的公開金鑰(cryptographic key)。

2020/6/2

Spring Bean的種類範圍 bean scope

Spring可定義Bean的實例範圍(scope)如下。

2020/6/1

Spring AOP get method advice annotation and parameters

在Spring AOP透過從annotation advice取得方法的annotation。

Spring AOP 使用annotation對方法做log

Spring AOP使用annotation注釋的方式對標記的方法輸出log的方法如下。

2020/5/31

Docker run centos container

在docker安裝並執行centos container並登入其bash介面的方式如下。

2020/5/30

Docker Machine login VM machine

登入Docker Machine的VM的方式如下。

Spring Security 多角色權限範例

本篇使用Spring Security Basic Authentication驗證,使用者有多種角色(role)權限,搭配JSR-250 @RoleAllowed做REST API的存取限制。

SQL where1=2

SQL WHERE 1=2的作用如下。

2020/5/29

Spring Boot 自訂Java Bean驗證失敗回應訊息 custom bean validation fail response

Spring Boot使用bean validation驗證失敗時,預設會返回HTTP Status: 400 Bad Request及訊息。

Java 排序比較兩個可能有null的欄位 sorted by two fields with null

Java排序List時,若排序元素的屬性可能為null,則可以在Comparator的實作中處理null。

2020/5/28

Log4j2 API參數驗證錯誤輸出的日誌級別 log level for validating input args fail

在Controller接收外部傳入的參數時通常要驗證參數是否合法(例如金額不得小於0、結束日不能超過起始日、字串長度限制等),若驗證失敗時應該用什麼的log level輸出日誌?

2020/5/26

Vuex是什麼? What is Vuex?

簡單說就是用來維護Vue組件(Component)的狀態(state)。

由於Vue是透過多個組件(也就是構成頁面的"樣板與程式碼")層層套套所搭建起來的前端應用程式。而當多個元件間的狀態是共享時,靠自己管理組件間的狀態會變得複雜且困難。而有了Vuex狀態管理框架就會讓以上任務變得簡單。


2020/5/25

Java Objects.isNull() 幹嘛用的

昨天前同事問我Java 8多了Objects.isNull()方法可判斷一個物件是否為null,但這和obj == null判斷有什麼差別?

Vue CLI 專案目錄及檔案說明 project directory and file

Vue CLI建立專案中的目錄及檔案說明筆記。

Java Object.hashCode()

本篇筆記Object.hashCode()的理解。

2020/5/22

Java 白板題 把整數陣列中的0往後排,其餘維持原順序

去美商訊能集思Synergies駐點面試的白板題。給一整數陣列,並把陣列中的0移到最後,其餘的數字保持原來的順序。

Java 陣列與ArrayList差別
Array and ArrayList difference

今天被問到Java的Array(陣列)與ArrayList的差別。

當下我只回說ArrayList的元素只能是物件,而ArrayList實際上是對Array進行包裝提供一些好用的操作方法之類。總之回答得亂七八糟,因此這邊做個整理。

2020/5/21

Java 取得系統當日午夜毫秒時間 get system current day midnight millisecond

Java LocalDateTiem取得系統所在時區當天及昨天午夜(00:00)的毫秒。

Java 取得系統目前的Unix時間 get system current unix epoch millisecond

在Java程式中可利用下面方法取得系統目前的Unix時間的毫秒數。

2020/5/20

SourceTree 檢視特定作者的提交紀錄 view log of specific author

SourceTree查看特定人員的提交歷史紀錄(commit log history)的方式如下。

SourceTree 檢視特定檔案的提交紀錄 view log of specific file

在SourceTree查看某個檔案的提交紀錄(commit log history)的方法如下。

2020/5/18

Spring Professional Michelle Chu

剛有個Spring Professional的Hunter Michelle Chu(典型的*********)打來,蠻沒禮貌,讓我特地po這篇記錄一下,水準夠差,霹哩趴辣講一堆開始身家調查,才剛到公司坐下就被她心情弄的滿肚子大便。這位小姐在找Java工程師。

2020/5/17

自產自銷辣椒醬 20200518

今天早上在網路上訂了20瓶50ml的小玻璃罐。一個11元,加運費送到我媽的辦公室340元。

Mac stop running Spring Boot jar

在Mac停止運行中的Spring Boot jar的方法如下。

自產自銷辣椒醬 20200517

岳父的手工自製辣椒醬非常香超級好吃,所以看能不能製作成商品販賣。

2020/5/16

EMV® 3-D Secure 3DS Consumer Device

EMV® 3-D Secure 3DS Consumer Device 簡介。

EMV® 3-D Secure 3DS Cardholder

EMV® 3-D Secure 3DS Cardholder 簡介。

EMV® 3-D Secure Acquirer

EMV® 3-D Secure 3DS Acquirer 簡介。

EMV® 3-D Secure 3DS Requestor

EMV® 3-D Secure 3DS Requestor 簡介。

EMV® 3-D Secure Access Control Server

EMV® 3-D Secure Access Control Server 簡介。

EMV® 3-D Secure 2.0 Messages

EMV® 3-D Secure 2.0 安全驗證規範的訊息包含以下:

2020/5/15

EMV® 3-D Secure 3DS Client

EMV® 3-D Secure 3DS Client 簡介。

Spring Boot Java Bean Validation class-level constraint date range 日期區間驗證

在Spring Boot使用Java Bean validator 類別驗證器驗證傳入物件的日期範圍。

Oracle GROUP BY then SUM

今天工作碰到下面問題。

Oracle 11g 新增資料ID自動增量 auto increment sequence id when insert

在Oracle 11g新增資料時利用SEQUENCE自動產生遞增ID的方法如下。

2020/5/14

EMV® 3-D Secure 3DS Server

EMV® 3-D Secure 3DS Server 簡介。

EMV® 3-D Secure AReq(Authentication Request Message)

EMV® 3-D Secure AReq(Authentication Request Message)簡介。

2020/5/13

EMV® 3-D Secure 3DS Requestor Environment

3DS Requestor Environment由以下三個組件構成,負責發起3DS請求的環境。

EMV® 3-D Secure Three domains

EMV® 3-D Secure的"3-D"是3個Domains的意思(domain翻為域,簡單說就是分成三個區塊)。三個domains構成了3DS安全驗證的交易流程。

2020/5/11

初學JavaScript寫的表單輸入驗證程式

剛學JavaScript的時候寫的code,令人懷念的深層if else。

2020/5/10

Windows 7 Docker 安裝Oracle 12c docker container

本篇記錄在Windows 7上建立Oracle 12的docker container環境並使用SQL Developer連線。

2020/5/9

Java 轉原始型別陣列為包裝型別List convert primitive type array to boxed type List

Java 轉換原始型別陣列(primitive array)為List的方法如下。

Effective Java 3e - Item 22: Use interfaces only to define types 筆記

Effective Java 3e - Item 22: Use interfaces only to define types 介面應該只用來定義型態 筆記。

Effective Java 3e - Item 25: Limit source files to a single top-level class 筆記

Effective Java 3e - Item 25: Limit source files to a single top-level class 限制一個檔案只有一個top-level class 筆記。

2020/5/8

Java 計算百分比 calculate percentage

Java 計算兩數相除的百分比。

2020/5/6

Java Regex 檢查字串是否只含hex字元 check hex char

Java 使用regex(正則表示式, Regular expression)檢查字串是否只含hex字元,也就是只含0123456789ABCDEF

EMV® 3-D Secure ARes(Authentication Response Message)

EMV® 3-D Secure ARes(Authentication Response Message)簡介。

2020/5/5

Spring Boot 自訂Java Bean Validation驗證參數是否為Hex文字格式

Java Bean Validation驗證Spring Boot Controller請求物件屬性是否為Hex表示格式(僅接受數字0-9,英文字母A-F)。

2020/5/3

Java JDBC PreparedStatement 更新BLOB update BLOB

Java使用JDBCPreparedStatement更新BLOB型態欄位的範例如下。

Java 加總整數陣列 sum List<Integer> and int array

Java加總List<Integer>int[]array陣列中全部元素值的方法如下。

2020/5/2

Docker Machine Unable to query docker version: Get https://192.168.99.101:2376/v1.15/version: x509: certificate is valid for 192.168.99.100, not 192.168.99.101

今天重新啟動VM的Docker machine後查詢machine列表時,其中一個machine的ERROR欄位出現無法獲得版本的訊息如下。

Docker 什麼是Docker Machine

Docker Machine是安裝在主機系統的虛擬機Docker hosts管理工具,用來管理VM(e.g.VirtualBox)中給Docker Engine運行的Docker host。

2020/5/1

Docker Machine 移除machine remove docker machine

使用Docker Machine移除machine的方法如下。

Docker Machine 停止machine stop docker machine

使用Docker Machine停止運行machine的方法如下。

Docker Machine 啟動machine start docker machine

使用Docker Machine啟動machine的方法如下。

Docker Machine 查詢machine list docker machines

使用Docker Machine查詢可用的machine的方法如下。

Docker Machine 建立machine create docker machine

使用Docker Machine建立新的machine的方法如下。

Docker 使用PuTTY連線到Docker Toolbox的VirtualBox

本範例記錄如何以在本機以PuTTY連線到Docker Toolbox的VirtualBox的docker環境。

Windows Docker Toolbox連線到docker nginx

在舊的Windows 7或Windows 10家用版因為沒有Hiper-V,所以必須安裝Docker Toolbox來使用docker。

2020/4/30

Maven WARNING Using platform encoding to copy filtered resources

在maven build時出現下面警告:
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!

IntelliJ IDEA Maven 打包可執行的jar檔 package executable jar

在IntelliJ使用maven將專案打包成可執行的jar的方法如下。

求得小於n且為3或5的倍數的不重複數的總和

今天和同事聊天,他說最近他的女朋友在面試時被問到「給定一個值n,請求所有小於n且為3或5的不重複倍數的總和」。

2020/4/29

I Mean Us - You So

今天老婆放kkbox的什麼放鬆音樂主題之類的無意中聽到開頭20秒,就覺得這肯定是首我愛的歌,趕快叫老婆看歌名。果然,屌炸的歌,到現在快臨晨1點已經聽了20遍了,這首歌接下來應該會連續聽一個月到膩炸為止。

Youtube - I Mean Us - You So (Youth Soul) [Official Music Video]

2020/4/28

MacOS 終端機建立.gitignore檔 terminal create .gitignore file

在MacOS 終端機(terminal)建立.gitignore的方式如下。

EMV® 3-D Secure 驗證協定的ECI是什麼

3DS驗證協定的Electronic Commerce Indicator (ECI)是信用卡組織(VISA、MasterCard、JCB、American Express等)的目錄伺服器(Directory Servers)回傳的值,用來表示交易時的3DS驗證結果。不同卡組織的定義不同。

Java 什麼是 fat jar or uber jar

fat jar又稱uber jar,是一個包含其他依賴jar的jar。

2020/4/27

IntelliJ IDEA Gradle 安裝 Lombok

在IntelliJ IDEA Gradle專案使用Lombok的方法如下。

IntelliJ IDEA Gradle 打包可執行的jar檔 build executable jar

IntelliJ IDEA Gradle打包可執行的jar檔方式如下:

Git 暫存未追蹤的檔案 stash untracked files

Git 暫存未追蹤的檔案(stash untracked file)的方式如下。

Jaskson 使用 @JsonPropertyOrder 設定物件轉json順序

使用Jackson將Java物件轉為json字串時,可用@JsonPropertyOrder確保轉出的json字串的順序。

2020/4/26

如何吃整支玉米

活到今天才知道啃整支玉米的正確方式。

Spring Security 簡單角色權限範例

本篇使用Spring Security搭配Basic Authentication驗證,簡單的使用者角色(role)權限與JSR-250 @RoleAllowed來做REST API的存取限制。

2020/4/25

Java 抽像類別(Abstract Class)與介面(Interface)的差異

Java 抽像類別(Abstract Class)與介面(Interface)的差異如下。

Spring Boot 依環境設定不同的properties檔 Use different application.properties

通常開發、測試及發布環境使用的各種properties參數不同,因此application.properties需依環境設定不同參數,而Spring Profile能依不同環境切換讀取的application.properties

2020 天脈科技 smartbee 面試

Hunter介紹的公司(這位Hunter很認真),要先完成這作業才有後續的面試。

2020/4/23

Oracle 建立與另個資料表有相同欄位的資料表

Oracle若要建立與另一資料表有相同欄位設定的資料表時可使用以下。

2020/4/22

高流量網站系統架構設計工具 High Performance Web Architecture Tools

表列一下高流量網站系統架構設計上可應用的工具。

2020/4/21

2020 4月 目前工作用的技術及工具

表列一下目前工作每天用的技術與工具。

2020/4/19

Spring Security role hierarchy Java config

以下是Spring Security角色權限階層(role hierarchy)的Java配置範例。

2020/4/18

Git pull refusing to merge unrelated histories

今天在git pull時,發生fatal: refusing to merge unrelated histories,解決方式如下。

2020/4/16

Java 取得JDBC資料型態名稱 get JDBC datatype name

Java 取得JDBC sql資料型態名稱的方式如下。

Oracle SID與SERVICE_NAME的區別

在設定Oracle資料庫連線時,在設定檔tnsnames.ora中常看到SIDSERVICE_NAME兩種方式,兩者的差別如下。

Oracle 查詢外鍵相依階層 find foreign key dependency hierarchy

Oracle 查詢資料表間外鍵相依的階層方法如下。

Oracle 查詢外鍵依賴 find foreign key constraints

Oracle查詢schema的全資料表的外鍵限制(foreign key constraints)的方法如下。

2020/4/15

Spring JDBC SQLException Invalid column name錯誤

今天在Spring Data JPA使用JdbcTemplate查詢Oracle資料庫時,出現java.sql.SQLException: Invalid column name錯誤。

2020/4/14

Spring Boot datasource config jdbcUrl is required with driverClassName錯誤

今天在設定Spring Boot JDBC多資料庫的datasource配置時,啟動時發生jdbcUrl is required with driverClassName錯誤如下。

2020/4/13

Oracle 建立遠端資料庫連線 Create Database Links

Oracle 的Database Link讓我們可以在目前的資料庫直接存取遠端資料庫,建立database link方式如下。

2020/4/12

Java 使用 try-with-resources 關閉資源

Java 繼承Closeable介面的類別在操作結束時都應該呼叫close()關閉資源,在Java 7新增了try-with-resources語法,使得關閉資源的程式變得簡潔許多。

2020/4/11

Angular HttpClient 錯誤處理 error handling

Angular HttpClient呼叫Spring Boot RESTful API發生錯誤的處理。

Lombok 使用@SuperBuilder產生繼承類別的Builder

在子類別使用Lombok @SuperBuilder產生可建構父類別屬性的Builder。

Angular HttpClient呼叫Spring Boot RESTful API

在Angular使用HttpClient呼叫Spring Boot RESTful API取得資料。

Maven Apache Maven Compiler Plugin

在Java Maven專案的pom.xml常看到下面的設定。

Angular Template-driven Forms validation 表單提交及驗證

Angular Template-driven form 表單提交及驗證範例。

HTTP Status Code 201 Created

HTTP 回應狀態碼201 Created用來表示請求成功並已建立新的資源,並在Response Header的Location欄位放入導向新資源的URL路徑。

2020/4/10

Spring Boot javax.servlet.http.HttpServletRequest ClassNotFoundException

在Spring Boot Web MVC專案中想取得HttpServletRequest時發現此類別並不存在。

Angular CanActivate limit Route path

Angular CanActivate限制Route.path存取Component的範例。

MongoDB mongorestore import dump file

在Windows如何以mongorestore來匯入MongoDB dump檔案。

Spring Boot Security CSRF Session timeouts custom AccessDeniedHandler

Spring Boot Security 因Session連線過期(session timeout)而導致CSRF驗證失敗的自訂拒絕存取的處理方法如下。

Angular 屬性綁定(Property binding)範例

Angular屬性綁定(Property binding)的簡單範例。

Floyd Cycle Detection Algorithm 龜兔賽跑算法

Floyd Cycle Detection Algorithm(Floyd判圈算法),又稱Tortoise and Hare Algorithm(龜兔賽跑算法),此演算法可用來判斷LinkedList(鏈接串列)或是否存在cycle(環),並找出環的起始節點及算出cycle的長度。

Spring Security 自訂拒絕存取處理器 custom AccessDeniedHandler

Spring Boot Security自訂拒絕存取處理器的方式如下。

Spring Boot 2.1.x JUnit 4 @MockBean example

Spring Boot 2.1.x 使用JUnit 4及@MockBean做stubbing測試類簡單範例。

Angular 使用Angular CLI建立Service

使用Angular CLI建立Service的方法如下。

Spring Boot 自訂Controller請求參數Bean Validation

本篇介紹如何在Spring Boot使用自訂Java Bean Validation驗證器(custom Java Bean validation)對Controller的請求物件欄位(field)進行格式驗證。

HTTP Basic Authentication 簡介

本篇介紹什麼是HTTP基本認證(HTTP Basic Authentication)。

Windows 10 Chrome Facebook畫面閃爍

家中的Windows 10筆電用Chrome瀏覽器開啟Facebook時畫面都會不斷的閃爍,解決方式如下。

Windows Chrome DNS_PROBE_FINISHED_NXDOMAIN 無法上網

今天因為家裡的中華電信網路忘了繳費被停了,所以筆電改用iPhone的手機熱點來上網,但在Windows 7用Chrome瀏覽器上網時除了Google,Youtube的和少部分網站可以正常連線外,多數網站都無法正常連線並提示DNS_PROBE_FINISHED_NXDOMAIN的錯誤訊息。

Spring Boot server session timeout連線到期時間設定

Spring Boot 設定內置Server Session連線時間到期(Session Timeout)的方法如下。

Spring Boot Test TestRestTemplate測試GET, POST範例

Spring Boot Test使用TestRestTemplate測試GETPOST RESTful API範例如下。

Angular 使用Session Storage登入登出簡單範例

Angular使用Session Storage來做簡單的登入登出範例。

Spring Boot Test 取得測試web環境的port號

在Spring Boot Test測試程式可使用@LocalServerPort取得測試的web應用程式的port號。

Spring Boot Test @SpringBootTest的作用

在Spring Boot專案撰寫單元測試(Unit Test)時要在測試類別前加上@SpringBootTest注釋,例如下面是被測試的Controller類別。

WordPress <br> 沒有作用

今天發現就算在WordPress(版本為5.3.2–zh_TW)的HTML編輯器使用<br>也不會有斷行效果,因為WordPress在渲染原始HTML內容會過濾掉<br>

Oracle CURRENT_TIMESTAMP 與 SYSTIMESTAMP 區別

在Oracle PL/SQL 可以用CURRENT_TIMESTAMPSYSTIMESTAMP取得現在日期時間。兩者差別如下。

TypeScript 宣告數值變數 declare Number variables

TypeScript宣告數值變數的語法let <variable_name>: number

Angular 加法計算頁面簡單範例

本範例介紹如何使用Angular寫一個簡單的加法計算頁面。

Spring Security CSRF防護 CsrfFilter原始碼解析

Spring Security (5.2.1.RELEASE) CSRF防護驗證原始碼解析。

Spring Boot Security 取得登入者名稱 get login username

Spring Boot Security應用程式取得登入者名稱的方式如下。

Spring AOP對Spring Security logout做切點

使用Spring AOP對Spring Security logout做切點的方式如下。

Spring Boot 讀取resources目錄的圖檔為byte[]

在Spring Boot專案中,讀取src/main/resources目錄中的圖檔為bytes[]的方法如下。

Spring Boot + JUnit 5 使用 MockMvc 測試 RestController API

Sprinb Boot 使用JUnit 5搭配Spring MockMvc測試RestController API範例。


Spring Data JPA Query Method 方法名稱查詢範例

Spring Data JPA Query Method的用法範例如下。

Java 8 ZoneId列表

Java 8 ZoneId.getAvailableZoneIds()取得區域ID(ZONE ID)列表如下。

2020/4/9

Oracle select BLOB column as CHAR

Orale 查詢BLOB欄位為字串的方式如下。

2020/4/7

Oracle 取得使用者全部的table及column名稱

Oracle 取得目前使用者下所有的table及column名稱的方式如下。

Java Map sorting 排序

Java的Map的排序方式如下。

2020/4/6

Java write out file Mac OS

Java 在Mac OS中把檔案寫出到本機資料夾的方法如下。

Spring @Transactional default rollbackFor

Spring @Transactional 能掛在類別或方法前來管理交易,預設觸發rollback的機制如下。

Effective Java 3e - Item 19: Design and document for inheritance or else prohibit it 筆記

Effective Java 3e - Item 19: Design and document for inheritance or else prohibit it 繼承的設計與文件說明或禁止繼承 筆記。

2020/4/4

Java convert InputStream to String

Java 把InputStream轉換成String的方法如下

Effective Java 3e - Item 18: Favor composition over inheritance 筆記

Effective Java 3e - Item 18: Favor composition over inheritance 組合優於繼承 筆記。

2020/4/3

Java 什麼是immutable class

Immutable class(不可變類別)的實例建構後即無法修改,物件生命週期間的狀態固定。

2020/4/2

Effective Java 3e - Item 16: In public classes, use accessor methods, not public fields 筆記

Effective Java 3e - Item 16: In public classes, use accessor methods, not public fields 公開類別使用存取方法而非公開成員變數 筆記。

Java 什麼是top-level class

top level class(頂級類別)是指不為nested class(巢狀類別)的類別。

Effective Java 3e - Item 15: Minimize the accessibility of classes and members 筆記

Effective Java 3e - Item 15: Minimize the accessibility of classes and members 最小化類別及成員的存取 筆記。

Java package-private class

Java頂級類別(top-level class)的存取修飾子有兩種,分別為public及private-package(無修飾子)。

2020/4/1

Spring JDBC MapSqlParameterSource

當使用Spring JDBC的NamedParameterJdbcTemplate執行SQL操作時,其提供的方法除了可用Map<String, ?>帶入參數,也可改用SqlParameterSource的實作類別MapSqlParameterSource

2020/3/31

Git 刪除遠端分支 delete remote branch

Git 刪除remote branch遠端分支的方法如下。

Mac 終端機查詢本機的IP位址 terminal find local IP address

在Mac終端機(terminal)查詢本機的IP位址的方式如下。

2020/3/28

Spring JDBC JdbcTemplate 與 NamedParameterJdbcTemplate 差別

Spring JDBC在存取資料庫時除了用典型的JdbcTemplate存取,也可用NamedParameterJdbcTemplate存取,兩者的差別如下。

Encryption(加密)與 Hashing(雜湊)的區別

在實作資料交換的安全機制時,常會聽到加密(Encryption)與雜湊(Hashing)這兩個詞,兩者差別如下。

2020/3/27

RESTful API 文字與代碼問題 code text mapping

上週某天前端工程師跑來說希望我回傳及接收的資料型態都能一致,問題情境如下。

2020/3/24

Git 移除未追蹤的檔案及目錄 remove untracked files and directories

Git 移除未追蹤的檔案及目錄(untracked files and directoreis)的方法如下。

2020/3/21

育嬰留職停薪計畫

最進老婆懷孕,所以開始思考生產後的育兒問題。

KINYO BTE-3895 無線藍芽耳機 開箱

最近在光南百貨買了KINYO BTE-3895 無線藍芽耳機(699元),下面為使用心得。

2020/3/19

Javadoc 說明註解參照類別及方法連結寫法 class and method reference link

Javadoc說明註解中如果要參照到某個類別或方法的寫法如下。

2020/3/18

Java 建立空集合物件 create empty collections list set map

Java 建立空的集合物件如ListSetMap方法如下。

2020/3/10

Git 重新命名本地分支及遠端分支 rename local and remote branch

Git 重新命名本地分支及其追蹤的遠端分支的方式如下。

2020/3/9

Git 分支重新命名 branch rename

Git 分支重新命名的方式如下。

2020/3/8

JavaScript Base64 編碼(Encode)及解碼(Decode)

JavaScript對資料進行Base64編碼(Encode)及解碼(Decode)的方法如下。

2020/3/3

Git 推送本地分支到遠端分支 push local branch to remote

Git 把本地分支(local branch)推送到遠端倉庫並建立新的遠端分支(remote branch)的語法如下。

2020/2/29

晚餐自己煮 麻婆豆腐

今天晚餐煮麻婆豆腐。

2020/2/28

桃園市 桃園區 陳美梅 市議員 服務處反映

今天是2020/2/28星期五,二二八連假的第一天。

晚餐自己煮 魚香茄子 辣炒大白菜

今天晚餐煮得是魚香茄子和辣炒大白菜金針菇。

2020/2/26

老婆懷孕爸爸可以請的假

最近老婆懷孕,查了一下媽媽懷孕生產時爸爸可以請以下的假:

2020/2/22

晚餐自己煮 蔥爆豬肉 香菜煎蛋

今天晚餐自己煮,因為老婆去看中醫說要在外面吃三媽臭臭鍋,但我沒什麼興趣,冰箱有老媽前幾天拿來的菜所以就自己煮。

2020 北海道 札幌 五天四夜自助旅遊 取消

花了我一個禮拜去規劃預定2020年3月初的北海道旅遊因為該死的中國武漢肺炎必須取消。

2020/2/20

2020 Subway 義大利經典 Italian B.M.T.™

昨天2020/2/19到林口長庚醫院做上週視網膜剝離手術後的第一次回診。開刀時住院那幾天我都是去地下一樓餐廳的Subway吃早餐。

2020 NIKE BQ4222 運動鞋

昨天去長庚視網膜科回診回來經過市區,想說順便逛逛街順便買雙鞋子,因為我平常上班的鞋子只剩老婆去年幫我買的一雙愛迪達慢跑鞋,材質是透氣的網織布,缺點是下雨天碰到一點水就很容易滲進去弄濕腳,所以我需要一雙比較普通的球鞋/休閒鞋做平日上班穿的鞋子。

視網膜剝離 記錄 三

此篇寫於開刀後的隔周,寫得時候只用右眼。

2020/2/17

視網膜剝離 記錄 二

此篇寫於開刀後的第四天,寫得時候只用右眼。

2020/2/7

Java JPA 批次新增資料效能調校 batch insert performance tuning

今天同事分享一個效能調校(performance tuning)的案例如下。

2020/2/4

Oracle 單行資料列 轉 垂直欄 工具 one row data to vertical column converter

Oracle SQL Developer 單列資料匯出的 text 轉垂直轉換器。

2020/1/15

2020 程式學習清單

最近發現自己在抱怨沒東西可學,可能是最近工作上用得都是熟的東西,或是debug的小任務少了點刺激。所以回想並整理一下2020年還可以學的東西。

2020/1/8

EMV® 3-D Secure 協定規格 Protocol and Core Functions Specification

關於EMV® 3-D Secure 協定規格文件可在EMVCo官方網站的文件庫下載。

2020/1/3

Spring Boot 讀取resources目錄的檔案 read file in resources

在Spring讀取src/main/resources下的檔案的方式如下。

2020/1/1

Angular 使用UpperCasePipe及LowerCasePipe轉插值為大小寫

在Angular template使用插值符{{...}}顯示component屬性內容時,可利用UpperCasePipe轉大寫,LowerCasePipe轉小寫。

Angular 使用ngNonBindable跳脫插值符綁定效果 escape interpolation

在Angular的template如果要跳脫插值符(Interpolation {{...}})的綁定效果,在所屬元素加上ngNonBindable即可。