原创 logback-spring.xml配置簡述

什麼是 Logback logback繼承自log4j,它建立在有十年工業經驗的日誌系統之上。它比其它所有的日誌系統更快並且更小,包含了許多獨特並且有用的特性。 這話是官網說的 Logback 的配置 Configruatio

原创 調整多個ControllerAdvice的執行順序

問題描述 問題起源於在公司內部,我們創建了自己的自定義web模塊的stater,在其中有統一的異常處理,普通的異常處理我們稱之爲ExceptionResolver,還有一種我們稱之爲FeignExceptionResolver,專

原创 Java 8 新時間 API

Java 8日期/時間API是JSR-310的實現,它的實現目標是克服舊的日期時間實現中所有的缺陷。利用它可以更加方便我們去處理時間和日期的計算等問題。 設計 新的日期/時間API它遵循以下的設計原則: 不變性:在新的日期/時間

原创 使用keytool生成證書

之前項目中用到Spring Cloud OAuth2來做權限認證,當然它可以使用對稱加密,也可以使用非對稱加密,在使用非對稱加密的時候就用到了這裏的證書。本來用keytool生成的證書用的好好的,也就沒有注意過,直到有一天,在登陸系統

原创 equals和hashCode

最近在看Java集合框架,然後看到Map和Set時,避免不了的提到了equals和hashCode方法。正好面試問基礎的時候也愛問這個,藉此機會,正好就係統記錄一下。 前言 衆所周知equals和hashCode方法是來自Object

原创 LinedList源碼分析

LinkedList簡介 LinkedList是基於雙向鏈表實現的,其不僅實現了List接口實現了一個列表,同時也實現了Deque接口,使其可以作爲一個隊列甚至是棧使用。在Java 7以前,LinkedList實現的是雙向循環鏈表,在

原创 ArrayList源碼分析

ArrayList簡介 ArrayList底層基於動態數組實現,相比於Java中的數組,它可以動態擴容。當需要大量增加新元素時,建議先調用ensureCapacity方法來擴容,避免在添加元素過程中多次擴容,來提高效率。 public

原创 設計模式之里氏替換原則

定義 里氏替換原則(Liskov Substitution Principle)由2008年圖靈獎得主、美國第一位計算機科學女博士Barbara Liskov教授和卡內基·梅隆大學Jeannette Wing教授於1994年提出。它有

原创 深入理解volatile

硬件問題 前面說了一些JMM中的一些基本的概念,爲了便於後面的理解,再補充一點別的知識(感覺有個大致印象就夠用了)。 CPU高速緩存 我們都知道,計算機處理一個問題多數情況下,總是需要與內存交互的,這一部分的I/O操作是很難被消除的,

原创 原子性、可見性、有序性

在介紹JMM時提到過,造成併發問題的根本原因是在於對共享變量的操作,而導致併發場景下數據一致性問題的本質在於三個特性沒有得到保證,即原子性、可見性、有序性。 原子性 所謂原子性,我的理解就是,一個或者一組操作是不可被分割的,一旦開始執

原创 Java內存模型(JMM)

在併發編程中,需要處理兩個關鍵問題:線程之間如何通信以及線程之間如何同步。 通信:是指線程之間以何種機制來進行信息交換。在命令式編程中有兩種方式進行通信,即共享內存和消息傳遞。共享內存是通過內存中的共享狀態來進行隱式通信,而消息傳遞

原创 線程的生命週期

前面介紹了線程相關的一些基本概念,也說了一個線程的創建以及銷燬,那麼一個線程應該是有生命週期的。這裏就來看一下,一個線程一生可能會經歷哪些階段。 線程的六種狀態 線程的一生可能會經過以下6種狀態: NEW 初始化狀態,線程被創建,

原创 從線程到併發編程

什麼是線程 說起線程,還是得從進程說起。那麼進程是什麼呢?現代操作系統在運行一個程序時,會爲其創建一個進程。比如你電腦上打開個QQ或者是啓動一個Java程序,操作系統都會爲其創建一個進程。而線程是操作系統的最小調度單元,一個進程中可以

原创 設計模式之單一職責

想要精通設計模式,必須要先搞清楚設計模式的六大原則。 在開始設計模式之前,先來談談設計模式的六大設計原則,第一個便是單一職責原則(Single Responsibility Principle)了。 單一職責原則定義 There

原创 Spring Validation參數校驗

簡介 Spring Validation是在Spring Context下的,在Spring Boot項目中,我們引入spring-boot-starter-web便會引入進來,Spring Validation是對Hibernate