自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 资源 (1)
  • 收藏
  • 关注

原创 ES作为推荐库的设计原理

ES 实现商品推荐的核心是利用其查询和分析能力,将推荐逻辑转化为 ES 可执行的查询相似商品:通过字段匹配、文本相似、向量相似实现;关联商品:通过用户行为聚合挖掘商品关联;个性化推荐:结合用户画像过滤和排序商品。适合中小规模推荐场景,或作为大型推荐系统的“候选集过滤/排序”环节,配合机器学习模型提升效果。

2025-08-23 18:08:32 808

原创 ClassLoader卸载&类卸载&JVM内存空间布局【源码分析】

本文基于OpenJDK24源码分析JVM类加载与回收机制。类加载过程包括加载(读取.class文件并校验)、准备(分配静态内存并创建mirror对象)、解析(链接常量池引用)和初始化(执行clinit方法)。关键点在于klass(元空间存储的类元数据)和mirror(堆中的Java类对象)的分离设计。类卸载需要满足三大条件:无存活实例、类加载器被回收、Class对象无引用。通过ClassLoaderData管理类加载器元数据,当加载器被回收且所有mirror对象不可达时,元空间中的klass数据才会被回收。

2025-08-04 16:50:26 744

原创 轻量锁偏向锁重量锁害人不浅!synchronized源码!

从源码分析synchronized实现

2025-07-09 14:14:29 438

原创 Mac M芯片搭建jdk源码环境(jdk24)

【代码】Mac M芯片搭建jdk源码环境(jdk24)

2025-07-02 07:40:24 320

原创 内存分配算法(系统分配算法~应用常见算法)

从系统内存分配器伙伴算法、SLAB到应用常见算法ptmalloc、jemalloc

2025-06-29 17:29:06 1213

原创 从源码角度了解Elasticsaerch(分布式协调排序、深分页问题)

Elasticsearch基于Lucene所以很多系统实现都在其中,所以可以先看看Lucene的实现:https://blog.csdn.net/qq_35040959/article/details/147931034不像Kafka这种顶级项目核心性能组件全自己实现,ELK中有很多引用至第三方开放库;网络模型多重要不必多说,Elasticsearch基于Netty,一个认可度&社区活跃度都非常高的NIO多路复用模型;Elasticsearch基于Lucene上提供分布式服务;具体可以看看这篇文章对存储模

2025-06-16 16:33:26 881

原创 从源码角度了解Lucene(倒排索引存储结构)

WAL+Segment存储模式结合了写前日志(WAL)和不可变分段(Segment)技术,实现高效数据写入和查询。WAL确保数据持久化,Segment按块存储数据并支持合并优化。Lucene采用该模式构建索引,通过批量写入有序数据提升索引效率。查询时采用二分查找快速定位文档,使用BM25算法计算相关性评分,考虑词频、逆文档频率和文档长度因素。该模式还通过文件聚合(cfs/cfe)解决大量小文件问题,支持高效的分页查询,但深分页可能存在性能问题。

2025-06-11 17:05:55 888

原创 【吃透 Elasticsearch 的核心原理】学习步骤

【代码】【吃透 Elasticsearch 的核心原理】学习步骤。

2025-05-08 10:29:47 801

原创 Caffeine搭建源码环境

Caffeine作为服务端本地缓存之王,有独到的高性能设计;搭建源码环境折磨坏本码农,故分享我成功搭建步骤。

2025-03-10 11:41:08 241

原创 Memcached整体结构(源码)

Memcached不像Redis有许多数据结构,它只实现了Hash表的操作,存储的K-V缓存中间件。

2025-03-09 10:09:07 186

原创 Jedis、Lettuce和Redisson性能设计

Jedis、Lettuce和Redisson底层区别导致的性能差异分析

2025-03-03 14:13:58 1285

原创 redis压测&调优

8核(vCPU)16 GiB11.2w负载指标:没有强烈的资源竞争,整体(多核心)负载低36.4wtp99.9 3ms4核(vCPU) 8 GiBc8a-卓越的单核性能: c8a采用AMD EPYCTM Genoa处理器,主频2.7 GHz,睿频最高3.7 GHz,单核性能强劲,适合需要高性能计算的应用场景。25.7w2核(vCPU) 4 GiB。

2025-02-28 09:16:00 960

原创 DeepSeek介绍[Cache-Through、Cache-Around、Cache-Behind、Cache-Asid]

DeepSeek介绍[Cache-Through、Cache-Around、Cache-Behind、Cache-Asid]

2025-02-18 16:52:42 986

原创 Redis7.0八种数据结构底层原理

redis8种数据结构的底层存储结构

2025-02-08 11:17:41 1428

原创 Caffeine核心设计图解

Caffeine高性能细节设计

2025-01-11 14:45:56 771

原创 【Redis源码】核心图解

redis源码图解

2024-12-11 22:37:00 271

原创 Kafka-时间轮和延迟操作-源码流程

DelayedProduce通过DelayedOperationPurgatory.tryCompleteElseWatch()被放入Watchers和SystemTimer中。Watchers的tryCompleteWatched()方法会尝试完成DelayedProduce(调用DelayedProduce的tryComplete()方法),那么tryCompleteWatched()是怎么被调用的呢?分区的HW发生了变动(acks = -1时)

2024-07-01 14:52:00 1952 1

原创 Kafka-Produce客户端源码流程

KafkaProducer中会起一个Sender线程,Sender线程中主要有两个方法:sendProducerData()和client.poll()。sendProducerData()负责准备数据并将数据set到通道中等待发送,client.poll()负责真正执行网络的io操作,在每次poll操作中必定有3次发送事件(假设集群中有3个kafka,生产者客户端会分别和3个kafka建立3个通道,这也是每次setSend不会失败的原因,如果失败了则该通道就关闭了)以及若干的接收响应事件。

2024-07-01 14:48:29 968

原创 Kafka-服务端-网络层-源码流程

整体架构如下所示:responseQueue不在RequestChannel中,在Processor中,每个Processor内部有一个responseQueueKafkaServer是Kafka服务端的主类,KafkaServer中和网络成相关的服务组件包括SocketServer、KafkaApis和KafkaRequestHandlerPool。SocketServer主要关注网络层的通信协议,具体的业务处理逻辑则交给KafkaRequestHandler和KafkaApis来完成。

2024-07-01 14:38:42 881

原创 Kafka-服务端-副本同步-源码流程

num.replica.fetchers 单个broker的拉取线程,默认1replica.fetch.response.max.bytes 单次最多拉取多少数据,默认10MBreplica.fetch.max.bytes 单次单分区最多拉取多少数据,默认1MB。

2024-07-01 14:34:32 1157

原创 ElasticSearch与HBase的分布式存储设计

存储角度对比ES与HBASE

2023-12-15 16:22:21 634

原创 EasyRAFT

EasyRaft是Raft(共识算法)的Java实现,主要目的在于提供一种高性能的分布式一致性协议。覆盖Jraft实现的功能。

2023-10-12 14:05:18 389

原创 BIO&NIO基准测试-笔记

第一轮第二轮。

2023-06-12 21:50:08 354 1

原创 Java核心锁基准测试

ReentrantLock: 平均用时263毫秒。ReentrantLock: 平均用时271毫秒。ReentrantLock: 平均用时8.0毫秒。synchronized: 平均用时454毫秒。synchronized: 平均用时465毫秒。synchronized: 平均用时8.9毫秒。StampedLock: 平均用时263毫秒。StampedLock: 平均用时297毫秒。StampedLock: 平均用时8.1毫秒。

2023-05-26 10:56:46 952

原创 系统化了解Micrometer

Micrometer是基于 JVM 的应用程序的指标检测库。它为最流行的监视系统提供了检测客户端的简单门面[门面设计模式],使您可以检测基于 JVM 的应用程序代码,而不会被供应商锁定。它旨在为指标收集活动增加很少甚至没有开销,同时最大限度地提高指标工作的可移植性。提供了标准化接口,像Slf4j一样提供门面Micrometer不是分布式跟踪系统或事件记录器

2023-05-14 16:23:42 2774

原创 个人 [Raft项目] 记一次内存泄漏排查

笔者在一步一步写Raft协议, 在可以跑了一天后,发现Leader节点的内存使用量缓慢上涨, 且手动执行GC后也没达到预期水平线。

2023-05-14 09:31:58 595

原创 JDK定时/延迟任务实现原理

ScheduledThreadPoolExecutor实现原理

2023-04-13 21:04:50 647

原创 手写分布式系统CP协议-实现中

基于Raft算法实现CP协议

2023-04-05 13:56:30 624

原创 JDK之8后: 协程? 虚拟线程!!!

特性官方文档: https://openjdk.org/jeps/436。

2023-04-04 21:17:26 1910

原创 JDK8后:作用域值(Scoped Values)

在此之前我们使用TheadLocal去做多线线程的共享,JDK20的孵化特性 Scoped Values作用域值提供的更轻量的多线程共享特性。

2023-04-04 19:11:24 536

原创 数据同步模型的[读扩散、写扩散和混合模式]-基础概念

数据同步模型基础概念与方案

2023-03-11 14:13:34 1528

原创 Sentinel源码阅读

Sentinel源码阅读

2023-02-14 14:11:37 459

原创 IM架构方案

这两天思考了一下IM系统架构,大三的时候基于网络文档实现过,时过境迁抽象思考一下

2023-02-07 15:51:28 605

原创 Mybatis源码阅读-笔记

mybatis源码阅读笔记

2023-02-02 19:30:11 293

原创 rabbit是否支持批量发送?

Rabbit是否支持批量发送消息该问题笔者翻阅官方文档与三方博客也没有找到答案,后也是自己去翻阅源码后才大概找到一个不敢确定的答案:

2023-01-30 14:36:28 1228

原创 Spring官方提供【CSRF攻击】解决方案

·Spring官方提供【CSRF攻击】解决方案

2023-01-16 08:20:56 1847

原创 HTTP 请求头安全方案

HTTP 请求头安全方案

2023-01-13 14:22:57 2131

翻译 JWT 中文官方文档

JWT官方文档

2023-01-11 20:15:03 4290

原创 从官方文档学习Rabbit与SpringAMQP-乱版

主要从Rabbit官网于Spring AMQP官方文档的角度去详细学习MQ

2023-01-05 21:03:14 578

原创 Spring AMQP搭建RabbitMQ客户端

对于MQ的客户端我们主要分为**生产者**与**消费者**,前者负责向Mq推送消息后者监听MQ处理消息,本文也以两角色为主要切入来搭建项目;

2023-01-05 21:00:26 609

四级联动 经度 纬度 有单表与多表

1, '110000', '北京', '北京', '000000', '116.405289', '39.904987', 1, '2019-09-04 17:27:50', '2019-09-04 17:27:50', '', 0, '00000000', '1'

2020-11-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除