
java
程序员食堂
一个写了10多年bug的程序员。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java法定退休年龄计算器
计算方式:2025年起每4个月延迟1个月(例如2025年1月退休年龄为60岁1个月,2026年1月为60岁4个月,依此类推)。出生日期: 1990-09-14。出生日期: 1990-09-14。出生日期: 1990-09-14。退休年月: 2053年09月。退休年月: 2048年09月。退休年月: 2045年09月。(每2个月延迟1个月);(每4个月延迟1个月)。退休年龄: 63岁0个月。退休年龄: 58岁0个月。退休年龄: 55岁0个月。延迟月数: 36个月。延迟月数: 36个月。延迟月数: 60个月。原创 2025-08-13 17:05:41 · 214 阅读 · 0 评论 -
java 批量下载图片代码
【代码】java 批量下载图片代码。原创 2025-03-24 15:23:16 · 416 阅读 · 0 评论 -
java 批量下载doc\excle\pdf
【代码】java 批量下载图片代码。原创 2025-03-24 15:21:51 · 453 阅读 · 0 评论 -
ServletOutputStream failed to write: Broken pipe
如果问题频繁出现,可能是网络不稳定导致的。检查服务器和客户端之间的网络连接,确保没有中间设备(如防火墙、代理服务器)干扰。例如,客户端可能在服务器尝试写入响应之前关闭了连接。确保客户端在请求过程中不会主动关闭连接。例如,客户端可能在获取响应之前就关闭了连接,导致服务器端抛出。:当尝试在一个已经完成或失败的异步请求中继续操作时,会抛出此异常。如果服务器端的异步处理时间较长,可以适当增加超时时间。如果客户端是浏览器,检查是否有脚本或插件可能导致连接中断。在写入响应之前,检查客户端连接是否仍然可用。原创 2025-01-25 15:47:36 · 1512 阅读 · 0 评论 -
javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classp
在 Java 应用程序中,JAXB(Java Architecture for XML Binding)的实现类未找到。JAXB 是用于将 Java 对象与 XML 数据相互转换的 API。开始,JAXB 不再是 JDK 的一部分,而是作为一个独立的模块存在。因此,如果你使用的是 Java 9 或更高版本,并且需要 JAXB 功能,则需要手动添加 JAXB 的实现库(如。添加以下依赖来解决此问题。原创 2025-01-23 09:09:37 · 903 阅读 · 0 评论 -
ConcurrentDateFormat、SimpleDateFormat、DateTimeFormatter 对比
是 Java 中用于日期格式化的三种方式,它们各自有不同的特点和适用场景。:推荐在 Java 8 及更高版本中使用,尤其是需要处理复杂日期时间操作或多线程环境时。功能相对有限,不支持 Java 8 引入的新日期时间 API。,属于旧的日期时间 API(Java 1.1 引入)。所有实例都是不可变的,可以在多线程环境中安全使用。,属于新的日期时间 API(Java 8 引入)。:现代 Java 开发的首选,线程安全且功能强大。功能强大,支持更多的日期时间操作。:适合多线程环境,但需要额外封装。原创 2025-01-21 15:37:07 · 656 阅读 · 0 评论 -
@Serial 注解学习
Serial注解是 Java 14 引入的,用于标记序列化相关的字段或方法,帮助开发者更好地管理序列化过程。官方文档Java 14 文档教程Java 序列化教程。原创 2025-01-04 05:30:00 · 1245 阅读 · 0 评论 -
org.bouncycastle.util.encoders.DecoderException: exception decoding Hex string: invalid characters e
确保您的十六进制字符串只包含有效的十六进制字符。有效的十六进制字符包括数字 0-9 和字母 A-F(不区分大小写)。如果字符串中包含其他字符,就会出现该异常。:如果以上步骤都没有解决问题,那么可能是输入数据本身存在问题。请确保您提供给解码函数的数据是正确格式的十六进制字符串,并且没有其他错误。:如果在字符串中存在无效字符,您可以尝试将其删除或替换为有效的十六进制字符。只保留有效的字符,然后再次尝试解码。:确保您使用正确的方法对十六进制字符串进行解码。检查您当前使用的解码方法是否正确,并根据需要进行更正。原创 2024-12-06 17:24:19 · 899 阅读 · 0 评论 -
error=‘null‘], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand]
表示这是一个订阅命令,通常用于 Redis 的发布/订阅功能。表示在执行 Redis 命令时没有错误,但输出结果为。这可能是因为命令没有返回任何数据,或者数据不存在。是服务和Redis版本不一致导致。更换到 Redis: 6.0+原创 2024-12-04 14:01:56 · 569 阅读 · 0 评论 -
Windows安装openjdk17
运行cmd,输入命令:java -version。双击下面文件,一直下一步。原创 2024-11-27 05:00:00 · 2042 阅读 · 0 评论 -
Java EE 和 Jakarta EE
最近在升级JDK由Java8升级到JDK17.由 Java EE 升级为 Jakarta EE。那么为什么是 Jakarta EE。Java EE(Java Platform, Enterprise Edition)和 Jakarta EE(Jakarta Enterprise Edition)是两个与企业级应用开发相关的技术平台。原创 2024-11-23 05:30:00 · 1712 阅读 · 0 评论 -
如何选择jdk17
AdoptOpenJDK 是一个社区驱动的项目,提供高质量的 OpenJDK 构建。后来,该项目更名为 Adoptium。原创 2024-11-23 05:30:00 · 2880 阅读 · 0 评论 -
计划时间常量TaskConstant
一个Java经常用的quartz常量。原创 2024-11-15 14:28:56 · 194 阅读 · 0 评论 -
LocalDateTime 工具类和测试类
【代码】LocalDateTime 工具类和测试类。原创 2024-11-11 14:23:47 · 314 阅读 · 0 评论 -
JDK 的 -server 参数
JDK(Java Development Kit,Java开发工具包)中的-server选项是用来启动Java虚拟机(JVM)的一个参数,它指定了JVM应该使用服务器模式运行。JVM有两种主要的运行模式:客户端模式(client)和服务器模式(server)。这两种模式的主要区别在于它们在性能和启动时间上的权衡。客户端模式(-client)原创 2024-11-01 15:38:44 · 490 阅读 · 0 评论 -
【java】class lombok.javac.apt.LombokProcessor (in unnamed module @0x338d47b) cannot access class com.
查看项目的jdk,我的版本是JDK17.原创 2024-10-31 10:43:56 · 211 阅读 · 0 评论 -
【linux】centos7 安装openjdk-17
【代码】【linux】centos7 安装openjdk-17。原创 2024-10-24 16:22:41 · 2284 阅读 · 3 评论 -
【linux】centos7卸载默认的jdk
【代码】【linux】centos7卸载默认的jdk。原创 2024-10-24 16:15:13 · 361 阅读 · 0 评论 -
nacos client 本地缓存问题
Nacos Client 在进行服务发现时,也会将服务实例的信息缓存在本地。这样,即使 Nacos 服务器不可用,客户端仍然可以使用缓存的服务实例信息进行服务调用。Nacos Client 会将从 Nacos 服务器获取的配置信息缓存在本地。:当 Nacos 服务器上的配置发生变化时,Nacos Client 会通过长轮询机制(Long Polling)及时获取最新的配置,并更新本地缓存。:Nacos Client 会定期从 Nacos 服务器拉取最新的服务实例信息,并更新本地缓存。缓存文件的路径通常是。原创 2024-09-30 16:15:54 · 2863 阅读 · 0 评论 -
java23发布啦
初学者无需使用单独的语言方言,而是可以为单类程序编写精简的声明,然后随着技能的增长无缝扩展他们的程序以使用更高级的功能。在 Java 编程语言的构造函数中,允许语句出现在显式构造函数调用之前,即super(..)或this(..)。保留构造函数在类实例化期间按自上而下的顺序运行的现有保证,确保子类构造函数中的代码不会干扰超类的实例化。范围值 API 通过JEP 429在 JDK 20 中孵化,通过JEP 446成为 JDK 21 中的预览 API ,并通过JEP 464在 JDK 22 中重新预览。原创 2024-09-21 15:07:42 · 1676 阅读 · 0 评论 -
HTTP/3 协议学习
HTTP/3 是互联网上用于传输超文本的协议 HTTP 的第三个主要版本。它是 HTTP/2 的后继者,旨在进一步提高网络性能和安全性。HTTP/3 与前两个版本的主要区别在于它使用了一个完全不同的底层传输协议——QUIC(Quick UDP Internet Connections),而不是 TCP(Transmission Control Protocol)。原创 2024-06-18 09:18:33 · 1022 阅读 · 0 评论 -
class lombok.javac.apt.LombokProcessor (in unnamed module @0x43a188b6) cannot access class com.sun.t
类lombok.javac.apt.LombokProcessor(在未命名的模块@0x43a188b6中)无法访问类com.sun.tools.javac.processing。JavacProcessingEnvironment(在模块jdk.compiler中),因为模块jdk.compiler不将com.sun.tools.javac.processing导出到未命名的模块@0x43a188b6。原创 2024-06-06 05:30:00 · 1780 阅读 · 0 评论 -
java的unsafe
这个类通常不鼓励普通开发者使用,因为它绕过了Java语言的一些安全性和内存管理机制,可能会导致难以追踪的错误和安全漏洞。类的使用可能会破坏Java的内存安全和类型安全,因此它通常被限制在Java核心库和一些需要高性能或底层操作的库中使用,例如Java的并发库(如。在大多数情况下,使用更高级的API和设计模式来实现你的需求会是更好的选择。类的使用受到了更多的限制,并且Java社区鼓励开发者使用更安全的API来替代。包下的原子类,它们提供了线程安全的、无锁的编程方式。可以获取数组的基地址和元素的大小。原创 2024-05-23 15:09:07 · 474 阅读 · 0 评论 -
Java中transient关键字
如果你希望在序列化和反序列化过程中手动处理。原创 2024-05-22 09:42:23 · 484 阅读 · 0 评论 -
Java的并发集合
当需要修改集合时,它们会创建集合的一个副本进行修改,然后替换原来的引用,这样读操作就不会被写操作阻塞,但写操作成本较高。这意味着在写操作时,会创建一个新的数组副本,并在副本上进行修改,而读操作则直接在原始数组上进行。当需要修改集合时,它们会创建集合的一个副本进行修改,然后替换原来的引用,这样读操作就不会被写操作阻塞,但写操作成本较高。通过这种结构,可以在不加锁的情况下进行高效的查找操作。: 接口代表一个线程安全的队列,其特点是可以在队列为空时阻塞获取元素的线程,或者在队列满时阻塞尝试添加元素的线程。原创 2024-05-21 16:49:07 · 1263 阅读 · 0 评论 -
InaccessibleObjectException: Unable to make field protected java.lang.reflect.InvocationHandler java
应该作为最后的手段,因为它绕过了Java模块系统的安全性和封装性。在可能的情况下,最好通过修改代码或模块描述符来解决问题。来绕过Java的访问控制。但是,这种方法不推荐用于生产代码,因为它可能导致安全漏洞,并且通常被认为是不良实践。通常发生在尝试访问一个由于Java访问控制规则而无法访问的字段或方法时。在Java 9及更高版本中,引入了模块系统,这改变了访问某些类和成员的方式。模块没有对未命名模块(即没有模块描述符的代码)开放。:如果你正在使用模块化应用程序,你可能需要修改。:如果你无法修改模块描述符。原创 2024-05-09 06:00:00 · 4991 阅读 · 0 评论 -
Java17的崛起——newrelic的2024 年 Java 生态系统状
2020 年,Oracle 是最受欢迎的 JDK 供应商,约占 Java 市场的 75%。到 2023 年,大约十分之一 (9%) 的应用程序在生产中使用 Java 17,而现在 35% 的应用程序正在使用 Java 17,一年内增长率接近 300%。Oracle 于 2023 年 9 月发布了 Java 21,这标志着 Java 的一个重要里程碑,对虚拟线程和升级库等预览功能进行了显着改进,并且语法方面也取得了进步,使 Java 与许多更现代的语言相媲美。G1已经是垃圾回收的王者了!原创 2024-05-07 09:54:32 · 1928 阅读 · 2 评论 -
JWK和JWT 学习
和是现代Web应用程序中用于安全通信的两个重要概念。它们都是基于JSON的,并且是OAuth 2.0和OpenID Connect等协议的核心组成部分。官方文档JWT官方网站JWK和JWK Set的RFC文档JWT的RFC文档。原创 2024-05-06 17:11:34 · 2182 阅读 · 1 评论 -
maven打包springboot项目时Unable to find a single main class from the following candidates
报错信息 "Unable to find a single main class from the following candidates" 表示应用程序打包过程中无法确定应用的主类。这通常发生在使用像 Maven 或 Gradle 这样的构建工具进行打包时,构建工具试图自动确定应用的入口点(即包含 main 方法的类),但是没有找到或找到了多个候选类。原创 2024-04-26 10:44:40 · 2173 阅读 · 2 评论 -
jar中没有主清单属性
运行springboot的jar 提示:jar中没有主清单属性。我的pom.xml 的plugins配置是下面。把配置改成下面就可以了。原创 2024-04-24 06:30:00 · 367 阅读 · 0 评论 -
Exception in thread “main“ java.lang.NoClassDefFoundError: cn/hutool/core/util/StrUtil
学习一maven的 scope属性吧。原创 2024-04-19 16:45:48 · 3023 阅读 · 0 评论 -
linux 安装openjdk-1.8
查看到jre 以及java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64。原创 2024-04-17 15:18:44 · 1631 阅读 · 0 评论 -
无效的标记: --release
maven所使用的jdk版本和idea所使用的jdk版本不一致导致的。检查pom.xml,maven和项目使用的jdk版本是否一致。之前一直用java8开发项目。修改idea中的配置。原创 2024-04-16 15:16:47 · 1410 阅读 · 0 评论 -
java使用ShutdownHook优雅地停止服务
在Java程序中可以通过添加关闭钩子,实现在程序退出时关闭资源、平滑退出的功能。使用Runtime.addShutdownHook(Thread hook)方法,可以注册一个关闭的钩子,这个钩子可这通常用于确保在应用程序退出时能够执行一些清理工作,比如关闭文件流、释放资源、断开数据库连接等。要使用ShutdownHook,你需要实现一个Runnable接口,并将其添加到Runtime.getRuntime()的钩子列表中。原创 2024-04-13 10:20:32 · 767 阅读 · 0 评论 -
下载安装JDK17(windows)
以后所发布的所有版本。原创 2024-04-10 11:01:33 · 1162 阅读 · 0 评论 -
几种常见的IO模型学习
Java提供了丰富的IO API,允许开发者以不同的方式进行数据的读取和写入。优点:可以避免 IO 操作阻塞应用程序的执行,并且可以同时处理多个 IO 操作,提高了应用程序的性能。适用场景:适用于需要同时处理多个 IO 操作的场景,例如 Web 服务器。优点:可以避免 IO 操作阻塞应用程序的执行,提高应用程序的并发能力。缺点:IO 操作可能会阻塞应用程序的执行,导致应用程序的性能下降。缺点:需要不断地轮询 IO 操作的状态,增加了应用程序的复杂性。缺点:需要使用特殊的 API,增加了应用程序的复杂性。原创 2024-03-22 14:29:31 · 954 阅读 · 0 评论 -
【spring】使用阿里Spring Initailiz创建项目
网络原因使用Spring Initailiz会出现超时。那我们就换成阿里的。原创 2024-03-13 08:45:00 · 2853 阅读 · 0 评论 -
AES加密学习
AES(高级加密标准)是一种对称密钥加密算法,用于加密和解密数据。它被广泛应用于各种安全领域,包括但不限于网络通信、数据存储和软件保护。AES是由比利时密码学家Joan Daemen和Vincent Rijmen设计的Rijndael算法演变而来的。美国国家标准与技术研究院(NIST)在2001年将其选为新的数据加密标准,以取代旧的DES(数据加密标准)。AES是一种对称密钥算法,这意味着加密和解密使用相同的密钥。它通过一系列复杂的数学变换来加密数据,这些变换包括字节替换、行移位、列混合和轮密钥加。原创 2024-03-06 16:14:38 · 1701 阅读 · 0 评论 -
java8 Duration类学习
方法声明功能描述获取一个 Duration 实例,表示两个时间对象之间的间隔toDays()将时间间隔转换为以天为单位toHours()将时间间隔转换为以时为单位将时间间隔转换为以分为单位将时间间隔转换为以秒为单位toMillis()将时间间隔转换为以毫秒为单位toNanos()将时间间隔转换为以纳秒为单位这个方法用于创建一个表示给定持续时间的Duration对象,单位为纳秒。持续时间可以是从零到Long.MAX_VALUE之间的任何值。用于创建表示特定时间单位的持续时间对象。原创 2024-01-29 16:08:27 · 1159 阅读 · 0 评论 -
java应用CPU过高查找原因
根据进程ID找到占用CPU高的线程。原创 2024-01-13 16:12:55 · 813 阅读 · 0 评论