• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于golang微服務(wù)的庫(kù)房智能管理系統(tǒng)設(shè)計(jì)

      2024-09-13 00:00:00向誠(chéng)萬(wàn)宇杰譚俊偉桂玲
      現(xiàn)代電子技術(shù) 2024年13期
      關(guān)鍵詞:人臉識(shí)別

      摘" 要: 針對(duì)傳統(tǒng)庫(kù)房管理主要依賴人工、效率低、數(shù)據(jù)難以及時(shí)更新、人力成本高等問(wèn)題,文中基于golang微服務(wù),結(jié)合ZigBee、RFID、人工智能和區(qū)塊鏈等技術(shù)設(shè)計(jì)一種新型倉(cāng)庫(kù)智能管理系統(tǒng)。該系統(tǒng)主要由綜合信息處理控制系統(tǒng)、以ZigBee為主的信息交互系統(tǒng)、以STM32與人臉識(shí)別為核心的門禁控制系統(tǒng)、RFID讀寫設(shè)備、后臺(tái)管理五個(gè)部分構(gòu)成,采用分布式架構(gòu)將倉(cāng)庫(kù)設(shè)備管理、數(shù)據(jù)采集與處理和任務(wù)決策整合為一體,既能便捷聯(lián)動(dòng)ZigBee、RFID及人臉識(shí)別,又具有極強(qiáng)的內(nèi)存管理和跨平臺(tái)性。應(yīng)用系統(tǒng)基于golang語(yǔ)言開(kāi)發(fā),使用vue、uniapp、electron、php、tdsql?c等技術(shù),采用B/S和C/S兩種架構(gòu);后端服務(wù)采用go?micro微服務(wù)形式來(lái)提高系統(tǒng)可插拔性和高并發(fā)能力;為提高租借數(shù)據(jù)的可靠性,系統(tǒng)采用區(qū)塊鏈對(duì)其進(jìn)行加密,實(shí)現(xiàn)每條數(shù)據(jù)自動(dòng)上鏈功能。數(shù)據(jù)庫(kù)采用tdsql?c云原生數(shù)據(jù)庫(kù),以方便橫向擴(kuò)展。實(shí)驗(yàn)表明,該系統(tǒng)能高效實(shí)現(xiàn)盤點(diǎn)和更新、全程無(wú)紙化記錄及影像和出庫(kù)數(shù)據(jù)留存,確保資料溯源,信息化水平高,極大地降低了企業(yè)運(yùn)營(yíng)成本。

      關(guān)鍵詞: golang; ZigBee; RFID; 區(qū)塊鏈加密; 人臉識(shí)別; 庫(kù)房管理

      中圖分類號(hào): TN919?34; TP242.6" " " " " " " " " " 文獻(xiàn)標(biāo)識(shí)碼: A" " " " " " " " " "文章編號(hào): 1004?373X(2024)13?0172?08

      Design of intelligent warehouse management system based on golang micro?service

      XIANG Cheng1, WAN Yujie1, TAN Junwei1, GUI Ling2

      (1. Swan College, Central South University of Forestry and Technology, Changsha 410211, China;

      2. College of Computer and Information Engineering, Central South University of Forestry and Technology, Changsha 410004, China)

      Abstract: The traditional warehouse management mainly relies on manual registration, so the efficiency is low, the data is difficult to update in time, and the human cost is high. In view of this, a new intelligent warehouse management system is designed on the basis of golang micro?service and in combination with ZigBee, RFID, artificial intelligence and blockchain technology. The system is mainly composed of five parts, named integrated information processing and control system, ZigBee?based information interaction system, access control system based on STM32 and face recognition, RFID read?write equipment, and background management. The distributed architecture is adopted to integrate warehouse equipment management, data acquisition and processing, and task decision. The system not only can link ZigBee, RFID and face recognition conveniently, but also has powerful memory management and cross?platform capability. The application system is developed based on golang language, using technologies of vue, uniapp, electron, php and tdsql?c, and adopting architectures of B/S and C/S. The micro?service form go?micro is adopted for the back?end service to improve the pluggability and high concurrency of the system. In order to improve the reliability of rental data, the blockchain is used to encrypt it and realize the automatic chaining function of each data. The tdsql?c cloud native database is adopted to facilitate horizontal expansion. Experiments show that the proposed system can realize efficient inventory and update, paperless records for the whole process, and images and outbound data retention, and ensure data traceability and high level of informatization. Therefore, it can reduce the operation cost of enterprises greatly.

      Keywords: golang; ZigBee; RFID; blockchain encryption; face recognition; warehouse management

      0" 引" 言

      在產(chǎn)業(yè)加速升級(jí)換代、淘汰落后產(chǎn)能的大環(huán)境下,勞動(dòng)密集型企業(yè)紛紛向信息化轉(zhuǎn)型。倉(cāng)庫(kù)管理信息化作為企業(yè)信息化的重要一環(huán)[1],如何重構(gòu)貨物管理流程、優(yōu)化庫(kù)房管理制度,固化到庫(kù)房日常管理系統(tǒng)是實(shí)現(xiàn)信息化、系統(tǒng)化、規(guī)范化管理庫(kù)房的基本條件,也是促成各生產(chǎn)部門間相互連接、合作的紐帶。

      當(dāng)前,大多數(shù)企業(yè)倉(cāng)庫(kù)管理系統(tǒng)雖已基本實(shí)現(xiàn)了無(wú)紙化操作,可這些無(wú)紙化大多還是停留在利用電腦對(duì)設(shè)備和貨物進(jìn)行出入庫(kù)登記上,需要倉(cāng)庫(kù)管理員時(shí)刻駐守倉(cāng)庫(kù)出入口,人力成本高,且難以實(shí)現(xiàn)出庫(kù)設(shè)備轉(zhuǎn)借和延期歸還的監(jiān)管,難以實(shí)現(xiàn)對(duì)庫(kù)內(nèi)設(shè)備貨物自動(dòng)在線盤點(diǎn)等。這就易造成公司在設(shè)備貨物出入庫(kù)管理、租借、轉(zhuǎn)借和延期歸還上存在諸如倉(cāng)庫(kù)管理人員對(duì)設(shè)備貨物出入庫(kù)登記不及時(shí),時(shí)間稍長(zhǎng)或被其他事情干擾而疏于登記;設(shè)備多次轉(zhuǎn)借和延期不還造成設(shè)備、貨物丟失卻不能溯源;庫(kù)房管理員不記得設(shè)備、貨物在庫(kù)房的具體位置等眾多問(wèn)題,尤以多庫(kù)房的中大型企業(yè)突出。

      針對(duì)當(dāng)前庫(kù)房管理系統(tǒng)中存在的諸多弊端,本文基于go?micro[2]微服務(wù),結(jié)合STM32、ZigBee、RFID[3]、人工智能和區(qū)塊鏈等技術(shù)設(shè)計(jì)一款新型庫(kù)房智能管理系統(tǒng)。

      1" 系統(tǒng)方案

      為實(shí)現(xiàn)對(duì)設(shè)備轉(zhuǎn)借和延還等的全程監(jiān)管,對(duì)庫(kù)內(nèi)設(shè)備貨物自動(dòng)定期或不定期在線大范圍盤點(diǎn),并將盤點(diǎn)數(shù)據(jù)上傳到管理數(shù)據(jù)庫(kù),對(duì)貨物丟失實(shí)現(xiàn)溯源,對(duì)倉(cāng)庫(kù)關(guān)門后或夜間的非法闖入及火災(zāi)等其他生產(chǎn)安全進(jìn)行監(jiān)控;方便管理員實(shí)時(shí)查看當(dāng)前設(shè)備倉(cāng)庫(kù)庫(kù)存、設(shè)備狀態(tài)及租借歷史等信息,員工通過(guò)APP快速進(jìn)行設(shè)備申請(qǐng),同事之間轉(zhuǎn)借交換設(shè)備,并將數(shù)據(jù)實(shí)時(shí)同步至數(shù)據(jù)庫(kù),私有區(qū)塊鏈加密以防人為纂改,本文確立了如圖1所示的庫(kù)房管理系統(tǒng)框架圖。

      該系統(tǒng)主要由綜合信息處理控制上位機(jī)、以STM32和人臉識(shí)別為核心的門禁控制子系統(tǒng)、以ZigBee為主的信息交互系統(tǒng)、RFID讀寫設(shè)備、設(shè)備管理后臺(tái)五部分構(gòu)成。綜合信息處理控制上位機(jī)錄入和收集包括人臉在內(nèi)的員工信息上傳至管理后臺(tái)(EMS),并接收來(lái)自EMS的命令,控制RFID讀寫器工作。當(dāng)出庫(kù)閘口攝像頭和RFID天線感應(yīng)到待借員工人臉和待借設(shè)備RFID標(biāo)簽內(nèi)信息后,通過(guò)企業(yè)內(nèi)網(wǎng)傳送至EMS在數(shù)據(jù)庫(kù)中進(jìn)行比對(duì)。符合規(guī)則后上位機(jī)命令門禁控制系統(tǒng)控制閘機(jī)開(kāi)門,期間語(yǔ)音提示門開(kāi);人離開(kāi)門后STM32收到紅外傳感器的信號(hào)立即控制關(guān)門,同時(shí)倉(cāng)庫(kù)管理監(jiān)控?cái)z像頭錄像并記錄。若出現(xiàn)人員非法闖關(guān),則立即發(fā)出聲光和語(yǔ)音警告,同時(shí)上傳管理后臺(tái)數(shù)據(jù)庫(kù)[4],并將當(dāng)時(shí)段倉(cāng)庫(kù)管理監(jiān)控?cái)z像頭錄像備份鎖存并標(biāo)記為異常情況,方便追溯。當(dāng)管理后臺(tái)創(chuàng)建盤點(diǎn)任務(wù)時(shí),可輕松通過(guò)ZigBee+STM32控制倉(cāng)庫(kù)內(nèi)RFID盤點(diǎn)天線進(jìn)行大范圍盤點(diǎn),也可通過(guò)RFID手持網(wǎng)絡(luò)盤點(diǎn)機(jī)進(jìn)行盤點(diǎn),數(shù)據(jù)實(shí)時(shí)上傳到管理數(shù)據(jù)庫(kù)。分布在庫(kù)房?jī)?nèi)的ZigBee終端還可搭載火焰檢測(cè)等不同傳感器,實(shí)現(xiàn)庫(kù)房?jī)?nèi)多種安全檢測(cè);員工可通過(guò)借用設(shè)備APP快速進(jìn)行設(shè)備申請(qǐng)和同事之間轉(zhuǎn)借交換設(shè)備,數(shù)據(jù)實(shí)時(shí)同步至數(shù)據(jù)庫(kù),并通過(guò)私有區(qū)塊鏈加密防止人為纂改;而管理APP端可訪問(wèn)EMS數(shù)據(jù)庫(kù),在移動(dòng)端實(shí)時(shí)查看當(dāng)前設(shè)備倉(cāng)庫(kù)庫(kù)存,以及設(shè)備位置、設(shè)備狀態(tài)、設(shè)備租借歷史等信息。

      2" 系統(tǒng)設(shè)計(jì)

      2.1" 硬件設(shè)計(jì)

      2.1.1" STM32控制器設(shè)計(jì)

      倉(cāng)庫(kù)設(shè)備管理門禁系統(tǒng)設(shè)計(jì)功能較多,實(shí)時(shí)性要求高,所需數(shù)據(jù)運(yùn)算空間較寬,且需與ZigBee搭配來(lái)快速讀取RFID卡號(hào)并驅(qū)動(dòng)其他功能模塊工作,為此選用STM32F407C8T6作為系統(tǒng)主控制器。該芯片是一款32位加密微控制器單元,支持所有ARM單精準(zhǔn)度數(shù)據(jù)處理指令與數(shù)據(jù)類型,包含高達(dá)4 KB的SRAM高速嵌入式存儲(chǔ)器,以及多種增強(qiáng)型I/O與外設(shè),連接至2條APB總線,3條AHB總線與1個(gè)32位多AHB總線陣列。

      STM32F407C8T6通過(guò)串口與綜合信息處理控制PC機(jī)相互通信,人臉識(shí)別因算力需要,將在綜合信息處理控制PC機(jī)上開(kāi)發(fā)和運(yùn)行。

      2.1.2" CC2530F256 ZigBee

      CC2530是一款專門用于無(wú)線傳感網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)傳輸?shù)募尚酒?,它結(jié)合了優(yōu)良的RF收發(fā)器性能,內(nèi)置可編程FLASH,8 KB RAM[5?7],滿足超低功耗的設(shè)計(jì)要求。

      2.1.3" ATK?ESP8266 WiFi網(wǎng)絡(luò)模塊

      ATK?S1216F8?BD?V23作為一款高性能GPS/北斗模塊,其核心是S1216F8?BD模組,采用NMEA?0183協(xié)議輸出GPS/北斗定位數(shù)據(jù),還可通過(guò)SkyTraq協(xié)議對(duì)模塊進(jìn)行配置,能獲取經(jīng)緯度、地址等諸多參數(shù)。使用5 V供電,并自帶可充電備用電池,掉電不掉數(shù)據(jù)。本設(shè)計(jì)中該模塊接在STM32的USART1串口,模塊發(fā)送端TXD接PD6引腳,模塊接收端RXD接PD5引腳。

      2.1.4" RKF918超高頻RFID模塊

      超高頻UHF讀卡器(RKF918)采用多標(biāo)簽防沖突算法架構(gòu),通過(guò)USB接口供電及串口TTL傳輸數(shù)據(jù),發(fā)送指令連接天線即可直接讀寫標(biāo)簽[8]。距離可適配,通過(guò)外接匹配不同增益、不同接口的超高頻天線,可實(shí)現(xiàn)不同距離檢測(cè),內(nèi)部自帶I?Serch動(dòng)態(tài)多標(biāo)簽識(shí)別防沖突算法。

      2.2" 系統(tǒng)軟件設(shè)計(jì)

      系統(tǒng)軟件設(shè)計(jì)層次復(fù)雜,分為感知單元、中間信息綜合處理、應(yīng)用系統(tǒng)、數(shù)據(jù)存儲(chǔ),如圖2所示為庫(kù)房管理系統(tǒng)層次圖,由淺至深,主要包括:?jiǎn)T工用來(lái)開(kāi)展轉(zhuǎn)借和狀態(tài)登記APP端、人臉識(shí)別、門禁控制系統(tǒng)、后臺(tái)管理和信息統(tǒng)計(jì)B端、綜合信息處理控制的上位機(jī)程序設(shè)計(jì)、RFID讀取和中間件程序以及分布式收集倉(cāng)庫(kù)環(huán)境信息和進(jìn)行盤點(diǎn)的ZigBee等程序模塊。

      2.2.1" 感知單元的組網(wǎng)

      組網(wǎng)主要由門禁模塊、管理模塊、信息注冊(cè)模塊和阿里云服務(wù)器等組成,主要網(wǎng)絡(luò)節(jié)點(diǎn)包括ZigBee、內(nèi)網(wǎng)防火墻、服務(wù)端nginx負(fù)載均衡和docker容器獨(dú)立網(wǎng)絡(luò)等。限于文章篇幅,本文以門禁模塊為例來(lái)說(shuō)明其具體設(shè)計(jì),如圖3所示。

      為適應(yīng)不同企業(yè)希望部署到分布性強(qiáng)的嵌入式平臺(tái)上,人臉識(shí)別模塊基于PaddlePaddle框架進(jìn)行開(kāi)發(fā)[9?11],綜合處理客戶端采用golang開(kāi)發(fā),人臉識(shí)別通過(guò)socket建立Python與go之間的通信通道,Python在識(shí)別人臉身份信息數(shù)據(jù)后通過(guò)socket將人員身份ID傳送給golang,golang在接收到人臉數(shù)據(jù)后,便開(kāi)始讀取RFID信息,將RFID信息上傳服務(wù)器進(jìn)行處理。如果RFID信息已存在,則在顯示屏幕上顯示對(duì)應(yīng)的產(chǎn)品信息,員工確認(rèn)租借后,打開(kāi)門禁放行,同時(shí)將數(shù)據(jù)記錄到租借表內(nèi)。對(duì)于員工、產(chǎn)品是同一人且產(chǎn)品已出借但員工沒(méi)有走的情況,再次識(shí)別并確認(rèn)后依然會(huì)放行。同時(shí)還對(duì)RFID標(biāo)簽識(shí)別進(jìn)行了防碰撞和去重處理,防止對(duì)同一個(gè)標(biāo)簽多次掃描時(shí)系統(tǒng)要讀取多次RFID信息從而引起崩潰。

      為提高系統(tǒng)的便攜性,本文還開(kāi)發(fā)了微信小程序,員工可將微信賬號(hào)與身份信息通過(guò)公司指定賬號(hào)及密碼進(jìn)行綁定,之后便可通過(guò)出示二維碼替代人臉識(shí)別登記員工身份信息。

      門禁模塊采用RESTFul API進(jìn)行接口開(kāi)發(fā),用gin對(duì)外暴露端口,同時(shí)使用micro api監(jiān)聽(tīng)http將端口暴露到服務(wù)器上從而對(duì)外暴露服務(wù)。將對(duì)外網(wǎng)關(guān)暴露在指定端口,go?micro api會(huì)自動(dòng)從Consul中獲取已注冊(cè)服務(wù),并通過(guò)grpc進(jìn)行服務(wù)間通信從而實(shí)現(xiàn)服務(wù)的對(duì)外暴露功能,接口返回json格式。

      在人員信息統(tǒng)一錄入后,門禁管理主要涉及開(kāi)門與關(guān)門的操作;而權(quán)限管理模塊判斷員工是否有租借產(chǎn)品的權(quán)利,如果沒(méi)有相應(yīng)的權(quán)限,則控制門禁模塊不予放行。

      2.2.2" 上位機(jī)的綜合處理

      考慮到時(shí)間復(fù)雜度對(duì)系統(tǒng)運(yùn)行速度的影響,上位機(jī)接收到RFID感應(yīng)的信息后,通過(guò)golang采用一維數(shù)組去重算法對(duì)數(shù)據(jù)進(jìn)行清洗,待用戶通過(guò)人臉識(shí)別并確認(rèn)身份后,將數(shù)據(jù)打包發(fā)送給應(yīng)用層服務(wù)器。具體為:識(shí)別前構(gòu)造一個(gè)可伸縮的動(dòng)態(tài)數(shù)組,物品識(shí)別后檢測(cè)數(shù)組內(nèi)是否有重復(fù)物品;若有,則跳過(guò)該RFID數(shù)據(jù),否則,添加到數(shù)組內(nèi);所有添加到數(shù)組內(nèi)的元素即為去重后元素。

      2.2.3" 應(yīng)用系統(tǒng)及數(shù)據(jù)存儲(chǔ)整體框架

      應(yīng)用系統(tǒng)及數(shù)據(jù)存儲(chǔ)框架設(shè)計(jì)如圖4所示。

      客戶端分為APP端(以及小程序端)、PC端以及electron交互端,數(shù)據(jù)請(qǐng)求通過(guò)Nginx反向代理找到為其服務(wù)的服務(wù)器并返回相應(yīng)的數(shù)據(jù),數(shù)據(jù)庫(kù)方面采用騰訊云原生數(shù)據(jù)庫(kù)tdsql?c以及在小程序中使用的MongoDB數(shù)據(jù)庫(kù),為獲得更快的響應(yīng)速度,本文基于Redis數(shù)據(jù)庫(kù)開(kāi)發(fā)了緩存子系統(tǒng),通過(guò)近期數(shù)據(jù)命中率智能判斷每個(gè)緩存在內(nèi)存中的存活時(shí)間。同時(shí),采用阿里云OSS存儲(chǔ)人臉識(shí)別中的人臉圖像,在人臉對(duì)比系統(tǒng)啟動(dòng)前會(huì)自動(dòng)同步阿里云OSS中的人臉圖像,再通過(guò)串口通信將是否需要開(kāi)門數(shù)據(jù)下發(fā)至STM32完成工作流程。

      1) 微服務(wù)架構(gòu)

      為防止一個(gè)服務(wù)出現(xiàn)故障導(dǎo)致全部服務(wù)掛斷,并解決企業(yè)前期用戶較少性能過(guò)剩,后期業(yè)務(wù)迅猛發(fā)展導(dǎo)致業(yè)務(wù)量陡增從而產(chǎn)生服務(wù)系統(tǒng)崩潰,本文采用微服務(wù)架構(gòu),如圖5所示,當(dāng)服務(wù)正式上線部署后還可通過(guò)docker、k8s節(jié)點(diǎn)實(shí)現(xiàn)分離,降低相互影響、提高服務(wù)容錯(cuò)性。

      采用Consul作為注冊(cè)和配置中心,將服務(wù)通過(guò)makefile中的docker進(jìn)行自動(dòng)構(gòu)建、打包、上傳,然后通過(guò)便于拓展部署多個(gè)容器的docker?compose運(yùn)行docker環(huán)境,啟動(dòng)所有docker鏡像,由此進(jìn)行單機(jī)部署,如圖6所示。

      2) 基于vue的管理后臺(tái)

      后臺(tái)云端管理包括后臺(tái)實(shí)際界面、后臺(tái)數(shù)據(jù)可視化界面、對(duì)員工信息的增刪改查、編輯員工信息等。對(duì)其管理界面主要采用vue+vuex+vue?router+axios+fetch+mock進(jìn)行開(kāi)發(fā)。

      選用vue?router的h5 history模式配合服務(wù)器的Nginx進(jìn)行部署,以提高域名的可讀性;util類設(shè)計(jì)模塊通用功能,包括后臺(tái)地址url、fetch庫(kù),攔截器等;mock用于模擬后臺(tái)數(shù)據(jù),優(yōu)化性能并且進(jìn)行數(shù)據(jù)可視化等操作;而UI選擇“餓了么”的開(kāi)源UI——element ui,避免重復(fù)造輪子。

      對(duì)于加載方式,采用h5 history模式,實(shí)現(xiàn)無(wú)感頁(yè)面切換;vue采用按需加載方式來(lái)提高首界面的加載速度。

      3) 前端設(shè)計(jì)

      B端采用vue 2.6、axios、fetch、vue?router、typescript等技術(shù),如圖7所示。

      vue作為高效前端開(kāi)發(fā)框架,通過(guò)es5的Object.defineProperty()等鉤子函數(shù)可快速獲得屬性的改變,通過(guò)觀察者模式實(shí)時(shí)截取數(shù)據(jù)并動(dòng)態(tài)渲染到dom,來(lái)提升前端的工作效率;配合vue?router以及vuex的狀態(tài)管理,設(shè)計(jì)出后臺(tái)管理界面;同時(shí)采用fetch自我封裝網(wǎng)絡(luò)請(qǐng)求庫(kù),方便復(fù)用。對(duì)所有前端程序的設(shè)計(jì)都采用前后端分離模式,以實(shí)現(xiàn)前端的獨(dú)立性。

      ① 員工APP及小程序設(shè)計(jì)

      員工APP采用uni?app進(jìn)行開(kāi)發(fā),部署在Android端及IOS端。渲染方式采用webview進(jìn)行渲染,做到前后端分離。小程序?yàn)樵_(kāi)發(fā),可通過(guò)微信唯一標(biāo)識(shí)登錄并綁定個(gè)人賬戶,實(shí)現(xiàn)員工身份碼代替人臉識(shí)別來(lái)出借及歸還物品。

      ② 人臉識(shí)別客戶端設(shè)計(jì)

      人臉識(shí)別客戶端采用Electron與用戶交互,通過(guò)Python調(diào)用OpenCV實(shí)時(shí)獲取人臉信息[12]。人臉識(shí)別基于開(kāi)源人臉識(shí)別模型Face.evoLVe[13]進(jìn)行二次開(kāi)發(fā),并通過(guò)socket向go提供人員身份信息id,當(dāng)匹配人臉成功后,通過(guò)websocket將員工信息以及感應(yīng)到的RFID通過(guò)本文約定的“rf+數(shù)據(jù)”格式發(fā)送給Electron,Electron收到該類字符則自動(dòng)解析為RFID信息,并分割出標(biāo)識(shí)符與數(shù)據(jù);否則為其他類型數(shù)據(jù)。當(dāng)Electron展示前端頁(yè)面并在用戶確認(rèn)后,通知STM32打開(kāi)門禁;如若用戶不確認(rèn),則通知go重新掃描人臉及RFID標(biāo)簽信息,同時(shí)丟棄上次已讀取數(shù)據(jù)。

      4) 區(qū)塊鏈租借認(rèn)證設(shè)計(jì)

      區(qū)塊鏈[14]租借認(rèn)證采取數(shù)據(jù)分布式賬本的解決方案,由設(shè)備達(dá)成共識(shí)后直接記錄到數(shù)據(jù)庫(kù),并通過(guò)上一條記錄的數(shù)據(jù)和當(dāng)前數(shù)據(jù)共同在數(shù)據(jù)庫(kù)內(nèi)通過(guò)多重md5與sha256混合加密生成密鑰值。sha256的校驗(yàn)設(shè)計(jì)為:

      if sha256.Sum256(v.PreHash) == sha256.Sum256(prehash){

      data = bytes.Join([][]byte{data1,data2,data3,secret},[]byte{})

      }else{

      data = bytes.Join([][]byte{data1,data2,data3,[]byte(prehash[:]),secret},[]byte{})

      }

      if sha256.Sum256(v.Hash) != sha256.Sum256(sha256.New().Sum(data)){

      return v.Id,nil

      }

      一旦鏈上某數(shù)據(jù)出錯(cuò),可通過(guò)判斷數(shù)據(jù)的真?zhèn)慰焖俨槌?,?shí)現(xiàn)設(shè)備溯源的目的。在租借系統(tǒng)中,通過(guò)人臉識(shí)別獲取出門員工信息,確認(rèn)后上傳區(qū)塊鏈集群,再通過(guò)共識(shí)節(jié)點(diǎn)獲取員工身份信息;并將產(chǎn)品信息和員工信息合并經(jīng)準(zhǔn)入節(jié)點(diǎn)將對(duì)應(yīng)的租借信息存入到記賬節(jié)點(diǎn),在得到所有節(jié)點(diǎn)的認(rèn)可后存入到分布式存儲(chǔ)數(shù)據(jù)庫(kù),具體流程如圖8所示。

      5) 數(shù)據(jù)庫(kù)設(shè)計(jì)

      數(shù)據(jù)庫(kù)使用阿里云的MySQL數(shù)據(jù)庫(kù)(小程序中采用分布式數(shù)據(jù)庫(kù)tdsql?c),表字符集使用UTF?8,用decimal代替float和double存儲(chǔ)精確浮點(diǎn)數(shù),使用tinyint代替bool類型(gorm特性);存儲(chǔ)引擎默認(rèn)采用InnoDB,詳細(xì)設(shè)計(jì)本文不再贅述。

      6) 接口設(shè)計(jì)

      由于APP、Web客戶端都需要調(diào)用對(duì)應(yīng)的接口,因此采用HTTP形式暴露,方便不同客戶端快速拿到對(duì)應(yīng)接口的數(shù)據(jù)。具體接口包括:增加員工信息、修改員工信息、刪除員工信息等操作,應(yīng)用于產(chǎn)品、庫(kù)房、分類等諸多個(gè)表,采用RESTFul API標(biāo)準(zhǔn),采取GET、POST、PUT、DELETE四個(gè)容易辨別類型,路徑名用功能單詞縮寫等易懂的方法命名。

      2.2.4" 安全性設(shè)計(jì)

      系統(tǒng)的安全設(shè)計(jì)主要包括:程序設(shè)計(jì)安全、程序部署及操作系統(tǒng)安全、人員安全性、數(shù)據(jù)安全性、網(wǎng)絡(luò)安全、物理安全等方面。限于文章篇幅,這里僅詳述數(shù)據(jù)安全性。

      1) 私有區(qū)塊鏈

      對(duì)租借的產(chǎn)品,采用區(qū)塊對(duì)borrow數(shù)據(jù)表內(nèi)進(jìn)行hash值加密。一旦某個(gè)hash值與上一區(qū)塊hash值脫鏈[15],可以快速定位出錯(cuò)信息,并且通過(guò)數(shù)據(jù)庫(kù)日志恢復(fù)到之前正確的數(shù)據(jù)。

      2) 數(shù)據(jù)加密

      為提高安全性,數(shù)據(jù)庫(kù)采用md5加獨(dú)有salt進(jìn)行加密,其核心設(shè)計(jì)為(本文設(shè)置的測(cè)試用獨(dú)立簽名值123):

      ……

      fun EncodeMD5(pwd string) string{

      H:=md5.New()

      _,_=io.WriteString(h, pwd)

      Sum:=fmt. Sprint(“%x”,h.Sum([]byte(“123”)))

      Return sum

      }

      ……

      3) 加密傳輸

      人臉圖像信息在傳輸前,使用HTTPs進(jìn)行傳輸,由于數(shù)字證書(shū)和安全協(xié)議的防護(hù),能有效保證數(shù)據(jù)不被非法抓包者獲取,實(shí)現(xiàn)對(duì)人臉圖像進(jìn)行加密傳輸。

      3" 性能對(duì)比測(cè)試

      測(cè)試環(huán)境均設(shè)置為2h4g20M寬帶阿里云服務(wù)器。

      3.1" 壓力測(cè)試對(duì)比

      利用golang通過(guò)micro api暴露的gin框架與Java spring cloud框架進(jìn)行內(nèi)存占用對(duì)比[16?18],如圖9所示,其中spring cloud框架的內(nèi)存占用參考Java開(kāi)發(fā)者實(shí)測(cè)圖,這里不列出。

      可見(jiàn),在docker中所占用的內(nèi)存僅為服務(wù)器的0.2%,轉(zhuǎn)換為MEM則僅占用內(nèi)存29.57 MB(保留2位小數(shù))。

      在壓力測(cè)試環(huán)境下,Java在單機(jī)部署下的并發(fā)量極限約為600(采用gredis),通過(guò)gin暴露端口的go?micro并發(fā)量最高無(wú)異常情況可以達(dá)到650,具有一定優(yōu)勢(shì)。另, golang擁有比Java更快的算法運(yùn)行速度,能通過(guò)cgo快速移植c、c++的庫(kù)文件,解決了c、c++內(nèi)存回收機(jī)制上的不足[19]。

      3.2" 吞吐量測(cè)試對(duì)比

      如圖10所示為go?micro與PHP、nodejs和Spring cloud alibaba框架上進(jìn)行吞吐量測(cè)試的數(shù)據(jù)對(duì)比。

      如圖11所示為CPU滿負(fù)載時(shí)micro及其服務(wù)所占用內(nèi)存占比統(tǒng)計(jì)。

      上述對(duì)比測(cè)試表明,go?micro在2核4 GB的服務(wù)器上即使性能跑滿,內(nèi)存占用率也只有3.2%,且達(dá)到最大的吞吐量;其次是基于Java的Spring cloud——Alibaba,在保證0異常的前提下,其能達(dá)到350左右的吞吐量(本地調(diào)試環(huán)境可以達(dá)到500左右),但是內(nèi)存占用會(huì)達(dá)到驚人的1 800 MB(JVM);再者是單線程的nodejs,在沒(méi)有Redis緩存的情況下能達(dá)到80左右的吞吐量;排名最后的是PHP(PHP 5.6版本)只有40左右的吞吐量??梢?jiàn),go?micro在該業(yè)務(wù)場(chǎng)景擁有最優(yōu)的性能以及最小的內(nèi)存占用,通過(guò)編譯器可將其直接編譯到不同平臺(tái),若通過(guò)docker容器打包應(yīng)用也能很好地實(shí)現(xiàn)跨平臺(tái)。加之go直接編譯為平臺(tái)二進(jìn)制文件,相對(duì)Java不需要通過(guò)JVM的方式創(chuàng)造虛擬環(huán)境,能極大地降低內(nèi)存使用[20]。

      4" 調(diào)試結(jié)果

      在搭建好硬件平臺(tái)后對(duì)整個(gè)系統(tǒng)開(kāi)展了調(diào)試與性能測(cè)試,系統(tǒng)實(shí)物圖如圖12所示,其后臺(tái)云端管理數(shù)據(jù)展示如圖13所示,圖中箭頭代表轉(zhuǎn)借功能關(guān)鍵信息,通過(guò)該系統(tǒng)可快速將已有物品轉(zhuǎn)借到其他人員名下,并較好地解決“設(shè)備在人員間的流轉(zhuǎn)、狀態(tài)變更便捷”及追溯問(wèn)題。

      如圖14所示為ZigBee終端采集的環(huán)境信息在系統(tǒng)后臺(tái)中的顯示,以及整個(gè)庫(kù)房ZigBee配置情況與工作狀態(tài),還可在另一界面對(duì)盤點(diǎn)指令、RFID工作頻段、發(fā)射功率進(jìn)行設(shè)置。如圖15所示為小程序二維碼,用戶通過(guò)它可便捷地展示身份信息。圖16為用戶之間APP轉(zhuǎn)借操作流程展示。

      5" 結(jié)" 論

      1) 本系統(tǒng)在采取Redis做數(shù)據(jù)庫(kù)緩存后,在并發(fā)量500的情況下系統(tǒng)錯(cuò)誤率為0;對(duì)多個(gè)不同服務(wù),分別添加500上下的并發(fā)量,錯(cuò)誤率仍然為0。

      2) 部署在服務(wù)端,基于阿里云盾做包括但不限于DDOS保護(hù)、cc保護(hù)等強(qiáng)行流量攻擊手段,系統(tǒng)接口均能確保員工訪問(wèn)數(shù)據(jù)正常,且相對(duì)于Java Spring cloud框架,本文系統(tǒng)的每一個(gè)容器僅占用50 MB左右的內(nèi)存。

      3) 系統(tǒng)人機(jī)交互性好、轉(zhuǎn)續(xù)借便捷、數(shù)據(jù)安全,便于拓展;設(shè)備多次轉(zhuǎn)借、延期不還、貨物丟失溯源性強(qiáng)。

      本文研究結(jié)果為庫(kù)房智能管理探索了一條新途徑,為大型、特大型企業(yè)諸多庫(kù)房的管理提供了技術(shù)支持與參考。

      注:本文通訊作者為桂玲。

      參考文獻(xiàn)

      [1] 夏巴納,于里安,蘇西尼.RFID與物聯(lián)網(wǎng)[M].宋延強(qiáng),譯.北京:清華大學(xué)出版社,2016.

      [2] 李敏士.基于go?micro的數(shù)據(jù)服務(wù)與服務(wù)治理平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中師范大學(xué),2020.

      [3] 龔倫峰,雷歡.RFID技術(shù)在圖書(shū)館管理系統(tǒng)中的應(yīng)用研究[J].湖南城市學(xué)院學(xué)報(bào)(自然科學(xué)版),2019,28(1):66?69.

      [4] 王敏.基于B/S框架企業(yè)資產(chǎn)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].上海:復(fù)旦大學(xué),2011.

      [5] 李文仲,段朝玉.ZigBee無(wú)線網(wǎng)絡(luò)網(wǎng)絡(luò)技術(shù)入門與實(shí)戰(zhàn)[M].北京:北京航空航天大學(xué)出版社,2007.

      [6] 蔣建輝.ZigBee網(wǎng)絡(luò)的設(shè)計(jì)與實(shí)現(xiàn)[D].蘇州:蘇州大學(xué),2006.

      [7] 楊榮,楊濤.基于ZigBee的無(wú)線傳感器網(wǎng)絡(luò)及其在智能大廈中的應(yīng)用[J].中國(guó)農(nóng)機(jī)化,2005(5):76?79.

      [8] 王智鵬,喬記平,劉儒平,等.基于LabVIEW的UHF RFID射頻識(shí)別系統(tǒng)的設(shè)計(jì)[J].電測(cè)與儀表,2021,58(1):196?200.

      [9] 胡珊珊,肖勇,王保帥,等.基于深度學(xué)習(xí)的PCB缺陷檢測(cè)研究[J].電測(cè)與儀表,2021,58(3):139?145.

      [10] 趙翔,陳良亮,李明貞,等.一種基于深度神經(jīng)網(wǎng)絡(luò)的直流充電樁故障診斷方法[J].電測(cè)與儀表,2021,58(6):148?152.

      [11] 林曉靜,劉文,甘超飛,等.基于卷積神經(jīng)網(wǎng)絡(luò)與多維度電力大數(shù)據(jù)的信用評(píng)估系統(tǒng)[J].電測(cè)與儀表,2021,58(11):101?106.

      [12] 王偉,張彥龍,翟登輝,等.基于OpenCV+SSD深度學(xué)習(xí)模型的變電站壓板狀態(tài)智能識(shí)別[J].電測(cè)與儀表,2022,59(1):106?112.

      [13] WANG Q Z, ZHANG P F, XIONG H Y, et al. Face.evoLVe: A high?performance face recognition library [EB/OL]. [2022?12?20]. https://arxiv.org/abs/2107.08621.

      [14] 朱鳳霞.基于區(qū)塊鏈技術(shù)的交易數(shù)據(jù)庫(kù)加密技術(shù)[J].電子設(shè)計(jì)工程,2020,28(3):93?97.

      [15] 王立棋,楊慶,王靜,等.基于區(qū)塊鏈下光伏微電網(wǎng)交易市場(chǎng)化中的應(yīng)用分析[J].電測(cè)與儀表,2020,57(12):75?82.

      [16] EFFENDY F, TAUFIK, ADHILAKSONO B. Performance comparison of web backend and database: A case study of Node.JS, Golang and MySQL, MongoDB [J]. Recent advances in computer science and communications, 2021, 14(6): 1955?1961.

      [17] 唐承玲,王虎,李光平,等.基于JMeter的Web性能測(cè)試研究[J].電腦與電信,2021(6):65?68

      [18] 佘青.利用Apache Jmeter進(jìn)行Web性能測(cè)試的研究[J].智能計(jì)算機(jī)與應(yīng)用,2012,2(2):55?57.

      [19] 劉敏.淺談C語(yǔ)言中的垃圾回收[J].數(shù)字技術(shù)與應(yīng)用,2011(8):133?134.

      [20] 王立冬,張凱.Java虛擬機(jī)分析[J].北京理工大學(xué)學(xué)報(bào),2002(1):60?63.

      猜你喜歡
      人臉識(shí)別
      人臉識(shí)別 等
      揭開(kāi)人臉識(shí)別的神秘面紗
      基于類獨(dú)立核稀疏表示的魯棒人臉識(shí)別
      基于K-L變換和平均近鄰法的人臉識(shí)別
      汪清县| 那坡县| 台前县| 灵台县| 镶黄旗| 庐江县| 大邑县| 武功县| 临猗县| 湖口县| 高州市| 拜城县| 买车| 察哈| 博乐市| 翁牛特旗| 文水县| 漾濞| 镇安县| 崇信县| 汝南县| 成都市| 清徐县| 青海省| 炎陵县| 循化| 留坝县| 海兴县| 玉田县| 定日县| 澎湖县| 肥城市| 田林县| 师宗县| 大同县| 绥中县| 南安市| 武威市| 太和县| 仙居县| 花垣县|