? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??摘 ?要
物聯(lián)網技術作為繼互聯(lián)網技術后新一代的通信信息集成應用的典范,其巨大的應用前景受到了學術界和政商界的廣泛關注。物聯(lián)網技術在一些傳統(tǒng)行業(yè)已經有了很深入的應用,例如,其在商品生產信息溯源、環(huán)境監(jiān)測保護、物流、供應鏈、能源等領域的成功應用。
與此同時,物聯(lián)網技術的發(fā)展也受到了安全隱私問題的制約。目前物聯(lián)網拓撲結構一般是客戶端一中央服務器模型,即中心化結構。這種結構的特點是數(shù)據(jù)管理方便、執(zhí)行效率高,但是,我們經??吹接脩魯?shù)據(jù)被有意或無意泄露,給用戶隱私帶來巨大的危害,究其原因,正是因為中央數(shù)據(jù)存儲機構監(jiān)管困難,訪問權限不明確。區(qū)塊鏈作為近年來興起的技術,具有去信任、去中心化和可溯源特性,是一種有潛力解決物聯(lián)網隱私安全的技術,因此也是國內外學術界研究的熱點。
本文著重研究了區(qū)塊鏈系統(tǒng)中的共識機制,對月前主流的共識機制在吞吐量、時延等方面做了量化的比較,分析了每種共識算法的優(yōu)勢和不足,并對目前應用廣泛的權益證明(proofof?stake)共識機制進行系統(tǒng)的研究,本文針對權益共識機制中存在的“無風險投注”問題,提出了一種新的解決策略,該策略的具體做法是允許投票節(jié)點投出支持票和反對票兩種,而不是目前存在的只能投出一種票,若節(jié)點對某一分叉投支持票該分叉最后勝出,則節(jié)點獲得收益,反之,若節(jié)點對某一分叉投出反對票且該分叉最后沒有勝出則節(jié)點獲得收益。
設計了物聯(lián)網數(shù)據(jù)交易系統(tǒng),提供了區(qū)塊鏈網絡中點對點之間交互的能力,在以太坊區(qū)塊鏈上進行了智能合約部署,設計了數(shù)據(jù)存儲方法。最后,本文設計了基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易系統(tǒng),該應用通過使用智能合約實現(xiàn)了數(shù)據(jù)的點對點自由交易,不需要第三方參與交易,這些交易不需要人為干預,物聯(lián)網數(shù)據(jù)與系統(tǒng)代幣以太幣根據(jù)智能合約制定的規(guī)則進行交換。
關鍵詞:物聯(lián)網數(shù)據(jù)交易系統(tǒng);Java;SSM;MYSQL
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Abstract
The Internet of Things (IoT) technology, as a model of the integrated application of communication and information of the new generation following the Internet technology, has attracted extensive attention from the academic and political and business circles for its huge application prospects. The Internet of Things technology has already had a very deep application in some traditional industries, for example, its successful application in commodity production information traceability, environmental monitoring and protection, logistics, supply chain, energy and other fields.
At the same time, the development of Internet of Things technology is also restricted by security and privacy issues. At present, the topology of the Internet of Things is generally the client central server model, namely the centralized structure. This structure is characterized by convenient data management and high execution efficiency. However, we often see that user data is leaked intentionally or unintentionally, which brings great harm to user privacy. The reason is that the central data storage organization is difficult to supervise and has unclear access rights. As a technology emerging in recent years, blockchain has the characteristics of distrust, decentralization and traceability. It is a technology that has the potential to solve the privacy security of the Internet of Things, so it is also a research hotspot in domestic and foreign academic circles.
This paper focuses on the consensus mechanism in the blockchain system, makes a quantitative comparison of the mainstream consensus mechanism in terms of throughput, delay, etc., analyzes the advantages and disadvantages of each consensus algorithm, and systematically studies the consensus mechanism of proof of stake, which is widely used at present. This paper proposes a new solution to the problem of "risk-free betting" in the equity consensus mechanism, The specific approach of this strategy is to allow voting nodes to cast support votes and negative votes, instead of only casting one vote at present. If a node votes in support of a fork and the fork finally wins, the node gains income. On the contrary, if a node votes against a fork and the fork does not win, the node gains income.
The Internet of Things data trading system is designed, which provides the ability of point-to-point interaction in the blockchain network. The smart contract is deployed on the Ethereum blockchain, and the data storage method is designed. Finally, this paper designs the Internet of Things data trading system based on the blockchain. This application realizes point-to-point free trading of data by using smart contracts, without the participation of a third party. These transactions do not require human intervention. The Internet of Things data and system token Ether are exchanged according to the rules established by the smart contract.
Keywords: Internet of Things data trading system; Java; SSM; MYSQ
目錄
1 緒論
1.1 研究背景與意義
1.2?研究現(xiàn)狀
1.3?相關技術介紹
2 基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易分析
2.1 可行性分析
2.1.1 技術可行性分析
2.1.2 經濟可行性分析
2.2 系統(tǒng)需求分析
2.2.1 功能性需求分析
2.2.2 非功能性分析
2.3 系統(tǒng)用例分析
3 基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易總體設計
3.1 系統(tǒng)模塊設計
3.2 數(shù)據(jù)庫設計
3.3.1 數(shù)據(jù)庫概念結構設計
3.2.2 數(shù)據(jù)庫邏輯結構設計
4 基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易設計與實現(xiàn)
4.1 系統(tǒng)首頁頁面
4.2 注冊頁面
4.3 登錄頁面
4.4 平臺資訊頁面
4.5數(shù)據(jù)交易頁面
4.6?用戶管理頁面
4.7?資源管理頁面
4.8?數(shù)據(jù)交易管理頁面
4.9?購買信息管理頁面
4.10?交易記錄管理頁面
5基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易測試
5.1 調試部分問題
5.2 系統(tǒng)測試用例
5.3 系統(tǒng)測試結果
結論
參考文獻
致??謝
1 緒論
1.1 研究背景與意義
2008年,化名為中本聰?shù)膶W者發(fā)表劃時代的論文《比特幣:一種點對點電子現(xiàn)金系統(tǒng)》",標志著區(qū)塊鏈技術的誕生。以區(qū)塊鏈作為底層技術的比特幣數(shù)字貨幣系統(tǒng)的成功將這一技術徹底將這一技術推向研究與應用的高潮,其后陸陸續(xù)續(xù)出現(xiàn)了一些較為成熟的區(qū)塊鏈平臺,其中有代表性的有Ethereum平臺、IBM?Hyperledger平臺、LISK?平臺等。在加密貨幣領域更是出現(xiàn)了數(shù)不勝數(shù)的應用,區(qū)塊鏈技術的眾多成功應用案例引起了更多人對這一新技術的重視,越來越多的商業(yè)機構都推出了自己的區(qū)塊鏈應用,例如,阿里巴巴2017年便推出了商品溯源鏈和螞蟻金服公益鏈應用,越來越多的國家將數(shù)字代幣合法化,這一切都表明區(qū)塊鏈技術所帶來的技術和思維變革為多數(shù)人漸漸接受。
區(qū)塊鏈技術的巨大潛力引起了很多傳統(tǒng)行業(yè)的注意,其中以金融領域和物聯(lián)網領域最為火熱,金融領域以支付系統(tǒng)和數(shù)字代幣為代表,出現(xiàn)了很多成功的結合案例,而在物聯(lián)網領域目前還處于比較早期的研究階段,少有較為成熟的應用推出,但是,我們看到物聯(lián)網的建設與發(fā)展確實受到了安全隱私問題的制約,具體來說是物聯(lián)網數(shù)據(jù)的隱私性、存儲安全性和數(shù)據(jù)完整性問題。首先數(shù)據(jù)隱私問題,物聯(lián)網在家居、個人醫(yī)療、交通等方面的應用使得原本屬于一些個人隱私的數(shù)據(jù)被采集起來,這些數(shù)據(jù)與個人生活息息相關,因此,物聯(lián)網在方便生活的同時,卻有損個人隱私:其次,是數(shù)據(jù)安全問題,智慧城市、能源、金融等行業(yè)已經與物聯(lián)網有了深層次的融合,這些關乎國計民生的行業(yè)數(shù)據(jù)的存儲安全不得不引起人們的擔憂,這些數(shù)據(jù)一旦被竊取或者泄露將造成很大的危害;最后是數(shù)據(jù)完整性問題,很多領域對數(shù)據(jù)完整性有著極高的要求,例如物流和商品溯源領域。這些問題是目前傳統(tǒng)物聯(lián)網架構所決定的,亟待新的解決方案。
隨著區(qū)塊鏈和物聯(lián)網獲得廣泛認可,技術世界似乎再次融合。今天,我們分別經歷了這兩種顛覆性技術的使用案例。物聯(lián)網的重要性正在為電子器件及其連接的物體帶來期待已久的技術革命。物聯(lián)網對我們的日常生活產生了更為密切的影響,預計到2020年底,將有大約200億臺設備連接在一起工作。每一項技術進步都伴隨著一些漏洞,?當數(shù)十?億設備通過中央通信通道連接時,數(shù)據(jù)安全問題可能是一項重大挑戰(zhàn),這會導致單點故障,這意味著如果黑客發(fā)現(xiàn)單個漏洞,即使安裝了各種類型安全協(xié)議的大型服務器表單,也可能會遭到損害,而區(qū)塊鏈技術是分布式數(shù)據(jù)庫技術,沒有中央機構,是有可能解決這一問題的方案。因此loT(?Internet?of?Things)?+區(qū)塊鏈方案應運而生。當然,基于區(qū)塊鏈技術的物聯(lián)網改造升級并不是一個推到重來的過程,而是一個相互融合的過程。鑒于以上分析物聯(lián)網所出現(xiàn)的問題,區(qū)塊鏈技術解決方案將帶來一下三點新的變化:
(一)數(shù)據(jù)安全隱私方面有了新的解決方案。傳統(tǒng)的物聯(lián)網架構是中心化的結構,所有的數(shù)據(jù)都被中央機構統(tǒng)一采集管理,?首先,這種架構本身對數(shù)據(jù)安全就是一個威脅,一旦中央管理機構出現(xiàn)安全漏洞將危及大量用戶數(shù)據(jù)安全隱私;其次,中央管理機構掌握著數(shù)據(jù)訪問權限,出于商業(yè)利益將用戶數(shù)據(jù)出售的風險確實存在。而在區(qū)塊鏈技術中,沒有中心化的機構,每一個數(shù)據(jù)操作都需要用戶身份驗證,同時每一個數(shù)據(jù)操作的日志會被永久地記錄在區(qū)塊中,這樣,數(shù)據(jù)管理權限就掌握在了每一個用戶手中,從而徹底解決數(shù)據(jù)安全隱私問題。
(二)區(qū)塊鏈技術使得物聯(lián)網數(shù)據(jù)有了新的交易模式。區(qū)塊鏈最大的優(yōu)勢就是可以去信任地進行交易,用戶與用戶之間可以通過智能合約制定條款直接進行數(shù)據(jù)交易,不需要人為干預,這極大地提高了數(shù)據(jù)利用效率。
(三)區(qū)塊鏈技術降低了企業(yè)成本。物聯(lián)網設備呈現(xiàn)兒何級增長,傳統(tǒng)物聯(lián)網架構下中央機構的計算、存儲、維護等成本壓力驟升,而區(qū)塊鏈技術維護是點對點網絡中每個節(jié)點完成的,分散了壓力,提高容錯能力。
1.2研究現(xiàn)狀
區(qū)塊鏈是一種去中心化,分布式賬本系統(tǒng)。它利用密碼學原理來保證信息傳遞和處理的安全性;同時采用智能合約實現(xiàn)了對資源的透明訪問以及對用戶權限控制等功能?;趨^(qū)塊鏈技術的物聯(lián)網數(shù)據(jù)應用場景及優(yōu)勢:
(1)通過智能合約進行數(shù)據(jù)流轉;
(2)提高數(shù)據(jù)價值的挖掘能力;
(3)提升數(shù)據(jù)存儲效率。在此基礎上提出一種基于區(qū)塊鏈的物聯(lián)云平臺架構方案,包括底層基礎設施層、應用服務器層與上層服務層三部分。該架構將區(qū)塊鏈技術融入到傳統(tǒng)數(shù)據(jù)中心中,可以有效解決傳統(tǒng)數(shù)據(jù)中心所存在的問題:虛擬化程度低;數(shù)據(jù)安全風險大;無法提供統(tǒng)一的數(shù)據(jù)共享標準;業(yè)務連續(xù)性差等。??????最后以智慧城市管理為例進行實驗測試,結果表明該框架可滿足海量異構數(shù)據(jù)組織、傳輸、存儲等需求。
1.3相關技術介紹
(1)基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易中的web后臺管理中的后端不再使用古老的jsp+javabean+servlet技術,而是使用當前主流的SSM框架,它減少java配置代碼,簡化編程代碼,目前SSM框架也是很多企業(yè)選擇的框架之一。
(2)基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易中的web后臺管理中的前端使用的是bootstrap框架,它配合ajax和jquery可以美化頁面設計。
(3)流行vue框架結合jQuery技術,在jQuery基礎上擴展一些插件,通過自己定義插件更好的實現(xiàn)前端的設計。
(4)基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易中數(shù)據(jù)庫用的mysql5.7,它執(zhí)行效率高。
2 基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易分析
2.1 可行性分析
2.1.1 技術可行性分析
通過了解對基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的真實需求后,將基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易所需要的角色劃分整理成了下圖2-1,圖2-2和圖2-3。
從開發(fā)工具來看,由于基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易是基于JAVA的,因此有很多開發(fā)工具都可以進行開發(fā),這些功能強大的開發(fā)工具可以給我來設計基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易帶來非常大的方便。
從基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的本身技術來說,對于我來開發(fā)一個基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易這個畢設是不費事的。基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的開發(fā)可以簡單的分為前臺端、后臺端開發(fā)以及數(shù)據(jù)庫開發(fā)。其中的大部分技術難點在我上學時已經使用過了,同時網絡上很多技術點可以讓我來借鑒。Web后臺管理使用JAVA[9]的SSM架構開發(fā),數(shù)據(jù)庫使用mysql,頁面上使用javascript腳本,因此為我在開發(fā)基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易這個畢設上省去了很多多余代碼,這給我的畢設項目編寫帶來了極大的便利。綜上所述,從技術層面來看開發(fā)基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易是可行的。
從用戶體驗來看,市面上很多被廣泛使用的系統(tǒng)案例可以讓我來參考,因此我可以綜合它們的頁面交互設計的優(yōu)點,基于我的畢設項目特點來進行改版,最后達到令用戶滿意的頁面交互體驗。綜上所述,從技術層面來看開發(fā)基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易是可行的。
2.1.2?經濟可行性分析
從基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的開發(fā)成本來看,基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的設計和開發(fā)都是我自己完成的,沒有其他成本上的開銷。
從基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的維護成本來看,基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的開發(fā)遵循一套完整的代碼編寫規(guī)范,并且基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的結構設計非常靈活,遵循高內聚低耦合的原則,因此易于維護和迭代開發(fā)。
在基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易上線之后,上線前期我會根據(jù)真實需求來調查,對使用我開發(fā)的基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易來制定一套符合的使用費。系統(tǒng)運行穩(wěn)定后我會將推廣范圍到其他的校園當中,其他校園可以使用我的基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易,只需要繳納一點點的定金,我會給他們引入廣告投資和自營業(yè)務。
綜合以上的分析,基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易所帶來的經濟效益將會帶來極大的收益。并且隨著我的推廣,來使用我開發(fā)的基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的市場將越來越大,基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易帶來的利潤也就越來越多。因此,從經濟層面來看開發(fā)基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的是可行的。
2.2 系統(tǒng)需求分析
2.2.1?功能性需求分析
基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易從角色上劃分為了系統(tǒng)用戶、管理員兩種角色。
管理員用戶角色:
(1)登錄:管理員的賬號是在數(shù)據(jù)表表中直接設置生成的,不需要進行注冊;
(2)公告管理:當點擊“公告管理”這一菜單的時候,會出現(xiàn)公告欄這一個子菜單,可以對這個模塊進行增刪改查操作;
(3)系統(tǒng)用戶管理:當點擊“系統(tǒng)用戶管理”這一菜單的時候,會出現(xiàn)管理員+用戶兩個子菜單,可以對這兩個模塊進行增刪改查操作;
(4)資源管理:當點擊“資源管理”這一菜單的時候,會出現(xiàn)平臺資訊+資訊分類這兩個子菜單,可以對平臺資訊進行增刪改查操作;
(5)模塊管理:當點擊“模塊管理”這一菜單的時候,會出現(xiàn)余額充值+數(shù)據(jù)交易+購買信息+交易記錄這四個子菜單,能夠對購買信息進行增刪改查操作,對數(shù)據(jù)交易進行管理,以及實現(xiàn)對交易記錄進行管理等;
系統(tǒng)用戶角色:
(1)注冊登錄模塊:當系統(tǒng)用戶想要進入本基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易中對資訊進行查看評論以及了解藥品信息等操作的時候,就必須要登錄到系統(tǒng)當中,要是新的用戶沒有基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的賬號的話,點擊“注冊”按鈕,就會進入到新用戶注冊這個界面上,用戶輸入對應的賬號(必須填寫)+密碼(必須填寫)+確認密碼(必須填寫,而且要與密碼一直)+昵稱+郵箱+手機號+選擇用戶身份等等,然后點擊“注冊”,系統(tǒng)在用戶這一數(shù)據(jù)庫中會查詢賬號是不是存在,兩次密碼是不是一樣,都填寫正確就會注冊成功,然后再進行登錄,如果是之前已經注冊過的用戶很長時間沒有使用,忘記密碼,也可以點擊“忘記密碼”進行找回;
(2)平臺資訊:在首頁導航欄上我們會看到“平臺資訊”這一菜單,我們點擊進入進去以后,會看到所有資訊列表,在這個界面,我們可以點擊進入進行查看、評論、點贊等;
(3)公告消息:在首頁導航欄上我們會看到“公告消息”這一菜單,我們點擊進入進去以后,會看到所有管理員在后臺發(fā)布的公告信息;
(4)我的收藏:在“我的”下可以查看管理“我的收藏”信息,可以查看收藏,也可以對不喜歡的信息進行刪除收藏;
(5)我的賬戶:當用戶點擊右上角“我的”這個按鈕,會出現(xiàn)子菜單,點擊“我的賬戶”可以對個人的資料以及登錄系統(tǒng)的密碼進行設置;
(6)個人中心:當用戶點擊右上角“我的”這個按鈕,就會進入到對應的后臺進行信息的管理了;
2.2.2 非功能性分析
基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的非功能性需求比如基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的安全性怎么樣,可靠性怎么樣,性能怎么樣,可拓展性怎么樣等。具體可以表示在如下2-1表格中:
表2-1基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易非功能需求表
安全性 |
主要指基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易數(shù)據(jù)庫的安裝,數(shù)據(jù)庫的使用和密碼的設定必須合乎規(guī)范。 |
可靠性 |
可靠性是指基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易能夠安裝用戶的指示進行操作,經過測試,可靠性90%以上。 |
性能 |
性能是影響基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易占據(jù)市場的必要條件,所以性能最好要佳才好。 |
可擴展性 |
比如數(shù)據(jù)庫預留多個屬性,比如接口的使用等確保了系統(tǒng)的非功能性需求。 |
易用性 |
用戶只要跟著基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的頁面展示內容進行操作,就可以了。 |
可維護性 |
基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易開發(fā)的可維護性是非常重要的,經過測試,可維護性沒有問題 |
2.3?系統(tǒng)用例分析
根據(jù)上一節(jié)功能分析,可以得出系統(tǒng)的用例,系統(tǒng)用戶角色用例如圖2.1所示。

圖2.1?基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易中系統(tǒng)用戶角色用例圖
管理員角色用例如圖2.2所示。

圖2.2?基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易管理員角色用例圖
3?基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易總體設計
3.1 系統(tǒng)模塊設計
根據(jù)第二章中基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的功能分析可知,基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易中整體功能模塊圖如圖3.1所示,?

圖3.1?基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易功能模塊圖
3.2 數(shù)據(jù)庫設計
3.3.1 數(shù)據(jù)庫概念結構設計
下面是整個基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易中主要的數(shù)據(jù)庫表總E-R實體關系圖。

圖3.2?基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易總E-R關系圖
3.2.2 數(shù)據(jù)庫邏輯結構設計
通過上一小節(jié)中基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易中總E-R關系圖上得出一共需要創(chuàng)建很多個數(shù)據(jù)表。在此我主要羅列幾個主要的數(shù)據(jù)庫表結構設計。
(1)transaction表:
名稱 |
類型 |
長度 |
不是null |
主鍵 |
注釋 |
transaction_id |
int |
11 |
是 |
是 |
交易記錄ID |
data_name |
varchar |
64 |
否 |
否 |
數(shù)據(jù)名稱 |
selling_users |
int |
11 |
否 |
否 |
出售用戶 |
selling_price |
int |
11 |
否 |
否 |
出售價格 |
full_name |
varchar |
64 |
否 |
否 |
姓名 |
user_no |
varchar |
64 |
否 |
否 |
用戶編號 |
buying_users |
int |
11 |
否 |
否 |
購買用戶 |
user_address |
varchar |
64 |
否 |
否 |
用戶地址 |
data_key |
varchar |
64 |
否 |
否 |
數(shù)據(jù)密鑰 |
equipment_type |
varchar |
64 |
否 |
否 |
設備類型 |
data_type |
varchar |
64 |
否 |
否 |
數(shù)據(jù)類型 |
data_hash |
varchar |
64 |
否 |
否 |
數(shù)據(jù)哈希 |
incidental_information |
text |
0 |
否 |
否 |
附帶信息 |
order_number |
varchar |
64 |
否 |
否 |
訂單號 |
recommend |
int |
11 |
是 |
否 |
智能推薦 |
create_time |
datetime |
0 |
是 |
否 |
創(chuàng)建時間 |
update_time |
timestamp |
0 |
是 |
否 |
更新時間 |
(2)system_user表:
名稱 |
類型 |
長度 |
不是null |
主鍵 |
注釋 |
system_user_id |
int |
11 |
是 |
是 |
系統(tǒng)用戶ID |
full_name |
varchar |
64 |
否 |
否 |
姓名 |
gender |
varchar |
64 |
否 |
否 |
性別 |
user_balance |
int |
11 |
否 |
否 |
用戶余額 |
user_no |
varchar |
64 |
是 |
否 |
用戶編號 |
examine_state |
varchar |
16 |
是 |
否 |
審核狀態(tài) |
recommend |
int |
11 |
是 |
否 |
智能推薦 |
user_id |
int |
11 |
是 |
否 |
用戶ID |
create_time |
datetime |
0 |
是 |
否 |
創(chuàng)建時間 |
update_time |
timestamp |
0 |
是 |
否 |
更新時間 |
(3)recharge_balance表:
名稱 |
類型 |
長度 |
不是null |
主鍵 |
注釋 |
recharge_balance_id |
int |
11 |
是 |
是 |
余額充值ID |
rechargeable_user |
int |
11 |
否 |
否 |
充值用戶 |
full_name |
varchar |
64 |
否 |
否 |
姓名 |
gender |
varchar |
64 |
否 |
否 |
性別 |
user_balance |
varchar |
64 |
否 |
否 |
用戶余額 |
recharge_amount |
int |
11 |
否 |
否 |
充值金額 |
recharging_remarks |
varchar |
64 |
否 |
否 |
充值備注 |
user_no |
varchar |
64 |
否 |
否 |
用戶編號 |
recommend |
int |
11 |
是 |
否 |
智能推薦 |
create_time |
datetime |
0 |
是 |
否 |
創(chuàng)建時間 |
update_time |
timestamp |
0 |
是 |
否 |
更新時間 |
(4)purchase_informatio表:
名稱 |
類型 |
長度 |
不是null |
主鍵 |
注釋 |
purchase_information_id |
int |
11 |
是 |
是 |
購買信息ID |
data_name |
varchar |
64 |
否 |
否 |
數(shù)據(jù)名稱 |
data_classification |
varchar |
64 |
否 |
否 |
數(shù)據(jù)分類 |
selling_users |
int |
11 |
否 |
否 |
出售用戶 |
selling_price |
int |
11 |
否 |
否 |
出售價格 |
buying_users |
int |
11 |
否 |
否 |
購買用戶 |
user_address |
varchar |
64 |
否 |
否 |
用戶地址 |
data_key |
varchar |
64 |
否 |
否 |
數(shù)據(jù)密鑰 |
full_name |
varchar |
64 |
否 |
否 |
姓名 |
user_no |
varchar |
64 |
否 |
否 |
用戶編號 |
order_number |
varchar |
64 |
否 |
否 |
訂單號 |
recommend |
int |
11 |
是 |
否 |
智能推薦 |
create_time |
datetime |
0 |
是 |
否 |
創(chuàng)建時間 |
update_time |
timestamp |
0 |
是 |
否 |
更新時間 |
?(5)data_transaction表:
名稱 |
類型 |
長度 |
不是null |
主鍵 |
注釋 |
data_transaction_id |
int |
11 |
是 |
是 |
數(shù)據(jù)交易ID |
data_name |
varchar |
64 |
否 |
否 |
數(shù)據(jù)名稱 |
data_classification |
varchar |
64 |
否 |
否 |
數(shù)據(jù)分類 |
cover_photo |
varchar |
255 |
否 |
否 |
封面圖片 |
data_description |
text |
0 |
否 |
否 |
數(shù)據(jù)描述 |
selling_users |
int |
11 |
否 |
否 |
出售用戶 |
selling_price |
int |
11 |
否 |
否 |
出售價格 |
hits |
int |
11 |
是 |
否 |
點擊數(shù) |
recommend |
int |
11 |
是 |
否 |
智能推薦 |
create_time |
datetime |
0 |
是 |
否 |
創(chuàng)建時間 |
update_time |
timestamp |
0 |
是 |
否 |
更新時間 |
?(6)comment表:
名稱 |
類型 |
長度 |
不是null |
主鍵 |
注釋 |
comment_id |
int |
11 |
是 |
是 |
評論ID |
user_id |
int |
11 |
是 |
否 |
評論人ID |
reply_to_id |
int |
11 |
是 |
否 |
回復評論ID |
content |
longtext |
0 |
否 |
否 |
內容 |
nickname |
varchar |
255 |
否 |
否 |
昵稱 |
avatar |
varchar |
255 |
否 |
否 |
頭像地址 |
create_time |
timestamp |
0 |
是 |
否 |
創(chuàng)建時間 |
update_time |
timestamp |
0 |
是 |
否 |
更新時間 |
source_table |
varchar |
255 |
否 |
否 |
來源表 |
source_field |
varchar |
255 |
否 |
否 |
來源字段 |
source_id |
int |
10 |
是 |
否 |
來源ID |
4 基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易設計與實現(xiàn)
基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的詳細設計與實現(xiàn)主要是根據(jù)前面的基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的需求分析和基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的總體設計來設計頁面并實現(xiàn)業(yè)務邏輯。主要從基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易界面實現(xiàn)、業(yè)務邏輯實現(xiàn)這兩部分進行介紹。
4.1?系統(tǒng)首頁頁面
當進入基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的時候,首先映入眼簾的是系統(tǒng)的導航欄,下面是輪播圖以及系統(tǒng)內容,其主界面展示如下圖4.1所示。

圖4.1 系統(tǒng)用戶界面圖
4.2 注冊頁面
不是基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易中正式用戶的是可以在線進行注冊的,如果你沒有本基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的賬號的話,添加“注冊”,當填寫上自己的賬號+密碼+確認密碼+昵稱+郵箱+手機號等后再點擊“注冊”按鈕后將會先驗證輸入的有沒有空數(shù)據(jù),再次驗證密碼和確認密碼是否是一樣的,最后驗證輸入的賬戶名和數(shù)據(jù)庫表中已經注冊的賬戶名是否重復,只有都驗證沒問題后即可用戶注冊成功。注冊界面實現(xiàn)了系統(tǒng)用戶用戶的注冊,其注冊界面展示如下圖4。2所示。

圖4.2 注冊界面圖
系統(tǒng)用戶注冊邏輯代碼如下:
/**
?????* 注冊
?????* @return
?????*/
????@PostMapping("register")
????public Map<String, Object> signUp(HttpServletRequest request) throws IOException {
????????// 查詢用戶
????????Map<String, String> query = new HashMap<>();
????????Map<String,Object> map = service.readBody(request.getReader());
????????query.put("username",String.valueOf(map.get("username")));
????????List list = service.selectBaseList(service.select(query, new HashMap<>()));
????????if (list.size()>0){
????????????return error(30000, "用戶已存在");
????????}
????????map.put("password",service.encryption(String.valueOf(map.get("password"))));
????????service.insert(map);
????????return success(1);
}
????public Map<String,Object> readBody(BufferedReader reader){
????????BufferedReader br = null;
????????StringBuilder sb = new StringBuilder("");
????????try{
????????????br = reader;
????????????String str;
????????????while ((str = br.readLine()) != null){
????????????????sb.append(str);
????????????}
????????????br.close();
????????????String json = sb.toString();
????????????return JSONObject.parseObject(json, Map.class);
????????}catch (IOException e){
????????????e.printStackTrace();
????????}finally{
????????????if (null != br){
????????????????try{
????????????????????br.close();
????????????????}catch (IOException e){
????????????????????e.printStackTrace();
????????????????}
????????????}
????????}
????????return null;
????}
????public void insert(Map<String,Object> body){
????????E entity = JSON.parseObject(JSON.toJSONString(body),eClass);
????????baseMapper.insert(entity);
????????log.info("[{}] - 插入操作:{}",entity);
}
4.3 登錄頁面
基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易中的前臺上注冊后的用戶是可以通過自己的賬戶名和密碼進行登錄的,當用戶輸入完整的自己的賬戶名和密碼信息并點擊“登錄”按鈕后,將會首先驗證輸入的有沒有空數(shù)據(jù),再次驗證輸入的賬戶名+密碼和數(shù)據(jù)庫中當前保存的用戶信息是否一致,只有在一致后將會登錄成功并自動跳轉到基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的首頁中;否則將會提示相應錯誤信息,用戶登錄界面如下圖4.3所示。

圖4.3 登錄界面圖
系統(tǒng)用戶登錄的邏輯代碼如下所示。
/**
?????* 登錄
?????* @param data
?????* @param httpServletRequest
?????* @return
?????*/
????@PostMapping("login")
????public Map<String, Object> login(@RequestBody Map<String, String> data, HttpServletRequest httpServletRequest) {
????????log.info("[執(zhí)行登錄接口]");
????????String username = data.get("username");
????????String email = data.get("email");
????????String phone = data.get("phone");
????????String password = data.get("password");
????????List resultList = null;
????????QueryWrapper wrapper = new QueryWrapper<User>();
????????Map<String, String> map = new HashMap<>();
????????if(username != null && "".equals(username) == false){
????????????map.put("username", username);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}
????????else if(email != null && "".equals(email) == false){
????????????map.put("email", email);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}
????????else if(phone != null && "".equals(phone) == false){
????????????map.put("phone", phone);
????????????resultList = service.selectBaseList(service.select(map, new HashMap<>()));
????????}else{
????????????return error(30000, "賬號或密碼不能為空");
????????}
????????if (resultList == null || password == null) {
????????????return error(30000, "賬號或密碼不能為空");
????????}
????????//判斷是否有這個用戶
????????if (resultList.size()<=0){
????????????return error(30000,"用戶不存在");
????????}
????????User byUsername = (User) resultList.get(0);
????????Map<String, String> groupMap = new HashMap<>();
????????groupMap.put("name",byUsername.getUserGroup());
????????List groupList = userGroupService.selectBaseList(userGroupService.select(groupMap, new HashMap<>()));
????????if (groupList.size()<1){
????????????return error(30000,"用戶組不存在");
????????}
????????UserGroup userGroup = (UserGroup) groupList.get(0);
????????//查詢用戶審核狀態(tài)
????????if (!StringUtils.isEmpty(userGroup.getSourceTable())){
????????????String res = service.selectExamineState(userGroup.getSourceTable(),byUsername.getUserId());
????????????if (res==null){
????????????????return error(30000,"用戶不存在");
????????????}
????????????if (!res.equals("已通過")){
????????????????return error(30000,"該用戶審核未通過");
????????????}
????????}
????????//查詢用戶狀態(tài)
????????if (byUsername.getState()!=1){
????????????return error(30000,"用戶非可用狀態(tài),不能登錄");
????????}????????String md5password = service.encryption(password);
????????if (byUsername.getPassword().equals(md5password)) {
????????????// 存儲Token到數(shù)據(jù)庫
????????????AccessToken accessToken = new AccessToken();
????????????accessToken.setToken(UUID.randomUUID().toString().replaceAll("-", ""));
????????????accessToken.setUser_id(byUsername.getUserId());
????????????tokenService.save(accessToken);
????????????// 返回用戶信息
????????????JSONObject user = JSONObject.parseObject(JSONObject.toJSONString(byUsername));
????????????user.put("token", accessToken.getToken());
????????????JSONObject ret = new JSONObject();
????????????ret.put("obj",user);
????????????return success(ret);
????????} else {
????????????return error(30000, "賬號或密碼不正確");
????????}
}
????public String select(Map<String,String> query,Map<String,String> config){
????????StringBuffer sql = new StringBuffer("select ");
????????sql.append(config.get(FindConfig.FIELD) == null || "".equals(config.get(FindConfig.FIELD)) ? "*" : config.get(FindConfig.FIELD)).append(" ");
????????sql.append("from ").append("`").append(table).append("`").append(toWhereSql(query, "0".equals(config.get(FindConfig.LIKE))));
????????if (config.get(FindConfig.GROUP_BY) != null && !"".equals(config.get(FindConfig.GROUP_BY))){
????????????sql.append("group by ").append(config.get(FindConfig.GROUP_BY)).append(" ");
????????}
????????if (config.get(FindConfig.ORDER_BY) != null && !"".equals(config.get(FindConfig.ORDER_BY))){
????????????sql.append("order by ").append(config.get(FindConfig.ORDER_BY)).append(" ");
????????}
????????if (config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE))){
????????????int page = config.get(FindConfig.PAGE) != null && !"".equals(config.get(FindConfig.PAGE)) ? Integer.parseInt(config.get(FindConfig.PAGE)) : 1;
????????????int limit = config.get(FindConfig.SIZE) != null && !"".equals(config.get(FindConfig.SIZE)) ? Integer.parseInt(config.get(FindConfig.SIZE)) : 10;
????????????sql.append(" limit ").append( (page-1)*limit ).append(" , ").append(limit);
????????}
????????log.info("[{}] - 查詢操作,sql: {}",table,sql);
????????return sql.toString();
}
????public List selectBaseList(String select) {
????????List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
????????List<E> list = new ArrayList<>();
????????for (Map<String,Object> map:mapList) {
????????????list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
????????}
????????return list;
}
4.4 平臺資訊頁面
當用戶點擊“平臺資訊”以后就會進入到以下界面,用戶可以輸入關鍵詞搜索資訊內容,查看點贊數(shù)以及點擊數(shù),然后點擊到資訊的詳細的界面,在這個詳細界面可以點贊+評論。其出界面展示如下圖4.4所示。

圖4.4 平臺資訊界面圖
4.5數(shù)據(jù)交易頁面
當用戶點擊“數(shù)據(jù)交易”以后就會給我們展示數(shù)據(jù)交易的列表,選擇一個數(shù)據(jù)交易進入到圖4.5界面中,用戶可以對數(shù)據(jù)交易進行購買,點擊購買按鈕,進入到4.6界面中,輸入數(shù)據(jù)名稱、數(shù)據(jù)分類、出售用戶、出售價格、用戶地址、訂單號、用戶編號等,點擊“提交”按鈕,就會顯示購買成功。

圖4.5 數(shù)據(jù)交易界面圖

圖4.6 購買界面圖
數(shù)據(jù)交易的邏輯代碼如下:
@RequestMapping(value = "/del")
????@Transactional
????public Map<String, Object> del(HttpServletRequest request) {
????????service.delete(service.readQuery(request), service.readConfig(request));
????????return success(1);
}
4.6?用戶管理頁面
此功能為管理員的功能,管理員點擊“系統(tǒng)用戶管理”菜單后,會展示出管理員+系統(tǒng)用戶兩個子菜單,任何可以對其進行增刪改查操作;其界面展示如下圖4.7所示。

圖4.7?系統(tǒng)用戶管理界面圖
用戶管理關鍵代碼如下所示。
public List selectBaseList(String select) {
????????List<Map<String,Object>> mapList = baseMapper.selectBaseList(select);
????????List<E> list = new ArrayList<>();
????????for (Map<String,Object> map:mapList) {
????????????list.add(JSON.parseObject(JSON.toJSONString(map),eClass));
????????}
????????return list;
}
4.7資源管理頁面
此功能為管理員的功能,管理員點擊“資源管理”菜單后,會展示出平臺資訊+資訊分類兩個子菜單,任何可以對其進行增刪改查操作;其界面展示如下圖4.8所示。

圖4.8?資源管理界面圖
4.8?數(shù)據(jù)交易管理頁面
此功能為管理員的功能,管理員點擊“數(shù)據(jù)交易”菜單后,會展示出添加數(shù)據(jù)交易欄,可以對數(shù)據(jù)交易信息進行增刪改查操作;其界面展示如下圖4.9所示。

圖4.9?數(shù)據(jù)交易管理界面圖
4.9?購買信息管理頁面
此功能為管理員的功能,管理員點擊“購買信息”菜單后能夠對購買信息進行增刪改查操作;其界面展示如下圖4.10所示。

圖4.10?購買信息管理界面圖
4.10?交易記錄管理頁面
此功能為管理員的功能,管理員點擊“交易記錄”菜單后能夠對交易記錄進行增刪改查操作;其界面展示如下圖4.11所示。

圖4.11?交易記錄管理界面圖
5基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易測試
基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易測試是為了檢驗軟件是否達到設計要求,是否存在錯誤,通過測試的方法來檢查基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易,以便發(fā)現(xiàn)基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易中的錯誤。測試工作是保證基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易質量的關鍵。
5.1 調試部分問題
問題1:數(shù)據(jù)庫無法添加中文。
解決過程:重新創(chuàng)建數(shù)據(jù)庫,將庫的編碼格式改為utf8。
效果:能在新庫的表中添加中文。
問題2:控制臺報錯前臺與后臺參數(shù)不一致
解決過程:檢查代碼,找到報錯參數(shù)完成修改,繼續(xù)報錯,服務器移除項目重新運行。
效果:重啟項目不再報錯。
問題3:報錯No bean named 'sysLogServiceImpl' available找不到名為sysLogServiceImpl的bean的對象。
解決過程:詢問導師報錯原因,發(fā)現(xiàn)錯誤原因是未添加注解@Service,需要在在impl實現(xiàn)類的外面添加@Service注解。
效果:重新debug項目無報錯。
問題4:啟動項目時報錯:Mapped Statements collection does not contain value for
解決過程:網上搜索解決辦法,出錯可能的原因有多個,經過努力排查,錯誤原因是mapper映射地址有誤。在mybatis-config里重新配置地址。
效果:項目啟動正常
5.2?系統(tǒng)測試用例
系統(tǒng)測試包括:數(shù)據(jù)交易添加功能測試、購買信息功能測試、交易記錄添加功能測試、余額充值功能測試這四大功能測試,如表5.1到5.4所示:
表5.1數(shù)據(jù)交易添加功能測試表
測試名稱 |
測試功能 |
操作過程 |
預期結果 |
測試結果 |
數(shù)據(jù)交易添加功能模塊測試 |
管理員添加數(shù)據(jù)交易功能是否正常 |
管理員登錄成功后點擊“添加數(shù)據(jù)交易”菜單 |
管理員根據(jù)提示并依次輸入數(shù)據(jù)交易名稱+數(shù)據(jù)名稱+數(shù)據(jù)分類+出售用戶+用戶編號等,后點擊“提交”按鈕 |
數(shù)據(jù)交易添加信息功能正常 |
表5.2?購買信息功能測試表
測試名稱 |
測試功能 |
操作過程 |
預期結果 |
測試結果 |
購買信息添加功能模塊測試 |
系統(tǒng)用戶添加購買信息功能是否正常 |
系統(tǒng)用戶登錄成功后點擊“添加購買信息”菜單 |
系統(tǒng)用戶根據(jù)提示并依次輸入數(shù)據(jù)名稱+出售價格等,后點擊“提交”按鈕 |
購買添加信息功能正常 |
表5.3?交易記錄添加功能測試表
測試名稱 |
測試功能 |
操作過程 |
預期結果 |
測試結果 |
交易記錄添加功能模塊測試 |
交易記錄添加交易記錄功能是否正常 |
管理員登錄成功后點擊“添加交易記錄”菜單 |
管理員根據(jù)提示并依次輸入用戶編號+購買用戶等,后+用戶地址 數(shù)據(jù)類型點擊“提交”按鈕 |
交易記錄添加信息功能正常 |
表5.4余額充值功能測試表
測試名稱 |
測試功能 |
操作過程 |
預期結果 |
測試結果 |
余額充值功能模塊測試 |
余額充值功能是否正常 |
系統(tǒng)用戶登錄成功后點擊余額充值中的“開取”按鈕 |
系統(tǒng)用戶根據(jù)提示填寫充值信息點擊“提交”按鈕 |
余額充值信息功能正常 |
5.3?系統(tǒng)測試結果
通過上面章節(jié)編寫基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的測試用例,已經測試完畢了數(shù)據(jù)交易添加功能測試、購買信息測試、交易記錄添加功能測試、余額充值功能測試,通過這4大模塊為基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易的后期推廣運營提供了強力的技術支撐。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?結論
至此,基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易已經結束,在開發(fā)前做了許多的準備,在本系統(tǒng)的設計和開發(fā)過程中閱覽和學習了許多文獻資料,從中我也收獲了很多寶貴的方法和設計思路,對系統(tǒng)的開發(fā)也起到了很重要的作用,系統(tǒng)的開發(fā)技術選用的都是自己比較熟悉的,比如SSM、JAVA技術、MYSQL,這些技術都是在以前的學習中學到了,其中許多的設計思路和方法都是在以前不斷地學習中摸索出來的經驗,其實對于我們來說工作量還是比較大的,但是正是由于之前的積累與準備,才能順利的完成這個項目,由此看來,積累經驗跟做好準備是十分重要的事情。
當然在該系統(tǒng)的設計與實現(xiàn)的過程中也離不開老師以及同學們的幫助,正是因為他們的指導與幫助,我才能夠成功的在預期內完成了這個系統(tǒng)。同時在這個過程當中我也收獲了很多東西,此系統(tǒng)也有需要改進的地方,但是由于專業(yè)知識的淺薄,并不能做到十分完美,希望以后有機會可以讓其真正的投入到使用之中。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??參考文獻
[1]金煒,張戈力.基于技術融合-演進模型的物聯(lián)網和區(qū)塊鏈技術在能源物聯(lián)網中的應用分析[J].物聯(lián)網技術,2022,12(11):117-120.DOI:10.16667/j.issn.2095-1302.2022.11.035.
[2]李敦鋒,肖瑤,馮勇.一種面向物聯(lián)網數(shù)據(jù)交易的高效PCN路由策略[J].計算機科學,2022,49(S2):696-700.
[3]白翔,許從方,柳興,張磊.區(qū)塊鏈物聯(lián)網安全技術綜述及關鍵技術分析[J].信息技術,2022(10):24-30+40.DOI:10.13274/j.cnki.hdzj.2022.10.005.
[4]王棋.基于SSM框架的網上攝影系統(tǒng)設計與實現(xiàn)[J].電子質量,2022(10):89-93.
[5]謝霜.基于Java技術的網絡管理體系結構的應用[J].網絡安全技術與應用,2022(10):14-15.
[6]蘇婉怡,揣小龍,趙國松,王煜堯.基于Java技術的考試系統(tǒng)關鍵點研究[J].無線互聯(lián)科技,2022,19(18):58-60.
[7]楊玉蓮.基于SSM框架的智能煤質化驗室綜合管理系統(tǒng)[J].煤礦現(xiàn)代化,2022,31(05):100-104+109.DOI:10.13606/j.cnki.37-1205/td.2022.05.005.
[8]林佳一.混合式教學在高職MySQL數(shù)據(jù)庫課程的實踐研究[J].電腦知識與技術,2022,18(26):133-135.DOI:10.14004/j.cnki.ckt.2022.1737.
[9]李罡,周正茂. 基于Java技術實現(xiàn)內存鍵值數(shù)據(jù)管理的方法及其裝置[P]. 北京市:CN114840498B,2022-09-13.
[10]王勁松,楊唯正,趙澤寧,魏佳佳.基于有向無環(huán)圖的區(qū)塊鏈技術綜述[J].計算機工程,2022,48(06):11-23.DOI:10.19678/j.issn.1000-3428.0064002.
[11]劉文妍. 面向區(qū)塊鏈與物聯(lián)網融合的數(shù)據(jù)篩選及交易排序服務研究[D].山東大學,2022.DOI:10.27272/d.cnki.gshdu.2022.000754.
[12]張學典,林至锽.一種基于區(qū)塊鏈的物聯(lián)網架構設計[J].軟件導刊,2022,21(05):145-150.
[13]郭紅, 基于java的軟件開發(fā)環(huán)境檢測軟件V1.0. 湖北省,武漢東湖學院,2021-10-01.
[14]高宇波. 基于區(qū)塊鏈與霧節(jié)點信譽的物聯(lián)網訪問控制和數(shù)據(jù)共享的研究[D].西安理工大學,2021.DOI:10.27398/d.cnki.gxalu.2021.000861.
[15]張亞川. 基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)共享模型與關鍵機制的研究與實現(xiàn)[D].北京工業(yè)大學,2021.DOI:10.26935/d.cnki.gbjgu.2021.000118.
[16]楊晟. 基于泛在電力物聯(lián)網與區(qū)塊鏈的綜合能源服務研究[D].華北電力大學(北京),2021.DOI:10.27140/d.cnki.ghbbu.2021.001174.
[17]高翩翩. 基于區(qū)塊鏈的物聯(lián)網智能合約模型[D].江蘇科技大學,2021.DOI:10.27171/d.cnki.ghdcc.2021.000383.
[18]Witsarut Sriratana,Vittaya Khagwian,Sutham Satthamsakul. Analysis of Electric Current by Using MySQL Database on Web Server for Machine Performance Evaluation: A Case Study of Air Conditioning System[J]. ????????? ?????? ???,2020.
[19]. Design and Implementation of ERP System Based on SSM Framework[J]. ,2020,440(5).
[20]Margaretha Ohyver,Jurike V. Moniaga,Iwa Sungkawa,Bonifasius Edwin Subagyo,Ian Argus Chandra. The Comparison Firebase Realtime Database and MySQL Database Performance using Wilcoxon Signed-Rank Test[J]. Procedia Computer Science,2019,157(C).
[21]Ping Wanxin,Chen Yuankun,Hou Xiaoyan. Design of Campus Bicycle Rental Management System Based on SSM Framework[J]. Journal of Physics: Conference Series,2019,1314.
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 致 ?謝
時間過的很快,不知不覺,在中北大學的學習生活即將結束。畢業(yè)之際,我真誠地向幫助過我的老師、家人、同學、朋友們表達感謝。首先要感謝的是我的母校。感謝母校給了我美好的生活和優(yōu)越的學習環(huán)境,使我能學到了很多知識,也不斷的變得優(yōu)秀;感謝家人在這四年期間一直給與我的愛和無條件的支持,讓我沒有后顧之憂地完成學業(yè);感謝軟件學院的任課老師們給我鼓勵和認可,讓我有信心去做好每一件事情;感謝同學們的幫助,讓我的大學生活更有意義。在此次畢業(yè)設計的實現(xiàn)過程中, 我得到了老師們的耐心指導讓我順利完成了該設計。從最初的選題和開題開始,老師就給予我很多幫助,他們認真負責的態(tài)度、豐富的教學經驗讓我學到了很多。
同時也要感謝我敬愛的班主任和實訓課程的老師,他們在各個方面都教給了我豐富的經驗,在面對各種困難時如何處理。因為今年的特殊性,老師們不僅在學習中給我以精心的指導,同時還在其它方面給予我觀關懷,指導老師不辭辛苦的為大家錄制視頻和一遍遍講解讓我心懷感激之情。在此,我真誠的感恩、感謝我的指導教師們。
還要感謝實習期間不厭其煩教導我鼓勵我的技術師傅,他指導了我各個方面的技巧,尤其是編程方面,迄今我的很多技巧和編寫規(guī)范都有賴于他的指導、糾正。
最后還要特別感謝身邊的各位同學們,一直支持鼓勵我,無論何時何種境況。我很榮幸獲得同學們的幫助,也很開心能夠和大家共度大學四年的時光。
最后的最后,再次發(fā)自肺腑的感謝所有幫助過我的人。文章來源:http://www.zghlxwxcb.cn/news/detail-833413.html
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?免費領取源碼,請點贊關注私信博主文章來源地址http://www.zghlxwxcb.cn/news/detail-833413.html
到了這里,關于SSM基于區(qū)塊鏈的物聯(lián)網數(shù)據(jù)交易 計算機畢設源碼46193的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!