
Java
文章平均质量分 95
JAVA专栏汇总,涵盖各种框架及知识点
来一杯龙舌兰
学识尚浅
展开
-
【数据库连接池】C3P0 升级到 HikariCP,及二者的参数、性能优缺点对比(超详细)
C3P0与HikariCP的主要区别在于性能优化和配置逻辑。HikariCP作为当前性能最优的JDBC连接池,其吞吐量比C3P0高约10倍,核心优势在于无锁化设计、零内存拷贝机制和更精简的代码结构(约130个类,而C3P0超过200个)。其配置策略也更注重减少无效参数,例如默认关闭自动提交事务,且通过。迁移后预期可降低50%的GC停顿时间,并提升30%以上的数据库操作吞吐量。参数(通常设置为CPU核心数*2 + 磁盘数)。若使用MySQL,建议在JDBC URL追加。,建议通过JDBC4的。原创 2025-03-06 15:17:15 · 673 阅读 · 0 评论 -
【Jboss/Linux】 Jboss eap 7 + JDK8 + Springboot 2.7 升级 Jboss eap 8 + JDK17 + springboot 3
当你的服务器中的JAVA_HOME被其他项目或者其他工程引用的时候,就需要Jboss单独去指定自己需要的JDK的版本,这样就不会影响别人的东西。如果你这台服务器就是供给你自己使用你可以更改全局的环境变量,如果是有别的同事使用建议让你的jboss直接指定对应的JDK,而不是去更改全局的。打包命令–如果在idea中打包需要安装东西,可以在项目文件中(带pom文件的路径下),cmd进行打包。将打包好的war直接放置在jboss的\standalone\deployments文件。linux导出到windows。原创 2025-01-21 15:19:08 · 1040 阅读 · 0 评论 -
【Java常用设计模式】通俗易懂的玩转单例、建造者、工厂、策略模式(保姆篇)
在一个狂风骤雨的下午,有人突然问了我一句,单例模式是什么,我愣了原创 2024-07-23 08:17:29 · 1421 阅读 · 0 评论 -
【分布式缓存】一致性Hash原理剖析,一致性Hash与Hash的区别(详解)
一致性哈希算法通过将数据和服务器节点映射到一个固定的哈希空间,引入虚拟节点来解决数据分布不均匀的问题,并在服务器动态增减时能够有效地减少数据迁移的开销,实现了高效的负载均衡和系统的稳定性。它是分布式系统架构设计中一种非常重要的技术,为大规模数据的存储和处理提供了可靠的解决方案。随着分布式系统的不断发展和应用场景的不断拓展,一致性哈希算法将继续发挥其重要作用。原创 2025-01-07 21:22:21 · 1063 阅读 · 0 评论 -
【Jboss/Windows】Tomcat 8 + JDK 8 升级为 Jboss eap 7 + JDK8
用记事本进入jboss的目录:找到bin目录下的standalone.bat,用记事本或者其他的文本编辑软件,修改JBOSS_HOME,为你的jdk1.7,安装路径。如果,要想修改你的jboss服务器端口,可以到jboss->standalone->configuration,找到standalone.xml文件:把 8080修改成你想要的端口重启即可。企业版:去setting中的Plugins下载Jboss的相关插件,搜到什么下什么,然后重启idea,也可能会出现,但是个人觉得不好用。原创 2025-01-03 17:57:55 · 1186 阅读 · 0 评论 -
【JVM】OOM后,JVM会退出吗?OOM killer机制,默认异常处理器原理(超详细)
OOM(Out of Memory内存溢出)的缩写。它是一个计算机术语,用于描述计算机或设备在处理任务时由于内存不足而无法继续操作的状态综上所述,JVM在遇到OOM时不一定会退出。具体情况取决于OOM的类型、程序中是否有适当的异常处理,以及JVM的配置。合理的异常处理和资源管理可以帮助程序在内存不足的情况下继续运行,避免意外退出。原创 2024-10-16 09:33:09 · 1094 阅读 · 0 评论 -
【Solr】Solr搜索引擎下载、安装、使用及跟Elasticsearch的对比(保姆篇)
是一个开源搜索平台,旨在为企业和应用提供强大的搜索能力。它支持多种数据类型的搜索,并提供丰富的功能,如全文检索、快速搜索、分面搜索、高亮显示、地理搜索等。原创 2024-10-14 09:07:49 · 2114 阅读 · 0 评论 -
【JVM】JVM调优原理、思路、真正意义上解决性能瓶颈(附实际调优案例)
在 JVM 上,最初是通过 JNI 调用来实现方法的反射调用,当 JVM 注意到通过反射经常访问某个方法时,它将生成字节码来执行相同的操作,称为膨胀(inflation)机制。默认是15次,可通过参数 -Dsun.reflect.inflationThreshold 进行控制,在小于该次数时会使用 JNI 的方式对方法进行调用,如果调用次数超过该次数就会使用字节码的方式生成方法调用。分析问题、定位问题、解决问题,三个角度去描述,描述你具体怎么做的。所以对这个问题分析,我们就要看gc的日志进行分析。原创 2024-09-26 11:02:41 · 1965 阅读 · 0 评论 -
【JVM】一篇聊透内存泄露,栈内存溢出,JVM中的垃圾回收器超详细
为啥要有这个东西:在这里,先想一下,如果没有双亲委派,那么用户是不是可以自己定义一个java.lang.Object的同名类,java.lang.String的同名类,并把它放到ClassPath中,那么类之间的比较结果及类的唯一性将无法保证,因此,为什么需要双亲委派模型?:老年代的垃圾回收通常较少且耗时,因为老年代的对象通常较大,且需要全堆扫描。:在堆内存中,老年代的空间通常比新生代更大,适合存放长期存在的对象。:比软引用更弱,当垃圾回收器工作时,如果一个对象只被弱引用引用,就会被回收。原创 2024-09-26 08:35:48 · 1289 阅读 · 0 评论 -
【JVM】一篇文章彻底理解JVM的组成,各组件的底层实现逻辑
java文件通过java源码编译器进行编译为.class文件,存储的是字节码(二进制数据),类加载器,通过验证、准备、解析、初始化流程、将字节码数据读到方法区中,并在堆中创建一个java.lang.Class对象,用来封装类在方法区内的数据结构,通过编译器,将字节码翻译成底层系统指令,再交由 CPU 去执行。对于java来说,类加载器将.class文件(字节码二进制的数据),装载到jvm中,并将类的结构封装成一个class对象放到堆中。`.class文件,存储的是字节码(二进制数据)。原创 2024-09-24 14:20:10 · 1819 阅读 · 0 评论 -
【JAVA】自动生成常量类、自动生成所需代码(附源码)
思路:选择一个想操作的表单或者页面,然后可选择所选择表单的字段及表名,制作两个按钮,一个按钮是去自动生成一个文本,在页面展示可复制,另一个按钮是生成一个java文件,这样对于开发者不管是直接使用java文件还是拷贝这个文本都比较方便,详细可看下方代码。在一个阳光明媚的下午,接到一个需求,大家都觉得自己去定义全局变量比较麻烦,后期维护也比较麻烦,所以能不能自动生成一下。原创 2024-09-18 17:13:27 · 1077 阅读 · 0 评论 -
【JAVA】多线程的创建、线程池创建线程的方式(超详细)
当应用程序希望在任务提交失败时立刻知道,并进行错误处理或日志记录时,这种策略是合适的。例如,当任务的失败可能意味着系统的严重问题,开发者希望程序能立刻响应并处理这些异常情况时,可以使用。:当任务丢失是可以接受的,或者任务的重要性相对较低时,可以使用这个策略。:当系统希望优先处理最近提交的任务,并丢弃最早的任务以腾出空间时,可以使用这个策略。即,任务不会被丢弃或丢失,而是会由提交任务的线程自己执行。:这个策略会丢弃任务队列中最旧的任务,然后尝试提交新的任务。,即立即终止任务提交,并通知提交者任务提交失败。原创 2024-09-18 08:23:46 · 1497 阅读 · 0 评论 -
【JAVA】一篇聊透百万级数据导入导出场景问题、大数据处理策略及优化方案、EasyExcel 和 EasyPOI的玩法详解
EasyExcel 是阿里巴巴开源的 Java 库,用于高效地处理 Excel 文件。它在处理大数据量时表现优异,具有低内存占用和高性能的特点。EasyPOI 是另一个流行的 Java 库,旨在简化 Excel 文件的操作。虽然它也提供了良好的性能,但在处理大数据量时,可能不如 EasyExcel 高效。原创 2024-09-14 09:57:24 · 1931 阅读 · 0 评论 -
【JAVA】Spring Security框架三万字详解,看这一篇就够了
可以在SpringSecurity中创建自定义配置文件Java自定义配置用来管理用户信息,是UserDetailsService的一个实现,用来管理基于内存的用户信息。创建一个WebSecurityConfig文件:定义一个@Bean,类型是UserDetailsService,实现是InMemoryUserDetailsManager@EnableWebSecurity//Spring项目总需要添加此注解,SpringBoot项目中不需要@Bean。原创 2024-09-13 09:12:10 · 1050 阅读 · 0 评论 -
【JAVA】Undertow的使用及性能优化,以及Undertow与Tomcat的对比
在相同的机器配置下,模拟相等的请求数,Undertow 在性能和内存使用方面都是最优的。所以,如果是高并发的业务系统,Undertow 是最佳选择。在SpringBoot应用的application.properties或application.yml中,可以调整Undertow的线程池设置。当你进行Tomcat调优发现在怎么调都无法满足需求的时候,Undertow容器在性能和内存上都优于Tomcat容器,因此选择Undertow容器并进行调优是更好的选择。所以只需更换一个依赖即可使用,还是很方便的。原创 2024-09-10 09:34:56 · 2607 阅读 · 0 评论 -
【JAVA】Tomcat性能优化、安全配置、资源控制以及运行模式超详细
nio(new I/O),是Java SE 1.4及后续版本提供的一种新的I/O操作方式(即java.nio包及其子包)。Java nio是一个基于缓冲区、并能提供非阻塞I/O操作的Java API,因此nio也被看成是non-blocking I/O的缩写。原创 2024-09-09 11:25:27 · 2427 阅读 · 0 评论 -
【JAVA】影响及解决Spring Boot 依赖下载慢的问题
在使用 Spring Boot 开发应用程序时,依赖下载速度慢可能会成为一个常见的痛点。较长的下载时间不仅影响开发效率,还可能导致生产环境中的构建延迟。利用增量构建或增量编译来减少每次构建所需的时间。例如,Gradle 的增量构建和 Maven 的增量编译都能显著提升构建速度。配置构建缓存以减少重新下载和构建的时间。例如,Gradle 提供了构建缓存功能,可以通过。对于 Maven 和 Gradle,可以配置并行下载来加快依赖获取速度。Maven 可以通过。来分析和优化依赖项,找出不必要的或过时的依赖。原创 2024-09-04 09:41:38 · 1203 阅读 · 0 评论 -
【Protobuf】xml、json与protobuf有什么区别,protobuf详解(保姆篇)
Protocol Buffers(简称 Protobuf)是 Google 开发的一种语言中立、平台中立、可扩展的序列化结构数据的机制。它主要用于将数据结构序列化为二进制格式,以便于高效传输和存储。Protobuf 在性能、文件大小和数据兼容性方面有着显著的优势。Protobuf 适用于多种编程语言,包括 C++、Java、Python、Go 和 C# 等。本文将详细介绍 Protobuf 的工作原理、如何定义消息结构、生成代码及其在实际应用中的使用。Protobuf 使用.proto文件定义数据结构。原创 2024-09-02 18:07:17 · 1232 阅读 · 0 评论 -
【JAVA】Log4j、Logback、JUL日志文件详解(保姆篇),以及如何去掉控制台没用的日志案例分享
log.configLog4j 是 Apache 提供的一个日志框架,它允许开发者根据需要配置日志输出。Log4j 的配置文件通常是 XML、JSON 或者 Properties 格式。原创 2024-09-02 08:55:03 · 957 阅读 · 0 评论 -
【Denuvo加密】黑神话悟空为什么没有破解版?Denuvo加密技术的详细解析与代码示例
加密技术的目的是保护数据免受未授权访问。对称加密:使用相同的密钥进行加密和解密。对称加密的优点在于其加密和解密速度较快,但密钥的分发和管理是一个挑战。非对称加密:使用一对密钥(公钥和私钥),公钥用于加密,私钥用于解密。非对称加密提供了更高的安全性,但加密和解密速度较慢。D加密技术是一种现代化的加密方法,它综合了对称加密和非对称加密的优点,用于保护游戏中的各种数据。这种技术不仅能高效地加密数据,还能保证数据的安全性,防止被非法访问和篡改。D加密技术在《黑神话:悟空》中的应用展示了现代游戏数据保护的先进方法。原创 2024-08-28 08:16:27 · 2001 阅读 · 0 评论 -
【JVM】JVM 实战调优指南赋案例(保姆篇)
即时编译器(JIT)将字节码编译为机器码,以提高运行时性能。热点编译(HotSpot Compilation):编译热点代码,提高执行效率。逃逸分析(Escape Analysis):优化对象的内存分配和回收。原创 2024-08-16 17:26:15 · 1955 阅读 · 0 评论 -
【JAVA】阿里巴巴 EasyExcel:高效的Excel处理解决方案
EasyExcel 是阿里巴巴开源的一个 Java 库,旨在提高 Excel 文件处理的性能。它是基于 POI 的封装,主要用于简化 Excel 文件的读写操作,并且在处理大数据量时表现出色。我们可以实现自定义转换器来处理特殊的数据格式,例如将日期格式化为特定的字符串格式。原创 2024-08-16 17:12:26 · 1765 阅读 · 0 评论 -
【JAVA】深入理解守护线程与非守护线程:概念、应用及示例
在多线程编程中,线程的管理是至关重要的。Java 提供了两种主要的线程类型:守护线程和非守护线程。理解它们的区别以及如何在实际应用中使用它们,对编写高效和稳定的程序至关重要。本文将深入探讨这两种线程的概念、应用场景,并通过实际代码示例帮助你掌握如何使用它们。守护线程是一种特殊类型的线程,它的存在不会阻止 JVM 退出。守护线程一般用于后台任务,如垃圾回收、监控任务等。当所有非守护线程都结束时,JVM 会退出,即使守护线程仍在运行。非守护线程是普通线程,它会阻止 JVM 退出,直到它们完成执行。原创 2024-08-15 08:31:21 · 1533 阅读 · 0 评论 -
【JAVA】阿里巴巴的 FastJson 深入解析与应用实例
FastJson是阿里巴巴开发的一个高性能的JSON库,它提供了快速的JSON序列化和反序列化功能。与其他JSON处理库相比,FastJson具有更快的解析速度、更低的内存占用和更高的灵活性。它能够轻松处理Java对象与JSON字符串之间的转换,并支持自定义序列化和反序列化。FastJson允许开发者通过实现和接口来自定义序列化和反序列化过程。return;} }return;} }原创 2024-08-14 08:37:35 · 1125 阅读 · 0 评论 -
【JAVA】阿里巴巴的Arthas:Java应用诊断的利器
Arthas是阿里巴巴开源的Java诊断工具,主要用于动态分析和调试Java应用。它通过Java Agent技术,将自身注入到运行中的JVM中,从而实现对JVM内部状态的实时监控和操作。Arthas不仅可以帮助开发者定位性能瓶颈,还能实时监控应用的健康状况,是处理复杂生产环境问题的利器。主要功能包括:实时监控:提供应用的实时状态和性能数据。线程分析:查看线程堆栈信息,分析线程状态。堆转储分析:生成堆转储文件,帮助识别内存泄漏。方法调用跟踪:动态地跟踪方法的调用链,了解方法执行的详细信息。脚本支持。原创 2024-08-14 08:37:17 · 897 阅读 · 0 评论 -
【Regex】正则表达式详解:从基础到高级应用(保姆篇)
正则表达式是一种由特殊字符组成的字符串,用于描述文本模式。它可以匹配符合模式的文本、从文本中提取信息或替换文本中的匹配内容。原创 2024-08-09 16:59:44 · 2392 阅读 · 0 评论 -
【JAVA】深入理解 JEXL:Java 中的表达式语言
在现代软件开发中,动态计算和执行表达式是一项非常重要的能力。特别是在需要动态规则评估、配置文件解析以及灵活的业务逻辑实现等场景下,使用一种能够在运行时解析和执行表达式的工具显得尤为重要。JEXL(Java Expression Language)就是这样一种工具,它为 Java 开发者提供了强大的表达式解析和执行能力。JEXL 是一个基于 Java 的表达式语言,它允许开发者在运行时动态解析和执行字符串形式的表达式。原创 2024-08-09 08:47:32 · 2472 阅读 · 0 评论 -
【算法设计】深入理解波兰表达式与逆波兰表达式
在计算机科学与数学领域中,波兰表达式(Prefix Notation)和逆波兰表达式(Postfix Notation)是两种重要的表达式形式,它们在编程语言、计算器设计以及算法实现中有着广泛的应用。本文将详细探讨这两种表达式的定义、优势以及实际应用。原创 2024-08-09 08:44:55 · 1077 阅读 · 0 评论 -
SpringBoot Security OAuth2实现单点登录SSO(附源码)
OAuth2 允许用户使用第三方认证提供者(如Google、GitHub等)的凭据进行认证,而不需要在你的应用中存储用户的密码。如果在你的应用程序中配置了多个 OAuth2 客户端(例如同时配置了 Google 和 GitHub),用户在其中一个认证成功后,在访问其他配置的客户端时不需要重新认证。登陆界面,进行上述整篇都在说的认证服务器,但如果先登录认证服务器,在进行登陆8082端口这个服务,会直接进入8082页面,这就是所谓的已经授权过的无需在重复登陆的实现。登陆页面–点击登陆进行授权。原创 2024-07-17 15:25:08 · 2501 阅读 · 2 评论 -
Nacos服务注册、调用、发现(附源码)
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款更易于构建云原生应用的动态服务发现、配置和服务管理平台。在你的主类或者配置类上添加@EnableDiscoveryClient注解,这样你的服务就可以注册到Nacos Server了。Nacos是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。通过这种方式,Nacos实现了服务的自动注册、发现和调用,大大简化了微服务架构的复杂性。进去发现是没有任何服务的。原创 2024-07-03 10:31:03 · 2323 阅读 · 0 评论 -
阿里Nacos下载、安装(保姆篇)
通过码云拉取的是源文件需要自己编译一下(通过安装包解压的可以跳过)–管理员打开cmd,进入Nacos的根目录,执行。码云拉取(如果国外较慢或者拉取超时可以试一下国内地址),原来默认的是集群,现在修改为单机模式。访问测试:用户名/密码:nacos。完成之后会看到如下几个文件,则为成功。,可以进入bin路径也可以双击。2.maven环境配置。1.java环境配置。原创 2024-07-01 10:51:22 · 3033 阅读 · 2 评论 -
JUC框架(Future & CompletableFuture详解)
Java的Future模式使得我们可以编写非阻塞的并发代码,提高了程序的响应性和吞吐量。然而,需要注意的是,Future只提供了基本的异步计算功能,对于更复杂的并发场景(如多个异步任务的组合、依赖关系等),可能需要使用更高级的并发工具,如CompletableFuture原创 2024-05-29 08:28:59 · 1290 阅读 · 0 评论 -
JUC框架(Semaphore、CountDownLatch、CyclicBarrier)
Semaphore(信号量)是Java并发包java.util.concurrent中的一个类,它主要用于控制对多个共享资源的访问。与CountDownLatch和CyclicBarrier等并发工具不同,Semaphore通常用于限制对某个资源池(或称为资源集)的并发访问数量CountDownLatch 是 Java 并发工具包 java.util.concurrent 中的一个类,它允许一个或多个线程等待其他线程完成一组操作。原创 2024-05-27 11:26:59 · 1067 阅读 · 0 评论 -
JUC框架(CAS、ATOMIC、AQS)
AQS 的全称为,翻译过来的意思就是抽象队列同步器。这个类在包下面。AQS 为构建锁和同步器提供了一些通用功能的是实现,因此,使用 AQS 能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的Semaphore,其他的诸如FutureTask(jdk1.7) 等等皆是基于 AQS 的。原创 2024-05-26 20:37:01 · 1108 阅读 · 0 评论