原创 Java虛擬機:Java堆

    對於大多數應用來說,Java堆(Java Heap)是Java虛擬機所管理的內存中最大的一塊。Java堆是被所有線程共享的一塊內存區域,在虛擬機啓動時創建。此內存區域的唯一目的就是存放對象實例,幾乎所有的對象實例都在這裏分配內存。

原创 B/S網絡架構概述(在瀏覽器中輸入一個URL會發生什麼)

B/S網絡架構概述 B/S網絡架構從前端到後端都得到了簡化,都基於統一的應用層協議HTTP來交互數據,與大多數傳統C/S互聯網應用程序採用的長連接的交互模式不同,HTTP採用無狀態的短連接的通信方式。通常情況下,一次請求就完成了一

原创 Java:HashMap(詳細講解)

HashMap 基本概念 Map有鍵和值的概念,一個鍵映射到一個值,Map按照鍵存儲和訪問值,鍵不能重複,即一個鍵只會存儲一份,給同一個鍵重複設值會覆蓋原來的值。使用Map可以方便地處理需要根據鍵訪問對象的場景。 Map接口定義

原创 Java:異常(細節版)

異常類體系 Throwable是所有異常的基類,它有兩個子類:Error和Exception。 Error表示系統錯誤或資源耗盡, 由Java系統自己使用,應用程序不應拋出和處理。比如圖中列出的虛擬機錯誤(VirtualMach

原创 TCP/IP:TCP/IP簡單整理

爲了瞭解HTTP,首先要簡單瞭解一下TCP/IP協議族。 通常使用的網絡(包括互聯網)是在TCP/IP協議族的基礎上運作的。而HTTP屬於它內部的一個子集。 TCP/IP協議族裏最重要的一點就是分層(一共4層): 1、應用層     應用

原创 Java:泛型(深入解析,一文讀懂)

基本概念和原理 爲什麼使用泛型: 在沒有使用泛型之前,一旦把一個對象“丟進”Java集合中,集合就會忘記對象的類型,把所有的對象當成Object類型處理。當程序從集合中取出對象後,就需要進行強制類型轉換,這種強制類型轉換不僅是代

原创 Java:DO、DTO、VO實戰運用

關於DO,DTO和VO在項目中的使用(不包括全部項目都這麼使用): DO:對應數據庫表結構 VO:一般用於前端展示用 DTO:用於數據傳遞(接口入參和接口返回值都可以) 以SSM框架爲例: Controller層: public Lis

原创 IntelliJ IDEA:從dao層Java代碼快速跳到mapper.xml文件定位的插件

最近看到公衆號推送了一個idea好用的插件,今天拿來試了一下,真的好用,推薦給大家。 2.使用方法:對dao層mybatis,按住control+alt+鼠標點擊 xxMapper.selectAll(),則跳轉到此mapper.xml

原创 Java:判斷增刪改查返回值問題

增加與更新:   比如增加或更新一個學生(Student),參數類型是Student,返回值是可有可無(void 或object類型)。 刪除:   比如刪除一個學生,參數類型是定義類型(Student)的屬性(sid 或sname),返

原创 Yonghong:Yonghong無法連接到mysql數據庫

用Yonghong連接數據庫時,發現了以下問題,這問題困擾了我好幾天,看下圖:   經排查是,MySQL8.0版本需要更換驅動爲“com.mysql.cj.jdbc.Driver”,之前的“com.mysql.jdbc.Driver”已

原创 框架:SpringBoot 之 SpringApplication源碼深度解析(上)

總算是懷着熱切的心情打開了spring boot的源碼,大四北京實習用過的框架,都是回憶呀。 啓動類,都是調用SpringApplication的run()方法,傳入的是加入@Configuration註解的類,跟參數: public

原创 Java:自增與自減運算符

運算符有兩種形式:                              ①:運算符放在操作數後面的“後綴”形式,例:n++。                              ②:還有一種“前綴”形式:++n。 後綴和前綴的

原创 Java堆

    對於大多數應用來說,Java堆(Java Heap)是Java虛擬機所管理的內存中最大的一塊。Java堆是被所有線程共享的一塊內存區域,在虛擬機啓動時創建。此內存區域的唯一目的就是存放對象實例,幾乎所有的對象實例都在這裏分配內存。

原创 框架:SpringBoot之SpringApplication源碼深度解析(下)

  我們回到SpringApplication的run方法繼續分析。 public ConfigurableApplicationContext run(String... args) { StopWatch stopWatch

原创 Linux:內核源碼解析 - CFS調度算法

進程調度,那麼先從進程描述符的數據結構開始: struct task_struct { volatile long state; /* -1 unrunnable, 0 runnable, >0 stopped */ void *s