# zhihu
模仿知乎做的SpringBoot问答社交网站项目,项目技术点SpringBoot+Mybatis+Mysql+redis+solr+velocity,利用爬虫对项目进行数据填充。
# 知乎项目总体预览
[1登陆注册](https://github.com/yanzhongxin/zhihu/new/master?readme=1#登陆注册)
[2知乎首页](https://github.com/yanzhongxin/zhihu/new/master?readme=1#知乎首页)
[3用户提问](https://github.com/yanzhongxin/zhihu/new/master?readme=1#用户提问)
[4关注、评论、点赞问题](https://github.com/yanzhongxin/zhihu/new/master?readme=1#关注、评论、点赞问题)
[5用户发私信](https://github.com/yanzhongxin/zhihu/new/master?readme=1#用户发私信)
[6我关注的用户的新鲜事](https://github.com/yanzhongxin/zhihu/new/master?readme=1#我关注的用户的新鲜事)
[7我的主页](https://github.com/yanzhongxin/zhihu/new/master?readme=1#我的主页)
[8主页个人动态](https://github.com/yanzhongxin/zhihu/new/master?readme=1#主页个人动态)
[9主页个人提问](https://github.com/yanzhongxin/zhihu/new/master?readme=1#主页个人提问)
[10主页个人回答](https://github.com/yanzhongxin/zhihu/new/master?readme=1#主页个人回答)
[11主页个人关注问题](https://github.com/yanzhongxin/zhihu/new/master?readme=1#主页个人关注问题)
[12主页个人关注好友](https://github.com/yanzhongxin/zhihu/new/master?readme=1#主页个人关注好友)
[13主页个人的粉丝](https://github.com/yanzhongxin/zhihu/new/master?readme=1#主页我的粉丝)
[14主页我的私信](https://github.com/yanzhongxin/zhihu/new/master?readme=1#主页我的私信)
[15搜索问题或内容](https://github.com/yanzhongxin/zhihu/new/master?readme=1#搜索问题或内容)
## 登陆注册
[![kGA3Bq.md.png](https://s2.ax1x.com/2019/02/03/kGA3Bq.md.png)]
## 知乎首页
![kGAwv9.png](https://s2.ax1x.com/2019/02/03/kGAwv9.png)
## 用户提问
[![kGAXvj.png](https://s2.ax1x.com/2019/02/03/kGAXvj.png)](https://imgchr.com/i/kGAXvj)
## 关注、评论、点赞问题
[![kGu1Rf.png](https://s2.ax1x.com/2019/02/03/kGu1Rf.png)](https://imgchr.com/i/kGu1Rf)
## 用户发私信
[![kGndgO.png](https://s2.ax1x.com/2019/02/03/kGndgO.png)](https://imgchr.com/i/kGndgO)
## 我关注的用户的新鲜事
[![kGnwvD.png](https://s2.ax1x.com/2019/02/03/kGnwvD.png)](https://imgchr.com/i/kGnwvD)
## 我的主页
[![kGnrbd.png](https://s2.ax1x.com/2019/02/03/kGnrbd.png)](https://imgchr.com/i/kGnrbd)
### 主页个人动态
[![kGn2PP.png](https://s2.ax1x.com/2019/02/03/kGn2PP.png)](https://imgchr.com/i/kGn2PP)
### 主页个人提问
[![kGnfxS.png](https://s2.ax1x.com/2019/02/03/kGnfxS.png)](https://imgchr.com/i/kGnfxS)
### 主页个人回答
[![kGn5rQ.png](https://s2.ax1x.com/2019/02/03/kGn5rQ.png)](https://imgchr.com/i/kGn5rQ)
### 主页个人关注问题
[![kGnTVs.png](https://s2.ax1x.com/2019/02/03/kGnTVs.png)](https://imgchr.com/i/kGnTVs)
### 主页个人关注好友
[![kGnqP0.png](https://s2.ax1x.com/2019/02/03/kGnqP0.png)](https://imgchr.com/i/kGnqP0)
### 主页我的粉丝
[![kGnO2T.png](https://s2.ax1x.com/2019/02/03/kGnO2T.png)](https://imgchr.com/i/kGnO2T)
### 主页我的私信
[![kGuVMD.png](https://s2.ax1x.com/2019/02/03/kGuVMD.png)](https://imgchr.com/i/kGuVMD)
[![kGuQit.png](https://s2.ax1x.com/2019/02/03/kGuQit.png)](https://imgchr.com/i/kGuQit)
## 搜索问题或内容
[![kGuCI1.png](https://s2.ax1x.com/2019/02/03/kGuCI1.png)](https://imgchr.com/i/kGuCI1)
# 主要内容
1. 开发工具和Java语言介绍
主要讲述这个项目所用到的开发工具和语言-java的回顾。
1. Spring入门,模板语法和渲染
进行Spring语言的介绍和讲解,模板语法和渲染(注意springboot1.5开始不支持velocity模板引擎,可以用Thymeleaf或者Freemarker代替)
1. 数据库交互iBatis集成
主要是进行数据库的创建以及交互,讲解注释和XML定义并进行首页的开发,两种方式书写sql代码,第一种方式是在dao层的接口上利用@Mapper、@Insert方法注解在.java文件上书写sql,优点是方便,快捷适合简单查询语句。第二种方式是在dao对应的xml文件中书写sql代码,适合复杂的sql代码,与java文件解耦,个人推荐在xml中书写sql代码。
1. 用户注册登录管理
主要实现用户的注册,登录,浏览等功能,并考虑数据的安全性(密码采用md5(salt+password)进行加密)
1. 问题发布,敏感词和js标签过滤,问题广场
主要实现问题发布,同时异步发起两个事件,一个是提醒问题作者的粉丝,你关注的某某木提出了问题,等你来回答,第二个是把该问题加入到作者的动态时间轴中。利用前缀树进行敏感词的过滤,问题广场的实现等主功能
1. 评论中心,站内信
主要搭建评论中心用户评论问题,把评论信息插入到数据库comment表,并且修改question表问题的的commentcount评论个数,产生异步评论事件,给这个评论的作者的粉丝产生一个新鲜事,比如某某您关注的用户,评论了问题**** 评论内容为****。并且实现站内信等功能
1. Redis入门以及Redis实现赞踩功能
主要进行Redis的介绍并且实现赞踩功能(为每个评论维护两个redis的Set集合一个点赞一个点踩,集合中存放的是点赞点踩的用户id),熟悉jedis的五种数据结构api操作,以及jedis的事务操作(比如用户点赞的同时,如果用户存在于点踩的集合中的话,必须set点赞集合增加一个,点踩集合减少一个,两件事情必须要么都执行要么都不执行)。
1. 异步设计和站内邮件通知系统
主要进行异步设计,使用redis的list数据结构进行异步处理,和搭建站内邮件通知系统,实现邮件发送的功能。
1. sns关注功能,关注和粉丝列表页实现
主要实现关注和被关注功能,包括关注问题,关注人,粉丝列表的实现,并且进行了排序算法的介绍。一个实体有至少两个关注相关的redis的key,一个是实体的粉丝,这里包括人的粉丝,人关注了问题,人就是这个问题的粉丝,另一个是关注key,a关注b那么b就是a关注的对象,b可以是人或者是问题,因此一个实体的粉丝key有一个,但是关注对象的key可能有两个
1. timeline实现
推拉模式的对比,推模式:大明星谢娜发布一条微博,把这条微博推送给他的一亿粉丝,加入到他一亿粉丝每个人的新鲜事队列中,
缺点是推送延迟,压力大,海量数据存储。拉模式:用户张三登陆微博之后,从数据库中拉去他关注的用户。
推模式主要适合粉丝较少的小用户,因为他们的粉丝量少,使用推模式产生的冗余副本也比较少,并且可以减少用户访问的压力。
拉模式主要适合大v,因为很多僵尸粉根本不需要推送信息,用推模式发给这些僵尸粉就是浪费资源,所以让用户通过拉模式请求,只需要一个数据副本即可。
同时推拉结合,比如用户 yanzhongxin发送一条微博,推模式推送给当天在线的用户,或者微博活跃用户,这样就可以减少数据冗余(推送给僵尸粉数据、或者不活跃用户) 不常玩微薄的粉丝登陆微博的时候,从关注列表Feed流中拉去新鲜事。
/pullfeeds 首先获得用户关注人的id,根据这些人的id查询Feed表中数据,按照id desc进行排序,把这些用户关注的新鲜事Feed返回给前端网页展示。
/pushfeeds 首先查询用户的粉丝id,然后根据redis获得粉丝的时间轴key,把新鲜事Feed的id加入到粉丝的新鲜事时间轴上
/mytimeline1 显示当前用户的新鲜事列表。比如用户知乎用户yanzhongxin关注了zhangsan,yanzhongxin 关注了问题“你家乡在哪”,yanzhongxin评论了某个问题,这些新鲜事�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
模仿知乎做的SpringBoot问答社交网站项目,项目技术点SpringBoot+Mybatis+Mysql+redis+solr+velocity+python爬虫进行数据填充,项目亮点有手写异步消息框架、敏感词过滤等 软件开发设计:应用软件开发、系统软件开发、移动应用开发、网站开发C++、Java、python、web、C#等语言的项目开发与学习资料 硬件与设备:单片机、EDA、proteus、RTOS、包括计算机硬件、服务器、网络设备、存储设备、移动设备等 操作系统:LInux、树莓派、安卓开发、微机操作系统、网络操作系统、分布式操作系统等。此外,还有嵌入式操作系统、智能操作系统等。 网络与通信:数据传输、信号处理、网络协议、网络与通信硬件、网络安全网络与通信是一个非常广泛的领域,它涉及到计算机科学、电子工程、数学等多个学科的知识。 云计算与大数据:包括云计算平台、大数据分析、人工智能、机器学习等,云计算是一种基于互联网的计算方式,通过这种方式,共享的软硬件资源和信息可以按需提供给计算机和其他设备。
资源推荐
资源详情
资源评论
收起资源包目录
模仿知乎做的SpringBoot问答社交网站项目,爬虫进行数据填充.zip (221个子文件)
mvnw.cmd 6KB
letter.css 430KB
index.css 311KB
result.css 302KB
detail.css 299KB
bootstrap.min.css 111KB
login.css 63KB
captcha.gif 13KB
spinner2.8f60205d.gif 1KB
.gitignore 268B
personalfeeds.html 15KB
feeds.html 12KB
header.html 11KB
profile.html 9KB
detail.html 8KB
index.html 6KB
followees.html 3KB
followers.html 3KB
login.html 3KB
result.html 2KB
letter.html 2KB
letterDetail.html 1KB
js.html 852B
home.html 430B
login_exception.html 41B
footer.html 15B
maven-wrapper.jar 47KB
MessageExample.java 17KB
CommentExample.java 17KB
UserExample.java 16KB
QuestionExample.java 15KB
loginTicketExample.java 15KB
FeedExample.java 15KB
JedisAdapter.java 13KB
FollowControler.java 11KB
FollowService.java 8KB
FeedHandler.java 7KB
QuestionControler.java 6KB
MessageControler.java 5KB
SensitiveService.java 5KB
FeedControler.java 5KB
IndexConroler.java 5KB
UserService.java 5KB
SearchService.java 4KB
LoginControler.java 4KB
CommentControler.java 4KB
SendEmailUtil.java 4KB
CommentService.java 3KB
PassportIntecepter.java 3KB
EventConsumer.java 3KB
SearchControler.java 3KB
MailSender.java 3KB
LikeService.java 3KB
QuestionService.java 3KB
FollowHandler.java 2KB
LikeControler.java 2KB
WendaUtil.java 2KB
LikeHandler.java 2KB
MessageService.java 2KB
RedisKeyUtil.java 2KB
EventModel.java 2KB
LoginIntecepter.java 2KB
FeedService.java 2KB
MessageMapper.java 2KB
Message.java 2KB
Comment.java 1KB
AddQuestionHandler.java 1KB
Feed.java 1KB
LoginExceptionHandler.java 1KB
QuestionMapper.java 1KB
Question.java 1KB
CommentMapper.java 1KB
User.java 1KB
FeedMapper.java 1KB
ZhihuWebConfiguration.java 1KB
loginTicket.java 952B
loginTicketMapper.java 926B
UserMapper.java 814B
EventProducer.java 748B
ZhihuApplicationTests.java 506B
EventType.java 475B
HostHolder.java 431B
ZhihuApplication.java 418B
ViewObject.java 406B
DateUtils.java 344B
RedisClientDemo.java 340B
EntityType.java 251B
EventHandler.java 223B
d6842d77b4bda238e0db09217e3d2f8d_270x225.jpg 38KB
df4aa616fdcfbd861c010ff71aaef95c_b.jpg 34KB
cafae465b8ea283498c69ab9757f86ba_xl.jpg 29KB
b85ddd8aa_xl.jpg 28KB
badaaf312e59c125928bd1ea2d4b5a51_b.jpg 27KB
9cfe980ca44e38bd9b0e5c3dee5b0f3e_270x225.jpg 26KB
0cffb89d0b0bd4e726ae54b212a31c3b_200x112.jpg 19KB
f1148eb1c7170cabb0a78dad73b590f6_200x112.jpg 17KB
c898060535edfdbe4147d2135c29787f_200x112.jpg 17KB
aa49b7ceff22ea68ca5f747115cd17af_200x112.jpg 17KB
0b856ef58f76b7c83a0e130f6ef71281_200x112.jpg 16KB
975baaf73fd76f48ce6f05e19b176878_xl.jpg 16KB
共 221 条
- 1
- 2
- 3
资源评论
妄北y
- 粉丝: 1w+
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功