自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 测试service工程的mapper层

首先分页参数放到ThreadLocal中,拦截执行的sql,根据数据库类型添加对应的分页语句重写sql,例如:(select * from table where a) 转换为 (select count(*) from table where a)和(select * from table where a limit ,)计算出了total总条数、pageNum当前第几页、pageSize每页大小和当前页的数据,是否为首页,是否为尾页,总页数等。1、下边在service工程的pom.xml中添加依赖。

2024-05-14 18:15:27 252 2

原创 2023版idea Springboot配置热部署

第一步是导入依赖,第二步是开启运行时自动构建,第三步是自动重构。第三步:打开设置 --->高级设置。

2024-04-14 12:48:50 261 1

原创 什么是事务?

我们知道程序达到一定规模会出现bug,用银行转钱举例,A给B转钱常识是A的钱减少,B的钱增加;如果说在转钱这个程序中间,出现了bug,就可能出现A的钱没了,但是B没收到,或者B的钱增加了,A的钱没变。这是不符合常识逻辑的,所以事务出现了,事务会记录程序的运行,如果没问题,那就提交事务转账成功,如果出现问题,那么事务回滚,回滚到程序最初,两方数据还原。事务的执行应该与其他事务是相互隔离的,即一个事务的执行不应该对其他事务产生影响,每个事务应该感觉就像在系统中是独立执行的一样。

2024-02-28 15:21:38 196

原创 避坑@PostConstruct和 @PreDestroy这两个注解使用后没效果

原因我简单说一下,这两个注解其实是来源于jdk内部也就是JavaEE,所以正确的导包应该是。没法用的看看自己导包是不是这样。我这提供一种情况:导包问题。

2024-02-27 19:16:57 316 2

原创 ApplicationContext 和 BeanFactory

延迟加载可以帮助解决循环依赖的问题。如果两个Bean相互依赖,而且都被设为延迟加载,Spring容器可以先创建一个Bean的代理,等到需要使用该Bean时再进行实际的初始化,从而打破循环依赖。需要注意的是,延迟加载也有一些潜在的缺点,例如在第一次访问Bean时可能会引入一些性能开销,因为需要进行实例化。延迟加载意味着在容器启动时并不立即创建所有的Bean实例,而是在需要时才进行实例化。如果应用程序有大量的Bean定义,而不是在启动时一次性加载所有Bean,而是根据需要逐个加载,可以减小启动时间。

2024-02-26 21:23:01 328 1

原创 使用Array实现栈

扩容的容器大小是以前的2倍,扩容原理实际上是创建一个新的数组将老数组的数据复制到新数组中,System.arraycopy(arrstack,0,newarr,0,arrstack.length);在大多数 JVM 中,的实现是通过本地方法(native method)来完成的,即通过调用底层的操作系统或者硬件指令来执行数组复制的操作,从而提高效率。这是他的源码有好奇的小伙伴可以研究一下,众所周知Java的底层是用c实现的所以我就不多说了。栈是一种桶状的容器,先进后出。

2024-02-25 11:31:16 692 1

原创 jvm的垃圾回收算法

Java虚拟机(JVM)的垃圾回收算法有多种,每种算法都有其独特的特点和适用场景。

2024-02-24 14:16:20 560

原创 ArrayList是怎样扩容的?

在Java中,ArrayList是动态数组,它可以根据需要动态增长或缩小。当我们向ArrayList中添加元素时,如果当前元素个数已经达到了数组的容量上限,ArrayList就会进行扩容操作。这样,ArrayList就完成了扩容操作,可以继续添加新的元素了。需要注意的是,扩容操作会涉及元素的复制,因此在扩容时会有一定的性能损耗。扩容时,ArrayList会根据一定的规则计算新的容量。根据计算得到的新容量,ArrayList会创建一个新的更大的数组。将原数组中的所有元素复制到新数组中,保持元素的顺序不变。

2024-02-24 14:10:51 250

原创 Java可重入锁

(Reentrant Lock)是一种支持线程重复获取同一把锁的锁机制。当一个线程获得了某个对象的锁,再次请求此对象锁时仍然会得到该锁。在公平锁模式下,线程按照它们发出请求的顺序获取锁。在非公平锁模式下,线程可能会在请求的瞬间获取锁。可重入锁通常用于需要更灵活的锁控制、实现公平锁、需要支持中断的场景,以及需要更细粒度的锁定的情况。当一个线程持有一个锁的时候,还可以再次获取该锁而不发生死锁。这是通过记录锁的持有者和计数器的方式实现的。提供了对中断的响应,线程可以在等待锁的过程中被中断。显式提供了这一特性。

2024-02-06 11:26:00 405 1

原创 lock与synchronized的区别

都是 Java 中用于多线程编程的同步机制,它们都用于控制对共享资源的访问,以防止数据不一致和竞态条件。它是隐式的,编译器和运行时系统负责管理锁的获取和释放。不支持中断,一旦一个线程进入同步块,除非它自己退出,否则其他线程无法中断它的执行。而对于一些复杂的同步需求或需要更高的性能和灵活性时,可以选择使用。时,通常来说,如果只是简单的同步需求,并且不需要太多的额外功能,使用。提供了更灵活的锁定机制,例如,它支持公平锁和非公平锁,而。提供了对中断的支持,可以在等待锁的过程中响应中断。方法,但相对来说比较基础。

2024-02-05 17:20:05 339 1

原创 synchronized为什么锁不住包装类对象

在这个例子中,`counter` 是 `Integer` 类型。对于基本数据类型的包装类对象(比如 `Integer`、`Long`、`Double` 等),由于它们是不可变的,因此每次对它们的修改都会创建一个新的对象,而不是在原对象上进行修改。在这个例子中,我们使用了一个额外的 `Object` 类型的对象 `lock`,并在 `increment` 方法中使用 `synchronized (lock)`,这样确保了不同线程都锁住了相同的对象,从而实现了互斥。

2024-02-05 11:04:11 153 1

原创 java多线程(Thread)的方法

Thread类是 Java 中用于多线程编程的核心类之一,提供了一系列方法来管理线程的生命周期和执行。以下是Thread。

2024-02-04 15:46:21 968 1

原创 Java多线程的使用

多线程就是同一时间做好多事情,比如有一个词叫:一边一边,一边吃饭一边看电视......等等,这样在程序上有什么好处呢?提高了程序的工作效率,让程序实现的更多的东西:比如多人游戏,比如订单服务,这个如果使用单线程一个一个处理那就会花费很长时间,多线程处理就相当于多加了几条生产线来完成任务.....多线程是指在一个程序中同时运行多个独立的线程,每个线程执行相对独立的任务。Java是一种支持多线程编程的语言,它通过类和接口提供了多线程的支持。

2024-02-04 13:33:28 1437 1

原创 Java内部类

内部类提供了一种封装和组织代码的方式,同时也允许访问外部类的成员。选择使用哪种内部类取决于设计的需要。成员内部类通常用于与外部类有密切关系的场景,而局部内部类和匿名内部类通常用于更临时的需求。静态嵌套类则更像是外部类的静态成员,与外部类的实例无关。成员内部类是定义在类内部的类。静态嵌套类是声明为静态的内部类。内部类有多种类型,包括成员内部类、局部内部类、匿名内部类和静态嵌套类。局部内部类是定义在方法或作用域内的类。通常在方法内部实例化局部内部类。匿名内部类是没有名字的局部内部类,通常用于实现接口或继承类。

2024-02-03 16:32:39 156 1

原创 方法重写的底层逻辑

开发者编写Java程序的源代码,这些代码通常存储在以.java为扩展名的文件中。使用Java编译器(javac命令)将Java源代码编译成字节码文件。字节码是一种中间代码,它不是特定于底层硬件和操作系统的,而是面向Java虚拟机的。编译后的字节码文件通常以.class为扩展名,存储了程序的中间表示。

2024-02-03 13:43:12 687

原创 Java面向对象

java面向对象Java 是一门面向对象的编程语言,这意味着它的设计和编程范式是基于面向对象的思想。面向对象编程(Object-Oriented Programming,简称 OOP)是一种以对象为核心的编程风格,通过封装、继承和多态等概念来组织和管理代码。

2024-02-02 10:09:05 571 1

原创 方法重载和方法重写的区别

方法重载和方法重写的区别1.什么是方法重载?方法重载(Method Overloading)是指在同一个类中,可以定义多个方法具有相同的名称,但是参数列表不同。重载的方法可以有不同的参数类型、不同的参数个数,或者参数类型的顺序不同。方法重载的目的是提高代码的灵活性和可读性。

2024-02-01 12:30:43 737

原创 Windows安装jdk

下载IntelliJ IDEA(Java常用的编程软件) ,里面有内置的各种版本jdk可供下载。右键我的电脑>点击属性>找到“高级系统设置”>点击“环境变量”>在系统变量处新建。下载后注意安装到自己提前建立好的文件夹当中,因为还要配置环境变量。注意变量值是自己安装jdk的目录不要和我的一样。(注意:选择对应自己计算机系统和位数的版本)点击确定后往下找,找到Path,双击进入。出现版本号就说明jdk安装成功了。完成上述操作点击确定保存后即可。win+R 输入cmd进入黑框。输入java -version。

2024-01-30 13:13:43 273 1

Java动态代理自建注解

使用动态代理的思想自建注解可以用到任何对象下,检测方法中参数是否为空

2024-01-30

0303210213刘浩_静态路由.ans

0303210213刘浩_静态路由.ans

2022-12-07

空空如也

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

TA关注的人

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