- 博客(50)
- 收藏
- 关注
原创 SpringBoot 1个DTO搞定所有!Jackson视图一招破局,少写N个类
摘要: SpringBoot开发中,Jackson的@JsonView功能可有效解决多DTO导致的代码冗余问题。通过定义视图接口(如ListView、DetailView)并在POJO字段上标记,实现单一实体类适配不同接口的字段需求。例如,用户模块的列表、详情、创建、更新接口只需一个User类配合视图注解,即可动态控制字段序列化/反序列化,减少90%的重复DTO代码。关键步骤包括:1)定义空接口作为视图标记;2)用@JsonView标注字段所属视图;3)在Controller中通过@JsonView指定接口
2025-11-24 14:26:28
95
原创 Grafana+Prometheus+cAdvisor Docker容器监控平台搭建
Docker容器监控系统搭建指南 本文介绍了基于ARM64架构的Docker容器监控系统搭建方案,采用cAdvisor、Prometheus和Grafana三组件协同工作: 组件分工:cAdvisor采集容器指标(8080端口),Prometheus存储查询数据(9090端口),Grafana负责可视化展示(3000端口) 部署过程: 创建专用网络dev-network 运行cAdvisor容器并挂载系统目录 配置Prometheus抓取cAdvisor指标 部署Grafana并连接Prometheus数据
2025-09-17 09:48:25
834
原创 Docker Grafana 忘了密码修改方法
本文介绍了Docker环境下Grafana的密码管理方法。主要内容包括:首次安装时可通过容器日志获取随机密码或使用环境变量预设密码;忘记密码时可通过grafana-cli工具重置;推荐使用.env文件管理敏感信息,避免使用默认密码。文章还提供了密码重置的具体命令和注意事项,强调数据持久化的重要性,并建议生产环境使用强密码。
2025-09-15 11:31:43
1070
原创 Contos 安装 Docker
本指南详细介绍了在CentOS系统上安装Docker社区版(Docker CE)的完整流程。主要内容包括系统环境要求、卸载旧版本方法、通过yum安装Docker CE的步骤、启动服务和验证安装。还提供了安装后的基本配置,如用户权限管理、配置国内镜像加速器,以及常用的Docker基本命令。最后总结了注意事项和常见问题解决方法,帮助用户顺利完成Docker安装并开始使用。适用于CentOS 7及以上64位系统,内核版本需3.10以上。
2025-09-15 10:24:18
1311
原创 Docker 快速搭建 Nginx 可视化监控平台
本文介绍基于Docker容器快速搭建Nginx监控平台的技术方案。方案采用Nginx+Nginx Exporter+Node Exporter+Prometheus+Grafana技术栈,通过5个关键步骤实现:1)启用Nginx状态采集模块;2)部署Nginx Exporter采集指标;3)配置Prometheus存储和查询数据;4)部署Grafana可视化工具;5)导入预设仪表盘模板。整个过程无需复杂环境配置,通过Docker容器化部署,新手也能快速上手。最终实现包含Nginx状态、系统资源等多维度监控数
2025-09-05 10:13:37
739
原创 Linux 环境源码安装 Docker
本文介绍了在CentOS系统中通过源码方式安装Docker 27.0.3的完整流程。主要包括从清华镜像下载源码包、解压文件、复制到系统目录,并配置为systemd服务。通过创建docker.service文件定义服务参数,设置权限后启动Docker并验证状态。该方法适用于离线环境或需特定版本的场景,支持systemd管理,兼容CentOS 7等x86_64架构系统。关键步骤包含服务配置、权限设置和状态检查,确保Docker正常运行。
2025-08-28 14:15:10
539
原创 Spring Retry Spring 生态系统优雅的重试组件
**Spring Retry 是 Spring 生态系统提供的重试框架,通过声明式注解优雅处理瞬时故障,提升应用健壮性。其核心采用 AOP 和策略模式,支持灵活配置重试策略、回退间隔和降级方案。优点是解耦业务逻辑,但需注意幂等性问题。适用于远程调用、数据库操作等场景。案例演示了如何通过注解实现 API 调用失败后的自动重试和降级处理。
2025-08-27 14:56:39
1079
原创 net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content) nginx转发记录
Nginx代理报错206
2025-08-27 14:26:29
462
原创 Mac m系列 VMware Fusion虚拟机安装ARM contos
本文详细介绍了在Mac上使用VMware Fusion安装CentOS Stream 9的完整流程。首先需要下载VMware Fusion和CentOS Stream 9镜像文件,然后通过VMware创建新虚拟机,特别强调要选择"自定义配置"并调整处理器、内存和硬盘参数。安装过程中需注意选择Linux系统类型、配置安装目录和用户密码,最后完成安装并重启系统即可进入CentOS环境。文中配有多个安装步骤截图,为用户提供了直观的操作指引。
2025-07-20 23:02:29
749
原创 Java 并发包 - Semaphore类
Semaphore是Java并发包中的计数信号量工具,用于控制同时访问特定资源的线程数量。其核心原理是通过许可证计数器管理资源访问,提供acquire/release操作、公平性选择、批量操作等特性。基于AQS实现,支持共享锁模式,适用于资源池管理、API限流等场景。典型应用包括数据库连接池模拟(控制最大连接数)和限流系统(限制每秒请求数)。最佳实践强调及时释放许可证、避免死锁及合理调整许可数量,是解决并发控制问题的有效工具。
2025-07-19 15:00:22
454
原创 Mac中Minicom串口调试基础使用
Mac 使用 Minicom 连接串口设备简明教程 安装:通过 brew install minicom 安装。 查找设备:连接适配器后运行 ls /dev/tty.* 获取设备名(如 /dev/tty.usbserial-XXXX)。 配置: 快速启动:minicom -D /dev/tty.usbserial-XXXX -b 115200 交互配置:minicom -s 设置设备路径、波特率(如115200)并关闭硬件流控。 退出:按 Ctrl+A 后按 X。 常见问题: 权限问题:用 sudo chm
2025-07-07 15:08:57
909
原创 Docker 将镜像打成压缩包将压缩包传到服务器运行
摘要: 本文详细介绍了如何将本地Docker镜像迁移到服务器的三种方法: 压缩包传输:通过docker save打包镜像,用scp传输到服务器后docker load加载 SSH直传:使用docker save | ssh "docker load"命令流式传输 容器仓库:推荐生产环境使用,先推送镜像到Docker Hub再拉取 关键步骤包括镜像打包、安全传输、服务器加载及容器运行参数配置(端口映射、卷挂载等)。另附常见问题解决方案,如权限不足、端口冲突的处理方法。对于简单迁移,SSH直
2025-07-07 14:55:27
624
原创 lombok 工具类注解
摘要:@UtilityClass和@NoArgsConstructor(access = AccessLevel.PRIVATE)都是用于防止工具类实例化的注解。前者自动生成私有构造器并强制所有方法静态化,适用于纯工具类;后者仅生成私有构造器,允许非静态方法存在。@UtilityClass提供更严格的安全检查,而后者更灵活。建议纯工具类使用@UtilityClass,需要保留非静态方法时用@NoArgsConstructor。两者均通过Lombok实现,但@UtilityClass属实验性功能需注意启用状态
2025-06-11 13:00:45
824
原创 Spring Boot缓存组件Ehcache、Caffeine、Redis、Hazelcast
本文分析了Spring Boot缓存架构的核心组件与主流缓存工具特性对比。通过表格和图表详细比较了Ehcache、Caffeine、Redis和Hazelcast在性能、存储方式、集群支持等关键维度的差异,并提供了本地缓存(Caffeine)和分布式缓存(Redis)的配置实现案例。针对不同应用场景,提出技术选型决策树:小数据量高性能场景推荐Caffeine,大数据量分布式场景选择Redis或Hazelcast。最后对比了各方案的高级特性,为开发者提供全面的缓存技术选型参考。
2025-06-05 15:52:29
2718
原创 SpringBoot EhCache 缓存
摘要: EhCache作为高效Java缓存框架,通过堆内/堆外/磁盘多级存储实现纳秒级响应,支持LRU/LFU等过期策略。Spring Boot集成仅需添加依赖、配置XML及启用注解,核心注解如@Cacheable、@CacheEvict简化缓存管理。其优势在于轻量、低延迟,但分布式支持较弱。案例演示图书查询服务,首次访问模拟3秒延迟,后续命中缓存瞬时返回。适用于高频读场景,显著提升QPS(实测120→4500+),但不适合大数据或频繁更新场景。调试时可结合JMX监控命中率,根据业务需求平衡缓存策略。
2025-06-05 09:02:11
1487
原创 HTTP、WebSocket、SSE 对比
HTTP、WebSocket与SSE特性对比及选型指南 本文对比了HTTP、WebSocket和SSE三种网络协议的核心特性。HTTP采用请求-响应模式,适合传统API交互但实时性差;WebSocket支持全双工通信,适合实时应用但实现复杂;SSE允许服务器单向推送,简单易用但不支持双向交互。三者各有优劣:HTTP兼容性好但效率低,WebSocket实时性强但需手动管理连接,SSE轻量但功能有限。文章通过Java示例演示各协议实现,并给出选型建议:WebSocket适合双向实时场景(如聊天),SSE适用于服
2025-06-02 11:59:31
907
原创 Java Duration 类
Java 8的Duration类用于精确表示时间间隔,支持秒级和纳秒级计算。主要特性包括:基于ISO-8601标准格式(如"PT2H30M15.5S")、不可变且线程安全、最高纳秒精度。典型应用场景包括代码耗时测量、超时控制、时间单位转换和任务调度。通过between()方法计算时间间隔,提供加减乘除运算和单位转换(如toMillis()),优于传统TimeUnit。注意Duration仅处理时间量,日历日期需用Period类。结合Instant使用可构建精确计时逻辑。
2025-06-02 11:54:46
659
原创 Mysql时间函数
通过上述方法,可高效处理 MySQL 中的时间格式化和比较需求。:按单位(秒、分钟、小时、天等)计算时间差。:将日期/时间值格式化为字符串。:将字符串转换为日期/时间类型。:返回两个日期相差的天数。:对日期进行加减操作。
2025-05-28 14:24:52
386
原创 开发过程中慢SQL 监控手段、分析工具、优化方法
判断慢 SQL:通过数据库日志、执行计划、APM 工具定位问题。优化核心:索引设计、SQL 改写、绑定变量、分库分表。持续优化:建立 SQL 审核流程,定期分析慢查询日志,结合业务演进调整设计。
2025-04-23 09:09:45
799
原创 Java 线程池概念理解
Java 线程池是并发编程的基石,其高效性源于对线程生命周期的精细管理和任务调度的智能决策。正确配置参数(核心线程数、队列类型、拒绝策略)需结合具体业务场景,同时通过监控和动态调整应对流量波动。进阶实践中,应注重线程命名规范化、异常处理、资源泄露防范,并合理利用 Java 8+ 的新特性提升系统性能。当任务提交到线程池时,空闲线程直接从队列中获取任务执行,避免反复创建新线程的开销。线程执行完任务后不会销毁,而是继续等待下一个任务。超时等待),实现“线程-任务”的解耦和复用。循环从队列中获取任务
2025-04-22 14:55:41
1013
原创 WITH 临时表 SQL优化
CTE 是一个命名的临时结果集,通过WITH关键字定义,仅在当前 SQL 语句中有效。语法如下:sqlSELECT statement -- 子查询或表表达式-- 后续使用cte_name作为表名CTE 是 SQL 优化的重要工具,尤其在复杂查询场景中,通过拆解逻辑、复用中间结果、简化递归处理,既能提升代码可读性,又能借助数据库优化器提升性能。在 Oracle 中,结合索引优化、执行计划分析和合理的物化策略,CTE 可显著减少子查询重复计算,降低 IO 和 CPU 消耗。
2025-04-22 14:53:51
1557
原创 HashMap 初步理解 put 操作流程 HashMap 的线程安全问题
通过源码级分析,可以深入理解 HashMap 的设计哲学与工程实现细节,为高性能编程奠定基础。HashMap 是 Java 中最常用的哈希表实现,基于。
2025-04-20 00:05:12
929
原创 Java中常见的锁synchronized、ReentrantLock、ReentrantReadWriteLock、StampedLock
在Java中,锁是实现多线程同步的核心机制。不同的锁适用于不同的场景,理解其实现原理和使用方法对优化性能和避免并发问题至关重要。
2025-04-19 23:53:47
1329
原创 Tomcat、Jetty、Undertow 对比
SpringBoot web服务器对比选择自定义配置:(2) Jetty依赖配置:需排除 Tomcat 并添加 Jetty 依赖。自定义配置:(3) Undertow依赖配置:排除 Tomcat 并添加 Undertow 依赖。自定义配置:9. 性能调优建议Tomcat优化线程池:调整 和 。开启 NIO 模式(默认已启用):Jetty异步处理:利用 Jetty 的异步
2025-04-15 22:22:21
2699
原创 Spring @Autowired VS @Resource
是两种常用的依赖注入注解,但它们在来源、注入机制和使用场景上存在差异。:字段注入不符合构造器注入的最佳实践,建议重构为构造器注入以提高代码健壮性。在IntelliJ IDEA等IDE中,字段注入的。建议改用构造器注入或Setter方法注入。Spring团队建议优先使用。在Spring框架中,
2025-04-13 22:49:22
590
原创 git push超过100MB大文件推送失败(write error: Broken pipe)
使用git push推送超过 100MB 的大文件时,Git 会因默认限制或远程仓库(如 GitHub、GitLab)的限制而报错。
2025-04-13 00:56:43
1211
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅