自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 精准到 Trace!用 Woody attach 式 Profiling OpenTelemetry 与 Skywalking 请求

skywalking和opentelemetry请求trace精准profiling,分析每次请求的性能问题及瓶颈代码

2025-11-04 08:57:47 1061

原创 从“偶发超时”到“精准定位”:Woody如何让Java接口性能问题无所遁形?

Java应用偶发超时问题难排查?Woody工具1小时定位Redis锁主从切换隐患。传统工具因性能数据与业务脱节而失效,Woody通过三大创新解法:1)用ig命令将traceId与业务订单绑定,实现性能数据业务标识;2)pr命令精准选择支付接口采样,CPU占用仅0.5%;3)生成单请求火焰图,直指RedisLock.acquire()方法耗时占比82%。相比传统方案,Woody实现业务技术数据强关联、生产环境常驻低耗、无需代码改造三大优势,将性能排查从"大海捞针"变为"精准狙击&

2025-09-26 16:15:02 872

原创 Woody:开源Java应用性能诊断分析工具

Woody是一款专注于Java应用性能诊断的命令行工具,支持JDK1.8+及Linux/macOS系统。它通过集成async-profiler,可分析GC、CPU、耗时、锁竞争等性能问题,并生成火焰图。主要特性包括:支持SpringMVC/Dubbo等5种中间件、业务请求与样本精确关联、极低性能损耗。提供pr/pe/pf/ts四类命令,可灵活选择业务入口、事件类型,并支持traceId定位请求。适用于生产环境,已开源在GitHub。

2025-08-29 14:28:14 1134

原创 一站式搞定 Go 服务可观测性:OpenTelemetry 全中间件埋点实践

本文介绍了一个基于OpenTelemetry(OTel)的Go语言微服务可观测性实战项目。该项目提供了Gin、GORM、gRPC、Kafka等8种常用Go中间件的OTel埋点实现,支持全链路追踪、指标采集和日志记录,能帮助开发者快速构建具备云原生可观测性的服务。特点包括:标准化实现OTel规范、低侵入设计仅需一行配置、多维度数据采集、灵活适配不同环境需求。项目兼容主流可观测性后端如Jaeger、Prometheus等,并通过中间件/拦截器模式实现自动上下文传递,无需修改业务代码即可获得完整的调用链路追踪能力

2025-11-18 14:43:56 443

原创 用 Go 快速解析 DataDog 采集数据:从代码到直观理解

本文介绍了如何用Go语言快速搭建一个DataDog数据解析工具,帮助开发者直观理解DataDog采集的监控数据格式。工具主要解决两个问题:解析二进制格式的追踪数据为可读JSON,以及实时捕获UDP传输的指标数据。通过定义DataDog数据结构、编写HTTP接口接收追踪数据并解析为JSON格式,同时创建UDP服务监听指标端口,开发者可以轻松查看监控数据的详细内容,无需复杂配置即可运行。该工具使用Gin框架和MsgPack库,实现简单高效的数据解析和展示功能。

2025-10-14 10:06:53 861

原创 Java Agent 中 Tag 存储结构的优化实践与业界方案对比

本文分析了分布式追踪系统中采集Agent的Tag存储结构设计,对比了OpenTelemetry、SkyWalking和DataDog三大主流方案。OpenTelemetry采用synchronized+HashMap,DataDog使用分层存储与批量同步,而SkyWalking通过规避并发使用ArrayList。文章提出自研Agent的优化方案:基于数组与枚举的存储结构,在中间件监控场景下实现60%以上的性能提升。核心结论是Tag存储设计需匹配业务场景,在性能、安全与灵活性间取得平衡。

2025-10-11 10:11:25 569

原创 K8s环境下Java-Agent自动注入方案详解

本文介绍了在Kubernetes中实现Java-Agent自动注入的技术方案,基于Admission Webhook机制实现无侵入式集成。主要内容包括:1)开启MutatingAdmissionWebhook功能;2)构建Java-Agent基础镜像;3)开发Webhook应用拦截资源请求;4)部署Webhook并注册配置;5)通过标签控制注入规则。该方案无需修改应用代码,具有灵活性和扩展性优势,是K8s环境下实现分布式追踪、性能监控等可观测性场景的最佳实践。

2025-10-09 13:55:11 753

原创 如何学习 OpenTelemetry-Java-Agent(一):自定义 OTLP-HTTP-Collector 实现数据接收与格式化输出

本文介绍了如何从零开发一个OpenTelemetry自定义Collector,用于接收和解析Java Agent上报的OTLP格式数据。文章首先解释了OTLP协议和Collector的核心作用,随后详细说明了项目技术栈(Java+Spring Boot)和实现方案,包括数据接收、解析和格式化输出功能。通过这个极简Collector,开发者可以直观理解OTLP数据流转过程,为后续深入学习OpenTelemetry打下基础。项目代码已开源,支持Trace、Log和Metrics三种数据的接收和JSON格式化输出

2025-09-29 19:24:31 1115

原创 Async-profiler 内存采样机制解析:从原理到实现

在 Java 性能调优的工具箱中,async-profiler 是一款备受青睐的低开销采样分析器。它不仅能分析 CPU 热点,还能精确追踪内存分配情况。本文将深入探讨 async-profiler 实现内存采样的多种机制,结合代码示例解析其工作原理。

2025-06-04 09:58:13 1507

原创 Java APM如何Profiling:使用Instrumentation技术构建热点代码大盘

使用Instrumentation(字节码编辑技术)做Profiling,构建热点代码大盘

2025-02-28 14:44:39 1143

原创 Java APM如何Profiling:使用火焰图多维度分析应用性能瓶颈

Profiling实现了实时分析应用的cpu,内存,请求耗时,锁 四种资源,可通过火焰图形式多维度的分析应用的性能瓶颈

2025-02-22 20:12:16 1249

原创 IPV4 IPV6离线地址库Go版本

Go版本好像没做到无内存分配,但也非常低的,几近于无。

2025-01-07 09:22:18 315

原创 IPV6离线地址库Java版(极致性能,无内存分配,申请了专利)

IPV6极致性能离线检索

2025-01-07 09:15:57 540

原创 IPV4离线地址库Java版(极致性能,无内存分配)

5年前写的一个关于IP离线查询的地址库,用阿里云的IP地址信息封装成一个离线产品售卖,当时卖的还是很好的,但后来阿里云那边去爬IPIP.NET的IP数据被抓了,被告失败后产品不能对外售卖了:,产品分好IPV4和IPV6多种语言,但都是以java版本为模板开发的,我当时负责了java版本和go版本,毕竟已经过去5年了,而且该产品也不能对外售卖了,就贴出来给大家观摩观摩。

2025-01-07 09:08:05 450

原创 深入源码分析 Elasticsearch Filter 机制

Filter的cache细节,比如为什么只有filter能cache,cache数据是什么,缓存的数据结构是什么,什么类型的query能被缓存等等

2020-11-09 16:42:32 1075

原创 详解 Elasticsearch refresh 机制

refresh 的定义refresh 做了什么refresh的执行逻辑search idle 的含义

2020-11-04 11:07:50 10566 1

原创 Elasticsearch官方文档要点整理

Elasticsearch官方文档要点整理,概念说明

2020-10-24 19:17:00 1743

原创 详解 Elasticsearch Index Sorting 原理

Elasticsearch Index Sorting 原理,以及在Elasticsearch,Lucene层面的源码的简析

2020-10-07 10:06:25 5282

原创 多功能高度定制化的Mybatis逆向工程

集成很多额外功能的Mybatis逆向工程框架源码,额外功能包括生成Service,Controller,抽象Mapper接口等等

2020-09-19 15:16:37 407

原创 Elasticsearch(Lucene)文件组织结构以及检索数据流程简析

Elasticsearch(Lucene)数据在磁盘的目录结构,以及在检索是的简要流程

2020-09-19 14:33:24 1219

翻译 Elasticsearch官方文档 <最佳实践> 翻译

elasticsearch 官方文档 使用最佳实践翻译

2020-09-01 16:02:57 815

原创 Java内存优化常用策略

Java内存优化: 1.对象指针维度优化 2. 数据优化,包括字符串和数值优化

2020-05-30 13:40:04 1013

原创 《深入计算机组成原理》对Java开发的启发

1. 浮点数的表示和运算2. CPU多级流水线,多条流水线,指令预读,乱序执行3. volatile关键字的原理,MESI协议4. 主内存,CPU缓存的读写时间5. CPU分支预测机制6. CPU Cache Line 机制,内存边界对齐,Java对象要求8字节的整数倍7. Java直接内存机制...

2020-05-18 22:58:28 1039

原创 漫谈Java基本数据类型的自动装拆箱机制

Java的自动拆装箱机制的理解,原始类型和装箱类型使用上的区别,什么时候会装箱,什么时候回拆箱,有什么作用。

2020-03-28 23:11:57 443 1

原创 限流可以怎么限 ?

为什么要限流,不限流会导致什么问题,限流的多种方式及策略

2020-03-21 23:00:53 804

原创 IntelliJ IDEA插件Easy Code 生成配置

Easy Code 是IDEA的一个插件,封装了Mybatis 逆向工程的功能,同时提供了一些自定义的拓展。使用者可对插件的脚本做自定义拓展,比如定义生成的Entity以DO结尾,使用Lombok风格,标识@Data注解,抽象公共的Mapper接口,自定义Service,Controller公共方法 等等。我就是对脚本做了一些自定义,实现上述功能。IDEA安装了Easy Code插件后,配置选项...

2020-03-16 19:36:42 1716

转载 Redis内存模型

前言Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。我们使用Redis时,会接触Redis的5种对象类型(字符串、哈希、列表、集合、有序集合),丰富的类型是Redis相对于Memcached等的一大优势。在了解Redis的5种对象类型的用法和特点的基础上,进一步了解Redis的内存模型,对Redis的使用有很大...

2020-03-12 22:49:06 408

原创 浅析JVM内存指针压缩

jvm在32G大小以内的指针压缩的原理浅析

2020-01-16 17:46:26 2784 3

原创 ElasticSearch性能优化手段汇总

Elasticsearch各维度的优化手段汇总,包括集群,节点,索引,检索和写入等多个维度

2020-01-08 18:34:51 1280 1

原创 Mybatis逆向工程自定义拓展

对Mybatis Generator做拓展,支持所有的Mappper接口统一抽象父接口,统一注释,可对生成的Model统一添加父类,使用Lombok的@Data替代Getter和Setter方法,可对所有的Model追加DO后缀,比如user_info表,生成UserInfoDO实体类,将Table的Column注释追加到Model的Field上,可自定义类型映射,比如TinyInt >> Integer, TinyInt (2) >> Boolean

2019-12-30 22:28:46 685

原创 Elasticsearch源码解析:HTTP请求的通用处理流程

Elasticsearch服务端处理Http Rest 请求的通用流程

2019-12-30 21:50:26 1669

原创 Elasticsearch(Lucene)检索关联性匹配算法(BM25)的源码解析

Elasticsearch的打分机制代码粗略解读

2019-12-23 21:00:40 1445

原创 Lucene的删除Document的源码流程

Lucene删除Document的源码流程

2019-07-11 18:57:39 1256

原创 Lucene倒排索引的持久化 一一(倒排表的持久化)

Lucene的倒排表的持久化过程及其文件的数据结构,基于Lucen 7.3.1版本

2019-06-19 11:13:09 1203

原创 Lucene倒排索引在内存中的构建过程(基于7.3.1)

本篇文章只讲倒排索引在内存中的构建过程,数据flush到磁盘的过程没有关联,一个Field的倒排索引在内存中公用一个字节数组,但flush到磁盘后,会根据数据类型写入不同的数据文件。本篇博客只讲构建,不讲刷盘。Lucene根据Field自定的 IndexOptions(索引构建选项)级别记忆是否支持Payload会存储不同的数据信息:public enum IndexOptions { ...

2019-06-03 21:23:55 1366

原创 RocketMQ和Kafka的差异对比

kafka和rocketmq的差异,broke,producer和consume上的差异。

2019-03-06 09:59:52 14710 2

原创 Mysql多表连接查询的执行细节(二)

本篇博客会说明一下问题:1. 筛选条件放置在where和on上的不同;2. 外连接时外表是否一定为驱动表;3. 是否应该使用join连接查询

2019-02-28 09:47:10 2184 6

原创 Mysql多表连接查询的执行细节(一)

本篇博客会说明一下问题:1. 驱动表如何选择;2. 两表关联查询的内在逻辑是怎样的3. *多表连接如何执行?是先两表连接的结果集然后关联第三张表,还是一条记录贯穿全局

2019-02-26 20:54:39 36241 32

原创 G1调优常用参数及其作用

G1调优参数及其作用机制

2019-02-12 23:15:10 16814 2

转载 详解 JVM Garbage First(G1) 垃圾收集器

G1收集器详解,细节较多,有深度

2019-02-11 17:47:34 1829

Woody:开源Java应用性能诊断分析工具

Woody:开源Java应用性能诊断分析工具

2025-08-29

自定义Excel解析框架源码

框架功能介绍连接:http://blog.youkuaiyun.com/qq_27529917/article/details/79158354

2018-01-25

空空如也

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

TA关注的人

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