越哥聊AI
互联网技术专家,阿里云MVP,任职淘宝、美团,著有《分布式技术原理与实战》,拉勾网、InfoQ讲师、人人都是产品经理专栏作者,分享互联网架构,关注认知升级
展开
-
系统设计类问题回答模板
通过这样结构清晰的模板和实践案例拓展,求职者不仅可以展示自己的技术能力,也能体现系统化思考和清晰沟通的能力,这是优秀技术专家的必备素质。2)抢购逻辑的分布式一致性设计;:为支持全球跨区域聊天设计系统,要求消息延迟 <300ms,支持 1 亿日活跃用户,消息存储持久化。以下是一个通用的回答模板,以及回答技巧、白板演示的指导方法,并会结合实际案例提供一些示例。在系统设计类问题的面试中,一个好的回答不仅仅体现了候选人的技术能力,还能展现其。:设计支持 1 亿商品的关键词搜索服务,QPS 瞬时峰值 10 万。原创 2025-03-23 10:23:03 · 612 阅读 · 0 评论 -
面试中如何回答性能优化的问题
性能问题和Bug不同,后者的分析和解决思路更清晰,很多时候从应用日志(文中的应用指分布式服务下的单个节点)即可直接找到问题根源,而性能问题,其排查思路更为复杂一些。对应用进行性能优化,是一个系统性的工程,对工程师的技术广度和技术深度都有所要求。一个简单的应用,它不仅包含了应用代码本身,还和容器(虚拟机)、操作系统、存储、网络、文件系统等紧密相关,线上应用一旦出现了性能问题,需要我们从多方面去考虑。与此同时,除了一些低级的代码逻辑引发的性能问题外,很多性能问题隐藏的较深,排查起来会比较困难,需要我们对应用的各原创 2025-03-24 09:38:10 · 587 阅读 · 0 评论 -
LSM-Tree(Log-Structured Merge-Tree)详解
LSM-Tree(Log-Structured Merge-Tree)是一种。数据先存内存(MemTable),后存磁盘(SSTable)通过 Compaction 减少数据碎片,提高查询效率。高吞吐写入(HBase, RocksDB),广泛用于 NoSQL 数据库(如。Key-Value 存储,优化写入。NoSQL 数据库,适合高吞吐写入。追加写+批量刷盘,减少磁盘随机写。多层存储数据,需要额外的磁盘空间。采用 LSM-Tree 存储结构。底层基于 LSM-Tree 设计。事务型数据库(MySQL)原创 2025-03-17 21:22:18 · 321 阅读 · 0 评论 -
Grokking System Design 系统设计面试问题
《Grokking the System Design Interview》列举了多个经典的系统设计题目,通常按照 不同的业务场景和技术难点 进行分类。以下是一些常见的分类和题目示例:设计 Twitter(支持关注/取关、推文、Feed 流)设计 Facebook Messenger(即时聊天,支持在线/离线状态)设计 Instagram(图片/视频上传、Feed、点赞、评论)设计 TikTok(短视频推荐、播放、评论)设计 Reddit(帖子、评论、投票机制)设计 URL 缩短服务(如 Bitly)设计原创 2025-03-17 21:20:50 · 146 阅读 · 0 评论 -
ConcurrentHashMap 在Jdk 17 不同版本中的优化和改进
是 Java 中的一个高性能线程安全的哈希表实现,随着 JDK 版本的迭代,其内部实现也经历了多次优化和改进。以下分别描述了 JDK 7、JDK 8 和 JDK 17 的主要设计和区别,并探讨了 JDK 17 的优化。的实现进行了大幅改进,采用了更加细粒度的锁和无锁化设计,摒弃了 JDK 7 中的分段锁结构,转而引入基于 CAS(Compare-And-Swap)的操作和红黑树优化。在 JDK 17 中进一步完善了设计,修复了一些潜在问题,同时在结构和算法上进行了优化,提升了并发性能和稳定性。原创 2025-02-18 22:55:55 · 736 阅读 · 0 评论 -
使用Arthas采集并分析火焰图
火焰图是一种强大而有效的可视化工具,在 Java 应用的性能分析和故障排查中具有广泛的应用。通过采集 CPU、内存等性能数据,并生成火焰图,可以帮助开发者迅速定位和解决性能瓶颈,从而提升应用的响应速度和整体性能。原创 2024-11-25 14:20:47 · 1881 阅读 · 0 评论 -
Java开源位图(Bitmap)工具库和框架
适用于检测成员资格,特别是在需要降低内存消耗的前提下。:适用于简单的二进制标记,轻量级应用。:适合需要高效集合操作的复杂数据场景,能处理大量数据且内存占用少。:适合高效存储和快速访问大规模布尔集合,尤其是在内存限制的情况下。原创 2024-12-15 12:13:47 · 893 阅读 · 0 评论 -
阿里字节技术管理岗位面试要求
在阿里巴巴等互联网公司,技术管理岗(如技术团队负责人 TL 或 P8/P9 级别的职位)面试具有较高的技术要求和管理能力的考核。面试的问题和侧重点通常包括技术深度、架构设计、团队管理、项目推动等多方面。以下是一些常见的面试问题类型、侧重点以及面试技巧。原创 2024-10-18 22:59:05 · 1412 阅读 · 0 评论 -
使用Roaring Bitmap返回海量数据
如果你需要处理海量数据(例如千万级的 ID 数据)并返回咆哮位图(Roaring Bitmap),可以使用库。Roaring Bitmap 是一种高效压缩的位图数据结构,特别适合处理大规模整数集合。以下是一个 Java 示例,展示如何使用 RoaringBitmap 处理千万级 ID 数据并返回咆哮位图。原创 2025-02-18 11:28:28 · 264 阅读 · 0 评论 -
CodeCache使用率告警分析
CodeCache 是 JVM 用于存储已编译的本地代码(即 JIT 编译生成的代码)的内存区域。如果 CodeCache 使用率持续较高,特别是大于 80%,可能会导致性能问题甚至应用运行异常。原创 2024-11-24 11:16:45 · 1068 阅读 · 0 评论 -
Redis集群热点Key解决方案
解决 Redis 热点 Key 问题,核心思路是分散压力、削峰填谷、动态调整。分散机制:(伪 Key 扩展、一致性哈希)。冷热分离:(多层缓存架构、本地缓存补充)。动态守护:(实时监控、影子缓存)。减少重复访问:(请求合并、随机延时)。对于复杂场景,可以结合多种方法,比如热点 Key 的本地缓存和随机伪 Key 扩展结合使用,将热点请求分散并处理到底层缓存以外。原创 2025-03-02 13:43:02 · 37 阅读 · 0 评论 -
面经分享!一线互联网公司面试及求职建议
这个跳槽季大概面试了近十家公司,也拿到了几个Offer,现在面试告一段落,简单总结下面经,我现在主要的方向是Java服务端开发,把遇到的问题和大家分享一下,也谈谈关于技术人员如何有方向的提高自己,做到有的放矢。一、面试遇到的问题 1.百度 百度最近真是炙手可热,贴吧事件刚结束,医疗竞价排名又闹得沸沸扬扬,一些论坛上连带程序员都开始招黑了,友谊的小船可是说翻就翻...原创 2016-05-09 11:21:00 · 487 阅读 · 0 评论 -
大厂晋升指南:材料准备,PPT 写作和现场答辩
晋升只是公司人力制度下的一种管理手段,晋升成功值得高兴,失败也不用太过于气馁,生活不止一面!原创 2023-04-07 10:40:53 · 2399 阅读 · 0 评论 -
面试官系列,深入数据库分区分库分表
一、为什么要分库分表软件时代,传统应用都有这样一个特点:访问量、数据量都比较小,单库单表都完全可以支撑整个业务。随着互联网的发展和用户规模的迅速扩大,对系统的要求也越来越高。因此传统的MySQL单库单表架构的性能问题就暴露出来了。而有下面几个因素会影响数据库性能:数据量MySQL单库数据量在5000万以内性能比较好,超过阈值后性能会随着数据量的增大而变弱。MySQL单表的数据量是500w...原创 2020-02-15 17:33:16 · 1565 阅读 · 1 评论 -
面经分享!一线互联网公司面试及求职建议
本文来自一线工程师的面经分享,除了面试问题,还有求职建议,以及技术人如何有方向的提高自己,有的放矢。一、面试遇到的问题1.百度百度最近真是炙手可热,贴吧事件刚结束,医疗竞价排名又闹得沸沸扬扬,一些论坛上连带程序员都开始招黑了,友谊的小船可是说翻就翻。说回面试,百度面了两次,分别是百度糯米和金融事业部,百度目前只有这两个部门的招聘岗位和我比较匹配。面试都在西二旗的百度新总部,园区还在施工,...原创 2020-02-03 15:52:01 · 3486 阅读 · 0 评论 -
InnoDB Buffer Pool改进LRU页面置换
缓冲池(buffer pool)是一种常见的降低磁盘访问的机制InnoDB的缓冲池以数据页(page)为单位缓存数据InnoDB 对普通 LRU 进行了优化,将缓冲池分为老生代和新生代,入缓冲池的页,优先进入老生代,页被访问,才进入新生代,以解决预读失效的问题。同时采用老生代停留时间窗口机制,当数据页被访问且在老生代停留时间超过配置阈值的,才进入新生代,以解决批量数据访问,大量热数据淘汰的问题。原创 2023-03-30 17:23:24 · 586 阅读 · 0 评论 -
垃圾回收之三色标记法
CMS收集器解决漏标问题:增量方式 如果现在B(黑色)对象引入白色对象,写屏障。好处:避免浮动垃圾,缺点扫描整个引用链效率比较低。G1收集器解决漏标问题:原始快照方式。好处:效率非常高,无需扫描整个引用链,缺点:可能会产生浮动垃圾。原创 2023-04-04 10:17:41 · 837 阅读 · 0 评论 -
服务端技术方案模板参考
如何写好一个技术方案对于开发来说非常关键,这是一个工程类技术方案模板,基于我之前的一些积累,适合相对独立的业务需求承接。实际开发中可以作为一个模板来套用,在这个基础上进行增加或者删减。原创 2023-03-30 16:56:08 · 489 阅读 · 0 评论 -
垃圾回收之CMS、G1、ZGC对比
ZGC在JDK15达到production-ready,JDK17是第一个开始推出成熟的ZGC的长期支持的ZGC版本。原创 2023-04-01 16:42:43 · 2544 阅读 · 0 评论 -
含源码解析,深入Java 线程池原理
从池化技术到底层实现,一篇文章带你贯通线程池技术。1、池化技术简介在系统开发过程中,我们经常会用到池化技术来减少系统消耗,提升系统性能。在编程领域,比较典型的池化技术有:线程池、连接池、内存池、对象池等。对象池通过复用对象来减少创建对象、垃圾回收的开销;连接池(数据库连接池、Redis连接池和HTTP连接池等)通过复用TCP连接来减少创建和释放连接的时间。线程池通过复用线程提升性能。简单来说...原创 2020-02-07 15:23:40 · 572 阅读 · 0 评论 -
垃圾回收之G1收集过程
G1 中提供了 Young GC、Mixed GC 两种垃圾回收模式,这两种垃圾回收模式,都是 Stop The World(STW) 的。G1 没有 fullGC 概念,需要 fullGC 时,调用 serialOldGC 进行全堆扫描(包括 eden、survivor、o、perm)。原创 2023-04-03 20:35:49 · 2293 阅读 · 0 评论 -
垃圾回收之CardTable和Remembered Set
JVM 在进行垃圾收集的时候,有一项非常重要的工作就是确定这一次垃圾收集的对象到底有多少个,即确定 live set 的范围。卡表和 RSet(Remember Set),是 JVM 为了解决分代收集时,live set 扫描需要穿梭到不同的代的时候的效率问题。对于新生代垃圾收集器而言,这个问题又有其特殊之处。根据 JVM 的弱分代收集假设(weak generational hypothesis)的存在,每次垃圾收集的时候,新生代的扫描范围可能很大,但新生代的 live set 不应该太大。原创 2023-04-02 23:25:40 · 1071 阅读 · 0 评论 -
大型网站前端架构的设计与优化
前端请求过程是指用户和应用服务器之间发生数据交互前的展现过程,这个过程通常不包含业务逻辑,不需要处理动态内容。所谓唯快不破,互联网产品在用户体验方面,很重要的一点就是快。前端技术基本的架构与优化,主要是怎样让页面更快更好的展示在用户面前。一、页面开发最佳实践1.css样式置顶,Javascript脚本置底样式表(css)放在网页的HEAD中会让网页显得加载速度更快,因为这...原创 2016-05-16 15:40:00 · 420 阅读 · 0 评论 -
程序员转型架构师,推荐你读这几本书
从CRUD的程序员,到niubility的架构师,推荐这几本书架构方面的书,看了绝对有收获,996也要找时间读完!书单分为两部分,第一部分是关于系统架构的方法论,包括领域驱动设计,微服务,整洁架构,第二部分介绍各大互联网公司是如何做系统架构落地实践,个人对电商业务比较熟悉,所以以阿里和京东的技术实践为主。如果你有推荐的书籍,请留言,会及时更新!好书太多,这个书单里只列举了一部分,程序员...原创 2019-10-23 19:31:17 · 1371 阅读 · 1 评论 -
MySQL笔记之Checkpoint机制
CheckPoint是MySQL的WAL和Redolog的一个优化技术。一、Checkpoint机制CheckPoint做了什么事情?将缓存池中的脏页刷回磁盘。checkpoint定期将db buffer的内容刷新到data file,当遇到内存不足、db buffer已满等情况时,需要将db buffer中的内容/部分内容(特别是脏数据)转储到data file中。在转储时,会记录c...原创 2023-04-08 23:17:00 · 165 阅读 · 0 评论 -
MySQL笔记之一致性视图与MVCC实现
在MySQL中,READ COMMITTED和REPEATABLE READ隔离级别的区别就是它们生成ReadView的时机不同原创 2023-04-07 16:23:05 · 729 阅读 · 0 评论 -
LeetCode刷题必备,通用算法流程图
这是一个相对通用的算法解题流程图,可以帮助你确定应该使用哪种数据结构或算法,可以适配LeetCode大部分算法题目场景。原创 2023-04-07 22:18:55 · 307 阅读 · 0 评论 -
MySQL热点行优化技术
对于秒杀热点场景,MySQL官方版本一般不超过1000 TPS每秒,在对MySQL优化前一般使用Redis或者其他NewSQL数据库来抗,但是Redis对于数据的一致性支持较差,NewSQL数据库对于运维等要求较高,小公司一般不具备相关技术。以下列举一些互联网大厂的MySQL热点行优化技术。一、热点行性能瓶颈在Mysql数据库中,为了保证事务的ACID属性,当一个事务对一行数据进行更新时,...原创 2023-05-11 16:41:00 · 281 阅读 · 0 评论 -
Redis使用lua脚本实现库存扣减
Lua 允许您在 Redis 中运行部分应用程序逻辑。这样的脚本可以跨多个键执行条件更新,可能以原子方式组合几种不同的数据类型。原创 2023-05-15 11:05:15 · 1422 阅读 · 0 评论 -
redo log和undo log写入的两阶段提交
两阶段提交就是执行完更新语句后,先将redo log状态设置为prepared,等更新内容写入binlog后,在将redo log状态设置为commited。原创 2023-05-09 15:31:48 · 316 阅读 · 0 评论 -
MySQL的redolog和binlog有哪些区别?
redo log 是 innodb生成的日志,主要为了保证数据的可靠性;bin log 是 MySQL server层面上生成的日志,主要用于 point in time 恢复和主从复制。undo log 主要用于事务的回滚和一致性快照读(MVCC 多版本并发控制)。原创 2023-05-09 15:00:34 · 307 阅读 · 0 评论 -
MySQL实战之主从数据同步机制
半同步复制的方式,它兼顾了异步复制和同步复制的优点。如果主库宕机,至少还有一个从库有最新的数据,不存在丢数据的风险。并且,半同步复制的性能也还凑合,也能提供高可用保证,从库宕机也不会影响主库提供服务。原创 2023-05-11 14:43:05 · 2246 阅读 · 0 评论 -
MySQL笔记之文件和日志
MySQL通过两阶段提交过程来完成事务的一致性的,也即redo log和binlog的一致性的,理论上是先写redo log,再写binlog,两个日志都提交成功(刷入磁盘),事务才算真正的完成。原创 2023-05-09 16:22:22 · 1247 阅读 · 0 评论 -
常见的写热点数据优化方案
MySQL的热点行处理能力非常有限,单key最高吞吐只有2K TPS,同时传统的分库分表策略也无法解决热点数据问题。原创 2023-05-09 22:00:34 · 895 阅读 · 0 评论 -
LSM 树 设计思想总结
LSM 树将对磁盘的随机写入转化为了磁盘友好型的顺序写(无论机械磁盘还是 SSD,随机读写都要远远慢于顺序读写),从而大大提高了写性能。原创 2023-05-09 17:37:42 · 744 阅读 · 0 评论 -
Redis应用高频面试题
本文整理了30个常见的 Redis 面试题目,涵盖了 Redis 的源码、数据结构、原理、集群模式等方面的知识,并附上简要的回答,帮助大家更好地准备相关的面试。原创 2024-10-16 12:45:31 · 723 阅读 · 0 评论 -
大厂系统设计高频面试题解析
本文将列举20个常见的系统设计面试题目,并附上回答要点,涵盖从秒杀系统到短链接服务的经典高频问题,帮助大家系统化地理解和应对这类面试场景。原创 2024-10-16 12:41:23 · 740 阅读 · 0 评论 -
英语好能带来多大的收益
在非英语国家,英语好能够为个人带来显著的收益。尤其是将英语与其他专业技能相结合时,会对人生和职业产生很大的积极转变。原创 2024-09-16 23:18:00 · 683 阅读 · 0 评论 -
阿里P8和P9级别有何要求
阿里巴巴的P8和P9级别,代表着公司的资深技术专家或管理者岗位原创 2024-09-15 22:44:13 · 2093 阅读 · 0 评论 -
JDK对容器的支持和限制
容器毕竟是一种轻量级的实现方式,所以其封闭性不如虚拟机技术。最新版的 JDK 加入了一些修正手段。原创 2023-05-05 11:49:54 · 489 阅读 · 0 评论