
Java开发技术
文章平均质量分 87
介绍java相关开发原理,技术, 以及一些组件使用的注意点
问道飞鱼
长期从事服务后端开发,擅长微服务高并发架构设计, 熟悉云原技术栈,可以提供完整后端解决方案。
展开
-
【Java知识】Java进阶-可执行Jar文件揭秘
Java 类文件编译后的.class文件,是应用程序的核心逻辑。通常按包结构组织,例如。资源文件配置文件(如)、图像、音频、文本文件等。应用程序运行时需要访问的静态资源。文件元数据文件,包含 JAR 文件的描述信息。关键属性:Main-Class:指定应用程序的入口类(必须包含方法)。Class-Path:可选,指定依赖库的路径(相对于 JAR 文件的位置)。Main-Class属性:必须指定,否则 JAR 文件无法直接运行。依赖管理:如果项目依赖外部库,建议使用或。原创 2025-04-09 06:45:00 · 1605 阅读 · 0 评论 -
【Java进阶】今天聊聊Java的响应式编程
Java响应式编程是一种编程范式,它专注于处理异步数据流,并且能够高效地管理这些数据流的传播。这种编程方式特别适用于需要高并发、非阻塞操作的应用场景,比如实时数据分析、微服务架构中的通信等。通过上述示例,我们展示了如何在Java中使用响应式编程模型来处理异步数据流。这不仅提高了系统的响应性和效率,还使得处理大量并发请求变得更加容易。响应式编程的核心在于有效地管理和控制数据流,特别是在高负载环境下,Backpressure机制尤为重要。希望这个详细的解释能帮助你更好地理解和应用Java响应式编程。原创 2025-03-10 06:30:00 · 2003 阅读 · 0 评论 -
【Java知识】手把手教你使用JVM参数配置以及优化技巧
需要注意的是,性能调优通常不是一蹴而就的事情,而是需要持续不断地观察、分析和调整的过程。同时,任何优化措施都应该基于实际的性能测试结果来进行,避免过早优化带来的复杂性和风险。这些参数可以根据应用程序的具体需求进行调整,以优化性能、减少延迟或解决特定的问题。务必根据实际的性能监控结果和业务需求来做出相应的调整。请注意,这里仅列出了一些常用的参数,实际上JVM提供了更多高级选项用于特定场景下的调优。Java应用程序的性能调优是一个复杂的过程,涉及到多个方面的优化。原创 2025-03-07 06:00:00 · 596 阅读 · 0 评论 -
【Java知识】Java门面框架SLF4J介绍
概述定义与作用核心功能与特性使用方法应用场景SLF4J底层原理核心概念日志级别参数化日志消息总结核心代码解析Logger接口LoggerFactory类绑定机制总结SLF4J是为Java编程语言提供的简单日志门面,它不是一个真正的日志记录框架,而是作为一个抽象层或门面,位于应用程序和实际的日志实现框架之间。其主要作用是为开发者提供一套统一的日志记录接口,使得开发者在编写代码时无需绑定到特定的日志实现,如Log4j、Logback或Java Util Logging等,从而增强了代码的可移植性和可维护性。原创 2025-03-06 11:30:00 · 645 阅读 · 0 评论 -
【Springboot知识】Logback从1.2.x升级到1.3.x需要注意哪些点?
需要做出以下改动和注意点,具体取决于你的项目环境(例如是否使用了 Spring Boot)。通过以上步骤,你可以顺利将 Logback 从 1.2.x 升级到 1.3.x,同时确保项目的稳定性和安全性。原创 2025-02-26 22:51:55 · 906 阅读 · 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 · 1554 阅读 · 0 评论 -
【Java知识】使用Java实现地址逆向解析到区划信息
}Map;// 插入一个键值对// 查找一个键的值// 未找到北京市 -> 110000上海市 -> 310000广州市 -> 440100深圳市 -> 440300通过 FST 实现地址逆向查询是一个高效的方式。本示例展示了如何使用 FST 存储和检索区划信息。原创 2025-02-04 20:25:01 · 1536 阅读 · 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 · 1176 阅读 · 0 评论 -
【Java知识】Java泛型解读
Java 泛型(Generics)是 Java 语言的一个重要特性,它允许在类、接口和方法中定义类型参数。这些类型参数在类被实例化或方法被调用时被具体的类型所替代,从而实现了代码的复用和类型安全。接下来,我们将详细解读 Java 泛型。Java 泛型是一种强大的特性,它提高了代码的类型安全性和复用性。通过泛型,我们可以在编译时期就进行类型检查,避免了在运行时出现类型错误。同时,泛型也使得代码更加清晰易读,因为我们不需要在代码中插入类型转换。原创 2024-12-31 06:00:00 · 1100 阅读 · 0 评论 -
【Java知识】java进阶-RMI(Remote Method Invocation)远程方法调用相关知识
首先,需要定义一个远程接口,这个接口继承自接口,并且其方法必须声明抛出。这个接口定义了可以远程调用的方法集。RMI的原理可以概括为:通过定义远程接口和实现远程对象,利用存根和骨架(或动态代理)在网络上进行方法调用的序列化和反序列化,以及通过RMI注册表或命名服务来定位和查找远程对象。这些组件和步骤共同协作,实现了跨JVM的远程方法调用。需要注意的是,RMI依赖于Java序列化机制来传输对象,并且使用TCP/IP协议进行网络通信。首先,我们需要定义一个远程接口,这个接口将声明可以被远程调用的方法。原创 2024-12-21 06:15:00 · 806 阅读 · 0 评论 -
【Java知识】Java进阶-如何开启远程调式
Java远程调试允许开发者在本地IDE(如Eclipse、IntelliJ IDEA等)中调试运行在远程服务器上的Java应用程序。配置远程服务器上的Java应用程序在启动Java应用程序时,通过添加JVM参数来启用远程调试。这些参数通常包括java.debug(指定调试端口)、(通常设置为y或n,取决于是否是服务器模式)等,但在实际使用中,我们更常用的是参数及其子参数。原创 2024-12-10 23:16:39 · 1933 阅读 · 0 评论 -
【Java知识】Java进阶-策略模式实现
策略模式(Strategy Pattern)是一种行为设计模式,它定义了一系列算法,并将每一个算法封装起来,使它们可以互换。策略模式使得算法可以独立于使用它的客户端而变化。策略模式是一种非常灵活的设计模式,适用于需要动态选择算法的场景。通过封装算法,策略模式使得算法的变化不会影响到使用它的客户端代码。以下是一个简单的策略模式示例,用于计算不同折扣策略下的价格。原创 2024-11-26 19:42:39 · 470 阅读 · 0 评论 -
【Java知识】Java进阶-web应用热部署
Java Web应用的热部署是一种在无需停止服务器的情况下,能够动态更新Java Web应用程序中类和资源(例如配置文件)的技术。原创 2024-11-23 21:26:23 · 832 阅读 · 0 评论 -
【Java知识】Java性能测试工具JMeter
概述实践说明JMeter支持哪些参数化技术?常见插件及其功能工作界面展示相关文献Apache JMeter 是一个开源的、基于Java的压力测试工具,最初被设计用于Web应用测试,但后来扩展到其他测试领域。线程组(Thread Group):定义测试的并发用户数量和循环次数。取样器(Sampler):用于向服务器发送请求,如HTTP请求、JDBC请求等。逻辑控制器(Logical Controller):控制测试的执行逻辑,如循环、条件判断等。原创 2024-11-16 16:44:12 · 1703 阅读 · 0 评论 -
【Java知识】java基础-lambda语法详细说明
Java 8 引入的 Stream API 提供了一种高效且易于理解的方式来处理集合数据。Java 中的 Lambda 表达式是 Java 8 引入的一种简洁的匿名函数语法,它允许你以表达式的方式实现函数式接口的实例。Lambda 表达式的引入极大地简化了 Java 的函数式编程,使得代码更加简洁和表达性更强。:检查 Stream 的元素是否与给定的谓词匹配。:返回 Stream 中的第一个或任意一个元素。:将 Stream 中的元素进行排序。:返回 Stream 中元素的数量。原创 2024-11-08 07:23:58 · 604 阅读 · 0 评论 -
【Java知识】java进阶-一个好用的java应用分析工具arthas
Arthas 是由阿里巴巴开源的一款功能强大的 Java 诊断工具,它可以帮助开发者在不修改代码、不重启应用程序的前提下,对线上问题进行快速诊断和定位。原创 2024-11-05 06:00:00 · 1361 阅读 · 0 评论 -
【Java知识】Java基础-对象排序的实现
方法,并且需要提供一个比较器(Comparator)来定义对象的排序逻辑。这些示例展示了如何在Java中对对象进行排序,无论是使用列表还是数组,都可以灵活地使用比较器来定义排序规则。在Java中,对象的排序通常涉及到使用。原创 2024-11-04 22:26:34 · 839 阅读 · 0 评论 -
【Java知识】高性能网络应用框架Netty应知应会
Netty是一个异步事件驱动的网络应用框架,用于快速开发高性能、高可靠性的协议服务器和客户端。它基于Java NIO库,封装了复杂的底层细节,使得编写高性能网络应用程序变得简单。高性能:Netty使用了异步非阻塞的I/O模型,极大地提高了系统的吞吐量和性能,同时降低了延迟。高扩展性:Netty的架构设计使得其非常容易扩展和定制,能够满足不同应用的需求。丰富的功能:Netty支持多种传输协议、编解码器、SSL/TLS加密等,功能非常丰富。易于使用:Netty提供了简洁易用的API,使得开发者可以快速上手。原创 2024-11-03 07:37:17 · 664 阅读 · 0 评论 -
【Java知识】Java进阶-FunctionInterface标记接口的使用
要定义一个,你需要确保接口中只有一个抽象方法。在这个例子中,只有一个抽象方法execute(),因此它可以被用作lambda表达式的目标类型。原创 2024-10-30 06:00:00 · 763 阅读 · 0 评论 -
【Java知识】使用jacoco实现代码覆盖率测试
通过上述步骤,你可以在Java项目中使用JaCoCo来测量和报告代码覆盖率,从而提高代码质量和测试的有效性。测试完成后,JaCoCo会生成一个HTML格式的覆盖率报告,通常位于。文件中添加JaCoCo插件。这允许你执行测试并生成覆盖率报告。你可以在浏览器中打开这个文件来查看代码的覆盖率详情。配置正确,以便在测试执行期间使用JaCoCo代理。原创 2024-10-27 07:29:58 · 537 阅读 · 0 评论 -
【Java知识】高性能网络框架Mina详细介绍
Apache MINA 是一个高性能、高可扩展性的网络应用框架,它通过Java NIO提供了一个抽象的、事件驱动的异步API,用于各种传输协议,如TCP/IP和UDP/IP。MINA 被广泛用于开发需要高性能和高并发处理能力网络应用。定义协议数据结构:首先,你需要定义你的协议格式。这通常涉及到创建一个类来表示协议中的数据结构。例如,你可能有一个CustomPack类,它包含长度、标志和内容等字段。实现ProtocolEncoder:你需要将Java对象转换成二进制流。这可以通过继承类或实现接口来完成。原创 2024-10-27 06:00:00 · 1477 阅读 · 0 评论 -
【知识科普】简单聊聊日志脱敏技术
开发自定义的脱敏策略,例如,可以基于数据的类型(如邮箱、手机号等)来应用不同的脱敏规则。原创 2024-10-25 23:52:29 · 1269 阅读 · 0 评论 -
【Java知识】一款强大的SQL处理库JSqlPaser
JSqlParser是一个强大的Java库,它专门用于解析SQL语句并将其转换成Java对象的层次结构,这使得我们可以轻松地分析、修改和生成SQL语句。JSqlParser是一个开源的Java库,它专门用于解析SQL语句并将其转换成Java对象的层次结构。这是一个便捷工具类,用于解析简单的SQL语句。它适用于不需要复杂逻辑的SQL语句,例如单表查询。但是,它不支持子查询和其他复杂的SQL结构。这是一个更强大的工具类,能够解析具有正确语法的任何SQL语句。原创 2024-10-23 21:43:17 · 2757 阅读 · 0 评论 -
【Java知识】Java进阶-服务发现机制SPI
Java的SPI(Service Provider Interface)是一种服务发现机制,用于定义服务提供者和服务使用者之间的接口。通过SPI,开发者可以在运行时动态地加载和使用实现了特定接口的服务实现类。这种机制常用于框架与插件化开发中,使得框架可以灵活地支持多种实现而无需修改代码。通过上述代码和解释,你可以看到如何通过配置文件动态加载和使用服务提供者。这种机制使得应用程序可以更加灵活地管理和扩展功能,特别适用于需要支持多种实现的场景。希望这些示例和解释能帮助你更好地理解和使用。原创 2024-10-22 05:45:00 · 1371 阅读 · 0 评论 -
【Java知识】java基础-开发一个自定义注解
使用@interface关键字定义注解。使用元注解指定注解的目标和保留策略。定义注解的属性。@Loggable(value = "计算方法")原创 2024-10-21 05:45:00 · 421 阅读 · 0 评论 -
【Java知识】一款超高性能的内存队列Disruptor
Disruptor 是由 LMAX 交易所开源的一个高性能的内存队列,它通过一些先进的技术实现了极高的吞吐量和低延迟。下面我将详细解读 Disruptor 的源码和核心原理。// 省略getter和setter方法。原创 2024-10-20 08:03:00 · 848 阅读 · 0 评论 -
【Java知识】Java进阶-线程池深度解读
Java线程池()是一种执行器(Executor),用于在一个后台线程中执行任务。线程池的主要目的是减少在创建和销毁线程时所产生的性能开销。通过重用已经创建的线程来执行新的任务,线程池提高了程序的响应速度,并且提供了更好的系统资源管理。线程池是现代并发编程中不可或缺的一部分,它提供了一种有效的方式来管理并发任务。通过合理配置线程池,可以提高程序的性能和资源利用率。然而,不当的配置也可能导致资源浪费或性能问题,因此需要根据具体的应用场景来调整线程池的参数。原创 2024-10-18 06:00:00 · 1084 阅读 · 0 评论 -
【后端知识】Mockito,PowerMock结合TestNG框架实现复杂单元测试
Mockito 是一个强大的工具,能够帮助开发者轻松地进行单元测试,特别是在处理复杂依赖时。通过 Mock 对象,可以有效地隔离被测试的代码,提高测试的独立性和可控性。原创 2024-10-17 06:00:00 · 162 阅读 · 0 评论 -
【Java知识】java进阶-反射的原理以及实现
Java反射机制是Java语言的一个特性,它允许程序在运行时动态地加载、探查、使用编译期间完全未知的类。反射机制使得Java程序可以处理一些在编译时并不确定的类,增加了程序的灵活性。类加载器负责将.class文件读取到JVM中,并将这些类信息转换成JVM内部表示类的C++对象。反射是Java提供的一种强大但复杂的机制,它为运行时类的动态操作提供了可能。类型的对象,通过这个对象可以访问与类相关的信息。对象,可以探查类的属性(字段)、方法、构造器等信息。对象,可以在运行时调用对象的方法或访问对象的字段。原创 2024-10-16 20:46:24 · 457 阅读 · 0 评论 -
【Java进阶】Java进阶-手撕java agent
定义:Java Agent是一种Java技术,它可以在JVM(Java虚拟机)启动时或运行时加载,并附加到目标应用程序中。通过拦截、监控和修改类加载、方法调用、对象创建等操作,Java Agent能够在不修改原始代码的情况下,对应用程序的行为进行修改或增强。工作原理:Java Agent主要通过Java的Instrumentation API来实现其功能。Instrumentation API提供了一套用于修改Java类文件字节码的接口,使得Java Agent可以在类加载到JVM之前或之后对其进行修改。原创 2024-10-13 13:15:56 · 3370 阅读 · 0 评论 -
【Java知识】Java基础-时间日期处理
这些类和方法提供了强大的日期时间处理能力,包括日期时间的创建、解析、格式化、比较、计算等。这种方法适用于大多数需要计算两个日期时间差异的场景,无论是简单的天数、小时数差异,还是更详细的秒数和纳秒数差异。以下是一些常用的类和它们的基本用法,以及时间戳与字符串之间的转换。包中,这是从Java 8开始引入的一套新的日期时间API,它解决了旧的。在Java中,处理时间和日期的类主要集中在。用于表示不带时间的日期,例如:年、月、日。用于表示不带日期的时间,例如:时、分、秒。类,它提供了计算两个时间点之间差异的方法。原创 2024-10-12 17:05:32 · 411 阅读 · 0 评论 -
【Java知识】java进阶-手撕动态代理Java Agent
Java动态代理是一种设计模式,允许在运行时动态创建代理对象,并在不修改原始类的情况下增强其功能。它主要用于拦截方法调用,进行日志记录、性能监控、事务管理等操作。如果目标对象已经实现了接口,且代理逻辑相对简单,JDK动态代理是一个简单直接的选择。如果需要代理没有实现接口的类,或者对性能有较高要求,CGLIB动态代理是更合适的选择。在实际开发中,Spring框架能够根据情况自动选择使用JDK动态代理或CGLIB来实现代理,提供了更高层次的抽象和便利。原创 2024-10-12 10:50:01 · 900 阅读 · 0 评论 -
Java提升-锁相关概念以及实现
锁,作为一种并发控制机制,被广泛应用于计算机系统中,特别是在多线程或多进程环境下。它的主要功能是协调多个线程或进程对共享资源的访问,以确保数据的一致性和完整性。通过锁机制,我们可以避免多线程同时修改同一数据而导致的冲突或数据不一致问题。原创 2024-10-05 09:16:56 · 1346 阅读 · 0 评论 -
Java基础-单例模式的实现
单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取该实例。这个模式的主要目的是控制对象的创建,确保在程序的整个生命周期中,某个类只有一个实例被创建和使用。原创 2024-10-05 07:38:15 · 1219 阅读 · 0 评论 -
【Java进阶】常见的JVM调试工具介绍
jmap是Java开发和系统管理中用于内存分析和问题排查的重要工具。通过合理使用jmap命令及其选项,可以深入了解Java进程的内存使用情况,帮助开发人员和系统管理员优化内存使用、排查内存泄漏等问题。原创 2024-09-27 18:37:30 · 1245 阅读 · 0 评论 -
JWT(JSON Web Tokens) 详细介绍
JWT(JSON Web Tokens)是一种用于双方之间安全传输信息的简洁的、URL安全的令牌标准。JWT可以传递信息,这个信息是经过数字签名的,因此可以验证其完整性及被签发人。JWT广泛用于身份验证和信息交换,特别是在客户端和服务器之间的通信中。原创 2024-09-26 06:00:00 · 1381 阅读 · 0 评论 -
Java基础-零拷贝
零拷贝(Zero-copy)是一种计算机编程技术和体系结构设计,旨在减少数据在不同缓冲区或内存区域之间的拷贝次数,从而提高系统性能和效率。零拷贝技术主要用于提高数据传输和处理的速度,特别是在涉及大量数据传输的场景中,如网络通信、文件系统操作和多媒体处理等。DMA(Direct Memory Access,直接存储器访问)是一种让外设(如硬盘、网络接口卡等)与计算机内存之间直接进行数据传输的技术,而不需要通过CPU来传输每一个数据块。原创 2024-09-22 20:39:24 · 1468 阅读 · 0 评论 -
java基础-线程间通信方式
在 Java 中,线程间的通信是非常重要的,尤其是在多线程编程中,它有助于协调线程的行为,确保资源的正确访问和更新。这些方法都可以帮助你在 Java 中实现线程间的通信。选择哪种方法取决于你的具体需求和上下文环境。关键字可以确保变量的可见性,即一个线程修改了一个共享变量的值,另一个线程能立即看到这个变化。包来处理原子操作,可以用来实现线程安全的计数器或其他共享变量。阻塞队列是用于存放消息的容器,它支持生产者-消费者模式。信号量用于控制同时访问特定资源的线程数量。包来简化线程间的通信,其中包括。原创 2024-09-13 21:27:22 · 517 阅读 · 0 评论 -
【Mybatis相关】mybatis框架基础以及自定义插件开发
mybatis框架结构,自定义插件开发原创 2024-09-08 09:07:47 · 968 阅读 · 0 评论 -
Java基础-输入输出操作
java, io, 字符流,字节流,nio, 输入输出原创 2024-09-07 08:27:22 · 597 阅读 · 0 评论