仿牛客网项目---项目总结

2024-03-11 19:12
文章标签 总结 项目 仿牛 客网

本文主要是介绍仿牛客网项目---项目总结,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本篇文章是对整个项目的一个总结。下面这张图要好好理解。

整个项目都是构建在SpringBoot之上的,所以把它画到最底下,其它技术依托在springboot之上。但是springboot并不是技术的核心,而只是起到了一个辅助的作用,它的作用仅仅是降低其它技术的使用难度,仅此而已。

那我们所有技术的核心是什么呢?我认为是Spring!因为我们所有的技术都是围绕Spring来展开的。对于重点的,我们所要关注的技术,在图中都已经画了下划线。

在Spring之上,我们用到了它的很多模块,比如SpringMVC,解决了这个前后端请求交互的问题,然后我们用到了Spring Mybatis,可以访问数据库。还用了Spring Securtiy,用来管理我们项目中安全层面的内容,管理我们项目中的权限。因为这3个技术是构建在Spring之上的,由Spring进行整合的,所以把它们画到Spring的上方。

而SpringBoot,Spring,SpringMVC,Spring Mybatis,Spring Security这5个技术放在了一块儿,意思是这些内容就是我们整个项目的基石。或者说,我们整个项目的绝大部分请求,都是用这些技术实现的,或者说它们都是基于这些技术。当然我们也用到了其它技术,那这些其它技术呢,就是不同的技术解决不同的模块,不同的问题。

权限模块

开发了注册,登录,退出功能,这些没什么好说的。然后就是状态功能,状态功能就是在每个页面上怎么去显示登录用户的用户名,头像。然后我们开发了设置功能,就是可以上传头像,修改密码。最后还开发了授权功能,就是不同类型的用户登录进来,我们让你访问不同的功能。

这些功能虽然我们开发是开发完了,但是我们必须关注一个非常重要的话题:会话管理。因为我们整个权限模块其实是构建在会话管理之上的,你想想,如果没有会话,那 后端根本记不住前端,那根本开发不出来整个项目。如果你想要一个项目有长期的交互,或者说连续的交互,要开发这样的逻辑,就必须要有会话管理。

关于会话管理,我们需要了解cookie和session,它们各自发挥什么样的作用,它们的区别是什么。

然后后来的话,我们的项目规避了session,不用session了。为什么呢?因为我们考虑到项目在分布式部署的时候,session会有一些问题。具体的问题看之前我写的博客:【cookie和session】娓娓道来cookie和session-CSDN博客

那如果我们不用session的话,怎么解决问题?我的项目中使用的是Redis,把数据存到Redis里,另外还用到了ThreadLocal。总之,对于权限管理,我们从技术上关注interceptor,从业务上关注会话管理。

核心模块

在开发完权限模块后,我们又开发了核心模块。核心模块功能比较多,包括首页,帖子,评论,私信,异常和日志。不过其实这些 功能也都差不多,也就那样吧,特别是首页,帖子,评论,私信这4个功能,都是基于SpringMVC实现的。而异常和日志则用到了一些通用的技术。

从业务角度来说,我们在开发这个模块有两个重点:敏感词和事务。对于敏感词的话,我们主要关注一下它是怎么过滤的,前缀树的结构以及相关的一些算法。对于事务的话,我们这个模块确实是解决了一些事务的问题。

当然了,这个模块肯定也是基于我们之前说的5种技术之上实现的。除了这5种技术之外,还用到了advice(控制器的通知),我们用advice来处理异常。另外我们还用到了AOP,AOP统一记录了业务层的日志。但是其实我感觉这个功能有点薄,感觉其它地方没怎么用到AOP,不过好多人说AOP很重要,这点我也是搞不懂。

性能模块

在开发完核心模块后,我们就开发了性能模块,也就是对性能要求高的模块。这里这些模块包含了社交网站中比较常见的一些功能:点赞,关注。这些功能需要高频的访问,需要高性能。那我们就利用redis开发这样的功能。当然redis肯定不止干这么一件事,它还可以干一些更高级的事,比如说可以用redis做缓存。对于这一块而言,redis肯定是最重要的,我们应该也要多关注redis这方面的内容,比如说关注一下它的数据结构,每种数据结构适合解决什么样的数据问题。

通知模块

再接下来我们又开发了通知模块。这哥模块其实就只有一个功能:系统通知。我们在这里用到了消息队列的框架:kafka。对于这个框架其实在使用的时候很简单,我们需要关注的并不是这个框架是怎么用的,这种只要你看看教程,是个人都会用,我们关键要看的是框架背后的一些通用的原则,比如说kafka的模式:生产者与消费者模式。我感觉只有理解了生产者消费者模式,你才有可能明白,在什么时候可以用到这个功能,这个功能可以帮助我们解决一个什么样的问题。当你要解决的时候,你自然会想到,哎,我可以用kafka,因为里面有一个生产者消费者模式,对解决这个问题很适用哦。

搜索模块

最后,我们开发了这个项目的搜索模块。搜索模块就一个功能:全文搜索。全文搜索的意思是我们针对帖子做一个全面的搜索,搜索帖子的各个字段。在这里我们用到了新的框架:Elasticsearch。这个框架在使用的时候也是比较简单的,我们复习时也是关注一下它的数据结构既可,也可以找一些文章看看Elasticsearch索引相关的内容。

以上就是我对于整个项目从技术到业务所做的一个总结!

这篇关于仿牛客网项目---项目总结的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/798786

相关文章

解决Maven项目报错:failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0的问题

《解决Maven项目报错:failedtoexecutegoalorg.apache.maven.plugins:maven-compiler-plugin:3.13.0的问题》这篇文章主要介... 目录Maven项目报错:failed to execute goal org.apache.maven.pl

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringBoot项目中报错The field screenShot exceeds its maximum permitted size of 1048576 bytes.的问题及解决

《SpringBoot项目中报错ThefieldscreenShotexceedsitsmaximumpermittedsizeof1048576bytes.的问题及解决》这篇文章... 目录项目场景问题描述原因分析解决方案总结项目场景javascript提示:项目相关背景:项目场景:基于Spring

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

springboot项目如何开启https服务

《springboot项目如何开启https服务》:本文主要介绍springboot项目如何开启https服务方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录springboot项目开启https服务1. 生成SSL证书密钥库使用keytool生成自签名证书将

Windows Docker端口占用错误及解决方案总结

《WindowsDocker端口占用错误及解决方案总结》在Windows环境下使用Docker容器时,端口占用错误是开发和运维中常见且棘手的问题,本文将深入剖析该问题的成因,介绍如何通过查看端口分配... 目录引言Windows docker 端口占用错误及解决方案汇总端口冲突形成原因解析诊断当前端口情况解

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/