笔试刷题记录(二)

数值操作类型转换

class CompareReference{public static void main(String [] args){float f=42.0f;float f1[]=new float[2];float f2[]=new float[2];float[] f3=f1;long x=42;f1[0]=42.0f;}
}
A  f1==f2
B  x==f1[0]
C  f1==f3
D  f2==f1[1]

BC正确,选项B解释,java核心卷I中43页有如下表述:两个数值进行二元操作时,会有如下的转换操作: 如果两个操作数其中有一个是double类型,另一个操作就会转换为double类型。 否则,如果其中一个操作数是float类型,另一个将会转换为float类型。 否则,如果其中一个操作数是long类型,另一个会转换为long类型。 否则,两个操作数都转换为int类型。 故,x==f1[0]中,x将会转换为float类型。

B选项:x == f1[0],x是long类型,与float类型对比属于低精度,所以x要向高精度的float类型转型再比较,故相等;

C选项:f1 == f3,f3没有new创建,而是由f1赋值,所以f3地址是指向f1的,f1值改变,相当于改变f3值,所以相等。

关于Spring AOP的几种通知方式,下列说法错误的是

A. 前置通知会在执行目标方法之前运行。
B. 目标方法运行结束之后,无论有没有异常发生后置通知都会触发。
C. 目标方法出现异常后会触发异常通知,然后才会触发返回通知。
D. 环绕通知可以决定目标方法的调用也可以控制返回对象。

正确答案是:C

在Spring AOP(面向切面编程)中,有几种不同类型的通知,每种通知都有其特定的调用时机和用途。具体如下:

  • 前置通知(@Before):这种通知在目标方法执行之前运行。它们不会接收任何有关目标方法执行结果的信息,因为它们仅在方法执行前被调用。
  • 后置通知(@After):这种通知在目标方法执行之后运行,不论目标方法是否成功完成或抛出异常,后置通知都将被触发。
  • 返回通知(@AfterReturning):这种通知仅在目标方法成功完成后执行,并且可以访问返回值。
  • 异常通知(@AfterThrowing):当目标方法抛出异常时,会触发异常通知。
  • 环绕通知(@Around):环绕通知提供了对目标方法执行的完全控制。可以在方法调用前后执行自定义操作,并有能力控制是否执行目标方法以及是否修改返回值。环绕通知通过ProceedingJoinPoint来显式调用目标方法。

选项C中提到“目标方法出现异常后会触发异常通知,然后才会触发返回通知。”是错误的,因为异常通知和返回通知是两种不同的通知类型,它们的触发条件是不同的。异常通知仅在方法抛出异常时触发,而返回通知是在方法正常返回结果时触发。如果目标方法抛出了异常,那么返回通知将不会触发。因此,这两种通知之间没有先后顺序的关系,它们的触发取决于目标方法的执行结果是正常返回还是抛出异常。

@PostContruct、@PreDestroy

@PostConstruct@PreDestroy 是 Java EE 5 引入的两个注解,用于在依赖注入完成后执行一些初始化操作,以及在对象销毁前执行一些清理操作。这两个注解通常用在 Spring 框架中,与 @Component@Service@Repository 等注解一起使用。

  1. @PostConstruct:这个注解用于标记一个方法,该方法会在依赖注入完成后自动被调用。这对于那些需要在对象创建后进行初始化操作的场景非常有用,例如打开数据库连接、加载配置文件等。

举例:

import javax.annotation.PostConstruct;@Service
public class MyService {@PostConstructpublic void init() {System.out.println("MyService 初始化完成");}
}
  1. @PreDestroy:这个注解用于标记一个方法,该方法会在对象销毁前自动被调用。这对于那些需要在对象销毁前进行清理操作的场景非常有用,例如关闭数据库连接、释放资源等。

举例:

import javax.annotation.PreDestroy;@Service
public class MyService {@PreDestroypublic void destroy() {System.out.println("MyService 销毁前执行清理操作");}
}

注意:@PostConstruct@PreDestroy 注解需要与 Spring 框架一起使用,不能单独使用。

Spring 事务隔离级别

传播类型如果当前无事务如果当前有事务
PROPAGATION_NEVER不创建新的事务,在无事务的状态下执行方法抛异常
PROPAGATION_NOT_SUPPORTED不创建新的事务,在无事务的状态下执行方法暂停当前事务,在无事务的状态下执行方法
PROPAGATION_SUPPORTS不创建新的事务,在无事务的状态下执行方法使用当前事务
PROPAGATION_REQUIRED(默认)创建新的事务使用当前事务
PROPAGATION_REQUIRES_NEW创建新的事务暂停当前事务,创建新的独立事务
PROPAGATION_NESTED创建新的事务创建新的内嵌事务
PROPAGATION_MANDATORY抛异常使用当前事务

SpringApplication调用的run方法执行流程如下:

  1. 初始化监听器,以及添加到SpringApplication的自定义监听器。

  2. 发布ApplicationStartedEvent事件,如果想监听ApplicationStartedEvent事件,你可以这样定义:public class ApplicationStartedListener implements ApplicationListener,然后通过SpringApplication.addListener(…)添加进去即可。

  3. 装配参数和环境,确定是web环境还是非web环境。

  4. 装配完环境后,就触发ApplicationEnvironmentPreparedEvent事件。

  5. 如果SpringApplication的showBanner属性被设置为true,则打印启动的Banner。

  6. 创建ApplicationContext,会根据是否是web环境,来决定创建什么类型的ApplicationContext。

  7. 装配Context的环境变量,注册Initializers、beanNameGenerator等。

  8. 发布ApplicationPreparedEvent事件。

  9. 注册springApplicationArguments、springBootBanner,加载资源等

  10. 遍历调用所有SpringApplicationRunListener的contextLoaded()方法。

  11. 调用ApplicationContext的refresh()方法,装配context beanfactory等非常重要的核心组件。

  12. 查找当前ApplicationContext中是否注册有CommandLineRunner,如果有,则遍历执行它们。

  13. 发布ApplicationReadyEvent事件,启动完毕,表示服务已经可以开始正常提供服务了。通常我们这里会监听这个事件来打印一些监控性质的日志,表示应用正常启动了。

Collection 接口常用的方法

Collection接口定义了多种方法,这些方法适用于其所有的子接口和实现类,如List、Set和Queue。以下是Collection接口中一些常用的方法:

  1. add(E e):向集合中添加一个元素。
  2. addAll(Collection<? extends E> c):将指定集合中的所有元素添加到此集合。
  3. size():返回集合中的元素个数。
  4. isEmpty():判断集合是否为空。
  5. clear():移除集合中的所有元素。
  6. contains(Object o):判断集合中是否包含指定的元素。
  7. iterator():返回一个迭代器,用于遍历集合中的元素。
  8. toArray():将集合转化为数组。
  9. remove(Object o):从集合中移除指定元素的第一个出现。
  10. removeAll(Collection<?> c):从集合中移除所有存在于指定集合中的元素。
  11. retainAll(Collection<?> c):仅保留集合中那些也包含在指定集合中的元素;换句话说,删除集合中所有不在指定集合中的元素。
  12. containsAll(Collection<?> c):如果集合中包含指定集合中的所有元素,则返回 true。

综上所述,这些方法为集合操作提供了基础功能,使得开发者能够方便地对集合进行增删查改等基本操作。在使用Collection接口及其子接口和实现类时,这些方法是非常实用的工具。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何定义resultType和resultMap,它们之间的区别是什么?解释一下<parameterType>的作用和用法。

在MyBatis中&#xff0c;resultType和resultMap都用于将数据库查询结果映射到Java对象&#xff0c;但它们在使用方式和灵活性上有一些区别。 resultType resultType是一个简单的类型别名&#xff0c;它用于指定查询结果应该映射到的Java类型。当数据库表中的列名和Java对象的属…

设计模式-建造者模式实践案例

建造者模式&#xff08;Builder Pattern&#xff09;是一种创建型设计模式&#xff0c;它提供了一种创建对象的最佳方式。当一个对象需要多个部分或许多步骤来创建&#xff0c;并且需要将创建过程与表示分离时&#xff0c;建造者模式非常有用。建造者模式旨在找到一个解决方案&…

C#使用泛型自定义的方法设计队列CQueue<T>类

目录 一、涉及到的知识点 1.C#中的队列类 2.自定义队列的方法 &#xff08;1&#xff09;先设计一个CList<T>类 &#xff08;2&#xff09;再设计CQueue<T>类 二、自定义队列CQueue<T>类的实例 一、涉及到的知识点 1.C#中的队列类 在C#中实现队列类&a…

数据仓库实战 第一讲

第一节 数据仓库的定义 数据仓库的优势 面向主题集成相对稳定反映历史变化 数据仓库的架构 特点 简单通过暂存区简化数据准备星型结构沙盒 &#xff08;提供专用安全区域&#xff09; 云数据仓库 特点 弹性&#xff08;高扩展性能&#xff09;简单易用易于管理节约成本…

线性代数的学习路线

线性代数是数学的一个重要分支&#xff0c;它主要研究向量空间和线性映射。学习线性代数的线索可以从以下几个关键点展开&#xff1a; 向量的内积&#xff1a;了解向量的内积概念&#xff0c;它是衡量两个向量之间关系的一种方式&#xff0c;可以用来计算向量的长度和角度。矩…

Git误操作补救错失:恢复误删的本地分支、将某个提交从一个分支复制到另一个分支

一、恢复误删的本地分支 作为一枚强迫症&#xff0c;没用的分支总是喜欢及时删删删删掉删掉统统删掉&#xff0c;结果今天发现有些分支还是应该保留。 比如&#xff0c;①前段时间切了个分支用来专门做图表&#xff0c;但因为需求还没有最终确定&#xff0c;已经上线了测试服而…

数据库-第八/九章 数据库编程和优化【期末复习|考研复习】

前言 总结整理不易&#xff0c;希望大家点赞收藏。 给大家整理了一下数据库系统概论中的重点概念&#xff0c;以供大家期末复习和考研复习的时候使用。 参考资料是王珊老师和萨师煊老师的数据库系统概论(第五版)。 文章目录 前言第八章 数据库编程8.1 嵌入式SQL8.2 嵌入式sql语…

Java实战:电商平台通用取货码设计

在电商平台中&#xff0c;取货码是一种常见的机制&#xff0c;用于验证用户身份并允许他们从仓库或商店取货。一个好的取货码设计可以提高用户体验&#xff0c;增强安全性&#xff0c;并简化物流流程。本文将深入探讨电商平台通用取货码的设计原理&#xff0c;包括安全性、唯一…

UE4 Niagara 关卡4.1官方案例解析

we now directly supporting playing audio from arbitrary locations in particle systems.users have control over volume and pitch,and the system can directly play sound waves,or sound cues which have multiple waves in them.(我们现在直接支持在粒子系统中从任意…

Python 过滤函数filter()详解

一、过滤函数定义 它用于对容器中的元素进行过滤处理。 二、 过滤函数语法 filter(function,iterable) 参数function&#xff1a;提供过滤条件的函数&#xff0c;返回布尔型 参数iterable: 容器类型数据 三、过滤函数的应用场景 1、筛选符合条件的元素 需求&#xff1a;在列表…

Paddle上手实战——NLP经典cls任务“推特文本情感13分类”

Paddle上手实战——NLP经典cls任务“推特文本情感13分类” 实战背景介绍 数据地址:https://www.heywhale.com/home/activity/detail/611cbe90ba12a0001753d1e9/content Twitter推文具备多重特性,首要之处在于其与Facebook的显著区别——其完全基于文本形式,通过Twitter接…

微软大中华区商业应用事业部高级产品经理张诗源,将出席“ISIG-低代码/零代码技术与应用发展峰会”

3月16日&#xff0c;第四届「ISIG中国产业智能大会」将在上海中庚聚龙酒店拉开序幕。本届大会由苏州市金融科技协会指导&#xff0c;企智未来科技&#xff08;LowCode低码时代、RPA中国、AIGC开放社区&#xff09;主办。大会旨在聚合每一位产业成员的力量&#xff0c;深入探索低…

shell中判断字符串包含另一个字符串

除了用外部的命令比如expr、awk、sed等等&#xff0c;内置方法可以用截取、替换等方式得到一个新的字符串&#xff0c;如果新的字符串和原来的字符串有变化&#xff0c;说明变量包含字符串。 用替换为例: 查找变量a&#xff08;值复制为hello world ) 中是否有字符串or截取、替…

代码随想录算法训练营day14 | 二叉树的递归遍历、二叉树的迭代遍历、二叉树的统一迭代

今天开始二叉树的学习。 关于二叉树的理论基础&#xff0c;可以参考&#xff1a; 链接: 二叉树理论基础 目录 二叉树的递归遍历写递归的思路二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历 二叉树的迭代遍历二叉树的前序遍历二叉树的中序遍历二叉树的后序遍历 二叉树的统…

JavaWeb实验 JSP 基本语法(续

实验目的 掌握JSP基本语法&#xff1b;掌握JSP常见用法。 实验内容 【1】创建index.jsp、first.jsp和second.jsp三个jsp文件&#xff0c;页面的内容分别显示“This is my JSP page of index.jsp.”、“This is my JSP page of first.jsp.”和“This is my JSP page of secon…

【vue2项目总结】——mixins 复用

文章目录 作用流程 作用 多个页面需要一个功能时&#xff0c;用mixins进行复用&#xff0c;使代码更简洁 流程 1 新建一个 mixin 文件 mixins/loginConfirm.js export default {methods: {// 是否需要弹登录确认框// (1) 需要&#xff0c;返回 true&#xff0c;并直接弹出登…

什么是AI智能答题?

AI智能答题是指利用人工智能&#xff08;AI&#xff09;技术&#xff0c;尤其是自然语言处理&#xff08;NLP&#xff09;和机器学习&#xff08;ML&#xff09;算法&#xff0c;来理解、分析并回答用户提出的问题的过程。这种技术可以应用于各种场合&#xff0c;包括在线教育平…

【Proteus仿真】【STM32单片机】井盖安全检测装置设计

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真STM32单片机控制器&#xff0c;使用LCD1602液晶显示模块、WIFI模块、蜂鸣器、LED按键、ADC PCF8591、角度/可燃气检测传感器等。 主要功能&#xff1a; 系统运行后&#xff0c;LC…

如何制作一份精美的数据分析可视化报告?详细教程

在数据可视化分析的最后阶段&#xff0c;所有的分析、研究、推导以及得出的结论&#xff0c;都汇总成了一份详实的报告。这份报告不仅是对整个数据分析旅程的总结&#xff0c;更是向读者展示这段旅程所取得的成果。 那么&#xff0c;数据分析报告该如何制作呢&#xff1f;不用…

python--宣传篇--personal-qrcode个性二维码

文章目录 准备代码效果 准备 代码 from MyQR import myqr import osdef get_img_qrcode(words, save_name, picture, colorizedTrue):if save_name[-3:] in ["jpg", "png", "gif"]:if picture[-3:] in ["png", "jpg", &qu…