国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于ssm+redis的網(wǎng)絡問答社區(qū)的設計與實現(xiàn)

2018-07-12 09:37董成光楊保華
電腦知識與技術 2018年14期

董成光 楊保華

摘要:隨著軟件技術不斷地發(fā)展,人與人之間也出現(xiàn)了各種各樣的社交軟件,問答社區(qū)就是其中一種,比如知乎網(wǎng)站,各大高校企業(yè),政府機構(gòu)都有自己相應的內(nèi)部論壇來討論各自內(nèi)部的問題。該文根據(jù)知乎的業(yè)務流程模式,運行方式,架構(gòu)方式,完成一個基于javaweb架構(gòu)的模仿知乎的問答社區(qū)即蛤乎的設計和實現(xiàn)。問答社區(qū)運行java和mysql和tomcat體系來開發(fā)和實現(xiàn),包括自動發(fā)送郵件,驗證用戶,登錄,自己個人主頁的提問問題,關注別人的問題,用戶相互之間關注,消息推送第一時間獲取關注的問題和用戶的信息,發(fā)現(xiàn)更多新知識,查看當月本周的最新最熱問題等服務。在整個系統(tǒng)設計中充分利用了工廠設計模式,面向接口編程,動態(tài)代理,自動自如,緩存,tomcat集群,分布式鎖等,使系統(tǒng)更加具有耦合性,提高網(wǎng)站的運行速度和高并發(fā)。

關鍵詞:問答社區(qū);javaweb;redis;ssm;蛤乎

中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2018)14-0048-04

Abstract: With the rapid development of software technology, a variety of social software have appeared, the question-answer(Q&A;) community is one of them, such as the ZHUHU website. In order to discuss their internal problem, many units have their own internal forums, such as university enterprises and government agencies. According to the business process mode, operation mode and architecture mode of the ZHUHU website, a Q &A; community HAHU based a JavaWeb architecture is designed and implemented which is similar to ZHUHU website. Java and MySQL and Tomcat system are used in HAHU, including automatic mail, user login, authentication, questions in their own personal home, attention to the problems of others, between user attention, the message push the first time to obtain the attention and user information, more new knowledge, service of viewing the latest hot issues. In order to improve the running speed and high concurrency of the web site, the factory design pattern is used in the whole design of the system, including interface oriented programming, dynamic proxy, automatic freely, cache, Tomcat cluster, distributed lock etc.

Key words:Q&A; community; javaweb; redis; ssm; HAHU

問答社區(qū)至互聯(lián)網(wǎng)發(fā)展以來,出現(xiàn)了各個基于B/S架構(gòu)的問答社區(qū)[1],目前問答社區(qū)的時代已經(jīng)過去,好多人已經(jīng)漸漸忘記問答社區(qū),信息爆炸時代,大量的無用信息充斥在我們周圍,然而人們又很難去辨別,如當今比較出名的知乎網(wǎng)站,就是一問答的形式出現(xiàn),在這里面集合許許多多的知識和有用的知識,讓我們可以更快更好的學習知識,分享知識。當今國內(nèi)外知名論壇有很多,大大的吸引了很多的相關技術人才,為那些知識專門作答[2]。

本網(wǎng)站的開發(fā)意義在于為了更好組織之上和聚集各個散落的知識面向技術討論的人群開所發(fā)的問答社區(qū),目的是提高人們積極參加各個問題的討論,提高自身知識的深度和高度,積極向身邊的人分享自己的知識,也為了自己更加熟悉技術的新技術和了解其架構(gòu)原理

問答社區(qū)依附知乎網(wǎng)站為原型,基于javaweb技術,mysql數(shù)據(jù)庫tomcat,阿里云,linux等最新技術和idea進行開發(fā)[3]。

整個架構(gòu)采用mvvc設計模式進行編寫,平臺開發(fā)采用idea+maven集成jar包來更好地進行管理,使用java語言來實現(xiàn),采用三大流行開源框架spring,springmvc,mybatis,采用redis緩存,以mysql作為數(shù)據(jù)庫進行數(shù)據(jù)交互[4,5]。采用tomcat8+jdk1.8作為基礎開發(fā)過程中主要研究的有以下幾個方面:

1)綜合運用計算機網(wǎng)絡技術、管理信息系統(tǒng)思想和軟件工程方法,選擇實現(xiàn)系統(tǒng)的技術方案,并確定其開發(fā)環(huán)境;

2)環(huán)境的搭建,安裝jdk,搭建Maven倉庫,配置國內(nèi)倉庫,tomcat的安裝與配置,linux上redis的安裝和啟用服務;

3)spring的基本配置和基本類庫使用,整合三大框架來實現(xiàn)系統(tǒng)的解耦性;

4)對數(shù)據(jù)庫表的設計,字段關聯(lián)等;

5) ssm+redis的整合,數(shù)據(jù)庫的管理,代碼自動生成,插件的運用,服務啟動,打包部署等;

6)前后端分離技術會話管理,最主要的是需要管理會話狀態(tài),改變以前前后端分離就無法使用session會話的狀態(tài)。

1 問答社區(qū)模塊設計

需求分析不僅是軟件定義時期的最后一個階段,而且是軟件開發(fā)期的第一個階段,也是關系到軟件開發(fā)成敗的關鍵步驟。只有通過需求分析才能把軟件功能和性能的總體概念描述為具體的軟件需求規(guī)格說明,從而奠定軟件開發(fā)的基礎。研究的對象是軟件項目的用戶要求,必須全面理解用戶的各項要求,但又不能全盤接受所有的要求。為了達到這一目的,我們必須對其中模糊的要求進行澄清,然后才能決定是否可以采納。準確地表達被接受的用戶要求,也是需求分析的另一個重要方面,只有經(jīng)過確切描述的軟件需求才能成為軟件設計的基礎。

1.1開發(fā)平臺的搭建

先搭建jdk環(huán)境,先下載jdk1.8,配置系統(tǒng)環(huán)境,在cmd輸入java –version出現(xiàn)jdk1.8為配置成功,下載idea 配置jdk路徑,下載tomcat免安裝版本,下載Maven 配置國內(nèi)私服,啟動idea 在pom.xml加入依賴jar包的版本。下載redis 在linux上 解壓并裝置 啟動即可使用Mybatis-Generator自動生成mapper和實體類pojo,配置redis數(shù)據(jù)源:配置spring容器 整合Mybatis數(shù)據(jù)源加載mapper文件。問答社區(qū)采用mmvc三層架構(gòu)模式體系系統(tǒng)義務流程處理如圖1所示:

1.2 用戶登錄注冊功能設計

數(shù)據(jù)庫表設計為,用戶表:username,用戶名gender,性別simple_desc一句話介紹avatar_url頭像路徑居住地industry 所在行業(yè)career職業(yè)經(jīng)歷education教育經(jīng)歷full_desc個人簡介,其他衍生屬性like_count 獲得點贊數(shù)collect_count,獲得收藏數(shù)following_count,關注了多少人,follower_count關注者多少人,scan_count個人主頁瀏覽次數(shù)create_time,注冊時間。

用戶登錄注冊流程:

①注冊-》發(fā)送郵件-》查看郵件-》激活-》數(shù)據(jù)庫更改用戶激活狀態(tài)-》注冊完成;

②登錄-》輸入郵箱和密碼-》登錄成功-》redis保存會話session并設置過期時間,登錄流程示意圖如圖2所示:

1.3 我的收藏模塊設計

用戶可以自己創(chuàng)建自己的收藏夾 每個收藏夾里包含自己收藏的話題。數(shù)據(jù)庫表設計如下表1所示:

1.4我的提問話題模塊設計

主要是讓用戶更加能夠主動地參與話題討論,解決自己對某些領域,或者問題不懂的地方展現(xiàn)給他加,這樣可以讓用戶更好的學到自己的知識,增加與別人的溝通能力。

數(shù)據(jù)庫表設計表2如下:

1.5 用戶關注話題模塊設計

Redishash散列-》存入(user_id,valuse); 需求分析問題可以分兩種情況來看:1、看自己的關注,粉絲列表2、看別人的關注,粉絲列表看自己的關注,粉絲列表。關注與被關注圖如圖3所示:

1.6 話題搜索模塊設計

ajax請求-》springmvc映射到對應的實體類Controller-》Service服務類方法中-》Mapper接口

實體類:Tocpc

服務類:topService;

Dao類:topicMapper

在mysql全文中搜索話題使用%號占位符搜索所有可能的結(jié)果

字段設計如下表3所示:

1.7 最新最熱模塊設計

最新的熱門話題,首先需要做一些限制,如果一篇文章的瀏覽人數(shù)達到100,所以文章很有趣的文章,如果有500個主題,50個問題的有趣的文章,為了產(chǎn)生時間根據(jù)主題發(fā)布時間和當前時間尺度的話題進行具體計算方法:通過不斷降低的話題贊美乘以一個常數(shù),然后添加發(fā)布時間,結(jié)構(gòu)是當前主題積分常數(shù)為432(一天的秒數(shù)除以主題數(shù)200)主題的每一個好評對分數(shù)432。

使用散列散列存儲主題的各個字段。通過使用兩個有序存儲,首先命令ID的話題的成員集,釋放時間得分,第二名相同的有序集合ID,并且比分是二階組合得分,不僅可以根據(jù)發(fā)表文章的順序展示的主題,并根據(jù)主題展示高分。為了防止用戶重復同一主題,我們需要記錄一個用戶列表,收集已被表揚的用戶,并將ID設置為搜索條件。

2 問答社區(qū)系統(tǒng)實現(xiàn)

2.1 平臺的搭建

問答社區(qū)采用ssm+redis+maven架構(gòu)來實現(xiàn),spring作為容器,springmvc作為前端管理,mybatis作為orm數(shù)據(jù)庫訪問層。Maven作為jar包版本管理。Pojo管理實體類。Mapper管理數(shù)據(jù)源接口實現(xiàn),mapper.xml原生動態(tài)sql的編寫。使用Mybatis-generator自動生成pojo和Mapper。在pom.xml中添加如下spring依賴的jar包,在pom.xml中添加如下mybatis依賴的jar包,在pom.xml中添加如下mysql,redis依賴的jar包,在pom.xml添加springmvc依賴的jar包。

Redis服務安裝如下:在linux服務器中,使用Xshell5和Xft5(Xshell是對服務器遠程連接操作,Xftp是對服務器上文件進行上傳和管理操作)吧下載的zip通過命令tar –zxvf 文件名稱解壓到指定的目錄 并編譯。Make install安裝 安裝成功后 啟動服務,并通過配置文件中的daemonize yes來進行后臺服務掛起。啟動reids客戶端 輸入命令后進入 redis服務啟動成功。在spring容器中配置redis服務如下:

spring容器需要整合前端控制器,這是是為了方便控制路徑訪問,方法映射,通過注解來完成。Spring作為一個管理bean生命周期的輕量級容器,可以整合數(shù)據(jù)源的orm框架,整合前端控制器框架。整合redis。

在web項目中,其實很重要的是web.xml文件的配置,web.xml用來初始化操作。比如說歡迎頁,攔截器,定義資源加載路徑,加載級別,編碼格式等。在web.xml容器中聲明springmvc.xml配置文件路徑,這樣在啟動項目中會根據(jù)這個路徑去加載配置文件信息。

2.2 用戶管理模塊實現(xiàn)

以用戶管理模塊為例,其注冊與登錄主頁面如圖4所示:

注冊實現(xiàn):Ajax->UserControler()->對應方法(/register)。

Pojo類:Response(包含了請求響應狀態(tài),需要返回的信息,返回的時間).

Mapper:userMapper->userMapper.xml 插入用戶信息。

Resid:設置用戶默認關注用戶。在Redis有序結(jié)合中添加當前用戶id,關注的人,關注的用戶id.設置用戶被關注的人:被關注的人用戶Id,被關注字段,時間,用戶id.依次內(nèi)推,增加兩個關注用戶和被關注用戶。

輸入每個字段-》提交到/register接口方法中,設置用戶默認關注用戶后 就注冊完成,系統(tǒng)會發(fā)送一封郵件進行賬號激活,登錄成功界面如下圖5所示:

3 結(jié)束語

本文所研究的內(nèi)容來自模仿知乎問答社區(qū),目的是通過問答社區(qū)來收集知識,分類知識,供人們討論,學習知識的一個場所。

首先,在對問答社區(qū)業(yè)務流程進行分析,得到了關于基于ssm框架的問答社區(qū)系統(tǒng)的總體框架。根據(jù)知乎的流程框架和大概的需求,設計并分析了相應模;其次,選擇技術方案,通過spring @ResponseBody來實現(xiàn)resutful風格的統(tǒng)一接口,利用redis完成會話統(tǒng)一管理和權(quán)限識別驗證;最后,進行了數(shù)據(jù)庫的設計,完成了整個問題社區(qū)系統(tǒng)蛤乎的設計。

參考文獻:

[1] 謝新洲, 黃楊. 從平臺到社區(qū)——網(wǎng)絡社區(qū)問答的演變研究[J]. 出版科學, 2018(1):14-19.

[2] 劉周穎, 趙宇翔. 基于語音互動的付費知識問答社區(qū)運營模式初探——以分答和值乎為例[J]. 圖書與情報, 2017(4).

[3] 呂學婷. 基于Springmvc和Mybatis框架的門戶網(wǎng)站及其內(nèi)容管理系統(tǒng)的設計與實現(xiàn)[D]. 上海:東華理工大學, 2016.

[4] 趙姝菊. 基于Java Web項目開發(fā)之JavaBean應用探究[J]. 電腦知識與技術, 2012,8(5):1094-1097.

[5] 趙成剛, 孫培芝. 基于SpringMVC和Mybatis開發(fā)框架的設計與實現(xiàn)[J]. 當代教育實踐與教學研究:電子刊, 2017(9).

太湖县| 靖西县| 房产| 芷江| 清水县| 句容市| 易门县| 北流市| 集安市| 汉阴县| 怀宁县| 宝丰县| 格尔木市| 茂名市| 抚宁县| 乾安县| 义马市| 保德县| 同江市| 东阳市| 长乐市| 克山县| 黎城县| 凌海市| 鄂伦春自治旗| 观塘区| 双江| 固安县| 高雄市| 百色市| 锡林郭勒盟| 彰化县| 成都市| 门头沟区| 团风县| 吴桥县| 蓝山县| 彰化县| 阿图什市| 和龙市| 宁德市|