原创 kafka的下載與安裝

下載 首先去官網下載 http://kafka.apache.org/downloads 選擇最新的版本 下載完成後解壓 使用tar -zxvf kafka_2.12-2.3.1.tgz 命令解壓 然後進入kafka根目錄下可以

原创 spring data jpa簡介

spring data jpa 首先要介紹一下JPA,JPA就是Java Persistence API翻譯過來就是java持久化API,它是在sun提出的java持久化規範,這些接口都在javax.persistence包下。J

原创 編程式事務和聲明式事務淺析

事務管理 在spring中,事物管理一般分爲兩類,編程式事務管理和聲明式事務管理。 編程式事務管理,一般我們使用TransactionTemplate來實現。 聲明式事物管理本質上是spring AOP的實現,對目標方法進行攔截,

原创 synchronized和ReentrantLock淺析

線程安全 簡單的說,多個線程同時操作一個數據就有可能造成數據不一致,這就是線程不安全。 線程安全發生的前提: 1.在多線程環境中 2.存在共享數據 只要在這種情況下,多個線程同時修改一個共享數據就可能存在線程安全問題。 看一下de

原创 JVM總結思維導圖

原创 java的CAS機制

CAS是java中的一種樂觀鎖實現方式,它能在很多場景下保證線程安全的同時有着很好的性能。 先看一個例子 package cas; public class CASdemo { public static int count=

原创 java迭代器

在java中迭代器的使用是非常常見的,它可以讓我們在遍歷某種數據結構的序列時,無需關注它的底層結構。它類似於指針,可以遍歷整個數據結構序列。 在java中,我們最常使用Iterator接口來實現迭代器,它的源碼如下 public

原创 mysql數據庫學習之sql調優思路

mysql調優的大致思路 1.定位到執行慢的sql語句 首先執行 show VARIABLES LIKE '%quer%' 可以得到 第一個表示慢日誌是否開啓,默認關閉,第二表示慢日誌的文件的位置。 一般執行時間超過10秒的s

原创 mysql數據庫學習之鎖模塊

不同的引擎對鎖的支持也不相同,下面是常用的兩種引擎的鎖相關區別   首先用sql腳本導入100萬行的數據分別到兩種引擎對應的表中。 MyISAM MyISAM默認使用表級鎖,不支持行級鎖 讀鎖(又稱共享鎖) 當一個會話查詢 SEL

原创 mybatis-geneator自動生成代碼過程

當使用mybatis時,大量的實體類和映射文件如果手動書寫,很容易出錯。mybatis-geneator就爲我們提供了自動生成這些mapper和xml文件的方法。   導入依賴 首先需要在pom文件中進行依賴配置 <plugin>

原创 mysql數據庫學習之索引

數據庫爲什麼要使用索引? 首先說下全表掃描,存儲的最小單位是塊或頁,整個表就是多個塊或頁,我要進行查找操作就必須將所有的塊或頁加載進內存,然後一個一個的去查找,這樣效率低下。所以我們引入索引。 舉個例子,數據庫就是一個字典,全表查

原创 hashmap和ConcurrentHashMap詳解(對比1.8前後)

hashmap HashMap是一個用於存儲Key-Value鍵值對的集合,每一個鍵值對對象叫做Entry,這些鍵值對(entry)儲存在一個數組中。 對於hashmap,我們最常用的就是get和put方法,那麼這兩個方法具體做了

原创 JAVA線程池的使用

線程池 我們一般使用線程,需要的時候就去創建一個。但是當併發量變高的時候,頻繁的創建銷燬線程必然會有很大的內存資源開銷。所以我們使用了線程池。 首先介紹ThreadPoolExecutor類,它是線程池的核心 創建線程池的方法:

原创 redis學習總結

什麼是redis? Redis 是一個用c語言編寫的基於內存的高性能key-value數據庫。它是非關係性數據庫,能支持多種複雜的數據結構,因爲基於內存,所以有着高效的讀寫性能。 redis的下載地址: https://githu

原创 spring實戰學習(六)事務管理

什麼是事務? 在軟件領域,我們將一組要麼全部執行要麼全不執行的操作叫做事物。 事務的四個特性(ACID) 原子性(atomicity):原子性確保了事物中的操作像原子操作一樣要就全部執行或全不執行,如果有一個操作失敗,事務回滾。