網頁
2019/12/30
2019/12/28
2019/12/26
2019/12/25
2019/12/24
Spring Boot @ControllerAdvice return json response
在Spring Boot / Spring Web MVC的@ControllerAdvice
類別處理錯誤時,如果要以json返回結果,可使用ResponseEntity<T>
回傳。
2019/12/23
2019/12/22
Java String.format() 字串格式化用法
String.format(String format, Object... args)
可建立格式化的字串(formatted string)。
2019/12/21
2019/12/19
2019/12/17
Spring InitializingBean
當Bean在所有的屬性被BeanFactory
設置後需要進行一些客制化的調整,則Bean可實作InitializingBean
介面來客制Bean的初始化。
2019/12/15
Docker 執行 hello-world image
以下出自Docker官方文件Getting started with Docker Desktop for Mac - Explore the application的內容。
Docker 什麼是 Docker Hub
簡單說Docker Hub就是一個可以上傳及下載docker image的地方。類似GitHub,Maven Repository,PyPI,NPM Registry那樣。
2019/12/14
Java 如何使用lambda取得ArrayList<HashMap<K, V>>指定key的val
在IT邦幫忙看到的問題,JAVA如何使用lambda取得ArrayList<HashMap<key,val>>
指定key的val。
投資理財 什麼是股東權益 Shareholders Equity
股東權益(shareholders Equity)為公司總資產(total Assets)扣除總負債(total liabilities)後的價值,也是股東(出資者)(shareholders)對公司真正的所有權,所以叫做股東(的)權益,也代表公司的淨值(net worth)。
2019/12/13
對稱密鑰加密 與 非對稱密鑰加密 區別
Symmetric encryption Asymmetric encryption difference
對稱密鑰加密(symmetric key encryption)與非對稱密鑰加密(asymmetric encryption)差別如下。
2019/12/12
2019/12/11
2019/12/10
2019/12/9
2019/12/8
2020 北海道 五天四夜自助旅遊 景點清單 Hokkaido Sapporo travel attraction list
2019年四月訂了酷航的北海道機票,所以要開始準備這次2020年3月的北海道之旅了。
2019/12/7
蛇型命名 轉 小駝峰命名 工具
Snake Case to Lower Camel Case converter
蛇型命名(Snake Case)(底線分隔)轉成小駝峰命名(Lower Camel Case)轉換器。
2019/12/6
Java 8 日期時間API方法命名慣例 Date-Time method API naming convention
Java 8 日期時間API Package有統一的命名慣例,每種命名的用法及意義如下。
Spring @Autowired 搭配 @Qualifier 指定注入的Bean
Spring 使用@Autowired
注入的介面有多個@Bean
類時,可以搭配@Qualifier
控制要注入哪個實例。
2019/12/4
Oracle UNION 與 UNION ALL 差別
UNION
與UNION ALL
的差別在於,
UNION
會聯集兩個查詢結果並將相同的資料合併為一筆;
UNION ALL
也是聯集兩個查詢結果,但相同的資料不合併為一筆。
2019/12/3
2019/12/1
2019/11/30
Lombok @Builder 用法
Java在建構類別的實例時,如果類別的成員變數/屬性(member variable/attributes)很多,可以利用設計模式的建造者模式(Builder Pattern)替代傳統以建構式(constructor)的方式來建立物件。
2019/11/29
2019/11/27
2019/11/26
Java 重構 別在Entity類建構式裡面寫業務邏輯 never write business logic in entity constructor ?
今天同事對我在建構式中轉寫邏輯的寫法提出疑問如下。
2019/11/25
2019/11/24
Java 設計模式 轉接器模式 Adapter Pattern
Adapter Pattern(轉接器模式)屬於設計模式中Structural Patterns(結構模式)。當客戶端想利用一個既有類別的功能,但該類別的介面不同於客戶端所使用的型態,可利用Adapter Pattern來解決。
2019/11/23
Spring Security 預設登入及登出頁面如何產生 how default login logout page generate
本篇介紹Spring Security預設的登入及登出頁面(default login logout page)是在哪裡被產生的。
Spring Boot Security 自訂登出重新導向路徑 custom logout success redirect url
在Spring Boot的Spring Security自訂登出後重新導向(redirect)的url路徑方法如下。
2019/11/22
Spring Boot Security 自訂登出處理器 custom logout handler
本篇介紹如何在Spring Boot的Spring Security自訂登出(logout)邏輯。
2019/11/20
Spring Security CSRF預設保護的HTTP請求方法 CSRF default protect HTTP methods
Spring Security 啟用CSRF防護時,預設只保護會異動資料狀態的HTTP請求方法,
EMV® 3-D Secure 驗證是什麼 What is EMV® 3-D Secure?
EMV® Three-Domain Secure (3-D Secure) 是一個由EMVCo發展的安全訊息協議,使消費者與商家在進行無信用卡(card-not-present, CNP)電子交易時身分能被發卡銀行驗證。
2019/11/19
2019/11/18
Postman 執行時清除全部的environment變數 clean up all environment variables
Postman執行時清空全部的environment variables變數的方法如下。
Java 轉換英文字母char為ASCII碼十進位整數 convert letter char to ASCII decimal code
Java 轉換英文字母char
為ASCII十進位碼(decimal code)的方法如下。
2019/11/17
2019/11/16
Windows Batch if else 數值比較範例 compare numerical variable example
在Windows Batch檔(bat file)中使用if else
語法比較數值變數(numerical variable)範例。
Windows 在命令工具cmd 使用tree指令顯示樹狀目錄結構及檔案。
在Windows的命令提示字元Command Shell(簡稱cmd)可以輸入tree
指令顯示資料夾的樹狀目錄結構(directory structure)圖形。
Gradle Wrapper是什麼?
在Gradle專案的根目錄下可以看到gradlew
,gradlew.bat
及grade/wrapper
目錄下的gradle-wrapper.jar
及gradle-wrapper.properites
,那Gradle Wrapper是什麼呢?
2019/11/15
2019/11/14
Spring JdbcTemplate ORA-00911: invalid character 錯誤
今天以Spring JdbcTemplate
查詢資料庫時,出現錯誤
java.sql.SQLSyntaxErrorException: ORA-00911: invalid character
。
2019/11/13
Spring Data JPA @Query nativeQuery ORA-03001: unimplemented feature 錯誤
今天在Spring Data JPA的Repository介面定義的@Query
的native query方法執行INSERT INTO..SELECT
SQL時,出現java.sql.SQLSyntaxErrorException: ORA-00900: invalid SQL statement
錯誤。
2019/11/12
2019/11/11
Python 使用in關鍵字判斷元素是否存在序列中 use in to find if sequence contain value
Python的in
關鍵字可用來判斷一組序列(sequence)是否存在某元素。
Python 定義函式的引數預設值 define function default argument value
Python的函式引數(arguments)可以定義預設值(default value)如下。
Spring Boot Security The request was rejected because the URL was not normalized. 錯誤
今天在用Postman測試API時,出現The request was rejected because the URL was not normalized.
錯誤。
2019/11/9
Spring Boot 設定多個外部配置檔 multiple properties files configuration
Spring Boot匯入多個外部配置檔(properties files)的設定方式如下。
2019/11/8
2019/11/7
2019/11/6
2019/11/5
Oracle ORA-02291: integrity constraint (string.string) violated - parent key not found 錯誤原因
今天使用Spring Data JPA新增資料進PRODUCT
資料表時出現錯誤Oracle ORA-02291 integrity constraint FK_PRODUCT_MEMBER_ID violated - parent key not found
錯誤。
Spring Boot Request method 'POST' not supported
今天使用Postman送出POST請求呼叫API時,console印出Request method 'POST' not supported
訊息而無法正確呼叫。
2019/11/3
2019/11/2
Java 使用DateTimeFormatter轉換日期字串為LocalDate
convert String to LocalDate
把表示日期的字串如2019/08/15
轉換成Java 8的LocalDate
的方法如下。
Git stash 暫存正在修改的內容
當在Git專案的某條分支修改了部分檔案且工作尚未完成,而臨時因為工作需要(各種理由急件,插單,bug修復等)切換到另一個分支,而必須先把目前分支進行到一半的修改暫存起來時,可使用git stash
指令將目前做的暫時存起,等待回從另一條分支切回後再取出。
2019/11/1
2019/10/31
Java LDAP 登入時出現 java.security.cert.CertificateException: No subject alternative names present 錯誤
解決方法是啟動時傳入Java參數設定
-Dcom.sun.jndi.ldap.object.disableEndpointIdentification=true
。
2019/10/30
Git 使用git fetch --all更新全部的遠端分支 user git fetch --all to update all remote branches
Git更新所有分支(branch)狀態的指令如下。
2019/10/28
IntelliJ IDEA 無法解析函式庫類別 some library cannot resolve symbol
今天在IntelliJ IDEA的Spring Boot gradle專案,發現有些函式庫,如springframework等library都無法匯入,變成紅色錯誤顯示cannot resolve symbol提示。
2019/10/27
使用Spring BeanUtils.copyProperties()複製Java Bean或POJO的properties值
本篇介紹利用Spring BeanUtils.copyProperties(Object source, Object target)
方法把JavaBean/POJO物件的properties值複製到另一個物件。
2019/10/26
2019/10/25
2019/10/24
Git 如何checkout遠端分支到本地分支
how to checkout remote branch to local branch
Git checkout remote branch到local branch的方法如下。
2019/10/23
Java Lambda 把元素為Optional的List轉為另一個List
covert List<Optional<Object>> to another List
在Java 8 Lambda Stream collect 排除 null 元素的List
中的元素為一般的物件,若List
中的元素為Optional
包裝的物件,且有部分可能是Optional.empty()
的情況,蒐集元素中某個屬性轉換成另一個List
的寫法如下。
2019/10/22
2019/10/21
2019/10/20
Spring Security 什麼是 UsernamePasswordAuthenticationToken
Spring Security的UsernamePasswordAuthenticationToken
的簡單說明如下。
2019/10/18
2019/10/15
2019/10/13
Reactive Programming backpressure 是什麼
在Reactive Programming(響應式程式設計)中常可看到backpressure(回壓/返壓)這個名詞,意思如下。
2019/10/12
Spring @Value 預設值 default value
Spring的@Value
可以方便將properties檔中的設定值注入至程式內,如果注入的key不存在於properties檔,可透過設定預設值來避免null造的錯誤。
Spring Security WebFlux 實作ReactiveUserDetailsService從資料庫取得使用者資料
Spring Security WebFlux從資料庫取得使用者驗證的配置。
2019/10/10
2019/10/9
2019/10/8
2019/10/5
IntelliJ IDEA Community 建立Spring Boot專案教學
create spring boot project
在IntelliJ IDEA Community建立Spring Boot專案的方式如下。
IntelliJ IDEA 快速產生System.out.println()
generate System.out.println()
在IntelliJ IDEA快速產生System.out.println()
的方法如下。
IntelliJ IDEA 快速產生main方法 generate public static void main() method
在IntelliJ IDEA快速產生public static void main(String[] args) {}
的方法如下。
Windows 安裝IntelliJ IDEA Java開發環境教學
本篇介紹如何在Windows 7安裝JetBrains的IntelliJ IDEA Java整合開發環境(IDE),並撰寫一支程式印出"Hello World"。
2019/10/4
JCConf Taiwan 2019 活動記錄
今年八月被前同事推坑買了JCConf 2019 早鳥票,所以今天去了JCConf(Java Community Conference) 2019,很棒的活動,以後每年都要來參加。
2019/10/3
2019/10/2
Spring Security 在UserDetailsService取得request物件
Get request in UserDetailsService
在Spring Security自訂的UserDetailsService
中取得HttpServletRequest
物件的方法如下。
2019/9/30
Spring Boot Security two form api login with two UserDetailsService
本篇介紹如何在Spring Boot Security設定兩個form-data的api登入,且兩個登入口驗證時的使用者來源為不同的兩個UserDetailsService
。
Spring Boot Security 預設的使用者名稱及密碼 default user username and password
Spring Boot Security預設的使用者名稱為user
,密碼則是系統啟動時印在console的UUID,例如
2019/9/29
2019/9/28
2019/9/27
技術社群活動問卷調查結果2019/7/11 - 2019/9/28
之前好奇參加技術社群活動的開發者的比例有多少,所以在右側欄放了一個技術社群活動問卷調查的Google表單,以下是2019/7/11 - 2019/9/28的統計結果。
2019/9/26
Eclipse Access restriction: The type '[ClassName]' is not API (restriction on required library '/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/lib/rt.jar')
今天git pull同事的程式碼時,其中有幾個類別出現紅色叉叉錯誤,錯誤訊息如下:
Access restriction: The type '[ClassName]' is not API (restriction on required library '/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home/jre/lib/rt.jar')
2019/9/25
2019/9/24
Java 列舉 Enum valueOf()正確用法
最近發現蠻多人會在業務邏輯程式中直接使用Enum.valueOf(String arg0)
將傳入的字串轉為對應的Enum型別,而這樣是好的寫法嗎?
2019/9/23
Eclipse gradle build 打包Spring Boot專案為可佈署的WAR檔
在Eclipse使用gradle build
將Spring Boot專案打包為可佈署的WAR檔(deployable war)設定如下。
JBoss EAP Standalone Server jdk版本設定
JBoss EAP Standalone Server運行時預設會使用系統環境變數JAVA_HOME
所指路徑的jdk,若要改用其他的jdk版本則修改方式如下。
Visual Studio Code 關閉HTML自動結束標籤 close HTML auto closing tags
Visual Studio Code編輯HTML時關閉自動產生結束標籤(eng tad)的方法如下。
2019/9/22
Git HEAD detached at remote branch問題
今天從遠端clone一個專案下來,然後用git checkout
從origin/master
切到另一條遠端分支origin/dev
。
$ git checkout origin/dev
此時輸入git status
時,出現HEAD detached at origin/dev
的訊息。
Jolly Time Fun Mania 甜鹹微波爆米花
今天(2019/9/22)晚上和老婆去桃園統領威秀看剛上映的「返校」電影,在樓下全家買了Jolly Time Fun Mania 甜鹹微波爆米花上去邊看邊吃。
2019/9/21
2019/9/20
2019/9/19
Java 字串轉首字大寫 convert first letter to uppercase
Java 將字串中的英文字首字轉大寫,可以使用Apache Commons Text套件的WordUtil.capitalize(String str)
。
2019/9/18
Spring Data JPA 合併欄位唯一限制 配置 composite unique constraint configuration
在Spring Data JPA的Entity實體類若對映的資料表有多欄位形成的唯一限制(composite unique constraint),則配置如下。
Java 如何在列舉中定義靜態常數 how to define static constant variable in enum
在Java的Enum(列舉)中定義靜態成員常數(static constant)的方法如下。
2019/9/16
2019/9/15
2019/9/14
2019/9/12
Java 設計模式 建造者模式 Builder Pattern
Builder Pattern(建造者模式)屬於設計模式中Creational Pattern(創建模式)。當物件(object)的建構過程比較複雜或建構的物件有多種樣貌時,可利用Builder Pattern來設計。
2019/9/11
Spring Data JPA org.hibernate.AnnotationException: No identifier specified for entity 錯誤原因
在設計好Spring Data JPA的實體類別(Entity class)後,啟動時出現org.hibernate.AnnotationException: No identifier specified for entity: <Entity class full qualified name>
錯誤。
2019/9/10
Spring Data JPA JdbcTemplate 多資料庫來源配置範例 multiple datasource configuration example
Spring Boot,Spring Data JPA,JdbcTemplate多資料庫來源(multiple database datasource)配置範例。
2019/9/4
2019/9/3
Git 復原已staged的檔案 unstage changing Files
Git把已使用git add
的staged檔案回復成未修改前的unstaged狀態,也就是取消git add
的方法如下。
2019/9/2
Mac 執行 git 時出現 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)
在Mac執行git
時出現xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)
而無法使用git指令。
Spring Boot 使用Springfox Swagger UI套件產生REST API文件
Use Springfox Swagger UI to generate REST API documents
本篇介紹如何在Spring Boot專案中利用Springfox的套件幫助產生REST API文件。
2019/9/1
Spring Boot Log4j2 Maven Gradle dependencies 設定
Spring Boot的spring-boot-starter-logging
預設是依賴logback,若同時又加入了log4j的依賴,就會導致classpath下有logback與log4j兩個日誌框架,並造成Spring Boot SLF4J: Class path contains multiple SLF4J bindings.
的警告。
Spring Boot SLF4J: Class path contains multiple SLF4J bindings.
啟動Spring Boot專案時,出現錯誤SLF4J: Class path contains multiple SLF4J bindings.
如下。
HTML <input type="checkbox"> 複選框 Checkbox
在HTML網頁可使用輸入元素(Input element)的複選框<input type="checkbox">
讓使用者可以進行多選。
2019/8/31
JUnit 執行時出現錯誤 java.lang.NoClassDefFoundError
今天在Spring Boot + Gradle新的專案執行JUnit測試時,出現java.lang.NoClassDefFoundError
的錯誤,過程及原因如下。
2019/8/30
Log4j2 日誌輸出的預設等級 root logger default logger level
當使用Log4j2作為程式的日誌輸出函式庫時,若log4j2找不到任何配置文件(例如classpath下的log4j2.properties
或log4j2.xml
),
預設會使用root logger輸出日誌,且日誌輸出級別預設為Level.ERROR
。
2019/8/29
Jackson @JsonInclude用法
在Spring Web專案的RestController回傳Java物件時,Spring會自動透過Jaskson把回傳的Java物件轉換成JSON。
如果希望Java物件的屬性在某些情況下不要被轉成JSON屬性,可以設定@JsonInclude
來達成。
2019/8/28
Spring Boot Java POJO 物件與 JSON 的屬性命名慣例格式轉換設定
本篇介紹在呼叫Spring Boot Web MVC時,如何設定JSON屬性命名慣例與Java物件屬性命名慣例格式的轉換,例如Snake Case與小駝峰(Lower Camel Case)互相轉換。
2019/8/27
2019/8/26
2019/8/25
2019/8/24
Spring Boot 設定 Interceptor 攔截器範例
本篇介紹如何在Spring Boot應用程式中設定Inteceptor攔截器,其可攔截傳入Controller的Request及攔截從Controller回傳給Client的Response。
2019/8/23
2019/8/22
2019/8/21
HTML <input type="radio"> 單選框 Radio Button
在HTML網頁可使用輸入元素(Input element)的單選框<input type="radio">
,讓使用者可以進行單選。
Spring Boot 2 + Spring Data MongoDB + MongoDB 簡單範例
本篇說明如何在Windows 7建立Spring Boot,Spring Data MongoDB對MongoDB資料庫進行基本操作的專案。
2019/8/20
轉錄 [分享] Gogoro行進間熄火維修心得(MCU損壞,負評)
本文轉錄自PTT bike板,[分享] Gogoro行進間熄火維修心得(MCU損壞,負評) 文章代碼(AID): #1TMjAHX4
2019/8/19
2019/8/18
2019/8/17
2019/8/16
教老婆寫程式記錄(十八)
從上一次記錄至今大多在複習之前的CSS selectors與HTML <table>
等,配合著使用各種<input>
與<label>
。因為在練習題目的過程中發現還不是很熟稔,因此需要比較多的練習才能熟練。
Visual Studio Code 關閉自動結束引號 Turn off auto closing quotes
在Visual Studio Code (VS Code)關閉自動結束引號(Auto Closing Quotes)的作法如下。
2019/8/14
2019/8/13
2019/8/12
2019/8/11
2019/8/10
MongoDB 什麼是BSON
BSON(中文發音:逼森)是Binary JSON的簡稱,是MongoDB用來儲存文件(document)資料及遠端程序呼叫(remote procedure calls)的資料格式。
2019/8/9
MongoDB 查看Data directory與Log directory的目錄位置
在Windows系統查看MongoDB的Data directory與Log directory資料夾的目錄位置方法如下。
2019/8/8
2019/8/7
HTML <input type="password"> 密碼輸入欄位
在HTML網頁可使用輸入元素(Input element)的密碼輸入欄位<input type="password">
,讓使用者可以輸入字碼。
2019/8/6
2019/8/5
HTML <input type="text"> 一般文字輸入欄位
在HTML網頁可使用輸入元素(Input element)的文字輸入欄位<input type="text">
讓使用者可以輸入文字資料。
2019/8/4
2019/8/1
HTML 空元素 Void elements
一般的HTML元素都會有一個開頭標籤(start tag)搭配一個結尾標籤(end tag),在開頭與結尾標籤之間放一些內容,例如常見的<p>...</p>
,<h1>...</h1>
而有些HTML元素只有單獨一個標籤,也就是其沒有開頭與結尾標籤包夾的內容,又稱為空元素(Void elements),例如<br>
,<hr>
,<input>
。
2019/7/31
2019/7/30
Visual Studio Code HTML CSS JavaScript程式碼排版(Code Formatter)套件 Beautify
在Visual Studio Code(VS Code)撰寫前端網頁程式時,經常需要對編輯的HTML,CSS及JavaScript程式碼整理排版讓原始碼變得整齊好維護,在VS Code可以安裝Beautify這個程式碼排版(code formatter)擴充套件來幫助我們快速排版。
2019/7/29
Java 9 不可變的集合 Immutable Collections
Java 9 提供了如List.of()
,Map.of()
,Set.of()
等靜態工廠方法來建立不可變的集合(Immutable Collections)。
Visual Studio Code 垂直選取(column selection) / 區塊選取(block selection) 快速鍵
Visual Studio Code (VS Code) 垂直選取(column selection)/區塊選取(block selection)編輯器中的文字的快速鍵(short cut)如下。
2019/7/28
2019/7/27
Spring Boot 設定應用程式的HTTP port號
Spring Boot應用程式預設的HTTP port號為8080
,若要修改port號,可在應用程式的application.properties
(or application.yml
)修改server.port
如下。
2019/7/26
2019/7/25
Spring Cloud Netflix Eureka + Ribbon 使用Load-balanced RestTemplate實作客戶端負載平衡服務溝通
本範例介紹使用Spring Cloud Netflix Eureka建構Eureka服務發現(Service Discovery),多個Eureka Client服務實例(Service instances),搭配Spring Cloud Netflix Ribbon並透過RestTemplate
來進行服務間溝通的客戶端負載平衡(Client side load balancing)。(很饒口,看過就好)
2019/7/24
SpotBugs Bug: Class [Class] defines non-transient non-serializable instance field [field]
當用SpotBugs檢測程式碼時,出現關於Serializable的警告訊息如下。
2019/7/23
2019/7/22
CSS 外部樣式表(External style sheet) 在HTML文件參考外部CSS檔
CSS樣式可獨立設定在副檔名為css
的檔案,然後在HTML文件使用<link>
來參照。這外部CSS檔稱為外部樣式表(External style sheet)。
CSS 內部樣式表(Internal style sheet) 在HTML文件的<style>設定CSS
CSS樣式可直接在HTML文件的<style>...</style>
標籤內進行設定,又稱為內部樣式表(Internal style sheet)。
2019/7/21
2019/7/19
2019/7/18
2019/7/17
Spring Cloud Eureka 取得服務的instanceId名稱
Spring Cloud Eureka Server中一個服務會註冊多個服務實例,而每個實例是以Eureka Instance ID來做唯一識別。
2019/7/15
Spring Cloud Eureka 使用RestTemplate實作服務間溝通範例二
本篇示範如何在一個Spring Cloud Eureka的一個服務透過RestTemplate
呼叫另一外一個服務的REST API。
Spring Boot RestTemplate @Autowired無法注入
今天在Spring Boot(2.1.6.RELEASE)應用程式的Controller類別中用@Autowired
注入RestTemplate
的實例時出現下面錯誤訊息而無法啟動。
2019/7/14
2019/7/13
Angular Can not determine the module class XXXComponent in [location] 錯誤
如果在Angular 做預先編譯時(Ahead of Time Complication, AOT),出現錯誤如下:
2019/7/12
2019/7/11
2019/7/10
安裝Visual Studio Code
Visual Studio Code(簡稱VS Code)是微軟開發的程式碼編輯器,是目前網站前端開發者(Front-end developers)愛用的編輯器之一。
本篇記錄在Windows 7 64bit的安裝VS Code編輯器的過程。
2019/7/9
2019/7/8
HTML 最常使用的HTML元素(The most used HTML elements statistics)
根據統計,網頁中最常被使用的HTML元素/標籤(HTML elements/tags)如下。
HTML <html>簡介
每一份HTML文件是由許多的HTML元素(HTML elements)所組成,又稱為HTML標籤(HTML tags)。而<html>
元素為HTML文件的根結點(Root node)。
2019/7/7
2019/7/5
英文 Live under a rock 與世隔絕
If you are in the software industry and you don’t know who Jeff Atwood is, then you have been living under a rock.
如果你在軟體業卻不曉得Jeff Atwood(stackoverflow共同創辦人)是誰,那麼你一直都是與世隔絕。
2019/7/4
2019/7/3
2019/7/2
Java JVM對物件生命週期的世代假設(generational hypothesis)
Java HotSpot VM(以下簡稱JVM)把Heap區劃分為不同世代區塊,是基於對物件生命週期(objects lifetimes)的世代假設(generational hypothesis)。
JVM 與 HotSpot 有什麼不同?
JVM(Java® Virtual Machine)是規格(specification),而HotSpot(Java HotSpot Virtual Machine)則是Oracle根據OpenJDK HotSpot對JVM的實作(implementation)。
2019/6/30
2019/6/28
Java Thread Pool 簡介
從Java 1.5開始,增加了java.util.concurrent
的Concurrency API來處理併行程式,java.util.concurrent
提供多個類別及方法讓我們能夠更方便地建立,管理,執行多執行緒,其中一個重要的特色就是Thread Pool。
2019/6/27
Java 使用ExecutorService來執行多執行緒
原本在Java使用多執行緒來做平行處理時,都是透過建立Thread
物件,傳入Runnable
,然後呼叫Thread.start()
來執行,請參考Java 如何建立Thread。
2019/6/26
分散式系統的CAP定理(CAP theorem)
在設計分散式系統(Distributed System)前,必須要了解CAP定理(CAP theorem),又稱布魯爾定理(Brewer's theorem)。
2019/6/24
Spring Cloud Eureka 使用RestTemplate實作服務間溝通(Service to Service Communication)範例一
本篇示範如何在一個Spring Cloud Eureka的一個服務透過RestTemplate
呼叫另一外一個服務的REST API。
2019/6/23
2019/6/21
Spring Cloud 建立 Spring Cloud Netflix Eureka Server
本篇介紹如何使用Spring Boot建立Spring Cloud NetFlix Eureka Server。
Spring Cloud 建立 Spring Cloud Netflix Eureka Client
本篇介紹如何使用Spring Boot建立Spring Cloud NetFlix Eureka Client。
Spring Cloud Netflix Eureka簡介
微服務架構(Microservice Architecture)中很重要的一環就是服務註冊及發現(Service Registration and Discovery)。
2019/6/20
2019/6/19
2019/6/18
Vim 離開時發生 E37: No write since last change (add ! to override) 無法離開
如果你用Vim開啟了檔案,進入插入模式(Insert Mode)修改了內容,然後沒有存檔直接在命令模式(Command Mode)輸入q
離開Vim,就會發生E37: No write since last change (add ! to override)
的提示。
2019/6/17
2019/6/16
Visual Studio Code copy current line to next line (copy line down) shortcut key
Visual Studio Code (VS Code) copy current line to next line shortcut key.
2019/6/15
Angular 使用wildcard route (**) 處理無效的URL
在設計Angular元件的Route時,對於錯誤或非預期的URL請求,可以透過配置wildcard route來攔截,並返回預先設計好的結果。
2019/6/14
2019/6/13
2019/6/12
Hibernate JPA Entity屬性應該用原始型別(Primitive type)或包裹類別(Wrapper class)
當定義與資料表映射的Entity class(實體類別)時,若Entity屬性(成員變數)對映的資料表欄位是基本資料型態(例如整數(INTEGER),長整數(BIGINT),浮點數(DOUBLE)等),那應該用原始型別(Primitive type)還是包裹類別(Wrapper class)來定義Entity的屬性呢?
2019/6/9
2019/6/8
Visual Studio Code select current line shortcut key
Visual Studio Code (VS Code) select current line shortcut key.
SVN 為什麼無法ignore檔案
一個專案中有些檔案是不需要被SVN版控的,通常是一些IDE與如Eclipse相關的檔案,像是.classpath
,.project
,.settings
等。或是編譯或建構生成的檔案,例如Maven的target
目錄。
TortoiseSVN 從SVN repository check out專案並匯入Eclipse
本篇介紹如何用TortoiseSVN將SVN repository上的專案checkout下來至本機的指定資料夾中。
2019/6/7
VisualSVN 建立多專案(multi projects)的SVN repository
建立多個專案的SVN repository (multi projects SVN repository),以VisualSVN Server為例做法如下。
KIRKLAND MICROWAVE POPCORN - MOVIE THEATER BUTTER
今天(2019/06/07)晚上和老婆去桃園統領威秀去看哥吉拉II,在樓下全家超商買了一包好市多牌的KIRKLAND奶油爆米花上去邊看邊吃。
2019/6/6
Eclipse Maven pom.xml Maven Configuration Problem: Unknown
今天用Eclipse (2019-03)的STS plugin建立Spring Boot Web Starter專案(2.1.5)時,專案的pom.xml
第一行出現未知的紅色叉叉錯誤如下。
TortoiseSVN 無法登入SVN repository
如果發現原本之前可以正常連線到SVN repository的TortoiseSVN(也就是可以正常checkout,show log,commit等),突然變成無法連線(也就是無法checkout,show log,commit),然後即使輸入正確的帳號密碼也登不進去,可以試著將TortoiseSVN儲存的驗證資料刪除,打開TortoiseSVN的settings,在Saved Data項目中,點選Authentication data右側的Clear all刪除全部原本記住的連線SVN repository的帳號密碼。刪除後需要重新連接SVN repository並重新輸入帳號密碼即可。
2019/6/5
SmartSVN How to open Directories window
The way to open the [Directories] window of SmartSVN (v11.0.2) is select Window -> Directories
on the Menus bar, or you can press shortcut key Ctrl + Shift + 1。
SmartSVN 更改編輯器的字型大小(font size)
SmartSVN的程式編輯器預設字型大小是9,中文看起來太小了,
在功能選單的Edit -> Preferences...
,然後選擇User Inteface -> Built-in Text Editor
中可以調整字型和大小。
2019/6/4
MySQL Workbench 無法直接編輯資料表的資料
如果MySQL Workbench中無法直接編輯(新增、刪除、修改)資料表中的資料,那或許是你的資料表沒有設定主鍵(Primary Key)欄位或Unique Non-null欄位。
2019/6/3
2019/6/2
「發布」還是「發佈」
軟體開發常會說,要發布(publish)哪個版本(revision),中文的publish有「發布」和「發佈」兩個詞,微軟新注音的提示也同時有兩種,網路上查兩個詞意思一樣,「發布」和「發佈」是通用的。
2019/6/1
Java 副作用Side Effects
程式的副作用Side Effects是指當一個表示式(expression),函式(function)或方法(method)會改變外面物件的狀態或內容時,這個函式就被稱為有副作用。
Java String Pool 字串池,使用 == 比較兩個String是否相等
我們都知道,Java程式中比較兩個String
變數是否相同時,應該用equals(String s)
,但面試時常會看到使用==
比較兩個String
變數,這主要是考你是否知道String Pool(字串池)的概念。
2019/5/31
2019/5/30
Java 三元運算子(ternary operator)用法
Java唯一的三元運算子(ternary operator)為booleanExpression ? expression1 : expression2
又稱為條件運算子(conditional operator)用法如下。