概念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
重启资源管理器就好了
引用站外地址
Chocolate
chocolate的仓库链接
cmd安装
1@"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
powershell安装
1Set-ExecutionPolicy Byp ...
记事本123456789101112131415161718192021222324252627282930313233343536373839404142434445464748<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>notepad</title> <script src="vue.global.min.js"></script></head><body> <div id="app"> <!-- 定义一个文本框 --> & ...
Array对象使用
JavaScript 中的 Array对象用于创建数组
定义
var 变量名 = new Array(元素列表); // 方式一var 变量名 = [元素列表]; // 方式二
访问
变量名[索引]=值;
1234567891011121314151617// 定义数组var arr = new Array(1, 2, 3, 4);for (let i = 0; i < arr.length; i++) { console.log(arr[i]);}// 特点:长度可变,类型可变var b = [1, 2, 3];b[10] = 50;// [1, 2, 3, 空 ×7, 50]console.log(b);b[8] = 'A';b[9] = true;// [1, 2, 3, 空 ×5, 'A', true, 50]console.log(b);
属性、方法
length :设置或返回数组中元素的数量。
fo ...
引用站外地址
cn.vuejs.org
开始练气使用CDN载入
还是建议把js文件下载到本地使用
全局构建版本我的理解是:在全局中有一个Vue对象,使用赋值语句,会自动把Vue对象里相同的属性值赋给用户,这样就可以不用在每个Vue语法前加Vue关键字
1234567891011121314151617<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script><div id="app">{{ message }}</div><script> const { createApp, ref } = Vue// 可以使用 Vue.createApp( ...
推荐在线网站https://regex101.comhttps://geek-docs.com/java/java-tutorial/regex.html
Java中的语法参照表Java 具有用于处理正则表达式的内置 API。 它位于java.util.regex中。
Pattern就是regex正则表达式的对象,返回一个Pattern对象Matcher是进行匹配操作的对象,返回true/false
正则表达式
含义
例子
.
匹配任何单个字符。
示例
?
一次匹配或根本不匹配前面的元素。
+
与前面的元素匹配一次或多次。
*
与前面的元素匹配零次或多次。
^
匹配字符串中的起始位置。
$
匹配字符串中的结束位置。
|
备用运算符。
[abc]
匹配 a 或 b 或 c。
[a-c]
范围; 匹配 a 或 b 或 c。
[^abc]
否定,匹配除 a 或 b 或 c 之外的所有内容。
\s
匹配空白字符。
示例
\w
匹配单词字符; 等同于[a-zA-Z_0-9]
示例
\d
匹配单词字符; 等同于[ ...