原创 分佈式ID生成方案(七):美團Leaf

簡介 Leaf由美團開發,github地址:https://github.com/Meituan-Dianping/Leaf Leaf同時支持號段模式和snowflake算法模式,可以切換使用。 Leaf這一名字來源於“世界上沒有

原创 分佈式ID生成方案(六):SpringBoot2.X集成百度UidGenerator

簡介 uid-generator是由百度技術部開發,項目GitHub地址 https://github.com/baidu/uid-generator UidGenerator是Java實現的, 基於Snowflake算法的唯一I

原创 分佈式ID生成方案(五):SpringBoot2.X集成滴滴Tinyid

簡介 Tinyid是用Java開發的一款分佈式id生成系統,基於數據庫號段算法實現,簡單來說是數據庫中保存了可用的id號段,tinyid會將可用號段加載到內存中,之後生成id會直接內存中產生。 特性 全局唯一的long型id 趨

原创 分佈式ID生成方案(二):SnowFlake雪花算法

雪花算法(SnowFlake) 是twitter公司內部分佈式項目採用的ID生成算法,開源後廣受國內大廠的好評,在該算法影響下各大公司相繼開發出各具特色的分佈式生成器。 SnowFlake算法生成id的結果是一個64bit大小的整

原创 分佈式ID生成方案(四):基於Redis的實現

【引言】 Redis的所有命令操作都是單線程的,本身提供像 incr 和 increby 這樣的自增原子命令,所以能保證生成的 ID 肯定是唯一有序的,本篇博客將繼續分享如何使用Redis實現全局性ID。 在上篇文章中,我們已經搭

原创 分佈式ID生成方案(三):MySQL下不同模式的實現

數據庫自增ID 基於MySQL,最簡單的方法是使用auto_increment 來生成全局唯一遞增ID,但最致命的問題是在高併發情況下,數據庫壓力大,DB單點存在宕機風險。 數據庫多主模式 針對上面方式的缺點,我們可以使用數據庫主

原创 【Spring Boot】IDEA + Maven + Spring Boot + Redis

【引言】 在分佈式ID生成方案的系列博客中,總結到如何基於Redis實現,所以本篇博客先分享一下如何基於Spring Boot快速集成Redis項目搭建。 【Redis安裝】 本地沒有安裝過Redis的話,需要先下載進行安裝,Re

原创 分佈式ID生成方案(一):總體概述

爲什麼需要分佈式ID 在複雜的業務系統中,往往需要對大量的數據和消息進行唯一標識。如電商系統中常見的訂單號。 系統使用前期,可能數據量小,應用和數據庫方面壓力不大,這樣單體架構的基礎上,我們可以直接使用數據庫自增ID及對應的單號生

原创 MySQL連接指定時區及LocalDate反序列化處理

【引言】 記錄兩個最近遇到的問題: 1. SpringBoot集成MybatisPlus連接Mysql問題 (1) 問題描述 之前整合了SpringBoot+Mybatis的項目,最近想在項目中實踐一些東西,啓動項目,報錯如下:

原创 【Spring Boot】Mybatis Plus 3.X 條件查詢

【引言】 前面寫過一篇博客《【Spring Boot】Mybatis Plus 2.X 條件查詢》,我們知道Mybatis Plus 2.X 和 3.X 實現查詢的方式不太一樣,本篇博客將總結一下3.X版本各種查詢方法的應用。 【

原创 【Java8實戰】Optional容器類API應用

引言 在前面的系列博客中,有一篇文章是用Optional取代null,Optional容器類是我們在代碼中避免空指針及快速定位空指針的利器。文章的最後,是Optional類下的API總結,本篇博客將把這些方法都實踐一下,看下會產生

原创 【Java8實戰】爲什麼使用Lambda表達式

引言 通過前面的系列文章,我們對Java8的新特性都有了一定的瞭解。但我們應該如何在項目中去應用,知道項目中什麼地方可以使用,才能幫助自己有更深一步的瞭解。本篇文章將通過項目中的需求實例,來實踐Lambda表達式。 需求實例 篩

原创 【Java8實戰】用Optional取代null

引言 對任何一位Java程序員來說,NullPointerException應該都遇到過。而且很多時候,線上出現問題,就是因爲這個錯,往往是由於我們判斷遺漏。下面從一個簡單的實例開始說起。 實例 public class Pers

原创 【Java8實戰】Lambda表達式

引言 Lambda表達式的引入是Java8的新特性之一。簡單地說,Lambda表達式其實是一種新的語法,簡化了代碼,使得代碼看起來更加簡潔,可讀性更強。 語法 Lambda 表達式的基礎語法:Java8中引入了一個新的操作符 “-

原创 【Spring Boot】IDEA + Maven + Spring Boot + JPA + Spring Security + JWT

    在上篇博客中,我們搭建好了一個用戶服務框架,本篇博客緊接着用戶的業務場景的使用,在此基礎上集成spring security 和 jwt 實現用戶的登錄,註冊以及權限控制。     進行框架整合之前,我們先簡單瞭解一下Sp