原创 Redis之底層數據結構

說明 說到Redis的數據結構,我們大概會很快想到Redis的5種常見數據結構:字符串(String)、列表(List)、散列(Hash)、集合(Set)、有序集合(Sorted Set),以及他們的特點和應用場景。不過它們是Redis對

原创 SpringMvc之請求執行流程

首先,讓我們來了解一下Spring MVC的幾個組件:DispatcherServlet、HandlerMapping、HandlerAdapter以及ViewResolver: 1、前端控制器DispatcherServlet(不需要工

原创 Redis之緩存雪崩、擊穿、穿透

那提到Redis我相信各位在面試,或者實際開發過程中對緩存雪崩,穿透,擊穿也不陌生吧,就算沒遇到過但是你肯定聽過,那三者到底有什麼區別,我們又應該怎麼去防止這樣的情況發生呢,我們有請下一位受害者。 面試開始 一個大腹便便,穿着格子襯衣的

原创 SpringMvc之啓動流程

當一個Web應用部署到容器內時(eg.tomcat),在Web應用開始響應執行用戶請求前,以下步驟會被依次執行: 部署描述文件中(eg.tomcat的web.xml)由<listener>元素標記的事件監聽器會被創建和初始化 對於所有事件

原创 秒殺系統設計思考

前言 秒殺大家都不陌生。自2011年首次出現以來,無論是雙十一購物還是 12306 搶票,秒殺場景已隨處可見。簡單來說,秒殺就是在同一時刻大量請求爭搶購買同一商品並完成交易的過程。從架構視角來看,秒殺系統本質是一個高性能、高一致、高可用的

原创 SpringMvc之線程安全問題

我們知道SpringMVC Controller默認情況下是Singleton(單例)的,當request過來,不用每次創建Controller,會用原來的實例去處理。那麼當多個線程調用它的時候,會不會發生線程安全問題呢? 多個線程訪問同

原创 SpringMvc之HandlerMapping

一、Handler與HandlerMapping關係 Handler可以理解爲具體幹活的,也就是我們的業務處理邏輯。 Handler最終是要通過url 來訪問到,這樣url 與Handler之間就有一個映射關係了。 HandlerMapp

原创 SpringMvc之HandlerAdapter

1.既生瑜何生亮 通過前幾篇文章,我們知道根據url可以從HandlerMapping中,獲取到我們需要的handler了。有了handler不就可以處理程序了嗎?爲啥有了HandlerMapping ,還需要HandlerAdapter

原创 SpringMvc之HttpMessageConverter

HTTP請求和響應是基於文本的,意味着瀏覽器和服務器通過交換原始文本進行通信。但是使用 Spring的controller 類中的方法,返回純 String類型和域模型(或其他 Java 內建對象)。如何將對象序列化/反序列化爲原始文本?

原创 Tomcat之安全

配置安全 一)刪除webapps目錄下的所有文件,禁用tomcat管理界面; 二)註釋或者刪除tomcat-users.xml文件內所有用戶的權限; 三)更改關閉tomcat指令或者禁用 tomcat的server.xml中定義了可以直接

原创 深入理解 HTTP 協議

簡介 HTTP協議(超文本傳輸協議HyperText Transfer Protocol),它是基於TCP協議的應用層傳輸協議,簡單來說就是客戶端和服務端進行數據傳輸的一種規則。 注意:客戶端與服務器的角色不是固定的,一端充當客戶端,也

原创 多級緩存的分層架構

前言 在互聯網高速發展的今天,緩存技術被廣泛地應用。無論業內還是業外,只要是提到性能問題,大家都會脫口而出“用緩存解決”。 這種說法帶有片面性,甚至是一知半解,但是作爲專業人士的我們,需要對緩存有更深、更廣的瞭解。 緩存技術存在於應用場景

原创 Tomcat之Jasper

Jasper簡介 對於基於Jsp的web應用來說,我們可以直接在Jsp頁面中編寫Java代碼,添加第三方的標籤庫,以及使用EL表達式。但是無論經過何種形式的處理,最終輸出到客戶端的都是標準的HTML頁面(包含js,css..),並不包含任

原创 MyCat簡介與實踐

簡介 MyCat是一個開源的分佈式數據庫系統,是一個實現了MySQL協議的服務器,前端用戶可以把它看作是一個數據庫代理(類似於Mysql Proxy),用MySQL客戶端工具和命令行訪問,而其後端可以用MySQL原生協議與多個MySQL服

原创 MySql之主從複製

爲什麼要做主從複製? 在業務複雜的系統中,有這麼一個情景,有一句sql語句需要鎖表,導致暫時不能使用讀的服務,那麼就很影響運行中的業務,使用主從複製,讓主庫負責寫,從庫負責讀,這樣,即使主庫出現了鎖表的情景,通過讀從庫也可以保證業務的正