自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(173)
  • 收藏
  • 关注

原创 OceanBase的学习详解及安装教程

OceanBase是蚂蚁集团自主研发的国产分布式数据库,在TPC-C和TPC-H测试中多次刷新世界纪录。2023年发布的4.1版本性能显著提升,支持MySQL 8.0兼容等新功能。安装部署简单,可通过all-in-one包快速搭建单机环境。OceanBase具有高可靠、高性能、高扩展等优势,支持全球化部署和多语言接口,安全性强。其与Oracle数据库高度兼容,数据类型、SQL功能等基本一致,PL功能基本全覆盖,降低了用户迁移学习成本。OceanBase已成为真正的通用型企业级分布式数据库解决方案。

2025-12-16 21:59:20 310

原创 Java 最容易踩坑的 OOM 问题全解析:案例、排查与预防

Java OOM问题分析与解决策略 摘要:本文分析了Java开发中常见的OutOfMemoryError(OOM)问题,重点探讨了三种主要类型:堆内存OOM、方法区OOM和虚拟机栈OOM。通过具体案例演示了各类OOM的产生场景,并提供了详细的排查方法:使用堆转储分析内存泄漏、监控Metaspace使用情况、检查线程栈信息等。文章还给出了预防OOM的通用策略,包括合理配置JVM参数(堆大小、Metaspace限制、线程栈大小)、设置内存快照自动生成机制以及使用APM工具进行监控预警。这些方法可帮助开发者快速定

2025-11-02 21:31:56 660

原创 Docker磁盘满了?这样清理高效又安全

摘要:Docker运行会积累大量临时资源(停止的容器、悬空镜像、缓存等),导致磁盘空间不足。核心解决方案是使用docker system prune命令,可一键清理无用资源,支持可选参数(如-a清理所有未用镜像,--volumes删除数据卷)。使用时需注意安全风险,建议首次交互式执行确认删除内容,生产环境慎用-a和--volumes。清理前后可用docker system df查看磁盘占用变化。定期执行该命令能有效预防磁盘满问题。

2025-11-01 21:30:40 550

原创 Linux 磁盘空间“消失”之谜:文件已删,空间却不释放?

摘要: Linux中删除文件后空间未释放?这是因进程仍占用已删除文件(显示deleted状态)。解决方法: 定位进程:lsof +L1查看占用文件的进程。 释放空间:优雅重启进程(如nginx -s reload)或强制终止(慎用)。 预防措施:使用logrotate轮转日志、避免直接重定向日志、监控未释放文件。 关键命令:lsof +L1 | grep deleted 可快速定位问题进程。

2025-11-01 20:56:00 483

原创 QPS 10 万,任务接口耗时 100ms,线程池如何优化?

接口吞吐量:QPS 高达 100,000(10 万)个任务处理平均耗时:100ms每个请求都需要进线程池执行处理逻辑(比如发通知、写日志、异步落库等)要求整体系统稳定、响应快、资源利用率高如果不加优化,线程池很容易撑爆 CPU 和内存,甚至引发系统雪崩。面对 QPS 10 万、任务耗时 100ms 的高并发场景,线程池优化是重中之重。我们从业务特性出发,结合线程池的核心参数配置,设计了合理的任务分发机制。优化线程池的关键在于:限制并发、提升单线程效率、合理拒绝请求、异步批处理。

2025-11-01 20:44:33 927

原创 Jmeter压力测试详解:从入门到实战

摘要: 本文介绍了如何使用JMeter进行专业的压力测试,从核心概念到实战步骤。重点包括:(1)压力测试核心指标(吞吐量、响应时间、错误率等);(2)四步搭建基础压测脚本(安装、线程组配置、取样器与监听器);(3)进阶技巧如参数化、动态数据处理、断言验证和分布式测试;(4)结果分析方法与瓶颈定位;(5)避坑指南与最佳实践。文章强调压力测试的目的是发现系统瓶颈、优化性能并保障稳定性,而非单纯追求高并发数字。

2025-11-01 20:30:53 736

原创 日常工作,MQ的8种常用使用场景

我们日常开发中,经常跟MQ(消息队列)打交道。本文梳理了MQ的8种使用场景。

2025-02-04 22:50:56 1399

原创 linux自动分区后devmappercentos-home删除后合并到其它分区上

因为释放了 home卷组所占用的硬盘,所以vg卷组有了剩余的容量。删除其他分区,合并到对应分区上增加磁盘空间。删除执行成功磁盘容量已经全部都在/ 目录下。添加到 /root卷组中。linux自动分区后。

2025-01-14 14:15:45 503

原创 RocketMQ、Kafka、RabbitMQ,如何选型?

分布式、微服务、高并发架构中,消息队列(Message Queue,简称MQ)扮演着至关重要的角色。消息队列用于实现系统间的异步通信、解耦、削峰填谷等功能。目前常见的MQ实现包括RabbitMQ、RocketMQ和Kafka。RocketMQ、Kafka、RabbitMQ如何选择?

2025-01-13 22:21:33 2574 1

原创 MySQL 中删除重复数据 SQL 写法

要在 MySQL 中删除重复的数据并只保留一条,可以使用下面的方法(要用的时候直接复制小改下条件和表名称即即可)

2025-01-11 22:59:03 933

原创 实现高并发秒杀的 7 种方式

一、二方式是在代码中利用锁和事务的方式解决了并发问题,主要解决的是锁要加载事务之前三、四、五方式主要是数据库的锁来解决并发问题,方式三是利用for upate对表加行锁,方式四是利用update来对表加锁,方式五是通过增加version字段来控制数据库的更新操作,方式五的效果最差六、七方式是通过队列来解决并发问题,这里需要特别注意的是,在代码中不能通过throw抛异常,否则消费线程会终止,而且由于进队和出队存在时间间隙,会导致商品少卖上面所有的情况都经过代码测试,测试分一下三种情况:

2025-01-11 22:51:00 1287

原创 异步调用实践:Async,Future, TaskExecutor、EventListener

在Spring Boot中,实现异步调用可以通过多种方式,包括@Async注解、、自定义以及结合进行异步事件处理。每种方式都有其适用场景和优缺点,开发者应根据实际需求选择最合适的方法。同时,使用异步调用时需要注意线程安全、异常处理以及合理配置异步。

2024-08-12 22:21:26 879

原创 什么是熔断降级?说 4 种解决方案

在复杂的微服务架构中,一个服务的故障可能会导致整个系统的崩溃,从而造成连锁反应。通过实施熔断降级机制,系统可以在服务发生故障时将故障隔离,防止它扩散到其他服务或组件,从而保护整个系统的稳定性。

2024-06-15 22:40:20 1963

原创 为什么MySQL需要binlog、undo log、redo log 3种日志?

在正式进入主题之前,我们先看一张 MySQL的架构示意图:上述示意图中的红色字体:binlog、undo log、redo log 就是我们今天的主角。binlog是 server层生成的日记,而 undo log、redo log 是Innodb 存储引擎层生成的日志undo log(回滚日志):是 Innodb 存储引擎层的逻辑日志,实现了事务中的原子性,主要用于事务回滚和 MVCC。

2024-06-02 23:32:21 795

原创 Redis 为什么这么快?

本文从数据结构、网络模型、持久化机制和内存管理等多个角度分析了 Redis 的高性能原因。正是这些优秀的设计理念和实践,使得 Redis 成为了一款高性能的内存数据库,受到了越来越多开发者的青睐。希望本文对您了解 Redis 的高性能原理有所帮助。

2024-06-02 22:36:42 920

原创 Nginx 七大应用场景(附配置)

应用场景7:基于请求路径转发不同服务。应用场景6:手机端重定向PC端。应用场景2:反向代理。应用场景3:负载均衡。

2024-05-20 21:41:03 580

原创 Hystrix从入门到源码分析

Hystrix 通过这些核心类和接口实现了断路器模式,提供了线程池隔离、请求缓存、服务降级等功能。每个命令在执行时都会被封装为一个 HystrixCommand 实例,并在一个独立的线程池中执行。CircuitBreaker 根据 HystrixCommandMetrics 提供的度量数据来决定是否跳闸。这些组件协同工作,确保了分布式系统在面对服务故障和延迟时的健壮性和弹性。

2024-04-19 22:42:24 1131

原创 微服务鉴权的几种实现方案

刚开始接触微服务时网上给的方案大都数是通过透传Token做鉴权,但我认为这种方式不是很妥当。接着往下看:这种方式通过透传Token使得各微服务都能获取到当前登录人信息,在代码编写上确实可能会方便,但我认为这不是一种很好的设计方式。换句话说:B服务提供API时不因该关心当前是否为登录状态,登录状态应该由路由中的第一个服务校验维护,在调用后续服务时应该显示的传入相关参数。

2024-03-23 22:20:19 2266

原创 Linux下最常用的MySQL运维脚本

MySQL数据库的运维工作需要一系列的操作,包括性能优化、备份、复制管理、版本升级、权限管理、安全性和自动化。通过编写适当的脚本,可以更高效地管理和维护MySQL数据库,确保其稳定性和安全性。本文提供了更多的示例代码和详细说明,以帮助深入了解如何使用脚本进行MySQL运维。

2024-03-16 22:32:31 1411 1

原创 常用负载均衡详解

在互联网场景下,负载均衡(Load Balance)是分布式系统架构设计中必须考虑的一个环节,它通常是指将负载流量(工作任务、访问请求)平衡、分摊到多个操作单元(服务器、组件)上去执行的过程。目的在于提供负载配比,解决性能、单点故障(高可用)和扩展性(水平伸缩)等问题。

2024-03-16 20:42:43 2004

原创 SpringBoot 整合 Kafka 实现千万级数据异步处理

在之前的文章中,我们详细的介绍了的架构模型,在集群环境中,可以通过设置分区数来加快数据的消费速度。光知道理论可不行,我们得真真切切的实践起来才行!下面,我将结合生产环境的真实案例,以SpringBoot技术框架为基础,向大家介绍的使用以及如何实现数据高吞吐!

2024-03-13 23:07:37 3036

原创 SpringBoot 中实现订单30分钟自动取消的策略

以上三种方案都可以实现订单在30分钟内未支付则自动取消的需求。根据实际业务需求、系统负载和其他因素,可以选择最适合自己系统的实现方案。每种方案都有其优缺点,需要根据具体情况权衡。

2024-03-13 21:35:03 632

原创 这些年背过的面试题——SpringMVC篇

SpringMVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。

2024-03-12 22:43:16 979

原创 二叉树遍历详解

从根节点往下查找,先找左子树、直至左子树为空(左子节点逐个入栈、直至左子节点为空),再找右子树(出栈找右子节点)前序遍历:根左右,第一次经过节点即打印,直到打印null,往回溯,打印右子树中序遍历:左根右,第二次经过该节点时进行打印,即左边回溯时后序遍历:左右根,第三次经过该节点时进行打印,即右边回溯时层序遍历:按照层级,从上往下,从左到右。使用广度优先搜索算法。

2024-03-10 21:11:59 473

原创 滑动窗口算法

滑动窗口作为一个考点较高的算法,广泛应用于子串问题中,本文将进行详细讲解。

2024-03-07 21:49:30 1224

原创 MQ如何防止消息被重复消费?

被询问如何防止MQ消息被重复消费时,其实是在考察候选人对消息队列、分布式系统设计以及容错机制的理解,通过这些问题,可以全面了解候选人在处理MQ消息重复消费问题时的思考方式、技术能力和实践经验,从而评估其是否适合担任相关岗位。

2024-03-03 20:48:37 4283

原创 对程序、进程、线程、并发、并行、高并发概念的讲解

程序、进程、线程、并发、并行和高并发是计算机科学领域中非常重要的概念

2024-03-02 22:39:06 1225

原创 ThreadLocal 为什么会内存泄漏吗?是怎么产生的?

ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的变量值完成操作的场景

2024-03-02 03:30:00 1109

原创 熔断、隔离、重试、降级、超时、限流,高可用架构流量治理核心策略全掌握

在探讨高可用架构之前,让我们以 O2 系统为例,解释一下何谓可用性。O2 是腾讯内部的一个广告投放系统,专注于提升投放效率、分析广告效果,拥有自动化广告投放、AIGC 自动化素材生产等多种功能。高性能;高可用;易扩展。理解高可用时,通常参考两个关键指标平均故障间隔(Mean Time Between Failure,简称 MTBF):表示两次故障的间隔时间,也就是系统正常运行的平均时间,这个时间越长,说明系统的稳定性越高;

2024-02-29 23:15:09 1511

原创 SQL硬核调优

在应用的的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多 SQL 语句开始逐渐显露出性能问题,对生产的影响也越来越大,此时这些有问题的 SQL 语句就成为整个系统性能的瓶颈,因此我们必须要对它们进行优化。

2024-01-30 15:52:22 1308 1

原创 JVM性能调优

吞吐量:重要指标之一,是指不考虑垃圾收集引起的停顿时间或内存消耗,垃圾收集器能支撑应用达到的最高性能指标。延迟:其度量标准是缩短由于垃圾啊收集引起的停顿时间或者完全消除因垃圾收集所引起的停顿,避免应用运行时发生抖动。内存占用:垃圾收集器流畅运行所需要 的内存数量。这三个属性中,其中一个任何一个属性性能的提高,几乎都是以另外一个或者两个属性性能的损失作代价,不可兼得,具体某一个属性或者两个属性的性能对应用来说比较重要,要基于应用的业务需求来确定。合理的JVM调优可以显著提升应用的性能和稳定性。

2024-01-29 22:49:30 1038

原创 压力测试JMeter

Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和FTP服务器等等。JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能。同时,JMeter可以帮助你对你的应用程序进行回归测试。

2024-01-16 22:10:18 1469

原创 linux如何排查cpu持续飙高原因

首先在Linux系统中检查CPU使用率。可以通过在命令行中输入top或htop命令来查看当前系统中各个进程的CPU使用率。如果CPU使用率大于80%,则可以考虑进行排查。$ top。

2024-01-16 10:51:34 1695

原创 SpringBoot拦截器、过滤器、自定义注解、监听器、全局异常-使用详解

自定义一个注解,为该注解加一个参数name=kaifamiao,然后在拦截器里获取这个name要在Spring Boot中实现这个功能,你需要创建一个自定义注解,并在拦截器中读取这个注解的参数值。首先,创建一个自定义注解。在这个例子中,我们将创建一个名为的注解,它有一个名为name的参数。

2023-12-02 20:11:05 820

原创 vue项目的环境准备与创建详情

即可安装npm镜像源以后再用到npm的地方直接用cnpm来代替就好了,因为没有镜像源的话,安装速度比较慢cnpm -v。

2023-11-08 22:20:44 412

原创 Redis缓存击穿、缓存穿透和缓存雪崩的详解

在高并发的系统中,缓存是提高性能和减轻数据库压力的重要手段之一。Redis作为一种常用的缓存解决方案,被广泛应用于各种系统中。然而,当缓存使用不当或者面对特定的情况时,可能会出现缓存击穿、缓存穿透和缓存雪崩等问题。本文将详细介绍这三个问题的概念、原因和解决方法,并提供详细的Java示例代码。

2023-11-01 23:23:41 523 1

原创 JAVA基础知识-内部类

内部类概念 - 在一个类中定义一个类。举例:在一个类A的内部定义一个类B,类B就被称为内部类

2023-08-12 23:13:36 264

原创 磁盘空间100%时,简单的处理办法。

no space left on device的意思是:设备没有剩余空间,磁盘空间不足。当我们发现磁盘空间已满的时候,往往我们要去删部分日志文件,但有不知道那些文件占用磁盘较大时,下面就是查看磁盘情况,和查找那些文件占用磁盘较大,并如何删除部分日志文件。

2023-08-12 11:03:48 626

原创 JAVA基础知识-进制的介绍与书写格式

计算机中的数据,都是以二进制补码的形式在运算,而补码则是通过反码和原码推算出来的。

2023-07-31 22:53:30 1176

原创 彻底理解Java中的各种锁

假定当前环境是读多写少,遇到并发写的概率比较低,读数据时认为别的线程不会正在进行修改(所以没有上锁)。写数据时,判断当前 与期望值是否相同,如果相同则进行更新(更新期间加锁,保证是原子性的)。,比较并替换,比较当前值(主内存中的值),与预期值(当前线程中的值,主内存中值的一份拷贝)是否一样,一样则更新,否则继续进行CAS操作。如图所示,可以同时进行读操作,读的时候其他线程不能进行写操作。

2023-07-30 20:54:05 644

空空如也

空空如也

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

TA关注的人

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