当前位置: 首页 > news >正文

基于HTML的个人博客系统的设计与实现

一、前言

        随着互联网的飞速发展,人们分享生活、表达观点和展示自我的需求日益增长。个人博客作为一种重要的网络交流平台,为用户提供了便捷的信息发布和分享渠道。它不仅可以记录个人的成长经历、专业知识、兴趣爱好等,还能促进用户之间的互动交流,拓展社交圈子,甚至在某些领域成为个人品牌塑造和知识传播的有力工具。

        本项目采用 SpringBoot + MySQL + HTML 技术构建应用。SpringBoot 作为后端框架,简化了配置与开发流程,其强大的依赖管理和内置服务器功能,有效提升开发效率与系统性能,方便整合各类组件与服务。MySQL 用于存储数据,提供稳定可靠的数据持久化支持,可高效处理结构化数据的存储、查询与管理。HTML 负责构建前端页面结构,呈现丰富的用户界面,便于用户交互操作,与后端配合实现完整的业务逻辑,此技术组合打造出功能完备、交互友好且性能稳定的应用系统。

二、技术环境

前端:HTML、CSS、JavaScript

后端:SpringBoot、SpringMVC、Mybatis、Redis

插件:Maven Helper、Lombok、MybatisLog

工具:IDEA、Postman、Maven、Git、Navicat

环境:Windows10、MySQL


三、功能设计

3.1 管理员用例图如下图所示:

3.2 用户用例图如下图所示:

四、数据库设计

数据库的 E-R 图(实体 - 关系图)是一种强大的工具,用于直观地表示数据库中的实体及其之间的关系。在数据库设计中,E-R 图可以帮助我们清晰地理解数据的结构和流向。限于篇幅要求,仅列出关键部分实体属性图,如下所述。

五、部分效果展示

5.1 管理员博客列表界面呈现所有博客条目,含标题、作者、发布时间等信息。有搜索框可按关键词筛选,能批量操作删除或设为推荐,显示博客状态标识,点击条目可进入详情编辑页面。

5.2 管理员评论列表界面展示用户评论详情,涵盖评论内容、评论者昵称、所属博客。具备审核状态标识,可批量通过或拒绝评论,能依据博客标题或评论者搜索,且可直接跳转至对应博客文章页面。

5.3 管理员敏感词列表界面罗列系统预设敏感词。提供添加、删除敏感词功能,支持单个或批量操作。可按敏感词内容进行精准搜索,能查看敏感词添加时间,确保对敏感词库的高效管理与维护。

5.4 用户首页展示热门博客推荐,按时间顺序呈现最新发布博客列表,设有分类导航栏便于筛选感兴趣内容,博主头像与昵称清晰可见,还提供搜索框,可快速查找特定博客文章或博主。

5.5 用户收藏夹界面罗列出用户收藏的博客文章。展示文章标题、作者及收藏时间,可依收藏顺序或文章标题排序。点击文章即可快速跳转至详情页重读,并有取消收藏按钮,方便用户整理收藏内容。

5.6 用户个人中心展示头像、昵称等信息。呈现已发布文章列表,可查看文章状态与数据统计。能编辑个人资料,管理关注列表,查看收到的评论与点赞通知,还可进行账号安全设置,如修改密码等操作。

5.7 主页界面汇聚多元博客展示,热门推荐文章置顶吸睛,分类标签云助力精准筛选,博主风采与近期发文一览无余,搜索栏便捷探寻所需,评论点赞数直观呈现,营造活跃且信息丰富的博客社区氛围。

5.8 发布博客界面设有标题输入框、富文本编辑区用于撰写正文,可插入图片、链接等元素。提供文章分类选择及标签添加功能,还有保存草稿与预览发布效果按钮,方便用户创作并完善博客内容后发布。

六、部分功能代码

6.1 判断系统是Linux还是Windows或者是MAC代码

private static String OS = System.getProperty("os.name").toLowerCase();private static OSinfo _instance = new OSinfo();private EPlatform platform;private OSinfo() {}public static boolean isLinux() {return OS.indexOf("linux") >= 0;}public static boolean isMacOS() {return OS.indexOf("mac") >= 0 && OS.indexOf("os") >= 0;}public static boolean isMacOSX() {return OS.indexOf("mac") >= 0 && OS.indexOf("os") > 0 && OS.indexOf("x") > 0;}public static boolean isWindows() {return OS.indexOf("windows") >= 0 || OS.indexOf("Windows") >= 0;}/**** @return*/public static EPlatform getOSname() {if (isLinux()) {_instance.platform = EPlatform.Linux;} else if (isMacOS()) {_instance.platform = EPlatform.Mac_OS;} else if (isMacOSX()) {_instance.platform = EPlatform.Mac_OS_X;} else if (isWindows()) {_instance.platform = EPlatform.Windows;}return _instance.platform;}

七、答辩可能出现的问题

🌟问题一
答辩老师:个人博客系统中的文章分类与标签功能是如何设计与实现的?
同学可回答:在数据库设计方面,创建分类表和标签表,分别存储文章分类信息和标签信息,与文章表建立多对多的关联关系。在后端,通过 SpringBoot 的数据访问层 MyBatis 框架编写相应的接口和实现类,实现对分类和标签的增删改查操作。在前端,使用 HTML 和 JavaScript 构建分类与标签的管理界面,用户可以在发布文章时选择已有分类和标签,或者添加新的分类和标签,提交后通过 AJAX 等技术将数据发送到后端进行处理,并实时更新页面显示,方便用户操作和管理文章的分类与标签体系。

源码及文档获取

大家点赞、收藏、关注、评论啦 、需要源码及文档的可直接私信我即可。

相关文章:

基于HTML的个人博客系统的设计与实现

一、前言 随着互联网的飞速发展,人们分享生活、表达观点和展示自我的需求日益增长。个人博客作为一种重要的网络交流平台,为用户提供了便捷的信息发布和分享渠道。它不仅可以记录个人的成长经历、专业知识、兴趣爱好等,还能促进用户之间的互动…...

DMA(Direct Memory Access):直接内存访问

DMA(Direct Memory Access):直接内存访问 一、传统CPU存取数据 CPU不直接存取外设的原因主要有两点: 速度差异:CPU的处理速度远高于外设,无法直接同步。格式多样性:外设数据格式种类繁多&…...

数据分析python小工具录入产品信息到Excel

在没有后台管理系统的时候,有时候为了方便起见,想提供一个输入框让运营人员直接输入,然后数据就会以数据库的形式存进数据库 效果图: 输入用户名 输入数据 输入信息后点击添加到表格,检查后方便批量保存到excel …...

Mac安装brew的终极方法

/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"按回车后,根据提示操作: 输入镜像序号(1-5都可以)输入Y,回车等待brew安装完成即可。 M系列芯片亲测有效&#x…...

卷积神经网络比于全连接神经网络强在哪?

卷积神经网络(Convolutional Neural Networks,简称CNN)与全连接神经网络(Fully Connected Neural Networks,简称FFNN)是深度学习和神经网络领域中两种最为常见的网络结构。两者在结构、工作原理及应用场景上…...

Stable Diffusion Controlnet常用控制类型解析与实战课程 4

本节内容,是stable diffusion Controlnet常用控制类型解析与实战的第四节课程。上节课程,我们陆续讲解了几个与图像风格约束相关的控制类型,本节课程我们再学习一些实用价值较高的控制类型,看一看他们提供了哪些控制思路。 一&…...

[ShaderLab] 【Unity】【图像编程】理解 Unity Shader 的结构

在计算机图形学领域,开发者经常面临着管理着色器复杂性的挑战。正如大卫惠勒(David Wheeler)所说:“计算机科学中的任何问题都可以通过增加一层抽象来解决。” Unity 提供了这样一层抽象,即 ShaderLab,它通过组织和定义渲染过程的各个步骤,简化了编写着色器的过程。 什…...

Source Insight的使用经验汇总

01-Add All"和“Add Tree”有何区别? 在 Source Insight 中,“Add All”和“Add Tree”是两种向项目(Project)中添加文件的操作选项,它们的区别在于处理文件和目录的方式不同: 1. Add All 范围&am…...

CentOS 7.9 更换 YUM:解决宝塔安装困境的探索之旅

在进行网站搭建工作时,我满怀期待地准备安装宝塔面板,然而却遭遇了安装失败的挫折。经过一番排查与思考,我将目光聚焦到了系统的 YUM 上,怀疑它可能是导致问题的“罪魁祸首”。于是,我毅然决定对 CentOS 7.9 的 YUM 进…...

28. Three.js案例-创建圆角矩形并进行拉伸

28. Three.js案例-创建圆角矩形并进行拉伸 实现效果 知识点 WebGLRenderer (WebGL渲染器) WebGLRenderer 是 Three.js 中用于渲染 3D 场景的主要渲染器。 构造器 WebGLRenderer( parameters : Object ) 参数类型描述parametersObject渲染器的配置参数,可选。 …...

最佳实践:编写和配置 Stylelint 自定义插件,Stylelint 自定义规则

前言 在前端开发中,代码质量和一致性是至关重要的。Stylelint 作为一个强大的 CSS 代码检查工具,能够帮助开发者发现代码中的问题,并保持代码风格的一致性。然而,内置的规则和插件有时无法完全满足特定项目的需求。在这种情况下&…...

vscode借助插件调试OpenFoam的正确的.vscode配置文件

正确的备份文件位置: /home/jie/桌面/理解openfoam/正确的调试爆轰单进程案例/mydebugblastFoam 调试爆轰案例流体 并且工作区和用户区都是openfoam-7版本 问题:F5以debug模式启动后不停在断点 解决方法: 这里备份一下.vsode正确的配置&…...

Towards Frame Rate Agnostic Multi-object Tracking—迈向帧率无关的多目标跟踪

Towards Frame Rate Agnostic Multi-object Tracking—迈向帧率无关的多目标跟踪 发表在IJCV 2023年 作者:Weitao Feng, Lei Bai, Yongqiang Yao, Fengwei Yu & Wanli Ouyang 研究目标:多目标跟踪的帧率无关性研究 IJCV 在计算机视觉领域的影响力非常…...

视频网站中重磅推荐模块(附加源码)

写在开头 上期代码主要实现省市区三级联动效果,开发久了很多功能都是通过框架组件库来完成,但是如果组件满足不了开发需求,还需要开发人员手动封装组件,专门出这样一期文章,通过原生js实现一些特定功能,功能…...

Flink keyBy算子的分区规则

demo代码 String worlds "flink,spark,hadoop,zk,kafka";streamSource.flatMap(new RichFlatMapFunction<String, String>() {Overridepublic void flatMap(String value, Collector<String> collector) throws Exception {String[] worlds value.spl…...

jvm内存优化方式

1. JVM&#xff08;Java Virtual Machine&#xff09;&#xff1a; • 定义&#xff1a;Java虚拟机&#xff0c;是运行Java字节码的抽象计算机。 • 内存管理&#xff1a;负责内存的分配和回收&#xff0c;是JVM内存优化的核心。 2. 堆&#xff08;Heap&#xff09;&#xff1a…...

顺序表的实现

大家好&#xff0c;今天给大家分享一下最基础的数据结构--顺序表的实现&#xff0c;其实顺序表与我们的数组相似&#xff0c;但是顺序表存储数据必须是连续的&#xff0c;不能像数组一样存储在任意下标&#xff0c;那么我们就来看看顺序表的代码。 SeqList.h SeqList.c 那么今…...

优化Go语言中的网络连接:设置代理超时参数

网络连接优化的重要性 在分布式系统和微服务架构中&#xff0c;网络请求的效率直接影响到整个系统的响应速度。合理的超时设置可以防止系统在等待网络响应时陷入无限期的阻塞&#xff0c;从而提高系统的吞吐量和用户体验。特别是在使用代理服务器时&#xff0c;由于增加了网络…...

活动|华院计算董事长宣晓华出席第十五届田长霖论坛会议

12月11日&#xff0c;2024年光谷田长霖中心科技文化交流大会暨第十五届田长霖论坛会议举行&#xff0c;300多位院士专家、大学校长、青年学者和优秀企业家齐聚光谷。 华院计算技术&#xff08;上海&#xff09;股份有限公司&#xff08;以下简称“华院计算”&#xff09;创始人…...

qt-C++语法笔记之mapToGlobal将组件(控件)中的本地坐标系(局部坐标)映射到全局坐标系

qt-C语法笔记之mapToGlobal将组件&#xff08;控件&#xff09;中的本地坐标系&#xff08;局部坐标&#xff09;映射到全局坐标系 code review! 文章目录 qt-C语法笔记之mapToGlobal将组件&#xff08;控件&#xff09;中的本地坐标系&#xff08;局部坐标&#xff09;映射到…...

设计一个高效的Java多线程应用程序及案例

《剑来》 勇敢追梦&#xff1a;“如果真的有那么喜欢苏姑娘&#xff0c;既然这辈子到最后也没能说出口喜欢她&#xff0c;没关系&#xff0c;以后数十年百余年&#xff0c;哪怕找遍人间&#xff0c;你都要去再见她一次&#xff0c;大声告诉她&#xff0c;自己喜欢她。” 正视困…...

基于最新的Apache StreamPark搭建指南

一、StreamPark 的介绍 官方文档:Apache StreamPark (incubating) | Apache StreamPark (incubating) 中文文档:Apache StreamPark (incubating) | Apache StreamPark (incubating)Github地址:https://github.com/apache/incubator-streampark Apache StreamPark™ 是一个…...

迎接全新的 Kotlin 支持 – K2 模式:基本信息

K2 模式有什么作用&#xff1f; K2 模式是 IntelliJ IDEA 中 Kotlin 支持的新实现&#xff0c;它可以提高 IDE 的稳定性&#xff0c;同时也会为支持未来 Kotlin 语言功能奠定基础。 K2 模式与 Kotlin K2 编译器有什么区别&#xff1f; K2 编译器负责编译 Kotlin 语言 2.0 或…...

阿里云元宇宙

在数字经济时代&#xff0c;技术的迅猛发展带来了前所未有的机遇与挑战&#xff0c;元宇宙正逐步成为全球科技与商业创新的热点。作为中国云计算和人工智能领域的领导者&#xff0c;阿里云通过其强大的技术能力&#xff0c;推出了全面的阿里云元宇宙解决方案&#xff0c;为全球…...

题目 1688: 数据结构-字符串插入

第一种方式字符串 #include<iostream> #include<cstring> #include<algorithm> using namespace std; int main(){string s1,s2;int n;cin>>s1>>s2>>n;s1.insert(n-1,s2);cout<<s1<<endl;return 0; } 第二种方式字符数组 …...

MetaGPT中的教程助手:TutorialAssistant

1. 提示词 COMMON_PROMPT """ You are now a seasoned technical professional in the field of the internet. We need you to write a technical tutorial with the topic "{topic}". """DIRECTORY_PROMPT (COMMON_PROMPT "…...

如何将Python程序打包发布,实现一键安装

哈喽,大家好,我是木头左! 编写完Python脚本后,如何将其高效地发布并安装到其他计算机上,。本文将详细介绍如何将Python程序打包发布,实现一键安装,让程序的分发与部署变得轻松便捷。 一、准备工作 1. 编写和测试程序 在开始打包之前,首先要确保你的Python程序已经编…...

Java 接口

1. 接口概述 (1) Java提供了一个关键字 interface&#xff0c;用这个关键字可以定义接口&#xff1b; (2)格式&#xff1a; public interface 接口名{ //成员变量(常量) //成员方法(抽象方法) } public interface A {//成员变量(接口默认为常量-public static final)String NA…...

RTMP推流平台EasyDSS在无人机推流直播安防监控中的创新应用

无人机与低空经济的关系密切&#xff0c;并且正在快速发展。2024年中国低空经济行业市场规模达到5800亿元&#xff0c;其中低空制造产业占整个低空经济产业的88%。预计未来五年复合增速将达到16.03%。 随着科技的飞速发展&#xff0c;公共安防关乎每一个市民的生命财产安全。在…...

【Flutter_Web】Flutter编译Web第一篇(插件篇):Flutter_web实现上传TOS上传资源,编写web插件

前言 由于Flutter在双端的开发体验几乎接近的情况下&#xff0c;尝试将Flutter代码转Web端进行部署和发布&#xff0c;在其中遇到的所有问题&#xff0c;我都会通过这种方式分享出来。那么第一个要解决的就是上传资源到TOS上&#xff0c;在双端中都是通过插件的方式在各端通过…...

SpringBoot 项目使用 EasyExcel 插件构建 Excel 表格格式(行高、列宽和字体等)工具类

本文主要讲了如何使用 EasyExcel 插件&#xff0c;在导出 Excel 时&#xff0c;设置行高&#xff0c;列宽&#xff0c;表头格式&#xff0c;内容字体大小等工具类。 1、代码使用的依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyex…...

数据优化带来的问题

原因大概可以猜到 等待进一步深究&#xff08;必须一个是浮点型&#xff09; double x 1 / 2;double x2 static_cast<double> (1 / 2);double x3 (double)1 / (double)2;double x4 (double)1 / 2;double x5 1 / (double)2;double nTotalDataCount 78182;double n…...

2024153读书笔记|《春烂漫:新平摄影作品选》——跳绳酷似人生路,起落平常,进退平常,莫惧征途万里长

2024153读书笔记|《春烂漫&#xff1a;新平摄影作品选》——跳绳酷似人生路&#xff0c;起落平常&#xff0c;进退平常&#xff0c;莫惧征途万里长 《春烂漫&#xff1a;新平摄影作品选》作者新平&#xff0c;2019.12.25年读完的小书&#xff0c;当时就觉得挺不错&#xff0c;今…...

RabbitMQ个人理解与基本使用

目录 一. 作用&#xff1a; 二. RabbitMQ的5中队列模式&#xff1a; 1. 简单模式 2. Work模式 3. 发布/订阅模式 4. 路由模式 5. 主题模式 三. 消息持久化&#xff1a; 消息过期时间 ACK应答 四. 同步接收和异步接收&#xff1a; 应用场景 五. 基本使用 &#xff…...

每天40分玩转Django:Django视图和URL

Django视图和URL 一、课程概述 学习项目具体内容预计用时视图基础函数视图、类视图、视图装饰器90分钟URL配置URL模式、路由系统、命名URL60分钟请求处理请求对象、响应对象、中间件90分钟 二、视图基础 2.1 函数视图 # blog/views.py from django.shortcuts import render…...

ModbusTcp获取数据

ModbusTcp获取数据 记录一个用 pymodbus 库来获取数据的代码。 注意&#xff1a; 1.读取寄存器地址是16进制的。2.大小端转换通过代码知道原理。读取数据时&#xff0c;切记频率别太高&#xff0c;否则会出现连接被关闭问题。 from pymodbus.client.sync import ModbusTcpCli…...

汽车车牌识别数据集,支持YOLO,COCO,VOC格式的标注,8493张图片,可识别多种环境下的车牌

汽车车牌识别数据集&#xff0c;支持YOLO&#xff0c;COCO&#xff0c;VOC格式的标注&#xff0c;8493张图片&#xff0c;可识别多种环境下的车牌 数据集分割 训练组82&#xff05; 6994图片 有效集12&#xff05; 999图片 测试集6% 500图片 预处理 自动…...

YOLOv5+pyqt5+摄像头在特定条件下进行目标检测并采集原始数据

项目介绍 项目地址 GitHub - biabu0/Yolov5_D435i: 通过YOLOV5与pyqt5实现一个使用D435i深度摄像头采集特定需求与场景下的深度数据的小程序 通过YOLOV5对指定的区域进行检测&#xff0c;当检测到目标进入特定区域时&#xff0c;开始保存数据&#xff0c;摄像头采用D435i深度…...

代码随想录-算法训练营-番外(图论02:岛屿数量,岛屿的最大面积)

day02 图论part02 今日任务:岛屿数量,岛屿的最大面积 都是一个模子套出来的 https://programmercarl.com/kamacoder/0099.岛屿的数量深搜.html#思路往日任务: day01 图论part01 今日任务:图论理论基础/所有可到达的路径 代码随想录图论视频部分还没更新 https://programmercar…...

C# 23种设计模式(3)工厂(SimpleFactory)模式

一、工厂模式介绍 工厂模式&#xff08;Factory Pattern&#xff09;是一种在软件开发中常用的创建型设计模式。它的主要目的是将对象的创建逻辑与使用逻辑分离&#xff0c;使得增加新的对象类型时不需要修改使用对象的代码。这样做提高了系统的可扩展性和可维护性。 工厂模式…...

安卓主板_MTK联发科android主板方案

在当前智能设备的发展中&#xff0c;安卓主板的配置灵活性和性能优化显得尤为重要。安卓主板的联发科方案&#xff0c;在芯片上&#xff0c;搭载联发科MTK6761、MT8766、MT6765、MT6762、MT8768、MT8390、MTK8370以及MT8788等型号&#xff0c;均基于64位的四核或八核架构设计。…...

中企出海 - 平行账 - Parallel Ledger

以中国企业出海美国&#xff0c;为同时满足中国和美国的会计核算要求&#xff0c;请给出SAP 平行账的实施方案及国家科目表(alternative account)实施海外国家的注意事项 中国企业在美国开展业务需同时满足中国和美国的会计准则&#xff0c;这通常包括《中国企业会计准则》&am…...

Pyside6 --Qt设计师--简单了解各个控件的作用之:Item Views

目录 一、List View二、Tree View三、Table View四、Column View 一、List View 学习方法和Buttons一样&#xff0c;大家自己在qt设计师上面在属性编辑区进行相应的学习&#xff01; 我就先紧着qt设计师的页面进行讲解&#xff0c;部分内容查自AI。 后面有什么好用的控件或者…...

智能家居WTR096-16S录放音芯片方案,实现语音播报提示及录音留言功能

前言&#xff1a; 在当今社会的高速运转之下&#xff0c;夜幕低垂之时&#xff0c;许多辛勤工作的父母尚未归家。对于肩负家庭责任的他们而言&#xff0c;确保孩童按时用餐与居家安全成为心头大事。此时&#xff0c;家居留言录音提示功能应运而生&#xff0c;恰似家中的一位无形…...

算法2(蓝桥杯19)-合并两个有序链表

问题&#xff1a;将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 解题思路&#xff1a; 创建一个虚拟节点&#xff0c;循环比较l1、l2链表各节点的大小&#xff0c;将较小的节点追加到虚拟节点后&#xff0c;返回新链表 1、…...

OpenAI 正式赋予 ChatGPT 通过视频实时与用户互动的能力

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

【Email】基于SpringBoot3.4.x集成发送邮件功能

【Email】基于SpringBoot3.4.x集成发送邮件功能 摘要本地开发环境说明pom.xml启动类application.yaml写一个邮件模板定义模板引擎工具类定义一个邮件发送对象封装一个邮件发送器单元测试邮件模板单元测试发送邮件单元测试 邮件效果参考资料 摘要 在业务系统开发过程中&#xf…...

debian12学习笔记

前置条件 基于debian12官网的qcow2格式文件进行操作 安装ssh 登录虚拟机后安装ssh服务端 apt install openssh-server配置国内源 新增/etc/apt/sources.list.d/tsinghua.list 使用清华大学的源 https://www.cnblogs.com/shanhubei/p/18104430 deb https://mirrors.tuna.t…...

(补)算法刷题Day16:BM39 序列化二叉树

题目链接 描述 思路&#xff1a; 自行序列化和反序列化。元素用逗号分隔。 序列化&#xff1a; 使用队列层序遍历。遍历每一层节点&#xff0c;并访问其左右孩子&#xff0c;如果是空则序列化成#&#xff0c;如果是数字&#xff0c;则序列化成str。 反序列化&#xff1a; 使…...

科研绘图系列:R语言绘制热图和散点图以及箱线图(pheatmap, scatterplot boxplot)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包数据下载图1图2图3系统信息参考介绍 R语言绘制热图和散点图以及箱线图(pheatmap, scatterplot & boxplot) 加载R包 library(magrittr) library(dplyr) library(ve…...