<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Java_momoka的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Java_momoka</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Java_momoka]]></copyright><item><title><![CDATA[字节二面：如何设计一个支持10万QPS的会员系统]]></title><link>https://blog.youkuaiyun.com/Java_momoka/article/details/150007494</link><guid>https://blog.youkuaiyun.com/Java_momoka/article/details/150007494</guid><author>Java_momoka</author><pubDate>Thu, 07 Aug 2025 12:01:06 +0800</pubDate><description><![CDATA[会员系统是一种基础系统，跟公司所有业务线的下单主流程密切相关。如果会员系统出故障，会导致用户无法下单，影响范围是全公司所有业务线。所以，会员系统必须保证高性能、高可用，提供稳定、高效的基础服务。随着同程和艺龙两家公司的合并，越来越多的系统需要打通同程 APP、艺龙 APP、同程微信小程序、艺龙微信小程序等多平台会员体系。例如微信小程序的交叉营销，用户买了一张火车票，此时想给他发酒店红包，这就需要查询该用户的统一会员关系。]]></description><category></category></item><item><title><![CDATA[InnoDB为什么不用跳表，Redis为什么不用B+树？]]></title><link>https://blog.youkuaiyun.com/Java_momoka/article/details/150006790</link><guid>https://blog.youkuaiyun.com/Java_momoka/article/details/150006790</guid><author>Java_momoka</author><pubDate>Thu, 07 Aug 2025 11:43:29 +0800</pubDate><description><![CDATA[redis读写全在内存中，不涉及磁盘IO，无需考虑索引层高度，同时由于跳表实现起来更加简单，相比B+ tree而言，少了选择树结构的开销，因此redis使用跳表来实现zset,而不是B+ tree。B+ 树是多路平衡搜索树，扇出高，三层高度即可容纳2kw左右的数据，相同情况下，跳表则需要大约24层，假设层高对应磁盘IO，那么B+树的读性能会比跳表要好，因此Innodb选择了B+树做索引。叶子结点满了,且索引结点也满了。叶子结点满了,索引结点没满的情况,拆分叶子结点,索引结点中需要增加新的索引项。]]></description><category></category></item><item><title><![CDATA[需要设计一款基于LBS的交友系统，如何设计地理空间邻近算法？]]></title><link>https://blog.youkuaiyun.com/Java_momoka/article/details/149964498</link><guid>https://blog.youkuaiyun.com/Java_momoka/article/details/149964498</guid><author>Java_momoka</author><pubDate>Wed, 06 Aug 2025 11:53:35 +0800</pubDate><description><![CDATA[这样每个用户必然会落入到一个网格中，我们在用户表中记录用户所在的网格ID（gridID），然后借助这个字段进行辅助查找，将查找范围限制在用户所在的网格（gridIDx0）及其周围8个网格（gridIDx1 ~ gridIDx8）中，可以极大降低中间数据量，SQL如下。所以这个方案可以被放弃。我们可以将用户经、纬度直接记录到数据库中，纬度记录在latitude字段，经度记录在longitude字段，用户当前的纬度和经度为X，Y，如果我们想要查找和当前用户经、纬度距离D之内的其他用户，可以通过如下SQL实现。]]></description><category></category></item><item><title><![CDATA[如何设计一个支持三千万用户同时在线的短视频系统？]]></title><link>https://blog.youkuaiyun.com/Java_momoka/article/details/149963453</link><guid>https://blog.youkuaiyun.com/Java_momoka/article/details/149963453</guid><author>Java_momoka</author><pubDate>Wed, 06 Aug 2025 11:27:53 +0800</pubDate><description><![CDATA[HDFS适合存储大文件，大文件减少磁盘碎片，更有利于存储空间的利用，同时HDFS NameNode的访问压力也更小，所以我们需要把若干个视频文件合并成一个HDFS文件进行存储，并将存储相关的细节记录到HBase中。短视频的完播率通常不足30%，所以QuickTok也不需要将完整视频推送到CDN，只需要根据视频发布者的历史播放记录，计算其完播率和播放期望进度，然后将短视频切分成若干chunk，将部分chunk推送到CDN即可。当用户搜索视频时，系统会根据倒排索引来检索符合条件的视频，并返回结果列表。]]></description><category></category></item><item><title><![CDATA[2025年Java后端高频八股文专题（含答案）]]></title><link>https://blog.youkuaiyun.com/Java_momoka/article/details/149830669</link><guid>https://blog.youkuaiyun.com/Java_momoka/article/details/149830669</guid><author>Java_momoka</author><pubDate>Fri, 01 Aug 2025 14:21:13 +0800</pubDate><description><![CDATA[Java有8种基本数据类型：byte、short、int、long、float、double、char和boolean。这些类型不是对象，而是直接代表值本身。]]></description><category></category></item><item><title><![CDATA[如何设计RPC框架在10万QPS下实现毫秒级的服务调用？]]></title><link>https://blog.youkuaiyun.com/Java_momoka/article/details/149828462</link><guid>https://blog.youkuaiyun.com/Java_momoka/article/details/149828462</guid><author>Java_momoka</author><pubDate>Fri, 01 Aug 2025 11:05:56 +0800</pubDate><description><![CDATA[来思考这样一个场景：你的垂直电商系统的 QPS 已经达到了每秒 2 万次，在做了服务化拆分之后，由于我们把业务逻辑都拆分到了单独部署的服务中，那么假设你在完成一次完整的请求时需要调用 4～5 次服务，计算下来，RPC 服务需要承载大概每秒 10 万次的请求。而你该如何设计 RPC 框架承载如此大的请求量呢？我建议你：选择合适的网络模型，有针对性地调整网络参数优化网络传输性能；选择合适的序列化方式，以提升封包、解包的性能。]]></description><category></category></item><item><title><![CDATA[百万级别数据的Excel如何快速导入到数据库中？]]></title><link>https://blog.youkuaiyun.com/Java_momoka/article/details/149779199</link><guid>https://blog.youkuaiyun.com/Java_momoka/article/details/149779199</guid><author>Java_momoka</author><pubDate>Wed, 30 Jul 2025 15:51:50 +0800</pubDate><description><![CDATA[但是到了 4.0 版本，预估导入时Excel 行数会是 10w+ 级别，而往数据库插入的数据量是大于 3n 的，也就是说 10w 行的 Excel，则至少向数据库插入 30w 行数据。而房屋信息在导入欠费的时候是不会更新的。在优化的过程中，我还发现了一个特别影响性能的东西：info 日志，还是使用 41w行、25列、45.5m 数据，在 开始-数据读取完毕 之间每 1000 行打印一条 info 日志，缓存校验数据-校验完毕 之间每行打印 3+ 条 info 日志，日志框架使用 Slf4j。]]></description><category></category></item><item><title><![CDATA[设计一个支持10W QPS的评论中台，你会怎么设计？]]></title><link>https://blog.youkuaiyun.com/Java_momoka/article/details/149777619</link><guid>https://blog.youkuaiyun.com/Java_momoka/article/details/149777619</guid><author>Java_momoka</author><pubDate>Wed, 30 Jul 2025 15:12:27 +0800</pubDate><description><![CDATA[在B站，UP主每天都会发布海量的视频、动态、专栏等内容，随之而来的是弹幕和评论区的各种讨论。播放器中直接滚动播放的弹幕，如同调味剂，重在提升视频观看体验；而点进评论区，相对而言评论文本更长，内容的观点、形式都更丰富，更像是饭后甜点。随着业务不断发展，B站的评论系统逐渐组件化、平台化；通过持续演进架构设计，管理不断上升的系统复杂度，从而更好地满足各类用户的需求。评论的基础功能模块是相对稳定的。全套面试笔记及答案即可免费获取。]]></description><category></category></item><item><title><![CDATA[【鹅厂一面真题】数据库乐观锁和悲观锁以及redis分布式锁的区别和使用场景？]]></title><link>https://blog.youkuaiyun.com/Java_momoka/article/details/149669504</link><guid>https://blog.youkuaiyun.com/Java_momoka/article/details/149669504</guid><author>Java_momoka</author><pubDate>Sat, 26 Jul 2025 17:53:21 +0800</pubDate><description><![CDATA[但实现方式、适用场景和优缺点差异显著。是常见的并发控制机制，它们的核心目标是。在并发编程和分布式系统中，1. 面试官的考察目标。]]></description><category></category></item><item><title><![CDATA[一个问题，就难住一群3年＋的Java后端[特殊字符]]]></title><link>https://blog.youkuaiyun.com/Java_momoka/article/details/149633559</link><guid>https://blog.youkuaiyun.com/Java_momoka/article/details/149633559</guid><author>Java_momoka</author><pubDate>Fri, 25 Jul 2025 11:31:10 +0800</pubDate><description><![CDATA[今天面了三个3年＋的Java后端，结果都答得磕磕巴巴，只能让他们回家等通知了，建议多刷多练一下场景题再来面试吧！如果是你，会怎么回答这个问题呢？全套面试笔记及答案即可免费获取​。]]></description><category></category></item><item><title><![CDATA[短 URL 生成器设计：百亿短 URL 怎样做到无冲突？]]></title><link>https://blog.youkuaiyun.com/Java_momoka/article/details/149606803</link><guid>https://blog.youkuaiyun.com/Java_momoka/article/details/149606803</guid><author>Java_momoka</author><pubDate>Thu, 24 Jul 2025 15:59:24 +0800</pubDate><description><![CDATA[对于需要展示短URL的应用程序，由该应用调用短URL生成器生成短URL，并将该短URL展示给用户，用户在浏览器中点击该短URL的时候，请求发送到短URL生成器（短URL生成器以HTTP服务器的方式对外提供服务，短URL域名指向短URL生成器），短URL生成器返回HTTP重定向响应，将用户请求重定向到最初的原始长URL，浏览器访问长URL服务器，完成请求服务。即预先生成一批没有冲突的短URL字符串，当外部请求输入长URL需要生成短URL的时候，直接从预先生成好的短URL字符串池中获取一个即可。]]></description><category></category></item><item><title><![CDATA[索引失效的问题是如何排查的，有哪些种情况？]]></title><link>https://blog.youkuaiyun.com/Java_momoka/article/details/149605617</link><guid>https://blog.youkuaiyun.com/Java_momoka/article/details/149605617</guid><author>Java_momoka</author><pubDate>Thu, 24 Jul 2025 15:26:12 +0800</pubDate><description><![CDATA[在MySQL中，索引是用来加快检索数据库记录的一种数据结构。索引失效指的是在进行查询操作时，本应该使用索引来提升查询效率的场景下，数据库没有利用索引，而是采用了全表扫描的方式，这会大大增加查询时间和系统负担。]]></description><category></category></item><item><title><![CDATA[假设数据库成为了性能瓶颈点，动态数据查询如何提升效率?]]></title><link>https://blog.youkuaiyun.com/Java_momoka/article/details/149530589</link><guid>https://blog.youkuaiyun.com/Java_momoka/article/details/149530589</guid><author>Java_momoka</author><pubDate>Tue, 22 Jul 2025 11:09:34 +0800</pubDate><description><![CDATA[缓存，是一种存储数据的组件，它的作用是让对数据的请求更快地返回。我们经常会把缓存放在内存中来存储， 所以有人就把内存和缓存画上了等号，这完全是外行人的见解。作为业内人士，你要知道在某些场景下我们可能还会使用 SSD 作为冷数据的缓存。比如说 360 开源的 Pika 就是使用 SSD 存储数据解决 Redis 的容量瓶颈的。实际上，凡是位于速度相差较大的两种硬件之间，用于协调两者数据传输速度差异的结构，均可称之为缓存。]]></description><category></category></item><item><title><![CDATA[2025年最新Java面试题(场景题➕八股文）及答案汇总（精选100w字，赶紧刷起来！）]]></title><link>https://blog.youkuaiyun.com/Java_momoka/article/details/149512312</link><guid>https://blog.youkuaiyun.com/Java_momoka/article/details/149512312</guid><author>Java_momoka</author><pubDate>Mon, 21 Jul 2025 19:34:10 +0800</pubDate><description><![CDATA[基本概念区分：能否清晰说明并发与并行的区别实际应用场景：能否举例说明哪些场景适合并发，哪些适合并行技术实现：了解多线程、多进程、协程等技术如何实现并发/并行问题解决：如何处理并发/并行编程中的常见问题（如竞态条件、死锁等）性能考量：如何评估和优化并发/并行程序的性能2. 线程有几种状态，状态之间的流转是怎样的？NEW（新建）线程刚被创建，但尚未调用start()方法此时线程对象已存在，但还没有分配系统资源RUNNABLE（可运行）调用start()方法后的状态。]]></description><category></category></item></channel></rss>