原创 Redis實踐-存儲Java對象

Redis作爲目前主流的緩存數據庫,提供了豐富的數據結構,這次做的項目裏我們大量使用了Redis作爲數據緩存,甚至在某些場景下直接作爲了數據庫使用(當然這是建立在公司內部基礎組件足夠可靠的前提下),由於項目是從零開始,在使用Red

原创 HashMap擴容流程

文章目錄爲什麼擴容?什麼時候擴容?如何擴容? 今天在和同時討論HashMap的時候,提到了擴容和衝哈希的事情,然後我發現大家都是一種半懂不懂的狀態。於是回去做了一番功課,寫下這篇文章。 HashMap的擴容,又被很多人叫rehas

原创 Log4j2配置以及滾動日誌文件

最近項目裏用到了Log4j2,在這裏咱們就不談Log4j2性能了,可以看一下官方給的測評圖,真香。 但是使用時因爲和Log4j配置上有很大區別,也踩了不少坑,這裏總結一下。 1.包依賴 使用Log4j2首先要引入Log4j2的包

原创 ajax傳輸Json的正確方式

1.jquery的方式 let data = { "name" : "xxx", "age" : 20 } $.ajax({ url: 'localhost:8080/api/xxxxx', dataType

原创 Java併發--Java中的CAS操作和實現原理

這幾天準備梳理一下Java多線程和併發的相關知識,主要是系統的梳理一下J.U.C包裏的一些東西,特別是以前看過很多遍的AQS和實現類,還有各種併發安全的集合類。最重要的就是這個CAS操作,可以說是整個J.U.C包的靈魂之處。 文章

原创 Tomcat日誌亂碼解決

Tomcat日誌亂碼全解決方案1.出現亂碼2.解決方案方案一、 直接修改Tomcat日誌輸出字符集方案二、 修改IDEA啓動VM參數字符集 1.出現亂碼 最近一直在用Springboot,很少再直接使用Tomcat啓動服務器,昨天

原创 Java多線程--1.啓動、休眠、優先級

僅作爲Java多線程的複習梳理筆記,如果有錯誤希望大家批評指出 1.使用Java多線程 繼承Thread類: public class MyThread extends Thread{ @Override

原创 編譯器重排序

在一些講Java併發編程的書中,經常會出現JMM內存模型、volatile關鍵字、重排序、亂序執行等字眼,導致了有些剛開始學習Java併發編程的小夥伴一臉懵逼:這都是啥啊? 文章目錄1. 什麼是編譯器重排序1.1 定義1.2 舉個

原创 僞共享--多線程性能的破壞者

文章目錄前言1.從CPU說起1.1 CPU緩存1.2 緩存行1.3 MESI協議2. 僞共享3. 解決方案4. 後記 前言 前幾天看到了僞共享這個概念,但是並沒有去做深入的瞭解,今天又看到了這個概念,纔想起來要好好研究一下僞共享究

原创 關於equals和hashCode,看這一篇真的就夠了

這幾天在嘗試手擼一個類似Lombok的註解式代碼生成工具,用過Lombok的小夥伴知道,Lombok可以通過註解自動幫我們生產equals()和hashCode()方法,因此我也想實現這個功能,但是隨着工作的深入,我發現其實自己對於e

原创 Quartz源碼分析(下)

上一篇文章中,我們分析了Quartz框架的Job和Trigger的源碼實現,上篇也說到,Quartz的核心代碼是Scheduler,在本篇中,我們會分析一下Scheduler的源碼實現。 文章目錄1、核心入口類:QuartzSche

原创 IDEA中Maven配置問題全解決

最近換了工作環境,以前的IDEA配置都沒了,記得上次配置自己的IDEA還是在兩年前?然後構建Maven項目時遇到了一些小插曲,記錄下解決方案(PS:新手教程向) 文章目錄1. idea中maven默認配置的坑2. 解決方法一:引入配置

原创 Quartz源碼分析(上)

文章目錄1.一個想法2.Quartz總體架構2.1 Job和JobDetail2.2 Trigger2.3 JobStore3.上篇小結 1.一個想法 最近項目中用到了Quartz框架,作爲定時任務的調度框架,無論是和Spring的完

原创 到北京好遠

我不知道應該怎麼表達現在的心情,是悲哀還是無奈。 兩小時前,我在某社交軟件上隨機匹配到一個女孩子,語音連麥,剛開始我沒有抱着任何想法,只是她說覺着我的聲音特別好聽,我就和她有一句沒一句的聊着,她讓我唱首歌,我尬唱了張國榮的《當愛已成往

原创 Java線程池源碼分析

文章目錄一.Java線程池原理分析二.Java線程池源碼分析1.接口繼承關係2.核心類ThreadPoolExecutor2.1 入口方法 execute -- 調度器2.2 添加線程方法 addWorker2.3 Worker 內部