当前位置: 首页 > wzjs >正文

在哪个网站可以学做淘宝详情站设计培训课程

在哪个网站可以学做淘宝详情,站设计培训课程,福建网站建设有限公司,苏州设计网页网站分类 feed流分为TimeLine和智能排序,前者不对内容进行过滤,一般根据发布的时间来进行排序,一般用于好友动态或者推送关注的人的消息,而后者一般有着复杂的算法,可以根据算法智能地向目标用户推送内容,例如…

分类

feed流分为TimeLine和智能排序,前者不对内容进行过滤,一般根据发布的时间来进行排序,一般用于好友动态或者推送关注的人的消息,而后者一般有着复杂的算法,可以根据算法智能地向目标用户推送内容,例如抖音的推送算法。

方案

Feed流推送一般有着三种方案

  1. 推模式,即发布者一有新消息,则将消息全部发送到粉丝的收件箱中,优点延迟小,缺点内存占用高
  2. 拉模式,即发布者将新消息发送到自己的发件箱,用户上线后从所有关注的人的列表中拉取新消息,优点占用内存小,缺点是读延迟高。
  3. 推拉结合的混合模式,通过推拉结合,根据发布者或者粉丝的分类进行合适的推拉模式选择,例如大V的粉丝数量庞大,对于他的活跃粉丝,采用推模式,对于普通粉丝,采用拉模式

在黑马点评的feed推送关注的博主的新发布博客中,一般用户的粉丝数不会特别大,采用推模式来实现,基于redis来实现推模式。

方案的实现

数据结构的选择:用户的收件箱应该根据用户关注的博主发布的博客的时间戳来进行排序,而redis中能够进行排序的有两种数据结构,分别为list和SortedSet, list为传统角标排序,而sortedSet能够根据给定的值来排序,这里用sortedset数据结构,根据关注的博主发布的博客的时间戳来实现

思路:

1.获取当前用户

  1. 获取redis中的收件箱,并判空
  2. 解析收件箱中的博客,解析出博客的id和时间戳
  3. 根据id查找博客
  4. 封装返回

粉丝查询代码:

/*** 滚动分页查询关注的人的博客,从时间为max前的第offset条开始查询* @param max * @param offset * @return*/
@Override
public Result queryBlogOfFollow(Long max, Integer offset) {//获取当前用户Long userId = UserHolder.getUser().getId();//获取redis中的收件箱String key = RedisConstants.FEED_KEY+userId;Set<ZSetOperations.TypedTuple<String>> typedTuples = stringRedisTemplate.opsForZSet().reverseRangeByScoreWithScores(key, 0, max, offset, 3);if(typedTuples == null || typedTuples.isEmpty()){return Result.ok();}//解析博客List<Long> Ids = new ArrayList<>(typedTuples.size());long timeMin =  0;int count = 1;for (ZSetOperations.TypedTuple<String> typedTuple : typedTuples) {//获取idString str = typedTuple.getValue();if(str!=null) Ids.add(Long.valueOf(str));//获取时间戳Long time = typedTuple.getScore().longValue();if(Objects.equals(time, timeMin)){count++;}else{count = 1;}timeMin = time;}//解析id,根据id查找博客String idsStr = StrUtil.join(",",Ids);List<Blog> blog = blogService.query().in("id", Ids).last("ORDER BY FIELD(id," + idsStr + ")").list();for (Blog blog1 : blog) {queryBlogUser(blog1);isBlogLiked(blog1);}//封装返回ScrollResult scrollResult = new ScrollResult();scrollResult.setList(blog);scrollResult.setMinTime(timeMin);scrollResult.setOffset(count);return Result.ok(scrollResult);
}

发布者代码:

/*** 保存博客* @param blog* @return*/
@Override
public Result saveBlog(Blog blog) {
// 获取登录用户
UserDTO user = UserHolder.getUser();
blog.setUserId(user.getId());
// 保存探店博文
boolean success = blogService.save(blog);
if(!success){return Result.fail("发布失败");
}
/*
将消息推送到所有粉丝
*/
//获取粉丝
List<Follow> followUser = followService.query().eq("follow_user_id", user.getId()).list();
//推送消息
for(Follow follow:followUser){Long blogId = blog.getId();stringRedisTemplate.opsForZSet().add(RedisConstants.FEED_KEY+follow.getUserId() ,blogId.toString() ,System.currentTimeMillis());
}
// 返回id
return Result.ok(blog.getId());
}
http://www.dtcms.com/wzjs/602650.html

相关文章:

  • 网站工信部实名认证外贸网站图片素材
  • 汨罗网站seo企业为什么要建立网站
  • 章丘网站定制公司网站平台的作用
  • 深圳苍松大厦 网站建设企业网站有哪些功能?
  • 免费网站申请域名39939cn广州网站服务
  • 购物网站技术方案如何做好网站建设的关键重点
  • 建设工程质量监督网站wordpress关闭发表评论
  • 想做一个网站平台怎么做的高端网站开发公开课
  • 企业网站能不能个人备案深圳外贸集团
  • 网络公司建网站网站建设制作心得团队
  • 59做网站英文网站支付怎么做
  • 做门户网站难吗wordpress前台写文章
  • wordpress网站需要多大空间环球贸易网的服务内容
  • 宣传网站建设背景购物网站配色怎么设计
  • 企业官网网站优化公司东森推广官网
  • 临沂网站公众号建设wordpress 最新评论
  • 浏览器 网络 网站怎么查网站域名备案
  • 本地搭建php网站免费图纸网
  • 替人做赌彩网站被判刑关于做一动物网站的界面个
  • 自己怎么创建免费网站深圳网络推广营销
  • 河南省住房建设厅官方网站学生成绩管理系统网站建设
  • 遵义网站用vs2010做免费网站模板下载
  • 网上做调查网站有哪些织梦网站打不开
  • 淄博网站建设小程序企业网站开发摘要
  • 上海 高端网站建设网站建设痛点
  • 移动端网站设计尺寸南京做网站南京乐识专业
  • 肯尼亚网站域名网站建设jiq
  • 网页一键建站html 做网站的模板
  • 企业建个网站要多少钱wordpress右侧固定
  • 农业技术推广网站百度云盘做网站