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

基于Go語言的內容管理系統的設計與實現

2022-09-21 07:55:36王錚清劉壯峰
電腦知識與技術 2022年24期
關鍵詞:數據庫內容用戶

王錚清,劉壯峰

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

1 引言

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

2 系統的技術選型

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

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

2.1 Go語言與Gin框架

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

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

2.2 openGauss數據庫

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

openGauss 支持標準SQL 規范,擁有非常友好的中文參考文檔,有數據庫使用經驗的開發者可以很快上手。官方提供了Go語言的連接驅動和可視化管理工具Data Studio,極大地方便了開發、部署和后期管理維護。

2.3 前端技術

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

3 系統的設計與實現

3.1 MVC 設計模式與Go 語言的實現

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

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

圖1 MVC設計模型和系統主要結構

3.2 系統功能及數據庫的設計

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

表1 系統主要功能表

根據系統的功能設計,數據庫設計了用戶信息表、登錄信息表、部門信息表、應用名稱表、個人應用表、領導動態表、工作計劃表、投稿文章表、投稿附件表、版塊信息表、版塊用戶表和版塊文件表等表格。在關系型數據庫中,數據庫表之間存在一對一、一對多、多對多和多對一的四種對應關系,系統數據庫中表關系如圖2所示。

圖2 數據庫表關系圖

3.3 系統功能及數據庫的實現與部署

根據系統的程序結構、功能及數據庫的設計,完成對系統功能及數據庫的實現,根據表1的設計,以瀏覽者角色為例,瀏覽主頁、會議安排等內容,在開發環境下系統實現效果如圖3所示。

圖3 開發環境下瀏覽者身份的系統實現效果圖

以用戶與授權模塊為例,使用者登錄后臺、授權模塊入口、找回賬號等內容,管理者對賬號的管理,在開發環境下系統實現效果如圖4和圖5所示。

圖4 開發環境下使用者的用戶授權模塊實現效果圖

圖5 開發環境下管理者的用戶授權模塊實現效果圖

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

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

Go語言開發的程序部署簡單方便,無需其他運行環境,在運行環境建立相應的用戶和目錄并進行授權,通過SFTP 協議將編譯好的程序文件和靜態文件拷貝至相應的目錄下,配置好進程守護和開機自啟動,即可完成主程序的部署。

4 結束語

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

猜你喜歡
數據庫內容用戶
內容回顧溫故知新
科學大眾(2022年11期)2022-06-21 09:20:52
數據庫
財經(2017年2期)2017-03-10 14:35:35
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
主要內容
臺聲(2016年2期)2016-09-16 01:06:53
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
如何獲取一億海外用戶
創業家(2015年5期)2015-02-27 07:53:25
數據庫
主站蜘蛛池模板: 国产三级成人| 亚洲人成人无码www| 亚洲第一成人在线| 国产美女免费| 狠狠操夜夜爽| 亚洲精品日产AⅤ| 欧美国产精品不卡在线观看| 亚洲第一黄色网址| 茄子视频毛片免费观看| 国产美女一级毛片| 免费看av在线网站网址| 亚洲人妖在线| 日韩一区二区三免费高清| 成人噜噜噜视频在线观看| 亚洲天堂免费| 在线观看欧美国产| 色综合天天综合中文网| 精品国产电影久久九九| 久久国产精品影院| 国产xxxxx免费视频| yjizz视频最新网站在线| 97综合久久| 精品亚洲欧美中文字幕在线看| 免费精品一区二区h| 波多野结衣视频网站| 成人在线亚洲| 国产三级毛片| 中文字幕2区| 日韩大乳视频中文字幕| 99久久精品国产麻豆婷婷| 亚洲va视频| 日本一区高清| 国产午夜人做人免费视频中文| 欧美成人精品高清在线下载| 无码aaa视频| 国产精品永久在线| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 试看120秒男女啪啪免费| 亚洲色图狠狠干| 狠狠亚洲婷婷综合色香| 欧洲高清无码在线| 九色综合视频网| 成年人午夜免费视频| 2024av在线无码中文最新| 亚洲男人的天堂在线观看| 三区在线视频| 国产亚洲欧美在线人成aaaa| 久久综合九色综合97婷婷| 亚洲高清无码久久久| 亚洲第七页| 日本爱爱精品一区二区| 婷婷亚洲视频| 在线亚洲小视频| 国产高潮视频在线观看| 亚洲欧美极品| 国产午夜一级淫片| 国产美女精品人人做人人爽| 国产精品视屏| 91国内在线视频| 日韩无码一二三区| 国产一区三区二区中文在线| 亚洲αv毛片| 亚洲成a人片在线观看88| 婷婷综合亚洲| 国产情侣一区二区三区| 特级毛片免费视频| 色婷婷在线播放| 呦女亚洲一区精品| 欧美精品黑人粗大| 国产一区二区三区精品久久呦| a级毛片一区二区免费视频| 91免费国产高清观看| 日韩欧美高清视频| 久久国产精品嫖妓| 在线观看国产黄色| 久久精品人人做人人爽97| 国产精品第| 欧美国产日韩另类| 国产在线91在线电影| 影音先锋亚洲无码| 青草视频网站在线观看| 亚洲男人天堂久久|