原创 springMVC處理一個請求的過程-源碼詳解

文章目錄1.springMVC如何尋找對應的controller?2.將method封裝到map中2.適配器處理3.處理Handler的參數4.參數處理細節總結: 貼上我們用來測試的代碼: 很簡單,就是一個註解的controll

原创 Spring-bean的生命週期,註解版

由於本人能力有限不能深入源碼講解,這裏知識粗略的介紹一下bean的生命週期,先看一下圖: 用簡單的話來說就是: 第一步:通過構造器創建bean實例,默認是無參構造器 第二步:設置bean的屬性值和引入其他的bean(sp

原创 整理了一篇關於java集合的文章,有圖有真相

文章目錄1.概述2.集合框架圖2.1 Collection系2.2 Map系3.Collection接口4.Foreach與迭代器4.1迭代器執行原理4.2使用for循環還是迭代器Iterator對比5.List5.1 List概

原创 ConcurrentHashMap和HashMap,HashTable的區別

文章目錄1.爲什麼要使用ConcurrentHashMap2.HashMap 和 ConcurrentHashMap 的區別3.ConcurrentHashMap 和 Hashtable 的區別4.ConcurrentHashMa

原创 整理Java基礎知識遇到的問題

文章目錄1.jdk1.5之後的三大版本2.JVM、JRE和JDK的關係3.java的跨平臺性4.關於java的平臺無關性5.java爲什麼要有字節碼文件 1.jdk1.5之後的三大版本 Java SE(J2SE,Java 2

原创 Mysql-Explain用法詳解

文章目錄1.Explain能幹嘛2.Explain包含的表頭信息3.Explain-id(表的讀取順序)3.1 id相同3.2 id不同3.3 id相同又不同4. Explain-Select_type(數據讀取操作的操作類型)5

原创 爲什麼學習Spring,什麼是Spring,什麼是IOC,什麼是DI,什麼是容器

文章目錄1.前言2.什麼是IOC3.什麼是DI4.IOC和DI的關係5.什麼是容器6.附錄程序耦合:控制反轉(Inversion of Control簡寫爲IoC)Spring的體系結構: 1.前言 第一次接觸spring框架時,

原创 order by是否會產生文件類排序

建表SQL: 案例 case1: case2: 通過這兩個案例,我們發現只要order by滿足最佳左前綴法則,就可以使用到索引 總結:

原创 索引優化,如何避免索引失效

索引失效的前提是建立索引,並且在一定情況下索引失效不起作用了,下面列出的就是避免索引失效的十種情況 這裏說一下全值匹配和最佳左前綴法則: 全值匹配的意思是查找的字段順序和個數與索引的列的個數和順序一致 我們發現只要索引中第一

原创 怎麼理解內存溢出和內存泄漏

內存溢出(OOM) 內存溢出是引發程序崩潰的罪魁禍首之一,當應用程序內存增長速度非常快,造成的垃圾速度已經跟不上內存消耗的速度,容易出現內存溢出問題,大多數情況下,GC會進行各種年齡段的垃圾回收,實在不行了就觸發Full GC,這

原创 mybatis源碼解析-獲取Sqlsession

上篇文章講了mybatis是怎麼創建SqlSessionFactory的:mybatis源碼解析-SqlsessionFactory,簡單來說就是通過構造模式讀取xml配置文件封裝到Configuration對象中,返回一個默認的

原创 mybatis源碼解析-getMapper

之前兩篇文章: mybatis源碼解析-SqlsessionFactory mybatis源碼解析-獲取Sqlsession 介紹了在mybatis運行中的前兩步的執行過程和原理,繼續擺出我們的demo: //1.通過輸入流解析x

原创 mybatis源碼解析-如何執行查詢操作

//1.通過輸入流解析xml配置文件 InputStream inputstream = Resources.getResourceAsStream("xxx.xml") SqlsessionFactory sqlsessionf

原创 垃圾回收的併發和並行

與多線程同理,並行和併發在垃圾收集器可以做出如下解釋: 並行(Parallel) 指多條垃圾收集線程並行工作,多個CPU同時執行垃圾回收,此時用戶線程仍處於等待狀態,此工作方式的垃圾收集器有:ParNew,Parallel,Sca

原创 mybatis源碼解析-SqlsessionFactory

我們通過hello world來調試mybatis源碼,先寫一段僞代碼: //1.通過輸入流解析xml配置文件 InputStream inputstream = Resources.getResourceAsStream("xx