原创 mysql varchar類型條件查詢不加引號

一張160w數據量的表   select * from order_promotion where order_no='15441913435665186'  select * from order_promotion where or

原创 MySQL Explain詳解

在日常工作中,我們會有時會開慢查詢去記錄一些執行時間比較久的SQL語句,找出這些SQL語句並不意味着完事了,些時我們常常用到explain這個命令來查看一個這些SQL語句的執行計劃,查看該SQL語句有沒有使用上了索引,有沒有做全表掃描,這

原创 分佈式鎖

原創地址爲:http://www.54tianzhisheng.cn/2018/04/24/Distributed_lock/ 什麼是鎖? 在單進程的系統中,當存在多個線程可以同時改變某個變量(可變共享變量)時,就需要對變量或代碼塊做同步

原创 Java 8 中的 Streams API 詳解

爲什麼需要 Stream Stream 作爲 Java 8 的一大亮點,它與 java.io 包裏的 InputStream 和 OutputStream 是完全不同的概念。它也不同於 StAX 對 XML 解析的 Stream,也不是

原创 Guava新增集合類型-Multimap

在日常的開發工作中,我們有的時候需要構造像Map<K, List<V>>或者Map<K, Set<V>>這樣比較複雜的集合類型的數據結構,以便做相應的業務邏輯處理。例如:import java.util.ArrayList; import

原创 Preconditions優雅的檢驗參數

在日常開發中,我們經常會對方法的輸入參數做一些數據格式上的驗證,以便保證方法能夠按照正常流程執行下去。對於可預知的一些數據上的錯誤,我們一定要做事前檢測和判斷,來避免程序流程出錯,而不是完全通過錯誤處理來保證流程正確執行,畢竟錯誤處理是比

原创 Range

在Guava中新增了一個新的類型Range,從名字就可以瞭解到,這個是和區間有關的數據結構。從Google官方文檔可以得到定義:Range定義了連續跨度的範圍邊界,這個連續跨度是一個可以比較的類型(Comparable type)。比如1

原创 Swagger2 生成 Spring Boot API 文檔

POM 文件 代碼支持 訪問地址 Swagger UI 註解 Swagger 是一個規範和完整的框架,用於生成、描述、調用和可視化 RESTful 風格的 Web 服務。本文主要介紹了在 Spring Boot 添加 Swagger 支持

原创 Jdk1.8 集合處理

@Test public void test() { List<User> list = new ArrayList<>(); for (int i = 0; i < 10; i++) {

原创 Mybatis緩存的那些事

今天寫代碼的時候碰到了一個情況 簡單的的寫了一個小demo @Test @Transactional public void test(){ Role role = new Role();

原创 Optional優雅的使用null

在我們學習和使用Guava的Optional之前,我們需要來了解一下Java中null。因爲,只有我們深入的瞭解了null的相關知識,我們才能更加深入體會領悟到Guava的Optional設計和使用上的優雅和簡單。   null代表不確定

原创 Redis常用命令

Redis常用命令集1)連接操作命令quit:關閉連接(connection)auth:簡單密碼認證help cmd: 查看cmd幫助,例如:help quit2)持久化save:將數據同步保存到磁盤bgsave:將數據異步保存到磁盤la

原创 Guava新增集合類型-Multiset

Guava引進了JDK裏沒有的,但是非常有用的一些新的集合類型。所有這些新集合類型都能和JDK裏的集合平滑集成。Guava集合非常精準地實現了JDK定義的接口。Guava中定義的新集合有:  Multiset  SortedMultise

原创 Immutable(不可變)集合

  不可變集合,顧名思義就是說集合是不可被修改的。集合的數據項是在創建的時候提供,並且在整個生命週期中都不可改變。  爲什麼要用immutable對象?immutable對象有以下的優點:    1.對不可靠的客戶代碼庫來說,它使用安全,

原创 Guava新增集合類型-Bimap

BiMap提供了一種新的集合類型,它提供了key和value的雙向關聯的數據結構。  通常情況下,我們在使用Java的Map時,往往是通過key來查找value的,但是如果出現下面一種場景的情況,我們就需要額外編寫一些代碼了。首先來看下面