原创 Synchronized與Lock

鎖類型: 可重入鎖:在對象中所有同步方法不用再次獲得鎖 可中斷鎖:在等待獲取鎖的過程中可以中斷當前線程 公平鎖:等待獲取鎖的時間長的優先獲取鎖,隊列效果 讀寫鎖:讀的時候可以多線程一起讀,寫的時候必須同步 //可重入鎖:在調用metho

原创 CAS單點登陸基本流程

流程圖步驟詳解1、瀏覽器請求服務資源,無session信息,返回302重定向CAS服務地址2、重定向請求CAS服務器,發送cookie信息請求認證,認證失敗返回登陸頁面3、提交用戶密碼到CAS服務器請求登陸,返回認證信息重定向CAS客戶端

原创 Java-Interview

https://github.com/crossoverJie/Java-Interview 本項目多數是一些Java基礎知識,底層原理,算法詳解。  

原创 Spring中BeanFactory跟FactoryBean的區別和聯繫

BeanFactory     BeanFactory是接口,用於管理Bean的一個工廠。BeanFactory是IOC容器的核心接口,它主要作用就是實例化、定位、配置應用程序中的對象及建立這些對象間的依賴。     BeanFactor

原创 SpringBoot指定內置tomcat版本

1、在pom文件中配置tomcat版本<properties>    <tomcat.version>8.0.42</tomcat.version></properties>2、指定tomcat版本,啓動項目有時候會報異常,這是因爲tom

原创 Java併發Semaphore、CountDownLatch、CyclicBarrier

Semaphore    semaphore又稱信號量,在併發編程中,通過許可證控制線程併發數new Semaphore(N,isFair) ; n是同時運行線程數,fair是否公平,默認false;公平:在獲取許可時首先查看等待隊列中是

原创 Java內存泄露和溢出

基本概念 內存泄露:程序中動態分配內存給臨時對象,但是對象不會被GC所回收,它始終佔用內存。從而引發內存溢出 內存溢出:程序運行過程中無法申請到足夠的內存而導致的一種錯誤。 內存泄露是導致內存溢出的一種誘因,但不是唯一的因素。 Jav

原创 ReentrantReadWriteLock讀寫鎖

       ReentranReadWriteLock讀寫鎖,內部維護了二個鎖,一個用於讀操作支持多線程併發執行,一個用於寫操作只能單線程執行。在多線程的場景下,如果對資源加了寫鎖,其它線程無法再獲取寫鎖和讀鎖;如果對資源加了讀鎖,其它

原创 java線程池ExecutorService

線程池的作用:1、減少了創建和銷燬線程的次數,每個工作線程都可以被重複利用,可執行多個任務;2、可以根據系統的承受能力,調整線程池的數量,防止消耗過多的內存;Java通過ExecutorService提供了四種線程池:1、Executor

原创 Spring Bean介紹

Spring Bean的作用域:1、singleton 單例(默認),這裏的單例跟設計模式裏面的單例模式不一樣,由容器來保證這種類型的bean只存在一個共享實例。2、prototy 原型,每次使用時產生一個新的實例3、request 對每

原创 Spring容器啓動過程

Spring容器的啓動方式有兩種:1、提供ApplicationContext自己創建Spring容器    通過ClassPathApplicationContext初始化容器,加載spring.xml配置文件,然後解析配置文件,初始化

原创 Dubbo簡介

Dubbo背景和簡介        Dubbo是一個分佈式服務框架,致力於提供高性能和透明化的RPC遠程服務調用方案,以及SOA服務治理方案。簡單的說,dubbo就是個服務框架,就是個遠程服務調用的分佈式框架,以服務者與消費者的方式

原创 jdk1.8之前版本------->HashMap簡述

以下是JDK1.8之前版本的源碼簡介 一、什麼是HashMap Hash:散列將一個任意的長度通過某種(hash函數算法)算法轉換成一個固定值。 Map:存儲的集合 HashMap是數組+鏈表的數據結構 總結:通過hash出來的值,然後

原创 Hadoop關於MapReduce

簡述 MapReduce是一種可用於數據處理的編程模型,用以進行大數據量的計算。Hadoop可以運行各種上語言版本的MapReduce程序。 MapReduce程序本質上是並行運行的,因此可以將大規模的數據分析任務分發給任何一個擁有足夠多