原创 什麼是雙親委派機制

當某個類加載器需要加載某個.class文件時,它首先把這個任務委託給他的上級類加載器,遞歸這個操作,如果上級的類加載器沒有加載,自己纔會去加載這個類。 類加載器的類別 BootstrapClassLoader(啓動類加載器) c++編寫,

原创 springMVC請求流程詳解

SpringMVC 的工作流程 【1】用戶發送請求至前端控制器 DispatcherServlet; 【2】DispatcherServlet 收到請求調用 HandlerMapping 處理器映射器; 【3】處理器映射器找到具體的處理

原创 Class.forName()和ClassLoader.loadClass()的區別

java類裝載過程 分爲3步:     類加載器實例化時進行的操作步驟 所有的 Java虛擬機實例必須在每個類或接口被 Java程序“首次主動使用”時才初始化它們。    1:加載     Jvm把class文件字節碼加載到內存中,並將這

原创 設計模式---七大原則

設計模式的目的是爲了讓程序,具有更好的代碼重用性、可讀性(編程規範性,便於後期維護和理解)、可擴展性(當需要增加新需求時,非常方便)、可靠性(增加新功能後,對原功能麼有影響)、使程序呈現高內聚,低耦合的特性。設計模式包含了面向對象的精髓,

原创 設計模式---工廠模式

工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種類型的設計模式屬於創建型模式,它提供了一種創建對象的最佳方式。在工廠模式中,我們在創建對象時不會對客戶端暴露創建邏輯,並且是通過使用一個共同的接口來指向

原创 單例模式的五種寫法

單例模式 單例模式有八種方式: 1) 餓漢式(靜態常量) 2) 餓漢式(靜態代碼塊) 3) 懶漢式(線程不安全) 4) 懶漢式(線程安全,同步方法) 5) 懶漢式(線程安全,同步代碼塊) 6) 雙重檢查 7) 靜態內部類 8) 枚

原创 一步一步搭建springCloud

一、spring cloud簡介 Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發便利性巧妙地簡化了分佈式系統基礎設施的開發,如服務發現註冊、配置中心、消息總線、負載均衡、斷路器、數據監控等,都可以用Sp

原创 Java線程池詳解

線程池的原理;線程池它裏面的主要參數有哪些; public ThreadPoolExecutor(int corePoolSize, //核心線程的數量 int maximumP

原创 HashMap與ConcurrentHashMap 詳解

說一下你對HashMap的理解;他的底層結構是什麼樣的; jdk7之前底層使用的是數組+鏈表的形式,1.8之後改成了數據加鏈表加紅黑二叉樹,提高查詢性能, 一個數據是怎麼存到,map裏面的; 1.首先創建hashmap,默認大小是16,負

原创 redis相關原理及面試官由淺到深必問問題

redis是什麼語言開發的; Redis採用的是基於內存的採用的是單進程單線程模型的 KV 數據庫,由C語言編寫。 redis底層的實現原理有去研究過嗎;爲什麼redis的性能能達到這麼快呢; 官方提供的數據是可以達到100000+的QP

原创 反射中Class.forName()和ClassLoader.loadClass()的區別

java類裝載過程分爲3步:         1:加載     Jvm把class文件字節碼加載到內存中,並將這些靜態數據裝換成運行時數據區中方法區的類型數據,在運行時數據區堆中生成一個代表這個類   的java.lang.Class對象

原创 JVM內存結構和GC垃圾回收算法

一、JVM體系結構概覽  Java8以後的JVM    GC的作用域 二、常見的垃圾回收算法 (1)引用計數算法(Reference-Counting) (JVM的實現一般不採用這種方式)        引用計數算法缺點:      

原创 Java面試---SQL語句題

一、行轉列問題 現有表格A,按照以下格式排列; 姓名 收入類型 收入金額 Tom 年獎金 5w Tom 月工資 10k Jack 年獎金 8w Jack 月工資 12k 先需要將表格轉化爲: 姓名 月工資 年獎金 Tom 10k 50k

原创 四種創建多線程的方式

1.四種創建多線程的方式 第一種:繼承Thread類 第二種:實現Runnable接口 第三種:Callable接口 第四種:線程池 call()方法比run()方法更加強大 1.call()方法可以有返回值 2.call()方法可以聲

原创 CAS底層原理及缺點

CAS是Comple And Swap的縮寫(比較並交換) Demo: public class CASDemo { public static void main(String[] args) { Atom