999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Go語言的內(nèi)容管理系統(tǒng)的設(shè)計與實(shí)現(xiàn)

2022-09-21 07:55:36王錚清劉壯峰
電腦知識與技術(shù) 2022年24期
關(guān)鍵詞:數(shù)據(jù)庫內(nèi)容用戶

王錚清,劉壯峰

(舟山市氣象局,浙江舟山 316000)

1 引言

內(nèi)容管理系統(tǒng)(CMS,Content Management System)主要用于管理多樣類型信息,在綜合門戶、電子商務(wù)、電子政務(wù)等方面都有廣泛的應(yīng)用。大量信息的增刪改及管理工作在早期是用手工代碼的方式進(jìn)行的,而現(xiàn)在一般是采用內(nèi)容管理系統(tǒng),這節(jié)省了大量的人力、物力和時間[1]。內(nèi)容管理系統(tǒng)的設(shè)計與應(yīng)用是企事業(yè)單位信息化建設(shè)的一個重點(diǎn)發(fā)展方向。在單位日常辦公中會有新聞稿件、公示公開、會議安排、處室發(fā)文等多種多樣的內(nèi)容,這些內(nèi)容通過即時通信工具、政務(wù)郵和共享網(wǎng)盤等不同平臺進(jìn)行分發(fā),職工獲取信息需要在不同平臺間進(jìn)行切換查找。通過內(nèi)容管理系統(tǒng),將不同平臺分發(fā)的內(nèi)容進(jìn)行歸集與整理,職工通過系統(tǒng)可以非常方便快捷地獲取信息。

2 系統(tǒng)的技術(shù)選型

系統(tǒng)出于開發(fā)成本的考慮,選擇用開源技術(shù)和免費(fèi)的開發(fā)工具進(jìn)行開發(fā)。開源技術(shù)不意味著可以隨意使用,系統(tǒng)在進(jìn)行開發(fā)時應(yīng)注意開源技術(shù)的許可證問題,避免出現(xiàn)法律風(fēng)險。王志強(qiáng)[2]將開源許可證根據(jù)限制條件的強(qiáng)弱分為了強(qiáng)copyleft型、弱copyleft 型和寬松型三類。在軟件分發(fā)過程中強(qiáng)copyleft 型要求分發(fā)產(chǎn)品使用與原作品相同的許可證,代表協(xié)議有GPL。弱copyleft 型限制了分發(fā)產(chǎn)品中使用該類型許可證代碼的更改,代表協(xié)議有LGPL。寬松型則允許分發(fā)產(chǎn)品使用任意許可證進(jìn)行分發(fā),代表協(xié)議有MIT。

系統(tǒng)出于單位使用的考慮源代碼需要閉源保存,在選擇開源技術(shù)時避開了使用強(qiáng)copyleft 許可證的技術(shù),選用了Go語言和Gin 框架進(jìn)行開發(fā),openGauss 數(shù)據(jù)庫進(jìn)行數(shù)據(jù)存儲,LayUI、TinyMCE 和Foundation 等前端技術(shù)。系統(tǒng)使用VsCode、Postman、Siege、PuTTY和FileZilla等工具進(jìn)行開發(fā)、測試和部署。

2.1 Go語言與Gin框架

Go語言是美國谷歌公司開發(fā)的一款支持垃圾回收的功能的靜態(tài)強(qiáng)類型、編譯型、并發(fā)型編程語言。Go語言在語法上類似C 語言,其創(chuàng)作者之一Ken Thompson 也是C 語言的作者之一[3]。因此擁有一定C語言開發(fā)基礎(chǔ)的人員在短時間內(nèi)能夠輕松上手。Go 語言編寫的程序移植性強(qiáng),可以根據(jù)不同平臺直接編譯為該平臺下的可執(zhí)行文件,極大地方便了程序的維護(hù)和部署。

Gin框架是使用Go語言編寫的模塊化Web框架,是目前流行的Go 語言Web 框架之一,在知名代碼托管網(wǎng)站GitHub 上的星星數(shù)量超過了5.9萬。Gin框架將路由構(gòu)造為前綴樹,占用空間更加小,支持子路徑匹配[4]。Gin 框架的性能強(qiáng)勁,支持多種數(shù)據(jù)格式傳遞,接口封裝優(yōu)雅,使用起來方便友好。使用Gin框架進(jìn)行Web 開發(fā),不但提高了程序的性能,而且能夠大大縮短程序開發(fā)時間。

2.2 openGauss數(shù)據(jù)庫

openGauss 是華為公司開發(fā)的性能強(qiáng)大、安全穩(wěn)定的開源關(guān)系型數(shù)據(jù)庫。openGauss 是目前流行的國產(chǎn)數(shù)據(jù)庫之一,采用了木蘭寬松許可證,與MySQL 采用的雙重授權(quán)(Dual Licensed)模式即只允許在遵循GPL 協(xié)議的項(xiàng)目中免費(fèi)使用,否則需要支付高額的許可費(fèi)用相比,做到了完全免費(fèi)開源使用。

openGauss 支持標(biāo)準(zhǔn)SQL 規(guī)范,擁有非常友好的中文參考文檔,有數(shù)據(jù)庫使用經(jīng)驗(yàn)的開發(fā)者可以很快上手。官方提供了Go語言的連接驅(qū)動和可視化管理工具Data Studio,極大地方便了開發(fā)、部署和后期管理維護(hù)。

2.3 前端技術(shù)

在選取前端技術(shù)時,考慮到學(xué)習(xí)速度和開發(fā)進(jìn)度,采用了上手容易的模塊化前端框架LayUI。該框架對后端開發(fā)者相當(dāng)友好,提供了豐富的組件和樣例,在相當(dāng)短的時間內(nèi)能夠使用LayUI 組件編寫出精美的網(wǎng)頁。TinyMCE 是一款富文本編輯器,TinyMCE 相比于LayUI 自帶的富文本編輯器,功能更加強(qiáng)大,插件和接口更加豐富,在系統(tǒng)中主要用于文章的發(fā)布、編輯等功能。

3 系統(tǒng)的設(shè)計與實(shí)現(xiàn)

3.1 MVC 設(shè)計模式與Go 語言的實(shí)現(xiàn)

MVC(Model-View-Con-troller) 是一種軟件設(shè)計模式,它將程序的數(shù)據(jù)輸入、處理和輸出三個過程分離為模型層、控制器層、視圖層三個核心部分,使得任一部分的修改都不會影響其他部分[5]?;贛VC模式開發(fā)的程序具有可維護(hù)能力強(qiáng)、代碼重用性高、低耦合等特性,在各類Web 開發(fā)中被廣泛應(yīng)用,成為經(jīng)典的軟件設(shè)計模式。Go 語言中程序通過包(package)進(jìn)行管理,main 包是所有Go 程序的總?cè)肟?,系統(tǒng)自定義了routes、controller 和model三個包來實(shí)現(xiàn)MVC設(shè)計模式。

MVC設(shè)計模式和系統(tǒng)的主要結(jié)構(gòu)如圖1所示。Gin框架下接口都是通過路由進(jìn)行管理的,routes 包用于管理本系統(tǒng)的路由。webcontent 文件夾用于存放HTML 模板,通過Gin 框架的LoadHTMLGlob()函數(shù)進(jìn)行加載。static 文件夾用于存放css、js、ico等可以公開的靜態(tài)文件,通過Gin框架的Static()函數(shù)進(jìn)行加載。MVC 設(shè)計模式共分為5 個步驟:1)發(fā)送HTTP 請求。系統(tǒng)通過routes包中的路由接受用戶請求并轉(zhuǎn)發(fā)至控制器層。2)處理業(yè)務(wù)。系統(tǒng)源碼中controller包對應(yīng)控制器層,用于對用戶的請求進(jìn)行處理。controller包中的函數(shù)對請求數(shù)據(jù)進(jìn)行解析,交由模型層處理。3)返回結(jié)果。系統(tǒng)源碼中model 包對應(yīng)模型層,用于與數(shù)據(jù)庫的交互、數(shù)據(jù)格式的轉(zhuǎn)換、數(shù)據(jù)處理等功能。upload 文件夾用于存放上傳的文件,config 文件夾用于存放數(shù)據(jù)庫及程序的配置文件,由model 包中的函數(shù)對文件夾中數(shù)據(jù)進(jìn)行操作。model包中函數(shù)對數(shù)據(jù)進(jìn)行處理,并返回控制器層。4)響應(yīng)操作。在controller 包中通過Gin 框架提供的templates方法對加載的HTML模板進(jìn)行渲染。5)返回結(jié)果。routes 包路由將controller包中渲染的結(jié)果返回給用戶。

圖1 MVC設(shè)計模型和系統(tǒng)主要結(jié)構(gòu)

3.2 系統(tǒng)功能及數(shù)據(jù)庫的設(shè)計

系統(tǒng)在功能設(shè)計過程中充分考慮單位職工的各類需求,設(shè)計了用戶與授權(quán)、文章投稿、一周會議安排、領(lǐng)導(dǎo)動態(tài)和版塊文章等模塊,按照使用權(quán)限分為瀏覽者、使用者和管理者三個角色。主要模塊與各角色的功能如表1所示。

表1 系統(tǒng)主要功能表

根據(jù)系統(tǒng)的功能設(shè)計,數(shù)據(jù)庫設(shè)計了用戶信息表、登錄信息表、部門信息表、應(yīng)用名稱表、個人應(yīng)用表、領(lǐng)導(dǎo)動態(tài)表、工作計劃表、投稿文章表、投稿附件表、版塊信息表、版塊用戶表和版塊文件表等表格。在關(guān)系型數(shù)據(jù)庫中,數(shù)據(jù)庫表之間存在一對一、一對多、多對多和多對一的四種對應(yīng)關(guān)系,系統(tǒng)數(shù)據(jù)庫中表關(guān)系如圖2所示。

圖2 數(shù)據(jù)庫表關(guān)系圖

3.3 系統(tǒng)功能及數(shù)據(jù)庫的實(shí)現(xiàn)與部署

根據(jù)系統(tǒng)的程序結(jié)構(gòu)、功能及數(shù)據(jù)庫的設(shè)計,完成對系統(tǒng)功能及數(shù)據(jù)庫的實(shí)現(xiàn),根據(jù)表1的設(shè)計,以瀏覽者角色為例,瀏覽主頁、會議安排等內(nèi)容,在開發(fā)環(huán)境下系統(tǒng)實(shí)現(xiàn)效果如圖3所示。

圖3 開發(fā)環(huán)境下瀏覽者身份的系統(tǒng)實(shí)現(xiàn)效果圖

以用戶與授權(quán)模塊為例,使用者登錄后臺、授權(quán)模塊入口、找回賬號等內(nèi)容,管理者對賬號的管理,在開發(fā)環(huán)境下系統(tǒng)實(shí)現(xiàn)效果如圖4和圖5所示。

圖4 開發(fā)環(huán)境下使用者的用戶授權(quán)模塊實(shí)現(xiàn)效果圖

圖5 開發(fā)環(huán)境下管理者的用戶授權(quán)模塊實(shí)現(xiàn)效果圖

系統(tǒng)主程序和數(shù)據(jù)庫部署在本單位的虛擬化集群中,虛擬化集群具有部署和運(yùn)維簡單方便且集中,資源能夠動態(tài)化分配,能耗和使用成本低廉等特性,在單位信息化建設(shè)中被廣泛應(yīng)用。單位早就部署了虛擬化主機(jī),通過向單位網(wǎng)絡(luò)管理部門申請,獲得一臺空白的虛擬機(jī)。在該虛擬機(jī)中安裝openEuler操作系統(tǒng),該操作系統(tǒng)在安裝過程中提供了openGauss 一鍵部署功能,免去了創(chuàng)建用戶、安裝依賴和配置環(huán)境變量等通過源碼編譯部署的步驟,極大的方便了部署操作。

openGauss 的數(shù)據(jù)及配置文件默認(rèn)安裝在/var/lib/opengauss/data 目錄下,在系統(tǒng)分區(qū)時應(yīng)注意分配好相應(yīng)的空間。操作系統(tǒng)安裝完成后默認(rèn)創(chuàng)建了opengauss 用戶用于數(shù)據(jù)庫的管理,同時也配置好了數(shù)據(jù)庫的開機(jī)自啟動,僅需簡單的配置便可以使用。首先通過SSH登錄到新安裝的操作系統(tǒng),初始化數(shù)據(jù)庫,創(chuàng)建新數(shù)據(jù)庫用戶并授予權(quán)限,然后修改pg_hba.conf 文件,設(shè)置允許連接的主機(jī)和數(shù)據(jù)庫,這樣就可以使用可視化的數(shù)據(jù)庫管理工具對數(shù)據(jù)庫進(jìn)行管理,值得注意的是openGauss采用了sha256的加密形式,最后按照實(shí)際情況修改postgresql.conf 文件中的最大允許連接數(shù)量,完成數(shù)據(jù)庫的配置。通過可視化管理工具連接數(shù)據(jù)庫,將開發(fā)環(huán)境中按照表關(guān)系圖設(shè)計的數(shù)據(jù)庫結(jié)構(gòu)轉(zhuǎn)移到生產(chǎn)環(huán)境,并配置好定期備份。

Go語言開發(fā)的程序部署簡單方便,無需其他運(yùn)行環(huán)境,在運(yùn)行環(huán)境建立相應(yīng)的用戶和目錄并進(jìn)行授權(quán),通過SFTP 協(xié)議將編譯好的程序文件和靜態(tài)文件拷貝至相應(yīng)的目錄下,配置好進(jìn)程守護(hù)和開機(jī)自啟動,即可完成主程序的部署。

4 結(jié)束語

本文介紹了基于Go 語言開發(fā)了一套穩(wěn)定易用,用戶和權(quán)限管理靈活的內(nèi)容管理系統(tǒng),實(shí)現(xiàn)了單位內(nèi)容信息的發(fā)布與獲取。系統(tǒng)開發(fā)和使用成本低廉,采用了開源技術(shù)進(jìn)行開發(fā),大大降低了對于商用軟件的依賴。系統(tǒng)采用了MVC 設(shè)計模式,拓展靈活,可維護(hù)能力強(qiáng),系統(tǒng)的B/S架構(gòu)使得用戶不需要安裝客戶端,通過瀏覽器直接訪問系統(tǒng),獲取信息更加方便快捷。系統(tǒng)在前端方面仍然有較大提升空間,下一步將對系統(tǒng)的前端進(jìn)行美化和提升,運(yùn)用現(xiàn)在流行的Vue 框架和UI 庫,替換目前使用的LayUI,讓系統(tǒng)變得更加美觀。內(nèi)容管理系統(tǒng)的設(shè)計、部署和使用,極大地方便了用戶獲取各類信息,促進(jìn)了單位信息化的發(fā)展。

猜你喜歡
數(shù)據(jù)庫內(nèi)容用戶
內(nèi)容回顧溫故知新
數(shù)據(jù)庫
財經(jīng)(2017年2期)2017-03-10 14:35:35
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
主要內(nèi)容
臺聲(2016年2期)2016-09-16 01:06:53
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數(shù)據(jù)庫
財經(jīng)(2016年3期)2016-03-07 07:44:46
數(shù)據(jù)庫
財經(jīng)(2016年6期)2016-02-24 07:41:51
如何獲取一億海外用戶
數(shù)據(jù)庫
主站蜘蛛池模板: 成人韩免费网站| jizz在线观看| 1769国产精品视频免费观看| 日本高清成本人视频一区| 久久久久国产精品熟女影院| 91在线播放免费不卡无毒| 欧美精品在线视频观看| 亚洲乱伦视频| 国产高清在线观看| 91免费国产高清观看| 婷婷开心中文字幕| 国产福利影院在线观看| 四虎永久在线视频| 欧美午夜在线播放| 99国产精品一区二区| 国产免费a级片| 9966国产精品视频| 在线无码av一区二区三区| 久久人体视频| 国产一区二区三区免费| 色爽网免费视频| 国产网站一区二区三区| 欧美不卡二区| jizz国产视频| 福利在线一区| 亚洲高清日韩heyzo| 一级毛片免费观看不卡视频| 成人夜夜嗨| 77777亚洲午夜久久多人| 欧美三级不卡在线观看视频| 亚洲青涩在线| 久久久受www免费人成| 久久黄色一级片| 久久久精品久久久久三级| 中文国产成人精品久久一| 精品国产一区二区三区在线观看| 91久久青青草原精品国产| 欧美97欧美综合色伦图| YW尤物AV无码国产在线观看| av一区二区人妻无码| 波多野结衣无码AV在线| 日韩av在线直播| 久久久久88色偷偷| 尤物精品视频一区二区三区| 亚洲欧洲综合| 国产高清精品在线91| 国内精品九九久久久精品| 日a本亚洲中文在线观看| 97国产在线观看| 久久人体视频| 色综合国产| 色综合狠狠操| 国产亚洲欧美在线中文bt天堂| 一区二区午夜| 国产91熟女高潮一区二区| 色色中文字幕| 亚洲国产91人成在线| 成人一级黄色毛片| 在线五月婷婷| 亚洲精品不卡午夜精品| 亚洲天堂自拍| 国产肉感大码AV无码| 亚洲黄色成人| 亚洲精品无码人妻无码| 精品无码一区二区三区在线视频| 色天天综合| 成年人视频一区二区| 91色爱欧美精品www| 久久久精品国产SM调教网站| 亚洲性网站| 中文字幕在线日本| 日本在线视频免费| 亚洲精品成人7777在线观看| 五月天综合婷婷| 国内精品久久久久鸭| 国产精品一区在线麻豆| 久久男人资源站| 国产av无码日韩av无码网站| 欧美专区日韩专区| 呦女精品网站| 97影院午夜在线观看视频| 福利在线一区|