原创 MySQL執行計劃分析工具EXPLAIN:分析一下你建立的索引真的起到作用了嗎?

在我們使用MySQL的過程中,隨着數據量越來越大,查詢顯得有些吃力,這時候就要針對查詢就行優化,針對查詢優化,通過給字段添加索引可以提高數據的讀取速度,提高項目的併發能力和抗壓能力。給數據庫中的表添加索引,來提高它的查詢速度,但是會有另外

原创 RabbitMQ管理:我們應該瞭解的命令行工具rabbitmqctl

消息中間件RabbitMQ提供了強大的消息隊列服務,在我們應用開發中起到了至關重要的作用,不但如此,從服務端的角度,RabbitMQ還提供了一些工具應用,對我們來管理RabbitMQ,提供了直觀的操作。 對於RabbitMQ提供的工具應

原创 RabbitMQ:消息一致性之持久化和消費者確認

       在應用開發中,持久化也是經常被提起的,持久化就是存在在內存當中的數據,要寫入到磁盤中,這樣在內存中的數據由於各種原因丟失掉後,可以通過磁盤重新加載到內存中來,對於消息中間件,持久化也至關重要。在生產者發佈消息到broker

原创 RabbitMQ:消息一致性之生產者確認

       對於消息中間件的使用,確保業務流程正確的進行下去的前提,就是要保證消息的一致性,也就是確保消息不回丟失。引入消息中間件的目的,無非就是異步、解耦和削峯,到達這樣的目的,系統之間傳遞的消息就負有不可推卸的責任,假如消息跑丟了

原创 消息隊列:從一個簡單示例來解釋RabbitMQ的相關概念

  在Java語言(或者其他語言)中,經典的生產者-消費者模式,催生了消息隊列這個中間件服務,常用的消息隊列有ActiveMQ、RabbitMQ、RocketMQ和Kafka等,Redis也有提供消息隊列的功能,不過很少用Redis當作消

原创 Git rebase命令的作用

  Git作爲分佈式的版本管理系統,對於代碼版本的管理至關重要,使用git需要了解三個區域:暫存空間、本地倉庫和遠程倉庫。使用git作爲版本控制,都是要在各自的分支上,在本地開發,每天需要把當天完成的任務提交到本地倉庫,需要版本迭代時需要

原创 MySQL數據庫中,同樣是刪除數據的命令,truncate與delete語句的區別

1、從概念上來講,它們是不同的,truncate是DDL語句,會隱式提交,所以,不能回滾,不會觸發觸發器。delete是DML語句,這個操作會被放到 rollback segment中,事務提交後才生效。如果有相應的觸發器,執行的時候將被

原创 從Integer與int的各種比較來看Integer的緩存機制及包裝類的拆箱裝箱

  首先來看下面一道程序,猜一猜它的運行結果? 設定了一系列Integer與int的值,然後做各種比較,其中設定127與128是有緣故的,往下看!運行結果是什麼?懶得猜咱們就直接運行,結果如下: 對於這種結果,咱們一一解釋: 1、首先

原创 Git常用的一些命令

1. git init (把當前目錄變成Git可以管理的倉庫) 2. git add file (把文件file添加到git的暫存區--stage) 3. git commit -m "備註" (把暫存區的文件提交到倉庫) 4. git

原创 HashMap初始容量爲什麼是2的n次冪及擴容爲什麼是2倍的形式

  接着上一篇博客,上一篇博客說明了HashMap的初始容量都是2的n次冪的形式存在的,而擴容也是2倍的原來的容量進行擴容,也就是擴容後的容量也是2的n次冪的形式存在的,下面就來說明一下爲什麼是2的n次冪的形式!   先來看一下源碼,也就

原创 HashMap的初始容量機制及擴容機制

  通常在我們的應用中,HashMap是用到最多的數據結構之一,在JDK1.8之前,它的底層結構是數組+鏈表,而在JDK1.8之後,爲了查詢效率的優化(主要是當哈希碰撞較多的時候),它的底層結構變成了數組+鏈表+紅黑樹。今天就來探討一下H

原创 MySQL建立的聯合索引,真的用到了嗎?

當我們需要提高MySQL的查詢性能的時候,一般想到的處理辦法就是建立索引,當有多個條件進行查詢的時候,需要建立聯合索引進行查詢,而聯合索引需要符合最左匹配原則,今天就來探討一下,你建立的聯合索引真的用到了嗎? 首先建立一個學生表: CR

原创 ThreadLocal的介紹及由其引發的內存泄露問題

一、ThreadLocal的定義 ThreadLocal,通常被我們翻譯爲線程本地變量,這是一個以ThreadLocal對象爲鍵、任意對象爲值的存儲結構。這個結構被附帶在線程上,也就是說一個線程可以根據一個ThreadLocal對象查詢到

原创 RMI:利用JDK中的Remote實現遠程方法調用

 Java RMI:即Java遠程方法調用,是針對Java語言的一種特殊RPC調用,一種用於實現遠程過程調用的應用程序編程接口。下面用一個簡單實例來說明Java RMI是怎樣開發的。 步驟一:編寫遠程服務接口,該接口必須繼承 java.r

原创 Java多線程中的等待/通知機制

  在Java語言中,任意的對象都有等待/通知的方法,因爲這些方法被定義在所有對象的超類java.lang.Object上,對應的方法就是wait()/notify(),具體解釋如下: wait():調用該方法的線程會進入WAITING狀