自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 问答 (2)
  • 收藏
  • 关注

原创 Java多态性的理解

子类的方法重写了父类的方法,相当于对原来的方法进行了增强,接口就是这样的思想。

2024-09-16 18:39:24 170

原创 对象多态性的理解

子类的属性与父类的属性相同,但是只要有一方的属性私有了,那么属性就不会冲突,这就是封装的好处。子类的属性与父类的属性相同,并且属性都是public。那么在子类方法中还是父类方法中,子类的方法重写了父类的方法,相当于对原来的方法进行了增强,接口就是这样的思想。

2024-09-16 16:39:06 117

原创 并发修改的思考

如果系统采用了悲观锁机制,那么在第一个用户读取商品信息并开始编辑时,系统可能会锁定该商品信息,直到第一个用户提交修改后释放锁。在这种情况下,第二个用户在第一个用户提交修改后才能进行操作,此时数据库中的商品名称已经是B,他需要基于B进行修改。在一个系统中,有两个用户在编辑商品信息时,同时读取到商品名称为A,此时一个用户修改为B并提交到数据库中,那么此时另一个用户并没有刷新数据,看到的商品名称还是为A,那么此时修改为C,这个用户能够修改成功吗,按照业务来分析。系统也可能使用时间戳来控制并发。

2024-09-11 20:05:45 213

原创 spring中的动态代理

这个例子中,我们将创建一个简单的Hello接口,一个实现了这个接口的类HelloImpl,以及一个代理类HelloProxyHandler,它将作为我们的代理处理器。在这个例子中,我们将创建一个简单的Hello类,一个实现了Hello接口的HelloImpl类,以及一个代理类HelloProxy,它将作为我们的代理处理器。JDK动态代理是基于Java反射机制实现的,只能为实现了接口的类创建代理。特点:可以代理没有实现接口的类,但无法代理final类和方法。限制:被代理的类必须实现至少一个接口。

2024-07-22 22:35:34 269

原创 AQS的理解

表示锁的状态:在独占锁(如ReentrantLock)的实现中,同步状态通常表示锁的持有情况。例如,状态为0可能表示锁当前是可用的,而状态为1或更大值可能表示锁已被占用,并且如果锁是可重入的,状态值可能会表示锁被同一个线程获取的次数。资源可用性:在信号量(如Semaphore)中,同步状态表示可用的许可数量。当线程尝试获取许可时,它需要更新状态以减少可用的许可数;当线程释放许可时,它需要更新状态以增加可用的许可数。

2024-07-22 21:28:40 868

原创 Mysql数据库事务与锁的理解

一个事务是一组SQL语句的集合,这些语句要么全部成功,要么全部失败。事务确保了数据库操作的原子性、一致性、隔离性和持久性(ACID特性)。

2024-07-19 23:41:09 276

原创 数据库发生死锁常见的场景

例如,事务A先锁定资源X,再锁定资源Y;如果另一个事务需要内部事务锁定的资源,但又被另一个需要外部事务资源的事务阻塞,就可能形成死锁。如果事务执行时间过长,它可能会锁定某些资源较长时间,导致其他等待这些资源的事务被阻塞。多个事务同时尝试更新同一记录,其中一个事务可能先锁定记录,随后其他事务试图锁定同一记录,导致等待和潜在的死锁。如果表中缺乏适当的索引,事务可能需要执行全表扫描,这可能导致表级锁,增加死锁的可能性。当事务间形成一个循环等待链,每个事务都在等待另一个事务释放锁时,就会发生死锁。

2024-07-19 23:31:39 326

原创 生产者与消费者的几种解决方式

以上每种方式都有其适用场景,选择哪一种取决于具体的需求和设计考量。例如,BlockingQueue提供了更简洁的API,并且能够处理多种不同的并发场景,而使用wait()这是最基础的方式,通过synchronized关键字锁定资源,并使用对象的wait()和notify()方法来控制线程的等待与通知。Java中的java.util.concurrent包提供了BlockingQueue接口,它简化了生产者与消费者的实现。信号量(Semaphore)可以用来控制对资源的访问。

2024-07-17 11:19:44 153

原创 springboot中跨域问题的几种解决方式

为了全局启用跨域,可以创建一个配置类,实现WebMvcConfigurer接口,并覆盖其addCorsMappings方法。如果你想让一个控制器类下的所有方法都支持跨域,可以在类级别使用@CrossOrigin注解。对于特定的接口,可以在控制器方法上使用@CrossOrigin注解来开启跨域支持。还可以通过注册一个CorsFilter Bean来实现全局跨域配置。

2024-06-03 19:41:09 403

原创 springboot数据校验的相关异常

例如,当一个表单提交到Controller时,如果表单中的某个字段不符合校验规则(如@NotNull、@Size等),则会抛出此异常。例如,当使用@RequestBody注解处理JSON请求体时,如果JSON格式不正确或无法映射到目标对象,则会抛出此异常。例如,如果Controller方法期望接收一个整数参数,但实际请求中传递的是字符串,且无法转换为整数,则会抛出此异常。例如,如果JSON请求体的格式不正确,无法解析为预期的对象,则会抛出此异常。例如,当用户访问了一个不存在的URL时,会抛出此异常。

2024-05-06 18:31:57 364

原创 拦截器放行静态资源

为了避免这个异常,您可以在拦截器中添加一个条件来检查处理程序对象的类型,以确保只有当处理程序对象是 HandlerMethod 类型时才进行转换。这样就可以避免在处理静态资源请求时出现类型转换异常。通过添加对处理程序对象类型的检查,我们确保只有当处理程序对象是 HandlerMethod 类型时才尝试转换,并且在其他情况下直接放行请求,避免了类型转换异常。静态资源请求的处理程序对象是 ResourceHttpRequestHandler,而不是 HandlerMethod。

2024-05-03 23:29:30 258

原创 js吸顶与浮动广告的实现

浮动广告是,它对大容器进行相对定位,设置定时器,改变它的left ,top值,注意的是大容器的宽高为100vw 100vh,鼠标滚动时,大容器的left=window.scrollX top =window.scrollY,这样我们缩放界面或者是滚动界面都能在当前视口看见广告移动。吸顶我这里没有用fixed,用的使absolute,主要思想使当鼠标滚动距离大于top时,top = window.scrollY ,小于时,恢复原来的top值。

2023-12-22 13:39:34 762

原创 java浅克隆与深克隆

Java浅克隆与深克隆

2023-05-16 21:04:06 97

原创 java栈与优先队列的使用

java stack 与Priority_queue

2022-11-15 23:43:53 186

原创 Arrays.sort()深入理解

深入理解Arrays.sort()

2022-11-15 19:13:20 171

原创 多线程的学习与使用

多线程的使用

2022-06-03 17:00:40 66

原创 IO流的学习与使用

什么是IO流I:是从外部设备到应用程序之间的数据传递,常见的外部设备包括文件、管道、网络连接O:是从应用程序到外部设备的数据传递分类按流向分为,输入流,输出流按处理数据单位:字节流、字符流字节流的应用public class TestStream { public static void main(String[] args) throws IOException { File file = new File("E:\\MultiMediaOpt\\Test\\Te

2022-05-29 18:23:23 79

原创 迭代器的学习与使用

什么是迭代器Iterator提供了同一遍历操作集合元素的统一接口,Collection接口实现了Iterable接口,每个集合都通过实现Iterable接口中的iterator()方法返回Iterator接口的实例,然后对集合的元素进行迭代操作,请看如下代码:package Test.Test09;import java.util.*;public class TestIterator { public static void main(String args[]){ Lis

2022-05-22 16:29:13 140

原创 自动装箱与拆箱

什么是自动装箱与拆箱自动装箱时把基础数据类型转为对应的封装类,拆箱是将封装类自动转为对应的基本数据 请看如下代码:package Test.Test05;import java.lang.*;public class Test05 { public static void main(String args []){ Integer a = 10; int b = a+100; System.out.pr

2022-05-14 16:21:18 106

原创 泛型的学习

泛型应用到类上package Test.Test01;import java.util.Scanner;public class Test01 { public static void main(String args[]){ Person<String> person = new Person<>("yang","money"); System.out.println(person); Dog www = new Do

2022-05-07 16:19:01 60

原创 抽象类与抽象方法

抽象类是用abstract关键字修饰的类,抽象方法是用abstract关键字修饰的方法我们需要注意的是抽象类不能够实例化(既不能够new对象),抽象类的存在是为了继承,是为了形成多态机制,请看如下代码:package Test.Test06;public class Test06 { public static void main(String args[]){ Animal human = new Person(); Animal chicken = new Chick

2022-05-01 18:29:33 75

原创 内部类的用法

被static修饰的内部类package Test.Test03;public class Test03 { public static void main(String args[]){ Human.Dog dog = new Human.Dog("大黄",10); System.out.println(dog); dog.print(); Human.Dog dog2 = new Human.Dog("大黑",11);

2022-04-24 16:03:32 187

原创 读ArrayList有感

ArrayListArrayList是什么?简单来说是一个处理变长数组的列表,这个类的成员变量是一个Object类,和一个表示数组元素个数的size,如下图它有三个构造方法,这里只介绍一个常见的,源代码如下: public ArrayList(int initialCapacity) {//初始容量(长度) if (initialCapacity > 0) { this.elementData = new Object[initialCapacit

2022-04-20 21:12:16 367

原创 方法重载的用法

方法重载方法重载的好处是什么,我们为什么要用方法重载当我们要实现两个数的加法,通常是使用如下代码:public class Test{ public static int sum(int a,int b){ return a+b; } public static double sum1(double a,double b){ return a+b; }public static double sum2(double a,double b,double c){ return

2022-04-17 23:31:23 683

原创 Java多态用法

何为多态:多态既一个方法有两种形态,请看如下代码静态绑定:在编译时,指向子类的父类对象绑定父类的方法; class Animal{ String name; int age; Animal(){} void eat(){ System.out.println("动物吃食物"); } void print(){ } }public class Dog extends Animal{ String hair; Dog(Strin

2022-04-10 22:40:49 205

原创 fianl用法

关键字final的学习final修饰成员变量,局部变量,表示修饰的值不变,请看下列代码final修饰成员变量class Cat{final String name="huang";final int age = 14;Cat(String name,int age){ this.name = name;this.age = age;}}public class Test{public static void main(String args[]){ Cat cat = new C

2022-04-02 16:25:40 103

原创 一个关于自己的类及学生台控制系统

一个关于自己的一个类public class MyselfObject { String name; int age; private double height; private double myMoney;//声明各属性 private double weight; private String [][] timeTable ; MyselfObject(String name,int age,double myMoney,

2022-03-28 00:01:59 324

原创 super用法

关键字super在继承中的用法1 super()调用父类的构造方法public class Super extends Father{ public static void main(String args[]){ Super s = new Super(); Super ss = new Super(2); } public Super(){ super(10); System.out.println("调用子类构

2022-03-19 23:55:38 887

原创 冒泡排序法

冒泡排序法import java.util.Scanner;import java.util.Arrays;public class MaoPao{public static void main(String args[]){ int a[] = new int[10]; System.out.println("请输入10个数:"); input(a); System.out.println("排序后:"); paixv(a); System.out.println(Arrays.toS

2022-03-17 16:13:42 108

原创 Java第二篇Blog

选择排序法import java.util.Arrays;//导入包import java.util.Scanner;public class XuanZhe{public static void main(String args[]){ Scanner in = new Scanner(System.in); A yang = new A(); int a [] = new int[10]; input(a);//调用方法输入数据 yang.paixv(a);//调用方法排序

2022-03-13 22:21:20 88

原创 Java第一篇Blog

直接排序法import java.util.Scanner;import java.util.Arrays;public class ZhiJie{ public static void main(String[] args) { Scanner in = new Scanner(System.in);//创建Scanner对象 int n = in.nextInt();//得到一个整型数据 int [] a = new int[n];/

2022-03-06 12:14:35 300

空空如也

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

TA关注的人

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