原创 第十一章 自己實現一致性hash算法

關於一致性hash算法的意義以及其相對於簡單求餘法(除數求餘法)的好處,查看第六章 memcached剖析   注意:真實的hash環的數據結構是二叉樹,這裏爲了簡便使用了列表List 1、一致性hash算法的使用地方 memcached

原创 redis持久化、可用性及壓力過大問題的解決

通過學習整理其他優秀資源,本文解決三個問題: redis如何持久化? 生產環境中,redis的可用性如何保證? redis中遇到存到存儲上限如何解決? 一、redis持久化 redis是基於內存的, 內存特點是斷電易失。就必然涉及到持久化

原创 mybatis 動態SQL查詢總結

背景 ××項目需要提供系統部分函數第三方調用接口,基於安全性和避免暴露數據庫表信息的基礎上進行函數接口的設計,根據第三方調用身份的權限提供某張表的自定義集合。本項目基於mybatis的持久層框架,支持定製化的SQL,這樣可以避免拼接sql

原创 第一章 常用的緩存技術

1、常見的兩種緩存 本地緩存:不需要序列化,速度快,緩存的數量與大小受限於本機內存 分佈式緩存:需要序列化,速度相較於本地緩存較慢,但是理論上緩存的數量與大小無限(因爲緩存機器可以不斷擴展) 2、本地緩存 Google guava cac

原创 第十章 Redis持久化--RDB+AOF

注:本文主要參考自《Redis設計與實現》 1、Redis兩種持久化方式 RDB 執行機制:快照,直接將databases中的key-value的二進制形式存儲在了rdb文件中 優點:性能較高(因爲是快照,且執行頻率比aof低,而且rd

原创 第八章 Redis數據庫結構與讀寫原理

注:本文主要參考自《Redis設計與實現》 1、數據庫結構 每一個redis服務器內部的數據結構都是一個redisDb[],該數組的大小可以在redis.conf中配置("database 16",默認爲16),而我們所有的緩存操作(s

原创 [Java]爲什麼要使用MyBatis

侃一侃 爲什麼要使用MyBatis,不能直接使用java操作數據庫嗎? 答案當然是不能,不僅僅是因爲程序員懶,更重要的是提高工作效率和代碼性能。 MyBatis是非常優秀的持久層ORM框架,簡化開發人員對關係數據庫的使用。 如果不清楚My

原创 第十二章 redis-cluster搭建(redis-3.2.5)

redis集羣技術 redis2.x使用客戶端分片技術 redis3.x使用cluster集羣技術 一、環境 os:centos7 ip:10.211.55.4 redis:3.2.5 gem-redis:3.2.2 二、搭建集羣 1、本

原创 第六章 memcached剖析

注:本篇博客參考於兩本書。 《memcached全面剖析》,該書籍市面上應該沒有,我傳到了百度雲盤,鏈接如下:http://pan.baidu.com/s/1qX00Lti 《大型網站技術架構:核心原理與案例分析》 前提: 本文是基於me

原创 MyBatis快速入門(一)

Mybatis簡介   MyBatis 是一款優秀的持久層框架,它支持定製化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置

原创 SpringBoot Actuator 監控

監控與管理 在微服務架構中,我們將原本龐大的單體系統拆分成多個提供不同服務的應用。 雖然 各個應用的內部邏輯因分解而得以簡化,但是由於部署應用的數量成倍增長,使得系統的維護複雜度大大提升。 對於運維人員來說,隨着應用的不斷增多,系統集羣中

原创 國內mybatis流行的原因

回答一: 作者:Java架構師 鏈接:https://www.zhihu.com/question/50729231/answer/625854112 來源:知乎 著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。  

原创 如何學習MyBatis

618將至,對各大電商平臺又是一大考驗。面對618、雙11流量洪峯,阿里京東都用了哪些技術?今天我們聊聊阿里的持久層選擇。 衆所周知,阿里巴巴的持久層選擇了MyBatis框架。 但是根據JVM生態系統報告,在ORM框架中使用MyBatis

原创 try catch 有多煩人,我就有多暴躁!一次搞定 Exception. (@ControllerAdvice + @ExceptionHandler)

背景 軟件開發過程中,不可避免的是需要處理各種異常,就我自己來說,至少有一半以上的時間都是在處理各種異常情況,所以代碼中就會出現大量的try {...} catch {...} finally {...} 代碼塊,不僅有大量的冗餘代碼,而

原创 程序kill -9與kill -15的區別,以及回調函數的作用

在Linux/unix下,中止一個Java進程有兩種方式,一種是kill -9 pid,一種是kill -15 pill(默認)。 兩種方式的區別是: SIGNKILL(9) 的效果是立即殺死進程. 該信號不能被阻塞, 處理和忽略。 SI