原创 一次MySQL死鎖問題

原因 更新用戶數據的同時,又根據時間刪除其他數據 解決方法 刪除數據的時候根據用戶id進行區分

原创 Json序列化相關Bug

0x01 JSON序列化字符串導致的post錯誤 原因 由於公司提供的HttpUtils工具對參數進行判斷,如果是json參數則自行序列化,當我將對象序列化成字符串傳入並且再次被JSONObject再次toJSONString之後導致

原创 SpringMVC全局異常

0x01 Servlet默認全局異常 SpringMVC默認沒有配置任何異常處理,採用web.xml配置,將異常重定向到/error,然後新建一個Controller處理/error的請求即可 <error-page> <excep

原创 如何搭建SpringMVC項目

0x01 配置web.xml 配置ContextLoaderListener <context-param> <param-name>contextConfigLocation</param-name> <param-val

原创 Spring學習系列之ORM集成思路

0x01 Spring的ORM集成思路 通過模板方法模式進行集成,防止資源散落造成的內存泄露,在模板方法如execute中進行資源獲取並關閉,異常捕獲,事務管理。 關注點1:獲取資源 獲取ConnectionFactory JDB

原创 Spring學習系列之JdbcTemplate

0x01 爲什麼會有JdbcTemplate 原因一:代碼重複性 JDBC編程需要我們獲取數據庫連接,然後進行增刪改查,最後關閉一些資源,然後還要捕獲異常。那麼這些代碼都是重複的,我們可以通過模板方法模式去簡化這些代碼 原因二:異常體

原创 Java內存模型系列(三)jvm如何實現內存模型

0x01 volatile關鍵字 作用一:保證變量可見性 volatile關鍵字修飾變量,保證此變量的寫操作對所有線程的都是立即可見的。但是基於volatile的運算操作不是立即可見的(非線程安全) 特殊:以下兩種場景需要要保證其操作

原创 Java內存模型系列(二)原子性、可見性、有序性

0x01 線程通信規則 jvm採用了共享內存的方式進行線程通信。即線程都擁有自己的工作內存空間,規定每次都要從主內存讀取數據,在自己的工作內存中進行操作,然後回寫到主內存。因爲這樣的通信方式,如果多個線程在交錯運行,就容易造成共享變量

原创 Java內存模型系列(二)原子性

0x01 前置知識 什麼是原子性 原子性就是該操作不能再被分割,如果能被分割,那麼就可能造成線程不安全。 爲什麼有原子性會造成線程不安全問題:因爲Java內存模型採用共享內存的方式,所以變量值的變更會造成線程之間的數據不一致 什麼是共

原创 Java內存模型系列(一)概述

前言 Java內存模型完全可以參考Java內存結構,兩者都是一種規範。爲了幫助虛擬機實現某種功能,後者是爲了幫助更好的垃圾回收,而前者則是爲了幫助程序員屏蔽一些底層的如操作系統和內存訪問的差異。就是爲了簡化多線程在Java中的編寫。j

原创 new關鍵字發生了什麼系列補充(Tomcat類加載機制)

前言 理解Tomcat的類加載機制有助於我們更好的理解容器是如何加載我們的web應用 0x01 類加載機制幫助容器解決了什麼問題 問題1:部署在同一個服務器上的兩個Web應用程序所使用的Java類庫可以實現相互隔離 問題2:部署在同一

原创 new關鍵字發生了什麼系列(三)垃圾回收

前言 對象分配之後,那麼在對象不再被需要的時候就需要被回收了 0x01 垃圾判斷 引用計數法:每次引用,都對對象實例的引用計數+1,如果取消引用則-1,爲0則是垃圾。但是存在循環引用的bug 可達性分析:gc roots分析,就是如果

原创 記一次java緩存錯誤

業務需求 簡單的一次活動闖關任務,我將關卡配置存放在List,然後每次一些關於關卡的操作都會讀取配置。 錯誤出現 每次通過某些操作後,該人物相關的關卡進度都出現了錯誤,比如第1關通過了3次,發現第2關也通過了3次(而且僅在第1關和第3

原创 new關鍵字發生了什麼系列補充(Java內存結構與垃圾回收簡單問答)

前言 學習了之前的一些知識之後,爲了給自己學習之前的問題做簡單的解答 0x01 如何判斷垃圾 首先通過可達性分析算法分析(沒有gc roots),然後在jvm中進行標記,finalize方法中可以取消標記(重新獲取gc roots)。

原创 new關鍵字發生了什麼系列補充(HotSpot如何實現垃圾收集)

前言 這篇文章是爲了補充系列(三)中的垃圾收集算法在HotSpot中是實現 枚舉根節點 枚舉根節點就是根據可達性分析從gc roots中分析垃圾,但是gc roots節點有很多(常量、靜態屬性、棧幀中的本地變量表),如果逐個檢查會很消