Java
Java基础知识、集合
Longer_Wish_C
这个作者很懒,什么都没留下…
展开
-
类图的六大关系
继承是一种类与类之间的关系,表示一种泛化和特化的关系。子类继承父类的特性和行为。关联关系是指两个类之间的链接,它使一个类知道另一个类的属性和方法。组合关系也是整体与部分的关系,但是部分不能脱离整体存在,依赖关系是一种使用关系,一个类的实现需要另一个类的帮助。实现关系是一个类实现接口的方法,体现了类与接口的关系。聚合关系是一种特殊的关联关映射,表示整体和部分的关系,但整体与部分不是强依赖的。原创 2024-05-25 11:45:03 · 341 阅读 · 0 评论 -
Java异常的捕获和抛出底层
当代码执行到一个会抛出异常的状态时,JVM会实例化一个相应的异常对象。这个对象包含了异常发生时的信息,如异常类型、错误消息、和堆栈跟踪。这些信息有助于开发者了解异常发生的环境和原因。原创 2024-05-24 14:24:52 · 218 阅读 · 0 评论 -
Java反射
● 在运行时获取类的完整信息,从而操作类或对象的属性或方法。本质是JVM在得到class对象之后,通过class对象进行反编译,从而获取类的各种信息。● Java属于先编译再运行的语言,程序中对象的类型在编译期就确定下来了,而当程序在运行时可能需要动态加载某些类,这些类因为之前用不到,所以没有被加载到JVM。通过反射,可以在运行时动态地创建对象并调用其属性,不需要提前在编译期知道运行的对象是谁。原创 2024-05-20 21:29:20 · 372 阅读 · 0 评论 -
ArrayList和Ventor的区别
它是专门为并发应用设计的,特别适合于在多线程环境中频繁读取但很少修改的情况。Collections.synchronizedList 是一个静态方法,它接受任何 List 实现(如 ArrayList、LinkedList 等),并返回一个新的 List 对象,该对象的所有方法都是通过一个单一的对象锁同步的。写时复制策略的核心思想是,每当列表发生修改操作(如添加、删除、设置等)时,不直接在当前的数组上修改,而是先复制出一个新的数组,然后在这个新的数组上进行修改,修改完成后再将原数组引用指向新数组。原创 2024-05-20 10:33:09 · 875 阅读 · 0 评论 -
接口和抽象类的区别
如果需要定义一个基类并希望它的子类继承它的特征,则应该使用抽象类。如果您希望多个类共享相同的特征和行为,则应该使用接口。● 接口不能定义普通方法,而抽象类可以定义普通方法以及方法的代码。● 接口一般只包含抽象方法,Java8之后允许可以定义默认方法。● 接口可以实现多个而抽象类只能单继承。原创 2024-05-19 21:25:35 · 291 阅读 · 0 评论 -
Java泛型
泛型是一种为了提高代码通用性和复用性的代码格式,它允许我们在编写类或方法、接口时不需要指定详细的数据类型,先用一个占位符代替。在平时开发中接触的泛型一般就是需要封装某个工具类时,如在统一前后端返回格式的时候,定义一个泛型类,允许传递不同的数据类型返回给前端。/*** 状态码*//*** 提示信息*//*** 返回的数据*/return msg;原创 2024-05-18 19:41:39 · 426 阅读 · 0 评论 -
常量池和运行时常量池以及字符串常量池的区别
运行时常量池在类加载后被创建,它包括了类在编译期间静态生成的所有常量,以及运行期间动态生成的常量。运行时常量池具有动态性,不仅包括编译器编译的数据,还可能在运行时将新的常量放入池中,如String类的intern()方法。运行时常量池是常量池的运行时表示,属于方法区的一部分。每个加载到JVM的类或接口都有一个运行时常量池,用于存储编译期生成的各种字面量和符号引用的动态副本。如果不存在,新的字符串将被创建并放入池中。常量池是Java编译器生成的,存储在.class文件中的数据集合,它包含了类中所有的。原创 2024-05-10 10:09:17 · 256 阅读 · 0 评论 -
Java的BIO/NIO/AIO
每个客户端连连接本质上对应着一个Channel通道,每个通道都有自己的Buffer缓冲区来进行读写,这些Channel被Selector选择器管理调度Selector负责轮询所有已注册的Channel,监听到有事件发生,才提交给服务端线程处理,服务端线程不需要做任何阻塞等待,直接在Buffer里处理Channel事件的数据即可,处理完马上结束,或返回线程池供其他客户端事件继续使用。更好的性能:减少了线程数目,降低了系统对资源的需求,同时也减少了线程上下文切换的开销,这对于高性能服务器应用是非常重要的。原创 2024-05-08 15:46:03 · 1032 阅读 · 0 评论 -
Servlet、Tomcat、Control区别
Servlet 是一种动态网站开发技术,专门用来处理客户端的请求并生成响应。Servlet直接与Tomcat交互,处理从Tomcat传来的请求。然后生成网页或其他类型的响应发送回Tomcat,Tomcat再将这些响应返回给用户的浏览器。原创 2024-04-26 19:28:05 · 381 阅读 · 1 评论 -
Servlet和Tomcat运作过程
记录一下前后端请求交互过程(不涉及Spring框架):原创 2024-04-26 19:13:56 · 347 阅读 · 0 评论 -
new String和直接赋值的一些问题
的字符串常量池中生成一个对应的字符串, 把该地址传递给 str1。当你 new 一个新的字符串时,它首先会检查 方法区中字符串常量池 中是否有对应的字符串,如果没有,则会持续生成一份。字符串常量池(String Pool):Java中有一个特殊的区域称为字符串常量池。如果常量池中已经存在相同的字符串,就不会再创建新的相同字符串。通过以上的分析你应该知道,第二个str2 会直接去字符串常量池中查找有无对应的字符串,如果有,直接返回该地址,所以str1和str2指向的是同一个地址空间,答案为true。原创 2024-04-25 15:30:22 · 360 阅读 · 1 评论 -
IO实现方式(同步阻塞、同步非阻塞、IO多路复用)
同步阻塞io在数据在数据拷贝到两个阶段都是阻塞的,即把socket的数据拷贝到内核缓冲区和把内核缓冲区的数据拷贝到用户态到应用程序缓冲区都是阻塞的。用户线程在这个期间不能处理其他任务。优点:简单易用缺点:为每一次io请求都要分配一个线程,如果获取不到数据会一直阻塞。原创 2024-04-21 21:34:14 · 1082 阅读 · 0 评论 -
类中代码执行顺序的总结
假设有如下代码。原创 2023-08-30 09:29:05 · 141 阅读 · 0 评论 -
新生代与老年代
Survivor空间:当进行垃圾回收时,Eden空间中仍然存活的对象会被移动到Survivor空间。在垃圾回收过程中,存活的对象会从一个Survivor空间复制到另一个Survivor空间,同时清理掉不再存活的对象。由于大多数对象的生命周期较短,所以新生代采用了一种基于复制的垃圾回收算法,可以快速地回收不再存活的对象。新生代是用于存储新创建的对象的区域。在Java虚拟机(JVM)中,内存被划分为多个不同的区域,其中包括新生代(Young Generation)和老年代(Old Generation)。原创 2023-08-23 10:26:10 · 591 阅读 · 1 评论 -
MyBatis的SqlSession使用步骤
框架中的一个接口,用于执行与数据库相关的操作。它提供了一系列方法,用于查询、插入、更新和删除数据等数据库操作。原创 2023-08-14 21:38:50 · 664 阅读 · 0 评论 -
错误: 找不到或无法加载主类 原因: java.lang.ClassNotFoundException的解决方法
这里Project name要保持和Project location一致,不然会出现错误。查看系统java环境配置 win + r, 输入cmd。项目创建时候的项目名称没和文件夹名称一致。查阅后发现问题出在项目创建时,可以看出,环境配置无误。原创 2023-04-01 11:19:52 · 3442 阅读 · 1 评论