- 博客(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
原创 使用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
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅