原创 MQ使用心得

首先簡述一下我的業務場景:A系統將需要同步到第三方的報文發送到MQ,同步系統消費MQ做同步;相當於將系統業務與同步獨立拆分; 1.前期調研 技術調研: 技術這塊前期對比了開源的幾種MQ的優缺點,不過公司有自己的MQ平臺,所以就採用的公司

原创 淺談Linux Ext文件系統

首先請讀者思考一個問題:Linux系統下面這麼多的文件是如何來管理的?新建一個文件都是經歷了什麼樣的過程? 1.Ext文件系統的特點 1).文件系統的特點 權限與屬性放置到inode中,至於實際數據則放置到data block塊中。還有

原创 分佈式系統中常用的負載均衡算法

對於做開發的同學來說,負載均衡算法已經不陌生了,今天一起來盤點一下分佈式系統中都是有哪些負載均衡算法以及它的優缺點; 1.輪詢法(Round Robin) 思想: 將請求按順序輪流地分配到後端服務器上,它均衡地對待後端每一臺服務器,而不

原创 redis實現分佈式鎖踩坑記錄

這裏主要記錄項目中使用基於redis的分佈式鎖所遇到的問題及解決方案; 業務場景 我的業務場景是這樣的,我們服務有庫存模塊,而我的服務又是多節點部署,要高峯期會存在庫存差異,後面分析問題之後,打算採用redis實現分佈式鎖(主要的原因是

原创 單點登錄系統SSO——理論

關於SSO一直沒有深入的研究,在工作中也是對接的公司平臺的SSO,最近頻繁的與SSO打交道之後,我決定深入的理解一下它的實現原理; 一.SSO的實現種類 SSO系統在公司一般是獨立部署的一套系統,需要各業務系統接入,回想一下之前傳統系統

原创 jenkins安裝配置一文搞定

1 .前置準備 安裝java 配置JAVA_HOME安裝git安裝maven安裝tomcat 2.安裝jenkins 本文安裝jenkins採用war的方式,war包下載地址:https://jenkins.io/zh/downl

原创 guava教程——Joiner、Splitter

guava是goog1e開源的一套針對java api的擴展工具包,裏面包含很多非常實用的方法,在工作中可以提高我們的編碼效率; 1.Joiner 將集合按指定字符拼接成字符串; private final List<String>

原创 if...else代碼優化

在編碼中難免遇到if else過多情況,一方面是當初設計沒有在意,另一方面可能是因爲需求的不斷變化。但代碼中出現大量if else都知道這種情況不太好,那麼我們就聊一下這種情況應該如何優化 if(條件1){ .... }else i

原创 Mysql併發保證數據一致性——實例

1. 背景 最近的項目中遇到一項問題,併發更新某一單據的時候,出現了更新失效的情況。比如: @Transactional(rollbackFor = Exception.class) public void update(Integer i

原创 Mysql索引原理

說起Mysql就離不開SQL優化,說起優化就離不開索引,那麼什麼是索引?爲什麼加了索引就可以快?那接下來我們就一起來探討一下索引相關的知識! 一、數據結構中常見的索引 【對這塊數據結構瞭解的同學建議跳過本節】 1.二叉樹 說起二叉樹,我們都

原创 HashMap你瞭解多少

HashMap幾乎是面試必問的知識,對於HashMap面試是你真的能從容面對嗎?相信如果你去面試知名互聯網公司的時候,決對不會只是問問你HashMap的數據結構這麼簡單的問題。我收集了最近老大在面試過程中關於HashMap常問的幾個問題:

原创 如何提高系統接口安全性

本人作爲一名Java開發者,在工作中時常遇到需要從其它系統拉取數據,那麼就需要跟其它系統的同學溝通爲我們開放接口,對方會發送一些AppId和AppKey之類的數據,在我們請求接口的時候,需要把這些值和參數等信息一起生成摘要發送過去;最近項目

原创 git常用命令操作

目前市場主流的版本控制系統主要分爲:集中式版本控制系統與分佈式版本控制系統。集中式版本控制目前主流的:SVN分佈式版本控制系統目前主流的:Git 兩者之間的區別: 集中式有中央服務器,開發人員需要從中央服務器獲得最新版本的項目然後在本地開發

原创 選擇排序—簡單選擇排序

選擇排序的基本設計思想是:每一趟從待排序的記錄中選出關鍵字最小的記錄,按順序放在已排序的記錄序列,直到全部排完爲止。算法步驟:初始序列:(1)、第一趟從arr[1]開始,通過n-1次比較,從n個記錄中選出關鍵字最小的記錄,記爲arr[k],

原创 hadoop僞分佈式安裝

一、僞分佈式的安裝① 上傳hadoop安裝包 -->上傳至/soft //上傳到linux中② 解壓hadoop tar -zxvf hadoop-2.4.1.tar.gz -C /usr/local ③ 配置ha