原创 Java多線程通俗演義系列(一)

此係列用來記錄自己學習Java多線程的歷程,有不對之處,請各位大佬多多指正。 同步:你去超時買東西,先買電腦,再買鼠標,最後買鍵盤,最後回家寫代碼 異步:網購電腦、鼠標、鍵盤,買家還送你一個鼠標墊,你在家等着的同時還自己看了會《Java從

原创 mybatis批量插入數據報錯

報錯如下圖: 原因:mybatis版本過低,而useGeneratedKeys的值又設定爲true 解決方案:mybatis版本升級,由3.3.0升爲3.3.1

原创 關於ThreadLocal容易造成內存泄露的處理方案

ThreadLocal這個類提供線程局部變量,這些變量與其他正常的變量不同之處在於每一個訪問該變量的線程在其內部都有一個獨立的初始化的變量副本。  ThreadLocal發生內存泄漏的原因:在ThreadLocal的get,set的時候會

原创 mybatis版本的差異導致懶加載失敗---mybatis踩過的坑

MyBatis的全局配置中,有一個aggressiveLazyLoading參數,如果這個參數的值爲ture,會使帶有延遲加載屬性的對象完整加載,如果爲false,則會按需加載,這個參數默認值3.4.5版本以前,默認值爲ture,之後的默

原创 遞歸查詢語句

select 查詢內容, level from table t start with 條件 connect by 條件 order by level desc;

原创 mybatis中某個字段沒有setter方法---mybatis踩過的坑

需求:根據id查詢某個用戶及其角色信息 方案:關聯用戶表和角色表,但是通常情況下,不會隨便更改用戶表結構,而是採用創建子類,再添加額外的用戶角色關係 問題:Cause: org.apache.ibatis.reflection.Refle

原创 Java多線程通俗演義系列(二)

根據控制併發的策略,我們可以把併發的級別分爲阻塞、無飢餓、無障礙、無鎖、無等待 阻塞:天下都是俺的,俺的,俺的。(臨界資源獨佔) 無飢餓:皇位長子來繼承,長子不合格了,次子繼承,次子不合格了,老幺繼承,不爭不搶,按順序來。(公平鎖) 無障

原创 MySQL超過8小時連接不上的處理方案

原因:MySQL 的連接空閒時間超過8小時後,MySQL 就會斷開該連接,而 c3p0 連接池則以爲該被斷開的連接依然有效。 方案: 1、 增大 MySQL 的 wait_timeout 屬性的值。 2、減少連接池內連接的生存週期,使之小

原创 關於mybatis一級、二級緩存的快速記憶

一級緩存,sqlsession級別,默認開啓,數據庫會話結束,它就自然消亡,即,sqlsession.close(),會釋放掉一級緩存PerpetualCache對象,一級緩存將不可用。 另外,調用了clearCache(),會清空Per

原创 JVM-類的四種載入方式

1.使用Class靜態方法Class.forName 2.使用ClassLoader 3. 使用類.class方式 4. 使用對象的getClass方法   Class.forName()和ClassLoader.loadClas

原创 Java多線程通俗演義(三)---Java內存模型

JMM(java內存模型)關鍵詞:原子性、可見性、有序性 原子性:要麼不做,要麼做到最好(要麼全部執行,要麼全部回滾到最初) 方案:鎖機制、無鎖CAS機制 原因:多線程操作同時操作同一資源,無法保證原子性 可見性:兩個人面試一個崗位,你幹

原创 大批量重複提交的解決方案

冪等概念:任意多次執行所產生的影響均與一次執行的影響相同。即,對數據庫的影響只能是一次性的。 應用場景:同一時刻大量的重複的請求提交,需過濾掉重複請求,避免對業務數據的影響。 思路:token機制 實現工具:SpringBoot+Redi

原创 WITH AS短語

使用WITH AS短語,可以使SQL語句的可讀性更高,也可以在UNION ALL的不同部分,作爲提供數據的部分。 對於UNION ALL,使用WITH AS定義了一個UNION ALL語句,當該片斷被調用2次以上,優化器會自動將該WITH

原创 常見SQL關聯查詢

1. inner join 內連接查詢 SELECT a.*,b.* FROM table_a a INNER JOIN table_b b ON a.id=b.id; 2. left join 左關聯查詢 SELECT a.*,b.

原创 bean名字重複導致的報錯

spring.main.allow-bean-definition-overriding=true 它可以重寫bean名稱重複的bean。