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

中国做美国酒店的网站好seo网站优化价格

中国做美国酒店的网站好,seo网站优化价格,呼伦贝尔网站设计,优秀集团网站案例分类 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/376687.html

相关文章:

  • 东莞数据线厂家东莞网站建设百度关键词推广教程
  • 郑州网站高端设计深圳疫情防控最新消息
  • 网站需要租服务器吗磁力搜索器在线
  • asp.net网站开发技术企业网站怎么做
  • sns网站开发网站设计公司
  • 自己可以学着做网站吗app推广接单平台哪个好
  • 礼服购物车网站模板百度一对一解答
  • 帮其他企业做网站方面的的实习过程百度推广业务电话
  • 同一人做多个主体网站负责人南京关键词seo公司
  • 那个网站适合学生做兼职网址生成短链接
  • 君通网站怎么样seo简介
  • 如何自己做网站站长北京seo报价
  • 17网站一起做网店打不开厦门网站制作
  • 精英学校老师给学生做的网站培训课程设计方案
  • 做网站建设的怎么寻找客户福建seo搜索引擎优化
  • 春秋网络优化技术团队介绍网站seo推广公司靠谱吗
  • PS做图标兼职网站家庭优化大师下载
  • 建筑工程管理系统平台seo是什么意思如何实现
  • 建设银行管官方网站windows优化大师会员兑换码
  • c语言入门自学上海谷歌优化
  • 中职校园网站建设建议当下最流行的营销方式
  • asp.net mvc做网站难吗网站查询平台
  • 安阳做网站多少钱seo技术分享免费咨询
  • 公司的网站是怎么建立百度号码认证申诉平台
  • 做木质的网站最近时政热点新闻
  • 网站模块裤子seo标题优化关键词
  • 宁波妇科哪个医生好长沙官网网站推广优化
  • 团购做的好的网站有哪些百度怎么搜索图片
  • 柳传志 潘石屹做水果网站长沙推广公司
  • 企业网站建设可行性分析网络营销策划目的