Java开发技术
文章平均质量分 89
介绍java相关开发原理,技术, 以及一些组件使用的注意点
问道飞鱼
长期从事服务后端开发,擅长微服务高并发架构设计, 熟悉云原技术栈,可以提供完整后端解决方案。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【Java知识】OkHttp一款优秀的http客户端工具
OkHttp是Java生态中最广泛使用的HTTP客户端库之一,在Android和后端服务中占据主导地位。其核心优势包括高性能(连接池复用、零拷贝处理)、可扩展性(拦截器机制)和安全性(TLS 1.3支持)。通过源码分析可见其设计亮点:线程安全的ConnectionPool管理、零拷贝优化和响应缓存机制。OkHttp适用于高并发服务、微服务架构和移动端开发,凭借其性能、扩展性和可靠性成为开发者的首选工具。原创 2025-11-09 22:41:04 · 1088 阅读 · 0 评论 -
【Java进阶】ThreadLocal 源码深度解读与实战指南
本文深入解析了Java 8中ThreadLocal的核心实现原理。ThreadLocal通过ThreadLocalMap实现线程隔离,每个线程维护独立的变量副本。关键点包括:1) ThreadLocalMap使用弱引用Entry存储数据,避免内存泄漏;2) 采用黄金分割数哈希算法确保分布均匀;3) 通过线性探测解决哈希冲突;4) 提供自动清理过期Entry的机制。文章详细剖析了get()、set()、remove()等核心方法的实现逻辑,包括初始化处理、哈希计算、冲突解决和内存管理等底层细节,为开发者深入理原创 2025-10-23 13:05:10 · 921 阅读 · 0 评论 -
【Java进阶】GC友好的编程方式
摘要:本文介绍了Java GC友好编程的核心实践方法,包括降低GC频率、优化对象创建与生命周期、选择合适数据结构及引用类型应用。重点建议:减少不必要对象创建,使用对象池复用高成本对象;选择低内存占用的集合类并预分配容量;利用软引用实现内存敏感缓存,弱引用避免监听器泄漏,虚引用跟踪资源回收。通过代码优化可显著减少GC压力,提升应用性能。原创 2025-10-21 22:56:27 · 748 阅读 · 0 评论 -
【微服务进阶】spring cloud gateway性能优化
Spring Cloud Gateway性能优化指南:从配置、代码到Netty调优全方位提升网关性能。重点包括:1)路由缓存和连接池配置优化;2)JVM参数调优;3)响应式编程最佳实践;4)Netty事件循环和内存分配优化;5)多级缓存策略实现;6)Micrometer监控指标设置。通过系统性的参数调优和架构优化,可显著提升吞吐量并降低延迟,生产环境P99响应时间建议控制在500ms以内。原创 2025-10-20 06:15:00 · 1031 阅读 · 0 评论 -
【Java进阶】Java与SpringBoot线程池深度优化指南
java线程池与springboot线程池相关配置深度优化原创 2025-08-31 18:26:09 · 898 阅读 · 0 评论 -
【Java进阶】线程间传递MDC内容的完整指南
线程间传递MDC内容的完整指南摘要 MDC(Mapped Diagnostic Context)是日志框架提供的线程级上下文存储机制,基于ThreadLocal实现。在多线程环境下,MDC内容无法自动传递,需要手动处理。本文提供了四种解决方案: 直接线程创建:通过继承Thread类并保存父线程MDC副本 Runnable/Callable包装器:创建装饰器类自动传递MDC 线程池装饰器:自定义ThreadPoolExecutor实现MDC自动传递 Spring集成:通过TaskDecorator和线程池配置原创 2025-08-28 06:00:00 · 1433 阅读 · 0 评论 -
【Java知识】Java线程相关对象全面解析与最佳实践
本文全面解析了Java线程相关对象及其最佳实践。主要内容包括:1)线程核心对象关系图,涵盖基础线程类、线程管理框架、同步机制、线程安全容器和原子操作类;2)基础线程对象Thread、Runnable、Callable与Future的使用方法;3)线程池框架Executor的核心组件和ThreadPoolExecutor高级配置,演示了固定线程池、缓存线程池、单线程池和调度线程池的创建与使用,以及自定义线程工厂和拒绝策略的实现。文章通过代码示例展示了线程创建、控制、任务提交和结果获取等关键操作,并提供了线程池原创 2025-08-27 20:51:47 · 1504 阅读 · 0 评论 -
【spring进阶】spring应用内性能监控
本文介绍了一种基于Spring和AspectJ的方法调用时长统计实现方案。通过自定义@ExecutionTime注解,开发者可以灵活标注需要监控的方法,并配置是否记录参数、返回值及耗时阈值。核心实现包含一个高性能统计切面,采用ConcurrentHashMap存储方法统计信息,使用LongAdder进行线程安全的计数统计。切面会在方法执行前后记录时间差,并根据配置记录详细日志或警告信息。该方案支持方法级性能监控、耗时阈值告警、调用成功率统计等功能,适用于系统性能分析和优化场景。原创 2025-08-25 19:35:30 · 124 阅读 · 0 评论 -
【Nacos相关】Nacos 双活注册中心客户端配置指南
本文介绍了Nacos双活注册中心的客户端配置指南,主要包括: 双活架构设计原理,通过两个Nacos集群相互同步数据实现高可用; 核心配置策略,包括双集群注册配置和智能发现策略; 客户端完整配置示例,涵盖Spring Cloud Alibaba和原生Java SDK两种方式; 双活服务发现实现,包含智能路由策略和跨集群延迟检测机制; 双注册健康检查,采用双心跳机制确保服务可用性。该方案能有效提升系统容灾能力,保证服务注册发现的稳定性。原创 2025-08-25 06:42:19 · 1286 阅读 · 0 评论 -
【Nacos知识】Nacos 作为注册中心的客户端配置详解
本文详细介绍了Nacos作为注册中心的客户端配置,内容涵盖基础连接、服务注册、健康检查、服务发现、负载均衡等多个方面。主要配置包括:服务端地址设置(单节点/集群/域名)、命名空间隔离、服务分组管理;服务元数据、网络位置、集群权重等注册配置;心跳参数、健康检查端点等健康监控设置;订阅服务、缓存更新等服务发现机制;内置和自定义负载均衡策略;安全认证及TLS连接配置;网络调优、重试机制、线程池等高级参数。文章通过示例代码和配置片段,全面展示了如何为不同环境(开发/生产)和业务场景配置Nacos客户端,帮助开发者实原创 2025-08-23 14:34:27 · 1174 阅读 · 0 评论 -
【Nacos知识】Nacos 核心原理深度解析:注册中心与配置中心
Nacos核心原理摘要(150字): Nacos作为注册中心采用AP/CP双模式架构:临时实例通过心跳检测维持活性(默认5秒心跳,15秒超时),持久实例由服务端主动探测;集群数据同步基于Distro协议(AP模式)和Raft协议(CP模式)。配置中心采用长轮询机制(30秒超时),通过内存+持久化双层存储配置数据,客户端监听变更并比对MD5值实现动态更新。负载均衡采用权重随机算法,支持实例级元数据路由。核心设计亮点包括:服务注册表的分片存储、配置变更的异步通知机制,以及客户端本地缓存降级策略,确保高可用与最终原创 2025-08-23 07:34:24 · 953 阅读 · 0 评论 -
【Springboot进阶】Java切面编程对性能的影响深度分析
Java切面编程性能分析摘要 AOP对性能的影响主要体现在代理创建、方法调用和内存使用三方面。JDK动态代理启动快但调用慢,CGLIB创建慢但执行快,AspectJ编译时织入运行最快但启动耗时。性能测试显示,100万次调用中AspectJ比动态代理快40%-60%。主要优化手段包括:精确切点表达式、避免反射调用、异步处理非关键通知、复用代理对象等。Spring AOP适合轻量级场景,AspectJ适用于高性能要求系统。实际开发应根据业务场景权衡功能需求与性能损耗。原创 2025-08-21 21:05:57 · 944 阅读 · 0 评论 -
【Java进阶】Java JIT 编译器深度解析与优化实践
本文深入解析了Java JIT编译器的核心原理与优化实践。主要内容包括:JIT工作流程和热点代码检测机制;Java 8的分层编译、方法内联、循环优化等关键升级;JIT友好的代码设计原则,如方法拆分、循环优化和类型系统改进;JIT诊断工具如JITWatch和编译日志分析;高级优化技巧包括分支预测、内存布局和常量折叠;JIT与GC的协同优化策略。通过实际性能对比显示,合理优化可带来30%-100%的性能提升。文章为开发者提供了系统性的JIT优化指导,帮助编写高性能Java代码。原创 2025-08-20 20:07:08 · 914 阅读 · 0 评论 -
【Java进阶】Java应用内存与CPU占用场景深度分析
Java应用内存与CPU占用分析摘要 本文深入分析了Java应用中的内存与CPU高占用场景。内存方面,探讨了堆内存溢出、元空间溢出等典型问题,列举了静态集合持有对象、未关闭资源等内存泄漏模式,并介绍了jmap、MAT等诊断工具。CPU方面,解析了算法复杂度高、频繁GC等导致CPU飙升的原因,展示了死锁、正则回溯等代码示例,推荐了jstack、Arthas等诊断方案。最后提供了内存优化(JVM参数调优、对象池化)和CPU优化(算法改进、线程池调优)的实践策略,以及GC调优等实战技巧。全文通过图表和代码示例,系原创 2025-08-19 12:21:01 · 998 阅读 · 0 评论 -
【Java知识】Java进阶-一文搞懂AQS
在 Java 中,是并发包()的核心组件,用于构建锁和同步器(如Semaphore等)。它通过维护一个CLH 队列和同步状态(state)实现高效的线程协作。AQS 通过状态管理 + 队列协作的设计模式,为开发者提供了灵活且高效的同步工具实现框架。理解其底层机制(如 CAS 操作、队列维护)有助于优化高并发场景下的程序性能。原子状态维护线程阻塞/唤醒机制同步队列管理(双向CLH队列)// CLH队列节点结构。原创 2025-05-08 22:25:14 · 1589 阅读 · 0 评论 -
【Java知识】Java进阶-可执行Jar文件揭秘
Java 类文件编译后的.class文件,是应用程序的核心逻辑。通常按包结构组织,例如。资源文件配置文件(如)、图像、音频、文本文件等。应用程序运行时需要访问的静态资源。文件元数据文件,包含 JAR 文件的描述信息。关键属性:Main-Class:指定应用程序的入口类(必须包含方法)。Class-Path:可选,指定依赖库的路径(相对于 JAR 文件的位置)。Main-Class属性:必须指定,否则 JAR 文件无法直接运行。依赖管理:如果项目依赖外部库,建议使用或。原创 2025-04-09 06:45:00 · 1953 阅读 · 0 评论 -
【Java进阶】今天聊聊Java的响应式编程
Java响应式编程是一种编程范式,它专注于处理异步数据流,并且能够高效地管理这些数据流的传播。这种编程方式特别适用于需要高并发、非阻塞操作的应用场景,比如实时数据分析、微服务架构中的通信等。通过上述示例,我们展示了如何在Java中使用响应式编程模型来处理异步数据流。这不仅提高了系统的响应性和效率,还使得处理大量并发请求变得更加容易。响应式编程的核心在于有效地管理和控制数据流,特别是在高负载环境下,Backpressure机制尤为重要。希望这个详细的解释能帮助你更好地理解和应用Java响应式编程。原创 2025-03-10 06:30:00 · 3362 阅读 · 0 评论 -
【Java知识】手把手教你使用JVM参数配置以及优化技巧
需要注意的是,性能调优通常不是一蹴而就的事情,而是需要持续不断地观察、分析和调整的过程。同时,任何优化措施都应该基于实际的性能测试结果来进行,避免过早优化带来的复杂性和风险。这些参数可以根据应用程序的具体需求进行调整,以优化性能、减少延迟或解决特定的问题。务必根据实际的性能监控结果和业务需求来做出相应的调整。请注意,这里仅列出了一些常用的参数,实际上JVM提供了更多高级选项用于特定场景下的调优。Java应用程序的性能调优是一个复杂的过程,涉及到多个方面的优化。原创 2025-03-07 06:00:00 · 794 阅读 · 0 评论 -
【Java知识】Java门面框架SLF4J介绍
概述定义与作用核心功能与特性使用方法应用场景SLF4J底层原理核心概念日志级别参数化日志消息总结核心代码解析Logger接口LoggerFactory类绑定机制总结SLF4J是为Java编程语言提供的简单日志门面,它不是一个真正的日志记录框架,而是作为一个抽象层或门面,位于应用程序和实际的日志实现框架之间。其主要作用是为开发者提供一套统一的日志记录接口,使得开发者在编写代码时无需绑定到特定的日志实现,如Log4j、Logback或Java Util Logging等,从而增强了代码的可移植性和可维护性。原创 2025-03-06 11:30:00 · 1121 阅读 · 0 评论 -
【Springboot知识】Logback从1.2.x升级到1.3.x需要注意哪些点?
需要做出以下改动和注意点,具体取决于你的项目环境(例如是否使用了 Spring Boot)。通过以上步骤,你可以顺利将 Logback 从 1.2.x 升级到 1.3.x,同时确保项目的稳定性和安全性。原创 2025-02-26 22:51:55 · 2301 阅读 · 0 评论 -
【Springboot知识】多模块Springboot项目配置Jacoco代码覆盖率
在 Spring Boot 多模块项目中配置 JaCoCo(Java Code Coverage)可以实现对代码覆盖率的统计和分析。以下是一个完整的配置指南,帮助你在多模块项目中正确配置 JaCoCo。1. 项目结构示例├── parent (父模块)├── module-a (模块 A)├── module-b (模块 B)└── module-c (模块 C)parent是父模块,定义了所有子模块的依赖管理和插件配置。module-amodule-b和module-c是具体的业务模块。原创 2025-02-24 22:24:49 · 2231 阅读 · 0 评论 -
【Java知识】使用Java实现地址逆向解析到区划信息
}Map;// 插入一个键值对// 查找一个键的值// 未找到北京市 -> 110000上海市 -> 310000广州市 -> 440100深圳市 -> 440300通过 FST 实现地址逆向查询是一个高效的方式。本示例展示了如何使用 FST 存储和检索区划信息。原创 2025-02-04 20:25:01 · 1798 阅读 · 0 评论 -
【Java知识】Groovy 一个兼容java的编程语言
概述一、基本特点二、主要特性三、应用领域四、与Java的比较基本语法特性一、基本语法二、数据类型三、运算符四、字符串五、方法六、闭包七、类与对象八、异常处理九、其他特性集成到springboot项目1. 创建Spring Boot项目2. 添加Groovy依赖3. 编写Groovy类4. 配置编译插件5. 运行你的Spring Boot应用6. 测试你的应用总结Groovy是一种基于Java虚拟机(JVM)的敏捷动态语言,旨在通过简化代码来提高开发效率。原创 2025-01-10 21:02:44 · 1518 阅读 · 0 评论 -
【Java知识】Java泛型解读
Java 泛型(Generics)是 Java 语言的一个重要特性,它允许在类、接口和方法中定义类型参数。这些类型参数在类被实例化或方法被调用时被具体的类型所替代,从而实现了代码的复用和类型安全。接下来,我们将详细解读 Java 泛型。Java 泛型是一种强大的特性,它提高了代码的类型安全性和复用性。通过泛型,我们可以在编译时期就进行类型检查,避免了在运行时出现类型错误。同时,泛型也使得代码更加清晰易读,因为我们不需要在代码中插入类型转换。原创 2024-12-31 06:00:00 · 1181 阅读 · 0 评论 -
【Java知识】java进阶-RMI(Remote Method Invocation)远程方法调用相关知识
首先,需要定义一个远程接口,这个接口继承自接口,并且其方法必须声明抛出。这个接口定义了可以远程调用的方法集。RMI的原理可以概括为:通过定义远程接口和实现远程对象,利用存根和骨架(或动态代理)在网络上进行方法调用的序列化和反序列化,以及通过RMI注册表或命名服务来定位和查找远程对象。这些组件和步骤共同协作,实现了跨JVM的远程方法调用。需要注意的是,RMI依赖于Java序列化机制来传输对象,并且使用TCP/IP协议进行网络通信。首先,我们需要定义一个远程接口,这个接口将声明可以被远程调用的方法。原创 2024-12-21 06:15:00 · 1144 阅读 · 0 评论 -
【Java知识】Java进阶-如何开启远程调式
Java远程调试允许开发者在本地IDE(如Eclipse、IntelliJ IDEA等)中调试运行在远程服务器上的Java应用程序。配置远程服务器上的Java应用程序在启动Java应用程序时,通过添加JVM参数来启用远程调试。这些参数通常包括java.debug(指定调试端口)、(通常设置为y或n,取决于是否是服务器模式)等,但在实际使用中,我们更常用的是参数及其子参数。原创 2024-12-10 23:16:39 · 2480 阅读 · 0 评论 -
【Java知识】Java进阶-策略模式实现
策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列算法,并将每一个算法封装起来,使它们可以互换。策略模式使得算法可以独立于使用它的客户端而变化。策略模式是一种非常灵活的设计模式,适用于需要动态选择算法的场景。通过封装算法,策略模式使得算法的变化不会影响到使用它的客户端代码。以下是一个简单的策略模式示例,用于计算不同折扣策略下的价格。原创 2024-11-26 19:42:39 · 582 阅读 · 0 评论 -
【Java知识】Java进阶-web应用热部署
Java Web应用的热部署是一种在无需停止服务器的情况下,能够动态更新Java Web应用程序中类和资源(例如配置文件)的技术。原创 2024-11-23 21:26:23 · 1103 阅读 · 0 评论 -
【Java知识】Java性能测试工具JMeter
概述实践说明JMeter支持哪些参数化技术?常见插件及其功能工作界面展示相关文献Apache JMeter 是一个开源的、基于Java的压力测试工具,最初被设计用于Web应用测试,但后来扩展到其他测试领域。线程组(Thread Group):定义测试的并发用户数量和循环次数。取样器(Sampler):用于向服务器发送请求,如HTTP请求、JDBC请求等。逻辑控制器(Logical Controller):控制测试的执行逻辑,如循环、条件判断等。原创 2024-11-16 16:44:12 · 2304 阅读 · 0 评论 -
【Java知识】java基础-lambda语法详细说明
Java 8 引入的 Stream API 提供了一种高效且易于理解的方式来处理集合数据。Java 中的 Lambda 表达式是 Java 8 引入的一种简洁的匿名函数语法,它允许你以表达式的方式实现函数式接口的实例。Lambda 表达式的引入极大地简化了 Java 的函数式编程,使得代码更加简洁和表达性更强。:检查 Stream 的元素是否与给定的谓词匹配。:返回 Stream 中的第一个或任意一个元素。:将 Stream 中的元素进行排序。:返回 Stream 中元素的数量。原创 2024-11-08 07:23:58 · 701 阅读 · 0 评论 -
【Java知识】java进阶-一个好用的java应用分析工具arthas
Arthas 是由阿里巴巴开源的一款功能强大的 Java 诊断工具,它可以帮助开发者在不修改代码、不重启应用程序的前提下,对线上问题进行快速诊断和定位。原创 2024-11-05 06:00:00 · 1889 阅读 · 0 评论 -
【Java知识】Java基础-对象排序的实现
方法,并且需要提供一个比较器(Comparator)来定义对象的排序逻辑。这些示例展示了如何在Java中对对象进行排序,无论是使用列表还是数组,都可以灵活地使用比较器来定义排序规则。在Java中,对象的排序通常涉及到使用。原创 2024-11-04 22:26:34 · 1219 阅读 · 0 评论 -
【Java知识】高性能网络应用框架Netty应知应会
Netty是一个异步事件驱动的网络应用框架,用于快速开发高性能、高可靠性的协议服务器和客户端。它基于Java NIO库,封装了复杂的底层细节,使得编写高性能网络应用程序变得简单。高性能:Netty使用了异步非阻塞的I/O模型,极大地提高了系统的吞吐量和性能,同时降低了延迟。高扩展性:Netty的架构设计使得其非常容易扩展和定制,能够满足不同应用的需求。丰富的功能:Netty支持多种传输协议、编解码器、SSL/TLS加密等,功能非常丰富。易于使用:Netty提供了简洁易用的API,使得开发者可以快速上手。原创 2024-11-03 07:37:17 · 865 阅读 · 0 评论 -
【Java知识】Java进阶-FunctionInterface标记接口的使用
要定义一个,你需要确保接口中只有一个抽象方法。在这个例子中,只有一个抽象方法execute(),因此它可以被用作lambda表达式的目标类型。原创 2024-10-30 06:00:00 · 1537 阅读 · 0 评论 -
【Java知识】使用jacoco实现代码覆盖率测试
通过上述步骤,你可以在Java项目中使用JaCoCo来测量和报告代码覆盖率,从而提高代码质量和测试的有效性。测试完成后,JaCoCo会生成一个HTML格式的覆盖率报告,通常位于。文件中添加JaCoCo插件。这允许你执行测试并生成覆盖率报告。你可以在浏览器中打开这个文件来查看代码的覆盖率详情。配置正确,以便在测试执行期间使用JaCoCo代理。原创 2024-10-27 07:29:58 · 802 阅读 · 0 评论 -
【Java知识】高性能网络框架Mina详细介绍
Apache MINA 是一个高性能、高可扩展性的网络应用框架,它通过Java NIO提供了一个抽象的、事件驱动的异步API,用于各种传输协议,如TCP/IP和UDP/IP。MINA 被广泛用于开发需要高性能和高并发处理能力网络应用。定义协议数据结构:首先,你需要定义你的协议格式。这通常涉及到创建一个类来表示协议中的数据结构。例如,你可能有一个CustomPack类,它包含长度、标志和内容等字段。实现ProtocolEncoder:你需要将Java对象转换成二进制流。这可以通过继承类或实现接口来完成。原创 2024-10-27 06:00:00 · 2328 阅读 · 0 评论 -
【知识科普】简单聊聊日志脱敏技术
开发自定义的脱敏策略,例如,可以基于数据的类型(如邮箱、手机号等)来应用不同的脱敏规则。原创 2024-10-25 23:52:29 · 1790 阅读 · 0 评论 -
【Java知识】一款强大的SQL处理库JSqlPaser
JSqlParser是一个强大的Java库,它专门用于解析SQL语句并将其转换成Java对象的层次结构,这使得我们可以轻松地分析、修改和生成SQL语句。JSqlParser是一个开源的Java库,它专门用于解析SQL语句并将其转换成Java对象的层次结构。这是一个便捷工具类,用于解析简单的SQL语句。它适用于不需要复杂逻辑的SQL语句,例如单表查询。但是,它不支持子查询和其他复杂的SQL结构。这是一个更强大的工具类,能够解析具有正确语法的任何SQL语句。原创 2024-10-23 21:43:17 · 3260 阅读 · 0 评论 -
【Java知识】Java进阶-服务发现机制SPI
Java的SPI(Service Provider Interface)是一种服务发现机制,用于定义服务提供者和服务使用者之间的接口。通过SPI,开发者可以在运行时动态地加载和使用实现了特定接口的服务实现类。这种机制常用于框架与插件化开发中,使得框架可以灵活地支持多种实现而无需修改代码。通过上述代码和解释,你可以看到如何通过配置文件动态加载和使用服务提供者。这种机制使得应用程序可以更加灵活地管理和扩展功能,特别适用于需要支持多种实现的场景。希望这些示例和解释能帮助你更好地理解和使用。原创 2024-10-22 05:45:00 · 1696 阅读 · 0 评论 -
【Java知识】java基础-开发一个自定义注解
使用@interface关键字定义注解。使用元注解指定注解的目标和保留策略。定义注解的属性。@Loggable(value = "计算方法")原创 2024-10-21 05:45:00 · 526 阅读 · 0 评论
分享