Java
.L.JIN.Jie
这个作者很懒,什么都没留下…
展开
-
throw 和 throws 的区别
Java 中的异常处理除了包括捕获异常和处理异常之外,还包括声明异常和拋出异常,可以通过 throws 关键字在方法上声明该方法要拋出的异常,或者在方法内部通过 throw 拋出异常对象。原创 2024-01-01 22:30:42 · 439 阅读 · 0 评论 -
Spring MVC 的核心组件
Spring MVC 对各个组件的职责划分的比较清晰。负责协调,其他组件则各自做分内之事,互不干扰。那么接下来就简单介绍一下。原创 2023-12-01 21:49:02 · 33 阅读 · 0 评论 -
Spring 框架中用到了哪些设计模式?
我们的项目需要连接多个数据库,而且不同的客户在每次访问中根据需要会去访问不同的数据库。这种模式让我们可以根据客户的需求能够动态切换不同的数据源。:Spring AOP 的增强或通知(Advice)使用到了适配器模式、spring MVC 中也是用到了适配器模式适配。等以 Template 结尾的对数据库操作的类,它们就使用到了模板模式。Spring 事件驱动模型就是观察者模式很经典的一个应用。: Spring 中的 Bean 默认都是单例的。: Spring AOP 功能的实现。: Spring 中。原创 2023-11-30 19:50:12 · 27 阅读 · 0 评论 -
AOP 有哪些实现方式?
实现 AOP 的技术,主要分为两大类:JDKCGLIBSpring AOPCGLIBCGLIBCGLIBfinalCGLIB。原创 2023-11-28 19:38:17 · 44 阅读 · 0 评论 -
序列化和反序列化
如果我们需要持久化 Java 对象比如将 Java 对象保存在文件中,或者在网络传输 Java 对象,这些场景都需要用到序列化。对于 Java 这种面向对象编程语言来说,我们序列化的都是对象(Object)也就是实例化后的类(Class),但是在 C++这种半面向对象的语言中,struct(结构体)定义的是数据结构类型,而 class 对应的是对象类型。原创 2023-11-24 17:48:35 · 18 阅读 · 0 评论 -
Java多线程:线程6种状态
等待状态,表示线程进⼊等待状态,进⼊该状态表 示当前线程需要其他线程通知(notify或者 notifyAll)Java 线程在运⾏的⽣命周期中的指定时刻只可能处于下⾯ 6 种不同状态的其中⼀个状态。运⾏状态,Java线程将操作系统中的就绪和运⾏两 种状态统称为"运⾏中"初始状态,线程被构建,但是还没有调⽤start()⽅法。查看Thread类中定义了⼀个State枚举类型。超时等待状态,可以指定等待时间⾃⼰返回。终⽌状态,表示当前线程已经执⾏完毕。阻塞状态,表示线程阻塞于锁。原创 2023-11-23 19:53:05 · 14 阅读 · 0 评论 -
Exception 和 Error 有什么区别?
例如,系统崩溃,内存不足,堆栈溢出等,编译器不会对这类错误进行检测,一旦这类错误发生,通常应用程序会被终止,仅靠应用程序本身无法恢复。又可以分为运行时异常(RuntimeException, 又叫非受检查异常)和非运行时异常(又叫受检查异常)。来进行捕获,通常遇到这种错误,应对其进行处理,使应用程序可以继续正常运行。二者都是 Java 异常处理的重要子类,各自都包含大量子类。Java 中,所有的异常都有一个共同的祖先。属于程序无法处理的错误 ,我们没办法通过。:程序本身可以处理的异常,可以通过。原创 2023-11-22 21:03:30 · 18 阅读 · 0 评论 -
为什么要有 hashCode?
所使用的哈希算法也许刚好会让多个对象传回相同的哈希值。越糟糕的哈希算法越容易碰撞,但这也与数据值域分布的特性有关(所谓哈希碰撞也就是指的是不同的对象得到相同的。如果不同的话,就会重新散列到其他位置。之后,判断元素是否在对应容器中的效率会更高(参考添加元素进。值来判断对象加入的位置,同时也会与其他已经加入的对象的。的介绍之后,下面这个问题已经难不倒你们了。相等的对象是否真的相同。的次数,相应就大大提高了执行速度。来判断是否真的相同。值相等并不代表两个对象就相等。值的对象,这时会调用。在对比的时候,同样的。原创 2023-11-21 15:18:03 · 29 阅读 · 0 评论 -
ArrayList自动扩容机制是什么?
随着在程序里面不断的往 ArrayList 中添加数据,当添加的数据达到 10 个的时候, ArrayList 就没有多余容量可以存储后续的数据。扩容的具体流程很简单,然后使用 Arrays.copyOf 方法把老数组里面的数据拷贝到新的数组里面。扩容完成后再把当前要添加的元素加入到新的数组里面,从而完成动态扩容的过程。ArrayList 是一个数组结构的存储容器,默认情况下,数组的长度是 10.首先,创建一个新的数组,这个新数组的长度是原来数组长度的 1.5 倍。原创 2023-11-13 20:41:25 · 29 阅读 · 0 评论 -
Java有哪些数据类型?
Java虚拟机规范讲到:在JVM中并没有提供boolean专用的字节码指令,而boolean类型数据在经过编译后在JVM中会通过int类型来表示,此时boolean数据4字节32位,而boolean数组将会被编码成Java虚拟机的byte数组,此时每个boolean数据1字节占8bit。2.引用数据类型建立在基本数据类型的基础上,包括数组、类和接口。另外,Java 语言中不支持 C++中的指针类型、结构类型、联合类型和枚举类型。对于 boolean,官方文档未明确定义,它依赖于 JVM 厂商的具体实现。原创 2023-11-10 19:55:50 · 39 阅读 · 0 评论 -
为什么有些公司禁止使用@Transactional 声明式事务?
如果方法存在嵌套调用,而被嵌套调用的方法也声明了@Transaction 事务,就会 出现事务的嵌套调用行为,容易引起事务的混乱造成程序运行结果出现异常。@Transaction 声明式事务是将事务控制逻辑放在注解中,如果项目的复杂度增加, 事务的控制可能会变得更加复杂,导致代码可读性和维护性下降。所以,为了避免这类问题,有些公司会推荐使用编程式事务,这样可以更加灵活地控制 事务的范围,减少事务的锁定时间,提高系统的性能。会带来锁的竞争影响性能,同时也会导致数据库 连接池被耗尽,影响程序的正常执行。原创 2023-11-09 19:34:37 · 348 阅读 · 1 评论 -
SpringBoot:请求限流
1. 使用Guava的RateLimiter:Guava是Google提供的一套Java库,其中包含了RateLimiter类,可以用于限制请求的速率。你可以将RateLimiter作为一个Bean注入到Spring Boot的配置类中,并在需要进行限流的方法上使用该RateLimiter。通过调整RateLimiter的参数,如请求的速率和令牌桶的容量,可以控制请求的频率。这样,当同一个IP在指定的时间间隔内超过了最大请求次数,就会抛出异常,限制其请求次数。最后,在需要进行请求次数限制的方法上添加。原创 2023-11-07 20:47:40 · 532 阅读 · 0 评论 -
Java多线程:execute方法和submit有什么区别
submit 方法不会直接抛出异常, 而是会将异常暂时存起来,等Future.get()方法的时候。Callable接口的参数,所以方法的传入submit方法的参数是可以有返回值的。自己的方法,并且从源码上看出这个方法是一个重载的方法。例如,以下代码上的37行捕获代码不能捕获子线程的异常。那么从以上两个方法的源码上就可以比较的出有什么区别。execute方法和submit方法是什么方法。接口的call方法是有返回值的。RunnableFuture又。接口的实现类对象的返回值,原创 2023-11-06 20:46:56 · 123 阅读 · 0 评论 -
Integer 和 int 的区别?设计封装类为了什么?
是因为 Java 本身是一门面向对象的语言,对象是 Java 语言的基础单元,我们时时刻刻 都在创建对象,也随时都在使用对象, 很多时候在传递数据时也需要对象类型,比如像 ArrayList、HashMap 这些集合,只能存储对象类型, 因此从这个点来说,封装类型存在的意义就很大。Integer 是基本数据类型 int 的封装类 在 Java 里面,有八种基本数据类型,他们都有一一对应的封装类型。简单来说,Integer 和 int 的区别有很多,我简单说 3 个方面。其次,封装类型还有很多好处,比如。原创 2023-11-05 12:07:00 · 48 阅读 · 0 评论 -
什么是面向对象?和面向过程有什么区别?
面向对象是一种将面向对象的思想应用于软件开发过程并指导开发活动的系统方法。这是一种基于“对象”概念的方法论。对象是由数据和允许的操作组成的包,它与目标实体有直接的对应关系。对象类定义了一组具有类似属性的对象。类的继承是共享具有层次关系的类的属性和操作的一种方式。面向对象是基于对象的概念,以对象为中心,以类和继承为构建机制,认识、理解和描绘客观世界,设计和构建相应的软件系统。简单来说,原创 2023-11-01 18:02:11 · 47 阅读 · 1 评论 -
什么是线程池(Java)
线程池做的工作主要是控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行。原创 2023-10-31 21:10:21 · 85 阅读 · 1 评论 -
Java的运算优先级
Java中的运算符优先级从高到低如下:原创 2023-10-30 21:19:08 · 31 阅读 · 0 评论 -
Java的反射
Method 类:Java.lang.reflec 包中的类,表示类的方法,它可以用来获取类中的方法信息或者执行方法。Field 类:Java.lang.reflec 包中的类,表示类的成员变量,可以用来获取和设置类之中的属性值。4.如果是基本类型的包装类,可以调用包装类的Type属性来获得该包装类的Class对象。获取想要操作的类的Class对象,这是反射的核心,通过Class对象我们可以任意调用类的方法。Class 类:反射的核心类,可以获取类的属性,方法等信息。使用反射 API 来操作这些信息。原创 2023-10-27 18:18:20 · 35 阅读 · 1 评论