原创 使用binlog緩存異步化

在高併發的系統中關於緩存的重要性不言而喻,緩存在項目當中大量使用,扛住了大部分的查詢流量,但也有很多點需要注意,最爲典型的例子就是數據一致性問題,緩存擊穿問題,緩存高可用問題等等。這次需要解決的問題是一個秒殺場景的高併發問題。 關

原创 SpringBoot自動化配置mybatis源碼分析

上一篇文章,講到源碼的分析,這次來分析mybatis與spring進行集成的源碼。 Spring骨架接口定義 spring裏的一些基本概念,要做一個簡單的介紹,否則深入到spring與mybatis集成的源碼是比較難理解。 Sp

原创 3年後再來聊建造者模式

2017年的時候瞭解了建造者模式老的文章,現在看來還是不夠優雅,最近看源碼又溫習各種設計模式,所以重新總結一下,也給以後的自己留個記錄,對比自己的成長。 建造者模式,目的就是把複雜對象的內部組裝流程和組建的具體表示給解耦。就如同中

原创 Druid SQL注入檢測

今天遇到一個問題: ### Error updating database. Cause: java.sql.SQLException: sql injection violation, comment not allow 我

原创 spring boot排除掃描類的三種方式

最近在做單測的時候,由於自己配置的spring boot容器會默認掃描很多不想被加載,網上中文的文章並不多,所以來總結一下。 默認下面描述的類都在一個包下面。 第一步我們新建一個應用啓動的類,一個類用來充當Configurat

原创 關於閱讀源碼的總結

爲什麼開始閱讀 其實源碼平時也有在看,但是時間比較碎片化,剛好最近需要做內部技術分享在調研技術棧,爲了避免枯燥無味,想更貼合平日的項目,spring與jdk基本也沒太多新意並且自以爲自己沒太自信能夠講清楚,另一方面數據庫一般又是整

原创 MySQL常見優化手段

索引相關: 索引基數表示不同數值的個數,除以全錶行的數量可以代表散列程度,約大掃描的定位的效率越高。 索引失效的原因 運算±*/ ! <> %. 模糊查詢like開頭“%, where.中類型錯誤 函數的話需要建立函數索引,my

原创 MySQL8使用的幾個問題

Mysql8的密碼設置方式有些改變。 安裝後通過: 啓動 sudo /usr/local/mysql/support-files/mysql.server start 關閉 sudo /usr/local/mysql/suppor

原创 常見SQL優化手段

慢SQL優化手段總結 MySQL支持配置指定記錄慢查的信息。 SHOW VARIABLES LIKE 'slow%’可以去顯示DB當前慢查的配置。 slow_launch_time表示建立線程花費超過這個閥值,slow_lau

原创 spring boot集成測試容器重啓問題

背景 spring boot test的項目中常用的測試框架, 最近在寫集成測試的時候發現一個比較奇怪的問題,當我在運行多個測試用例的時候會偶爾重新啓動整個容器上下文,由於後期業務逐漸複雜,大量的測試用例需要運行,這個問題直接導致

原创 日常命令自動化思路

經常需要查詢日誌的朋友,肯定都對重複的一堆登陸交互命令習以爲常,仔細想想其實這些是很影響效率的,作爲程序員同一件事幹三次以上就要自動化了,這些命令本質上不就是一堆linux命令的組合麼,爲什麼不用shell命令把它給自動化了 例如

原创 高併發庫存扣減優化

背景 庫存是電商中的一個核心概念,主要記錄商品的可售等數量信息,其既簡單又複雜,簡單是因爲它大多數時候就是提供一個商品是否可售的信息,下單扣庫存,退款或則入庫加庫存就行了,因此從業務的角度上的確不算複雜。爲什麼複雜?因爲在分佈式高

原创 modelmapper屬性匹配問題分析

最近遇到一個工具類的問題比較容易出錯,問題比較詭異,因爲是通用的工具類,因此還是要搞清楚根本原因,避免誤用。 由於領域模型之間的轉換手寫getter setter代碼會很冗餘並且容易出錯,然而複製對象屬性值是高頻操作,因此各種庫有

原创 使用arthas排查線上問題

背景 arthas是阿里開源的Java排查工具。使用JVMTI等技術實現對JVM底層的一些監控,例如idea的DEBUG技術就是依賴這個,所以這是JVM的一個“後門”。 問題 線上出現問題,很多時候由於日誌的缺失,或則是監

原创 excel解析成java實體

問題 由於業務的迭代和各種數據訂正等等場景。excel解析的場景越來越多,但是現成的工具類其實還是不夠自動化,我們需要一個只關注解析對象的工具,其他的東西儘量做到封裝。 可以把excel表格看成RDB的表一樣,一行就代表一條記