BeanUtils.copyProperties 為什麼慢
2023-10-23長久以來使用 ModelMapper、MapStruct 進行對象屬性的 Copy,在某次專案的情境下,剛好用到了 BeanUtils.copyProperties…
長久以來使用 ModelMapper、MapStruct 進行對象屬性的 Copy,在某次專案的情境下,剛好用到了 BeanUtils.copyProperties…
前提 現代系統搭配負載均衡的服務越來越多,如果服務需要搭配 Websocket 功能,每個服務訂閱的真實位置可能都不同,那麼我們如何共享服務的消息。 解決思路 假設我們今天有一個廣告服務,廣告成立後要使用 Websocket 通知各個 Client 端,而廣告服務又被 Replicas…
Introduction 最近在撰寫整合測試時,在思考有沒有辦法加快整合測試的速度,當然首當其衝的就是,當某些測試不需要 Redis、MQ 連線時,全部略過啟用,可是查了許多資料,安迪我真的找不到一個簡單的方式,接下來就讓我分享一下我是如何跳過 @Configuration 的自動載入。 Solution…
Introduction 近期在某專案遇見前後端分離攜帶 Cookie 的跨域問題,剛好有一些小心得想要分享一下。 Solution 在前端中我們很常使用 Axios 來請求 API,在默認的情況下 Axios 是不會攜帶 Cookie 的,我們要將 Axios 中的 withCredentials 設為 True…
Introduction 最近開發到一個需求,每次建立資料都會使用[日期]+[流水號]來進行編號,其中流水號每天都會進行刷新。想到這種需求,大家第一眼可能會想將流水號建立在資料庫,但安迪想偷懶,利用 Redis 的 incr、expire 功能來達成目標。 Code 稍微解釋一下程式碼,當呼叫 incr…
題目位置 https://leetcode.com/problems/removing-minimum-and-maximum-from-array 題目描述 You are given a 0-indexed array of distinct integers nums. 你會取得一個不重複的整數陣列。 There…
題目位置 https://leetcode.com/problems/maximum-ascending-subarray-sum 題目描述 Given an array of positive integers nums, return the maximum possible sum of an ascending…
題目位置 https://leetcode.com/problems/smallest-even-multiple 題目描述 Given a positive integer n, return the smallest positive integer that is a multiple of both 2 and…
題目位置 https://leetcode.com/problems/find-nearest-point-that-has-the-same-x-or-y-coordinate 題目描述 You are given two integers, x and y, which represent your current…
題目位置 https://leetcode.com/problems/lemonade-change/ 題目描述 At a lemonade stand, each lemonade costs $5. 在一個檸檬水攤上,每一個檸檬水賣 $5。 Customers are standing in a queue to…
章節 CH1. SpringBoot 與 Redis 相遇 CH2. SpringBoot 與 Redis 相遇 - Jackson 序列化設定 CH3. SpringBoot 與 Redis 相遇 - 分散式鎖 CH4. SpringBoot 與 Redis…
事情是這樣的 某一天我突然發現 Docker 主機連不到 Private Registry 了,原先還以為是公司防火牆政策沒有開通,也請主管幫忙進行開通。而過了幾天,同事跑來跟我說,會不會其實是 Docker 的網路衝突到了,導致我們請求都走錯網卡,我也尋思一想,似乎有類似的經驗,接下來就讓我們簡單說說 Docker…
近期 SideProject 需要使用到 RKE 在這邊我稍微紀錄一下安裝方式,順便分享給大家,避免踩到無故的雷。 為何使用 RKE 近年來地端 Kubernetes engine 越來越多,在這些的選擇中,我們選擇了使用 RKE…
說來慚愧,儘管年資已老,我卻也不了解 Thread 的生命週期,此次就讓我們了解一下 Thread 生命週期為何。 Thread 有分別 一般而言 Thread 分為 User-thread 以及 Kernel-thread,我們在 Java 中使用的就屬於 User-thread,由 JVM…
如何造成死鎖 基本上要造成死鎖的條件有四個,如下說明 禁止搶占: 已經分配的資源不能被強制性釋放。 持有與等待: 執行緒已經持有了至少一個資源,並且正在等待獲取其他資源。 互斥: 至少有一個資源被設置成了互斥狀態,即一次只能由一個執行緒訪問。 循環等待: 存在一個等待循環,即執行緒A正在等待執行緒B持有的資源,執行緒B…
為何需要鎖(Lock) 為了防止競爭條件(Race condition),我們是需要加上 Lock 使其他 Thread 無法同時存取該資 源,而 Lock 的作用就是提供一個同步的機制,也因如此我們可以確保 Multi thread 情況下不會互相干擾。 物件鎖(Object Lock) Object lock…
可見性、原子性和有序性是多線程編程中的三個重要概念,它們是保證多線程程序正確性的三個基本要素。 可見性 在 Multi thread 中,可見性是指當一個 Thread 修改共享變量的值時,該修改對其他 Thread 是否可見的問題。如果修改對其他 Thread…
在講解 Concurrency 時,我們有必要去理解 Thread 相關知識,因此在此篇文章中,我們講快速理解一遍關於 Thread 的那些事。 什麼是 Thread 要講 Thread 我們就得先談到 Process,我們每一個運行的程序就可稱為為 Process,而 Thread 是 Process…
Git項目位置: https://github.com/Kuan-Wei-Kuo/completablefuture-demo Java 8 開始引入 Completablefuture,基本上就是針對 Future 進行加強,我們可以在非同步任務完成或發生異常時,自動調用 Callback…
Git項目位置: https://github.com/Kuan-Wei-Kuo/elk-demo 什麼是 Kinaba ? Kinana 簡單的說就是一個視覺化工具,但其中還新增了許多與 Elasticsearch 進行設定的功能,來方便我們對 ES 進行操作。 出來吧 ! Kibana…
Git項目位置: https://github.com/Kuan-Wei-Kuo/elk-demo 什麼是 Elasticsearch ? Elasticsearch 是一套開源且基於 Apache lucene 的分散式搜尋引擎,因此搜尋效能非常好。通常我們會將資料儲放到 Elasticsearch…
Git項目位置: https://github.com/Kuan-Wei-Kuo/elk-demo 什麼是 Logstash ? Logstash 是一個資料處理管道,其從多個來源攝取資料以及轉換,後續將會傳送資料至我們喜歡的存儲位置。 從上述我們也可以切分成三塊,正好是 Logstash…
Git項目位置: https://github.com/Kuan-Wei-Kuo/elk-demo 什麼是 Filebeat ? 如果我們去 Filebeat 介紹頁面,會看看斗大的 Lightweight shipper for logs 字眼,意思就是說 Filebeat…
Git項目位置: https://github.com/Kuan-Wei-Kuo/elk-demo 什麼是 ELK ? ELK 是個縮寫,其描述由三個熱門專案所組成的堆疊,分別為 Elasticsearch、Logstash、Kibana,通常使用在彙總所有系統和服務的 Log…
事情是這樣的 在某年某月某一天,同事跑來跟我說測試機的 Docker Host 容量爆炸啦! 我第一步先打開 Docker Host 確認狀況,發現 Container 數量並沒不多,並且使用下面指令查詢 Docker 空間分佈: 得到的答案讓我覺得事情精彩了,Container、Image、Volume…
在 JAVA 中管理記憶管理分為兩部分,分別為 Stack 與 Heap,各自有著不同的負責項目,也需要相互合作,接下來就讓我們探討兩者之前的差別。 Stack Memory 在 JVM 中 Stack 儲存順序為後進先出(LIFO),每個 thraed 都維護著自有的 Stack…
題目位置 https://leetcode.com/problems/print-foobar-alternately/ 題目描述 Suppose you are given the following code: 假設你有以下程式碼 The same instance of FooBar will be passed…
在上一篇我們談過了悲觀鎖的實際應用,與悲觀鎖不同的是,樂觀鎖並沒有對資料進行上鎖動作,我們允許同時進行對該筆的修改,也因此有可能造成資料不符合預期結果的問題產生。 樂觀鎖 樂觀鎖(Optimistic Locking…
在大量請求下,在業務上容易發生併發情況,如果不好好保持資料原子性,那麼我們的資料最終結果並不可信,可以想像若在與金流相關系統上發生這種問題,這將是個災難。 其實說白了,就是要避免競爭條件(Race condition)。 悲觀鎖 悲觀鎖(Pessimistic Locking…
題目位置 https://leetcode.com/problems/max-area-of-island/description/ 題目描述 You are given an binary matrix . An island is a group of 1's (representing land…
基本上 Quicksort 使用 Divide and conquer 策略,將一個 List 進行切割為兩個子序列,只要我們不斷地遞迴這兩個子序列,我們就能夠快速的排序。 步驟 挑選從數列中挑選基準值 (Pivot…
責任鏈模式(Chain Of Responsibility) 責任鏈模式基本上是由一個命令對象與處理對象組成,每一個處理對象都將執行一個命令並且呼叫下一個處理對象,以達到鏈結的效果。 例子 我們需要一個處理器介面類別 接下來,我們需要建立幾個簡單的處理器,並且印出相關字串。 我們有了One、Two、Three…
往往我們在 Spring Security 中要進行無狀態的服務撰寫時,將會設置 SessionCreationPolicy.STATELESS 使 Spring Security 不會產生 Session,然而在 Spring CSRF 防範的機制中,這樣的設定將會造成每個請求都會 Rotated CSRF…
在這幾年,工作戰戰兢兢,慢慢地開始幹著 TM 相關的工作,可是卻也沒掛 TM…