Java
文章平均质量分 68
Ahuuua
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spring Bean作用域深度解析
Spring Bean作用域解析 Spring框架提供了六种Bean作用域,用于定义Bean实例的生命周期和可见范围。核心作用域包括: singleton:默认作用域,容器内唯一实例 prototype:每次请求创建新实例 request:绑定HTTP请求生命周期 session:绑定用户会话周期 application:绑定ServletContext生命周期 websocket:绑定WebSocket会话周期 不同作用域适用于不同场景,如单例适用于无状态服务,请求作用域适合存储请求级数据,会话作用域则用原创 2025-12-23 11:42:40 · 977 阅读 · 0 评论 -
Spring 事务传播行为详解
Spring事务传播行为定义了事务方法嵌套调用时的事务边界界定规则,主要包括7种类型: REQUIRED(默认):有事务则加入,无则新建 SUPPORTS:有事务则加入,无则非事务执行 MANDATORY:强制要求当前必须有事务 REQUIRES_NEW:始终新建独立事务,挂起原事务 NOT_SUPPORTED:强制非事务执行,挂起原事务 NEVER:禁止在事务中执行 NESTED:嵌套事务(基于保存点)原创 2025-12-23 13:45:37 · 802 阅读 · 0 评论 -
Java 格式化输出String.format() 详解
Java字符串格式化方法String.format()详解 摘要:本文详细介绍了Java中String.format()方法的语法结构和应用场景。主要内容包括:1)基本语法解析,展示浮点数精度控制示例;2)格式说明符的完整结构,涵盖转换类型、宽度精度和标志位;3)实际应用示例,如数字格式化、字符串对齐和日期处理;4)参数索引与重用技巧;5)常见问题解决方案,包括浮点数精度处理和本地化支持。文中提供了大量代码示例,帮助开发者掌握格式化字符串的各种用法,适用于金融金额、表格数据等多种格式化需求。原创 2025-12-23 16:00:46 · 730 阅读 · 0 评论 -
教会你如何编写Spring AOP 切点表达式
Spring AOP使用AspectJ切点表达式,核心是execution指示器,通过通配符*(匹配单个元素)和..(匹配多个元素)实现灵活配置。表达式格式包括访问修饰符、返回值类型、包路径、方法名和参数列表。示例场景包括匹配特定包下的public方法(com.example.service.*.*(..))、子包方法(..*)、特定返回值(String)或方法前缀(find*)。还支持within匹配包内方法、@annotation匹配注解方法等指示器,实现精准切面编程。原创 2025-12-23 11:00:07 · 326 阅读 · 0 评论 -
IDEA Maven下载依赖时报错: ERROR - #org.jetbrains.idea.maven - Cannot reconnect.
IDEA Maven下载依赖时报错: ERROR - #org.jetbrains.idea.maven - Cannot reconnect. Caused by: java.rmi.RemoteException: Cannot start maven service; nested exception is: java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:原创 2022-09-29 17:25:30 · 4017 阅读 · 0 评论 -
Java如何判断对象已死亡?
Java如何判断对象已死亡? GC Roots对象有哪些?原创 2022-05-12 15:33:07 · 567 阅读 · 0 评论 -
面试官:介绍下Spring MVC
1、介绍下SpringMVCSpringMVC是一种基于MVC设计模式的Web框架。SpringMVC通过注解,让简单的Java类成为处理请求的控制器,而无需实现任何接口。同时它还支持RESTful编程风格请求。在B/S架构中系统的标准三层架构为表现层、业务层、持久层。表现层就是常说的Web层,负责接收客户端请求,向客户端相应结果,表现层设计一般都使用MVC模型。MVC指模型、视图、控制器。模型,指数据模型,用于封装数据;视图,用于展示数据,通常是依据模型数据创建的;原创 2022-05-09 16:05:24 · 619 阅读 · 0 评论 -
Java面试 讲讲extends和super关键字
讲讲extends和super关键字这个涉及到泛型的三个特性,不变性、协变性、逆变性。比如有类Long和类Number,类Long继承于类Number。Long是可以赋值给Number的,但若加一个函数ArrayList后,对于Long的ArrayList就不能赋值给Number的ArrayList了,这个就是泛型的不变性。若想让Long的ArrayList就赋值给Number的ArrayList就需要利用泛型的协变性,加上函数ArrayList后依然保持继承关系,即ArrayList<L原创 2022-05-08 17:41:09 · 631 阅读 · 0 评论 -
Java 泛型中 <? extends T> 与 <? super T> 的区别
逆变与协变用来描述类型转换(type transformation)后的继承关系,其定义:如果A、B表示类型,f(⋅)表示类型转换,≤表示继承关系(比如,A≤B表示A是由B派生出来的子类)f(⋅)是不变(invariant)的,当A≤B时上述两个式子均不成立,即f(A)与f(B)相互之间没有继承关系。f(⋅)是协变(covariant)的,当A≤B时有f(A)≤f(B)成立;f(⋅)是逆变(contravariant)的,当A≤B时有f(B)≤f(A)成立;1.泛型的不变性下面看个例子:原创 2022-05-08 16:36:22 · 720 阅读 · 0 评论 -
Java泛型 <T> T 的作用
<T> T 表示返回值和传入参数的泛型型一致,代码示例:package GenericStudy;import java.util.ArrayList;import java.util.List;/** * @description: java泛型返回值 <T>T 的作用 **/public class Demo2 { public static void main(String[] args) { Demo2 d1 = new Demo2(...原创 2022-05-06 22:52:26 · 1449 阅读 · 0 评论 -
@JsonInclude(value=JsonInclude.Include.NON_NULL)含义
在实体类上面加@JsonInclude(value=JsonInclude.Include.NON_NULL)注解,可以使当前实体类在返回前端的时候忽略字段属性为null的字段,使其为null字段不显示。加注解前和加注解后效果:转载 2022-05-05 16:12:09 · 1356 阅读 · 0 评论 -
HashMap为什么会发生死循环
HashMap死循环只会在JDK1.7中出现,出现的原因主要是因为其自身扩容机制加上并发操作。JDK1.8中已彻底解决该问题。JDK1.7中HashMap以数组加链表的方式存储,在插入数据是采用的是头插法,新插入的数据会从链表的头结点进行插入。因此在HashMap扩容时会存在如下现象:...原创 2022-04-27 22:53:13 · 2439 阅读 · 0 评论 -
Spring Bean生命周期中各阶段的作用及实例演示说明
本文分两个部分第一部分 解释SpringBean生命周期中各接口作用第二部分 对SpringBean生命周期中各接口的执行顺序以Demo形式进行说明转载 2022-04-16 15:37:28 · 1127 阅读 · 0 评论 -
Spring Bean的五个作用域
Spring支持五个作用域:singleton、prototype、request、session、global session转载 2022-04-15 11:19:22 · 13258 阅读 · 0 评论 -
JDK9 String优化
JDK9 对String优化,将char数组改为byte数组并增加了coder属性原创 2022-04-14 23:48:55 · 896 阅读 · 0 评论 -
多线程-三种方法判断线程池中任务有没全部执行完
多线程-三种方法判断线程池中任务有没全部执行完原创 2022-04-14 16:29:54 · 7212 阅读 · 0 评论 -
面试官:说一下Java类的加载过程
类的加载分为三个部分:加载、连接、初始化1.加载1)类的加载通过类的全限定名将.class文件的二进制字节流读入内存(JDK1.7之前为JVM内存,JDK1.8后为本地内存)2)在堆中为之创建Class对象。在这个阶段读入二进制字节流,会在后续验证阶段验证.class文件,验证通过后会将二进制字节流转化为运行时数据结构存入方法区拓展:在JDK1.7之前,Hot Spot JVM 存在一块叫方法区的内存,也称之为永久代,这块区域用于存放类的元数据信息,包括类的字段、版本、方法等。JDK1原创 2022-04-13 15:33:55 · 1314 阅读 · 0 评论 -
为什么不允许使用Executors创建线程池
线程池-为什么不允许使用Executors创建线程池其替代方法是什么?原创 2022-04-05 11:29:59 · 2960 阅读 · 0 评论 -
线程池-exectue与submit的区别是什么?
线程池-exectue与submit的区别是什么?原创 2022-04-04 22:59:23 · 2316 阅读 · 0 评论 -
线程池-Executors的newSingleThreadExecutor和newFixedThreadPool(1)区别
与其他等效的newFixedThreadPool(1)不同,newSingleThreadExecutor返回的执行器保证不可重新配置。与其他等效的newScheduledThreadPool(1)不同,newSingleThreadScheduledExecutor返回的执行器保证不可重新配置以使用其他线程。newFixedThreadPool(1)的返回结果我们可以通过强转变成ThreadPoolExecutor,但是这个类是可以自行指定线程数的。我们可以通过setCorePoolSize.原创 2022-04-04 22:02:44 · 1592 阅读 · 0 评论 -
线程池-jdk1.8 Executors创建线程池的几种方法
线程池-java线程池有几种?原创 2022-04-04 21:17:55 · 1199 阅读 · 0 评论 -
举例说明为什么要重写hashCode()和equals()方法
1.未重写hashCode()和equals()方法import java.util.HashMap;import java.util.Map;public class User { private String userName; public User(String userName) { this.userName=userName; } public static void main(String[] args) {原创 2022-04-04 19:49:20 · 342 阅读 · 0 评论 -
String +的实现原理 及与StringBuilder的区别
在Java中String的操作很多时候都与连接符"+"有关,比如我们可以用String = int + "" 将一个int整数或是其他基本类型转为String类型,也可以用String = String + String 连接两个字符串。那么这些连接符具体是如何实现的呢?他们的效率又如何呢?首先我们可以在API文档上查阅到:Java 语言提供对字符串串联符号("+")以及将其他对象转换为字符串的特殊支持。字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append转载 2022-03-31 22:19:37 · 515 阅读 · 0 评论 -
@Transactional类内部访问失效原因详解
Spring之所以可以对开启@Transactional的方法进行事务管理,是因为Spring为当前类生成了一个代理类,然后在执行相关方法时,会判断这个方法有没有@Transactional注解,如果有的话,则会开启一个事务。也就是说我们首先调用的是AOP代理对象而不是目标对象,首先执行事务切面,事务切面内部通过TransactionInterceptor环绕增强进行事务的增强,即进入目标方法之前开启事务,退出目标方法时提交/回滚事务。Spring在扫描bean的时候,如果扫描到方法上有这些注解原创 2022-03-31 17:09:33 · 6387 阅读 · 4 评论 -
@Transactional 失效的几种情况
一、非public修饰的方法@Transactional注解只能在在public修饰的方法下使用。/** * 私有方法上的注解,不生效 */@Transactionalprivate boolean test() { //test code}二、类内部访问类内部非直接访问带注解标记的方法 B,而是通过类普通方法 A,然后由 A 调用 B。@Servicepublic class Demo { public void A() { ...... .原创 2022-03-31 16:55:29 · 8078 阅读 · 0 评论 -
SpringMVC 组件类及处理过程
1、SpringMVC 组件类有哪些?在了解SpringMVC各组件之前,我们先来看一下Spring MVC框架结构:从上图我们可以看到, Spring MVC主要包括:1. 前端控制器组件(DispatcherServlet)2. 处理器组件(Controller)3. 处理器映射器组件(HandlerMapping)4. 处理器适配器组件(HandlerAdapter)5. 拦截器组件(Handler...转载 2022-03-27 22:03:50 · 278 阅读 · 0 评论 -
拦截机制中Aspect、ControllerAdvice、Interceptor、Fliter之间的区别详解
在项目的开发中,在某些情况下,我们需要对客户端发出的请求进行拦截,常用的API拦截方式有Fliter,Interceptor,ControllerAdvice以及Aspect。Spring中的拦截机制,如果出现异常的话,异常的顺序是从里面到外面一步一步的进行处理,如果到了最外层都没有进行处理的话,就会由tomcat容器抛出异常.1.过滤器:Filter :可以获得Http原始的请求和响应信息,但是拿不到相应方法的信息2.拦截器:Interceptor:可以获得Http原始的请求和响应信息,转载 2022-03-27 15:57:30 · 2994 阅读 · 0 评论 -
spring boot 自动配置
我们知道,spring boot自动配置功能可以根据不同情况来决定spring配置应该用哪个,不应该用哪个,举个例子:Spring的JdbcTemplate是不是在Classpath里面?如果是,并且DataSource也存在,就自动配置一个JdbcTemplate的Bean Thymeleaf是不是在Classpath里面?如果是,则自动配置Thymeleaf的模板解析器、视图解析器、模板引擎那个这个是怎么实现的呢?原因就在于它利用了Spring的条件化配置,条件化配置允许配置存在于应用中,但是在转载 2022-03-27 15:36:27 · 286 阅读 · 0 评论 -
Springboot 配置文件加载优先级
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件–file:./config/–file:./–classpath:/config/–classpath:/优先级由高到底,高优先级的配置会覆盖低优先级的配置。我们还可以通过spring.config.location来改变默认的配置文件位置项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位.原创 2022-03-24 21:18:42 · 860 阅读 · 0 评论 -
如何在Spring Boot启动的时候运行一些特定的代码?
如果你想在Spring Boot启动的时候运行一些特定的代码,你可以实现接口ApplicationRunner或者CommandLineRunner,这两个接口实现方式一样,它们都只提供了一个run方法。ApplicationRunner:启动获取应用启动的时候参数CommandLineRunner:启动获取命令行参数目录Spring Boot Runner启动器:ApplicationRunnerCommandLineRunner使用方式启动顺序Spring转载 2022-03-20 10:57:26 · 2094 阅读 · 0 评论 -
实现反射的3+1种方式
1、Class.forName(“类的路径”);2、类名.class3、对象名.getClass()+1、基本类型的包装类,可以调用包装类的Type属性来获得该包装类的Class对象那么Integer.class和Integer.TYPE的区别是什么呢?int.class返回Integer的对象Integer.type返回int对象public static void main(String[] args) {System.out.println(Integer.TYPE原创 2022-03-10 21:13:08 · 320 阅读 · 0 评论 -
@PostConstruct
简介:Java EE5规范开始,Servlet中增加了两个影响Servlet生命周期的注解,@PostConstruct和@PreDestroy,这两个注解被用来修饰一个非静态的void()方法。@PostConstruc使用说明:PostConstruct 注释用于在依赖关系注入完成之后需要执行的方法上,以执行任何初始化。此方法必须在将类放入服务之前调用。支持依赖关系注入的所有类都必须支持此注释。即使类没有请求注入任何资源,用 PostConstruct 注释的方法也必须被调用。只有一个转载 2022-02-22 11:23:14 · 472 阅读 · 0 评论 -
Lombok - 使用时@Builder为什么不让new?如果想用new怎么办
对象上加上 @Builder,会默认为类加上全参构造函数,且提供以建造器模式构造对象的方法。但此时因为显示声明了构造器,默认的无参构造器就失效了,就不能通过 new Obj() 的方式创建对象。于是乎就会想到加 @NoArgsConstructor 注解生成无参构造函数以便使用 new Obj() 方式创建对象,很多框架中都需要反射调用无参构造函数。但是如果显式声明了 @NoArgsConstructor,lombok 就不会生成全参构造函数,而 @Builder 中会用到全参构造函数,所以冲突。此转载 2022-02-22 10:50:28 · 3835 阅读 · 0 评论 -
log要用占位符而不是用字符串拼接原因解析
1.占位符是怎么用字符串替换的呢?使用占位符的本质也是获取每个参数,找到位置通过StringBuilder拼接。所以不能说字符串拼接的方式使用了StringBuilder的append()有一定的性能损耗。使用占位符仅是替换动作,效率更高。可以参考这篇文章的源码截图(关于Slf4j中占位符{}_Firm陈的博客-CSDN博客)2.那为什么还要使用占位符呢?参考这篇文章(日志使用占位符还是直接拼接 - 简书)占位符和直接拼接的性能比较通过main方法for循环测试原创 2022-01-19 20:04:42 · 6723 阅读 · 0 评论 -
SpringBoot2.0 入门案例初始工程
一、工程创建流程1.创建maven工程2.引入依赖pom.xml如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache原创 2022-01-11 13:02:44 · 528 阅读 · 0 评论 -
javaweb request请求
request报文结构1.请求行请求方法 请求url 请求协议/版本2.请求头请求头名称:请求头值 1)user-agnet:浏览器通知服务器,客户端使用的浏览器版本信息 2)Referer:说明请求从哪里来。作用:防盗链、统计3.请求空行4.请求体GET /Protocols/rfc2616/rfc2616-sec5.html HTTP/1.1Host: www.w3.orgConnection: ...原创 2021-12-15 12:55:59 · 1474 阅读 · 0 评论 -
HSSF、XSSF和SXSSF区别
POI提供了HSSF、XSSF以及SXSSF三种方式操作Excel。他们的区别如下:HSSF:是操作Excel97-2003版本,扩展名为.xls。XSSF:是操作Excel2007版本开始,扩展名为.xlsx。SXSSF:是在XSSF基础上,POI3.8版本开始提供的一种支持低内存占用的操作方式,扩展名为.xlsx。Excel不同版本的一些区别如下,这些限制其实间接的局限了POI提供的API功能。1、支持的行数、列数...转载 2021-11-10 12:45:21 · 14601 阅读 · 0 评论 -
java String转Bigdecimal时有逗号‘,’千位符
问题描述对接项目中,遇到对面返回金额栏位超过了千位,自带“,”-千位符的情况,原设计中未考虑此情况,直接使用new BigDecimal(str);的方式处理,会报错,如下:解决办法1.很简单,而又不高大上的处理方式:将字符",“转换成”" try { String replaced = str.replace(",", ""); BigDecimal result = new BigDecimal(replaced);转载 2021-02-23 15:10:19 · 3477 阅读 · 0 评论 -
使用mybatis报错UnsupportedOperationException
使用mybatis报错UnsupportedOperationException1.Mapper.java类如下:List<String> getMatchAddress(String com);2.Mapper.xml如下:<select id="getMatchAddress" parameterType="java.util.String" resultType="java.util.List">select t.address from tablenam原创 2021-01-27 16:53:13 · 1675 阅读 · 2 评论 -
例子说明 Java中public、protected、default、private的访问权限作用域
如果在修饰的元素上面没有写任何访问修饰符,用default表示 作用域 当前类 同一包(package) 同一包下子类 不同包下子类 其它包 public √ √ √ √...原创 2020-05-07 20:20:34 · 1157 阅读 · 0 评论
分享