Spring
未读SpringBoot配置文件优先级:yaml = yml > properties
常用的配置1234567891011121314151617181920spring: # 数据库配置 datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/nodaoli username: nodaoli password: nodaoli servlet: # 文件上传配置 multipart: # 单个文件最大上传大小 max-file-size: 10MB # 多个文件最大上传大小 max-request-size: 100MBmybatis: configuration: # 设置Mybatis的日志功能 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 启用Mybatis的自动驼峰大写功 ...
Cloudflare
未读Cloudflare R2是一个基于Amazon S3 API的云存储服务,它允许您存储和检索对象,如图像、视频、音频和文档。
Cloudflare R2使用Amazon S3 API,因此您可以使用任何Amazon S3 SDK或工具来与R2进行交互。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051import lombok.extern.slf4j.Slf4j;import org.springframework.stereotype.Component;import org.springframework.web.multipart.MultipartFile;import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;imp ...
Spring
未读
application.properties配置1234567891011121314151617# 添加数据库spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/nodaolispring.datasource.username=nodaolispring.datasource.password=nodaoli# 添加MyBatis的日志,可以使用@Slf4j注解,log.info()静态方法输出日志mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl# 添加MyBatis的驼峰命名自动转换mybatis.configuration.map-underscore-to-camel-case=true# 配置单个文件的最大上传大小spring.servlet.multipart.max-file-size=10MB# 配置多 ...
当软件可执行文件当前目录中新建一个名为data的文件夹,便携模式会将此文件夹将作为基础启动文件夹,作为Home Directory
在不同系统上,可执行文件位置有所不同:
Windows:安装目录中Clash for Windows.exemacOS:软件包目录中/Contents/MacOS/Clash for Windows
当文件夹存在时,重启软件即可进入便携模式,此时软件将会读取/写入数据至该目录
Spring
未读个人理解:注入是在一个配置文件中设置类,对象的属性值。
通俗理解:
原生注入就是在源码封装的类中使用set和get方法
Spring bean注入就是在Spring配置文件.xml中的<bean>标签,使用<property>设置属性值
原生set注入方法我们封装了一个类,创建对象的时候,通过原生的set和get方法设置访问对象
或者通过构造器注入(也就是自动构造器)
1234567891011121314151617181920212223242526272829303132333435363738394041class book { private String bname; private String bauthor; public book() { } public book(String bname, String bauthor) { this.bname = bname; this.bauthor = bauthor; } ...
概念Spring 通过 IoC 容器来管理所有 Java 对象的实例化和初始化,控制对象与对象之间的依赖关系。
我们将由 IoC 容器管理的 Java 对象称为 Spring Bean,它与使用关键字 new 创建的 Java 对象没有任何区别。
bean定义信息:我在配置文件中(xml)中配置好我需要的类的信息(我需要什么对象),把这个信息交给IoC容器(告诉IOC我要的对象),让IOC给我返回
DI(Dependency Injection):依赖注入,依赖注入实现了控制反转的思想
指Spring创建对象的过程中,将对象依赖属性通过配置进行注入
获取Bean的三种方式
1234567891011// id获取User user1 = (User) context.getBean("user");System.out.println("id获取"+user1);// 类型(class)获取User user2 = context.getBean(User.class);System.out.println("类型获取" ...
在maven中导入依赖12345678910<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.19.0</version></dependency><dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j2-impl</artifactId> <version>2.19.0</version></dependency>
配置文件一般maven项目放在resources目录下
12345678910111213141516171819202122232425262728293031323334353637 ...
类似JavaScript的DOM操作
可以理解为通过反射把一个类的属性,方法,拆分出来,作为一个对象来使用
例如拆分成
Class对象:代表类的类型信息,可以用来获取类的静态属性,创建对象实例等。
Field对象:代表类中的字段(成员变量),可以用来获取或设置字段的值。
Method对象:代表类中的方法,可以用来调用方法。
Constructor对象:代表类的构造器,可以用来创建对象实例。
假设您有一个名为Person的类,其中有一个名为name的字段和一个名为sayHello的方法。使用反射,您可以这样做:
1234567891011121314151617181920212223242526272829303132333435363738394041import java.lang.reflect.Field;import java.lang.reflect.Method;public class ReflectionExample { public static void main(String[] args) { try ...
问题
为什么反射加载不知道的类,在使用Class.forName()方法时,需要指定一个类的名称,那这不就是知道了类吗?
当我们使用new关键字创建对象时,我们的代码必须知道具体的类,编译器会在编译时检查这个类是否存在,这种方式是静态的,在编译时就需要确定所有的类和对象。但是,当我们使用反射时,我们可以在程序运行时才决定使用哪个类,这样程序就可以更加灵活地响应在编译时无法预知的变化。
使用Class.forName()的典型场景包括:
插件系统:应用程序可以加载不同的插件,而这些插件的具体类在编译时是不确定的。
配置驱动的应用程序:类的名称可以从配置文件中读取,程序根据配置来加载对应的类。
动态代理:在运行时创建接口的代理实例,这些接口的实现类是在运行时确定的。
数据库驱动加载:JDBC中经常使用Class.forName()来动态加载数据库驱动。
在这些情况下,尽管我们使用Class.forName()时知道要加载的类名,但这个类名很可能是用户输入、配置文件、或者网络传输等在程序运行时才能确定的信息,而不是在编写代码时就能固定的。因此,反射提供了一种运行时动态处理类的机制,增 ...
快捷键 win + R,在打开的运行窗口中输入 %localappdata%,回车。
勾选“查看”-》“显示”-》“隐藏的项目”,展示隐藏文件
删除IconCache.db
重启资源管理器就好了