原创 JVM學習(二)——虛擬機在Java堆創建對象的全過程

對象的創建 1.類加載檢查 虛擬機遇到一條 new 指令時,首先將去檢查這個指令的參數是否能在常量池中定位到這個類的符號引用,並且檢查這個符號引用代表的類是否已被加載過、解析和初始化過。如果沒有,那必須先執行相應的類加載過程。

原创 JVM學習(四)——JVM垃圾回收——垃圾收集算法,垃圾收集器

垃圾收集算法 1、標記-清除算法 該算法分爲“標記”和“清除”階段:首先標記出所有需要回收的對象,在標記完成後統一回收所有被標記的對象。 2、複製算法 將內存分爲大小相同的兩塊,每次使用其中的一塊。當這一塊的內存使用完後,就將還

原创 Redis總結(四)——主從,哨兵配置

一、Redis高可用 哨兵(Sentinel):可以管理多個Redis服務器,它提供了監控,提醒以及自動的故障轉移的功能。 複製(Replication):則是負責讓一個Redis服務器可以配備多個備份的服務器。 Redis正是利

原创 網絡協議總結(一)——TCP三次握手和四次揮手

TCP和UDP協議 UDP:在傳送數據前不需要先建立連接,遠地的主機在收到UDP報文後也不需要給出任何確認。雖然UDP不提供可靠交付,但是正是因爲這樣,省去和很多的開銷,使得它的速度比較快,比如一些對實時性要求較高的服務,就常常使

原创 MySQL總結(五)——MySQL表優化

表優化 當MySQL單表記錄數過大時,數據庫的CRUD性能會明顯下降,一些常見的優化措施如下: 限定數據的範圍 務必禁止不帶任何限制數據範圍條件的查詢語句。比如:我們當用戶在查詢訂單歷史的時候,我們可以控制在一個月的範圍內; 讀

原创 Nginx總結(二)——配置負載均衡和反向代理

nginx配置文件主要分爲六個區域: main(全局設置) events(nginx工作模式) http(http設置) sever(主機設置) location(URL匹配) upstream(負載均衡服務器設置) 有興趣的

原创 《一步到位》——完全理解Java泛型

一、什麼是泛型? 泛型,即“參數化類型”,意思爲將參數類型由原來的具體的類型,也設置成參數,即參數化(通常設置爲T)。 把類型明確的工作推遲到創建對象或調用方法的時候纔去明確的特殊的類型 Java泛型設計原則:只要在編譯時期沒有

原创 MySQL補充(一)——MySQL查詢不走索引的情況

一個簡單的表 CREATE TABLE `t_user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `username` varchar(255) DEFAULT NULL,

原创 Nginx總結(一)——安裝、常用命令

linux系統下 所有的配置文件都在/etc/nginx下,並且每個虛擬主機已經安排在了/etc/nginx/sites-available下 程序文件在/usr/sbin/nginx 日誌放在了/var/log/nginx中

原创 JVM學習(一)——Java內存區域及詳解

運行時數據區域 Java 虛擬機在執行 Java 程序的過程中會把它管理的內存劃分成若干個不同的數據區域。 JDK 1.8 之前: JDK 1.8 : 線程私有的: 程序計數器 虛擬機棧 本地方法棧 線程共享的: 堆 方

原创 JVM學習(三)——JVM垃圾回收——堆內存

一、JVM垃圾回收簡介 Java 的自動內存管理主要是針對對象內存的回收和對象內存的分配。同時,Java 自動內存管理最核心的功能是 堆 內存中對象的分配與回收。 Java 堆是垃圾收集器管理的主要區域,因此也被稱作GC 堆(G

原创 網絡協議總結(三)——常見HTTP狀態碼及說明

2xx:請求成功 表示成功處理了請求的狀態代碼。 狀態碼 標誌 說明 200 成功 服務器已成功處理了請求。 通常,這表示服務器提供了請求的網頁。 201 已創建 請求成功並且服務器創建了新的資源。 202

原创 消息隊列——Kafka學習

點對點消息傳遞模式 生產者發送一條消息到queue,只有一個消費者能收到。 發佈-訂閱消息傳遞模式 發佈者發送到topic的消息,只有訂閱了topic的訂閱者纔會收到消息。 一、Kafka中核心概念 (1)Broker(代理) 是

原创 Java底層深層理解

深入分析Synchronized原理 jvm運行機制和volatile關鍵字詳解 將java文件編譯成字節碼文件,再到反編譯,字節碼指令剖析 從Java文件到字節碼文件 大白話說Java反射:入門、使用、原理