原创 消息隊列的消費語義和投遞語義

引言所謂的消費語義,指的就是如下三種情況如何保證消息最多消費一次如何保證消息至少消費一次如何保證消息恰好消費一次其實類似還有一個投遞語義如何保證消息最多投遞一次如何保證消息至少投遞一次如何保證消息恰好投遞一次說句實在話,其實還是老問題,只是

原创 手動實現 SpringMVC

先看整體架構因爲我們這個 MVC 框架要依賴 IOC/DI 容器,所以我們在 pom 文件裏要將自己的 Spring 框架引入進來。實現 MVC 的整體功能首先我們定義兩個 MVC 專用的註解,RequestMapping 用來做 url

原创 Java虛擬機內存分配與回收策略

內存分配與回收策略Minor GC 和 Full GCMinor GC:發生在新生代上,因爲新生代對象存活時間很短,因此 Minor GC 會頻繁執行, 執行的速度一般也會比較快。Full GC:又稱Major GC,發生在老年代上,老年代

原创 如何實現你項目中的單點登錄

一、單系統登錄機制1、http無狀態協議web應用採用browser/server架構,http作爲通信協議。http是無狀態協議,瀏覽器的每一次請求,服務器會獨立處理,不與之前或之後的請求產生關聯,這個過程用下圖說明,三次請求/響應對之間

原创 使用MQ消息隊列的優缺點

1、前言公司的項目一直都是在使用MQ的,但是由於使用的功能很簡單,所以一直都是知其然不知其所以然,作爲一個程序猿有必要了解每一個使用的技術,爲什麼使用它?它的優點是什麼?缺點是什麼?等等。。。2.0使用mq的好處2.1解耦與複用系統A要發送

原创 redis做分佈式鎖可能不那麼簡單

一、爲什麼需要分佈式鎖        隨着互聯網的興起,現代軟件發生了翻天覆地的變化,以前單機的程序,已經支撐不了現代的業務。無論是在抗壓,還是在高可用等方面都需要多臺計算機協同工作來解決問題。現代的互聯網系統都是分佈式部署的,分佈式部署確

原创 redis做分佈式鎖可能不那麼簡單

一、爲什麼需要分佈式鎖        隨着互聯網的興起,現代軟件發生了翻天覆地的變化,以前單機的程序,已經支撐不了現代的業務。無論是在抗壓,還是在高可用等方面都需要多臺計算機協同工作來解決問題。現代的互聯網系統都是分佈式部署的,分佈式部署確

原创 開發十年,阿里工作6年,我是如何成長爲一名優秀的P7架構師

身爲一個做了十年開發的老司機程序員,這十年中我獲得了項目經理、CTO、大公司架構師的經歷。但再仔細一想,這十年中我至少浪費了五年時間走了很多彎路,這五年可以足夠讓自己成長爲一個優秀的程序員,只可惜我在前五年的時間裏和很多程序員一樣在困惑中找

原创 福利來了,現“免費”贈送Spring微服務實戰書籍

本書適合擁有構建分佈式應用程序的經驗、擁有Spring的知識背景以及對學習構建基於微服務的應用程序感興趣的Java開發人員閱讀。本書籍贈送活動詳情,請識別上圖二維碼☝☝☝☝☝書籍推薦本書教讀者如何使用Java和Spring平臺構建基於微服務

原创 【分佈式緩存系列】Redis實現分佈式鎖的正確姿勢

一、前言  在我們日常工作中,除了Spring和Mybatis外,用到最多無外乎分佈式緩存框架——Redis。但是很多工作很多年的朋友對Redis還處於一個最基礎的使用和認識。所以我就像把自己對分佈式緩存的一些理解和應用整理一個系列,希望可

原创 springmvc的面試知識點總結

新的一年,開啓新的篇章,歐氣滿滿,迎接未來.前幾天回顧了spring相關的知識點,現在再來回顧下springmvc相關的知識點做一下總結.問題總結之前面試問題總結的那篇文章中,與springmvc相關的有哪些問題:springmvc的工作流

原创 一文帶你認識Spring事務

Spring事務管理我相信大家都用得很多,但可能僅僅侷限於一個@Transactional註解或者在XML中配置事務相關的東西。不管怎麼說,日常可能足夠我們去用了。但作爲程序員,無論是爲了面試還是說更好把控自己寫的代碼,還是應該得多多瞭解一

原创 來自一個十年 Java開發者百度、阿里、騰訊的面試心經

前言我覺得有一個能夠找一份大廠的 offer的想法,這是很正常的,這並不是我們的飯後談資而是每個技術人的追求。像阿里、騰訊、美團、字節跳動、京東等等的技術氛圍與技術規範度還是要明顯優於一些創業型公司 / 小公司,如果說能夠在這樣的公司鍛鍊幾

原创 阿里p8程序員吐槽:新來應屆生都開卡宴上班,我真的是不甘心啊!

現在程序員作爲一個熱門職位在如今互聯網時代屬於高薪職業,但是也僅僅是相對於其他行業,這不就有一個阿里p8看到自己帶的實習生都開卡宴來上班,當時就震驚了,心裏頓時五味雜陳起來,自己開的只是一破代步車,人與人的差距就是這麼明顯啊。開着網友原貼如

原创 Java面向對象概述及三大特徵(封裝,繼承和多態)

一、面向對象思想Java是面向對象的高級語言,對於Java語言來說,萬事萬物皆對象!它的基本思想是使用類,對象,繼承,封裝,消息等基本概念進行程序設計。面向對象程序的最小單元是類,類代表了客觀世界中具有某一特徵的一類事物,封裝了這類事物所具