本项目的目标是为了熟悉Java开发的主流技术,涉及的技术栈有:Spring,Mybatis,Redis,Kafka,ElasticSearch。涉及到Java开发框架,ORM框架,缓存,消息队列,搜索引擎,整个技术栈还是比较全面的,所以对学习非常有帮助。
我们使用Spring框架帮助我们简化开发,Spring的核心技术是IoC(Inversation of Control,控制反转)和AOP(Aspect Oriented Programming,面向切面编程),IoC是通过将对象的初始化和销毁交给容器来管理,IoC是一种思想,是通过DI(Dependency Injection,依赖注入)来实现的,由容器将对象动态的注入到另一个对象中,从而实现控制反转的功能,也就是说为了实现IoC,需要该对象的时候由框架DI即可。AOP切面就是在一个时间点加入自己所期望的功能。前后端的交互技术是SpringMVC,MVC是指Model,View,Controller,是一种软件架构模式。SpringMVC是以请求为驱动,围绕Servlet设计,将请求发给控制器,然后通过模型对象包装结果,分派器来展示请求结果视图。而请求结果视图的动态渲染就是通过Themeleaf技术来实现的。在数据访问与持久化方面使用的Mybatis框架,他负责简化访问数据库MySQL的代码,通过XML配置和映射数据类型,接口和POJO为数据库中记录。SpringBoot(SpringBoot官方文档:Spring Boot Reference Documentation)中已经内置了很多特定版本的jar包,如果自己需要添加另外类库功能,可以通过Maven的pom.xml文件进行管理(Mybatis官方文档:mybatis – MyBatis 3 | 简介)。SpringBoot的功能配置是通过application.properties进行统一的管理。我们通过内置的logback日志框架对不同的日志级别进行分类存储,logback的功能配置是通过logback-spring.xml进行统一配置的,通过private static final Logger logger = LoggerFactory.getLogger(类.class)进行显式声明。然后还有一个问题就是版本控制,最常用的是Git分布式版本管理工具,常用的指令很简单:添加下载用add,commit,push,clone,pull命令,版本回退用reset,revert命令,创建切换分支用brand,switch命令,冲突合并用rebase命令。
注册登陆退出账号设置功能
注册功能分为三步,第一访问注册页面,第二提交注册数据(服务端检查账号邮箱是否已经被注册,发送激活邮件)。登陆功能检查登陆信息,在cookie中存储登陆凭证。退出功能将用户的状态标志修改即可。登陆成功后应修改主页显示的登陆状态,这是通过拦截器来实现的,每次请求的时候都会进行对用户的cookie查询其登陆凭证,若该登陆凭证有效,则主页显示登陆信息。如果想修改账号的信息,可以通过设置页面对用户的头像密码进行修改。
发布帖子与详情字典树完成敏感词过滤:通过Tries树来实现的敏感词过滤,也可以使用AC自动机来实现,实际上已经有很多很成熟的框架能够高效的实现该功能,比如ToolGood.Words框架,基于AC自动机的优化。
添加评论
这里要添加一个事务管理,定义好事务的隔离级别和传播机制。
私信列表
处理好私信列表的功能,多少未读消息,点击私信信息后的消息列表。
统一处理异常
固定格式,@ExceptionHandler({Exception.class})统一处理异常。