SpringFramework初入门(IoC与AOP)
文章目录
- 前言
- 1、SpringFramework是什么
- 2、IOC
- 2.1 IOC实现
- 2.2 IOC配置文件
- 2.3 获取bean
- 2.4 通过有参构造创建bean
- 2.5 给bean注入集合
- 2.6 scope作用域
- 2.7 Spring的继承
- 2.8 Spring的依赖
- 2.9 IoC自动装载
- 2.10 Spring的p命名空间
- 3、AOP
- 3.1 如何使用AOP
- 3.1.1 几个关于AOP的名词
前言
springframework 即spring框架,是spring 里面的一个开源框架,主要用户javaee的企业开发,通常也会用spring来代指spring框架,通过本文你将了解springframework 的两大核心,IoC和AOP的实现。
准备开发环境:idea、jdk8以上。
使用maven构建项目
参考视频:
楠哥的spring视频教程:https://www.bilibili.com/video/BV1XK411578C
楠哥的视频真的好,希望各位学java的同学都能了解到这位好老师。
以及linkedbear的springFramework教程:https://www.bilibili.com/video/BV1XK411578C
这位老师讲课也挺好,喜欢从java的历史发展来讲课,能把前因后果都讲明白。
1、SpringFramework是什么
SpringFramework是一个开源的、松耦合的、分层的、可配置的一站式企业级Java开发框架,它的核心是IOC和AOP,可以更容易的构建出企业级Java应用,并且可以根据应用开发的组件的需求,整合对应的技术。
- IOC:组件之间解耦
- AOP:将应用业务做统一或者特定的功能增强,能实现应用业务与增强逻辑的解耦
- 容器与事件:管理应用中使用的组件Bean,托管Bean的生命周期、事件和监听器的驱动机制
- web、事务控制、测试、与其他技术的整合
一般来说,Spring会指一系列框架的集合,也会用于指代SpringFramework。SpringFramework的两大核心是IOC和AOP,本文将从这两个核心入手,通过使用SpringFramework了解IOC和AOP。
2、IOC
IOC即控制反转,用来降低类与类之间的耦合度。控制反转通过反射机制实现。在Spring中,有一系列方法来实现控制反转。
2.1 IOC实现
1、创建maven工程,pom.xml添加依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.southwind</groupId><artifactId>aispringioc</artifactId><version>1.0-SNAPSHOT</version><dependencies>
<!-- 上下文依赖,添加完依赖后需要在idea中添加lombok插件--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.7.RELEASE</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.6</version><scope>provided</scope></dependency></dependencies>
</project>
2、创建实体类Student
package com.southwind.entity;import lombok.Data;@Data
public class Student {private long id;private String name;private int age;
}
3、通过IOC创建对象,在resource文件夹下的配置文件中添加需要管理的对象,新建xml格式的配置文件。
例:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"><!-- 添加bean,id为取出bean的标识符,class为对象所在的类 --><bean id="student" class="com.southwind.entity.Student"><!-- 给对象属性赋值 --><property name="id" value="1"></property><property name="age" value="21"></property><property name="name" value="tom"></property></bean>
</beans>
4、两种方式新建对象,一是传统new个对象,二是从IOC中通过bean设置的id获取
package com.southwind.test;import com.southwind.entity.Student;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {public static void main(String[] args) {//传统构造对象Student student1 = new Student();student1.setId(1L);student1.setName("tom");student1.setAge(21);System.out.println("传统构造对象"+student1);//ioc构造对象//加载配置文件ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");Student student = (Student) applicationContext.getBean("student");System.out.println("IOC构造对象"+student);}
}
5、输出:
2.2 IOC配置文件
- 通过配置xml中的bean标签来完成对象的管理。
bean属性: (1)id:对象名,根据id获取IOC中的对象
(2)class:对象的模板类(所有交给IOC容器来管理的类必须有无参构造函数,因为Spring底层是通过反射机制来创建对象,调用的是无参构造方法) - 对象的成员变量通过bean内的property标签完成赋值。
(1)name:成员变量名。
(2)value:变量名对应的成员变量(基本数据类型和String可以直接赋值,如果是其他引用类型则不能通过value赋值)
(3)ref:将IoC中的另外一个bean赋给当前的成员变量(DI依赖注入)
例:Teacher类的成员变量为student,因此要实例化Teacher要把student对象注入到teacher中。
<bean id="student" class="com.southwind.entity.Student"><property name="id" value="1"></property><property name="age" value="21"></property><property name="name" value="tom"></property></bean><bean id="teacher" class="com.southwind.entity.Teacher"><property name="student" ref="student"></property></bean>
2.3 获取bean
通过运行时类获取bean
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("spring.xml");Student student = applicationContext.getBean(Student.class);System.out.println("IOC构造对象"+student);
存在问题:配置文件中一个数据类型的对象只能有一个实例,否则会抛出异常,因为没有唯一的bean。
2.4 通过有参构造创建bean
1、首先要在实体类中创建对应的有参构造函数
2、配置文件
<bean id="stu" class="com.southwind.entity.Student"><constructor-arg name="id" value="2"></constructor-arg><constructor-arg name="name" value="cat"></constructor-arg><constructor-arg name="age" value="25"></constructor-arg></bean>
constructor-arg和property区别在于constructor-arg通过构造函数注入,property通过setter对应的方法注入。
2.5 给bean注入集合
例:
User类
package com.southwind.entity;import lombok.Data;import java.util.List;@Data
public class User {private List<Address> addresses;
}
Address类
package com.southwind.entity;import lombok.Data;@Data
public class Address {private String name;private int id;
}
xml配置:
<bean id="user" class="com.southwind.entity.User"><property name="addresses" ><list><ref bean="address1"></ref><ref bean="address2"></ref></list></property></bean><bean id="address1" class="com.southwind.entity.Address"><property name="name" value="高新区"></property><property name="id" value="1"></property></bean><bean id="address2" class="com.southwind.entity.Address"><property name="name" value="工业园"></property><property name="id" value="2"></property></bean>
2.6 scope作用域
bean的作用域有四种,默认为singleton。
- singleton:单例,表示通过IoC容器获取的bean是唯一的
- prototype:原型,通过IOC容器获取的bean不同
- request:请求,表示在一次HTTP请求内有效
- session:会话,表示在一次用户会话内有效
request和session值适用于web项目,一般使用单例和原型较多。
2.7 Spring的继承
Spring的继承是对象级别的继承,是指子对象能够继承父对象的属性值。因此要求子对象的属性值范围要比父对象的属性值要大,如果父亲有的属性如果儿子没有则会出现错误。
使用parent标签
<bean id="student" class="com.southwind.entity.Student" scope="prototype"><constructor-arg name="id" value="1"></constructor-arg><constructor-arg name="name" value="tom"></constructor-arg><constructor-arg name="age" value="16"></constructor-arg></bean><bean id="stu" class="com.southwind.entity.Student" scope="prototype" parent="student"></bean>
2.8 Spring的依赖
依赖也是bean和bean之间的一种关系,配置依赖后,被依赖的bean一定先创建。
<bean id="student" class="com.southwind.entity.Student" scope="prototype"><constructor-arg name="id" value="1"></constructor-arg><constructor-arg name="name" value="tom"></constructor-arg><constructor-arg name="age" value="16"></constructor-arg></bean><bean id="teacher" class="com.southwind.entity.Teacher" depends-on="student"></bean>
2.9 IoC自动装载
手动装载:IOC负责创建对象,DI负责完成对象的依赖注入,通过配置property标签的ref属性来完成。
自动装载:无需手动配置,IoC会自动选择bean完成注入。
自动装载有两种方式:
- byName:通过属性名自动装载,寻找id名等于属性名的bean注入
- byType:通过属性的数据类型自动装载
例:向User对象中注入car对象
User类:
package com.southwind.entity;
import lombok.Data;@Data
public class User {private Car car;
}
Car类:
package com.southwind.entity;
import lombok.Data;@Data
public class Car {private String name;
}
byName:
<bean id="car" class="com.southwind.entity.Car"><property name="name" value="宝马"></property></bean><bean id="user" class="com.southwind.entity.User" autowire="byName"></bean>
byType:
<bean id="car" class="com.southwind.entity.Car"><property name="name" value="宝马"></property></bean><bean id="user" class="com.southwind.entity.User" autowire="byType"></bean>
二者区别在于,byName是识别属性名,byType是根据数据类型加载,因此如果有两个相同数据类型的bean对象存在时,使用byType将会无法选择出bean注入,从而引发异常。
2.10 Spring的p命名空间
p命名空间是对IoC/DI的简化操作,使用p命名空间可以更加方便的完成对bean的配置以及bean的依赖注入。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:p="http://www.springframework.org/schema/p"xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd "><bean id="student" class="com.southwind.entity.Student" p:id="1" p:name="tom" p:age="21"></bean><bean id="teacher" class="com.southwind.entity.Teacher" p:id="2"></bean></beans>
3、AOP
AOP:Aspect Oriented Programming 面向切面编程
优点:
- 降低模块之间耦合度
- 易扩展
- 提高代码复用
- 集中管理非业务代码
AOP是面对对象编程的一个补充,是指在运行时,动态地将代码切入到类的指定方法、指定位置上。把不同方法的同一个位置抽象成一个切面对象,对该切面对象进行编程就是AOP。
使用场景:对各个模块中重复率高且出现位置类似、功能类似的代码抽离,放在切面对象中,由切面对象来输出代码,提高代码的复用性。
实例:输出日志
传统实现AOP是通过动态代理来完成,Spring框架对AOP进行封装,使用Spring框架可以用面向对象的思想来实现AOP。
Spring框架只需要创建一个切面对象,把所有的非业务代码写在切面对象中完成即可,Spring框架底层会自动根据切面类以及目标类生成一个代理对象。
3.1 如何使用AOP
- 创建Maven工程
向配置文件pom.xml添加:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.southwind</groupId><artifactId>aispringaop</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>5.2.7.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>5.2.7.RELEASE</version></dependency></dependencies></project>
- 创建一个计算器接口Cal,定义四个方法
package com.southwind.utils;public interface Cal {public int add(int num1,int num2);public int sub(int num1,int num2);public int mul(int num1,int num2);public int div(int num1,int num2);
}
- 创建接口的实现类CalImpl
package com.southwind.utils.impl;import com.southwind.utils.Cal;
import org.springframework.stereotype.Component;@Component
public class CalImpl implements Cal {//四个方法相当于业务代码public int add(int num1, int num2) {int result = num1+num2;return result;}public int sub(int num1, int num2) {int result = num1-num2;return result;}public int mul(int num1, int num2) {int result = num1*num2;return result;}public int div(int num1, int num2) {int result = num1/num2;return result;}
}
假设使用场景:已知CalImpl类有四个方法分别是加减乘除,要求在执行方法前输出各自的方法名和参数,执行方法后输出本方法已执行。(相当于业务代码执行前后输出日志信息)
- 新建LoggerAspect,作为切面对象
package com.southwind.aop;import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.*;
import org.springframework.stereotype.Component;import java.util.Arrays;//Aspect注解 使其成为切面对象
//Component注解 相当于在xml中配置了一个bean
@Aspect
@Component
public class LoggerAspect {@Before(value = "execution(public int " +"com.southwind.utils.impl.CalImpl.*(..))")public void before(JoinPoint joinPoint){//获取方法名String name = joinPoint.getSignature().getName();//获取参数String args = Arrays.toString(joinPoint.getArgs());System.out.println(name+"方法的参数是"+ args);}@After(value = "execution(public int " +"com.southwind.utils.impl.CalImpl.*(..))")public void after(JoinPoint joinPoint){String name = joinPoint.getSignature().getName();System.out.println(name+"方法执行完毕");}@AfterReturning(returning = "result",value = "execution(public int " +"com.southwind.utils.impl.CalImpl.*(..))")public void afterReturning(JoinPoint joinPoint,Object result){String name = joinPoint.getSignature().getName();System.out.println(name+"方法的结果是"+result);}@AfterThrowing(throwing = "exception",value = "execution(public int " +"com.southwind.utils.impl.CalImpl.*(..))")public void afterThrowing(JoinPoint joinPoint,Exception exception){String name = joinPoint.getSignature().getName();System.out.println(name+"方法抛出异常"+exception);}
}
LoggerAspect类定义处添加的两个注解:
- @Aspect
:表示该类是切面类
- @Component
:将该类的对象注入到IoC容器中
value = "execution(public int com.southwind.utils.impl.CalImpl.*(…))"表示切入点是 com.southwind.utils 包下 CalImpl 类中的所有方法。
指定方法用:execution(public int com.southwind.utils.impl.CalImpl.add(…))
具体方法处添加的注解:
- @Before
:前置通知, 在方法执行之前执行。(value表示切入点的地址)
- @After
:后置通知, 在方法执行之后执行 。
- @AfterReturning
:在方法有返回值之后执行 ,返回值是result(returning = “result”)
- @AfterThrowing
:异常通知, 在方法抛出异常之后,抛出的异常是exception(throwing = “exception”)
- spring.xml中配置AOP(resource文件下新建spring.xml)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd "><!-- 自动扫描--><context:component-scan base-package="com.southwind"></context:component-scan><!-- Aspect注解生效,为目标类自动生成代理对象--><aop:aspectj-autoproxy></aop:aspectj-autoproxy></beans>
原理: context:component-scan
将com.southwind
包中的所有类进行扫描,对添加了@Component
的类添加到IOC容器中,由IOC来管理这个对象。
aop:aspectj-autoproxy
让spring框架结合切面类和目标类自动生成动态代理对象。
3.1.1 几个关于AOP的名词
切面:横切关注点被模块化的抽象对象(处理非业务代码的抽象对象)
通知:切面对象完成的工作。
目标:被通知的对象,也就是被横切的对象。
代理:切面、通知、目标混合之后的对象。
连接点:通知要插入业务代码的具体位置。
切点:AOP通过切点定位到连接点。
以上就是关于SpringFramework两大核心IoC和AOP的使用,如有疑问欢迎提出。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- Effective Approaches to Attention-based Neural Machine Translation_2015_Luong 【NMT】【Attention】
文章目录提出背景神经机器翻译NMT模型Global AttentionLocal attentionInput-feeding论文链接:Effective Approaches to Attention-based Neural Machine Translation By Luong et al. 2015任务对齐(alignments between different modalities):对齐是指比如在翻译任务中,翻…...
2024/4/17 7:49:58 - [Spring] Spring
目录Spring家族Spring Core、Spring Security、Spring DataSpring BootIoC:控制反转IoC应用AOP你了解SpringAop么Aop的三种织入方式AOP原理Spring事务的相关考点ACID隔离级别事务传播总结 Spring家族 Spring Core、Spring Security、Spring Data Spring Core、Spring Security…...
2024/4/16 2:38:19 - 架构即未来-摘要及读书笔记
文章目录1、组织层面人团队领导力管理2、执行过程变更管理危机管理故障管理可扩展的web架构原则3、架构实践故障隔离的架构AFK立方体缓存以支持扩展性异步以支持扩展性数据存储的扩展性架构即未来-摘要及读书笔记大纲1、组织层面 人 团队 领导力 管理 2、执行过程变更管理 危机…...
2024/4/16 2:39:25 - [iOS]Label-获取字符串的宽度(Swift)
实际编码过程中,我们可能会需要通过代码动态的向某个 View 视图中添加 UILabel, 此时,我们必须手动的为这些 UILabel 对象添加约束条件,否则,这些 UILabel 将会因为没有约束条件而无法显示。 只有获取到 UILabel 中填充的字符串所占据的宽高信息之后,才能为其添加具体的约…...
2024/4/16 2:39:30 - TestNG中文文档(04) -- 运行TestNG
一、运行TestNGTestNG可以使用多种方式调用:命令行antEclipseIntelliJs IDEA 本节将只介绍如何从命令行运行TestNG。如果您对其他方式感兴趣,那么就点击上面的链接查看更多信息。假设TestNG已经在你的类路径中,最简单的调用方式如下java org.testng.TestNG testng1.xml [tes…...
2024/4/16 2:38:54 - 六大设计原则(二)LSP里氏替换原则
里氏替换原则LSP(Liskov Subsituation Principle) 里氏替换原则定义 所有父类出现的地方可以使用子类替换并不会出现错误或异常,但是反之子类出现的地方不一定能用父类替换。 LSP的四层含义 子类必须完全实现父类的方法 子类可以自己的个性(属性和方法) 覆盖或实现父类的方法…...
2024/5/6 11:21:15 - Observer观察者模式与OCP开放-封闭原则
目录场景引入在联网坦克项目中使用观察者模式总结在学习Observer观察者模式时发现它符合敏捷开发中的OCP开放-封闭原则, 本文通过一个场景从差的设计开始, 逐步向Observer模式迈进, 最后的代码能体现出OCP原则带来的好处, 最后分享Observer模式在自己的项目中的实现.场景引入 在…...
2024/3/28 18:15:48 - Java 设计模式:实战访问者模式「模拟家长与校长,对学生和老师的不同视角信息的访问场景」
一、前言能力,是你前行的最大保障年龄会不断的增长,但是什么才能让你不慌张。一定是能力,即使是在一个看似还很安稳的工作中也是一样,只有拥有能留下的本事和跳出去的能力,你才会是安稳的。而能力的提升是不断突破自己的未知也就是拓展宽度,以及在专业领域建设个人影响力…...
2024/5/6 17:06:26 - 使用POI技术简单的将数据库中的数据读取出为Excel文件
利用POI生成.xlxs 效果图利用反射将实体类的属性读取出来,然后对应数据库表中的字段,循环插入对应的数据数据来源 本次测试的数据为数据库查询得出,所以需要MyBatis查询数据库,然后根据反射将实体类的属性匹配字段的数据循环读取出来,并写入文件. 代码详解(POI写和读在代码中的…...
2024/4/24 20:54:42 - nodejs中es6 padStart()、padEnd()方法
padStart()方法,padEnd()方法 ES2017 引入了字符串补全长度的功能。如果某个字符串不够指定长度,会在头部或尾部补全。padStart()用于头部补全,padEnd()用于尾部补全。 x.padStart(5, ab) // ababx x.padStart(4, ab) // abax x.padEnd(5, ab) // xabab x.padEnd(4, ab) // x…...
2024/5/6 10:16:38 - php 检查txt中全角大写字母的个数
<?php function IsChinese($inChar) {//中文从GBK里的16区(0x10 + 0xA0 = 0xB0)开始if ($inChar > chr(0xB0)){return true;}return false; }//判断字符是不是ASCII码 function IsAscii($inChar) {if ($inChar < chr(0x80)){return true;}return false; }//判断字符是…...
2024/4/16 2:40:01 - Navcat for mysql导入sql文件失败解决方法
今天在导入sql文件的时候发现,无论是在服务器连接上面运行sql还是在创建好的数据库上运行都是 Frished−Uncestsuly\color{red}{Frished - Uncestsuly}Frished−Uncestsuly然后我直接把sql文件里面的代码复制到新建查询里面运行发现:The InnoDB feature is disabled; you need…...
2024/4/18 15:49:10 - JSON的概念语法以及与Java对象的相互转换(思维导图)
JSON的概念语法以及与Java对象的相互转换(思维导图),该内容我已上传至博客哦,如果觉得博文看不方便的可以自行下载哦(限时免费)!...
2024/5/3 12:46:58 - python pandas中的applymap()、apply()、map()的用法和区别
1、applymap()是作用于整个dataframe的每个元素的,所以它一定是一个dataframe来调用,然后对里面的每个元素做一样的处理。2、apply()则是作用于dataframe其中的一行或者一列的3、map()则是作用于一个series的具体使用示例参考:[python学习笔记]map(), apply()和applymap()的…...
2024/5/3 13:42:17 - 用两个栈实现队列
9. 用两个栈实现队列 题目链接 牛客网 题目描述 用两个栈来实现一个队列,完成队列的 Push 和 Pop 操作。 解题思路 in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出…...
2024/4/16 20:34:14 - hadoop详细笔记(十一) mapreduce数据分析案例之线段重叠案例
1 数据1,4 2,5 3,4 2,5 2,4 3,4 2,62 需求统计x轴上每个点线段重叠的次数3 代码实现package com._51doit.mr.line;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.Lo…...
2024/4/18 3:48:58 - Android 刘海屏全屏适配(沉溺式状态栏,隐藏状态栏)
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)requestWindowFeature(Window.FEATURE_NO_TITLE) //这行代码一定要在setContentView之前,不然会闪退setContentView(R.layout.activity_…...
2024/5/3 18:37:44 - Vue /javascript /JS日期时间转换工具
字符串转换成日期,日期转换成字符中,废话不说,上代码! //日/月/年 export function stringToDate (dateStr,separator) {if(!separator){separator="/";}var dateArr = dateStr.split(separator);var day = parseInt(dateArr[0]);//处理月份为04这样的情况if(dat…...
2024/4/16 2:39:15 - nginx根据url中的参数进行转发
nginx根据url中的参数进行转发 在实际项目中,由于https安全策略,我们无法直接跳转到我们想要跳转到的地址 例如 url:https://abc.dc.com/image?url=https://vpic.video.qq.com/1641213/p0685fxrwij.png 我们想要的效果直接访问以下地址: https://vpic.video.qq.com/164121…...
2024/4/20 17:18:46 - JavaSE-Set集合
Set集合 特点 元素是无序(存入和取出的顺序不一定一致),元素不可以重复。 范例 class HashSetDemo {public static void sop(Object obj){System.out.println(obj);}public static...
2024/4/16 2:39:15
最新文章
- JavaScript百炼成仙自学笔记——12
函数七重关之五(自执行函数) 什么时候用它? 很多时候,我们只想执行一个函数,却无所谓这个函数叫什么名字。那么这种情况下就可以考虑使用自执行函数。 {function(){console.log(123);} }(); 这就是一个简单的自执行的…...
2024/5/6 18:01:17 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/6 9:38:23 - vue中内置指令v-model的作用和常见使用方法介绍以及在自定义组件上支持
文章目录 一、v-model是什么二、什么是语法糖三、v-model常见的用法1、对于输入框(input):2、对于复选框(checkbox):3、对于选择框(select):4、对于组件(comp…...
2024/5/4 20:45:28 - STM32重要参考资料
stm32f103c8t6 一、引脚定义图 二、时钟树 三、系统结构图 四、启动配置 (有时候不小心短接VCC和GND,芯片会锁住,可以BOOT0拉高试试(用跳线帽接)) 五、最小系统原理图 可用于PCB设计 六、常见折腾人bug…...
2024/5/5 8:48:12 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/4 23:54:56 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/4 23:54:56 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/6 9:21:00 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/4 23:55:16 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/4 23:55:06 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/4 23:55:01 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57