当前位置: 首页 > 知识库问答 >
问题:

java - 小红书功能的技术架构详细是怎么考虑的?

于飞飙
2024-06-26

小红书发布功能的技术架构详细是怎么考虑的?

最近对小红书的架构比较感兴趣,有以下问题:

  1. 小红书可以上传图片,图片是存储在本地磁盘,还是是存储在云上的嘛,存储过程中图片会不会压缩呢,如果图片删除了,这个图片会不会删除呢,图片图片一样的两张图片是存储两份吗?
  2. 小红书列表是怎么推荐的,推荐算法是什么样的

想要获取到上面问题的答案,或者说开发中遇到这些该怎么去考虑这些问题

共有1个答案

云和惬
2024-06-26

小红书发布功能的技术架构考虑

1. 图片存储与处理

图片存储位置

  • 小红书的图片一般会存储在云存储服务上,如Amazon S3、阿里云OSS等,而不是直接存储在本地磁盘。这是因为云存储提供了高可用、高可扩展性、低维护成本等优势。

图片压缩

  • 在上传过程中,小红书会对图片进行压缩以节省存储空间和提高加载速度。这通常包括调整图片大小、质量、格式等。

图片删除

  • 当用户删除图片时,小红书会从云存储服务中删除相应的图片文件,以释放存储空间。

重复图片处理

  • 对于完全相同的两张图片,小红书通常会进行去重处理,只存储一份图片文件,并为这两张图片建立索引关系,指向同一个文件。这可以节省存储空间并提高查询效率。

2. 列表推荐算法

小红书的列表推荐通常是一个复杂的系统,它结合了多种推荐算法和策略,以满足不同用户的需求和场景。以下是一些可能的推荐算法和考虑因素:

  • 基于内容的推荐:根据用户的历史行为(如浏览、点赞、评论等)和兴趣偏好,为用户推荐相似的内容。
  • 协同过滤推荐:利用用户-物品评分矩阵或用户-物品行为矩阵,计算用户之间的相似度或物品之间的相似度,从而为用户推荐相似用户喜欢的物品或相似物品。
  • 深度学习推荐:利用深度学习模型(如RNN、CNN、Transformer等)对用户的行为数据进行建模,提取特征并学习用户的潜在兴趣,从而为用户进行个性化推荐。
  • 实时推荐:根据用户的实时行为(如搜索、浏览等)和当前的时间、地点等上下文信息,为用户推荐实时相关的内容。
  • 社交关系推荐:利用用户的社交关系(如关注、粉丝等),为用户推荐其关注的人发布的内容或与其有相似兴趣的人喜欢的内容。

在实际开发中,小红书可能会结合上述多种算法和策略,并根据实际业务场景进行调整和优化,以实现更准确的推荐效果。同时,为了处理大量的用户请求和实时更新的数据,小红书还需要考虑分布式系统架构、高性能存储和计算资源、实时数据处理等技术问题。

 类似资料:
  • 时长:1小时 1、项目30分钟 2、Java函数调用过程 3、Volatile关键字的作用? 什么是可见性? 4、假定一个场景:在多线程环境下,线程A在10秒前对一个共享变量修改,线程B在10秒之后读取该共享变量的值,这种情况下需要加Volatile关键字吗? 5、JVM垃圾回收机制 6、常用的垃圾回收算法? 7、GC Root 引用的对象包括哪些? 标记的是有用的对象还是垃圾对象? 8、程序计数

  • 上午投下午约 问项目,三个项目挨个问 40 min Ts omit 父元素三个子元素均等分,方案有多少说多少 算法一道,嘴说 反问 面试表现 部门职能 要了微信  这能叫面经吗,无八股,问了大半天项目哈哈

  • 小红书C++ 一面(技术面、50min) 面试官问 自我介绍 你简历上的项目比较多样化,为什么会去做这些项目呢 你觉得你以后会想去做什么呢 挑一个你觉得难度最大的项目,然后介绍一下,balabala 项目问题balabala 说一说项目中遇到的一些困难吗 你写这个项目的主要原因是什么 你刚才提到了,那么为什么能加速,其原理是什么呢 的编译从源码到可执行文件中间的步骤有哪些呢? 你了解G++在编译的

  • 更新:--------------------------------- 10月16日hr面 本来以为都凉了,没想到二面还是过了 ----------------------------------------------- 时长:40分钟 1、进程、线程、协程的区别 2、进程的调度算法 3、线程池 4、线程池阻塞队列有哪些?底层别是什么数据结构 5、项目 手撕:二叉树的层序遍历(跟一面一样),面

  • 1.我去小红书实习java开发有没有什么预期和规划 2.oop的基本概念以及你认为oop为什么会提出 3.在实际实现类的时候,既可以使用继承实现一个功能, 也可以使用多态,这个时候要怎么抉择 4.为什么要提出微服务,他和单体应用有什么差异,为什么他现在流行 5.服务治理是什么 6.如果我们要将系统发布,对于服务注册和发现来讲,如果要更换机器怎么保证服务注册和发现不会出错,怎么保证服务上下线的时候怎

  • 开发多语言 Golang、Ruby、NodeJS、Python 四种主力开发语言 架构微服务 超过 70 个微服务化的组件,采用松散耦合的方式对接 交付持续化 实现全自动测试和交付,每周迭代次数近百 部署云端化 分布在全球六大数据中心数百台虚拟机之上,实现底层虚机 IaaS 的无缝对接 吃狗食 我们使用 DaoCloud 开发 DaoCloud

  • 本文向大家介绍便宜vps多是哪些技术架构方式(VPS分割架构是怎么超售的),包括了便宜vps多是哪些技术架构方式(VPS分割架构是怎么超售的)的使用技巧和注意事项,需要的朋友参考一下 我们知道vps服务器是一种虚拟化技术,搭建vps服务器的虚拟化软件以及新的云架构方案也有很多种,他们各有优势和劣势,因此,不同的vps服务器服务提供商可能会采用不同的虚拟化技术构建vps服务器,同样vps服务器的构建

  • 45分钟,面试官基本没有反馈,他硬问,我硬答,他坐在办公室里,有点吵,麦有问题,他说话有时候模模糊糊的,听不太清 1.自我介绍 2.js异步方案 3.文件上传如何限制文件类型 4.fetch,xhr区别,和axios的区别 5.使用fetch或者xhr实现进度条的功能 6.走了xhr,为什么还要有fetch 7.同源策略,跨域访问,浏览器内置解决跨域问题的方法 8.浏览器渲染过程 9.解析html