網頁

使用SpringBoot打造記帳簿專案(一)開始

本篇是我2019年自己要完成的的小專案,希望藉由這個專案讓自己累積點東西。

2018/12/29

2018年底回顧

明天就是2018年的最後一天,回顧一下今年及展望明年,這已經是我每年會做的一項傳統。

2018/12/23

LeetCode Count Primes 數質數

本篇為LeetCode上演算法的簡單問題,Count Primes 數質數。

資料結構 堆疊 Stack

資料結構中的Stack結構如下。

面試 程式設計師 你有沒有問題想問的?

面試時,有的面試官在問完問題後,也會反問你有沒有問題想問公司,以下是我整理的一些問題列表。有些問題有些白目,可能會激怒對方,請斟酌。

2018/12/22

演算法 常見的時間複雜度所需的時間排列

時間複雜度Big O所需時間的順序(由快到慢)

演算法 時間複雜度Big O的推論

要分析一個演算法的效率必須推論其時間複雜度Big O,而推論Big O的方法如下。

演算法 時間複雜度O(1)的意思

表示演算法效率的時間複雜度O(1)的意思是,不論輸入問題的規模大小,該演算法的執行時間固定。

2018/12/21

LeetCode Invert Binary Tree 二元樹反轉

本篇為LeetCode上演算法的簡單問題,Invert Binary Tree,二元樹反轉。

LeetCode Reverse Words in a String III

本篇為LeetCode上演算法的簡單問題,Reverse Words in a String III,字串反轉III。

2018/12/18

LeetCode Hamming Distance

本篇為LeetCode上演算法的簡單問題,Hamming Distance

2018/12/17

LeetCode Self Dividing Numbers

本篇為LeetCode上演算法的簡單問題,Self Dividing Numbers

LeetCode Swap Salary 薪水交換

本篇為LeetCode上演算法的簡單問題,Swap Salary

Oracle XOR,OR bitwise operator 位元運算

在Oracle中,只有AND的位元運算函式BITAND(x, y),不過卻沒有ORXOR的位元運算函式,因此若要做ORXOR的位元運算,則可利用下面的做法。

2018/12/15

Oracle optional WHERE condition 依參數是否為null決定WHERE條件

在Oracle中,若一個SQL查詢語句的WHERE條件要依比對的參數是否為NULL來決定此WHERE條件的作法如下。

Java java.util.ConcurrentModificationException 與fail-fast

如果對一個非執行緒安全的集合(Collection)進行多執行緒的操作時,當某一執行緒單獨修改了集合的結構,例如新增(add)或刪除(remove)一個元素,則會發生java.util.ConcurrentModificationException例外錯誤。

2018/12/14

LeetCode Big Countries

本篇為LeetCode上演算法的超簡單問題,Big Countries

LeetCode Robot Return to Origin

本篇為LeetCode上演算法的簡單問題,Robot Return to Origin

2018/12/13

LeetCode Flipping an Image

本篇為LeetCode上演算法的簡單問題,Flipping an Image

2018/12/12

2018/12/11

前端演變的小歷史

本篇出自於TechBridge 技術共筆部落格 - 跟著小明一起搞懂技術名詞:MVC、SPA 與 SSR;轉載於數位時代

我對於前端並不是很了解,這篇文章淺顯易懂,讓我了解前端的演變。

LeetCode 344. Reverse String 字串反轉

本篇為LeetCode上演算法的簡單問題,Reverse String

2018/12/10

2018/12/8

Java 使用Callable Multi-thread 處理 LeetCode Jewels and Stones 珠寶與石頭

本篇源自LeetCode Jewels and Stones 珠寶與石頭的問題,想說是否可以用多執行緒來處理看看。本篇只是練習如何使用Callable返回值。

LeetCode Jewels and Stones 珠寶與石頭

雖然常在網路上(PTT SOFT_JOB)常聽到要刷LeetCode,但直到今天才來玩看看,下面是我隨便挑的一個演算法(algorithm)的簡單題目,Jewels and Stones 珠寶與石頭

2018/12/7

Maven 使用多模組(multi-module)專案的好處

本篇內容來自於Maven最佳实践:划分模块。我覺得解釋得很不錯,所以特別抄下來放在這裡。

Java 8 用Optional來檢查null並用orElseThrow()丟出例外錯誤

使用Optional來檢查物件是否為null,若為null則丟出例外。

2018/12/5

日誌 20181205

人物:我,SD leader(以下簡稱J)。
場景:剛開完會,在大廳。

Eclipse 寫一支簡單的程式及JUnit測試程式並執行覆蓋率測試

本篇主要是要介紹怎麼使用Eclipse的程式覆蓋率測試工具(EclEmma Code Coverage plugin)。通常會要寫測試程式的工作就會要求測試程式的覆蓋率。

Eclipse 清除EclEmma Java 程式碼覆蓋率的高光(highlight)效果

Eclipse Java程式碼覆蓋率(Java code coverage) plugin執行後會出現的highlight顏色效果,如要清除此效果可在Coverage視窗(Coverage View)的功能選單上找到[Remove All Sessions]的叉叉按鈕,點選即可移除。

2018/12/1

Oracle 插入一百萬筆隨機產生的數值資料

在Oracle中新增一百萬筆資料範例如下。

Oracle INNER JOIN語法 oracle inner join syntax

Oracle資料庫inner join用法如下。

Oracle EXISTS / NOT EXISTS

Oracle EXISTS條件的使用方法如下

EXISTS(subquery)

2018/11/30

Oracle 產生指定範圍的隨機整數

在Oracle中要取得指定範圍的隨機數值(NUMBER),可使用DBMS_RANDOM.VALUE

SQL predicates的意思

SQL predicates是指表示TRUEFALSE等條件判斷的敘述,例如=, <>, >, >=, <, <=, IN, BETWEEN, LIKE, IS NULL or IS NOT NULL等就稱之為predicates。或是說WHERE後的條件式都可稱為predicates。

Trivial,Non-Trivial的中文翻譯

在閱讀英文的程式說明時,例如在Stack Overflow的問題或回答中,常會看到non-trivial這個單字,其中文意思為不平凡的,或可翻成"複雜的","難以理解的","困難的","不簡單的"。

2018/11/29

Oracle SYSDATE 與 SYSTIMESTAMP的差別

Oralce的SYSDATESYSTIMESTAMP函式皆可取得資料庫所在系統的日期時間,而差別如下。

日誌 20181129

今天突然想說為什麼不來寫個工作日誌,所以現在決定開始連載每日的流水帳。

2018/11/28

Java 判斷一整數為偶數(even)或是奇數(odd)

Java要判斷一個整數值為偶數(even)或是奇數(odd)的方法如下。

Java Objects.requireNonNull

最近工作上有個同事很愛用Objects.requireNonNull(T)Objects.requireNonNull(T obj, String message)來判斷傳入方法的參數是否為null並丟出錯誤訊息。

Java 設計模式 裝飾者模式 Decorator Pattern

本篇介紹裝飾者模式(Decorator Pattern)。

2018/10/29

在Windows 7 64Bit 安裝Oracle 12c資料庫

本篇紀錄如何在Windows 7 64Bit安裝Oracle Database 12c Release 2 - (12.2.0.1.0) - Standard Edition 2 and Enterprise Edition。

2018/10/26

Java 8 使用Stream.collect依條件蒐集物件

在Java中常會有從一個集合(例如List)中依條件篩選元素,並將符合條件的元素放入另一個集合的操作,本篇介紹如何使用Java 8的Stream.filter()搭配Stream.collect()來達成。

Java 8 Stream聚合操作(aggregate operations)的forEach()與迭代(iterations)的區別

Java 8對於集合(collections)的操作,新增了使用流(Stream)來進行操作。以Stream操作collection的方式稱為聚合操作(aggregate operations)。而其forEach方法與傳統的迭代(iteration)雖然都是用來走訪集合中的每一個元素,但差別如下:

2018/10/23

Oracle SQL Tuning

本篇參考來源Introduction to SQL Tuning

SQL Tuning(SQL效能調校)用來診斷並修正SQL語句(SQL statement)來達到校能要求。

2018/10/20

2018/10/14

Spring Boot 啟動後馬上被中止的原因

如果在啟動Spring Boot專案時發現啟動後立刻自動被結束的原因如下。

Java Eclipse The import [class name] conflicts with a type defined in the same file

當你在某個類別要匯入外部的類別檔時,出現以下錯誤指示:

The import [class name] conflicts with a type defined in the same file

2018/10/13

什麼是Maven Coordinates

Maven Coordinates用來指名一個特定Maven專案的位置資訊,其作用類似地址。

2018/10/6

Java 8 用Optional來檢查null 範例二

練習使用Optional來避免NullPointerException

2018/10/2

Oracle PL/SQL 在Package建立一個查詢Procedure,條件為另一查詢的結果

本範例主要是紀錄如何在Procedure中使用變數暫存查詢的結果,並以該變數做為另一查詢的條件。

2018/9/29

演算法 演算法的定義及特性

演算法(algorithm)的定義及特性如下。

2018/9/21

Excel 設定欄位文字長度的格式化條件

如果希望Excel的某一欄中的文字長度超過一定字數時會用不同的顏色標示,作法如下。

Maven 如何停止執行Javadoc Plugin

在Maven pom.xml若設置了Javadoc Plugin,則在build過程中會透過Javadoc Tool產生程式碼的Javadoc(也就是Java API文件)。

但在開發時通常不需要產API文件的步驟,而有時程式碼或模組一多,build會變得很慢,所以跳過Javadoc Plugin的方法如下。

2018/9/20

Maven phase,plugin,goal的關係

Maven有幾個重要的概念,分別是phase,plugin及goal,其關係如下。

2018/9/16

畫循序圖(Sequence Diagram)的線上工具

我喜歡裡面的白板手繪風格。www.websequencediagrams.com

但後來發現另一個PlantUML功能比較完整且完全免費。

Maven 專案建置的生命週期 (Maven build lifecycle)

學習Maven最重要的觀念就是要知道什麼是Maven的建置生命週期(Build Lifecycle)。因為Maven就是以此為基礎來運行。或是說,你要先知道什麼一般專案build的過程是什麼。

2018/9/15

Java JAR與WAR檔的區別

當完成一個Java專案時,最後都會將整個專案打包(package),通常可能打包成jar或war檔,而JAR和WAR的差異如下。


2018/9/14

Windows 7 在命令提示字元(cmd)建立空的檔案

在Windows 7使用命令提示字元(cmd)建立新的空檔案的方法如下。

Java 在Windows無法執行javac指令

在Windows安裝好jdk後,執行javac編譯java檔時發生類似下面錯誤,也就是找不到javac指令

C:\project>javac HelloWorld.java
'javac' is not recognized as an internal or external command, 
operable program or batch file.

2018年,男生台北租屋工作薪水3萬還學貸生活試算

在台北工作,薪水3萬,年終13個月,租房,要還學貸,要如何生活呢? 這是這個世代年輕人要面臨的一大挑戰,下面是簡單的試算。

2018/9/5

Spring Boot 外部配置檔application.properties的路徑位置

Spring Boot可使用外部配置檔application.properties來設定Spring環境的一些參數,其預設擺放的路徑如下。

2018/9/3

使用Spring Tool Suite(STS)建立spring boot專案

本篇介紹如何使用STS建立一個簡單的spring boot專案。

使用Spring Tool Suite(STS)建立spring boot專案時maven下載jar出現問題

今天第一次使用Spring Tool Suite(STS)建立spring boot專案時,專案的maven在下載jar的過程中出現問題如下。

2018/9/1

Java 8 java.util.function 常用的Functional Interface

Java 8新增了Lambda語法,而lambda語法的參數為Functional Interface的實作。以下為Java 8新增的java.util.function常用的Functional Interface及被使用到的方法。

2018/8/30

Java 建立簡單的SLF4J + Log4j 2專案

在Eclipse中建立一個簡單的SLF4J搭配Apache Log4j 2專案的範例如下

Spring 使用@Autowired依賴注入物件

Spring的@Autowired用來依賴注入物件,典型的用法就是掛在類別成員變數上。@Autowired預設會依注入對象的類別型態來選擇容器中相符的物件來注入。

2018/8/29

Oracle 在Java呼叫 SELECT...FOR UPDATE的Stored Procedure時,發生java.sql.SQLException: ORA-01002: fetch out of sequence.( ORA-01002:fetch超出序列)錯誤

當在Java的Dao層使用Spring JdbcTemplate呼叫Oracle的預存程序(SP)時,發生java.sql.SQLException: ORA-01002: fetch out of sequence.( ORA-01002:fetch超出序列)錯誤

Java 8 Optional orElse() 與 orElseGet() 的差別

Java 8 新加入的Optional類別是設計來處理null的容器,而其orElse()orElseGet()的差別如下。

2018/8/28

Java 使用Binary Search 二元搜索法尋找陣列中的值

如果要從一個有排序的陣列中尋找一個特定的數,可以利用binary search來加快尋找的速度。

2018/8/27

Java 8 Method References(方法參考/方法引用)的使用時機

Java 8加入了lambda表示式(lambda expression)的語法特性,而lambda表示式可以進一步改用method references(方法參考/方法引用)的寫法。所以使用method references前你應該知道lambda語法該如何使用。

2018/8/26

Java final local變數是否能提升效能performace

Java 變數加上final會增加效能嗎? 答案是NO。

Java Maven的pom.xml是什麼?

在Maven專案中,一定可以看到一個pom.xml的檔案,通常在專案根目錄的位置。

Java Maven 什麼是Artifact?

Maven的artifact是指一個專案(project)建構(build)後產生的東西,中文可翻為"製品"或"構造物"或"構件"。

2018/8/25

Java instanceof 和 Class.isAssignableFrom(Class<?> cls)的區別

Java的instanceof關鍵字與Class類別的isAssignableFrom(Class<?> cls)方法都可用來判斷一個物件是否為某個類別或介面的子類別。但差異如下。

Java 8 用Optional來檢查null

寫Java一陣子都知道,最常出現的錯誤例外就是NullPointerException,而為了避免出現這個例外,所以程式中經常使用if else先判斷物件是否為null後,才會去呼叫物件的方法。

2018/8/24

Java 遞迴題目 階乘計算

Java遞迴基本題,使用遞迴計算階乘。

2018/8/20

Java 8 用Optional來代替if else敘述

今天同事問的一個問題,請將下面的if else敘述用Java 8的lambda改寫。

2018/8/17

Java Reflection(反射)簡單範例

Java Reflection簡單範例如下。

Oracle 如何在SQL Developer中測試輸出參數型態為SYS_REFCURSOR型態的Stored Procedure?

在SQL Developer中,可使用下面來測試輸出參數為SYS_REFCURSOR型態的Stored Procedure。

2018/8/15

Mockito Mock與Spy的差別

在Mockito中有Mock及Spy物件,分別可以用@Mock@Spy來注入,但兩者差異如下。

Mockito @Mock與@InjectMocks的差別

在單元測試(Unit Test)的物件生成套件Mockito中,@Mock@InjectMocks的區別如下。

2018/8/14

Oracle SELECT FOR UPDATE

如果有需要將SELECT的資料先lock後再對資料做後續邏輯處理時,會使用到SELECT FOR UPDATE來鎖定資料列。例如Stored Procedure中常會使用CURSOR來暫存SELECT的資料並做其他處理的情況。

Spring Framework環境配置檔的預設名稱

Spring Framework環境配置檔的預設名稱為WEB-INF下的applicationContext.xml

Spring Boot 使用@ImportResource匯入xml配置檔

在Spring Boot應用程式專案中,如果要匯入Spring的xml配置檔,可在Spring Boot的Application類別(即啟動Spring Boot的類別)搭配@ImportResource注釋來指定配置檔的位置來匯入。

2018/8/11

Oracle 資料庫物件名稱最大長度限制 schema name max length

Oracle 12c(12.1)資料庫物件(例:資料表,欄位)的名稱長度限制(schema name max length)是1 ~ 30 Bytes,也就是最長30個英文字。

2018/8/10

Java Bean Validation Constraints @Digits

本篇介紹Java Bean Validation Constraints 的 @Digits的用法。

2018/8/8

Java 計算整數的位數長度

Java 計算整數位數的方法如下。

2018/8/7

2018/8/6

Oracle PL/SQL 在Package建立一個簡單的查詢Stored Procedure

通常我們會在Java的Hibernate或MyBatis下SQL指令來查詢資料庫,但在某些情況會要求在資料庫寫Stored Procedure來查詢,而僅在Java中呼叫該Procedure來取得結果。

2018/8/5

如何將mp3上傳至iphone?

如果要將mp3上傳至iphone聽,傳統的方法就是用官方的itune來上傳,但這是最難用且令人抓狂的方法。如果你想將mp3放在iphone上聽,我認為最快速的方法就是把mp3放在Google Drive,然後在iphone上下載Google Drive的app來開啟就可以聽了。

2018/7/26

Hibernate JPA Entity Listeners

Hibernate JPA可以使用下面的實體監聽器Entity Listeners來偵測新增,查詢,刪除,修改(CRUD)執行時的動作,並在執行的前後插入其他要執行的方法。

SQL Server 儲存圖片或檔案的資料型態

如果要把圖片或檔案儲存在SQL Server的資料表,則欄位的資料型態可設為varbinary,對應的Java資料型態為位元組陣列byte[]

Hibernate JPA Many To One複合主鍵新增時插入欄位順序錯誤

今天在使用Hibernate JPA的EntityManager.persist()新增主表和子表的資料時,出現插入欄位順序錯誤的問題,情形如下。

2018/7/24

SQL Server 取得隔天/隔週/隔月/隔年的日期

SQL Server可使用DATEADD()函式來取得隔週/隔月/隔年的日期。

2018/7/23

Hibernate JPA One To Many / Many To One 主表為複合鍵(Compound Key)設定

Hibernate JPA OneToMany/ManyToOne複合鍵(Compound Key)設定如下。

子表的外鍵一定是其主鍵的一部分嗎

Is foreign key a part of the primary key of the child table in one to many relationship?

在一對多關係中,子表中的外鍵會是其主鍵的一部分嗎?

SQL Server 資料表中的資料行與現有主索引鍵或UNIQUE條件約束不相符

今天在SQL Server使用SSMS建立資料表的外鍵時,出現錯誤:
資料表中的資料行與現有主索引鍵或UNIQUE條件約束不相符

2018/7/22

ZK 設定及取得Session attributes

ZK 設定及取得Session的方法如下。

2018/7/21

桃園市市徽

今天看到[問卦] 有沒有台灣哪個縣市的旗子最漂亮的八卦?這篇文章。台灣各縣市的市徽設計都超醜,配色字體都是。不過我覺得桃園市徽還有救,把難看的配色和桃園兩個字拿掉,在稍微調整一下中間圖樣的大小就OK了,這樣簡簡單單的設計不是很好嗎?

Java java.sql.Time 與 java.sql.Timestamp 的差別

Java中用來紀錄時間資訊的類別為java.sql.Time,其與java.sql.Timestamp的差異如下。

日誌 20180721

一早起來想了半天決定寫這篇文章來清理一下思緒兼抱怨,內容是我目前工作上碰到的難題,就是一股阿雜的感覺。

2018/7/19

屎缺沒人做 [問卦] 我家的管委會要倒了怎麼辦?

今天看到PTT下面這則文章,大意是管委會是個塞缺,沒人要做。

OneNote資料不見

今天在公司開啟OneNote要查之前的筆記時,發現怎麼怪怪的又要我重新登入帳號,進去後發現介面有點不太一樣,更糟的是筆記內容都不見了,就跟新的一樣。

2018/7/18

Java SQL Server Error 'The data types time and datetime are incompatible in the greater than or equal to operator.'

今天在用JPA JPQL查詢SQL Server的資料表時,出現下面錯誤

The data types time and datetime are incompatible in the greater than or equal to operator

2018/7/17

2018/7/14

MySQL Workbench 資料表設計的欄位標籤縮寫意思

MySQL Workbench設計資料表欄位的標籤縮寫意思如下。

2018/7/9

SQL Server - INSERT statement conflicted with the FOREIGN KEY constraint

在SQL Server新增時出現錯誤INSERT statement conflicted with the FOREIGN KEY constraint時,如果外鍵參考的資料表確實存在要新增的主鍵值,因此排除了參考的外鍵值不存在的問題,別懷疑,請依照訊息提供的資料表名稱去檢查該資料表的關聯性(外鍵)設定是否正確。

2018/7/8

TortoiseSVN 回退到前一版本

例如最後commit(提交)的版本為100,但這次提交發現有錯誤,想要取消這次commit並回退到版本99的方法如下。

2018/7/7

ZK 開啟和關閉同頁面的 Window

在同個zul頁面的<window>,開啟及關閉方式如下

2018/7/5

JPA 雙向一對多/多對一 Bidirectional One To Many / Many To One CascadeType.MERGE更新時出現StackOverflowError

錯誤發生的情境如下,一個部門Department有多個員工Employee的一對多/多對一關聯。

2018/7/4

ZK <timebox>,<label> 24小時格式format

ZK <timebox>的格式預設為12小時制(12-hour clock),若要改為24小時制(24-hour clock),則format設為"HH:mm:ss"如下。

Compound Key和Composite Key的差別

資料表的主鍵(Primary Key)如果是由多個欄位(屬性)組成,則稱為複合主鍵(Compound Key)。

Java 取得List中最大的物件

Java 如要取得List中"最大"的物件,可使用Collections.max()方法。

2018/7/3

Hibernate JPA One To Many 複合鍵(Compound Key)設定

Hibernate JPA OneToMany複合鍵(Compound Key)設定如下。

JPA Hibernate 一對多One To Many出現重複的結果

今天在設定JPA一對多OneToMany的實體時,查詢結果出現重複的結果。例如一個部門(Department)有多個員工(Employee),而Department物件中用來取得與Employee關聯的List<Employee> employeeList中出現重複的結果

2018/7/2

SQL Server 在現存的資料表加入UNIQUE限制

SQL Server 如要在既有的資料表將某欄位加上UNIQUE限制,方法如下。

2018/7/1

SQL Server 查詢資料表的識別欄位(auto increment column)

SQL Server 要查詢資料表的識別欄位,可直接執行下面語句。

SQL Server 重設欄位的自動增量(auto increment)的識別種子值(seed)。 reset auto increment seed value.

在SQL Server資料庫管理工具SSMS中可在資料表欄位的識別規格設定識別值增量(identity increment)來達到自動增量(auto increment)的效果。如果要將已經增量的識別值種子(identity seed)重設,可以使用DBCC CHECKIDENT

2018/6/30

2018/6/29

CSS 置中區塊

CSS 置中區塊。但只有在一開始的畫面置中而已

ZK 切換背景主題(Theme)

ZK 切換背景主題Theme的方法如下(以Sapphire為例)。

2018/6/28

Windwos 10 預設瀏覽器重開機後被重設回IE

微軟Windows 10 (企業版 版本1709)真的很不道德,把預設瀏覽器改成Chrome後,只要重開機又會被改回IE,真他媽的,網路上找了一圈還是無解。

Java 如何直接建立帶有key value值的Map物件

在Java 常用Map物件來傳遞參數,而一般建立一個key value的Map物件的方式如下

2018/6/26

Java 取得內部類別的實例

一個類別中的類別為內部類別(nested inner class),取得內部類別的方法如下。

Java Set可以做為Map的key嗎?

可以,但注意不要改變Set物件的內容。

Java Regex 小工具

寫個簡單的Java正規表示regex的產生器,目的是拿來Validate前端的輸入資料是否滿足條件。

ZK Grid Cell的內容不要斷行

ZK 如果不要Grid的Cell中的內容被斷行,可在<label>設定css的white-space:nowrap

2018/6/25

ZK zul匯入外部css

透過<style>來匯入外部的css,並在ViewModel產生路徑來避免cache。

ZK 關閉zul頁面及外部匯入的css快取(cache)

ZK 可使用下面設定來防止zul頁面及匯入的css被cache住。

2018/6/24

SQL Server SSMS 設定複合主鍵(compound primary key)

在SSMS設定複合主鍵(compound primary key)的方式如下

2018/6/23

CSS 屬性選擇器 Attribute Selector [attribute*=value]

CSS Attribute Selector [attribute*=value]的意思是選取屬性值中包含指定子字串的元素。

JPA JPQL查詢語法

JPA的JPQL(Java Persistence Query Language)語法可類似SQL,但其查詢資料源是持久化物件(Entity)而非資料庫本身。

2018/6/22

Hibernate JPA 雙向一對多/多對一設定 Bidirectional One To Many / Many To One

一個作者(Author)有多本書(Book),JPA 雙向一對多/多對一實體關聯設定如下。

2018/6/21

Lombok 使用lombok的問題

Lombok是一個IDE插件 + library的組合,主要作用是用來減少Java的冗長(verbose),尤其是POJO類的getter與setter,建構式,toString,equals,hashCode等樣板程式(boilerplate code),或幫你注入Logger的實例。透過在POJO類別加上lombok的注釋@Data@Getter@Setter@ToString@EqualsAndHashCode等。

ZK 讀取WEB-INF中的圖檔

ZK 取得WEB-INF中的檔案的方法如下

2018/6/20

Hibernate JPA 單向一對多Unidirectional One To Many設定

JPA單向一對多關係(unidirectional one to many)設定如下

JPA @OneToOne, @OneToMany的orphanRemoval屬性

在JPA的@OneToOne(一對一)及@OneToMany(一對多)有一個orphanRemoval屬性,其作用如下。

2018/6/19

SQL Server SSMS 設定主鍵(Primary Key)欄位自動遞增(auto increment)

在SSMS物件總管(Object Explorer)右鍵點選資料表 -> 設計 -> 選擇主鍵欄位,在下方的[資料行屬性](Column Properties)視窗的[識別規格](Identity Specification)項下的[為識別](Is Identity)改為'是'並存檔即可。

JPA Hibernate Entity映射欄位只要讀取不要新增或更新

如果映射資料表的Entity類別的某個欄位只要查詢資料庫的資料,但忽略新增或修改,則可在屬性上使用@Column(name="column_name", insertable=false, updatable=false)

2018/6/18

SQL Server SSMS 日期欄位設定新增及修改時自動插入

在SSMS若要對資料表欄位(column field)設定預設值,方法如下。

SSMS 新增資料表時,出現刪除的資料表仍然存在的錯誤

在SSMS的物件總管中刪除了某個資料表,然後再重新建立相同名稱的資料表時卻出現資料表[名稱]仍存在的錯誤,導致無法新增。

SQL Server SSMS 檢視資料表的外鍵(Foreign Key)設定

在Microsoft SQL Server檢視資料表的外鍵(FK, Foreign Key)的語法如下。

ZK MVVM zul套用BindComposer

從ZK 8開始,只要UI元件的viewModel屬性有被設定到ViewModel類別,則org.zkoss.bind.BindComposer會自動套用。

ZK 將org.zkoss.image.Image存至檔案系統

將前端上傳的圖像(org.zkoss.image.Image)儲存至檔案系統(file system)中。

JPA 使用@Transient來忽略Entity屬性映射至資料表

JPA預設會將Entity類別的所有屬性與資料表的欄位做映射,如果要忽略某個屬性,則在該屬性掛上@Transient annotation。

ZK MVVM上傳檔案

ZK MVVM上傳檔案範例如下。

ZK 在ViewModel中取得contextPath

在ZK使用以下來取得應用程式根目錄context path。

Java WebApp javax.imageio.IIOException: Can't read input file!

當在Java程式中使用ImageIO.read(File file)讀取指定路徑的圖片時發生錯誤如下。

Java WebApp的上傳檔案應該存放在哪裡?

在Java網路應用程式(WebApp),使用者上傳的檔案,例如大頭照,應該儲存在哪裡?

2018/6/17

ZK <selectbox>下拉選單value text

ZK <selectbox>下拉選單搭配value text的MVVM做法如下。

ZK i18n 多語系設定

ZK i18n多語系的語言設定檔預設會抓取WEB-INF目錄下的zk-label_lang_CNTY.properties檔,例如使用WEB-INF/zk-label_zh_TW.properties作為繁體中文語系的來源。

2018/6/16

ZK MVVM 使用MessageBox對話框確認動作

在ZK使用MVVM的方式來顯示MessageBox彈出確認對話框的作法如下。

ZK 在輸入欄位<textbox>設定郵件格式限制

ZK <textbox>如要設定郵件格式的限制範例如下。

2018/6/15

Hibernate JPA JPQL org.hibernate.hql.internal.ast.QuerySyntaxException: [entity_name] is not mapped

今天再用JPA JPQL查詢時,出現錯誤如下

org.hibernate.hql.internal.ast.QuerySyntaxException: [entity_name] is not mapped

2018/6/14

JPA @PersistenceUnit無法注入EntityManagerFactory

若果要使用JPA的@PersistenceUnit注入EntityManagerFactory的實例,則所存在的類別物件必須被"容器"(container)所管理。否則無法注入EntityManagerFactory

Java 什麼是ThreadLocal

Java的ThreadLocal所建立的變數只能被目前的執行緒(thread)存取,而其他執行緒無法存取。

Hibernate JPA Entity 生命週期 (JPA Entity Lifecycle)

在使用Hibernate JPA之前要先了解什麼是Entity生命週期是什麼,否則會像我在進行新修刪查(CRUD)的操作時一直碰到錯誤。(我是新手)

2018/6/13

Hibernate JPA 設定多個資料庫來源

Hibernate JPA若要設定多個資料庫來源,則可在persistence.xml中設定多個persistence unit。

Hibernate JPA 主鍵欄位自動遞增的實體類別設定

如果資料表的主鍵欄位(primary key column)是設定為自動遞增(auto increment),則在Java應用程式中對映的實體類別設定如下。

JPA + Hibernate + MySQL persistence.xml 基本設定

JPA 2.1 + Hibernate 5.2.17 + MySQL 8.0.11 persistence.xml的一些設定。

ZK 開啟及關閉modal <window> (MVVM)

在ZK要以MVVM的方式開啟<window>及關閉的方法如下(zk 8.5.1)。

2018/6/12

ZK 如何在include的zul頁面中切換成另一個zul

假設今天有個main.zulinclude了inner1.zul。若要在inner1.zul直接換成inner2.zul的作法如下。

ZK 傳遞參數至include的zul頁面及ViewModel

ZK從外部zul(outer zul)傳送參數給incude的zul(inner zul)及其ViewModel的方法如下。

Regex 只允許輸入中英文數字

只允許輸入中英文數字的regex如下

/^[0-9a-zA-Z\u4e00-\u9fa5]*$/

2018/6/11

ZK 使用MVVM查詢並使用Grid呈現查詢結果

本使用ZK MVVM來做一個模擬查詢的簡單功能。

ZK 如何畫一條類似<hr>效果的水平線

若要在ZK的zul畫一條類似HTML的<hr>的水平分隔線,可使用<separator bar="true"/>

2018/6/10

多國語系 i18n 應用程式資料庫設計

最近開始思考多國語系(i18n)應用程式的資料庫要怎麼設計。

ZK 多語系 i18n zk-label.properties (i3-label.properties) 中文顯示Uncode編碼問題

ZK的多語系(i18n)的支援可透過在WEB-INF目錄下設定zk-label_lang_CNTY.properties檔(舊版的好像是叫做i3-labels.properties),並在zul直接透過EL及隱含物件labels來存取。(注意labels是全小寫,在Eclipse編輯器大寫"L"和小寫"l"的斜體長得很像,剛才因為這個小差異折騰了半天。)

<label value="${labels.app.login}"/>

但今天在Eclipse Properties Editor編輯好properties檔時,在zul的畫面上卻是顯示中文的Unicode。

ZK 在Controller中加入元件的事件監聽器

下面範例在ZK MVC的Controller(Composer)中加入按鈕<button>的onclick事件監聽器,並在按下按鈕後改變<label>原本的值。

什麼是民粹?

最近常聽到民粹(populism)這個名詞,但一直不太清楚民粹和民主(democracy)的差別在哪,今天找到這篇的部分解釋還不錯(雖然我覺得作者舉得有些不太適用),然後我做了一點自己的小修改。

ZK 插入空白行(分隔行)<separator>

在HTML要插入新的一行(new line),最簡單的就是用<br>,而在ZK的zul則是使用<separator>標籤來分隔。

ZK Controller

ZK 可使用MVVM或MVC架構來設計你的應用程式(指UI元件(View)與資料及邏輯處理(Model)間的關係與控制)。MVVM是使用ViewModel來處理與元件的關係,而MVC則是使用Controller(也可稱作Composer)。

ZK 在zul套用css

在ZK的zul中的UI元件,可以設定sclass屬性來指定要套用的css效果,若要直接把css寫在元件的zul,必須寫在<style>標籤中。若是要引用外部的css檔,則使用<?link ?>

ZK EL語法可使用的隱含物件(implicit object)

ZK zul中可以使用EL語法來存取變數,物件,Java Bean,及預先定義好的隱含物件(implicit object),可使用的隱含物件請見Implicit Objects (Predefined Variables)

ZK <borderlayout>中元件的屬性

ZK <borderlayout>中元件的屬性說明如下

ZK 關閉<borderlayout>中元件的動畫效果

如果要關閉ZK <borderlayout>中元件預設的動畫效果關閉(例如開啟收合(collapsible)的動畫效果),可以在WEB-INF/zk.xml設定檔中加入下面設定即可。

ZK org.zkoss.zk.ui.UiException: Only one child and one caption is allowed: <Center q8BP5>

ZK <borderlayout>中的<north><west><east><south><center>都只能有一個子原件(除了<caption>),否則會出現下面的錯誤:

org.zkoss.zk.ui.UiException: Only one child and one caption is allowed

例如下面的<north>中有兩個<label>,就會引發此錯誤。

<borderlayout>
    <north>
        <label>LABLE 1</label>
        <label>LABLE 2</label>
    </north>
    ...
</borderlayout>

2018年6月 健身工廠桃園復興廠銀卡入會價格

今天(2018/6/10)去加入了健身工廠桃園復興館(桃園市桃園區復興路207號B1)的預售銀卡會員,原價格如下。

2018/6/8

ZK <hlayout>, <vlayout> hflex, vflex

這篇是ZK <hlayout><vlayout>及屬性hflexvflex的實驗。

ZK 教學資源

ZK的教學資源匯整

ZK 如何讓<borderlayout>的大小根據內容做調整

要讓<borderlayout>根據子元件的內容來決定大小,可使用vflex="min"屬性。

建立第一個ZK Maven網頁應用程式

這篇介紹如何在Eclipse建立第一個ZK + Maven網頁應用程式

2018/6/4

Eclipse Maven build java.lang.ClassNotFoundException問題

當你在Eclipse啟動在Tomcat上運行的Maven專案時,在啟動過程中如果出現了java.lang.ClassNotFoundException: 某個library的類別名稱,則可能是因為Tomcat找不到那個依賴的library。

2018/5/31

ZK 設定textbox的長度(寬度)

ZK的input元件為<textbox/>,如果要將欄位的顯示長度(寬度)變長,使用屬性width來設定。

MS SQL Server新增中文結果出現亂碼

今天在SSMS使用insert into插入中文至資料表時,重新查詢剛剛插入的中文卻變成亂碼,例如'肉豬'變成'??',即使該欄位的data type是設為nvarchar

2018/5/24

在SSMS的SQL編輯器中移動整行快速鍵

在MSSQL資料庫管理工具SSMS(Microsoft SQL Server Management Studio)中,如果在SQL編輯器中要移動整行,快速鍵為按住alt + 方向鍵

MS SQL Server 資料表或欄位名稱的方括弧[column] / [table] 是什麼意思

在MSSQL中,如果看到資料表或欄位名稱被方括弧[]包起,例如[ColumnName],這代表這個欄位名稱有空白,或是與保留字相同。

2018/5/23

如何從Eclipse匯入SVN專案

要在Eclipse匯入SVN專案,必須在Eclipse安裝Subversive或Subclipse套件(plug-in)。

2018/5/17

Java 泛型類別的型別符號為空<>是什麼意思

從Java 7開始new一個泛型(generic type)類別時型別可以用<>替代,該類別的型別決定於所分派變數宣告的型別。

2018/5/11

SpringMVC 4 + Hibernate 5 連接MySQL設定

SpringMVC 4 + Hibernate 5連接MySQL 8的設定如下。

2018/5/9

啟動Maven專案時出現invalid LOC header (bad signature)錯誤

今天新建立一個Maven專案時,當一切就緒後在Tomcat啟動時出現下面錯誤。

2018/5/5

ER-Model 使用者,角色,權限的資料庫設計

一個系統一定會有使用者,而複雜一點的系統就會讓不同的使用者有不同的存取權限,而要達成這樣的需求該如何設計呢?

2018/5/4

如何將MySQL Workbench的EER Diagram轉成SQL script

MySQL Workbench的EER Diagram(實體關聯模型圖)編輯器可以讓我們建立視覺化的ER-Model,個人覺得非常好用。而將畫好的model轉成SQL的方法如下。

MySQL 資料庫schema中文的Collation要選擇什麼?

在MySQL建立新的schema時,如果要儲存中文,請選擇utf8mb4_unicode_ci

2018/5/1

在Windows 7安裝MySQL

本篇紀錄安裝MySQL 8.0.11於Windows 7的過程。

Microsoft SQL Server資料庫管理工具SQL Server Management Studio(SSMS)

SQL Server資料庫的管理工具是SQL Server Management Studio(SSMS),就好比Oralce資料庫的管理工具是Oracle SQL Developer,或MySQL資料庫的管理工具是MySQL Workbench

ASUS P2420LA 筆電回復原廠設定 20180501

ASUS P2420LA 筆電回復原廠設定流程步驟。

2018/4/30

Windows 7 磁碟清理的Debug Dump Files可以刪除嗎

Debug Dump Files可以刪除,因為這些檔案是給技術人員除錯用的一些資訊。對一般使用者來說沒用的。

2018/4/29

國泰人壽 鑫享年年保單 試算

最近接到國泰的電話行銷在推鑫享年年這個儲蓄險,行銷人員的幹話讓我再po一次這篇。話術上吸引人(讓你受騙的陷阱)的地方就是投保後一年就可以領錢。

2018 迴轉壽司假日打工

在2018年一月到四月間平日工作在專案間的空檔,希望生活有不一樣的經驗找了迴轉壽司的打工來做。

2018/4/23

Spring Security 自訂無存取權限時返回的錯誤內容 403 Access is denied

Spring Security在使用者存取無使用權限的資源時,預設會返回HTTP Status 403 - Access is denied頁面,如果想要自訂返回的內容,則設定如下。

2018/4/19

CSS 選取同時具有id及class的元素

如果一個html元素同時有id及class,例如<div id="a" class="b" ></div>,則要修改這個元素的css如下。

2018/4/16

代理與反向代理 Proxy vs Reverse Proxy

什麼是反向代理(Reverse Proxy),這是我在了解nginx的第一個問題,尤其是反向代理和前向代理(一般的代理(Proxy))的差別在哪有點令人混淆。

如何在同一台電腦啟動兩台tomcat

要在同一台電腦上,例如本機localhost,同時啟動兩台tomcat的方法如下。

2018/4/13

在Java中建立JSON字串 by Gson

在Java中使用Gson建立JSON字串。

2018/4/10

Java 設計模式 簡單工廠模式 Simple Factory Pattern

簡單工廠模式(Simple Factory Pattern)又稱靜態方法工廠模式(Static Methods Factory Pattern),屬於建構式模式(Creational Patterns),目的是用來建構物件。

2018/4/9

Java 設計模式 觀察者模式 Observer Pattern

Observer Pattern(觀察者模式)是屬於設計模式中Behavioral Pattern(行為模式)。當物件(object)間的有一對多(one-to-many)關係時,可利用Observer Pattern來設計。

2018/4/7

為什麼Binary Search 二元搜索法的時間複雜度是O(log(n))

這幾天看一下資料庫索引(index)的問題,了解到B-TreeBinary Search Tree(二元搜尋樹),就必須了解什麼是Binary Search(二元搜索法),不過對非資工本科的我來說真是燒腦,這邊僅記錄我的理解,可能有錯歡迎指正。

2018/4/6

MySQL 效能調教 58到家MySQL军规升级版 comment by Triton Ho

今天在Facebook的Backend 台灣 (Backend Tw)社團看到板主分享58到家MySQL军规升级版這篇文章,下面紀錄板主對於該文章的評論及說明,是很好的參考及學習。

MySQL 資料庫的資料表欄位是否該設定為允取NULL

今天在Facebook的Backend 台灣 (Backend Tw)社團看到板主分享58到家MySQL军规升级版這篇文章,內容是MySQL資料庫的一些設計原則。

中國用語中資料庫的字段是什麼意思

中國用語中資料庫的字段的意思就是欄位(column)。

2018/4/5

如何搭大眾運輸工具從桃園到鼻頭角

搭乘大眾運輸工具從桃園到新北市貢寮區鼻頭角的方式如下。

日誌 20180405 薪資條

第三份工作的薪資條,資歷兩年多。

2018/4/2

計算字串長度及位元組(Byte)工具

當計算文字檔中有多少個字及占多少位元組(Byte)大小,可使用Notepad++來查看。或是線上工具bytes counter

轉換JSON字串為Java List<Map<String, String>>物件 by Gson

把json字串(json string)轉換為Java List<Map<String, String>>物件的方法如下。

日誌 20180402

新的任務,實作JWT RESTful API接json,txt,file(已完成),excel,xml,API是透過Server呼叫。

2018/4/1

Java Tomcat javax.naming.NamingException: No naming context bound to this class loader

啟動Tomcat時出現底下錯誤。

WARNING: Failed to retrieve JNDI naming context for container [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/common-user-registration]] so no cleanup was performed for that container javax.naming.NamingException: No naming context bound to this class loader ...

Google 縮網址服務要停止服務了 sad

從2009年開始的Google縮網址服務Google URL Shortener(https://goo.gl/)要停止服務了,真是難過,因為一直以來都是用它縮網址。

2018/3/30

Liquibase 使用command line操作

本篇介紹使用command line指令來操作Liquibase產生changelog,執行update及rollback。可先參考學習Liquibase

2018/3/28

MySQL 資料庫 email 欄位的VARCHAR長度

在設計資料表的時候,一定會有電子信箱email的欄位。因為email是由英文數字及特殊符號_-@.等組成,資料型態會設為VARCHAR,但email的長度該設多少呢?

ER-Model identifying relationships 與 non-identifying relationships的差別

今天用MySQL Workbench的EER Diagram正要畫ER-Model時,發現實體關係的連結線分成兩種,一種是實線(Identifying Relationships),另一種是虛線(Non-Identifying Relationships),兩者的區別如下。

2018/3/27

Spring Tomcat JNDI Datasource配置

Spring使用Tomcat JNDI Datasource的配置如下,連結的資料庫為MySQL 5,7。

2018/3/26

Sign up, Sign in, Log in, Register

註冊及登入的英文很多種,而Sign up和Sign in最常搞混。

學習Liquibase

最近專案可能會用到Liquibase,所以學習一下Liquibase是什麼。

2018/3/23

Eclipse 匯入Maven Web專案出現錯誤“Dynamic Web Module 3.1 requires Java 1.7 or newer”

情境是這樣,在Github有一個Maven Dynamic Web專案,透過Git Bash在Eclipse的workspace目錄下直接clone該專案,clone下來後接著在Eclipse import此目錄為[Maven Exsiting Maven Projects],然後在Eclipse的Markers頁籤出現Dynamic Web Module 3.1 requires Java 1.7 or newer錯誤,而且classpath如src/main/java不見了。解決方法如下。

使用JQuery.ajax()上傳檔案時加入進度條

在使用jQuery.ajax()非同步上傳檔案時,可以利用在xhr屬性中加入ProgrssEvent的監聽器來達成上傳進度條(progress bar)的效果。

在Windows 7的git專案中建立.gitignore檔

在Windows 7中因為建立檔案一定要有附檔名,所以當你想建立.gitignore因為沒有附檔名Windows不給你建立,但只要命名為.gitignore.,也就是後面多加一個.即可建立。

Git .gitignore 在Eclipse Java Maven專案中通常會忽略的檔案及路徑

通常用Git提交Eclipse中的Java Maven專案時,下面的檔案及路徑通常會新增.gitignore檔中來忽略追蹤。

2018/3/20

Spring Security 當進入登入頁面時,出現org.springframework.security.access.AccessDeniedException: Access is denied錯誤

在使用Spring Security時,我們通常會允許任何使用者可進入登入頁面(例如login.jsp),所以通常對/login.jsp的存取權限設定如下。

Windows 7 C槽空間快滿了

我的筆電C槽容量快不夠用了,明明沒裝什麼東西,但卻越來越肥。之前都透過Windows 7內建的磁碟清理工具來刪除不必要的暫存檔,但只能釋放一點點空間而已。

後來透過調整系統分頁檔,刪除hiberfil.sys休眠設定,調整系統保護功能使用的磁碟空間上限,刪除已建立的所有系統還原點,總算很有感的釋放了好幾GB的空間。

方法請參考Windows 7系統下硬碟空間清理的15個小技巧:關閉無用功能,刪除垃圾檔案

2018/3/19

Open JDK for Windows

今天在PTT Soft_Job板看到這篇關於Oracle JDK收費問題,有人提到有碰到被收費問題的公司全換成Zulu JDK。

nanashi07: 目前經歴過有被收費的公司,結果是全換 zulu jdk, 不 03/16 19:53
nanashi07: 給古文賺 03/16 19:53

好奇查了一下,Zulu JDK其實也是基於Open JDK,也是可以免費使用不會有收費的問題,而且Windows有安裝檔裝起來似乎很容易(沒試過)。

不過主要還是開始擔心越來越少人使用Java,那我的工作總有一天會不保,或是跳不動了。是開始要多放點心力在第二語言上(Java的都還沒學透)。之前學了一點Node.js,但台灣用C# .NET Core得好像更多,要調查一下該往哪個技能樹點了。

使用jQuery.ajax()上傳檔案至Spring MVC Controller

本篇介紹如何使用jQuery.ajax()來非同步上傳檔案至Spring MVC的Controller。

Spring MVC 上傳檔案 java.lang.IllegalStateException: Unable to process parts as no multi-part configuration has been provided

Spring MVC上傳檔案碰到下面錯誤。

java.lang.IllegalStateException: Unable to process parts as no multi-part configuration has been provided

2018/3/15

Spring Security <form-login> 屬性 login-processing-url

Spring Security的配置元素<form-login>的屬性login-processing-url是用來設定登入表單的action的登入路徑。

Spring MVC Controller搭配Spring Security @PreAuthorize

Spring MVC Controller的方法搭配Spring Security的@PreAuthorize控管存取權限設定如下。

2018/3/14

Spring MVC RESTful API 整合Spring Security及JWT

本篇要介紹如何在Spring MVC整合Spring Security透過JWT機制來存取RESTful API。

2018/3/13

Spring Security 什麼是Credential

根據Authentication.getCredentials()的說明,Credential(憑證)是指用來證明Principal身分的東西,通常是密碼(password)。

Spring Security 什麼是Principal

Spring Security中常看到Principal這個字。Principle是指一個存取系統資源的實體(Entity),簡單來說就是登入的使用者。

2018/3/12

Spring MVC整合Spring Security基本設定

本篇介紹Spring Security搭配Spring MVC的基本設定。

Spring Security No bean named 'springSecurityFilterChain' available 錯誤

如要透過xml配置檔來使用Spring Security,則第一步是在web.xml加入下面的filter

2018/3/11

Spring MVC配置檔載入流程

今天突然對Spring MVC在web.xmlDispatcherServlet<servlet-name>和Spring MVC設定檔的名稱及位置是怎麼決定的,所以跑去看原始碼,下面是今天看了一整天大概了解的流程,在此紀錄一下。

但找了半天還是找不到contextConfigLocation是在哪個地方被設定為Spring MVC配置檔的路徑?

2018/3/9

2018/3/8

在Eclipse使用Maven建立Web專案

在Eclipse使用Maven建立Web專案。

Spring MVC @RestController與@Controller的區別

從Spring MVC 4.0的多了@RestController,與傳統@Controller的差別其實只是@RestController等於@Controller搭配@ResponseBody

LINE 關閉Letter Sealing 2018年3月 版本8.3.0

每次使用LINE電腦版就因為這惱人的功能都要在手機輸入一次驗證碼,下面是關閉Letter Sealing的方法。

Java StackOverFlowError的發生原因

當JVM(Java Virtual Machine)執行thread時所消耗的stack記憶體超過上限時,便會發生StackOverFlowError錯誤。

2018/3/7

HTTP Basic 與 HTTP Digest 驗證的差別

HTTP BasicHTTP Digest的差異在於,HTTP Basic在傳送憑證(credential)時僅是用Base64編碼(Base64 encoding)來傳送,而HTTP Digest是用MD5加密。

在Eclipse匯入專案時出現Some projects cannot be imported because they already exist in the workspace錯誤無法匯入

在Eclipse如果匯入(import)專案時出現
Some projects cannot be imported because they already exist in the workspace
而無法匯入專案時,代表該專案已經存在Eclipse中了,Eclipse發現新匯入的專案名稱與既有的重複所以無法匯入。

如何在Eclipse將專案目錄匯入成專案

在Eclipse匯入既有的專案目錄方式如下。

使用Postman發送夾帶檔案的request

Postman發送url request時可以夾帶檔案,參考下圖。

2018/3/6

JUnit 4 搭配Mockito 2簡單範例

本篇介紹如何建立JUnit搭配Mockito的測試範例。

在Eclipse 建立一個簡單的Maven專案

在Eclipse建立一個簡單的Maven專案方式如下。

2018/3/5

2018-2020 軟體工程師約聘派遣人員的薪資計算

本篇分享的是軟體工程師的約聘派遣職缺(freelancer)的薪資計算,尤其是剛入行對此不熟悉的朋友。

JUnit @BeforeClass, @Before, @Test, @After, @AfterClass 執行順序

JUnit 4的@BeforeClass, @Before, @Test, @After, @AfterClass執行順序如下。

2018/3/4

JUnit 使用Test Suite來包裝多個Test Case

JUnit的Suite可用來組織你要執行的Test Case,例如有三個要被測試的類別分別為TestCaseATestCaseBTestCaseC,若要一次執行這三個Test Case,可利用Suite類別來達成。

JUnit 參數化測試(Parameterized Test)

在JUnit 4可使用參數化測試(Parameterized Test),也就是一個測試方法可重複測試多筆參數。

什麼是單元測試(Unit Test)

單元測試(Unit Test)用來檢查一個獨立工作單位的行為,在Java應用程式中這個獨立的工作單位通常是一個方法(Method)。單元測試用來確認一個方法在接收特定的輸入後是否會得到預期的輸出。相對於單元測試,整合測試(Integration Test)是指檢查數個元件之間的互動。

2018/3/3

Java 什麼是框架(Framework)

框架(Software Framework)是一種抽象程度高的半完成程式,框架本身無法自行運作,開發者必須將自己的程式搭配框架才是一個完整的應用程式。

測試 什麼是SUT與DOC,什麼是Test Double

SUT(System Under Test) 是指測試目標,就是要被測試的對象。

DOC(Depended-on Component),指的是SUT所依賴的程式或物件。

2018/3/2

Eclipse STS 建立Spring Boot專案

使用Eclipse安裝STS plug-in來建立Spring Boot專案。或是你可以直接安裝Spring Tool Suite(STS) IDE來建立spring boot專案

2018/3/1

Eclipse的一些基本設定

以下是我習慣Eclipse的一些環境設定,例如UTF-8編碼及編輯區格式等。

實測桃園火車站通勤到台北各地時間

以下是實測從桃園火車站通勤到台北市各地的時間,輕鬆的走路速度,搭電扶梯時不前進,總之是較保守的實測。

2018/2/26

Java 設計模式 策略模式 Strategy Pattern

策略模式(Strategy Pattern)屬於設計模式中的行為模式(behavioral design pattern)。策略模式也稱作Policy Pattern。

2018/2/25

JavaScript 取得今日(系統日期)

取得今日,格式yyyy/MM/dd

Java Error與Exception的差別

Java 錯誤(Error)與例外(Exception)的區別如下。

Java 什麼是GC (Garbage Collection)

GC是Garbage Collection(垃圾回收)/Garbage Collector(垃圾回收器)的簡稱,即JVM(Java Virtual Machine)的垃圾回收機制。

2018/2/24

Java 設計模式 單例模式 Singleton Pattern

Java設計模式的單例模式Singleton Pattern,屬於建構式模式(Creational Patterns)的一種,是常見也是面試時常考的基本設計模式之一。

Java final, finally, finalize的區別

final, finally, finalize的區別也是常考題,因為名稱很像所以常會搞混。

Java throw 和 throws 關鍵字的差別

throwthrows的差別是很常考的題目,因為兩者只差了一個s,又都是處理Exception的關鍵字因此容易混淆。

Java 畫三角形,金字塔,階梯

Java筆試的常見題型,在console試著依據傳入的數使用星號(*)畫出三角形,階梯或金字塔。

Java 什麼是多載(Overload), 覆寫(Override), 多型(Polymorphism)

此題為面試筆試時的常考題,也是基本題。

MySQL 用日期來GROUP BY datetime欄位

MySQL如果只要以日期DATEGROUP BY DATETIME格式欄位而不考慮時間,可使用DATE()函式。

Java 印出小於n的所有質數

使用Java撰寫一支可印出小於n的所有質數的方法。

2018/2/23

Eclipse SVN Subclipse 更新時lock

當Eclipse在更新時如果出現錯誤而中斷,可能會造成lock而不能更新或提交,解決方式如下。

jQuery.ajax() contentType和dataType的差別

每次都忘記特別記錄一下,jQuery.ajax()參數的contentTypedataType的區別如下。

2018/2/22

URI 的保留字 (Reserved Characters) 和 非保留字(Unreserved Characters)

網址統一資源標誌符URI的保留字(URI特殊字元)如下。

Java XSS攻擊的基本防範

以下是在Java Server端防範XSS(Cross-Site Scripting)跨站腳本攻擊的基本措施。

2018/2/13

處理弱點掃描DOM Based XSS問題,jQuery html() 的參數為整個jsp頁面

jQuery html()有潛在XSS攻擊(跨網站指令碼攻擊)的風險,請參考這篇

2018/2/12

使用JavaScript原生DOM function新增下拉選單內容

使用JavaScript原生DOM function新增select選單的option內容範例如下

處理弱點掃描XSS問題jQuery append() 的做法

jQuery append()有潛在XSS攻擊(跨網站指令碼攻擊)的風險,例如下面append()的參數會被執行。

在Spring AOP Aspect中取得Request, Session

在Spring AOP Aspect中取得Request及Session的方法如下。

2018/2/8

Checkmarx 原始碼弱點掃描檢測工具

客戶都是用這套Checkmarx來掃程式碼漏洞,大部分弱點都是來自於JSP頁面與Controller間傳遞參數時的XSS的潛在漏洞。

JavaScript window.onload 和 jQuery $(document).ready() 的差異

在撰寫頁面的JavaScript或jQuery時,通常會利用window.onload事件或$(document).ready()事件來確保DOM完全載入,不過兩者仍有以下差異。

Spring MVC AOP 設定

Spring AOP AspectJ基本設定如下

2018/2/7

HTC爛掉的原因-紀念文

HTC為何會爛掉的原因,轉貼自PTT八卦板(Gossiping),覺得這篇寫得很實在。

2018/2/6

jQuery 選取同時有多個class的元素

jQuery selector可選取一個只同時有多個class的元素。

jQuery 選取多個元素

jQuery selector 可以選擇多個元素,當需要對多個元素進行同樣的操作時非常方便。

2018/2/1

在jQuery Validation 加入自訂規則

在jQuery Validation套件加入自訂規則(custom rules)的方法如下。

2018/1/28

理財型房貸利息計算

理財型房貸利息計算

jQuery 取消onclick事件

若要取消onclick事件觸發的function,可使用以下

2018/1/24

桃園市桃園區里行政區域劃分圖

桃園市桃園區的里行政區域劃分圖。

2018/1/18

JavaScript 判斷變數是否是Array

在JavaScript判斷一個變數是否為陣列,可使用instanceof關鍵字

如何在jQuery中加入自訂的function

在jQuery中若要加入自訂的function,可使用jQuery.fn.extend()

2018/1/16

JSP JSTL <c:out>搭配<fmt:formatNumber> 使用

在JSP若要同時使用<c:out><fmt:formatNumber>可以利用下面寫法。

2018/1/14

Oracle 查詢相依物件

例如想知道某個TABLE有被哪些物件(PROCEDURE, PACKAGE, PACKAGE BODY, FUNCTION, TRIGGER, VIEW)使用到,可以查詢ALL_DEPENDENCIES

2018一月大阪奈良自由行五天四夜行程

第一次去大阪,和老婆一起去。雖然說是五天四夜,但晚去早回,所以其實只能算四天。

處理弱點掃描XSS問題request為json的做法

如果在jsp頁面傳遞request value時,通常會在EL語法套上<c:out value="${...}"/>${fn:escapeXml(...)}來防止XSS攻擊的潛在風險,也就是把html的特殊符號(e.g.&<>"')取代成html代碼,但如果傳遞的request值為JSONObject就無法使用<c:out>了,因為json中的雙引號為xml跳脫字元,會被取代成html code &#039;

JSP JSTL <c:out /> 跳脫xml字元

JSTL <c:out>有個跳脫xml字元的屬性escapeXml預設為true。其所跳脫的字元如下。

2018/1/4

在JSP EL取得子字串

在JSP的EL可使用JSTL的fn:substring()取得子字串

2018/1/3

MySQL 無法修改欄位

如果你用MySQL Workbench或直接用語法修改資料表欄位時有無法修改的狀況,很可能是因為該欄位有外鍵限制(foreign key constraint)的存在,目前我的解決方法是先將外鍵限制移除,移除外鍵限制後即可修改欄位,修改完之後再將外鍵加回去。

Java 移除Timestamp的毫秒

移除Timestamp的毫秒方法如下

2018/1/2

Spring MVC 前端ajax傳送json資料至Controller

今天從前端利用jQuery ajax傳送json資料至Spring MVC的Controller時,出現以下錯誤

HTML <button> 預設行為

之前一直認為<button>預設上沒有動作,但今天才知道預設行為是submit,難怪我今天用ajax送表單資料給後端時不知為何變成傳統的提交表單。

jqGrid 清除內容

jqGrid清除內容的語法為$('#gridTable').jqGrid("clearGridData");

2018/1/1

關閉 Eclipse 對HTML5 標籤的警告

我使用的Eclipse版本為 Mars(4.5.0),但Eclipse認不得HTML 5的新標籤例如<main>並出現Unknown tag name的警告,雖然對執行沒有影響但很礙眼,所以要把警告關閉。

少子化影響

少子化影響整理如下