原创 Cookie->Session->Token的發展旅程(二)

前言 上一篇講了爲了維持HTTP協議的狀態,採用了Cookie與Session機制,但是這兩種機制都有自己的侷限性。Cookie保存在客戶端有可能被篡改,而且瀏覽器可以手工禁止Cookie。Session對每個用戶產生一個SessionI

原创 Redis 的持久化機制RDB和AOF有什麼區別?

前言 Redis作爲內存級緩存,當redis實例發生問題時,內存數據容易丟失,所以需要用到持久化技術。在Redis裏,提供了兩種持久化方式:RDB和AOF,兩種持久化方式各有優勢,本篇文章爲你解密     redis持久化的兩種方式 re

原创 Interceptor、Filter、Servlet有什麼區別?執行順序是什麼?

前言 JAVA WEB項目中,Interceptor和Filter都攔截並處理請求,都是一種面向切面的編程思想,但是他們有什麼區別呢?一個工程中有很多Interceptor和Filter,他們執行順序如何?與Servlet又有什麼區別呢?

原创 阿里巴巴Java開發手冊推薦線程池的創建方式你知道嗎?

前言 之前在項目中做一些任務型的項目,採用多線程方式,筆者通常用ExecutorService cachedThreadPool=Executors.newFixedThreadPool();方式創建。但是後來看阿里巴巴的JAVA開發手冊

原创 JAVA併發包的Volatile和CAS如何不用鎖保證線程安全?

前言 從JDK1.5以後,引入了java.util.concurrent併發包,其中java.util.concurrent.atomic包,方便在無鎖的情況下,進行原子操作。在JUC中大部分都是利用volatile關鍵字+CAS在不用鎖

原创 JAVA類:我是如何被ClassLoader加載到內存的

前言 之前看到阿里的一個面試題,JAVA類的雙親委派加載機制是什麼?有什麼好處?工作這麼久,還不知道一個JAVA類如何被加載到內存並運行起來的有點羞愧。不懂但是會搜索啊,這篇文章就這樣誕生了。本文主要總結了JAVA的類加載模型(class

原创 從Header中X-Forwarded-For獲取的IP一定是真實IP嗎?

前言 在實際項目中,用戶ip的獲取很重要。通過報障用戶的ip來快速定位用戶的請求日誌,還可以通過ip訪問頻率來進行防盜鏈處理。在有些項目中,比如之前我們說過的升級,通過用戶ip尾號進行一部分用戶的灰度升級,還比如通過ip來區分用戶的地域,

原创 Lombok神器帶你飛(簡化POJO)

前言 遇到殘暴的大佬,心裏不由得爲代碼暗暗揪了心,不過擼碼殘暴起來,也是感覺到了一絲絲的爽~ 今天爲大家介紹一個神器:Lombok。 希望各種各樣的神器帶來便捷的同時也爲我們帶來更多的Money~ 本文目標 希望閱讀完本文的童鞋,可以快

原创 大話分佈式系統裏涉及到的基本概念

前言 最近看了一些螞蟻金服的面試分享文章,裏面多次提到分佈式系統涉及的概念,比如分佈式事務、接口的冪等性,樂觀鎖、數據一致性等。筆者一時也說不清楚,後來查詢了一些資料,整理下來,以備後用。           系統衡量關鍵指標 QPS:單

原创 JAVA對象中POJO、PO、BO、VO、DTO你能分清嗎?

前言 很多JAVA書都會提到POJO對象,有時候也會說Bean,尤其spring中,所有對象都稱爲Bean,有時候項目中有個vo包、也有model包,這些對象都是怎麼區分的呢?         JavaBean JavaBean是一種JA

原创 三十歲應該知道的職場規則

開篇記 千里之行始於足下,做技術這行更多的是要腳踏實地,逐步積累的過程。做編程不能浮躁,要想提高技術不僅要讀萬卷書,還要加以更多的實踐才能提高自己的水平。貓叔畢業以來,參加工作五年半,仍覺編程知識匱乏,實踐不足。由此,開此公號以記錄工作之

原创 JAVA開發需要的環境準備

開篇記 俗話說:工慾善其事必先利其器。JAVA開發最重要的就是配置好環境以及安裝開發工具。本文從0基礎開始,介紹工作中用到的工具以及優化配置,提高開發效率。隨着時間的發展,開發工具也在變化,比如早期的代碼庫使用的是SVN,現在更多的是使用

原创 如何“幹掉”if…else

前言 if…else 是所有高級編程語言都有的必備功能。但現實中的代碼往往存在着過多的 if…else。雖然 if…else 是必須的,但濫用 if…else 會對代碼的可讀性、可維護性造成很大傷害,進而危害到整個軟件系統。現在軟件開發領

原创 如何在JAVA編程中幹掉if/else、switch/case(一)

前言 if...else在每一種語言中都存在,但是代碼中如果存在大量的if...else語句,就會造成程序的可讀性變差,可維護性變差,進而危害整個系統。同樣switch...case也會讓代碼變得冗餘,我們稱這樣的代碼有壞代碼的味道,爲了

原创 理解、學習與使用 JAVA 中的 OPTIONAL

從 Java 8 引入的一個很有趣的特性是 Optional  類。Optional 類主要解決的問題是臭名昭著的空指針異常(NullPointerException) —— 每個 Java 程序員都非常瞭解的異常。 本質上,這是一個包含