原创 多線程專題-生產者消費者問題

等待喚醒機制其實就是經典的“生產者與消費者”的問題。 就拿生產包子消費包子來說等待喚醒機制如何有效利用資源: 包子鋪線程生產包子,吃貨線程消費包子。當包子沒有時(包子狀態爲false),吃貨線程等待,包子鋪線程生產包子(即包子狀態

原创 IO流專題-序列化

1.概述 Java 提供了一種對象序列化的機制。用一個字節序列可以表示一個對象,該字節序列包含該對象的數據、對象的類型和對象中存儲的屬性等信息。字節序列寫出到文件之後,相當於文件中持久保存了一個對象的信息。 反之,該字節序列還可以

原创 IO流專題-緩衝流

之前學習了基本的一些流,作爲IO流的入門,我們要見識一些更強大的流。比如能夠高效讀寫的緩衝流,能夠轉換編碼的轉換流,能夠持久化存儲對象的序列化流等等。這些功能更爲強大的流,都是在基本的流對象基礎之上創建而來的,就像穿上鎧甲的武士一

原创 IO流專題-字符流

當使用字節流讀取文本文件時,可能會有一個小問題。就是遇到中文字符時,可能不會顯示完整的字符,那是因爲一箇中文字符可能佔用多個字節存儲。所以Java提供一些字符流類,以字符爲單位讀寫數據,專門用於處理文本文件。 1.符輸入流【Rea

原创 IO流專題-FIle類和遞歸

課程目標 1.IO流整體介紹;(瞭解) 2.文件相關常識瞭解;(瞭解) 3.File對象的創建;(掌握) 4.File類中的基本方法;(掌握) 5.文件和文件名過濾器;(掌握) 6.方法遞歸調用;(理解) 1.IO流的概念及應用

原创 IO流專題-字節流

1.IO概述 1.1.什麼是IO 生活中,你肯定經歷過這樣的場景。當你編輯一個文本文件,忘記了ctrl+s ,可能文件就白白編輯了。當你電腦上插入一個U盤,可以把一個視頻,拷貝到你的電腦硬盤裏。那麼數據都是在哪些設備上的呢?鍵盤、

原创 分佈式鎖專題-Redisson分佈式鎖實現

1.Redisson簡介 Redis 是最流行的 NoSQL 數據庫解決方案之一,而 Java 是世界上最流行(注意,我沒有說“最好”)的編程語言之一。雖然兩者看起來很自然地在一起“工作”,但是要知道,Redis 其實並沒有對 J

原创 分佈式鎖專題-Redis實現分佈式鎖

1.業務場景引入 在進行代碼實現之前,我們先來看一個業務場景: 系統A是一個電商系統,目前是一臺機器部署,系統中有一個用戶下訂單的接口,但是用戶下訂單之前一定要去檢查一下庫存,確保庫存足夠了纔會給用戶下單。 由於系統有一定的併發,

原创 分佈式鎖專題-分佈式鎖入門

1.引入業務場景 業務場景一 因爲小T剛接手項目,正在吭哧吭哧對熟悉着代碼、部署架構。在看代碼過程中發現,下單這塊代碼可能會出現問題,這可是分佈式部署的,如果多個用戶同時購買同一個商品,就可能導致商品出現 庫存超賣 (數據不一致)

原创 分佈式鎖專題-Jedis實現分佈式鎖

1.業務場景引入 在進行代碼實現之前,我們先來看一個業務場景: 系統A是一個電商系統,目前是一臺機器部署,系統中有一個用戶下訂單的接口,但是用戶下訂單之前一定要去檢查一下庫存,確保庫存足夠了纔會給用戶下單。 由於系統有一定的併發,

原创 Quartz定時任務入門

1.Quartz是什麼 大部分公司都會用到定時任務這個功能。 拿火車票購票來說,當你下單後,後臺就會插入一條待支付的task(job),一般是30分鐘,超過30min後就會執行這個job,去判斷你是否支付,未支付就會取消此次訂單;

原创 SpringBoot實現監聽Redis key失效事件

1.需求 處理訂單過期自動取消,比如下單30分鐘未支付自動更改訂單狀態 2.方案 可以利用redis天然的key自動過期機制,下單時將訂單id寫入redis,過期時間30分鐘,30分鐘後檢查訂單狀態,如果未支付,則進行處理但是ke

原创 LCN分佈式事務框架

1.LCN是什麼 LCN是國產開源的分佈式事務處理框架。LCN即:lock(鎖定事務單元)、confirm(確認事務模塊狀態)、notify(通知事務)。 官網:http://www.txlcn.org/zh-cn/ 2.首先介

原创 Spring Data ElasticSearch使用

1. 什麼是Spring Data Spring Data是一個用於簡化數據庫訪問,並支持雲服務的開源框架。其主要目標是使得對數據的訪問變得方便快捷,並支持map-reduce框架和雲計算數據服務。 Spring Data可以極大

原创 軟件架構淺析-BASE理論

Base是Basically Available(基本可用)、Soft state(軟狀態)和Eventually consistent(最終一致性)三個短語的簡寫。BASE理論是對CAP中AP的一個擴展,通過犧牲強一致性來獲得可