自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(137)
  • 问答 (2)
  • 收藏
  • 关注

原创 Prometheus监控配置

组件作用提供监控端点基础将指标转为 Prometheus 格式控制哪些端点对外暴露Prometheus 抓取地址✅ 按上述配置后,你的 Spring Boot 应用就能被 Prometheus 正确监控了。如需进一步定制指标(如自定义业务指标),可使用注入并打点。需要示例可继续提问!

2025-11-05 09:41:36 290

原创 记录一次 堆内存分析报告

从堆内存分析中可以看到,有大量的MongoDB相关对象(如org.bson.BsonBinaryReader$Context、org.bson.Document)。检查业务模型(如NewEgoInfo)中是否有字段是字节数组类型,或者有大量数据以字节数组的形式存储。如果应用中有缓存,且缓存的对象是字节数组形式(例如缓存图片、文件等),也会导致字节数组内存占用高。如果日志记录中大量使用字节数组,例如将异常堆栈或大对象转换为字节数组记录,也可能导致内存占用。Full GC情况:执行43次,但老年代仍持续增长。

2025-11-03 15:00:48 232

原创 如何排查对象占用堆内存问题

推荐的操作顺序:立即诊断:使用快速查看深度分析:运行获取详细报告持续监控:部署实时监控脚本根本解决:根据分析结果优化代码字节数组 ([B) - 通常是大文件或序列化数据字符串对象 - 字符串处理逻辑业务对象 (BCtosVO等) - 业务逻辑中的对象创建集合对象 (HashMapArrayList等) - 数据存储结构请先运行最简单的命令,我可以帮您分析输出结果并提供具体的优化建议。

2025-11-03 14:26:23 389

原创 记录一次线上oom问题排查

截图显示的内存使用情况表明,存在大量的。

2025-10-21 21:04:37 1737

原创 kubectl cp使用方法

文件从 Pod 中拷贝到当前目录。

2025-10-21 14:11:32 214

原创 信息系统项目管理师(高项)3个月学习计划表

信息系统项目管理师(高项)3个月学习计划表

2025-10-09 16:54:19 908

原创 《信息系统项目管理师》考试指南

虽然你是技术背景,但“信息系统项目管理师”不仅能帮你,还能系统提升你的,为未来转型打下坚实基础。

2025-10-09 15:48:50 720

原创 etl介绍

维度说明位置数据源与目标系统之间的“数据加工厂”功能实现数据集成、质量提升、结构化处理技术栈批处理(Hive, Spark)、流处理(Flink)、调度(Airflow)发展趋势从传统 ETL 向实时化、自动化、ELT、云原生演进✅简单一句话总结ETL 是大数据架构中的“数据搬运工 + 美容师”,位于数据采集之后、数据分析之前,负责把“脏乱差”的原始数据变成“干净整齐”的可用数据。

2025-09-24 11:09:12 422

原创 信息系统项目管理师(高级软考) 的完整备考路线和考纲重点

好嘞 👍,我给你整理一份。

2025-09-23 11:57:57 568

原创 结合大数据知识体系对仓库建模方法总结

核心思想未变:维度建模依然是追求查询性能和易用性的核心方法论。技术载体进化:基于数据湖、使用列式存储、通过分布式计算构建。架构模式扩展:采用分层设计和批流一体的方式加工数据。管理要求更高:必须与数据治理紧密结合,才能保障大规模数据模型的有效性。最终,所有建模工作都是为了将庞大、原始、混乱的数据,有序地组织成易于理解和高效访问的信息,从而释放大数据的价值。

2025-09-09 21:02:09 971

原创 数据库三大范式(1NF、2NF、3NF)的详细讲解

即非主属性不能依赖其他非主属性。(非主属性仅依赖主键的一部分)。)要求表中的每个字段都必须是。)在满足1NF的基础上,要求。)在满足2NF的基础上,要求。

2025-09-09 15:42:19 756

原创 JVM 终止机制详解:用户线程与守护线程

用户线程未执行完是否会阻止 JVM 终止?。

2025-08-07 14:11:09 382

原创 AsyncAppende异步 + 有界队列 + 线程池实现高性能日志系统

同步日志写入方式存在主线程阻塞风险,可能引发系统吞吐量下降和响应延迟。历史问题包括服务重启失败、接口超时等。优化目标是将日志系统迁移至NFS存储,结合异步机制提升性能。该方案通过异步化架构设计,有效平衡了性能与可靠性需求,实测显示关键指标显著提升。后续可结合具体业务场景进一步优化队列管理策略。

2025-08-06 20:53:50 461

原创 G1系统概括

G1(Garbage-First)垃圾回收器是为现代多核处理器设计的一种服务器端垃圾收集器,旨在满足应用程序对低延迟和高吞吐量的需求。它在Java 7 Update 4及之后的版本中引入,并从Java 9开始成为默认的垃圾收集器。下面是对G1垃圾回收器的一个系统介绍。

2025-08-05 21:01:47 382

原创 G1垃圾回收堆内存分配问题

在 G1 GC 中,虽然没有明确的“最大阈值”来限定 Eden 区或新生代区的大小,但是通过 JVM 参数如和,你可以间接控制新生代以及其中 Eden 区域的大小范围。G1 会根据应用的需求动态调整这些区域的大小,以优化性能并满足设定的暂停时间目标。因此,在配置 G1 GC 时,理解这些参数的作用对于调优至关重要。尽管-Xms4g设置了初始堆大小为 4GB,但由于 G1 GC 的特性,堆并不是一次性全部分配给某个特定区域(如老年代),而是根据实际需要动态调整各区域大小。因此,在jstat -gc。

2025-08-05 21:00:29 642

原创 查看部署在K8S服务的资源使用情况

目标命令实时 CPU/内存使用资源请求/限制JVM 内部 GC 状态堆内存详情日志分析✅ 推荐先运行,这是最直接的方式。如果你还没有安装,请联系集群管理员安装,否则无法使用。

2025-08-05 20:23:37 1016

原创 JIT分层编译、逃逸分析和内联参数

我将详细解释JVM中的三大关键优化技术:JIT分层编译、逃逸分析和内联参数,以及它们如何协同工作提升Java应用性能。

2025-07-30 12:30:50 786

原创 一次jstat -gc记录

根据jstat -gc。

2025-07-29 20:03:01 273

原创 Java 应用常见线上故障分析

Java 应用程序由于内存泄漏或资源管理不当,导致内存耗尽,无法分配新对象时抛出该错误。常见于堆内存不足或直接内存(Direct Memory)耗尽。未释放不再使用的内存空间,导致内存资源逐渐耗尽。典型场景包括静态集合持有对象、未关闭的流、ThreadLocal 滥用等。应用程序异常占用大量 CPU 资源,可能由死循环、频繁 GC、算法复杂度高或锁竞争导致。常见于嵌套同步锁或锁顺序不一致。图形化监控堆内存、线程、类加载等指标,支持远程连接。可视化分析内存泄漏,支持堆转储文件离线分析。

2025-07-21 16:56:25 378

原创 jcmd用法总结

的详细用法总结,涵盖其核心功能、常用命令、实际应用场景及注意事项,帮助你高效进行 JVM 性能监控和故障排查。,你可以高效定位 JVM 性能瓶颈、排查内存泄漏和线程问题。等工具,能进一步提升诊断能力。

2025-07-21 16:54:29 998

原创 jps用法整理

(JVM 进程状态工具),是 JDK 提供的用于查看当前系统中运行的。命令的详细教学,涵盖其基本用法、参数说明、实际应用和常见问题解析。及其相关工具,可以高效地定位和解决 Java 应用的性能问题。它可以列出 Java 进程的。

2025-07-21 11:24:03 1137

原创 Spring Boot Security过滤流程

通过以上流程和代码示例,你可以灵活配置 Spring Boot Security 的请求处理流程,满足复杂的业务需求。定义)依次执行,形成一个完整的安全处理流程。这些过滤器按照特定的顺序(通过。中,请求的处理流程是通过一系列。

2025-06-24 15:26:06 544

原创 Redis中的fork操作

Redis使用fork子进程实现持久化(RDB快照和AOF重写)和主从复制,通过写时复制技术共享内存页,避免阻塞主进程。fork虽高效,但大内存实例可能导致延迟和内存占用问题,可通过关闭Huge Page、优化数据结构、合理配置持久化频率等措施缓解。应监控fork耗时和内存使用,确保系统稳定性。

2025-06-03 17:10:15 1293

原创 Redis中SETNX、Lua 脚本和 Redis事务的对比

在 Redis 中,SETNX、Lua 脚本 和 Redis 事务 均可用于实现原子性操作,但各有其适用场景和局限性。SETNX 适用于简单的单键操作,如分布式锁,但无法处理多键或复杂逻辑。Lua 脚本则适用于多键操作和条件判断,能够保证全局原子性,但需要编写脚本并可能带来性能开销。Redis 事务适用于批量操作,但不支持条件逻辑且部分命令失败时不会回滚。Spring Data Redis 默认不提供原子性保障,需通过 Lua 或事务显式实现。Redisson 的 putIfAbsent 方法通过 SETN

2025-05-20 17:07:46 1037

原创 RedissonClient主要功能概述

在实际应用中,可以根据业务需求选择合适的组件,并结合 Redis 的集群、Sentinel 等模式实现高可用和高性能的分布式系统。Redisson 提供了多种线程安全的分布式集合和映射,适用于分布式环境下的数据存储和操作。Redisson 提供了多种锁和同步机制,用于解决分布式环境下的并发问题。

2025-05-20 16:45:57 1346

原创 Redis中的事务和原子性

Redis 中的事务和原子性是保证操作一致性和可靠性的关键。Redisson 和 Spring Data Redis 在处理原子性操作时有显著区别。Redisson 通过封装 Lua 脚本或 Redis 事务,简化了开发,适合分布式集合操作和锁场景。Spring Data Redis 则需开发者显式使用 Lua 脚本或事务,适合高性能缓存和复杂业务逻辑。Redisson 默认线程安全,开发简单但可能引入额外开销;Spring Data Redis 性能更高,但开发复杂度较大。选择工具时,应根据具体需求决定:

2025-05-20 16:10:09 1316

原创 Redisson分布式集合原理及应用

接口继承:RMap实现了和接口,这意味着它可以像普通的Java Map一样使用,并且支持并发操作。功能特性支持异步、非阻塞的操作方法,例如putAsyncgetAsync等。提供了原子性操作,如replaceremove等。支持键值对的过期时间设置,可以为每个键单独设定有效时间和最长闲置时间。支持本地缓存,可以在客户端缓存一些数据以减少网络请求次数。具有写入策略选项,比如WRITE_BEHIND,适合在高负载情况下优化写入性能。

2025-05-20 15:13:43 1193

原创 OkHttp连接池

连接池的配置对应用性能至关重要,尤其是在高并发场景下。通过调整最大空闲连接数和连接保持时间,可以有效优化网络请求处理。最大空闲连接数建议根据并发量设置为10~50,连接保持时间通常为1~5分钟。示例代码展示了如何在Java中使用OkHttpClient自定义连接池,并建议在Spring Boot中注册为Bean以便复用。此外,避免连接池过大和复用OkHttpClient实例是提升系统稳定性的关键。调试时,可以通过打印连接池状态来监控其运行情况。

2025-05-14 17:47:45 1565

原创 Kubernetes 集群中对应的 Secret 对象如何修改

要更改的值,您需要更新 Kubernetes 集群中对应的 Secret 对象。首先,确认mongodbSecret 的当前内容。

2025-04-17 15:43:35 646

原创 代码提错分支处理方法

如果一切顺利,这个提交将会被成功地应用到正式分支。假设你想要将“Add new feature X”(commit ID: abc1234)应用到正式分支。这样你就成功地将一个特定的提交从测试分支应用到了正式分支,而没有引入其他不必要的更改。

2025-04-15 17:50:46 244

原创 git强制回滚到指定版本

请注意,强制推送会覆盖远程仓库中的所有更改,因此在执行此操作之前,请确保你已经备份了所有重要的更改,并且团队成员都了解这一操作的影响。要将远程分支强制回滚到指定版本(commit hash 为。),可以使用 Git 的命令行工具。确保你是在正确的分支上,例如。

2025-03-25 14:54:58 663

原创 RecursiveTask, ForkJoinTask和FutureTask对比

是一种特殊的,适用于可以递归分解的任务,并能返回计算结果。是所有 fork/join 任务的基础类,支持任务的并行执行,特别适合于能够被细分为更小部分的工作负载。FutureTask则提供了一个通用的方法来包装可调用对象(Callable),使其能够在后台线程中执行,并在未来某个时间点获取执行结果。如果任务是可以被有效分割成多个较小部分的,那么或者更广泛的可能是最合适的选择。而对于只需要简单异步执行的任务,FutureTask可能就足够了。

2025-03-13 16:13:10 874

原创 同步线程池实现方式

在Java中,确保线程池中的所有任务都执行完毕之后再继续下一步操作是一个常见的需求。实现同步线程池的方式通常涉及到使用Java的接口以及其实现类,如。同步线程池的概念可能指的是确保所有提交给线程池的任务在继续执行后续代码之前已经完成。

2025-03-11 11:40:07 344

原创 ForkJoinPool.commonPool() 的使用场景

并行流 (Fork/Join 框架任务。的默认线程池。第三方库或框架的并发任务。由于其线程数量有限且默认配置适合 CPU 密集型任务,因此在使用时需要特别注意任务类型和资源消耗,必要时应创建自定义线程池以满足特定需求。

2025-03-10 14:38:45 897

原创 Java 中实现异步的方式

线程池):适用于一般的异步任务。:适用于复杂的异步操作和链式调用。:适用于可以分解成多个子任务并行处理的场景。Callable和Future:适用于需要获取任务结果的场景。:适用于定时任务和周期性任务。根据具体需求选择合适的异步处理方式,可以提高程序的性能和可维护性。希望这些示例对你有所帮助!如果有更多问题或需要进一步的帮助,请随时提问。

2024-11-26 20:59:29 3330 2

原创 Rysnc安装方法

这将会安装 gcc 和其他一些必需的编译工具。如果在编译或安装过程中遇到任何问题,请根据提示的错误信息来解决,或者查找与具体问题相关的资源。请确保系统中安装了编译工具,比如 Xcode Command Line Tools。在 macOS 系统中,默认情况下并没有预安装。是 macOS 系统自带的工具,它可以完成与。下载完毕后,你可以按照以下步骤来编译和安装。使用服务器指定的文件名来保存下载的文件。

2024-02-06 12:51:55 664

原创 Spring Boot中如何实现bean加载

如果满足条件,返回true,表示条件满足,对应的bean将被创建;上述代码中,@Configuration注解表示该类是一个配置类,@Bean注解表示创建一个bean对象。在这里,我们使用@Conditional(EnvironmentCondition.class)注解来设置条件,即只有在EnvironmentCondition类中的条件满足时,才会创建对应的bean。以上示例中,根据当前环境的属性值来创建不同的DataSource对象,可以根据具体环境的不同来创建适合该环境的bean对象。

2023-09-26 11:07:46 1462

原创 AQS原理

AQS 简单介绍AQS 的全称为(AbstractQueuedSynchronizer),这个类在 java.util.concurrent.locks 包下面。AQS 是一个用来构建锁和同步器的框架,使用 AQS 能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的 ReentrantLock,Semaphore,其他的诸如 ReentrantReadWriteLock,SynchronousQueue,FutureTask(jdk1.7) 等等皆是基于 AQS 的。当然,我们自己也能利用 A

2020-10-12 15:17:06 3105

原创 关于死锁的总结

死锁是多个线程在运行过程中互相竞争资源发生的僵局,若无外力作用,它们都无法推进下去。死亡如风,常伴吾身。窝窝头,嘿嘿!死锁的四个必要条件互斥条件:一个资源每次只能被一个进程使用。请求和保持条件:一个进程因为请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件:进程已经获得的资源在没有使用完之前,不能强行剥夺。循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。解决死锁的基本方法预防死锁:1)资源一次性分配:一次性分配所有资源,这样就不会有请求了(破坏请求条件)2)只要有一个资源得

2020-08-01 21:20:07 421

转载 简单理解jdk的动态代理

1. 静态代理静态代理其实就是我们的装饰者设计模式,首先定义一个接口类,然后定义这个接口类的实现类,对每一个实现类定义一个代理类,这里面代理类里面传入这个实现类的引用。1.1 接口类public interface PersonInterface { void say();}1.2 实现类public class Students implements PersonInterface{@Overridepublic void say() { System.out.pr

2020-07-31 22:53:42 468

空空如也

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

TA关注的人

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