原创 簡單介紹AQS、ReetrantLock、CountDownLatch、CyclicBarrier、Semaphore

AQS,既AbstractQueuedSynchronizer, 是JUC包實現同步的基礎工具,是一個抽象類。 在AQS中,定義了一個volatile int state變量作爲共享資源,並且內置自旋鎖實現的同步隊列,封裝入隊和出

原创 Spring容器初始化和解決循環依賴問題的分析

1. Spring IOC容器初始化過程: 2. bean的生命週期 Bean 容器找到配置文件中 Spring Bean 的定義。(beanDefintion) Bean 容器利用 Java Reflection API 創

原创 項目集成swagger啓動報錯 Error creating bean with name webMvcRequestHandlerProvider

最近項目集成了swagger以後啓動一直報錯 org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with n

原创 懶人如何用爬蟲批量把CSDN的博客導出成markdown文件

最近博主搞了一個博客網站,但是遇到一個頭疼的事情,就是要把以前寫在csdn上的博客批量導出成markdown文件,但是csdn上只支持單個導出,而且我的博客網站是用jekyll搭的,還需要在每個md裏面另外加一些配置信息,要是得一

原创 PageHelper中遇到的ThreadLocal小坑

最近寫代碼剛好碰到ThreadLocal的小坑,順便學習了一波ThreadLocal,拿出來分享一下 ThreadLocal什麼時候會出現線程不安全的情況呢? 我總結了兩種情況 1.記錄在 ThreadLocal 中的是一個線程共

原创 消息隊列小解

一.常用的一些消息隊列 1.rabbitmq erlang語言開發,時效性最高 2.rocketmq 吞吐量高,時效性高,但在大數據方面需要自己寫代碼支持 3.kafka 超高的吞吐量,消息較少時可能會有延遲(kafka是堆積一波

原创 某個表有近千萬數據,CRUD比較慢,如何優化?分庫分表了是怎麼做的?分表分庫了有什麼問題?有用到中間件麼?他們的原理知道麼?

數據千萬級別之多,佔用的存儲空間也比較大,可想而知它不會存儲在一塊連續的物理空間上,而是鏈式存儲在多個碎片的物理空間上。可能對於長字符串的比較,就用更多的時間查找與比較,這就導致用更多的時間。 可以做表拆分,減少單表字段數量,優化

原创 淺入淺出Netty(二) Netty

這一遍先簡單的講一些netty是如何實現nio的代碼的,後面會詳細講述netty原理 一、Netty是什麼 用一句簡單的話來說就是:Netty 封裝了 JDK 的 NIO,讓你用得更爽,你不用再寫一大堆複雜的代碼了。 用官方正式的

原创 淺入淺出Netty(三) Netty線程模型

實際上Netty線程模型就是Reactor模式的一個實現,而Reactor模式又是什麼呢? Reactor模型 Reactor模式是基於事件驅動開發的,核心組成部分包括Reactor和線程池,其中Reactor負責監聽和分配事件,

原创 淺入淺出Netty(一)BIO與NIO

傳統IO模型 在開始瞭解 Netty 是什麼之前,我們先來回顧一下,如果我們需要實現一個客戶端與服務端通信的程序,使用傳統的Socket通信,應該如何來實現? public class BIOServer { publi

原创 懶人如何批量把CSDN的博客導出成markdown文件

最近博主搞了一個博客網站,但是遇到一個頭疼的事情,就是要把以前寫在csdn上的博客批量導出成markdown文件,但是csdn上只支持單個導出,而且我的博客網站是用jekyll搭的,還需要在每個md裏面另外加一些配置信息,要是得一

原创 設計模式之單例模式

1.定義 單例模式是Java中比較常見的創建型設計模式,他的核心是確保一個類在任何情況下都絕對只有一個實例,並提供一個全局訪問點。 如何確保一個類在任何情況下都絕對只有一個實例?是單例模式設計的主要實現方向。下面介紹下單例模式的主

原创 設計模式之簡單工廠模式

1.定義 屬於類創建型模式。在簡單工廠模式中,可以根據參數的不同返回不同類的實例。簡單工廠模式專門定義一個類來負責創建其他類的實例,被創建的實例通常都具有共同的父類。 2.簡單工廠模式結構 簡單工廠模式包含如下角色: Fact

原创 使用消息隊列後引發的血案

我們公司有一個項目,用到了消息隊列,經常會遇到很多坑,難以排查,下面我詳細描述一下心路歷程。 首先介紹一下這個項目,簡單的講,有A,B兩個工程組成,A工程輪訓監聽數據庫,一旦有改動就推消息給B,然後B工程會接受到這條消息後處理自己

原创 Java併發編程(原子性、可見性、有序性、synchronized、CAS、volatile、ThreadLocal)筆記

自己網上總結了一些多線程併發的一些文章,如有錯誤請指教! 多線程的三大特性 一、原子性 原子是世界上的最小單位,具有不可分割性。比如 a=0;(a非long和double類型) 這個操作是不可分割的,那麼我們說這個操作時原子操作。