原创 sofa-seata

最近工作好不容易有點空閒時間,工作上又碰到了分佈式事務的問題,正好最近又在看sofa rpc,於是很自然的過渡到了sofa的seata,一個star很多的分佈式事務框架。 原理官網講的很清楚了: Seata AT 模式 前提 基於支持本地

原创 爲什麼加了鎖還是出現庫存扣超的情況

最近碰到一個需求,庫存扣減,要保證在高併發情況下不出問題。 第一想到的就是redis分佈式鎖,爲了保證原子操作,加鎖和解鎖都使用lua腳本,但是在壓力測試的時候發現,TPS只有個位數,而且成功率不好控制,我是自己控制嘗試獲取鎖的次數,因此

原创 1024

聽說今天發帖能有1024勳章?

原创 MHA概念

MHA簡介 MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本DeNA公司的youshimaton(現就職於Facebook公司)開發,是一套優秀的作爲MySQL高可用性

原创 mysql半同步複製原理

複製架構衍生史 在談這個特性之前,我們先來看看MySQL的複製架構衍生史。 在2000年,MySQL 3.23.15版本引入了Replication。Replication作爲一種準實時同步方式,得到廣泛應用。這個時候的Replicato

原创 ArrayList打印出來爲什麼會有空格

  問題描述 List<String> list=new ArrayList<String>(); list.add("張三"); list.add("李四"); list.add("王五"); System.out.println(

原创 http head頭

  1、HTTP請求方式 如下表: GET 向Web服務器請求一個文件 POST 向Web服務器發送數據讓Web服務器進行處理 PUT 向Web服務器發送數據並存儲在Web服務器內部 HEAD 檢查一個對象是

原创 Java序列化的幾種方式

  序列化和反序列化 序列化:可以將對象轉化成一個字節序列,便於存儲。 反序列化:將序列化的字節序列還原 優點:可以實現對象的”持久性”, 所謂持久性就是指對象的生命週期不取決於程序。 原生序列化方式 序列化方式一: 實現Serializ

原创 redis的5種數據結構講解及使用場景

  redis提供了5種數據結構,理解每種數據結構的特點對於redis開發運維非常重要。 一、字符串 字符串類型是redis最基礎的數據結構,首先鍵是字符串類型,而且其他幾種結構都是在字符串類型基礎上構建的,所以字符串類型能爲其他四種數據

原创 如何實現靠譜的分佈式鎖

  分佈式鎖,是用來控制分佈式系統中互斥訪問共享資源的一種手段,從而避免並行導致的結果不可控。基本的實現原理和單進程鎖是一致的,通過一個共享標識來確定唯一性,對共享標識進行修改時能夠保證原子性和和對鎖服務調用方的可見性。由於分佈式環境需要

原创 websocket

  現在,很多網站爲了實現推送技術,所用的技術都是 Ajax 輪詢。輪詢是在特定的的時間間隔(如每1秒),由瀏覽器對服務器發出HTTP請求,然後由服務器返回最新的數據給客戶端的瀏覽器。這種傳統的模式帶來很明顯的缺點,即瀏覽器需要不斷的向服

原创 一秒鐘搞懂webservice

  雖然現在都是http的api,但是有些老項目依然用的是webservice,如果碰到了也需要用webservice來調用。所以像這種可能會用到的知識,花一秒鐘搞懂概念就行,用到的時候再說。 webservice(SOAP)與HT

原创 實現生產者與消費者問題的幾種方式

生產者與消費者問題是多線程同步的一個經典問題。生產者和消費者同時使用一塊緩衝區,生產者生產商品放入緩衝區,消費者從緩衝區中取出商品。我們需要保證的是,當緩衝區滿時,生產者不可生產商品;當緩衝區爲空時,消費者不可取出商品。 下面介紹java

原创 Java單例模式的五種寫法

  在設計模式中單例模式看上去是最簡單的一種模式,但是考慮安全性和性能的話,它並不簡單。 第一種(懶漢,線程安全): public class Singleton { private static Singleton in

原创 Apache Shiro

  Apache Shiro是一個強大且易用的Java安全框架,執行身份驗證、授權、密碼和會話管理。 shiro基本模塊 Subject:主體,可以看到主體可以是任何可以與應用交互的 “用戶”; SecurityManager:相當於