![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 52
科学熊
充实自我,我思故我在。
华南农业大学
展开
-
Maven:通过相对路径向jar中添加依赖项
但我不想把它添加到存储库中。原因是我希望常用的maven命令(如mvn compile等)能够开箱即用。(无需要求开发人员自己将其添加到某个存储库中)。我希望jar在源代码控制中的第三方库中,并通过相对路径从pom.xml文件链接到它。的意思:在没有私服Nexus或者不想将第三方的Jar上传到私服中,如何操作去使用这个jar。问:我有一个专有的jar,我想把它作为一个依赖项添加到我的pom中。${basedir}是存储文件的目录。原创 2023-11-15 17:35:02 · 982 阅读 · 0 评论 -
通过commons-exec实现定时备份数据库
备份文件的名称使用 yyyy-MM-dd-HHmmss.SSS 格式,包含了年月日时分秒以及毫秒,如:2023-10-22-095300.857.sql。它的使用比较简单,且设计合理,包含了子进程超时控制,异步执行等等功能。使用 commons-exec 启动新进程,调用 mysqldump 执行备份,备份成功后,尝试删除备份目录下那些已经 “过期” 的备份文件,从而达到滚动存储的目的。以及自定义的 “备份配置”,其中指定了备份文件的存储目录,要备份的数据库以及备份文件滚动存储的最大保存时间。原创 2023-10-23 09:37:15 · 234 阅读 · 0 评论 -
Java8 Stream 从入门到精通 一
Java在Java 8中提供了一个新的附加包Java .util.stream。这个包由类、接口和枚举组成,允许对元素进行函数式操作。可以通过导入java.util.stream包来使用stream。Stream的特性:流不存储元素。它只是通过计算操作的管道从数据结构、数组或I/O通道等源传递元素。流本质上是功能性的。在流上执行的操作不会修改它的源。例如,对从集合中获得的Stream进行筛选,会生成一个新的Stream,而不包含已筛选的元素,而不是从源集合中删除元素。原创 2023-10-19 14:39:23 · 117 阅读 · 0 评论 -
consumer罢工,几千万条im聊天数据积压在MQ中,解决思路
最近遇到一个线上问题,consumer出问题了,导致几千万条im聊天数据积压在MQ中几个小时,从下午五点多,积压到晚上十二点多。遇到这种事一种解决办法是,修复consumer,让它慢慢消费。这样搞的话展示不了实力。原创 2023-10-12 15:51:04 · 190 阅读 · 2 评论 -
RabbitMQ死信队列原理与项目代码示例
死信队列(DLQ)非常简单,就一个普通的队列,只不过它是和死信交换机绑定的而已,在声明队列的时候,通过x-dead-letter-exchange参数和x-dead-letter-routing-key指定死信交换机以及死信路由键即可。到这里三种情况都介绍完了,总体来讲RabbitMQ的死信队列还是很简单的。参数dead-letter-routing-key:指定死信路由键,用于绑定死信交换机和死信队列。消息在队列的存活时间超过设置的生存时间(TTL)时间。30秒过期,进入死信队列,然后被消费。原创 2023-10-11 16:50:30 · 359 阅读 · 0 评论 -
Gradle构建报:Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.1.1.
问题是在Gradle构建过程中遇到了解析插件spring-boot-gradle-plugin版本3.1.1失败的问题。错误的原因是插件需要的Java版本是17,而你正在使用的Java版本是8。解决这个问题的方式是升级Java版本。需要一个与插件兼容的Java版本,这里是Java 17。在Gradle构建文件中设置使用的Java版本为17。下载并安装Java 17,如果还没有安装的话。可以在Oracle的官方网站上下载。在系统环境变量中设置JAVA_HOME为新安装的Java 17的路径。原创 2023-10-08 14:53:00 · 2608 阅读 · 0 评论 -
Linux虚拟机搭建RabbitMQ集群
普通集群模式,意思就是在多台机器上启动多个 RabbitMQ 实例,每台机器启动一个。创建的 queue,只会放在一个 RabbitMQ 实例上,但是每个实例都同步 queue 的元数据(元数据可以认为是 queue 的一些配置信息,通过元数据,可以找到 queue 所在实例)。消费的时候,实际上如果连接到了另外一个实例,那么那个实例会从 queue 所在实例上拉取数据过来。原创 2023-10-08 14:33:09 · 1666 阅读 · 0 评论 -
【Java】RSA算法——公钥加密和数字签名的基石,原理解读、代码实现、源码解读
RSA算法是一种非对称加密算法,即它使用两个密钥:一个是公钥,另一个是私钥。公钥可以公开分享,而私钥必须保密。公钥用于加密数据,而私钥用于解密数据。除此之外,RSA算法还可以用于生成数字签名,以验证数据的完整性和来源。原创 2023-09-08 17:00:54 · 3721 阅读 · 1 评论 -
【Java】x-easypdf: 一种简单易用的PDF处理库
其中,x-easypdf是一种简单易用的PDF处理库,可以帮助开发人员轻松地创建、编辑和操作PDF文档。要使用x-easypdf,首先需要将其安装到项目中。编辑PDF文档:您可以使用x-easypdf来添加文本、图像、表格等元素到现有的PDF文档中。操作PDF文档:x-easypdf还提供了许多操作,例如合并、分割、加密和解密PDF文档。生成PDF表单:使用x-easypdf,您可以创建一个包含可填写字段的PDF表单。创建PDF文档:使用x-easypdf,您可以轻松创建一个新的PDF文档。原创 2023-09-08 15:19:04 · 2770 阅读 · 0 评论 -
【Java】OpenPDF、iText、PDFBox 是三种常用的 PDF 处理库
OpenPDF、iText、PDFBox 是三种常用的 PDF 处理库,它们各自具有独特的优势和特点,同时也存在一些局限性和差异。本文将对这四种库进行详细的比较,并通过代码示例来展示它们的使用。原创 2023-09-08 15:12:48 · 4613 阅读 · 0 评论 -
Gradle下载库速度过慢解决办法
最近搞了个Gradle的项目,项目下载依赖库太慢了,于是…原创 2023-09-08 10:44:55 · 15180 阅读 · 1 评论 -
【Java】Java加密API
然后,我们使用Cipher对象的doFinal()方法对明文进行加密,并将加密后的数据转换为字符串输出。需要注意的是,在实际应用中,应该根据具体的加密需求选择合适的加密算法和加密方式,并采取必要的安全措施来保护密钥和加密后的数据。Java加密API是一种用于数据加密的Java类库,它提供了多种加密算法和加密方式,可以用于保护敏感数据和安全通信。Java加密API中还提供了多种加密方式,如数据流加密、文件加密、密码加密等。这些加密方式可以满足不同的加密需求,例如对数据库中的数据进行加密、对文件进行加密等。原创 2023-09-06 20:09:53 · 301 阅读 · 0 评论 -
【Java】Java核心API概述
Java核心API是Java编程语言的基础,包含了Java应用程序中常用的类和接口。本文将介绍Java核心API中的一些重要部分,包括输入输出流、异常处理、集合框架、多线程和网络编程等。原创 2023-09-06 20:07:37 · 410 阅读 · 0 评论 -
【Java】Java反射技术简介
Java反射技术是一种强大的工具,它允许在运行时检查和修改类的行为。通过反射,我们可以加载并操作类,创建对象,调用方法,获取和设置字段等。这种技术在Java编程中非常有用,特别是对于框架,工具和测试代码。需要注意的是,反射的使用可能会破坏封装性,并可能影响性能。因此,反射应该谨慎使用,特别是在性能敏感的代码中。原创 2023-09-06 16:06:44 · 90 阅读 · 0 评论 -
【Java】Java各个版本的特性简要
Text Blocks(Second Preview):Java 13继续提供了对Text Blocks特性的预览,改进了多行字符串的语法和API。Text Blocks(Third Preview):Java 14继续提供了对Text Blocks特性的预览,改进了多行字符串的语法和API。Records(Second Preview):Java 14继续提供了对Records特性的预览,改进了Records的语法和API。原创 2023-09-05 17:52:04 · 848 阅读 · 0 评论 -
【Java】Java各个版本的新特性并有代码示例
Java是一种广泛使用的编程语言,拥有一个庞大的社区和大量的生态系统。自从Java的早期版本以来,它已经经历了许多变化和改进。在这篇文章中,我们将详细介绍Java各个版本的新特性,并使用代码示例进行说明。原创 2023-09-05 17:45:00 · 1392 阅读 · 0 评论 -
【Java】Java虚拟线程:轻量级线程的实现与代码示例
在现代的计算机系统中,多线程编程是一个非常重要的技术,它能够有效地利用多核处理器,提高程序的执行效率。然而,传统的操作系统线程存在一些问题,例如创建和销毁线程的开销较大,线程切换需要操作系统介入等。为了解决这些问题,Java虚拟线程(Virtual Thread)作为一种轻量级线程技术被提出来。Java虚拟线程是在Java虚拟机(JVM)中实现的,也被称为用户线程。与传统的操作系统线程不同,Java虚拟线程的创建和销毁速度更快,开销更小,可以大量创建,更适合轻量级任务场景。原创 2023-09-05 14:53:51 · 358 阅读 · 0 评论 -
【Java】Java虚拟线程开启preview
JEP 425:虚拟线程(预览版)最近被提出。这是java中一个期待已久的特性。我想试一试。所以我下载了JDK的早期版本,其中包含了这个项目。然而,它还在预览阶段。原创 2023-09-05 14:50:40 · 1005 阅读 · 0 评论 -
【Java】Jxls--轻松生成 Excel
Jxls是一个小型 Java 库,可以轻松生成 Excel 报告。Jxls 在 Excel 模板中使用特殊标记来定义输出格式和数据布局。Java 有一些用于创建 Excel 文件的库,例如Apache POI。这些库都很好,但都是一些较底层的库,因为它们要求开发人员编写大量 Java 代码,甚至创建一个简单的 Excel 文件。通常,人们必须手动设置电子表格的每个单元格格式和数据。根据报表布局和数据格式的复杂性,Java 代码可能变得相当复杂并且难以调试和维护。原创 2023-09-05 11:07:09 · 1749 阅读 · 0 评论 -
【Java】Java新特性--Records记录类型
这些方法都是根据Records的字段定义的。例如,如果两个Records具有相同的字段值,则它们被认为是相等的。默认的toString方法将返回包含Records的所有字段及其值的字符串。Records的字段默认是public的,并且具有与它们相应的访问器方法。例如,我们可以使用name()方法来获取name字段的值,使用age()方法来获取age字段的值。在Records的声明中,字段必须是公共的,并且必须具有与它们相应的访问器方法。除了默认的方法外,Records还可以包含自定义的方法。原创 2023-09-05 09:14:23 · 1318 阅读 · 0 评论 -
深入探讨Java虚拟机(JVM)的工作原理与优化策略
本文对Java虚拟机(JVM)的工作原理进行深入探讨,包括其内存管理、垃圾回收以及代码执行等方面。同时,文章还通过具体的代码示例,阐述了JVM的优化策略,旨在提高Java程序的性能。原创 2023-08-23 21:19:06 · 402 阅读 · 0 评论 -
【Java】代理实现重试功能
在有些调用http请求功能中,会因为网络的抖动,使得网络不稳定。这时需要一个功能来实现重试。下面介绍使用JDK的代理功能和Cglib来实现简单的代理重试。Cglib是代码生成库,无需被代理类实现接口。Proxy0的。原创 2023-08-18 10:27:15 · 185 阅读 · 0 评论 -
【文件上传】大文件分片上传、断点续传、秒传前后端实现
针对文件过大的解决办法,可以将文件进行切割成规定大小的几个小文件,再上传。这样要是在文件上传失败情况下,重新上传时检查成功的是那些文件块,失败的是那些文件块,从而只需要再次上传失败的文件块,检测到全部上传之后就合并。校验文件上传状态: 前端生成该文件的MD5密文并进行分片,上传之前请求check-md5接口,传入文件名和密文,接口校验文件是未上传 或 上传了一部分 或 已上传完成三个状态,其中未上传返回自定义状态码404,上传一部分则返回状态206+未上传的分片ID,上传完成则返回状态200。原创 2023-08-17 17:43:26 · 1293 阅读 · 2 评论 -
【idea】社区版idea运行Tomcat
使用 Smart Tomcat插件。原创 2023-08-16 17:56:24 · 1078 阅读 · 0 评论 -
【JUC】ThreadPoolExecutor线程池控制状态ctl
在调用SHUTDOWN()时,可能隐含在finalize()中(RUNNING或SHUTDOWN) -> STOP在调用shutdownNow()时,SHUTDOWN -> TIDYING当队列和池都为空时,STOP -> TIDYING当池为空时,TIDYING -> terminate当terminate()钩子方法完成时,在awaitTermination()中等待的线程将在状态达到terminate时返回。即高位中前3位记录runState,后29位记录workerCount。原创 2023-08-16 17:46:59 · 140 阅读 · 0 评论 -
【JUC】线程池ThreadPoolTaskExecutor与面试题解读
queue,corePoolSize:线程池的核心线程数,定义了最小可以同时运行的线程数量。maximumPoolSize:线程池的最大线程数。队列中存放的任务达到队列容量时,可以同时运行的线程数量变为最大线程数。keepAliveTime:当线程池中的线程数量大于corePoolSize时,如果没有新任务提交,核心线程外的线程不会立即销毁,而是会等待,直到等待的时间超过了KeepAliveTime才会被回收销毁。原创 2023-08-16 17:34:34 · 700 阅读 · 0 评论 -
【java面试题】不定义新变量的情况下交换两个Integer变量
没有引入新变量的话,只能在a、b之间互相计算,将两个变量值信息混合在一起赋值给其中一个变量如a保存,再用另外一个变量b将混合变量a分离出a值赋值给b,那么现在b变量就是原来a的值,再用现在b变量(即原来的a的值)去将混合变量分离出b原来的值赋值给a。上面的变量是包装类:Integer ,传的值是a对象对应的引用句柄值,按理在swap方法处理之后可以在main方法中获取值。,结果就是swap方法栈中的局部变量值a的值指向了新的引用句柄。那传递的是引用的句柄值,那么应该可以修改引用句柄对应的对象的值。原创 2023-08-12 10:43:20 · 473 阅读 · 3 评论 -
【Java】Springboot脚手架生成初始化项目代码
是 Clean Object-Oriented and Layered Architecture的缩写,代表“整洁面向对象分层架构”。Springboot配置生成初始化项目代码可以通过mvn的mvn archetype:generate 和阿里云原生应用脚手架(主要是基于阿里云原生应用的整套解决方案的支持较多,和spring官网提供的初始化配置页面参不多。)、spring官方提供的start初始化生成页面(下面是COLA架构快速生成示例。原创 2023-08-03 14:57:49 · 465 阅读 · 0 评论 -
配置actuator的exposure.include时使用*,报错问题解决
解决办法,加单引号。原创 2023-03-22 14:32:30 · 337 阅读 · 0 评论 -
idea解决命令行太长问题:Command line is too long. Shorten command line
百度一下,上面一堆水文,解决不了问题。下面是亲测可以的方法。idea版本:2021.1.1。原创 2023-03-21 17:41:56 · 708 阅读 · 0 评论 -
安装zookeeper web可视化界面-zkui
将代码下载本地,然后执行命令 mvn clean install ,接着将config.cfg文件复制到可执行jar同级文件中,然后执行 java -jar zkui-2.0-SNAPSHOT-jar-with-dependencies.jar,接着在浏览器中打开http://localhost:9090,账号密码->username: admin, pwd: manager。原创 2022-09-27 16:34:15 · 678 阅读 · 0 评论 -
mybtis-plus 分页插件分页limit限制500
mybtis-plus 分页插件分页limit默认限制500,要想全部查出就传-1。原创 2022-08-24 11:39:38 · 293 阅读 · 0 评论 -
hutoo工具提供的字段校验工具
hutool工具对Hibernate Validator进行了简单包装,在手动字段校验中还是不错的,推荐使用。原创 2022-08-10 16:11:41 · 1372 阅读 · 0 评论 -
java开发中提高效率的小工具
前言在java的庞大体系中,其实有很多不错的小工具.本文会分享17个我们日常工作中一定会用得到的小工具,主要内容如下:1.1 排序在工作中经常有对集合排序的需求。看看使用Collections工具是如何实现升序和降序的:List list = new ArrayList();list.add(2);list.add(1);list.add(3);Collections.sort(list);//升序System.out.println(list);Collections.reverse(..原创 2022-06-17 10:51:49 · 763 阅读 · 0 评论 -
快速开发,推荐两款代码生成器
代码生成器的基本原理都是通过模板(ftl)进行生成,还有一些是通过字符串拼接生成的。1、MAKU/fast-generator可以配置多数据源,在线生成代码,下面是它的代码代码地址2、mybatis-plus的生成器本地项目生成代码mybatis-plus...原创 2022-06-16 17:01:33 · 499 阅读 · 0 评论 -
mysql:@j=@j+1语法
结果:select @j :=0 创建j变量,赋初始值为0,@j:=@j+1为步增1。原创 2022-06-08 14:03:35 · 883 阅读 · 0 评论 -
hutool工具开源贡献
记一次开源贡献原创 2022-05-25 11:10:25 · 82 阅读 · 0 评论 -
中国省市表sql
-- city definitionCREATE TABLE `city` ( `id` int NOT NULL DEFAULT '0', `pid` int DEFAULT NULL, `cityname` varchar(255) DEFAULT NULL, `type` int DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;原创 2021-12-01 11:30:53 · 1254 阅读 · 0 评论 -
Word模板引擎-好用、快速
poi-tl(poi template language)是Word模板引擎,使用Word模板和数据创建很棒的Word文档。在文档的任何地方做任何事情(Do Anything Anywhere)是poi-tl的星辰大海。文档链接原创 2021-10-25 17:03:39 · 185 阅读 · 0 评论 -
同样接口同样请求参数用postman请求后端返回数据和前端请求返回数据不同
postman请求结果:前端请求结果:分析:莫得理由的,所以很大可能是前端数值问题,然后通过测试一下,如下:结论:数字前端溢出,解决方案,将后端返回字段改为string,就ok了。原创 2021-03-31 12:04:06 · 6042 阅读 · 2 评论