一个仿照知乎的问答项目,想了很久不知道怎么给这个项目起名,最终还是决定把它当做未来的起点吧!明天会更好!一定!!!
利用手头有一套前端页面,然后在百度上找了一个免费网站设计了一下logo.这样,一个曾经理想做一名前端程序员如今对前端已经一窍不通的家伙就开始了他的代码书写,网站的slogan是--逼乎,和世界分享你刚编的故事
.
为了简化spring数不胜数的配置文件,在这个项目的第一版中使用了springboot进行开发.在这个项目中尽量不写任何配置文件.
该项目是仿照知乎的格式书写的问答平台,围绕着问答这一中心书写了一些功能.该项目主要有登录注册、提问回答问题、关注用户或问题、新鲜事、问题搜索、私信等功能。
开发环境:IDEA+JDK8+git+mysql+SpringBoot+Spring+Mybatis+SpringMVC
技术要点:
1)实现了简单的登录与注册功能,并作出了部分权限的控制,比如未登录用户不可提问、点赞点踩等。 示意图1:未登录用户进行点赞或关注问题等操作时会自动跳转至登陆页面,成功登录以后会回到之前页面.
2)使用前缀树算法实现对用户提交文本的过滤,可有效的对用户提交的非法关键字以及脚本代码进行过滤。 示意图2:当用户输入敏感词时,会进行过滤.该过滤可以对用户私信,提问,回答进行过滤
3)使用Redis完成赞和踩以及关注等功能,在高速缓存中的数据存取使得响应速度更加快速。 示意图3:登陆以后的用户可以进行赞踩以及关注问题:
4)为了能够更快的对用户的请求进行响应,使用生产者消费者模式以及redis实现了一个简单的异步框架。该框架会自动加载实现了EventHandler接口的handler们,并动态选择对应的handler处理请求。
详情代码可看async
包下代码
5 ) timeline(新鲜事)功能的实现,使用推拉相结合的方式向已关注某用户的其他用户推送该用户的最新动态。
该部分代码目前仅实现推的方式,将数据存储在Redis中,用户每次点赞答案关注问题,或者回答问题都会将信息通过异步框架推送到关注此用户的其他用户的新鲜事上,这个方式仅适用于在数据量较小时进行数据的推送,当用户较多时,这个方法就不太适合了,首先会造成大量的请求堆积(对异步框架的请求),由此可能引发不同用户对于同一新鲜事的显示不同,也会大量消耗处理器的资源.所以在用户量较大时,可以考虑使用推拉结合的方式,对活跃用户将信息推送过去,而对于非活跃用户,使用拉的方式(仅当用户刷新时,才把新鲜事整理发送过去).
- 使用solr实现了搜索功能,用户可以对站内的问题以及回答进行搜索。
其余简单功能,如注册,个人主页,推荐关注用户,在这里不做过多介绍.