自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

时代各有不同,青春一脉相承。

一起学习,一起奋进,一起进步,砥砺前行。

  • 博客(299)
  • 收藏
  • 关注

原创 sleep()和wait()的区别

sleep() : 是Thread类方法,用于使当前线程暂停执行一段时间。它可以被使用在多线程编程中,用于控制线程的执行速度或者创建时间延迟。wait() : 是Object类的方法,让当前线程进入等待(阻塞)WAITTING状态,将线程放入到等待队列中,并释放对象锁。sleep是线程级别的操作,可以让当前线程暂停一段时间。wait是对象级别的操作,使当前线程等待其他线程的通知或特定条件的满足。

2024-01-05 09:30:00 947

原创 Maven多模块项目架构配置介绍和实战

项目采用的是Maven多模块架构,项目的部分子模块的pom.xml中重复引用了相同的JAR包。很明显,当初在配置Maven模块的时候,没有考虑清楚各个模块的架构职责,同时也不了解Maven模块依赖的传递性。主要介绍一下Maven多模块的配置思路和多模块的配置实操。在实操之前,我们先要了解配置概览,配置大致可分为三大步:确定项目需要哪几个模块,项目中的每个模块的依赖关系如何,最后根据依赖关系配置。第一步:确定项目的模块划分;第二步:确定各个模块的依赖关系;第三步:Maven多模块实操。

2024-01-05 08:45:00 1177

原创 Java -SNAPSHOT版本号解析

在Maven中,-SNAPSHOT 后缀是用于标识项目版本为快照(Snapshot)版本的约定。快照版本是处于开发和演进中的版本,通常用于开发人员在构建和测试过程中进行频繁的版本迭代;反之,如果不是Snapshot后缀的包,例如v1.2.21,这说明它是一个相对稳定的版本了,这个版本一经发布,则不能覆盖这个版本,这也是考虑到公共包被多个项目使用,你在一个版本上反复的修改,覆盖,部署,有可能对多个系统产生影响。-SNAPSHOT 后缀用于标识Maven项目的快照版本,它是开发和演进中的版本,包含实时更新的功能

2024-01-04 09:15:00 751

原创 Spring中Autowired原理

构造方法参数Autowire:BeanClass可以在构造方法上标注@Autowired注解,Spring在创建Bean实例时将自动为其注入依赖参数;Spring会优先使用标注@Autowired注解的构造方法;当一个构造方法标注了@Autowired注解且required=true时,其余构造方法不允许再标注@Autowired注解;当多个构造方法标注了@Autowired注解且required=false时,它们会成为候选者,Spring将选择具有最多依赖项的构造方法;如果没有候选者可以满足,Sprin

2024-01-04 07:45:00 579

原创 Java中的public、private、static和final浅谈

public和private两个都是访问权限修饰符,用于控制外界对类内部成员的访问。static是控制类成员变化的修饰符之一。final也是控制类成员变化的修饰符。对于静态变量在内存中只有一个拷贝(节省内存),JVM只为静态分配一次内存,在加载类的过程中完成静态变量的内存分配,可用类名直接访问(方便),当然也可以通过对象来访问(但是这是不推荐的)。对于实例变量,每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个拷贝,互不影响(灵活)。声明为static的方法有以下几条限制:它们仅能调用其

2024-01-03 09:15:00 1473

原创 synchronized和Lock的区别

synchronized和Lock的区别,存在层次上:synchronized: Java的关键字,在jvm层面上。Lock: 是一个接口。锁的释放:synchronized: 1、以获取锁的线程执行完同步代码,释放锁; 2、线程执行发生异常,jvm会让线程释放锁。Lock: 在finally中必须释放锁,不然容易造成线程死锁。锁的状态:synchronized: 无法判断。Lock: 可以判断。性能:synchronized: 少量同步。Lock: 大量同步。

2024-01-03 07:45:00 526

原创 浅谈try-catch写在循环里面好还是外面好

try-catch到底写在循环里面好,还是外面好?很多人会说当然写在循环外面好,也有一部分人说写在循环里面好,其实这两种回答都不完全对,我们来分析下两者的弊端。如果try-catch写在循环外面,一条数据处理异常,循环结束,会导致整个任务的结束,严重影响系统效率。如果try-catch写在循环里面,会造成过多的、没有必要的循环异常处理,会严重影响系统效率。目前没有规范说一定要写在哪里比较好,try-catch写在循环里面或者外面都可以,上面分析了两者的弊端和应用场景,我们也可以根据实际业务场景作出选择。

2024-01-02 21:55:00 446

原创 Spring Boot核心特性、注解和Bean作用域

Spring Core 是 Spring Framework 的基础,为基于 Java 的应用程序提供了全面的编程和配置模型。这里是与 Spring Core 相关的一些关键术语和概念:Bean:在 Spring 中,“bean”是由 Spring 容器管理的 Java 对象。通常使用配置元数据来定义bean,可以在 XML、Java 注释或 Java 代码中指定。控制反转(IoC):Spring 的主要原则之一是控制反转(IoC),这意味着 Spring 容器负责管理bean的生命周期并注入其依赖项。

2024-01-02 21:40:07 1170 1

原创 Java位运算及移位运算

java中能表示整数数据类型的有byte、short、char、int、long,在计算机中占用的空间使用字节描述,1个字节使用8位二进制表示。原码也叫机器码,整数的二进制形式表示,最高位为符号位。1表示负数,0表示正数,除去符号位后剩余其他的所有位是该整数的绝对值的二进制值。反码需要区分是正数还是负数,正数的反码跟原码相同,负数的反码是除符号位外,其他位取反(即负数的最高位是1不变,其他位0变成1,1变成0)。补码也需要区分是正数还是负数,正数的补码跟原码相同,负数的补码是反码最低位加1。

2024-01-01 20:32:33 1215

原创 过滤器和拦截器的区别

什么是过滤器?过滤器是一种用于JavaWeb应用程序中的组件,它可以拦截HTTP请求和响应,以实现一些特定的功能。过滤器可以对请求和响应进行修改,可以阻止请求进入Servlet,也可以修改响应返回给客户端。什么是拦截器?拦截器是一种用于JavaWeb应用程序中的组件,它可以在Servlet执行之前拦截HTTP请求,并对请求进行一些处理,比如登录验证,权限控制,日志记录,编码转换等。拦截器可以根据需要决定是否继续执行Servlet或者返回响应。

2024-01-01 07:45:00 1105

原创 MyBatis中#{}和${}的用法

MyBatis中#{}和${}的用法 区别#{}方式能够很大程度上防止sql注入,${}无法防止sql注入。${}方式一般用于传入数据库对象,例如列表和表名,#{}方式一般用来传递接口传输过来的具体数据。由于#{}方式具有更高的安全行,所以能用#{}的地方尽量不要使用${}。Mybatis排序时使用order by动态参数时需要注意,用${}而不是#{}。

2023-12-31 12:11:17 604

原创 SpringBoot:ConfigurableListableBeanFactory和ApplicationContext的使用场景

在工具类中封装getBean,使用哪个接口来实现?实事上,在工具类中,实现BeanFactoryPostProcessor和ApplicationContextAware接口后,使用它们构造方法里的对象ConfigurableListableBeanFactory和ApplicationContext都可以很方便的获取spring容器里的bean,而在实际应用时,还有有些不同的,比如在我们的@Configuration配置类中,我直接使用ApplicationContextAware里的Applicatio

2023-12-31 12:06:40 1353

原创 常用正则表达式

正则表达式语法元字符:字符匹配符、选择匹配符、限定符、定位符、分组组合和反向引用符。元字符(Metacjaracter)转义号\\ \\符号 说明:在我们使用正则表达式去检索某些特殊字符的时候,需要用到转义符号,否则检索不到结果,甚至会报错。特殊:在Java的正则表达式中,两个\\代表其他语言中的一个\ 。正则表达式三个常用类java.util.regex包主要包括以下三个类Pattern类、Matcher类和PatternSyntaxException。

2023-12-30 18:42:32 1142

原创 SpringBoot加载配置的6种方式

从配置文件中获取属性应该是SpringBoot开发中最为常用的功能之一,简单回顾一下这六种的使用方式:Environment是springboot核心的环境配置接口,@Value注解是Spring框架提供的用于注入配置属性值的注解,pringBoot提供的一种更加便捷来处理配置文件中的属性值的方式,可以通过自动绑定和类型转换等机制,将指定前缀的属性集合自动绑定到一个Bean对象上。@PropertySources注解的实现原理相对简单,只限读取yaml文件,通过@Value注解或Environment.ge

2023-12-30 11:44:50 1082

原创 JDK17:Java HashMap源码解读

HashMap是Map接口的实现类,基于哈希表来存储键值对。HashMap可以存储null的key和value,可以允许多个value为null,但是只能允许一个key为null。JDK1.8之前的HashMap底层数据结构采用数组+链表实现,JDK1.8之后采用数组+链表/红黑树实现。HashMap的默认大小是16,之后每次扩容,容量变成原来的2倍。另外,HashMap不是线程安全的,在多线程环境下,推荐使用ConcurrentHashMap或HashTable(渐被淘汰)。

2023-12-29 08:45:00 877

原创 JDK17:Java LinkedList源码解读

JDK17:Java LinkedList源码解读。LinkedList是List接口的实现类,基于双向链表实现,继承自AbstractSequentialList类,同时也实现了Cloneable、Serializable接口。此外还实现了Queue和Deque接口,可以作为队列或双端队列使用。LinkedList没有像ArrayList有RandomAccess接口的标记,因为LinkedList基于链表实现,链表节点之间的内存地址不连续,只能通过指针来定位,因此无法实现快速随机访问。

2023-12-29 07:45:00 410

原创 JDK17:Java ArrayList源码解读

JDK17:Java ArrayList源码解读。 ArrayList是List接口的实现类,底层基于数组实现,容量可根据需要动态增加,相当于动态数组。ArrayList继承于AbstractList,并且还实现了Cloneable、Serializable、RandomAccess接口。List:表明是列表数据结构,可以通过下标对元素进行添加删除或查找。Serializable:表示可以进行序列化和反序列化操作,可以把对象与字节流相互转换。

2023-12-28 08:45:00 463

原创 Java中jackson常用注解

Java中jackson常用注解 @JsonProperty - 字段命名 @JsonPropertyOrder - 字段序列化顺序 @JsonAlias - 字段别名,反序列化 @JsonIgnore -序列化时忽略字段 @JsonIgnoreProperties - 序列化时忽略某些字段 @JsonInclude - 序列化时作用于满足条件的 @JsonFormat - 设置格式,如日期时间等 @JacksonInject - 反序列化时注入到java对象

2023-12-28 07:45:00 563

原创 Java中LocalDate、Calendar、Date类型进行加减

Calendar是Java中常用的时间处理工具之一,它提供了很多日历类型常见方法,下面是一些常用的方法及对应的代码和运行结果。Calendar是一个抽象类, 无法通过直接实例化得到对象。它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH、HOUR等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

2023-12-27 08:45:00 1043

原创 为什么IDEA建议去掉StringBuilder,而要使用“+”拼接字符串

为什么IDEA建议去掉StringBuilder,而要使用“+”拼接字符串?大家普遍认知中,字符串拼接要用StringBuilder,那为什么idea会建议你是用+呢,那到底StringBuilder和+有什么具体区别呢,我们一起来探究一下。普通的几个字符串拼接成一个字符串,直接使用+因为教材等原因,当前依旧有许多人拼接字符串时认为使用+耗性能,首选StringBuilder。循环拼接一个长字符串,建议使用StringBuilder,虽然+拼接字符串编译后也会变成StringBuilder,但是每次循环处理

2023-12-27 07:45:00 890

原创 Spring Boot中集成各种日志框架Logback、Log4j2和Java Util Logging

Spring Boot支持多种日志框架,包括Logback、Log4j2和Java Util Logging(JUL)。在Spring Boot中,可以通过简单的配置来集成这些热门的日志框架。下面将详细说明如何集成Logback、Log4j2和Java Util Logging,并提供相应的源代码示例。你可以根据自己的需求进行配置和扩展,以满足更复杂的日志需求。

2023-12-26 08:45:00 622

原创 Spring中BeanFactoryPostProcessors的使用和原理

Spring中的BeanFactoryPostProcessor是在Spring容器实例化Bean之后,初始化之前执行的一个扩展机制。它允许开发者在Bean的实例化和初始化之前对BeanDefinition进行修改和处理,从而对Bean的创建过程进行干预和定制化。BeanFactoryPostProcessor接口定义了一个方法:postProcessBeanFactory( ConfigurableListableBeanFactory beanFactory),该方法会在Spring容器实例化所有的Be

2023-12-26 08:30:00 419

原创 HashSet 和HashMap的区别、优缺点、使用场景

HashSet和HashMap是Java集合框架中的两个常用类,它们都用于存储和管理数据,但在使用方式、功能和性能上有很大的区别。HashSet和HashMap的区别 区别一:用途不同 区别二:数据结构不同 区别三:元素类型不同 区别四:方法不同 HashSet的适用场景 数据去重、集合运算;HashMap的适用场景 键值存储、数据索引、需要键值对的功能。

2023-12-25 09:15:00 1428

原创 Java中YYYY-MM-dd格式化时间问题

日期格式化可以说是最常用的一个小知识了,例如格式化成"年-月-日"、“年-月-日 时-分-秒”、“年/月/日”等等,随之也就出现了"yyyy-MM-dd"、"yyyy-MM-dd HH-mm-ss"等格式,使用不当就会出现问题。结果上可以清楚发现2023年时,YYYY转换的日期是有问题的,2022年的转换的是没有问题的。为啥2023的时候会不一致呢,yyyy和YYYY究竟有和区别呢?

2023-12-25 08:15:00 774

原创 常用Git命令

常用Git命令 一般来说,日常使用只要记住下图6个命令,就可以了。但是熟练使用,恐怕要记住60~100个命令。几个专用名词的译名如下:Workspace:工作区;Index / Stage:暂存区;Repository:仓库区(或本地仓库);Remote:远程仓库。在当前目录新建一个 Git 代码库git init 载一个项目和它的整个代码历史git clone [url] 添加当前目录的所有文件到暂存区git add . 提交暂存区到仓库区git commit -m [message]

2023-12-18 09:15:00 194

原创 SpringCloud的项目中bootstrap.yml配置文件与配置中心配置

SpringCloud的项目中bootstrap.yml配置文件与配置中心配置,在 SpringCloud 的项目中,我们常常会碰到另外一个配置文件 bootstrap.yml。这个配置文件主要是用于应用程序上下文的引导阶段,该配置文件的加载是在 application.yml 之前。在 SpringCloud 项目中,我们的配置常由配置中心进行统一管理,这就涉及到本地与远程配置文件的优先级问题。这里只说明遇到过的两种:SpringCloud Config和Nacos。

2023-12-18 08:15:00 701

原创 SpringBoot配置文件加载的优先级及自定义配置

SpringBoot配置文件加载的优先级及自定义配置 Spring Boot使用一个非常特殊的PropertySource顺序,旨在允许合理的值重写,越靠前优先级越高。springboot的4级配置文件1级:file:./config/application.yml 【最高】2级:file:./application.yml 3级:classpath:config/application.yml 4级:classpath:application.yml 【最低】idea中指定配置文件 java -jar命令

2023-12-17 15:02:24 462

原创 redis:五大类型用法

Redis五大类型:字符串(String)、哈希/散列/字典(Hash)、列表(List)、集合(Set)、有序集合(sorted set)五种。Controller:@Resource RedisTemplate redisTemplate;

2023-12-16 21:12:18 393

原创 Spring Boot打包报错Failed to execute goal org.apache.maven.pluginsmaven-resources-plugin:3.2.0

Spring Boot打包报错[ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources) on project helloworld: Input length = 1 -> [Help 1]

2023-12-16 21:08:24 308

原创 win10环境下载安装JDK

win10环境下载安装JDK,首先,要在win10操作系统上安装jdk,就要去oracle官网下载合适的jdk版本。等待下载完成,可以看到这样的一个文件,双击安装包安装。安装jdk,若是需要更改安装路径,点击“更改”按钮来设置好要安装的路径,并单击“下一步”按钮。安装好jdk后,会弹出jre的安装,若要修改安装路径,点击“更改”按钮进行修改,这里建议安装到与jdk在同一个目录下,若不需要更改安装路径,直接单击“下一步”按钮。安装完成,如下图所示,可直接单击“关闭”按钮。

2023-12-12 09:45:00 281

原创 启动jar包命令

启动jar包命令 一、Windows环境 找到jar包的位置;按shift键,点击鼠标右键,选中在此处打开PowerShell窗口;此时进入命令行工具 输入java -jar .\java_web-0.0.1-SNAPSHOT.jar(注意空格)。二、Linux环境 nohup java -jar spring-boot-demo.jar > /dev/null 2>&1 &

2023-12-12 08:15:00 1052

原创 Linux:安装jdk的三种方法(yum+rpm+下载包)

Linux:安装jdk的三种方法(yum+rpm+下载包)1. yum安装jdk2. rpm安装JDK环境3. tar.gz手动安装一般rpm、yum方式安装的不需要配置环境变量,但是若识别不到还是老老实实配置环境变量,若yum安装则默认Java被安装在/usr/lib/jvm(一般不用手动配置),若RPM安装则默认Java被安装在/usr/java/jdk1.8.0-x64(一般不用手动配置)

2023-12-11 09:45:00 10371 2

原创 Redis:常用命令详解

Redis基于内存的key-value数据库;基于c语言编写的,可以支持多种语言的api ,set每秒11万次,取get每秒81000次;支持数据持久化;value可以是string,hash,list,set, sorted set。使用场景:去最新n个数据的操作;排行榜,取top n个数据;精确的设置过期时间;计数器;实时系统, 反垃圾系统;pub, sub发布订阅构建实时消息系统;构建消息队列;缓存。

2023-12-11 08:15:00 138

原创 Docker info 命令

Docker info 命令 docker info :显示Docker系统信息,包括镜像和容器数。查看docker系统信息:docker info

2023-12-10 11:45:00 293

原创 Docker version 命令

Docker version 命令 docker version :显示Docker版本信息。 语法:docker version [OPTIONS] 显示Docker版本信息:docker version

2023-12-10 09:15:00 160

原创 Docker import 命令

Docker import 命令 docker import:从归档文件中创建镜像。从镜像归档文件my_ubuntu_v3.tar创建镜像,命名为ubuntu/ubuntu:v4:docker import my_ubuntu_v3.tar ubuntu/ubuntu:v4 、docker images ubuntu/ubuntu:v4

2023-12-09 08:15:00 197

原创 IDEA项目发布中,Web Application:Exploded和Web Application:Archive的详细解释

IDEA项目发布中,Web Application:Exploded和Web Application:Archive的详细解释 简单总结下:1、web application:exploded:这个是以文件夹形式发布项目,发布项目时就会自动生成文件夹在指定的output directory;(开发)2、web application:archive:就是war包形式,将项目打成一个war包在指定位置;(部署)

2023-12-09 07:30:00 1223

原创 Docker load 命令

Docker load 命令 docker load :导入使用docker save命令导出的镜像。导入镜像:docker image ls 、 docker load < busybox.tar.gz 、 docker images 、 docker load --input fedora.tar 、 docker images

2023-12-08 11:15:00 241

原创 Docker save 命令

Docker save 命令 docker save:将指定镜像保存成tar归档文件。将镜像ubuntu/ubuntu:v3生成my_ubuntu_v3.tar文档:docker save -o my_ubuntu_v3.tar ubuntu/ubuntu:v3

2023-12-08 07:45:00 163

原创 Docker history 命令

Docker history 命令 docker history :查看指定镜像的创建历史。查看本地镜像ubuntu/ubuntu:v3的创建历史:docker history ubuntu/ubuntu:v3

2023-12-07 11:15:00 136

Dockerfile自定义镜像 基于Ubuntu构建Java项目的资料

Dockerfile自定义镜像。基于Ubuntu构建Java项目的资料

2023-03-18

前端html+css+js实现圣诞树源码

前端简单实现前端网页圣诞树效果。 前端html+css+js实现圣诞树效果

2022-12-18

JDK1.8 API中文文档、JKD17 API文档

压缩包中明细: 1、JDK1.8 API中文文档; 2、JKD17 API文档

2022-12-03

Spring项目bean实例化代码

Spring项目bean实例化代码,包括bean是如何创建的;实例化bean的三种方式,构造方法,静态工厂和实例工厂。

2022-10-16

号段数据库-A(双击选格式下载)

号段数据库-A(双击选格式下载),473270条数据,数据文件格式有sql、xlsx、CVS、txt、mdb。

2022-10-15

Spring项目bean基础配置代码

Spring项目bean基础配置项目代码,bean的配置中主要有bean基础配置,bean的别名配置,bean的作用范围配置。

2022-10-15

Spring项目IOC入门案例、Spring项目DI入门案例的代码

文章Spring项目IOC入门案例、文章Spring项目DI入门案例的原代码。方便大家沟通学习。

2022-10-15

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除