自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 如何构建构高性能、高可用、可扩展的集群?

本文介绍分布式集群必备功能,包括数据同步、多副本存储和节点管理,解析如何保证一致性、可用性及分区容错,并结合常见中间件实践总结规律。

2025-10-28 17:36:43 937

原创 MySQL 和 Redis 偏移量分页在数据增删场景下的问题与解决方案

采用基于偏移量的分页(如 MySQL 的 `LIMIT offset, size` 和 Redis 的 `ZRANGE start end`),当数据发生新增或删除时,会导致分页结果出现 跳过记录 或 重复记录 的问题。

2025-10-02 14:38:14 329

原创 ThreadLocal 的工作原理

ThreadLocal 通过线程内部的 ThreadLocalMap 实现线程隔离存储,每个线程独立维护自己的数据副本。ThreadLocalMap 以 ThreadLocal 实例为弱引用键存储值,当 ThreadLocal 对象被回收时,对应的值也会被清理,防止内存泄漏。这种设计既保证了线程安全,又避免了不同线程间的数据干扰。

2025-09-17 21:59:02 213

原创 举例说明环境变量及 PATH 的作用

环境变量是操作系统里的一组全局设置,用来保存字符串信息,分为用户变量和系统变量,且用户变量会覆盖同名的系统变量。PATH 是其中很重要的一项,决定了系统去哪些目录找可执行文件。本文通过 JDK 和 Git 的配置示例,演示了环境变量和 PATH 的设置过程,并用一个小模拟说明系统是如何一步步查找命令的。

2025-08-14 15:29:14 1053

原创 ​​Java到底用接口还是抽象类?

随着Java的发展,接口(Interface) 的功能不断增强(默认方法、私有方法、静态方法等),而 抽象类(Abstract Class) 的角色逐渐被弱化。现代Java开发中,接口已经可以替代90%的抽象类场景。

2025-08-12 16:26:11 299

原创 Java中String的到底存在哪里???

这篇文章专门聊 Java 里 String 是怎么存的。我们会讲到堆和字符串常量池的区别,字面量和 new 出来的字符串在内存里的不同去处,还会顺带回答一个常见的面试问题:到底创建了几个对象?最后再看看 String.intern() 是怎么影响常量池的,让你对字符串的内存分配和优化有个清晰的认识。

2025-07-28 22:07:38 582

原创 大型互联网项目架构及技术选型

介绍了SOA与微服务架构的核心理念及区别,分析了SpringCloud与Dubbo两大服务框架的定位与生态对比,阐述了RPC与Feign在服务间通信中的应用场景和优劣,最后对分布式锁的主流实现Zookeeper与Redis进行了对比,帮助读者全面理解互联网项目架构设计与技术选型的关键要点。

2025-07-20 22:53:10 593

原创 MQ消息重复消费的原因、解决方案对比

消息重复消费是很多系统都会碰到的麻烦事,本文先讲清楚为什么会重复,然后说说用 Redis 和消息确认(ACK)能不能解决问题,哪里还会出坑。最后给你介绍几个靠谱的解决方案,帮你保证消息不丢也不重复,让业务更稳更安全。

2025-07-03 11:11:49 934

原创 数组与链表:性能差异的深层解析与查询效率优化

探讨了数组与链表在时间复杂度之外的真正性能差异。时间复杂度不等同于实际性能,CPU缓存命中率、扩容成本和空间开销是影响实际性能的关键因素。此外,本文还系统性地介绍了优化数组和链表查询效率的策略

2025-06-25 20:52:03 623

原创 Service 层只有一个实现类也要写接口?

本文将深入探讨“为什么只有一个实现类也需要接口”,并逐步引出接口 + 实现类的典型用途——策略模式。我们将通过两个典型的实战案例:“登录策略(使用 List 遍历实现 supports 判断)”和“支付策略(通过 Map 注入快速定位策略)”,全面讲解策略模式在 Spring 中的落地方式。

2025-06-19 13:48:22 1112

原创 Java synchronized 深度指南:锁对象、用法与六种加锁模式详解

Java同步机制的核心是对象监视器锁(monitor lock),通过synchronized实现线程同步。锁对象必须是引用类型,可以是实例对象(this)、类对象(Class)。synchronized有6种写法:3种实例锁(this、实例变量、实例方法)和3种类锁(Class、静态变量、静态方法)。wait/notify机制基于对象Monitor,调用wait()会释放锁并进入等待集合,notify()唤醒线程重新竞争锁。实例锁保护单个实例资源,类锁保护全局类资源。

2025-06-13 10:24:52 1378

原创 Spring boot 3.x 最新系统要求

Spring Boot 3.5.0 的最低配置为:Spring Boot 3.5.0 + JDK 17 + Maven 3.6.3 + maven-compiler-plugin 3.13.0 + IntelliJ IDEA 2020。其余自行推断。

2025-06-01 15:25:05 2683

原创 Spring Bean 的注解配置和自动配置

Spring 通过 @ComponentScan 发现你在代码中明确使用注解定义的 Bean,而通过 @EnableAutoConfiguration 实现智能化的自动配置,从而大大减少了传统 Spring 应用中繁琐的 XML 配置或 Java Config 代码。

2025-05-23 11:29:06 692

原创 现代 API 接口设计的主流趋势

在当今软件开发中,API 已成为前后端分离、系统集成和生态协作的核心桥梁。为了提升 API 的可用性、标准化与自动化能力,业界形成了以 RESTful 设计风格 + OpenAPI 标准描述 + JSON 数据格式 为主流的 API 设计范式。

2025-05-22 16:23:33 565

原创 Java泛型擦除的问题与解决方法

反射和序列化,泛型擦除会导致问题,例如反序列化时无法推断出泛型的真实类型。为解决这一问题,可以使用如 Spring 的 ParameterizedTypeReference 来保留泛型信息,确保框架能正确处理泛型类型。

2025-05-20 11:33:54 601

原创 getInputStream() has already been called for this request 异常原因及解决方案

getInputStream() has already been called for this request 异常原因及解决方案

2025-04-30 15:51:50 2608

原创 Result与ResponseEntity的对比分析

在Java Web开发中,自定义Result类和 Spring 框架的是两种常见的 HTTP 响应处理方式。Result是一个自定义的 Java 类,主要用于封装 API 响应的数据结构(即响应体),常用于业务层的响应格式。而是 Spring 提供的一个类,用于更细粒度地控制 HTTP 响应,包括状态码、headers 和响应体。。Result更偏向于业务层面的封装,而更偏向于 HTTP 协议层面的控制。Result本身并没有能力控制 HTTP 的状态码、响应头等。它只是一个简单的数据封装类。

2025-03-20 09:22:28 462

原创 CompletableFuture教程

用于异步编程,可以执行异步任务并处理结果、异常。支持多种方式来创建异步任务,支持任务组合和结果合并。提供异常处理、超时控制、任务取消等功能,适用于高并发和复杂的业务逻辑。是 Java 8 引入的非常重要的异步编程工具,能显著简化并发编程模型,并提高性能和响应速度。

2024-12-04 13:07:31 412

原创 Arrays、List、Set、Map 排序总结

总结了 Java 中常见的数据结构(List、Set、Map 和数组)的排序方法。

2024-11-28 11:37:21 568

原创 使用scanner.nextLine()读取不到数据的问题

探讨 Java 中 Scanner 类的两种常用方法:nextLine() 和 next(),以及它们的区别和常见问题。

2024-11-26 18:48:50 259

原创 ResponseEntity 类构建 HTTP 响应(速成)

学会快速使用 ResponseEntity 来构建符合需求的 HTTP 响应,提升 API 的可用性和用户体验。

2024-10-30 20:09:27 724

原创 修改Docker容器中的MySQL数据库密码

修改Docker容器中的MySQL数据库密码。

2024-07-30 21:12:13 1360

原创 使用MyBatis Plus的分页插件

MyBatis Plus的分页插件的配置和使用

2024-07-30 21:02:49 929

空空如也

空空如也

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

TA关注的人

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