- 博客(380)
- 资源 (1)
- 收藏
- 关注
原创 【场景题】线上接口响应慢,应该如何排查问题?
排查线上接口响应慢问题应遵循"监控先行→定位→分析→优化"闭环方法论: 宏观定位:通过监控工具(Prometheus/SkyWalking)区分单接口或全局慢,分析RT/QPS/错误率趋势 链路追踪:使用SkyWalking/Zipkin精确定位耗时环节(DB/Redis/RPC等) 深入分析: 网络:检测延迟/丢包 中间件:排查MySQL锁/慢SQL、Redis大Key、MQ堆积 服务端:检查CPU/内存/IO瓶颈,JVM GC及代码热点(Arthas/jstack) 优化验证:针对性
2025-11-10 22:40:06
377
原创 【Arthas】基础使用
官方文档:Gthub:Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception?我改的代码为什么没有执行到?难道是我没 commit?分支搞错了?遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗?
2025-11-02 20:11:33
849
原创 【场景题】分布式锁都怎样实现
排在最前面的号,拥有取水权,就是一种典型的独占锁。另外,先到先得,号排在前面的人先取到水,取水之后就轮到下一个号取水,挺公平的,说明它是一种公平锁。在每一个节点下面创建临时顺序节点(EPHEMERAL_SEQUENTIAL)类型,新的子节点后面,会加上一个次序编号,而这个生成的次序编号,是上一个生成的次序编号加一。故事发生在一个没有自来水的古代,在一个村子有一口井,水质非常的好,村民们都抢着取井里的水。假定,取水时以家庭为单位,家庭的某人拿到号,其他的家庭成员过来打水,这时候不用再取号,如下图所示。
2025-10-30 20:06:09
735
原创 【场景题】List集合去重
必须正确实现 hashCode() 与 equals(),否则无法真正去重。Stream 是基于 “数据流管道(pipeline)” 的抽象实现。可以考虑分片去重(分批次放入 Set,再合并),降低内存峰值。每一层都是一个对象,每层都会包一层 lambda 表达式。,长度为 100 万,其中包含约 10% 的重复数据。速度更快,前提是去重像Integer这种简单数据。LinkedHashSet 是最优组合。数据流经时,这些层会逐一调用回调函数。当数据量 > 10^6 时。
2025-10-28 23:01:20
306
原创 【NebulaGraph】Nebula Importer使用
NebulaGraph Importer(简称 Importer)是一款 NebulaGraph 的 CSV 文件单机导入工具,可以读取并批量导入多种数据源的 CSV 文件数据,还支持批量更新和删除操作。支持多种数据源,包括本地、S3、OSS、HDFS、FTP、SFTP、GCS。支持导入 CSV 格式文件的数据。单个文件内可以包含多种 Tag、多种 Edge type 或者二者混合的数据。支持过滤数据源数据。支持批量操作,包括导入、更新、删除。
2025-10-22 23:21:01
737
原创 【项目问题排查】孟小哥捉虫
本文系统介绍了项目问题排查的方法论与实践指南。首先从整体分析思路出发,提出技术栈排查命令、双重视角分析、常规排查流程和诊断工具分类的完整框架。重点阐述了日志查看技巧,比较了cat/head/tail/vim/less/more等命令的适用场景,特别推荐less命令处理大文件日志。详细讲解了grep命令的高级用法,包括实时过滤错误(-f)、排除特定内容(-v)、查看上下文(-A/-B/-C)以及倒序搜索(tac)等实用技巧,并强调--line-buffered参数对实时监控的重要性。文章通过可视化示意图和具体
2025-10-20 22:22:59
368
原创 【JVM】线上JVM堆内存报警,占用超90%
摘要:线上JVM堆内存占用超90%触发告警,通过FullGC后老年代仍占用较高,确认存在内存泄漏。使用jstat监控内存使用情况,jmap分析发现大量Hadoop包的StatisticsData对象堆积。源码排查发现统计模块未正确释放资源,导致对象持续累积。最终定位为Hadoop统计模块资源未释放引发的内存泄漏,建议优化统计逻辑或增加清理机制。(149字)
2025-10-19 22:48:00
709
原创 【JVM】实战篇(一)
这篇JVM实战文章主要介绍了内存调优相关的内容。第一部分区分了内存泄漏(memory leak)和内存溢出(OutOfMemory)的概念,指出内存泄漏是对象不再使用但仍被引用导致无法回收,持续积累最终可能引发内存溢出。第二部分详细讲解了解决内存溢出的四个步骤,重点介绍了使用Linux的top命令分析系统资源使用情况,包括如何解读进程内存占用(RES常驻内存和SHR共享内存)以及关键系统指标(如CPU负载、内存使用率等)。文章还提供了内存泄漏的常见场景示例,如不及时清理用户请求数据或任务调度系统中的对象泄漏
2025-10-06 09:37:50
312
原创 【JVM】基础篇(一)
Java Virtual Machine 即Java虚拟机JVM本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件。JVM核心功能解释运行:实时将字节码指令翻译为机器码并执行,实现“一次编写,到处运行”的跨平台特性。内存管理:自动为对象、方法分配内存,并通过垃圾回收机制回收不再使用的对象,减少手动内存管理的风险。即时编译(JIT):对频繁执行的热点代码进行编译优化,将字节码直接转换为机器码缓存,提升运行性能。
2025-09-29 23:29:52
439
原创 【面试题】HTTP与HTTPS的区别
HTTP 协议,全称超文本传输协议(Hypertext Transfer Protocol)。顾名思义,HTTP 协议就是用来规范超文本的传输,超文本,也就是网络上的包括文本在内的各式各样的消息,具体来说,主要是来规范浏览器和服务器端的行为的。并且,HTTP 是一个无状态(stateless)协议,也就是说服务器不维护任何有关客户端过去所发请求的消息。这其实是一种懒政,有状态协议会更加复杂,需要维护状态(历史信息),而且如果客户或服务器失效,会产生状态的不一致,解决这种不一致的代价更高。
2025-09-28 14:35:19
282
原创 @Transactional 事务注解
1.Spring @Transactional 详解:何时使用、为什么使用、如何使用。当你需要执行多个数据库操作,且这些操作必须具备原子性(要么全部成功,要么全部失败)。2.工作 6 年,@Transactional 注解用的一塌糊涂!可以通过 rollbackFor 来修改默认规则。Spring 的事务管理主要基于。private 方法不生效。事务方法调用自身不会生效。
2025-09-25 23:45:35
1387
原创 【Spring Cloud Alibaba】Seata(一)
在传统架构中,基本都是单体应用,对应的数据库也是单库的形式,由于 MySQL、Oracle 数据库本身就具有事务机制,因此完全可以保证数据的一致性。而随着业务的变化,单体应用和单库越来越不满足发展的需求,可能会采取服务拆分、分库分表等优化手段,于是就出现了一个新的技术问题——分布式事务。本章将介绍分布式事务产生的原因,以及如何在微服务架构中引入 Alibaba Seata 组件来解决分布式事务。所有的数据访问技术都离不开事务处理,否则会造成数据不一致,在目前企业级应用开发中,事务管理是必不可少的。
2025-09-25 23:01:50
420
原创 【场景题】如何设计一个短链系统
我平时经常看极客时间上的专栏,上面的每一个专栏 URL 地址都有一个短链与之对应。比如你使用下面两个链接打开的都是《MySQL实战45 讲》这门课程。
2025-09-22 22:42:50
203
原创 【场景题】如何解决大文件上传问题
场景一:上传一个5G大小的视频,如果上传进度到达99%,然后突然网络断了,这个时候你发现需要重新上传,很抓狂,那么如何解决这个问题呢?答案:分片上传!什么是分片上传呢?简单来说就是先将文件切分成多个文件分片(如下图),然后再上传这些小的文件分片。前端发送所有文件分片之后,服务端将这些文件分片进行合并即可,这样就得到一个完整的文件。
2025-09-21 13:15:24
647
原创 【场景题】接口幂等
同一个接口在相同的输入下被多次调用,得到的结果应该是相同的,对系统状态的影响也应该是一致的。举个例子:查询接口:GET /user/1调用 1 次和调用 100 次,返回的结果(假设数据库没变)是一致的,没有副作用,这是天然幂等。下单接口:POST /order/create如果用户网络不好点了 2 次提交,系统就可能生成 2 个订单,这是 非幂等 的情况。接口幂等性问题,本质是如何避免重复请求导致的数据不一致。技术手段(唯一约束、锁、Token、幂等 Key)
2025-09-21 12:47:56
647
原创 【场景题】如何设计一个秒杀系统
秒杀系统主要是商品,这个秒杀活动会限制商品的个数以及秒杀持续时间。为什么秒杀系统的设计会是一个难点呢?是因为他的业务复杂吗?当然不是!秒杀系统的业务逻辑非常简单,一般就是下订单减库存,难点在于我们如何保障秒杀能够顺利进行。秒杀开始的时候,会有大量用户同时参与进来,因此秒杀系统一定要满足高并发和高性能。为了保证秒杀整个流程的顺利进行,整个秒杀系统必须要满足高可用。除此之外,由于商品的库存有限,在面对大量订单的情况下,一定不能超卖,还需要保证一致性。
2025-09-21 12:21:33
621
原创 【Spring AI】简单入门(一)
在当今这样一个快速发展的技术时代,人工智能(AI)已经成为各行各业的一种标配。而作为一款主流的Java应用开发框架Spring,肯定会紧跟时代的潮流,所以,推出了Spring AI框架。Spring AI 是一个面向 AI 工程的应用框架。它的目标是把 Spring 生态系统中的设计原则(例如可移植性、模块化设计等)应用到 AI 领域,并推动在 AI 应用中使用 POJO(普通 Java 对象)作为应用的构建模块。
2025-09-19 23:46:42
1803
原创 【Linux】常用命令(六)
修改官方源为阿里云、清华等镜像源,加快下载速度。enabled:是否启用(1=启用,0=禁用)[repositoryid]:仓库 ID。baseurl:仓库地址(可本地/网络)gpgcheck:是否检查 GPG 签名。gpgkey:GPG 公钥路径。
2025-09-16 17:02:13
641
原创 【Spring Cloud Alibaba】Sentinel(一)
Sentinel 是阿里巴巴开源的分布式系统的流量防护组件,主要用来做流量控制、熔断降级、系统保护。它的定位类似于Hystrix,但更侧重在流量治理上。目前在微服务、服务网关、大型分布式系统中广泛使用,Spring Cloud Alibaba 体系中也自带集成。🌟 Sentinel 的核心功能1.流量控制(限流)可以针对 QPS(每秒请求数)、并发线程数、调用关系等维度设置阈值。支持 匀速排队、预热模式、冷启动模式 等策略,避免突发流量冲击。2.熔断降级。
2025-09-04 21:28:09
601
原创 【计算机网络(自顶向下方法 第7版)】第一章 计算机网络概述
1.课程信息:【中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程】在介绍计算机网络体系架构的基础上,自上而下、以互联网为例系统地阐述了网络体系结构各层次的主要服务、工作原理、常用技术和协议,包括。4.课程简介:《计算机网络》mooc是2020年秋科大自动化系本科课程录制版,可与中科大学生一起完成专业知识的学习。2.教材:《计算机网络-自顶向下方法(第7版)》,机械工业出版社,2016。
2025-09-04 15:52:53
320
原创 【IntelliJ IDEA】插件分享
可以根据URL路径来路由到Controller方法,使用快捷键。这个插件会自动生成所有的setter方法。写代码的时候,可以自动注入Bean。会直接生成拼接好的MySQL语句。可以快速生成Arthas 命令。
2025-09-02 22:25:18
312
原创 使用LoadBalancer替换Ribbon(五)
Spring Cloud LoadBalancer是Spring Cloud官方自己提供的客户端负载均衡器,用来替代Ribbon。RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。默认情况下,RestTemplate默认依赖jdk的HTTP链接工具。
2025-09-01 21:30:14
406
原创 【微服务负载均衡器】Ribbon
集中式负载均衡器,在消费者和服务提供方中间使用独立的代理方式进行负载,有应该的(比如F5)还有软件的如Nginx客户端根据自己的请求情况做负载均衡,Ribbon就属于客户端自己做负载均衡Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端的负载均衡工具,Ribbon客户端组件提供一系列的完善的配置,如超时,重试等。通过Load Balancer获取到服务提供的所有机器实例,Ribbon会自动基于某种规则(轮询,随机)去调用这些服务。
2025-08-31 21:37:59
438
原创 【Spring Cloud Alibaba】前置知识(一) 01
随着互联网的发展,网站应用的规模也在不断的扩大,进而导致系统架构也在不断的进行变化。从互联网早期到现在,系统架构大致经过下面几个过程:单体应用架构->垂直应用架构->分布式架构->SOA架构->微服务架构,当然还有现在的Service Mesh(服务网格化)。
2025-08-29 22:01:41
232
原创 【多模块项目】说明、启动、部署等问题
所谓多模块项目就是父子结构的Spring Boot项目,其父项目(parent project)中一般只定义 依赖管理(dependencyManagement)、统一版本号、插件配置等,不写代码、不写启动类,作用就是作为一个 “骨架”,让子项目继承。🚀 业务服务模块:有 @SpringBootApplication 启动类,可以单独运行成微服务。这些模块会被其他子项目引入,提供 复用代码,所以 不需要启动类。📦 父项目:只管依赖和版本,没有代码和启动类。🚀 网关模块:有自己的启动类,作为入口。
2025-08-28 11:21:02
517
原创 【Linux】常用命令 拥有者和权限(四)
所以 -rwxr-xr-- → 754。在Linux中,每个文件和目录都有。数字法(八进制):如 754。
2025-08-27 16:19:46
380
原创 【JVM】Java OOM问题排查
内存溢出代码截图,在递归替换参数时,某些情况下map中两个key值有包含关系时,未超过50次递归时就内存溢出。上传gc⽇志后,⽹站会根据内存分析相关参数,可视化排查GC、内存使⽤情况。3.改造代码,解决上层⼊参map的两个key包含关系。1.递归调时必须增加限制次数,防⽌死循环oom。2.将50改为10,减少循环次数。服务不可用,通过日志排查问题。
2025-08-24 17:41:21
583
原创 【NFTurbo】基于Redisson滑动窗口实现验证码发送限流
服务在登录和注册的时候需要短信验证,为了防止被灰黑产抓包盗刷,需要限制次数,这里我们在前端做了按钮的置灰,但是后端接口还是要做防控的。
2025-08-20 21:46:30
513
原创 【SkyWalking】单节点安装
Apache SkyWalking 是一个 开源的 APM(应用性能监控)与可观测性平台,主要用于 分布式系统的链路追踪、性能分析和服务监控。🔑 主要功能分布式链路追踪追踪跨服务的调用链路(类似 Zipkin/Jaeger,但功能更丰富)。支持调用链可视化,查看请求在不同服务之间的传播路径。性能监控 (APM)监控服务的响应时间、吞吐量、错误率。提供拓扑图,展示服务依赖关系。指标与告警内置指标:CPU、内存、GC、线程池、数据库调用、MQ 等。
2025-08-18 21:07:21
1032
原创 【Linux】常用命令(三)
本文介绍了Linux系统中两个常用命令的用法。export命令用于设置环境变量并传递给子进程,详细说明了其原理、语法格式和变量作用范围,包括临时和永久生效的方法。网络测试命令部分介绍了四种检测服务端口连通性的方法:nc命令可快速扫描单个或多个端口状态;telnet命令适合测试端口连接;nmap是功能强大的网络扫描工具;curl则专门用于测试HTTP/HTTPS服务。这些命令为系统管理和网络调试提供了实用工具,能满足不同场景下的端口检测需求。
2025-08-13 22:23:38
633
原创 【Maven】pom依赖的版本推荐与依赖冲突问题
其实这个是我头疼已久的问题,主要每次一个新项目或者旧项目中,依赖的第三方的包不知道选什么版本,比如SpringBoot的版本是2.7.18,那么Redis、MySQL、Kafka、Guava、Druid等等应该使用什么版本呢?使其完美兼容,且第三方包之间又不冲突!经过查找资料得知,官方有相关的版本推荐 https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-dependencies/比如我目前在做的项目SpringBoot的版本
2025-08-11 19:32:36
482
原创 【NFTurbo】基于DockerCompose一键部署
如果回显返回docker-compose版本信息,表示docker-compose已安装成功。命令用于显示 Linux 系统的详细版本信息。运行以下命令,验证docker-compose是否安装成功。执行以下命令,启动Docker服务,并设置开机自启动。运行以下命令,安装docker-compose。运行以下命令,下载docker-ce的yum源。执行以下命令,检查Docker是否安装成功。运行以下命令,安装setuptools。运行以下命令,安装Docker。
2025-08-08 17:03:17
634
原创 【NFTurbo】代码结构分析
这些依赖如果你引入了,就不用再写 ,版本会自动使用这个 BOM 中定义好的。内部依赖的版本兼容性(比如和 Spring Boot 的配套版本)🔍 BOM(Bill of Materials)是什么?,可以不用再写 ,会自动使用这里指定的 2.7.5。BOM 是一种专门用于版本对齐的 POM 文件。这个配置的含义是:所有子项目中,如果使用了。🧪 示例:搭配 Spring Boot 使用。各个 starter 的版本。
2025-08-07 16:15:33
856
原创 【JMeter】基本使用教程
JMeter(Apache JMeter)是 Apache 软件基金会开发的一款开源的 性能测试工具,主要用于对 Web 应用、接口、数据库、FTP、邮件服务等各种服务进行负载测试、性能测试、压力测试和功能验证。属性内容名称类型开源性能测试工具编程语言Java官网支持平台跨平台(Windows、Linux、macOS)
2025-08-04 19:57:40
1324
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅