JavaEE
文章平均质量分 86
p_fly
这个作者很懒,什么都没留下…
展开
-
【JVM】JVM相关概念详解
JVM 全称是 Java Virtual Machine,中文译名 Java虚拟机。JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件。原创 2024-07-27 16:53:58 · 1027 阅读 · 0 评论 -
【JavaEE】AQS原理
首先有个整体认识,全称是 AbstractQueuedSynchronizer,是阻塞式锁和相关的同步器工具的框架。常用的ReentrantLock、Semaphore、CountDownLatch等都有实现它。原创 2024-07-22 10:29:44 · 957 阅读 · 0 评论 -
【JavaEE】Executors中常见线程池工厂方法及其使用
本文将介绍Executors中常见一些工厂方法。Executors中的工厂方法其实就是对ThreadPoolExecutor的封装,方便使用。原创 2024-07-19 16:14:28 · 899 阅读 · 0 评论 -
【JavaEE】CAS原理实现 + 常见应用
CAS:比较和交换(设置) Compare And Swap(Set)。当A的值为5的时候,给A设置值为10。这里涉及到的比较和设置值的操作是原子的。原创 2024-07-19 11:28:13 · 998 阅读 · 0 评论 -
【JavaEE】volatile + final + wait-notify + join + park-unpark 相关原理
本文所讲的一些原理都是在多线程中经常使用的内容。原创 2024-07-18 12:19:48 · 1074 阅读 · 0 评论 -
【JavaEE】synchronized原理详解
synchronized的加锁过程是逐步提高的,并不是一上来就要加重量级锁。原创 2024-07-17 21:52:50 · 1313 阅读 · 0 评论 -
【JavaEE】MyBatis + 单元测试
这是MyBatis官网对MyBatis的介绍。MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。原创 2023-05-21 22:59:12 · 1249 阅读 · 1 评论 -
【JavaEE】SpringMVC
请求重定向是指将请求从一个Web资源(如Servlet或JSP)发送到另一个Web资源,并且在过程中会更改URL。在请求重定向期间,Web容器会向浏览器发送一个302 HTTP状态码的响应,该响应包含一个新的URL,浏览器会自动发送一个新的请求以获取新的资源。简单来说就是 客户端像服务器发送请求,服务器这里不处理这个请求,但是会给客户端一个URL,然后客户端根据返回的URL重新访问。上述代码虽然保存了文件,但是有个致命的错误,就是下次再上传文件的时候,之前的旧文件会被新文件覆盖,原因是文件名写死了。原创 2023-05-12 11:32:02 · 836 阅读 · 0 评论 -
【JavaEE】SpringBoot的日志
日志门面:是一个抽象层,它提供了统一的日志接口,使应用程序能够按照一致的方式记录日志,而不需要关心具体的日志实现。在应用程序中使用日志门面接口编写代码,使得应用程序可以在运行时动态地切换具体的日志实现,而不需要修改代码。日志实现:是实现了日志门面接口的具体日志框架,应用程序在运行时通过配置文件指定所需要的具体日志实现,日志门面就会调用相应的日志实现来记录日志信息。上述的日志只是打印在了控制台上,并没有记录到文件(持久化)当中,这显然是不科学的。在配置文件中修改日志级别,现在来修改一下上一个程序的日志级别。原创 2023-04-26 22:07:42 · 1276 阅读 · 1 评论 -
【JavaEE】SpringBoot配置文件的设置及其读取
Properties 是一种常见的配置文件类型,其以键值对(key-value)的形式保存配置信息。Properties 格式的文件通常使用 .properties 后缀名,该文件包含了若干行文本和 ASCII 编码的字符集,其中每一行都表示一个属性的键值对。以上两个读取配置文件的方法默认读取的是主配置文件中的内容。通常在IDEA中的properties的字符集是不适配中文的,读取配置文件信息的方法有很多,下面将介绍一些常见的方法。通过该注解可以指定读取的位置,然后读取出来配置项。这就需要我们修改一下。原创 2023-04-25 14:58:32 · 987 阅读 · 0 评论 -
【JavaEE】Bean的作用域和生命周期
最后Service从Spring中获取到User,查看是否和最开始的User一样。由于我们目前的项目是Spring Core项目,目前只可以演示单例作用域和原型作用域。现在来演示一下单例作用域的效果。销毁容器的各种⽅法,如 PreDestroy、DisposableBean 接⼝⽅法、destroy-method。默认的作用域是单例作用域,当我们想要更改其作用域是,通过注解和配置文件的方式更改。最后打印一下User,看看是否符合单例的模式。把上述的Bean从单例作用域变成原型作用域。原创 2023-04-22 15:54:46 · 330 阅读 · 0 评论 -
【JavaEE】Spring中存储和获取Bean(使用注解)
上篇文章的存储Bean是在Spring的配置文件下通过bean标签来把Bean存储到Spring容器中,其中需要设置标签属性id 和 name,还是比较麻烦的,接下来介绍一种更为简单也最为常用的方法来存储Bean。但是通过方法名获取通常是不使用的,我们可以在@Bean注解后重写命名,通过新名字来获取,同时。5. 该注解是把方法的返回值存入到Spring中,如果方法没有返回值,就不能使用该注解。这是JDK提供的注入Bean的注解,和@AutoWired有以下的区别。上述工作完成后就可以通过注解存储Bean。原创 2023-04-16 14:05:21 · 1652 阅读 · 0 评论 -
【JavaEE】社区版IDEA(2021.X版本及之前)创建SpringBoot项目
Spring Boot 是基于 Spring 构建的一个快速开发框架,它就像一个集成了 Spring 的生态系统,提供了各种功能来简化 Spring 应用程序的开发和配置,同时还支持自动配置、内嵌式容器等特性,可以快速构建可执行的、独立运行的应用程序。版本兼容性:Spring 与其相关技术的版本需要手动配置,而 Spring Boot 提供了严格的版本管理,确保不同版本之间的兼容性。开发体验:Spring Boot 提供了更好的开发体验,提供了快速开发的功能和可视化的指标展示等。有什么错误评论区指出。原创 2023-04-23 09:30:00 · 870 阅读 · 1 评论 -
【JavaEE】Spring项目的创建与使用
功能方面:ApplicationContext出了拥有BeanFactory的所有功能之外,还添加了一些其他功能:对国际化支持、资源访问的支持、事务传播方面的支持等。在存储Bean之前,先要在resources目录下创建一个Spring的配置文件,这里面是用来声明存放Bean的。继承方面:二者都是Spring容器的顶级接口,ApplicationContext是BeanFactory的子类。Spring项目的创建主要是在maven项目引入依赖后下载依赖,这时一个maven项目就变成了Spring项目。原创 2023-04-12 10:49:36 · 1057 阅读 · 0 评论 -
【JavaEE】Spring + IoC + DI
在Spring框架中,DI通过@Autowire注解、构造函数注入、Setter方法注入等方式来实现。其中,@Autowire注解是最常用的方式,它可以自动装配对象,并且可以根据类型、名称、注解等条件进行注入。它从Spring容器中取出已经注册的对象,比如上面的车身、底盘和轮胎,哪个类需要,直接从容器中取出使用即可。上面提到了IoC,它是一种反转控制权思想,而DI则是它的实现方式。这就导致了,所有的代码都要大改动。,是面向对象的一种设计原则。由于每个类之间都是层层依赖的关系,并且都是。原创 2023-04-11 13:30:00 · 584 阅读 · 0 评论 -
【JavaEE】文件
对文件内容的操作有两大类,它们都是一种类似于水流的操作。文件内容就像水龙头里的水流,文件里的就是数据流。都是打开,关闭,读文件和写文件。Java对于文件的操作可以分为两大类,对文件系统的操作和文件内容的操作。想要找到工作路径的上面的文件夹,../ATest 可以表示 (../ 表示当前路径的上一级)绝对路径是针对于整个文件系统来说的,描述的路径是从头到尾一个不落。多说情况下,文件更多的意思是一种软硬件资源的意思,比如网卡。本文的文件只是侠义上的文件,就是文件夹和里面的文件。原创 2023-02-04 16:53:07 · 1348 阅读 · 0 评论 -
【JavaEE】线程安全的集合类
在Java标准库中,大部分集合类都是线程不安全的。Vector(比ArrayList多了同步化机制就变得线程安全了);Stack(继承Vector);Hashtable(只比Hashmap多了线程安全);以Concurrent开头的集合类:ConcurrentHashMap、ConcurrentLinkedQueue等;以CopyOnWrite开头的集合类:CopyOnWriteArrayList、CopyOnWriteArraySet等。以上这些都是线程安全的,其他的则不是线程安全。原创 2023-02-02 15:34:11 · 312 阅读 · 0 评论 -
【JavaEE】锁策略 + synchronized原理 + CAS + JUC下常用类和接口 + 死锁
设想一个场景,如果多个线程A,B,C获取锁。在Java中,Reentant开头命名的锁都是可重入锁,JDK提供的所有所有现成的Lock实现类也都是可重入的。拥有了锁,也就把资源变成0了(资源不能为负数),释放了锁,资源又变成1。自旋锁:获取锁时,如果获取失败,并不会放弃CPU进行阻塞,而是立刻又获取锁。往复循环,知道获取到锁为止。互斥锁:如果一个线程获取到锁了,如果还有想获取该锁,就只能进行阻塞等待。死锁是多个线程同时被阻塞,它们中一个或多个线程都在等待锁释放,导致了僵持的场面,程序陷入死循环的局面。原创 2023-02-01 21:30:22 · 404 阅读 · 0 评论 -
【JavaEE】线程池
①SHUTDOWN 状态下,任务数为 0, 其他所有任务已终止,线程池会变为 TIDYING 状态,会执行 terminated() 方法。此时每个线程执行的任务都是在等待IO(读写硬盘、读写网卡等),此时线程处于阻塞状态,不参与CPU的调度,这样就可以尽可能的多搞一些线程。②线程池在 SHUTDOWN 状态,任务队列为空且执行中任务为空,线程池就会由 SHUTDOWN 转变为 TIDYING 状态。线程池一旦被创建,就处于 RUNNING 状态,任务数为 0,能够接收新任务,对已排队的任务进行处理。原创 2023-01-30 17:36:46 · 406 阅读 · 0 评论 -
【JavaEE】定时器的简单实现
可能随时会有新的任务添加进来,这样就会导致时间的不确定性。如果有新的任务添加进来,就唤醒以下正在阻塞的扫描线程,看看新的时间是否要执行,如果时间还不到,就继续阻塞,知道最早的时间到了,在执行任务。可以简单的理解为是堆Runnable接口的升级,实际上还是Runnable接口。检查是否要执行任务,只需要查看队首的元素时间是不是到了。定时器创建时(所以需要在构造方法中),需要一个线程一直扫描检查里面的任务时间是否到了,到了就立马执行。这里需要一个类是描述这个任务,因为除了任务之外,还需要时间。原创 2023-01-24 13:48:21 · 1720 阅读 · 0 评论 -
【JavaEE】阻塞队列 + 生产者消费者模型
阻塞队列是在一般的队列上升级而来的。对于队列为时,如果还想队列中的元素,此时阻塞队列就会进行。对于队列为时,如果还想往队列中元素,此时阻塞队列就会进行。原创 2023-01-19 21:00:11 · 1982 阅读 · 0 评论 -
【JavaEE】单例模式(饿汉&懒汉)
本片文章介绍设计模式中的一个模式——单例模式。单例模式就是只允许创建出一个实例的类。比如之前在使用JDBC编程的时候的DataSource这个类,就可以使用单例模式。见这篇文章。其中单例模式有很多种实现方法,这里只用懒汉模式和饿汉模式来实现单例模式。原创 2023-01-18 17:55:46 · 476 阅读 · 0 评论 -
【JavaEE】线程安全 + wait和notify方法
在多线程的情况下,对于代码多次执行后所出现的结果和我们预期的结果一致,那么我们就可以说这是线程安全的,反之就是线程不安全。原创 2023-01-16 20:58:32 · 315 阅读 · 0 评论 -
【JavaEE】线程的状态和使用Jconsole观察线程
现在运行以下一个程序,同时使用jdk里面的工具Jconsole来观察线程。有了上面这个图,线程的状态就一目了然了。有什么错误评论区指出,希望可以帮到你。该工具就在jdk里面。原创 2023-01-10 13:30:00 · 151 阅读 · 0 评论 -
【JavaEE】Thread类详解
上篇文章【JavaEE】操作系统+进程+线程_p_fly的博客-CSDN博客 讲了线程的概念,接下来就介绍如何创建线程和相关的注意事项。目录创建线程的五种常用写法1.继承Thread类2.使用匿名内部类,继承Thread类3.实现Runnable接口4.使用匿名内部类,实现Runnable接口5.Lambda表达式Thread类中的部分方法静态方法(类方法)获取线程实例休眠线程构造方法实例方法获取Thread的常见属性描述线程的任务启动(创建)线程等待线程中断线程在Java中,操作多线程最核心的类就是Thr原创 2023-01-09 16:21:00 · 184 阅读 · 0 评论 -
【JavaEE】操作系统+进程+线程
操作系统本质上就是一个软件。它是一个搞的软件。对于软件,操作系统要给软件提供一个稳定的环境;对于硬件,要管理好硬件设备。原创 2023-01-03 12:31:35 · 323 阅读 · 0 评论