
Java学习笔记
文章平均质量分 81
本专栏主要记录Java编程语言基础知识,有些是日常工作中实际遇到的需求,有些则是空闲时间学习的知识点。笔记也会找时间同步到我的知识星球,关注公众号,加入星球即可免费查看所有笔记文章。少喝一杯奶茶,多学一份知识。
Mr.小朱同学
Java 开发工程师,从事 Web 应用程序的研发,擅长 Spring、SpringBoot 等技术。
热爱编程,业余时间学习新知识,通过 CSDN 记录学习心得和笔记内容。
展开
-
【CICD运维】GitLab + Shell + Minio实现应用程序自动打包,自动生成版本号,并且上传到Minio对象存储系统归档保存
针对上面发现的问题,于是,我就想着,是不是可以写一个脚本,每次等GitLab流水线执行完成之后,自动的生成符合要求的版本号,然后将前、后端的包文件,统一压缩到指定版本号的目录中,最后,再将版本包复制到Minio系统存放路径下面。于是,查找了一些资料,发现Minio官方提供了一个专门和Minio服务端进行交互的客户端工具,叫做:【Minio Client】,简称:【mc】,mc中提供了很多的命令,其中就有一个【mc cp】命令,这个命令就是复制文件的。原创 2024-10-16 21:46:58 · 297 阅读 · 0 评论 -
AES加密、解密工具类
这篇文章,主要记录一下AES加密、解密的工具类代码,在需要使用的时候,直接复制黏贴即可。原创 2024-06-11 17:41:51 · 451 阅读 · 0 评论 -
MD5加密工具类
这篇文章,主要记录一下MD5加密、校验的工具类代码,在需要使用的时候,直接复制黏贴即可。原创 2024-06-11 17:35:45 · 226 阅读 · 0 评论 -
【JavaParser笔记04】如何使用JavaParser依赖库生成Java类、接口、方法、属性、注释等内容
一、JavaParser代码生成1.1、引入依赖1.2、生成Java类1.3、生成属性和setter、getter方法1.4、生成方法前面几篇文章介绍了如何JavaParser依赖解析Java源代码文件中的内容,JavaParser不仅可以解析Java源代码,而且还可以生成对应的Java代码,例如:生成Java类和接口、生成方法、生成属性、生成注释内容等等。这篇文章就介绍一下,如何使用JavaParser依赖生成Java代码。首先在项目工程中,引入javaparser-core依赖和javaparser原创 2024-04-27 10:42:59 · 558 阅读 · 0 评论 -
【JavaParser笔记03】使用JavaParser解析Java源文件,生成Apifox接口请求参数的JSON Schema
什么是JavaParser依赖库呢???我们来问下通义千问,看看它是怎么回答的,如下所示:JavaParser是一款强大的开源Java源代码解析工具,它能将Java源代码转换成抽象语法树(AST, Abstract Syntax Tree),从而方便开发者对Java源代码进行静态分析、修改和生成。利用JavaParser,你可以轻松地获取源代码中的各种元素,包括但不限于类、接口、方法、变量、注释等,并且可以进行深入的语义分析。例如,要使用JavaParser获取类文件中的Javadoc注释和对应的字段属原创 2024-04-01 12:30:00 · 245 阅读 · 0 评论 -
【JavaParser笔记02】JavaParser解析Java源代码中的类字段信息(javadoc注释、字段名称)
在JavaParser中,采用FieldDeclaration对象来表示一个成员属性,通过FieldDeclaration对象,可以获取到成员属性的一些信息,并且也可以调用对应方法,生成代码等操作。通过上面的回答,相信你已经大概了解JavaParser依赖库的作用啦,其实简单来说,就是通过这个JavaParser依赖库,你可以获取到Java源文件中的一些相信,从而实现自己的一些需求,例如:根据Java源代码中的javadoc注释以及字段属性,生成接口文档之类的。什么是JavaParser依赖库呢?原创 2024-03-31 12:28:41 · 595 阅读 · 0 评论 -
【JavaParser笔记01】JavaParser解析Java源代码中的类信息(javadoc注释、类名称)
利用JavaParser,你可以轻松地获取源代码中的各种元素,包括但不限于类、接口、方法、变量、注释等,并且可以进行深入的语义分析。通过上面的回答,相信你已经大概了解JavaParser依赖库的作用啦,其实简单来说,就是通过这个JavaParser依赖库,你可以获取到Java源文件中的一些相信,从而实现自己的一些需求,例如:根据Java源代码中的javadoc注释以及字段属性,生成接口文档之类的。在实际开发中,根据不同的需求,你可以灵活运用JavaParser实现复杂的源代码分析和处理任务。原创 2024-03-31 12:17:35 · 895 阅读 · 0 评论 -
【多线程笔记04】多线程之停止线程、取消线程任务的几种方式
最近工作里面有这样一个需求,前端需要导入excel文件,后端将数据保存到数据库里面,入库之前,需要校验excel数据是否合法,只有满足一定业务规则的数据,才可以入库,另外需要给前端一个导入进度值,也就是说前端要可以看到进度条的效果,并且还有一个取消的功能,点击取消之后,已经导入的数据就不管了,还没有导入的数据就不需要入库操作。如何控制变量来停止线程呢?看到这里,你或许会问,这个变量定义成了静态的,那么多个线程同时执行,只要有一个线程将isStop修改成true,那么其实的所有线程岂不是也都停止了?原创 2024-01-28 14:36:49 · 665 阅读 · 0 评论 -
【反射笔记01】Java基于反射机制实现给对象中的某些字段进行赋值
不知道你有没有在日常的开发工作中,遇到过这种情况,你的数据表中存在下面这些常见的字段:create_user_id,create_user_name,create_time,update_user_id,update_user_name,update_time,在Java工程中新增数据、修改数据的时候,你每次都要调用entity对象的setXxx()方法去给对象赋值,于是你就写出了下面这种代码:原创 2024-01-28 11:48:42 · 208 阅读 · 0 评论 -
【screw-core依赖】Java使用screw-core依赖库生成数据库表结构文档
目前在我参与的项目开发中,使用到了screw-core依赖库,这个依赖库是用于生成数据库表结构文档的,为什么要生成表结构文档呢?这种方式虽然可以,但是有一个文档,我们直接搜索表名称,就可以快速定位到对应的数据表结构信息,那不是更加的一目了然吗?screw-core是需要连接到你的数据库,然后获取到数据库中的数据表信息,最后根据每一张数据表信息生成对应格式的文档,文档格式支持:html、markdown、word三种。到此,Java使用screw-core依赖库生成数据库表结构文档就完成啦。原创 2024-01-24 22:14:32 · 286 阅读 · 0 评论 -
【oshi-core依赖】Java获取计算机的内存信息、磁盘信息、CPU信息
最近在工作中,遇到了一个这样的需求,大概需求内容是:编写一个定时任务,每隔5分钟获取一次当前计算机的CPU、磁盘、内存等使用情况,如果超过设置的阈值,就需要给对应的系统人员发送消息提示,告知管理人员及时处理。从这个需求中,可以看出我们需要的做的事情就是获取当前计算机的使用情况,那么问题来了?如何使用Java获取到当前计算机的相关信息呢???下面介绍如何使用oshi-core依赖库,获取当前计算机的相关信息。原创 2024-01-24 21:36:47 · 762 阅读 · 0 评论 -
【集合排序】Java语言中实现集合排序的几种方式
有些场景下,可能需要对集合进行多个字段的排序,例如:先根据年龄排序,年龄相同的情况下,则再根据ID排序。一般情况下,我们不会使用自然排序,因为使用自然排序,那么排序规则就固定死了,失去了排序的灵活性。我们通常会使用带有参数的sorted()方法,然后传递一个Comparator比较器对象,灵活的指定自定义的排序规则。前面一种排序方式下,我们需要自己实现Comparator比较器方法,代码有些复杂化了,JDK中Comparator类提供了一些快速创建比较器的方法,我们可以直接拿来使用,简化代码的编写。原创 2024-01-21 15:28:23 · 191 阅读 · 0 评论 -
【Guava笔记01】Guava Cache本地缓存的常用操作方法
Guava是google提供的一个通用工程模块,它提供了很多常用的核心库功能,例如:集合操作Collections、并发编程库、通用注解库、字符串处理的依赖库、I/O操作的库、Cache本地缓存库等等。你可以把guava看作和hutool工具包差不多。原创 2024-01-19 20:52:04 · 625 阅读 · 0 评论 -
【FTP文件下载】Java基于commons-net依赖包实现从FTP服务器下载文件(亲测可用)
为了能够模拟从FTP服务器上面下载文件,这里在开始之前,我自己在Windows电脑上搭建了一套FTP服务器,目的是用作测试环境,当然啦,在实际工作里面,肯定是用不到的啦,大家忽略就行,直接跳到第二部分。apache提供了一个commons-net依赖包,这个包主要是包含了一些访问网络的工具类以及一些常见网络协议的实现,例如:Echo, Finger, FTP、NNTP、NTP、POP3(S)、SMTP(S)、Telnet、Whois。我们就使用这个依赖来完成FTP文件的下载功能。原创 2023-10-15 16:44:27 · 569 阅读 · 0 评论 -
【下载共享文件】Java基于SMB协议 + JCIFS依赖下载Windows共享文件(亲测可用)
这篇文章,主要是介绍一下如何基于SMB协议,下载Windows共享文件,既然是Windows共享文件,那首先就需要有这么个测试环境,所以,我们第一步就自己搭建一个Windows共享文件服务。使用Java语言访问Windows共享文件,有一个现成的依赖库,叫做:jcifs,引入这个依赖就可以访问Windows共享文件,另外,这个库在2010年开始就不再更新了。在【共享】界面中,点击【共享】按钮,此时会再次弹出一个窗口,添加你需要共享目录的用户,然后点击添加,最后点击共享按钮即可。原创 2023-10-15 14:49:06 · 689 阅读 · 0 评论 -
【JDK】如何使用Java中的Robot和Toolkit两个类,实现根据好友昵称,自动发送微信消息的代码
这篇文章主要是介绍如何使用Java语言,实现自动给微信好友发送消息的功能,它的核心思想就是:调用windows系统中的快捷键功能,打开微信相应的界面,最后进行消息发送。微信默认的快捷键如下所示:第一步:电脑首先要登录自己的微信账号。第二步:使用Java调用windows系统的快捷键【Ctrl + Alt + W】,快速打开微信界面。第三步:使用Java调用windows系统的快捷键【Ctrl + F】,将光标聚焦到微信搜索输入框中。原创 2023-07-28 14:38:57 · 334 阅读 · 0 评论 -
【图片下载】如何使用JDK中提供的URLConnection对象实现图片的下载功能
这篇文章,主要介绍如何使用JDK中提供的URLConnection对象实现图片的下载功能。JDK中提供的URL、URLConnection类是用于网络编程中的,URL类是对URL地址的一个抽象,表示的是统一资源定位符对象,URLConnection是一个资源的链接对象,用于和网络资源建立请求链接关系,使用URL和URLConnection两个类可以实现网络资源的访问和下载功能,其中URLConnection类有一个常用的子类是HttpURLConnection,这篇文章就需要介绍一下如何实现图片的下载功能。原创 2023-07-11 21:44:22 · 299 阅读 · 0 评论 -
【Maven笔记】Maven项目依赖管理、项目构建工具的基本使用方法
maven是使用java语言编写的一个【构建】和【依赖】管理工具,它可以管理项目的依赖关系、对项目进行构建、打包、部署操作。清理clean:删除上一次构建的东西。编译compile:将java源代码编译生成class字节码。测试test:对源代码进行测试。报告report:对测试的结果生成一份报告信息。打包package:将项目打包成jar或war包。安装install:将生成的jar或者war包安装到本地仓库。原创 2023-05-09 19:46:08 · 701 阅读 · 0 评论 -
【网络编程】JDK网络编程之Socket和ServerSocket类的使用
Socket是JDK中提供的一个类,主要用于网络编程,网络通信,Socket表示客户端的通信连接,客户端通过Socket和服务器进行通信连接之后,就可以通过Socket和服务器进行数据的传输,下面介绍Socket类如何使用。原创 2023-04-02 09:47:43 · 257 阅读 · 0 评论 -
【验证码工具类】Java实现图形验证码工具类
最近工作中遇到一个生成图形验证码的需求,本来想着引入一个图形验证码的依赖直接使用,但是为了不引入太多的依赖,所以就想了下,还是自己写一个图形验证码工具类,下面给出图形验证码的工具类代码。原创 2023-03-27 21:01:04 · 567 阅读 · 0 评论 -
【自定义maven骨架】IDEA如何自定义一个的maven骨架,解决maven骨架添加之后不显示的问题
打开IDEA,创建一个maven的快捷工程,这个工程就是后面我们要将其变成一个自定义maven骨架的项目,我们可以在这个项目里面添加一些公共的代码之类的,这样每次创建一个新项目的时候,就不要重复编写这些代码。创建maven工程。自定义一个maven骨架名称。修改工程里面的代码,改成我们自己需要的,例如:我这里创建了一个TestController和Application类。经过上面几个步骤,自定义的maven骨架已经完成了,下面就需要告诉IDEA去哪里找自定义的maven骨架信息。原创 2022-12-14 21:50:19 · 1266 阅读 · 0 评论 -
【Java合并图片】使用Java实现两张图片合并成一张图片的功能(水平合并、垂直合并、透明背景颜色)
这篇文章,主要介绍如何使用Java实现两张图片合并成一张图片的功能。图片合并工具类可以实现的功能:垂直合并两个图片,水平合并两个图片(PS:可以推广到多个图片的合并)。设置合并的图片是否居中显示。设置合并图片的背景颜色,透明背景。设置合并图片的间隙。合并之后的图片输出成一个图片文件。合并之后的图片转换成base64编码字符串。原创 2022-10-19 12:37:37 · 8908 阅读 · 3 评论 -
【多线程笔记03】JDK中ThreadPoolExecutor线程池及其原理介绍
ThreadPoolExecutor是JDK中提供的一个专门用于管理线程的执行器,它被称作:【线程池】,位于【java.util.concurrent】包下,是属于JUC并发编程中的一个类。之所以要使用线程池,是因为如果项目中有很多地方使用到了线程,那么对于这些线程来说,就不好管理,为了方便管理这些线程,并且节约系统资源,所以就提出了线程池的概念,即:将所有的线程都放入统一的容器里面,要使用线程的时候,统一从这个容器里面获取,线程使用结束的时候,统一由这个容器进行销毁,这个容器就叫做:【线程池】。原创 2022-10-17 15:58:57 · 508 阅读 · 0 评论 -
【JDK】Java语言中URL和URLConnection类的介绍及其相关方法
URL,它是位于【java.net】包下面的一个类,该类主要是对资源地址的一个抽象表示,URL英文全称是:【Uniform Resource Locator】,中文含义表示【统一资源定位符】。什么是统一资源定位符呢???在计算机的世界里面,我们所能够看到的所有的信息,图片,视频等等,它们都是存在不同的计算机上面的,我们把这些信息统称为:【资源】。我们要想通过浏览器就能够找到对应的资源,那就需要根据统一资源定位符找到该资源的具体位置,然后从这个位置下载到浏览器本地,这也是统一资源定位符的主要作用,即:原创 2022-10-11 23:20:00 · 1204 阅读 · 0 评论 -
【Stream API笔记02】JDK1.8新特性之Stream API中Collectors类相关方法的使用
Collectors类,是JDK1.8开始提供的一个的工具类,它专门用于对Stream流中的元素各种处理操作,Collectors类中提供了一些常用的方法,例如:toList()、toSet()、toCollection()、toMap()、toConcurrentMap()方法,以及一些分组聚合的方法。原创 2022-10-03 22:26:20 · 521 阅读 · 0 评论 -
【定时任务】使用JDK自带的Timer和TimerTask实现定时任务功能
Timer是JDK中提供的一个专门用于执行定时任务的类,它位于【java.util】包下面,Timer类提供了启动和取消定时任务的一些方法,而具体执行的任务则是通过TimerTask定义的。TimerTask是一个线程类,TimerTask类实现自Runnable接口,我们在使用的时候,都是将定时任务具体执行逻辑写在线程的【run()】方法里面,然后通过Timer类中的方法开启线程执行。原创 2022-10-03 10:28:00 · 1215 阅读 · 0 评论 -
【多线程笔记02】多线程之CyclicBarrier的介绍和使用
CyclicBarrier是JDK中提供的一个类,该类位于【java.util.concurrent】包下面,这个包下的所有类都是JDK专门提供用于并发编程的,简称:【JUC】。CyclicBarrier中文含义是:循环栅栏,使用该类可以让一组线程处于阻塞状态,只有当这组线程都准备就绪后,才会一起开始执行。CyclicBarrier底层是基于Condition和ReetrantLock实现的,具体原理不介绍(我也不会v_v。原创 2022-09-30 16:02:14 · 968 阅读 · 0 评论 -
【多线程笔记01】多线程之CountDownLatch介绍及其使用
CountDownLatch是JDK提供的一个多线程间通信的类,该类位于【java.util.concurrent】包下,CountDownLatch主要用于一个线程需要等待另一个线程执行完成之后,才可以继续执行的场景里面。CountDownLatch底层是基于AQS(抽象队列同步器)实现的,它的基本原理大致如下所示:创建CountDownLatch对象的时候,指定一个线程数量,此时内部会维护一个state计数器,用于表示线程的数量。这个时候,自己就可以创建一些子线程处理相应的业务逻辑。原创 2022-09-30 10:00:47 · 1349 阅读 · 2 评论 -
【WebService笔记03】WebService接口开发之WSDL文档
WSDL,英文全称是:Web Services Description Language,中文含义是:网页服务描述语言,WSDL是就是一个用于描述WebService接口出入参等报文信息的。WSDL是由W3C组织统一规定的一个WebService接口描述文档规范,所有的WebService接口都是符合WSDL文档规范的。为什么需要WSDL描述文档呢???通过前两篇文章的学习,我们学会了如何使用JWS和CXF两种方式实现WebService接口的发布和调用,文章地址:【原创 2022-09-29 16:52:49 · 2134 阅读 · 0 评论 -
【WebService笔记02】使用CXF框架实现WebService接口的发布和调用
上一篇文章,介绍了如何使用JDK提供的JWS实现WebService接口的发布和调用,不知道的小伙伴可以看下下面这篇文字,使用JWS有一个缺点,那就是调用WebService接口的客户端代码,需要开发人员自己编写,并且一个WebService接口就需要编写四五个客户端的类代码,可以想到,如果接口非常多,这将是一个非常庞大的任务,所以为了简化WebService接口的调用代码,就出现了很多的框架,这篇文章介绍的就是CXF框原创 2022-09-29 14:13:46 · 1706 阅读 · 1 评论 -
【Stream API笔记01】JDK1.8新特性之Stream API中常见的方法及其使用方式
Stream是JDK1.8新增的一个特性,它是一个位于【java.util.stream】包下面的接口,接口中定义了用于操作数据的公共方法,Stream被称作:【流】,它的意图就是可以按照流的方式对数据进行一些加工处理,实际开发里面最常见的就是操作集合数据,通过Stream API可以编写很少的代码就完成某一个功能,相比于传统的集合处理方式,Stream API显示更加的优雅、高效。Java中可以将Stream API方法大致分为两类,分别是:【中间方法】和【终端方法】。原创 2022-09-23 23:20:10 · 979 阅读 · 0 评论 -
【WebService笔记01】使用JWS实现WebService接口的发布和调用
JDK中提供了专门用于操作WebService接口的类,它位于【javax.jws】包下面,JWS是一个实现WebService接口的轻量级方式,JWS是JDK自带的,无需引入第三方的jar包依赖,下面介绍如何通过JWS实现WebService接口的对外发布。原创 2022-09-21 23:03:18 · 2097 阅读 · 0 评论 -
【Optional类】JDK1.8新特性之Optional类的使用
在我们平常开发过程中,如果程序逻辑考虑不全,就有可能导致空指针异常NullPointerException,也就是我们常说的NPE。出现空指针异常的根本原因,就是我们在使用某个对象的时候,没有判断这个对象是否可以为null,如果这个对象为null,那么在调用其对应方法的时候,就会抛出空指针异常。// 判空校验throw new RuntimeException("obj对象不能为空");}}但是,从JDK1.8开始,就专门提供了一个处理NPE异常的类,即:【Optional】类。原创 2022-09-19 22:53:07 · 831 阅读 · 2 评论 -
给大家推荐几个IDEA好用的插件
IDEA几个好用的插件第一个:activate-power-mode编写代码时,可以有一些特殊效果。编辑界面有些抖动的效果。第二个:Nyan progress bar这是一个可以设置加载进度条为彩色的。第三个:Rainbow Brackets可以将括号设置成不同的颜色。第四个:Background Image Plus给IDEA设置背景图...原创 2019-10-01 10:13:44 · 341 阅读 · 0 评论 -
IDEA使用Git将本地工程推送到远程仓库
本篇文章介绍一下,IDEA开发工具如何使用Git将本地工程推送到远程仓库,具体步骤如下所示。目录(1)创建gitee远程仓库(2)创建本地工程(3)初始化本地仓库(4)提交代码到本地仓库(5)推送本地仓库到远程仓库(6)远程仓库查看是否成功,环境准备,安装Git工具 安装IDEA开发工具 搭建一个maven工程(1)创建gitee远程仓库这里使用gitee码云作为远程仓库,创建【idea_git_test】远程仓库,然后初始化仓库即可。找到仓库地址,这个地址.原创 2021-12-19 15:14:07 · 23170 阅读 · 2 评论 -
eclipse安装lombok插件
eclipse安装lombok插件步骤(1)下载lombok插件可以官网下载(lombok下载),也可以通过maven下载,然后找到对应的lombok的jar文件。下载lombok之后,将lombok对应的jar文件放到eclipse安装目录中,和【eclipse.ini】文件位于同一级目录。(2)运行lombok的jar文件双击lombok的jar文件,弹出如下界面,点击确定即可。点击确定后,选择【Specify location】,在弹出窗口中,选择eclipse安装目.原创 2021-07-22 20:07:02 · 12718 阅读 · 0 评论 -
Tomcat目录结构介绍
Tomcat解压之后,目录结构如下所示:Tomcat目录结构介绍(1)bin目录bin目录用于保存tomcat中的一些常用命令,里面的文件分为两类:.sh结尾和.bat结尾。windows系统下,使用.bat结尾的文件 linux系统下,使用.sh结尾的文件常见的如:startup.sh、startup.bat启动Tomcat容器的命令 shutdown.sh、shutdown.bat停止Tomcat容器的命令(2)conf目录conf目录下,保存的是Tom..原创 2021-07-24 14:02:07 · 743 阅读 · 4 评论 -
【日常工作】jdk的安装以及配置环境变量
一、jdk安装及配置环境变量1.1、jdk下载及安装(1)jdk下载jdk可以去官网下载:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html但是官网下载,需要登录oracle账号之后,才能够下载。可以注册一个oracle账号后在下载,也可以从我的网盘下载。阿里云盘下载地址:https://www.aliyundrive.com/s/xuFpUbGJMp(2)jdk安装.原创 2021-10-24 10:37:53 · 2795 阅读 · 0 评论 -
git bash一些常用的命令教程
本Git教程,主要介绍一下几种Git操作:1. 创建项目git clone、git init2. 添加代码到本地仓库,推送本地仓库代码到远程仓库3. 创建分支,推送分支,合并分支4. 删除分支,回退版本原创 2020-03-29 13:37:19 · 215 阅读 · 0 评论 -
【Servlet笔记01】花了一天时间,两万多字整理了一部分Servlet相关的学习笔记
我之前写了一个简易版的Tomcat程序,有兴趣的朋友可以去看看【简易版本的Tomcat】。主要是介绍了Tomcat简单的请求和响应处理过程,看完之后,可能会对Servlet运行原理有一点帮助。目录一、Servlet介绍(1)什么是Servlet(2)Servlet的优缺点(3)Servlet运行环境二、第一个Servlet案例(1)创建Java工程(2)创建第一个Servlet文件(3)FirstServlet类中编写内容(4)编写web.xml配置文件(.原创 2022-04-12 22:58:45 · 406 阅读 · 0 评论