原创 MySQL事務運行原理

一、事務的特性 原子性:指單個事務本身涉及到的數據庫操作,要麼全部成功,要麼全部失敗,不存在完成事務中一部分操作的可能; 隔離性:指多個事務之間,沒有相互影響干擾。 一致性:指事務執行前後的狀態要一致,沒有髒數據。 持久性:數據庫一旦完成

原创 Netty學習(六)

本章主要介紹Netty究竟是怎麼工作的 一、Netty的核心組件 先總體認識一下Netty用到的組件及它們在整個Netty架構中是怎麼協調工作的,具體有 Bootstrap or ServerBootstrap EventLoop Eve

原创 springmvc的工作流程(一)(源碼解讀)

首先,在瞭解springmvc的工作流程之前,我們需要了解servlet以及servlet容器。 一、servlet規範 servlet是一種規範,servlet容器,比如tomcat和resin等,對servlet規範做了實現,使其能夠

原创 Java中Xml文件和Bean互相轉換

JAXB(Java Architecture for XML Binding) 是一個業界的標準,可以根據XML Schema產生Java類的技術。該過程中,JAXB也提供了將XML實例文檔反向生成Java對象樹的方法,並能將Java對象

原创 Netty學習(二)

本章主要介紹ByteBuffer的功能和源碼分析 一、Java NIO自帶了byteBuffer Java NIO自大的ByteBuffer有缺點: 長度固定,一旦分配完成後,不能動態進行擴容和收縮 只有一個標識位置的指針position

原创 Nginx初探

本章會介紹Nginx的工作原理和簡單的配置,並做一個實際利用測試。 一、Nginx簡介 1. Nginx 概述 Nginx是一個免費、開源、高性能、輕量級的HTTP和反向代理服務器,也是一個電子郵件(IMAP/POP3)代理服務器。其特點

原创 Redis 做分佈式鎖的常見問題和解決方案

redis 做分佈式鎖的三個核心要素: 1、加鎖 最簡單的命令是setnx,key是鎖的唯一標識,按業務來決定命名,value爲當前線程的線程ID。當一個線程執行setnx返回1,說明key原本不存在,該線程成功得到了鎖,當其他線程執行s

原创 kafka的Rebalance問題分析

一、什麼是kafka的Rebalance   kafka集羣模式下,一個topic有多個partition,對於消費端,可以有多個consumer同時消費這些partition。爲了保證大體上partition和consumer的均衡性,

原创 分佈式協議算法——RAFT協議

一、RAFT協議  raft是一個共識算法(consensus algorithm),所謂共識,就是多個節點對某個事情達成一致的看法,即使是在部分節點故障、網絡延時、網絡分割的情況下。共識算法的實現一般是基於複製狀態機(Replicate

原创 Netty學習(一)

本章先將Java中IO類型和底層的實現方式。 一、Java IO Java IO即Java 輸入輸出系統。在Java IO中,流從概念上來說是一個連續的數據流,既可以從流中讀取數據,也可以往流中寫數據。IO相關的媒介包括: 文件 管道 網

原创 RocketMq源碼解讀(五)Consumer分析

一、Consumer的類圖結構 在RocketMq中,存在PullConsumer和PushConsumer兩種消費端, 類圖結構有:  可以看到,二者同實現了MQConsumer,只是在底層實現上有所不同。 PullConsumer的

原创 springmvc的工作流程(二)(源碼解讀)

上一章內容,講解到通過xml配置,或者通過WebApplicationInitializer啓動springmvc,但是到這裏,關於DispatcherServlet的啓動,還未完成。本章主要介紹DispatcherServlet的啓動。

原创 合併K個排序鏈表

有K個排序好的鏈表,現在對這些鏈表合併成一個排序好的鏈表。解題思路: 1、暴力法,選取節點的時候,對K個鏈表都進行比較,時間複雜度O(K*n) 2、利用堆排序思想,時間複雜度O(n*lg(k)) public Node mergeK(L

原创 分佈式協議——paxos算法

一、paxos算法的背景 Paxos算法是萊斯利·蘭伯特(Leslie Lamport)1990年提出的一種基於消息傳遞的一致性算法,是目前公認的解決分佈式一致性問題最有效的算法之一,其解決的問題就是在分佈式系統中如何就某個值(決議)達成

原创 二叉樹相關的創建或者遍歷

一、通過先根遍歷和中根遍歷數組,構建還原二叉樹 思想:先根遍歷數組,第一個元素就會是二叉樹的根,然後找到根在中根遍歷的位置,則中根遍歷左邊的就是左孩子,右邊的就是右孩子。利用遞歸思想。 public Node create(int[]