原创 多線程系列(五) -死鎖分析及解決辦法介紹

一、簡介 在之前的文章中,我們介紹了synchronized同步鎖關鍵字的作用以及相關的用法,它能夠保證同一時刻最多隻有一個線程執行修飾的代碼段,以實現線程安全執行的效果。 但是如果過度的使用synchronized等方式進行加鎖,程序可能

原创 多線程系列(四) -volatile關鍵字使用詳解

一、簡介 在上篇文章中,我們介紹到在多線程環境下,如果編程不當,可能會出現程序運行結果混亂的問題。 出現這個原因主要是,JMM 中主內存和線程工作內存的數據不一致,以及多個線程執行時無序,共同導致的結果。 同時也提到引入synchroni

原创 多線程系列(三) -synchronized 關鍵字使用詳解

一、簡介 在之前的線程系列文章中,我們介紹了線程創建的幾種方式以及常用的方法介紹。 今天我們接着聊聊多線程線程安全的問題,以及解決辦法。 實際上,在多線程環境中,難免會出現多個線程對一個對象的實例變量進行同時訪問和操作,如果編程處理不當,會

原创 多線程系列(一) -線程技術入門知識講解

一、簡介 在很多場景下,我們經常聽到採用多線程編程,能顯著的提升程序的執行效率。例如執行大批量數據的插入操作,採用單線程編程進行插入可能需要 30 分鐘,採用多線程編程進行插入可能只需要 5 分鐘就夠了。 既然多線程編程技術如此厲害,那什麼

原创 多線程系列(二) -Thread類使用詳解

一、簡介 在之前的文章中,我們簡單的介紹了線程誕生的意義和基本概念,採用多線程的編程方式,能充分利用 CPU 資源,顯著的提升程序的執行效率。 其中java.lang.Thread是 Java 實現多線程編程最核心的類,學習Thread類中

原创 手把手教你搞定菜單權限設計,精確到按鈕級別

一、介紹 在實際的項目開發過程中,菜單權限功能可以說是後端管理系統中必不可少的一個環節,根據業務的複雜度,設計的時候可深可淺,但無論怎麼變化,設計的思路基本都是圍繞着用戶、角色、菜單進行相應的擴展。 今天小編就和大家一起來討論一下,怎麼設計

原创 【進階篇】Redis實戰之Jedis使用技巧詳解

一、摘要 在上一篇文章中,我們詳細的介紹了 redis 的安裝和常見的操作命令,以及可視化工具的介紹。 剛知道服務端的操作知識,還是遠遠不夠的,如果想要真正在項目中得到應用,我們還需要一個 redis 的客戶端,然後將其集成到項目中,讓程序

原创 【基礎篇】一文帶你掌握 Redis

一、摘要 談起 Redis,相信大家都不會陌生,做過雲平臺開發的程序員多多少少會接觸到它,Redis 英文全稱:Remote Dictionary Server,也被稱之爲遠程字典服務。 從官方的定義看,Redis 是一款開源的,遵守 BS

原创 如何防止用戶重複提交訂單?(下)

一、摘要 在上一篇文章中,我們詳細的介紹了隨着下單流量逐漸上升,爲了降低數據庫的訪問壓力,通過請求唯一ID+redis分佈式鎖來防止接口重複提交,流程圖如下! 每次提交的時候,需要先調用後端服務獲取請求唯一ID,然後才能提交。 對於這樣的

原创 如何防止用戶重複提交訂單?(中)

一、摘要 在上一篇文章中,我們詳細的介紹了對於下單流量不算高的系統,可以通過請求唯一ID+數據表增加唯一索引約束這種方案來實現防止接口重複提交! 隨着業務的快速增長,每一秒的下單請求次數,可能從幾十上升到幾百甚至幾千。 面對這種下單流量越來

原创 如何防止用戶重複提交訂單?(上)

一、摘要 對於投入運營的軟件系統,最近小編在巡檢項目數據庫的時候,發現某些表存在不少的重複數據,對於這樣的髒數據,初步分析大致的來源有以下可能: 1.由於用戶誤操作,多次點擊表單提交按鈕 2.由於網速等原因造成頁面卡頓,用戶重複刷新提交頁

原创 什麼是前綴索引?

一、什麼是前綴索引? 所謂前綴索引,說白了就是對文本的前幾個字符建立索引(具體是幾個字符在建立索引時去指定),比如以產品名稱的前 10 位來建索引,這樣建立起來的索引更小,查詢效率更快! 有點類似於 Oracle 中對字段使用 Left 函

原创 SpringBoot 整合 MongoDB 實戰解說

一、介紹 在前面的文章中,我們詳細的介紹了 MongoDB 的配置和使用,如果你對 MongoDB 還不是很瞭解,也沒關係,在 MongoDB 中有三個比較重要的名詞:數據庫、集合、文檔! 數據庫(Database):和關係型數據庫一樣,

原创 MongoDB,入門看這一篇足矣!

一、介紹 在介紹 MongoDB 之前,我先介紹一下業務開發的時候遇到的痛點,以便大家對它有一個更加清晰的認識! 最近在用數據庫存儲數據的時候發現這麼一個坑,例如從消息隊列中監聽消息的時候,原來的做法是將監聽的消息數據存儲在數據庫,以便好對

原创 慢SQL,壓垮團隊的最後一根稻草!

一、什麼是慢 SQL 什麼是慢SQL?顧名思義,運行時間較長的 SQL 語句即爲慢 SQL! 那問題來了,多久纔算慢呢? 這個慢其實是一個相對值,不同的業務場景下,標準要求是不一樣的。 我們都知道,我們每執行一次 SQL,數據庫除了會返回執