添加与获取用户关注分组
接口功能:用户可以新建或者查询关注分组
知识点:mybatis配置中加入下述,插入操作后自动返回自增主键。
useGeneratedKeys="true" keyProperty="id"
分页查询用户
PageResult<T> :用于分页查询的返回。自定义类,内有两个属性,总数和查询列表
功能知识点:查询出用户以后,判断用户是否被关注。设置状态便于前端显示。
mysql:模糊查询:排序:查询数:
<select id="pageListUserInfos" parameterType="java.util.Map" resultType="com.imooc.bilibili.domain.UserInfo">
select
*
from
t_user_info
where
1=1
<if test="nick != null and nick != '' ">
and nick like '%${nick}%'
</if>
order by id desc
limit #{start}, #{limit}
</select>
动态提醒
数据库表:用户动态表
相关接口:用户发布状态、用户查询订阅内容的动态
设计模式:订阅发布模式
用户动态表(内容不在这里)
id、userId动态发布者、type0视频1直播2专栏、contentId 内容详情id、创建时间、更换时间
订阅发布模式:一种消息传递模式
发布者 代理 订阅者
代理作用:中介层存在的作用是进行消息的处理、过滤、路由以及分发。简单来说,它把发布者发送的消息路由到所有感兴趣(已经订阅)该消息的订阅者那里。
优点,包括:
-
解耦:发布者和订阅者能够独立改变。发布者可以在不知道订阅者情况下发布消息,同样,订阅者也可以在不知道发布者情况下接收消息。
-
动态:新的订阅者可以随时添加到系统中,发布者不需要进行任何修改就能给新的订阅者发送消息。
-
异步:发布者和订阅者不需要同时在线才能接收和处理消息。
缺点,包括:
-
确定性:不同的订阅者可能会以不同的顺序收到消息。
-
复杂性:实施发布-订阅模式需要额外的中介层,这会增加系统的复杂性。
实现
RocketMQ:开源消息中间件,特点:高性能、低延迟、分布式事务
Redis:高性能缓存工具,数据存储在内存中,读写速度快