很多人觉得Redis快,是因为它基于内存。这当然没错,但如果只是把数据放在内存里,任何数据库都能做到。Redis真正的精妙之处,首先在于它为不同场景精心设计的底层数据结构
前段时间在排查一个线上问题:某个大key导致Redis响应变慢。当时我深入阅读了Redis的源码,发现它的String类型在不同情况下会使用完全不同的内部表示——短字符串用embstr、长字符串用raw、纯数字用int。这种针对性优化的思想贯穿在Redis的每个数据结构中
在互联网应用中,统计独立访客数量(UV统计)是一个很常见的需求。如果你正在维护一个流量不错的网站,可能会发现传统的Set集合统计方法会消耗大量内存——每个用户ID都需要存储完整的字符串。这时候,HyperLogLog就派上用场了
当我们谈论Java性能时,绕不开两个关键技术:JIT(Just-In-Time)和AOT(Ahead-Of-Time)编译。前者让Java运行时越来越快,后者让Java应用秒级启动成为可能
在云原生时代,传统Java应用的启动慢、内存占用高的问题愈发突出。GraalVM的AOT编译技术为微服务场景带来了新的可能性。这篇文章将从编译原理出发,深入剖析JIT和AOT的技术细节,并通过实战案例展示如何基于静态编译构建高性能微服务
最近想做一个医学知识库(类似于默沙东诊疗手册,但是更加全面智能),患者可以通过询问自己的症状,得出初步的诊疗意见,问题是,这些知识都不在模型的训练数据里
直接fine-tune?成本太高,而且每次更新知识都要重新训练。后来想到了RAG方案
关于JVM的内存模型和GC机制这类底层原理和细节,如果不深入理解,永远不是一个合格的程序员
Java八股中,对GC的理解停留在"标记-清除"、"复制算法"这些概念层面。但生产环境的问题往往更复杂:为什么年轻代用复制算法老年代用标记-整理?卡表(Card Table)到底解决了什么问题?G1的Region是如何管理的?
这篇文章会从JVM规范到Hotspot源码,深入剖析内存管理的每个细节
理解类加载机制不仅是面试八股文,更是解决实际问题的关键。Spring的AOP、Tomcat的热部署、OSGI的模块化,底层都是在玩类加载器的花样
这篇文章会从Class文件格式开始,深入到Hotspot的C++源码,完整剖析类加载的每一个细节