原创 刪除表提示:外鍵關聯錯誤解決

1.有兩張表CustomerAttribute,CustomerAttributeText CustomerAttribute結構:GUID(主鍵),Name,DataType,Code. CustomerAttributeText結構:

原创 JDK1.8-ReenrantLock 加鎖過程

  ReenrantLock 加鎖過程流程圖以及AQS隊列入隊情況 2.公平鎖與非公平鎖區別 非公平鎖: 當鎖釋放的時候,獲取鎖的線程會和隊列中第一個線程競爭鎖資源,但是已經在隊列中的線程還是按照先進先出的順序去獲取鎖。 公平鎖: 當鎖釋

原创 創建Entity,由於級聯關係導致顯示的時候會有n層嵌套問題

1.問題現象 CustomerAttribute和CustomerAttributeText表,是1對N的關係,在保存CustomerAttribute的時候,把保存的結果返回給前臺,會出現n層嵌套的問題。 2.原因: 級聯導致 3.解決

原创 JDK1.8-ReentrantLock.lockInterruptibly流程分析

1.ReentrantLock.lockInterruptibly流程圖 2. 注意該方法說明ReentrantLock是可中斷鎖,被中斷後可以調用某個線程的是否中斷方法(t1.isInterrupted)來確認該線程是否被中斷。 3.

原创 生成Excel,處理CSV Injection

1.問題原因:我們在界面填寫好數據之後並生成excel,如果數據中是以"=+-@"開頭,那麼在我們Excel裏面顯示的時候會出現CSV Injection問題。 2.如何解決: 2.1解決思路:首先生成Excel的workbook,之後再

原创 JDK1.8-ReentrantLock解鎖過程

ReentrantLock解鎖流程圖 實例代碼 package com.sap.leo.test; import com.sun.xml.internal.bind.v2.model.annotation.RuntimeAnnota

原创 JDK1.8-HashMap get/remove 操作流程解析

1. get(Object key) 注意:如果Node數組不空的話,它每次都會去取數組第一個元素,看該元素的key以及key生成的hashCode值是否和傳過去的Object key以及key生成的hash值是否分別對應相等,如果是的

原创 volatile關鍵字理解

1.JMM層面  每個線程從主內存中讀取數據,讀入自己的本地工作內存進行相應的修改,每個線程的本地工作內存相互獨立的。因此這就可能造成一個線程讀取內存的數據進行的相應的修改,但是沒有及時的寫入內存,造成其他線程讀取到過時的數據,因此有數

原创 Java關鍵字-synchronized理解

1.作用及版本 多線程環境下用來控制資源同步訪問的,同步控制的代碼塊是原子操作。 JDK1.6以前的synchronized是一把重量級鎖,監視器鎖(monitor),當一個線程獲取到鎖之後,其他線程想要獲取鎖就必須等待,也就是其他線程

原创 JDK1.8-HashMap-Put操作源碼流程解析

1.Put 操作流程圖 2.當put操作發生hash衝突的時候,會用拉鍊法解決衝突。但是如果在同一內存地址衝突的數據超過8個時,並且這個時候Node數組的容量大於 等於64,那麼這個時候再在該位置添加元素會把單鏈表變成雙向鏈表最後再轉換

原创 JDK1.8-ArrayList-add/get/remove 源碼流程解析

1.add(E e) 2.get(int index)  3.remove(Object o)  4.安全性:ArrayList由於沒有加同步和任何的鎖機制,因此不是線程安全的。可能出現數組越界或者髒讀等問題。想要線程安全可以使用V

原创 ThreadLocal理解

1.ThreadLocal的類層級結構 2.ThreadLocal作用 ThreadLocal修飾的變量:使得每個線程都擁有該變量的本地副本。(你有你的,我有我的,你修改你的並不會影響我的變量的值) 3.ThreadLocal使用場景

原创 ThreadPoolExecutor-線程池的理解

1.再說線程池之前先了解下線程、用戶級線程、內核級線程概念 線程可以通過繼承Thread,實現Runnable接口以及實現Callable接口來創建線程,它是比進程更小執行單位。 線程的生命週期和狀態  用戶級線程: 用戶線程指不需要

原创 Java-僞代碼實現一把鎖

1.多線程情況下自己手動模擬實現一把鎖(僞代碼) Version1.0:自旋 volatile int status = 0; //是否有線程獲取到鎖,0表示沒有 //主業務流程 public static void testSy

原创 ReenrantLock 加鎖過程

  ReenrantLock 加鎖過程流程圖以及AQS隊列入隊情況 2.公平鎖與非公平鎖區別 非公平鎖: 當鎖釋放的時候,獲取鎖的線程會和隊列中第一個線程競爭鎖資源,但是已經在隊列中的線程還是按照先進先出的順序去獲取鎖。 公平鎖: 當鎖釋