基于SpringBoot框架搭建仿知乎问答平台
- 操作系统 : Mac OS 10.12.1
- IDE :IntelliJ IDEA 2019.3.5
- JDK Version : JDK1.8
- 数据库 :MySQL 8.0
- 依赖管理工具 : Maven 3.6.1
- 版本控制: Git
导入到 IDEA,使用IDEA
创建的项目,配置好maven
的相关配置,以及项目JDK
版本,直接在主界面选择Open
,然后找到项目所在路径,点击导入即可。
用户:负责维护社区用户信息,注册,登录等; 关系:用户之间关注、好友、拉黑等关系的维护; 内容:社区发的内容,就像朋友圈或者微博的内容; 评论、赞:用户可能会有的两种常规互动操作; 搜索:用户的搜索,内容的搜索。
正如大多数网站发表言论都是需要经过审查的,而在我们的局域网里面,更是是要经过无数次的审查,然后方案有一下几种:
- 把敏感词删除
- 把敏感词替换为指定的字符串
这里并不是使用replace()
方法或者使用正则表达式进行逐个查找然后进行替换,而是采用更加优良的算法-前缀树
- 根节点不包含字符,除根节点外每一个节点都只包含一个字符
- 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串
- 每个节点的所有子节点包含的字符都不相同
在当今互联网这种上网人群多,访问量大的情况下,异步编程提供了一个非堵塞的,基于事件驱动的编程模型.这种编程方式可以充分利用计算机的多核来同时执行并行任务,提高资源的利用效率. 举个很简单的例子,我们在网站注册新的社交账号的话,严格一点的网站都是会有验证邮箱地址的邮件.这个就是一个异步的事件,你不可能说直接把邮件验证的流程嵌套在业务逻辑里面. 应该是把这个事件发送给一个队列里面,然后队列专门处理这种事件.在一个网站中有各种各样的事情需要进行处理
简单设计流程:
- 1.首先定义一个定义一个枚举类型的
EventType
类,这里面列举各种各样将会出现的事件 - 2.再定义一个事件模型
EventModel
类,里面包含的是一个事件所应该具有的一些属性.例如事件类型,操作者的ID,操作的实体类型,操作的实体ID,操作的实体拥有者等等 - 3.再定义一个接口
EventHandler
,里面写上几个抽象的方法,具体的实现由继承的类进行实现 - 4.定义一个事件生产者
EventProducer
,这里就是用来生产各种各样的事件,如异常登录或者是注册邮件等等.本项目中这里就是把事件送到Redis中进行储存 - 5.定义一个事件消费者
EventConsumer
,这里就是需要继承InitializingBean
跟ApplicationContextAware
.继承InitializingBean
是可以定义bean的初始化方式,继承InitializingBean
是为了可以通过这个上下文对象得到我们想获取的bean.然后在这个类里面使用多线程一直去Redis里面读取出事件,然后进行处理 - 6.再继承
EventHandler
在方法里面写自己的实现