刷刷题刷题刷题

springaop 和 aspect aop的区别


springaop 是动态代理增强

aspect aop 是静态代理,在编译阶段生成aop代理类。这个时候是编译时增强

aop通知执行顺序

AOP 、OOP是啥

aop是面向切面

oop是面向对象

@ComponentScan 不设置 basepackage也能进行扫描

没有配置,就使用默认扫描当前配置类所在的包及其子包

如何将三方的类配置为bean

@Bean

@Import 

@Bean如何保证是单例的

将类标注为:@Configuration 

@Configuration 会创建动态代理类,保证在创建bean的时候是单例的。

proxyBeanMethods 是关键原因。容器中有就从容器中拿bean对象,没有就使用cglib来创建对象。

@Autowired注解自动装配的过程

自动注入找到多个依赖bean不报错

使用@Primary 标注

自动注入不报错

@Import的用法

1、直接指定类

2、实现importSelector

3、lmportBeanDefinitionRegistrar

javaconfig替换xml

BeanDefinition的注册顺序

是由注解来决定的

bean的生产顺序

由BeanDefinition的注册顺序(就是加入到BeanDefinitionMap中的顺序,后面有一个for循环实例化bean的过程)

BeanDefinition的加载过程

1、对bean的描述

2、BeanDefinitionReader 读取配置文件

        xml使用XmlBeanDefinitionReade

        注解使用rAnnotatedBeanDefinitionReader

3、解析 带有 @Bean  @Import @Compent 注解的类

4、根据包名来扫描 类路径下被标记的 类,然后注到为BeanDefinitionMap中

spring避免在并发下获取不完整的bean

spring循环依赖

spring回调方法

销毁和初始化使用的3种

自动装配的方式

自动注入的限制

bean的装配或bean的自动装配

bean 和bean 之间需要有关系就需要装配。bean和bean的互相依赖

自动装配就是 autowired 。自动寻找需要注入的bean 

spring怎么处理并发线程安全

设置为多例

放在threadlocal中

spring的bean是线程安全的吗

不安全

在类中声明成员变量,有读写操作。就会线程不安全

但是将 成员变量 声明到 方法中 就是线程安全的

单例bean的优势

bean的作用域

单例 默认的

多例

request

session

......

bean的配置方式

xml

@Component  这个需要配置扫描包  反射调用构造方法

@bean  

@import 

Beandefinition作用

在Spring框架中,`BeanDefinition` 是一个核心接口,它用于描述和定义一个 Spring Bean 的基本信息。`BeanDefinition` 主要用于 IoC(控制反转)容器和 DI(依赖注入)机制。以下是 `BeanDefinition` 的主要作用:

### 1. 描述 Bean 的元信息
`BeanDefinition` 主要用于存储一个 Bean 的具体信息,包括:
- **Bean 名称**:唯一标识一个 Bean 的名称。
- **Bean 类**:指定 Bean 对应的实现类。
- **作用域**:定义 Bean 的作用域(如单例、原型等)。
- **构造参数**:描述用于创建 Bean 的构造参数。
- **初始化和销毁方法**:定义在 Bean 被创建或销毁时需要调用的方法。
- **属性值**:包括依赖注入的属性及其值。

### 2. 配置管理
`BeanDefinition` 的信息可以通过 XML 配置、Java 注解或 Java 配置类进行定义和管理。它使得应用程序对 Bean 的配置更加灵活和可扩展。

### 3. 创建和管理 Bean
当 Spring 容器启动时,`BeanDefinition` 被读取并用于实例化和配置 Bean。容器根据 `BeanDefinition` 的描述来创建 Bean 的实例,并设置相应的属性和依赖关系。

### 4. 支持不同类型的 Bean
通过 `BeanDefinition`,Spring 可以支持多种类型的 Bean 定义,允许用户在运行时根据需要动态调整 Bean 的配置。

### 5. 提高性能
在容器启动时,所有的 `BeanDefinition` 被解析并缓存,这样在请求 Bean 实例时,容器只需根据缓存的 `BeanDefinition` 信息进行实例化和配置,从而提高了性能。

### 总结
`BeanDefinition` 在 Spring 框架中扮演着重要的角色,它不仅用于描述 Bean 的属性和依赖关系,还支持容器的创建、管理以及优化性能。在应用开发时,理解 `BeanDefinition` 的作用有助于更好地配置和管理应用中的各种 Bean。如果你需要更深入的例子或有其他相关问题,可以随时问我!
 

BeanFactory

最顶层的bean工厂,获取bean 设置bean

BeanFactory和applicationContext的区别

在Spring框架中,`BeanFactory` 和 `ApplicationContext` 是两个用于管理 Spring Bean 的核心接口,但它们之间有一些重要的区别。以下是它们的主要区别:

### 1. 功能范围
- **BeanFactory**:
  - 是最基本的容器,提供了实现依赖注入的功能。
  - 仅负责获取 bean 的实例,支持懒加载。不过,它的功能相对较简单,主要用于较轻量级的场景。

- **ApplicationContext**:
  - 是 `BeanFactory` 的一个子接口,扩展了更多的功能。
  - 提供了事件传播、国际化支持、消息源支持,以及对 Beans 的生命周期管理等增强功能。
  - 支持多种配置方式(如 XML、注解、Java Config)。

### 2. 懒加载
- **BeanFactory**:
  - 默认支持懒加载,只有在 bean 被请求时才创建实例。
  
- **ApplicationContext**:
  - 默认在容器启动时就会初始化所有的单例 bean。如果需要懒加载,需要显式配置。

### 3. 事件处理
- **BeanFactory**:
  - 不支持事件发布(没有事件处理机制)。

- **ApplicationContext**:
  - 支持事件发布和监听器,允许应用程序对特定事件做出反应(如 ApplicationContext 事件和自定义事件)。

### 4. 国际化支持
- **BeanFactory**:
  - 不支持国际化(没有提供消息源功能)。

- **ApplicationContext**:
  - 提供了国际化的支持,可以根据客户端的地区和语言提供不同的消息资源。

### 5. 实用性
- **BeanFactory**:
  - 适用于较简单的应用程序或资源受限的环境。

- **ApplicationContext**:
  - 适用于大多数的 Spring 应用,提供更丰富的功能,适合复杂的企业级应用。

### 总结
在大多数情况下,**`ApplicationContext`** 是推荐的选择,因为它提供了更全面的功能和支持,而 **`BeanFactory`** 则适用于较简单或资源受限的情况。如果你对它们的具体实现或使用场景还有疑问,随时可以问我!
 

Spring的ioc和di的

ioc 是控制反转

di 是属性注入

Spring的机制

简单工厂+反射的技术

Spring是啥?

深拷贝和浅拷贝

对象拷贝

浅拷贝

深拷贝

为啥使用深拷贝

接口 cloneable,使用clone接口是浅拷贝

值传递还是引用传递

1、age : 局部变量,在jvm中是在栈帧中,用完方法就释放了

2、person:这个是地址传递,person是new出来的

3、string:   string是保存在字符串常量池中,先在常量池中搞一个abc,调用方法后看一下没有xxx,再搞一个xxx,方法调用完毕,xxx回收。所以还是 abc

i++  或 ++i

基础几个9(评价系统的指标)

Arrays.aslist 的bug

方法做了重写

这样就能使用了

list的迭代器

不能使用list.remove方法。需要使用迭代器的remove方法

正确操作

Hashcode

hashcode是object对象的方法

是一个native方法

hashcode冲突案例和hashcode的计算过程

计算规则导致了hashcode的冲突

计算 "Aa" 和 "BB" 的哈希码
让我们逐步计算这两个字符串在Java中的哈希码:

"Aa" 的 hashCode:

hash = 0
第一个字符 A(Unicode 码值 = 65)
hash = 31 * 0 + 65 = 65
第二个字符 a(Unicode 码值 = 97)
hash = 31 * 65 + 97 = 31 * 65 + 97 = 2015 + 97 = 2112
因此,"Aa".hashCode() 的结果是 2112。

"BB" 的 hashCode:

hash = 0
第一个字符 B(Unicode 码值 = 66)
hash = 31 * 0 + 66 = 66
第二个字符 B(Unicode 码值 = 66)
hash = 31 * 66 + 66 = 31 * 66 + 66 = 2046 + 66 = 2112
因此,"BB".hashCode() 的结果也是 2112

new的对象多了就会有hashcode冲突

integer 比较规则bug

BigDecimal比较规则bug

正确的建表和实体类

案例

科学计数法

List去重

方法1:新增1个list做存储

方法2:使用hashset方法

方法3:使用流式计算去重

方法4:遍历元素获取下标。下标不一致说明有2个值。

equals 和 == 

==  对于对象是比较地址的,数字类型是比较大小的

equals 是比较字符串的

1、S1=S2   -----> new  String("123")   ==>  new 是一个对象,“123” 是一个对象

2、S1.equasl(S2) ---->   是string重写了equals方法

    • Object 类中的 equals 方法默认比较的是对象的引用,即两个对象是否指向同一内存地址。因此,两个对象只有在引用相同的情况下,equals 方法才会返回 true

3、 set01.size是1   ==>  这个地方用hashcode来比较是否是同一个

4、p2 p2 是new出来的对象,所以 == 的地址值不一样

5、equals 是 使用ojbect中的方法,比较地址引用。所以不一样

6、p1 p2 在 没有重新hashcode,所以计算出来不是同一个hashcode  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/954852.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【6】Word:海名公司文秘❗

目录 题目 List.docx Word.docx List.docx和Word.docx 题目 List.docx 选中1/4全角空格复制→选中全部文本→开始→替换:粘贴将1/4全角空格 替换成 空格选中全部文本→插入→表格→将文本转化成表格→勾选和布局→自动调整→勾选 选中第一列,单机右键…

【Linux】gawk编辑器二

一、变量 gawk编程语言支持两种变量:内建变量和自定义变量。 1、内建变量 gawk使用内建变量来引用一些特殊的功能。 字段和记录分隔符变量 数据字段变量 此变量允许使用美元符号($)和字段在记录中的位置值来引用对应的字段。要引用记录…

Kafka客户端-“远程主机强迫关闭了一个现有的连接”故障排查及解决

Kafka客户端-“远程主机强迫关闭了一个现有的连接”故障排查及解决 1. 故障现象 Kafka客户端发送数据时,出现“远程主机强迫关闭了一个现有的连接”错误,导致数据发送失败。错误信息如下: 2. 故障排查 【1】. 查看服务网络状态 出现故障…

机器视觉5-全连接神经网络

机器视觉5-全连接神经网络1 图像表示多层感知器全连接神经网络一、两层全连接网络表达式二、三层全连接网络表达式三、关于非线性操作的说明四、全连接神经网络的映射原理 全连接神经网络的权值一、线性分类器二、两层全连接网络三、总结 全连接神经网络线性不可分全连接神经网…

Android BottomNavigationView不加icon使text垂直居中,完美解决。

这个问题网上千篇一律的设置iconsize为0,labale固定什么的,都没有效果。我的这个基本上所有人用都会有效果。 问题解决之前的效果:垂直方向,文本不居中,看着很难受 问题解决之后:舒服多了 其实很简单&…

1️⃣Java中的集合体系学习汇总(List/Map/Set 详解)

目录 01. Java中的集合体系 02. 单列集合体系​ 1. Collection系列集合的遍历方式 (1)迭代器遍历(2)增强for遍历​编辑(3)Lambda表达式遍历 03.List集合详解 04.Set集合详解 05.总结 Collection系列…

聚铭网络6款产品入选CCIA《网络安全专用产品指南》

近日,中国网络安全产业联盟CCIA正式发布《网络安全专用产品指南》(第二版)(以下简称《指南》)。聚铭网络凭借突出技术优势、创新能力以及市场积累,旗下安全产品成功入选防火墙、网络安全审计、日志分析、网…

nacos环境搭建以及SpringCloudAlibaba脚手架启动环境映射开发程序

1:下载nacos 地址:https://github.com/alibaba/nacos/tags 2:选择server的zip包下载 3:启动mysql服务,新建数据库:nacos_yh 4:解压下载的nacos_server 进入conf目录 5:mysql运行sql脚本变得到下面的表 6&a…

Mac安装配置使用nginx的一系列问题

brew安装nginx https://juejin.cn/post/6986190222241464350 使用brew安装nginx,如下命令所示: brew install nginx 如下图所示: 2.查看nginx的配置信息,如下命令: brew info nginxFrom:xxx 这样的,是n…

Linux系统离线部署MySQL详细教程(带每步骤图文教程)

1、登录官网下载对应的安装包 MySQL :: Developer Zone 2、将压缩包上传到服务器上,这里直接上传到/usr/local路径上 使用sftp工具上传到/usr/local目录上 3、解压压缩包 tar -xf mysql-8.0.39-linux-glibc2.17-x86_64.tar.xz 4、将mysql-8.0.39-linux-glibc2.17…

鸿蒙开发实战二 TypeScript和JavaScript的区别

简介 基于第一篇文章中提到的:https://mp.csdn.net/mp_blog/creation/editor/143515906 声明式开发范式:采用基于TypeScript声明式UI语法扩展而来的ArkTS语言,从组件、动画和状态管理三个维度提供UI绘制能力。 类Web开发范式:采…

初学stm32 --- CAN

目录 CAN介绍 CAN总线拓扑图 CAN总线特点 CAN应用场景 CAN物理层 CAN收发器芯片介绍 CAN协议层 数据帧介绍 CAN位时序介绍 数据同步过程 硬件同步 再同步 CAN总线仲裁 STM32 CAN控制器介绍 CAN控制器模式 CAN控制器模式 CAN控制器框图 发送处理 接收处理 接收过…

Mybatis-Plus:乐观锁与悲观锁

文章目录 一、场景二、乐观锁与悲观锁三、模拟修改冲突3.1 数据库中增加商品表3.2 添加数据3.3 添加实体3.4 添加mapper3.5 测试 四、乐观锁实现流程4.1 Mybatis-Plus实现乐观锁 一、场景 一件商品,成本价是80元,售价是100元。老板先是通知小李&#xf…

MySQL 8.0在windows环境安装及配置

文章目录 一、下载二、安装三、配置环境变量 一、下载 1、先彻底卸载之前的MySQL,并清理其 残留文件 。 2、登录网址https://www.mysql.com/ 3、点击网址左下角“中文”按钮,切换到中文界面 4、点击网页上方的“下载”按钮,然后点击网…

Python 实现 NLP 的完整流程

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…

redux 结合 @reduxjs/toolkit 的使用

1,使用步骤 使用React Toolkit 创建 counterStore(store目录下) --> 为React注入store(src下面的index) --> React组件使用store中的数据(组件) 2,例如下面有一个简单加减的…

GDC杂感:怎么提高游戏销量?

1、2018年的一个独立游戏制作人在GDC分享了其教训总结,得奖但销量不佳, 大意是:画面,辨识度的重要性,平庸的游戏容易扑街; 直播对不同类型的作用不同,差别能达到几十倍。 游戏品质与销量并不…

【Kotlin】上手学习之类型篇

一、类型 1.1 基本类型 主要分为 数字及其无符号版布尔字符字符串数组 1.1.1 数字 整数类型 Kotlin 提供了一组表示数字的内置类型。 对于整数,有四种不同大小的类型,因此值的范围也不同: 类型大小(比特数)最小…

迅为RK3576开发板Android 多屏显示

迅为iTOP-3576开发板采用瑞芯微RK3576高性能、低功耗的应用处理芯片,集成了4个Cortex-A72和4个Cortex-A53核心,以及独立的NEON协处理器。它适用于ARM PC、边缘计算、个人移动互联网设备及其他多媒体产品。 1.1 Android 多屏同显 iTOP-RK3576 开发板支持…

解决关于Xcode16提交审核报错

# 问题描述 The following issues occurred while distributing your application. Asset validation failed Invalid Executable. The executable xxx.app/Frameworks/HappyDNS.framework/HappyDNS contains bitcode.(lD:ef5dd249-731f-4731-8173-8e4a12519352) Asset valida…