SpringBoot使用HTTPS
将SpringBoot项目的HTTP转化成HTTPS只需要在application.yml进行相关的配置,或者是通过实现 WebServerFactoryCustomizer<ConfigurableWebServerFactory> 创建一个配置类,以自动将 HTTP 流量重定向到 HTTPS。这两个方法均可实现将HTTP转为HTTPS。 具体步骤如下: ...
将SpringBoot项目的HTTP转化成HTTPS只需要在application.yml进行相关的配置,或者是通过实现 WebServerFactoryCustomizer<ConfigurableWebServerFactory> 创建一个配置类,以自动将 HTTP 流量重定向到 HTTPS。这两个方法均可实现将HTTP转为HTTPS。 具体步骤如下: ...
SPI SpringBoot的自动装配是通过SPI的方式实现的,并进行了进一步的优化,从而实现了自动装配。SPI全称为Serveice Provider Interface,是Java提供的一种服务发现机制。它允许不同的组件在运行时动态的扩展、替换和加载实现。SPI是一种基于接口和实现分离的设计模式。 在SPI机制中,定义一个接口作为服务的标准化接口,然后通过类路径下提供特定配置文件来指定具体的实现。这个配置文件通常位于META-INF/services目录下,以接口的全限定名命名。配置文件中列出了实现该接口的具体类的全限定名。 当需要使用某项服务时,应用程序可以通过SPI机制查找平加载对应的实现类。Java运行时会通过读取配置文件获取到实现类的信息,并实例化对应的类。这样能够做到在不修改代码的情况下,通过添加/替换配置文件中的实现类,来改变程序的行为或者增加新功能。 ...
sychronized sychronized是Java的关键字,用于实现线程之间的同步,保证多个线程对共享资源的安全访问,也被成为同步锁。 sychronized的作用是保证在同一时刻,被修饰的代码块或者方法只会有一个线程执行,以达到保证并发安全的效果。 ...
哈希表 HashMap是数据结构中的哈希表在Java中的具体实现。 哈希表(Hash Table)是一种常见的数据结构,也被称为散列表。它通过将键映射到存储桶(Buckets)中的位置来高效的存储和检索数据。哈希表使用一个哈希函数来计算键的散列值,然后将散列值映射到存储桶的索引上。 哈希表由存储桶数组和哈希函数组成。 ...
循环依赖 循环依赖是指两个或多个模块或组件之间相互依赖,形成一个闭环情况。 1 2 3 4 5 6 7 8 9 10 @Component public class A { @Autowired private B b; } @Component public class B { @Autowired private A a; } ...
Bean的生命周期 在Java应用中,普通的Java Bean的生命周期很简单。使用关键字new对Bean进行实例化,之后Bean就可使用了,当Bean不在被使用就会被Java的垃圾回收机制回收。概括的说就是两个阶段: ...
运行时数据区域 JVM在运行Java程序的过程中会把管理的内存分成不同的数据区域 线程私有: 虚拟机栈 本地方法栈 程序计数器 线程共享: 堆 方法区(元空间) 直接内存 虚拟机栈 Java虚拟机栈是一个线程私有的内存区域,用于存储每个方法执行时的局部变量表、操作数栈、动态链接、方法返回地址。每个方法在执行时都会创建一个栈帧,当方法执行完毕后,对应的栈帧将会出栈销毁。 局部变量表主要存放编译器可知的各种数据类型(基本数据类型)和对象引用 操作数栈用于在方法执行过程中进行数据操作和计算。操作数栈采用栈的数据结构,用于存储方法执行过程中的局部变量、中间结果和操作数。 动态链接是指在方法调用过程中进行方法的查找和链接,实现方法的动态绑定。主要用于支持Java程序中多态性和动态方法调用 方法返回地址是指在方法调用过程中,用于记录方法返回的地址信息。当一个方法被调用时,JVM会为该方法创建一个新的栈帧,并将其推入虚拟机栈中。 ...
JUC 1、什么是JUC 1 2 3 java.util.concurrent java.util.concurrent.atomic java.util.concurrent.locks java.util 工具包 业务:普通的线程代码Thread Runnable 没有返回值,效率相比Callable较低 2、线程和进程 线程、进程 进程:一个程序,QQ.ext Music.exe 程序的集合 ...