国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

關(guān)于賬本數(shù)據(jù)庫(kù):你想知道的這里都有

這篇具有很好參考價(jià)值的文章主要介紹了關(guān)于賬本數(shù)據(jù)庫(kù):你想知道的這里都有。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

??前言:十二月份出個(gè)openGuass集合專(zhuān)欄,帶領(lǐng)大家淺淺的認(rèn)識(shí)一下國(guó)產(chǎn)數(shù)據(jù)庫(kù)吧??

賬本管理數(shù)據(jù)庫(kù),openGauss集合,區(qū)塊鏈,數(shù)據(jù)庫(kù),openGauss

1. 什么是賬本數(shù)據(jù)庫(kù)

區(qū)塊鏈大家想必都耳熟能詳,比特幣、以太坊甚至狗狗幣等代幣,作為區(qū)塊鏈的代名詞,不僅牽動(dòng)著某些人的賬戶盈虧,甚至影響著市面的顯卡、硬盤(pán)價(jià)格。但是作為數(shù)據(jù)庫(kù)相關(guān)的技術(shù)人員或者愛(ài)好者,對(duì)這一新技術(shù),我們更多的是關(guān)系其核心技術(shù)點(diǎn)。

區(qū)塊鏈作為一種分布式賬本技術(shù),克服了傳統(tǒng)集中式賬本的存儲(chǔ)效率低、可信度低、易受單點(diǎn)攻擊的劣勢(shì),從技術(shù)上保證了其具有分布式共享、多方共識(shí)、不可篡改和可追溯的特點(diǎn)。

那么區(qū)塊鏈這么好,我們能用它來(lái)替代數(shù)據(jù)庫(kù)嗎?答案當(dāng)然是NO!因?yàn)閰^(qū)塊鏈往往有著交易性能低下,查詢不便等諸多弊端。比特幣系統(tǒng)僅支持每秒處理7筆交易,如果用它來(lái)承擔(dān)主要的金融交易,效率自然是十分低下的。業(yè)界往往采用數(shù)據(jù)庫(kù)來(lái)提高區(qū)塊鏈的數(shù)據(jù)存儲(chǔ)、檢索能力。我們不妨換個(gè)角度,利用openGauss數(shù)據(jù)庫(kù)天然具有的高性能、高可靠、高安全等優(yōu)勢(shì),從openGauss出發(fā),融入一些區(qū)塊鏈的密碼學(xué)防篡改、多方共識(shí)等技術(shù),來(lái)提高數(shù)據(jù)庫(kù)自身的防篡改、可追溯能力。防篡改賬本數(shù)據(jù)庫(kù)的idea應(yīng)運(yùn)而生。

區(qū)塊鏈從基礎(chǔ)架構(gòu)模型上講,通常被分為七層:

  • 應(yīng)用層

  • 查詢層

  • 合約層

  • 激勵(lì)層

  • 共識(shí)層

  • 網(wǎng)絡(luò)層

  • 數(shù)據(jù)層

每一層的詳細(xì)的技術(shù)點(diǎn)如下圖所示:

賬本管理數(shù)據(jù)庫(kù),openGauss集合,區(qū)塊鏈,數(shù)據(jù)庫(kù),openGauss

圖 1 區(qū)塊鏈基礎(chǔ)架構(gòu)模型

數(shù)據(jù)庫(kù)吸納區(qū)塊鏈防篡改的能力,首先想到的就是從區(qū)塊鏈技術(shù)的最底層:數(shù)據(jù)層出發(fā),讓數(shù)據(jù)庫(kù)提供數(shù)據(jù)的校驗(yàn)信息記錄以及數(shù)據(jù)的篡改校驗(yàn)的能力,保證數(shù)據(jù)庫(kù)在處理敏感信息時(shí)能夠忠實(shí)的記錄每一筆交易造成的數(shù)據(jù)更改,形成一個(gè)忠實(shí)、完整的數(shù)據(jù)變更“賬本”。我們本次要介紹的openGauss賬本數(shù)據(jù)庫(kù),即是在openGauss內(nèi)核中植入了在數(shù)據(jù)修改時(shí),對(duì)數(shù)據(jù)的變更操作進(jìn)行記錄這一功能,保證整個(gè)數(shù)據(jù)鏈路可查詢、可溯源;同時(shí)提供高效的篡改校驗(yàn)接口,提供給上層的應(yīng)用系統(tǒng)或者多個(gè)參與方之間互相校驗(yàn)數(shù)據(jù)的一致性。之后,我們將詳細(xì)介紹賬本數(shù)據(jù)庫(kù)的實(shí)現(xiàn)原理以及其對(duì)openGauss的改造。

2. openGauss賬本數(shù)據(jù)庫(kù)原理剖析

賬本管理數(shù)據(jù)庫(kù),openGauss集合,區(qū)塊鏈,數(shù)據(jù)庫(kù),openGauss

?圖 2 賬本數(shù)據(jù)庫(kù)新增模塊

客戶端發(fā)送SQL對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)進(jìn)行修改時(shí),要經(jīng)過(guò)通信模塊的接收,解析模塊的處理,轉(zhuǎn)成解析樹(shù),然后經(jīng)過(guò)優(yōu)化生成執(zhí)行計(jì)劃。執(zhí)行模塊拿到執(zhí)行計(jì)劃,會(huì)調(diào)用存儲(chǔ)層接口對(duì)數(shù)據(jù)進(jìn)行修改。如上圖所示,我們?cè)跀?shù)據(jù)的修改過(guò)程中,增加了篡改校驗(yàn)信息的記錄;同時(shí),提供了篡改校驗(yàn)?zāi)K,供用戶調(diào)用接口執(zhí)行校驗(yàn)。篡改信息記錄和篡改校驗(yàn)的基礎(chǔ)是我們針對(duì)數(shù)據(jù)庫(kù)增、刪、改操作設(shè)計(jì)的篡改校驗(yàn)信息。下面我們針對(duì)新增的篡改校驗(yàn)信息進(jìn)行介紹。

2.1 防篡改用戶表

賬本管理數(shù)據(jù)庫(kù),openGauss集合,區(qū)塊鏈,數(shù)據(jù)庫(kù),openGauss

圖 3 防篡改用戶表結(jié)構(gòu)

在賬本數(shù)據(jù)庫(kù)特性中,我們使用schema級(jí)別進(jìn)行防篡改表和普通表的隔離。在防篡改schema中的表,具有校驗(yàn)信息,且每次涉及到增、刪、改的操作均會(huì)記錄相應(yīng)的數(shù)據(jù)變化以及操作的語(yǔ)句,我們稱這些表為防篡改表。而普通的schema中的表,我們稱其為普通表。

防篡改表有如圖 3所示的結(jié)構(gòu)。在創(chuàng)建防篡改表時(shí),系統(tǒng)會(huì)增加一行hash列,該列在發(fā)生數(shù)據(jù)插入或者數(shù)據(jù)修改時(shí),都會(huì)實(shí)時(shí)計(jì)算數(shù)據(jù)的摘要。數(shù)據(jù)與摘要存在一個(gè)tuple中,密不可分。由hash函數(shù)的單向性,我們將每一行的摘要,作為該行數(shù)據(jù)在摘要空間的邏輯表示。

2.2 用戶歷史表

賬本管理數(shù)據(jù)庫(kù),openGauss集合,區(qū)塊鏈,數(shù)據(jù)庫(kù),openGauss

圖 4 用戶歷史表結(jié)構(gòu)

用戶歷史表結(jié)構(gòu)見(jiàn)上圖,主要包含四列:xid、hash_ins、hash_del、pre_hash。用戶歷史表的每一行對(duì)應(yīng)著用戶表的每一次行級(jí)數(shù)據(jù)更改,其中xid記錄數(shù)據(jù)更改時(shí)的xid號(hào),代表著操作進(jìn)行的邏輯時(shí)間順序。hash_ins記錄INSERT或者UPDATE操作插入的數(shù)據(jù)行的hash值,hash_del記錄著DELETE或者UPDATE刪除數(shù)據(jù)行的hash值。同時(shí),hash_ins和hash_del是否為空,代表著INSERT、DELETE、UPDATE三種不同的操作類(lèi)型,其對(duì)應(yīng)關(guān)系如下表。

hash_ins

hash_del

Insert

√(插入數(shù)據(jù)hash)

--

Delete

--

√(刪除數(shù)據(jù)hash)

Update

√(新數(shù)據(jù)hash)

√(刪除前數(shù)據(jù)hash)

pre_hash將歷史表的當(dāng)前行數(shù)據(jù)和上一行的pre_hash數(shù)據(jù)進(jìn)行拼接,生成當(dāng)前用戶歷史表的數(shù)據(jù)整體摘要,計(jì)算公式如下:

賬本管理數(shù)據(jù)庫(kù),openGauss集合,區(qū)塊鏈,數(shù)據(jù)庫(kù),openGauss

這里i代表用戶歷史表的第i行,rowdatai為第i行xid||hash_ins||hash_del拼接的數(shù)據(jù)。

在校驗(yàn)用戶歷史表的完整性時(shí),通過(guò)使用rowdata數(shù)據(jù)從前往后依次計(jì)算pre_hash值,并與表中的pre_hash進(jìn)行比對(duì),如果數(shù)據(jù)不一致,則說(shuō)明用戶歷史表的完整性被破壞。

2.3 全局區(qū)塊表結(jié)構(gòu)

賬本管理數(shù)據(jù)庫(kù),openGauss集合,區(qū)塊鏈,數(shù)據(jù)庫(kù),openGauss

?圖 5 全局區(qū)塊表結(jié)構(gòu)

全局區(qū)塊表結(jié)構(gòu)見(jiàn)上圖,表中每一行對(duì)應(yīng)一次防篡改表修改行為,作為一個(gè)區(qū)塊保存。全局區(qū)塊表主要包括三部分內(nèi)容:區(qū)塊信息主要保存了區(qū)塊相關(guān)的標(biāo)記信息,包括區(qū)塊號(hào)、時(shí)間戳。操作信息包括了用戶對(duì)防篡改數(shù)據(jù)表的操作信息,包括數(shù)據(jù)庫(kù)名、用戶名、表名等標(biāo)識(shí)信息,以及對(duì)應(yīng)的SQL語(yǔ)句。校驗(yàn)信息保存用于一致性或完整性校驗(yàn)的hash信息,包括表級(jí)hash(rel_hash)、全局hash(global_hash)。

2.4 篡改校驗(yàn)算法

賬本管理數(shù)據(jù)庫(kù),openGauss集合,區(qū)塊鏈,數(shù)據(jù)庫(kù),openGauss圖 6 防篡改用戶表校驗(yàn)信息生成

用戶在調(diào)用篡改校驗(yàn)接口時(shí),系統(tǒng)可以并行的使用防篡改用戶表生成表級(jí)的總校驗(yàn)信息;使用用戶表對(duì)應(yīng)的歷史表中的記錄,生成變更記錄整體的校驗(yàn)信息。然后通過(guò)比較生成的兩個(gè)校驗(yàn)信息是否一致,來(lái)判斷數(shù)據(jù)與操作是否一致。如果不一致,則說(shuō)明發(fā)生了繞過(guò)系統(tǒng)記錄的修改數(shù)據(jù)行為,即篡改行為。

通過(guò)防篡改用戶表中的行級(jí)校驗(yàn)信息生成表級(jí)校驗(yàn)的過(guò)程如圖 6 所示。在校驗(yàn)時(shí),會(huì)掃描表中的數(shù)據(jù),獲取每一行中的校驗(yàn)信息,并使用行校驗(yàn)信息對(duì)行數(shù)據(jù)進(jìn)行校驗(yàn)。在掃描完整體的行校信息的過(guò)程中,可以通過(guò)內(nèi)置的可交換校驗(yàn)信息聚合算法,不斷生成當(dāng)前已經(jīng)掃描的數(shù)據(jù)的整體校驗(yàn)信息。由于信息聚合算法的可交換性,這一過(guò)程可以完全并行執(zhí)行。

通過(guò)用戶歷史表生成變更記錄總體的校驗(yàn)信息如圖 7 所示。通過(guò)我們?cè)O(shè)計(jì)的用戶歷史表的結(jié)構(gòu),其hash_ins列中的非空元素代表了所有操作導(dǎo)致的數(shù)據(jù)校驗(yàn)信息的增加,hash_del列中的非空元素則代表了校驗(yàn)數(shù)據(jù)減少。我們通過(guò)對(duì)兩列元素做差集,得到剩余的校驗(yàn)信息的集合。然后利用可交換校驗(yàn)信息聚合算法得到用戶歷史表中記錄操作造成的變更記錄整體的校驗(yàn)信息。這一過(guò)程,由于聚合算法的可交換性,可以對(duì)每行先進(jìn)行hash_ins – hash_del,然后在掃描的時(shí)候不斷疊加生成。這里,變更記錄整體校驗(yàn)信息的生成也是完全可以并行的。

賬本管理數(shù)據(jù)庫(kù),openGauss集合,區(qū)塊鏈,數(shù)據(jù)庫(kù),openGauss

?圖 7 用戶歷史表校驗(yàn)信息生成

3. openGauss賬本數(shù)據(jù)庫(kù)發(fā)展展望

賬本數(shù)據(jù)庫(kù)作為openGauss防篡改數(shù)據(jù)的基礎(chǔ),目前支持了數(shù)據(jù)庫(kù)內(nèi)校驗(yàn)信息的記錄以及提供高性能校驗(yàn)接口。提供了區(qū)塊鏈技術(shù)層次中存儲(chǔ)層的部分功能。為了實(shí)現(xiàn)防篡改, 我們還需要增加多個(gè)數(shù)據(jù)庫(kù)間的高性能遠(yuǎn)程執(zhí)行能力,以及提供可插拔的高性能多方共識(shí)協(xié)議,這樣才能形成完整的openGauss多方可信防篡改能力。在數(shù)據(jù)庫(kù)融合區(qū)塊鏈的領(lǐng)域,openGauss會(huì)不斷進(jìn)化,為大家?guī)?lái)更加易用、更加高效的防篡改數(shù)據(jù)庫(kù)。

公眾實(shí)時(shí)更新:葉秋學(xué)長(zhǎng)

下一篇解密openGauss DB4AI框架的內(nèi)部機(jī)理文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-779597.html

到了這里,關(guān)于關(guān)于賬本數(shù)據(jù)庫(kù):你想知道的這里都有的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 探索數(shù)據(jù)結(jié)構(gòu)世界之排序篇章(超級(jí)詳細(xì),你想看的都有)

    - 文章開(kāi)頭必看 1.?。?!本文排序默認(rèn)都是排 升序 2.排序是否穩(wěn)定值指指排完序之后相同數(shù)的相對(duì)位置是否改變 3.代碼相關(guān)解釋我都寫(xiě)在注釋中了,方便對(duì)照著看 插入排序是一種高效的簡(jiǎn)單排序算法,它的工作原理是將一個(gè)未排序的元素插入到一個(gè)已排序的列表中,并保持列

    2024年02月08日
    瀏覽(17)
  • postgresql 使用之 存儲(chǔ)架構(gòu) 觸摸真實(shí)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)以及組織形式,存入數(shù)據(jù)庫(kù)的數(shù)據(jù)原來(lái)在這里

    postgresql 使用之 存儲(chǔ)架構(gòu) 觸摸真實(shí)數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)以及組織形式,存入數(shù)據(jù)庫(kù)的數(shù)據(jù)原來(lái)在這里

    ? 專(zhuān)欄內(nèi)容 : postgresql內(nèi)核源碼分析 手寫(xiě)數(shù)據(jù)庫(kù)toadb 并發(fā)編程 個(gè)人主頁(yè) :我的主頁(yè) 座右銘:天行健,君子以自強(qiáng)不息;地勢(shì)坤,君子以厚德載物. postgresql 數(shù)據(jù)庫(kù)服務(wù)運(yùn)行時(shí),數(shù)據(jù)在磁盤(pán)上是如何存儲(chǔ)的呢?這就涉及到了存儲(chǔ)架構(gòu)。 在文件系統(tǒng)中,我們可以看到以目錄和文

    2024年02月14日
    瀏覽(19)
  • 若依的多圖片上傳/回顯/保存多圖片路徑url逗號(hào)隔開(kāi)存數(shù)據(jù)庫(kù),前后端都有,拷貝即用

    用戶在前端上傳不等數(shù)量圖片,現(xiàn)在需要把其相對(duì)/絕對(duì)路徑存進(jìn)數(shù)據(jù)庫(kù)中,方便后期使用和頁(yè)面回顯. 后端存儲(chǔ)pic字段是字符串 用于? 用\\\",\\\"逗號(hào)? 拼接 多個(gè)圖片 url? 1.html代碼: 前端走馬燈瀏覽已經(jīng)上傳的圖片 前端JS方法,一共四個(gè), 1.上傳前校驗(yàn)方法 2.上傳方法 3.上傳數(shù)量限制方

    2024年02月16日
    瀏覽(23)
  • mysql面試題30:什么是數(shù)據(jù)庫(kù)連接池、應(yīng)用程序和數(shù)據(jù)庫(kù)建立連接的過(guò)程、為什么需要數(shù)據(jù)庫(kù)連接池、你知道哪些數(shù)據(jù)庫(kù)連接池

    mysql面試題30:什么是數(shù)據(jù)庫(kù)連接池、應(yīng)用程序和數(shù)據(jù)庫(kù)建立連接的過(guò)程、為什么需要數(shù)據(jù)庫(kù)連接池、你知道哪些數(shù)據(jù)庫(kù)連接池

    該文章專(zhuān)注于面試,面試只要回答關(guān)鍵點(diǎn)即可,不需要對(duì)框架有非常深入的回答,如果你想應(yīng)付面試,是足夠了,抓住關(guān)鍵點(diǎn) 數(shù)據(jù)庫(kù)連接池是一種用于管理和復(fù)用數(shù)據(jù)庫(kù)連接的技術(shù)。它是在應(yīng)用程序和數(shù)據(jù)庫(kù)之間建立一組數(shù)據(jù)庫(kù)連接,并以池的形式存儲(chǔ)起來(lái),每當(dāng)應(yīng)用程序需

    2024年02月07日
    瀏覽(31)
  • Mysql數(shù)據(jù)庫(kù)--修改root密碼的幾種方法(忘記密碼&知道密碼)

    Mysql數(shù)據(jù)庫(kù)--修改root密碼的幾種方法(忘記密碼&知道密碼)

    ?? 通過(guò) alter user root identified by \\\'新密碼\\\'; ?? 通過(guò) set password for 用戶名@\\\'用戶地址\\\' = \\\'新密碼\\\'; 2.1.1 ?? 停止mysql服務(wù) 2.1.2 ?? 創(chuàng)建mysql-init-file.txt文件 2.1.3 ?? init-file的權(quán)限(最好賦權(quán)一下) 2.1.3 ?? 使用–init-file選項(xiàng)啟動(dòng)mysql服務(wù) 2.1.4 ?? 新密碼連接測(cè)試(密碼:Zyl@123321)

    2024年02月08日
    瀏覽(93)
  • 你知道圖數(shù)據(jù)庫(kù)-Neo4j是咋回事嗎?來(lái)看看

    你知道圖數(shù)據(jù)庫(kù)-Neo4j是咋回事嗎?來(lái)看看

    一. 背景介紹 最近有粉絲問(wèn)我,百度百科中的明星關(guān)系效果是如何實(shí)現(xiàn)的呢?比如下圖這種效果: 這種功能可以用關(guān)系型數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)嗎?答案當(dāng)然是肯定的!其實(shí)簡(jiǎn)單的關(guān)系維護(hù),本就是關(guān)系型數(shù)據(jù)庫(kù)擅長(zhǎng)的事情,但如果關(guān)系維度過(guò)多且關(guān)聯(lián)足夠復(fù)雜,還適合用關(guān)系型數(shù)據(jù)

    2024年02月12日
    瀏覽(14)
  • 天天使用MySQL,你知道MySQL數(shù)據(jù)庫(kù)能抗多少壓力嗎?附(真實(shí)案例)

    天天使用MySQL,你知道MySQL數(shù)據(jù)庫(kù)能抗多少壓力嗎?附(真實(shí)案例)

    ????????今天給大家分享一個(gè)知識(shí)點(diǎn),是關(guān)于MySQL數(shù)據(jù)庫(kù)架構(gòu)演進(jìn)的,因?yàn)楹芏嘈值芴焯旎趍ysql做系統(tǒng)開(kāi)發(fā),但是寫(xiě)的系統(tǒng)都是那種 低并發(fā)壓力、小數(shù)據(jù)量 的,所以哪怕上線了也就是這么正常跑著而已,但是你知道你連接的這個(gè)MySQL數(shù)據(jù)庫(kù)他到底能抗多大并發(fā)壓力嗎?如

    2024年02月09日
    瀏覽(23)
  • 關(guān)于運(yùn)維·關(guān)于數(shù)據(jù)庫(kù)面試題

    關(guān)于運(yùn)維·關(guān)于數(shù)據(jù)庫(kù)面試題

    目錄 一、數(shù)據(jù)庫(kù)類(lèi)型 二、數(shù)據(jù)庫(kù)引擎 三、mysql數(shù)據(jù)庫(kù)類(lèi)型 四、mysql的約束添加 五、主從復(fù)制原理 六、主從方式有幾種 七、mysql主從數(shù)據(jù)不一致的原因 八、mysql的優(yōu)化 九、什么是事務(wù)的特征 十、數(shù)據(jù)庫(kù)讀寫(xiě)分離的好處 十一、怎樣優(yōu)化sql語(yǔ)句 十二、mysql的同步方式 十三、m

    2024年01月21日
    瀏覽(29)
  • 關(guān)于數(shù)據(jù)庫(kù)

    目錄 一 什么是數(shù)據(jù)庫(kù)(DB) 二 什么是數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS) 三 數(shù)據(jù)庫(kù)的作用/好處 簡(jiǎn)單理解,數(shù)據(jù)庫(kù)是存放數(shù)據(jù)的地方,就像冰箱是存放冷鮮食品的地方。 數(shù)據(jù)是數(shù)據(jù)存儲(chǔ)的基本對(duì)象,而數(shù)據(jù)分為多種形式,常見(jiàn)的是數(shù)字和文字,此外還有圖形和聲音。比如學(xué)校的數(shù)據(jù)庫(kù)里,

    2024年02月19日
    瀏覽(14)
  • 關(guān)于數(shù)據(jù)庫(kù)SQL優(yōu)化

    關(guān)于數(shù)據(jù)庫(kù)SQL優(yōu)化

    ? 在項(xiàng)目上線初期,業(yè)務(wù)數(shù)據(jù)量相對(duì)較少,SQL的執(zhí)行效率對(duì)程序運(yùn)行效率的影響可能不太明顯,因此開(kāi)發(fā)和運(yùn)維人員可能無(wú)法判斷SQL對(duì)程序的運(yùn)行效率有多大。但隨著時(shí)間的積累,業(yè)務(wù)數(shù)據(jù)量的增多,SQL的執(zhí)行效率對(duì)程序的運(yùn)行效率的影響逐漸增大,此時(shí)對(duì)SQL的優(yōu)化就很有必

    2024年02月08日
    瀏覽(86)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包