原创 Long型比較是否相等的四個方法

Long a = 200L; Long b = 200L; System.out.println(a.equals(b)); System.out.println(a.longV

原创 設計模式首篇

首先說設計模式六大法則: 1.單一原則(Single Responsibility Principle):一個類只負責一項職責,儘量做到類的只有一個行爲原因引起變化;   a、業務對象(BO business object)、業務

原创 關於Controller層向前端返回枚舉類型的字段結構優化

經常碰到類似訂單狀態返回,數據庫只存儲了狀態數字,而前端要展示對應值這種情況,如何在後臺進行優雅的處理呢,我來分享一種方案。 如果查詢返回的是實體類,則新建專門用於返回前端的DTO類,DTO類繼承實體類,新增一個屬性 返回狀態對應

原创 list lamda排序及多次分組

list快速轉map Map<String, GddResult> gddMap = gddList.stream().collect(Collectors.toMap(g -> g.getGoodsCode(), g -> g,

原创 http協議詳解

三次握手 第一次握手 客戶端向服務器發出連接請求報文,這時報文首部中的同部位SYN=1,同時隨機生成初始序列號 seq=x,此時,TCP客戶端進程進入了 SYN-SENT(同步已發送狀態)狀態。TCP規定,SYN報文段(SYN=1

原创 設計模式終篇

18解釋器模式 解釋器模式(Interpreter Pattern)提供了評估語言的語法或表達式的方式,它屬於行爲型模式。這種模式實現了一個表達式接口,該接口解釋一個特定的上下文。這種模式被用在 SQL 解析、符號處理引擎等。用的

原创 spring動態代理的實現方式

java動態代理: 利用反射機制生成一個實現代理接口的匿名類,在調用具體方法前調用InvokeHandler來處理。 cglib動態代理: 利用asm開源包,對代理對象類的class文件加載進來,通過修改其字節碼生成子類來處理。

原创 設計模式中篇

9橋接模式 實現的系統可以多角度分類,每一個分類又有多種變化,就把變化分離出來讓它們獨立變化,減少耦合。 適用場景:當需要大量的繼承類處理的時候,造成有大量的繼承類,可以適用橋接模式。橋接模式用聚合和合成代替繼承。 例如手機有多個

原创 session,cookie,token的一點理解

cookie的出現是爲了解決http協議的無狀態問題,cookie是存儲在瀏覽器中的。用戶登錄後,將登錄信息寫入cookie,瀏覽器每次訪問攜帶,來證明登錄的合法性。 cookie要攜帶登錄用戶的信息,這樣造成了不安全性,sess

原创 高級java工程師面試題

1.char爲什麼比varchar快? varchar存儲的時候前兩個字節會存儲整個字符串的長度,最後一個字節會存儲標誌符。varchar讀取到內存中的時候,是最大的設置,比如varchar(200),雖然實際值存儲4個字符,但是

原创 創建線程的四種方式

1.繼承於Thread類,重寫run()方法; 2.實現Runable接口,實現裏面的run()方法; 前兩種不用多說 3.使用 FutureTask 實現有返回結果的線程,可以返回線程執行結果 public class Test

原创 設計模式

首先說設計模式六大法則: 1.單一原則(Single Responsibility Principle):一個類只負責一項職責,儘量做到類的只有一個行爲原因引起變化;   a、業務對象(BO business object)、業務

原创 spring aop知識點整理

Aspect(切面): Aspect 聲明類似於 Java 中的類聲明,在 Aspect 中會包含着一些 Pointcut 以及相應的 Advice。 Joint point(連接點):表示在程序中明確定義的點,典型的包括方法調用

原创 kafka基礎知識掃盲

1.kafka的主題會分爲多個區,生產者發送到kafka的同一主題的消息會分散到多個區,這其中有幾個策略 實現的原理也很簡單 List<PartitionInfo> partitions = cluster.partitio

原创 countDownLatch與cyclicBarrier的區別

countDownLatch舉例說明 public class countDownlatchTest { public static void main(String[] args) throws Interrupte