原创 可靠性,可擴展性,可維護性

0 概述 本文主要介紹如何設計一個可靠性、可擴展性 、可維護性數據系統。 1 可靠性(Reliability) 應用程序表現出用戶所期望的功能。 允許用戶犯錯,允許用戶以出乎意料的方式使用軟件。 在預期的負載和數據量下,性能滿足要

原创 mysql mvcc 實現原理

0 概述 mvcc(multiversion concurrency control )多版本併發控制;用於多事務環境下,對數據讀寫在不加讀寫鎖的情況下實現互不干擾,從而實現數據庫的隔離性。 在這裏插入圖片描述 1 事務特性 事務

原创 架構設計-依賴倒置原則

0 概述 依賴倒置原則(Dependence Inversion Principle)是程序要依賴於抽象接口,不要依賴於具體實現。簡單的說就是要求對抽象進行編程,不要對實現進行編程,這樣就降低了客戶與實現模塊間的耦合。來源百度百科

原创 數據庫樂觀鎖

0 概述 在實際工作中,經常遇到對某一張表某一列進行更新操作,由於在分佈式環境下高併發環境下是很容易出現問題。本文主要講述採用樂觀鎖來解決這一問題。樂觀鎖的基本設計思想來至Java裏的CompareAndSet(CAS)。 1 實

原创 java堆內存分配與回收策略

0 概述 Java技術體系動態內存管理也就是給對象分配內存以及回收分配給對象內存;這一點和傳統的C/C++技術體系有着很大的區別。本文主要講述java堆內存分配與回收策略。 1 對象分配與回收策略 下圖給出java堆內存結構,其分

原创 數據庫事務的隔離級別

0 概述 數據庫事務(Database Transaction) ,是指作爲單個邏輯工作單元執行的一系列操作,要麼完全地執行,要麼完全地不執行。事務有四個基本特性,即原子性、隔離性、一致性、持久性。本文主要講述數據庫事務的隔離級別

原创 TCP粘包與拆包問題

0 概述 熟悉TCP編程的讀者可能都知道,無論是服務端還是客戶端,當我們讀取或者發送消息的時候,都需要考慮TCP粘包與拆包問題機制。 1 TCP粘包與拆包問題 TCP是個”流協議”,所謂流,就是沒有界限的一串數據。TCP底層並不瞭

原创 JVM常用虛擬機參數

0 概述 java 虛擬機有很多參數可以讓我們去根據自己實際場景去設置,往往不同參數對系統性能也影響較大,本文主要介紹jvm常用的參數。 1 jvm 參數種類 -     (如-server)標準參數,所有的jvm都應該支持

原创 java 實現excel生成

0 概述 在實際工作我們希望能夠下載到相應數據表格,比如Excel形式,本文主要實現Excel 表格生成&下載。 1 依賴pom <!-- ooxml --> <dependency>

原创 netty 實現https服務器

0 概述 netty 通過JDK的SSLEngine,以SslHandler的方式提供對SSL/TLS 安全傳輸的支持,極大的簡化了開發工作。本文主要講述如何使用netty實現簡單的https服務器。 1 SSL單向認證 所謂的單

原创 netty實現http服務器

0 概述 HTTP(超文本傳輸協議)是建立在TCP傳輸協議之上的應用層協議,由於其簡單、靈活,其應用也非常之廣泛。本文主要講解如何用Netty 實現一個簡單的http服務器。 1 http 請求消息 Http的請求由三部分組成:請

原创 java併發編程的基礎

0 概述 要編寫正確的併發程序,關鍵問題在於:在訪問共享的可變狀態時需要進行的正確的管理,即原子操作和內存可見性。我們知道同步代碼塊和同步方法可以確保原子操作,但是一種常見的誤解是認爲 synchronized只能用於實現原

原创 jvm中的垃圾收集器簡介

0 概述 現代JVM的類型繁多,最主流的四個垃圾收集器Serial收集器、 Parallel / Throughput收集器、Concurrent收集器(CMS)和G1收集器。這四種垃圾收集器各有各的特點,需要我們根據自己的實際應

原创 mybatis和spring 整合

0 概述 在實際工作中,很多項目都是採用spring容器來管理對象。本文主要講述mybatis和spring整合過程。 1 整合過程 首先要知道 Mybatis原始dao開發流程,具體見Mybatis原始的dao開發。 所謂的整

原创 tair 實現分佈式鎖

0 概述 在實際工作中,服務都是在分佈式環境下,需要有一個分佈式鎖,來解決分佈式環境下的併發問題。本文主要講述如何用tair 實現分佈式鎖。 依賴pom <dependency> <groupId>com.taobao.