【Log/Java项目】一个自己写的供情侣们记录生活和表达关心与爱意的小网站

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 【Log/Java项目】一个自己写的供情侣们记录生活和表达关心与爱意的小网站

梦开始的地方

Ok,这是我在大三下学期写下的文字。

目前已经找到了杭州和北京的几家还不错的公司的实习,最近也没有说继续学习新技术,都在刷算法,毕竟冲击大厂的第一步可能就是算法啦,现在每天都在经历被LeetCode中等题暴打的痛苦哈哈哈。

之所以说是最后一个项目是因为,这个项目的完成时间确实就是大三这学期结束的时间点,并且也基于已经找到工作,不需要说继续去学习网络上的项目了,只需要等着进公司继续精进自己咯。

所以这个项目到底是什么?

这个项目很简单,就是一个给情侣用来记录恋爱生活的网站,同时这个网站也会每天定时定点的给伴侣发送电子邮件。是一个toC的项目,用户登录之后可以绑定和邀请自己的另一半来访问这个网站。

网站的首页UI如下:

网站可以上传用户与另一半的日志信息

也可以编写电子邮件信息,点击Love Email图标就可以编写恋爱短信咯

数据库大概保存如下信息

然后配合XXL-JOB就可以实现每天定时定点的邮件发送功能了。

当然,项目还有一些其他花里胡哨的功能,比如时间线,代办日志等(toC产品没有UI是真不行哈哈哈哈,一群大男孩实在设计不来,唯一一个女生也是产品经理T T)

现在从0开始介绍!

Hello,Hello,我是张锦标(ZBlossom),这个项目的产品经理(笑称)和Leader。负责这个项目的功能设计,代码架构搭建。

现在正式开始介绍这个项目吧。

结合当时我的技术栈,当时已经学完了比较主流的技术栈了,SpringBoot+SpringCloud,其中SpringCloud下面的SpringCloudAlibaba提供了一个注册中心兼配置中心的Nacos组件,基于Nacos,我可以动态的变更配置内容,所以说干就干,就有了这个基于SpringCloud的微服务项目。

项目最初的版本是只允许我使用Nacos去修改内容的,那么每当我想要给其他人在某个时间点发送某些内容的时候,我就得上去配置中心去修改一下,大概当时的情况如下:

这样子确实是实现了我能随心的修改发送短信的时间和内容,但是总有点说不上来的麻烦吧。并且,我当初买的服务器是新人特惠,特别便宜,这意味着开一个Nacos和跑一下这个项目,Nacos可能动不动就下机了,所以我经历了一天要开好几次Nacos的痛苦,所以就想着,能不能好好的优化一下,使用数据库去存储任务,然后通过网页的方式去修改一下内容呢?

于是我就拉来了我的兄弟们,我们一起开始策划这个项目。

我们都是技术热爱者,所以想着,其实这个项目如果只是给自己用的话,那自然非常简单就能实现我们想要的功能,但是我们希望这个项目也能让更多的人去以特殊的,自己的方式来表达自己对在乎的人的关心与爱,所以,我们不单单只是简单的打算设计一个小demo,而是希望这个项目能做到功能尽可能完善,同时我们会开源出来代码,因此,我们会尽可能的保证项目的开发符合(我们自认为的)规范。

同时项目会尽可能使用到比较主流的技术栈,来帮助一些新人Java朋友学习Java。

如果你也对这个项目有兴趣,可以添加我的联系方式来加入我们:

Github地址:Towelove项目地址

项目简易文档(未更新):项目文档地址

当然,我们的完整文档,技术解决方式,Bug解决方式,都写在语雀里了,不过没开放(因为要米!!哈哈哈)

那么标题为什么说我是不是恋爱脑呢?

因为,我自掏腰包找了个前端帮我写前端代码哈哈哈,我就是想看到我的执念上线的样子。

核心功能

恋爱相册(LoveAlbum)

恋爱相册需要绑定情侣关系的两人才能开启,当当前用户并没有绑定情侣关系的时候,只能查看到我们设定的预览的功能,而不能真的去使用这个功能。只有当前用户邀请或者绑定了另一半之后,才能真的开启恋爱相册这个功能。

同时恋爱相册由于设计的时候绑定了两个人的信息,所以,我们后面的很多业务逻辑都依赖于恋爱相册这个表。

比如,当我们的用户登录之后,我们会从数据库中查询出来其在恋爱相册中对应的伴侣的userId,然后根据这个userId我们会查询出来当前用户对应的伴侣的信息,那么此时就可以完成两个伴侣的头像和数据的展示了。

恋爱日志(LoveLogs)

当当前用户成功的开通恋爱日志之后,就可以在恋爱日志里面放上内容了。

大概情况如下

点击加号就可以发布日志内容了,日志内容中要求填写日志时间,标题,要上传的图片等信息。

爱情邮局(LovePostOffice)

上文讲过,要开通恋爱相册需要绑定另一半,那么此时就需要一个功能来邀请另一半。

我们分为了如下两种情况:

第一种情况:

如果当前用户还没有注册,那么我们要求当前已经注册的用户填写被邀请用户的电子邮箱,我们将会发送一个官方邮件给这位用户来邀请TA注册项目,并且此时TA可以填写邮件中的邀请码来直接在完成注册功能后直接绑定TA的伴侣。

第二种情况:

当前被邀请的用户已经注册了,那么此时我们就需要要求发送邀请的用户发送一个项目内的邮件到另一半的邮箱里,然后只需要被邀请的另一半同意这个请求即可。

此时我们提供了二选一的方案,如果知道被邀请用户的邮箱,那么输入邮箱后我们会发送电子邮件给受邀用户,而如果输入的是用户的用户名,那么我们会根据用户名来找到指定用户并且进行发送。

这里如果使用的是用户名查询,那么我们会在用户输入完毕用户名之后,然后在输入框下面展示用户头像,来确保你没有邀请错误人。

为了确保不出现不良情况,我们确保了只要这一次的邀请没有被同意或者拒绝,这名用户都不能再一次的邀请另一名情侣(多渣呀)。

同时当另一半解除关系时,我们也会通过这个邮局来发送消息。

系统的各种消息都会发送到这个邮局里,请注意查收哦。

时间线(TimeLine)

这个功能记录的是两个人在恋爱过程中发生的比较重大的时间,大概样式如下,用于记录某一天发生了什么事情。

待办列表(LoveList)

待办列表就是用于记录两个人在一起希望能一起做的事情。

当完成了待办列表的时候,就可以上传图片了。

到此为止就是这个项目和情侣有关的部分的功能啦。

登录注册等各种基本流程全都完成了,这个项目是可以直接运行并且使用的哦。

技术栈

SpringBoot 2.7.7

SpringCloud 2021.0.5

SpringCloudAlibaba 2021.0.4

RocketMQ 4.9.4(代码保留,但是废弃)

Nacos 2.0.4

MySQL 8.0.32

Redis 6.0.16

XXL-JOB 2.2.0

使用这个项目需要配置的东西可能算多也不多,Nacos,XXL-JOB,Redis,MySQL都是需要的。

如果你真的打算使用这个项目,或者希望能在你自己的电脑跑起来,那么可以找我要一份配置文件。(当然,不如直接join me 哈哈哈)


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
15天前
|
关系型数据库 MySQL Java
【MySQL+java+jpa】MySQL数据返回项目的感悟
【MySQL+java+jpa】MySQL数据返回项目的感悟
33 1
|
9天前
|
JavaScript 前端开发 Java
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
这篇文章详细介绍了如何在前端Vue项目和后端Spring Boot项目中通过多种方式解决跨域问题。
178 1
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
|
6天前
|
Java Apache Maven
Java/Spring项目的包开头为什么是com?
本文介绍了 Maven 项目的初始结构,并详细解释了 Java 包命名惯例中的域名反转规则。通过域名反转(如 `com.example`),可以确保包名的唯一性,避免命名冲突,提高代码的可读性和逻辑分层。文章还讨论了域名反转的好处,包括避免命名冲突、全球唯一性、提高代码可读性和逻辑分层。最后,作者提出了一个关于包名的问题,引发读者思考。
Java/Spring项目的包开头为什么是com?
|
9天前
|
数据采集 XML 前端开发
Jsoup在Java中:解析京东网站数据
Jsoup在Java中:解析京东网站数据
|
9天前
|
运维 Java Maven
Dockerfile实践java项目
通过上述实践,我们可以看到,Dockerfile在Java项目中扮演着至关重要的角色,它不仅简化了部署流程,提高了环境一致性,还通过多阶段构建、环境变量配置、日志管理、健康检查等高级特性,进一步增强了应用的可维护性和可扩展性。掌握这些实践,将极大地提升开发和运维团队的工作效率。
14 1
|
10天前
|
算法 Java Linux
java制作海报五:java 后端整合 echarts 画出 折线图,项目放在linux上,echarts图上不显示中文,显示方框口口口
这篇文章介绍了如何在Java后端整合ECharts库来绘制折线图,并讨论了在Linux环境下ECharts图表中文显示问题。
24 1
|
10天前
|
运维 Java Maven
Dockerfile实践java项目
通过上述实践,我们可以看到,Dockerfile在Java项目中扮演着至关重要的角色,它不仅简化了部署流程,提高了环境一致性,还通过多阶段构建、环境变量配置、日志管理、健康检查等高级特性,进一步增强了应用的可维护性和可扩展性。掌握这些实践,将极大地提升开发和运维团队的工作效率。
13 1
|
11天前
|
安全 Java Python
基于python-django的Java网站全站漏洞检测系统
基于python-django的Java网站全站漏洞检测系统
23 0
|
12天前
|
XML JSON Java
Logback 与 log4j2 性能对比:谁才是日志框架的性能王者?
【10月更文挑战第5天】在Java开发中,日志框架是不可或缺的工具,它们帮助我们记录系统运行时的信息、警告和错误,对于开发人员来说至关重要。在众多日志框架中,Logback和log4j2以其卓越的性能和丰富的功能脱颖而出,成为开发者们的首选。本文将深入探讨Logback与log4j2在性能方面的对比,通过详细的分析和实例,帮助大家理解两者之间的性能差异,以便在实际项目中做出更明智的选择。
87 3
|
13天前
|
存储 缓存 关系型数据库
MySQL事务日志-Redo Log工作原理分析
事务的隔离性和原子性分别通过锁和事务日志实现,而持久性则依赖于事务日志中的`Redo Log`。在MySQL中,`Redo Log`确保已提交事务的数据能持久保存,即使系统崩溃也能通过重做日志恢复数据。其工作原理是记录数据在内存中的更改,待事务提交时写入磁盘。此外,`Redo Log`采用简单的物理日志格式和高效的顺序IO,确保快速提交。通过不同的落盘策略,可在性能和安全性之间做出权衡。
1576 12