蒲公英论坛

简介: 蒲公英论坛实验报告

目录
一、 项目概述 3
1.1. 项目目的 3
1.2. 需求分析 3
1.3. 小组分工 4
二、 项目开发环境 5
2.1. 开发技术 5
2.2. 服务器部署要求 6
2.3. 开发环境 6
三、 项目设计 6
3.1. 前后端框架 6
3.2. 数据库设计 8
四、 功能总览 9
4.1. 用户登录 9
4.2. 查看话题 10
4.3. 用户评论 11
4.4. 更换头像 11
五、 项目功能 12
5.1. 用户登录 12
5.2. 查看话题 13
5.3. 用户评论 14
5.4. 更换头像 16
(参考)

一、
项目概述
1.1. 项目目的
伴随大数据时代到来,网络通信蓬勃发展,用户需求量日益上升,前景光明,“蒲公英”论坛项目应运而生。该项目旨在为大量使用者提供便捷服务,其目标涵盖发帖话题、评论热度、发表观点、后期维护等,营造丰富文明的论坛环境。
1.2. 需求分析
致力于打造用户在线交流平台,提高交流效率。用户通过URL网址访问首页,注册自己专属的论坛账号,以此发表话题讨论或者对某个帖子发表自己的观点。与此同时,为维护良好的交流环境,防止恶意访问等情况发生,在安全方面引入拦截予以屏蔽。
1.3. 小组分工
前端:葛宇航 宗冰 朱谭天宇
后端:张子健 孙宇飞

二、项目开发环境
2.1 开发技术
Java,vue
2.2 服务器部署要求
使用阿里云的云服务器
2.3 开发环境
Visual Studio Code

三、项目设计
3.1 前后端框架

3.2 数据库设计

评论表

CREATE TABLE `comments`  (
   `comments_id` int(11) 
        NOT NULL 
        AUTO_INCREMENT,
  `user_id` int(11) NULL 
        DEFAULT NULL,
  `topic_id` int(11) 
        NOT NULL,
  `comments_detail_id` varchar(500)
        CHARACTER SET utf8 COLLATE utf8_general_ci             NOT NULL,
  `likes` int(11)
        NOT NULL DEFAULT 0,
  `hates` int(11) 
        NOT NULL DEFAULT 0,
  `comments_time` timestamp 
        NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE             CURRENT_TIMESTAMP     
        COMMENT '发表时间',
  `del_flag` enum('true','false')    
        CHARACTER SET utf8 COLLATE utf8_general_ci
        NOT NULL
        DEFAULT 'false' 
        COMMENT 'true表示已经被删除',
  `reply_id` int(11)
        NOT NULL 
        DEFAULT 0 
        COMMENT '回复目标的id',
  `reply_type` int(11) 
        NOT NULL 
        DEFAULT 0 
COMMENT '0代表回复主题 1代表回复评论',
  `parent_id` int(11) 
        NOT NULL
        DEFAULT -1
        COMMENT '回复的评论的id',
  `children_id` int(11) 
        NOT NULL 
        DEFAULT -1 
        COMMENT '被评论的评论id',
  PRIMARY KEY (`comments_id`) USING BTREE
) ENGINE = InnoDB 
AUTO_INCREMENT = 6 
CHARACTER SET = utf8 
COLLATE = utf8_general_ci 
ROW_FORMAT = DYNAMIC;

评论详情表

CREATE TABLE `comment_detail`  (
   `comment_detail_id` int(11) 
NOT NULL 
    AUTO_INCREMENT,
  `comment_detail` varchar(500) 
    CHARACTER SET utf8 COLLATE utf8_general_ci
    NOT NULL,
  PRIMARY KEY (`comment_detail_id`)
    USING BTREE
) 
ENGINE = InnoDB
AUTO_INCREMENT = 2 
CHARACTER SET = utf8 
COLLATE = utf8_general_ci 
ROW_FORMAT = DYNAMIC;

拆分评论和评论内容是为了在数据量增加之后尽量的提高内存块命中率以提高速度

话题表

CREATE TABLE `topic`  (
  `topic_id` int(11) NOT NULL AUTO_INCREMENT,
  `topic_title` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `topic_detail_id` int(11) NOT NULL,
  `topic_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `topic_type` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '帖子类型',
  `user_id` int(11) NOT NULL,
  `comment_num` int(11) NOT NULL DEFAULT 0,
  `report_num` int(11) NOT NULL DEFAULT 0,
  `heat_num` int(11) NOT NULL DEFAULT 100,
  `likes_num` int(11) NOT NULL DEFAULT 0,
  `hates_num` int(11) NOT NULL DEFAULT 0,
  `views` int(11) NOT NULL DEFAULT 0 COMMENT '浏览次数',
  `stars` int(11) NOT NULL DEFAULT 0 COMMENT '收藏量',
  `del_flag` int(11) NOT NULL DEFAULT 0,
  PRIMARY KEY (`topic_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 9 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;

话题详情表

DROP TABLE IF EXISTS `topic_detail`;
CREATE TABLE `topic_detail`  (
  `topic_detail_id` int(11) NOT NULL AUTO_INCREMENT,
  `topic_detail` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  PRIMARY KEY (`topic_detail_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = DYNAMIC;

用户表

CREATE TABLE `user`  (
  `user_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `user_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户账号',
  `nick_name` varchar(30) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户昵称',
  `email` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '用户邮箱',
  `phonenumber` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '手机号码',
  `sex` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '用户性别(0男 1女 2未知)',
  `password` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',
  `status` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '帐号状态(0正常 1停用)',
  `del_flag` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)',
  `login_ip` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '最后登录IP',
  `login_date` datetime NULL DEFAULT NULL COMMENT '最后登录时间',
  `create_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '创建者',
  `create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '' COMMENT '更新者',
  `update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
  `avatar_path` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT 'default.png',
  PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户信息表' ROW_FORMAT = DYNAMIC;

四、功能总览
4.1 用户登录
用户通过URL访问前端首页,并输入账号密码点击登录。
4.2 查看话题
用户登录后携带认证,验证通过后即可查看。
4.3 用户评论
用户点击话题进入话题主页即可直接阅读,可发表对话题的直接评论也可对评论再评论。
4.4 更换头像

五、项目功能
5.1 用户登录
前端完成第一次校验账号密码长度并向后端发送登录请求,后端接收并进行第二次校验,如果失败证明直接通过接口调用访问后端,定性为恶意访问;若成功则登录完成。
5.2 查看话题
用户登录后需携带token认证,以此验证身份是否合法。话题的展示需要首先展示加载动画告知用户正在加载信息,之后向后端发起请求获得话题的标题内容等信息。后端收到前端的请求信息后首先要经过两个拦截器,第一个是黑名单的拦截器,检测访问的IP是否存在于黑名单中,若存在则直接返回错误信息而不占用服务器资源,通过后经过第二个拦截器,验证携带的token是否存于Redis服务器中,确认后调用服务由服务器特定规则排序返回数据用于展示。前端首先存入data段之后可以选择性的加载。
5.3 用户评论
用户在点击一个话题后可以进入话题详情页,并且展示刚才获得的全部话题信息,同时向服务器请求该话题下的直接评论及需要携带话题的ID。后端在收到请求后利用数据库的表连接将评论表和回复详情表进行连接并返回数据。每个评论可以有自己的评论,前端需要向后端发送请求并携带评论的ID。后端在接收到评论的ID后调用方法递归的找到对应的所有回复向前端发送。前端收到后进行展示。在页面底部输入评论内容可以回复话题,或者在评论下点击回复可以在输入框内评论另一条评论。向服务器发送新增评论的请求,服务器在收到请求后向数据库插入评论。
5.4 更换头像

相关文章
|
云安全 存储 运维
阿里云ACE为什么改革?考试要考几次才能通过?
阿里云的认证在业界内一直有很高的含金量,而对于从业者来说,考阿里云认证对自己的事业是有非常大帮助的。
|
4月前
|
存储 域名解析 缓存
DNS解析过程
DNS(域名系统)解析是将域名转换为IP地址的过程,对互联网运行至关重要。解析方式主要包括递归查询和迭代查询。递归查询由本地DNS服务器代为完成,简化客户端操作;迭代查询则需客户端逐级向根DNS服务器、TLD服务器和权威DNS服务器请求。过程中涉及缓存机制以提高效率,如客户端与本地DNS服务器缓存及TTL值管理。示例中,解析www.example.com需依次通过本地、根、TLD和权威DNS服务器获取IP地址。
544 18
|
8月前
|
Linux iOS开发 MacOS
deepseek部署的详细步骤和方法,基于Ollama获取顶级推理能力!
DeepSeek基于Ollama部署教程,助你免费获取顶级推理能力。首先访问ollama.com下载并安装适用于macOS、Linux或Windows的Ollama版本。运行Ollama后,在官网搜索“deepseek”,选择适合你电脑配置的模型大小(如1.5b、7b等)。通过终端命令(如ollama run deepseek-r1:1.5b)启动模型,等待下载完成即可开始使用。退出模型时输入/bye。详细步骤如下图所示,轻松打造你的最强大脑。
14354 86
|
8月前
|
存储 Kubernetes 网络协议
还不会 Cert Manager 自动签发证书?一文掌握
本文将介绍如何使用 Cert Manager 实现自动签发证书并与 Rainbond 结合使用。
|
供应链 监控 区块链
确保区块链供应链的透明度和可追溯性,我们可以从以下几个方面进行
**区块链提升供应链透明度与可追溯性:** - 建立不可篡改记录,保证数据真实完整。 - 实现实时监控,加快问题响应,提高效率。 - 追溯产品全程,消费者可验证来源,增强信任。 - 促进信息共享,降低沟通成本,提升协同。 - 防止欺诈串通,确保供应链诚信与透明。 这些措施通过区块链技术的应用,优化供应链管理,降低成本,增强市场信心。
|
SQL 算法 关系型数据库
MySQL Online DDL原理解读
MySQL Online DDL原理解读
|
机器学习/深度学习 算法 Python
CatBoost中级教程:模型解释与调试
CatBoost中级教程:模型解释与调试【2月更文挑战第10天】
801 0
|
Cloud Native 安全 中间件
阿里云和中创中间件完成产品集成认证,共同助力基础软件生态建设
近日,山东中创软件商用中间件股份有限公司(以下简称“中创中间件”)产品“中创应用服务器软件V9.1、V10”与阿里云计算有限公司(以下简称阿里云)产品“阿里云PolarDB数据库管理软件V2.0”经过严格测试程序完成产品集成认证测试,此次认证意味着双方在云原生领域正式携手合作。
716 93
阿里云和中创中间件完成产品集成认证,共同助力基础软件生态建设
|
前端开发 Java 应用服务中间件
Spring.Boot Web 模板引擎和首页为什么默认的是index.html页面呀《课时十》
Spring.Boot Web 模板引擎和首页为什么默认的是index.html页面呀《课时十》
554 0
|
机器学习/深度学习 人工智能
「AIGC创作挑战 | 全网寻找AI艺术家」火热进行中🔥
即日起至7月31日,参赛者按规则完成基础游戏、进阶任务或拉新挑战,三个活动带您实现AIGC从入门到进阶,还有Apple Watch、Lamy钢笔、罗技键盘等精美奖品等您赢~