常见八股文03

news2024/12/23 21:06:46
35.autowired、qualifier和Resource区别

@Autowired:基于类型的注入

@Qualifier:基于名称进行注入

@Resource:按名称装配注入,如果找不到与名称匹配的bean,则按类型装配注入,可以用于字段和方法上

36.代理模式

动态代理和静态代理

动态代理:程序运行时动态地创建代理对象,实现对象的代理访问。

静态代理:程序运行前已经创建代理对象

动态代理特点:不用手动实现接口

静态代理特点:一个代理类只能有一种类型的对象

动态代理分类:接口动态代理,类动态接口

37.IOC理解

IOC是控制反转,以前我们想获取对象,直接new就可以;现在获取对象,直接和Spring容器中去取,目的是为了解耦

38.AOP理解

AOP是一种面向切面编程,是对面向对象的一种补充。AOP的主要思想是将横切关注点(如日志记录、事务管理、安全检查等)与业务逻辑代码分离.

AOP的优势

  1. 提高代码复用性:通过将横切关注点封装在切面中,可以在多个业务逻辑对象之间共享这些关注点,从而提高代码复用性。
  2. 简化业务逻辑:通过将横切关注点与业务逻辑代码分离,可以使业务逻辑代码更加简洁和清晰,更容易理解和维护。
  3. 增强模块化:AOP允许将横切关注点作为独立的模块进行开发和管理,从而增强了系统的模块化程度。

AOP的应用场景

AOP广泛应用于处理具有横切性质的系统服务,如:

日志记录:记录方法调用的日志信息,以便于问题追踪和性能监控。

事务管理:在方法调用前后开启和提交事务,确保数据的一致性和完整性。

安全检查:在方法调用前进行权限验证,确保用户具有执行该操作的权限。

缓存优化:通过缓存查询结果来减少数据库访问次数,提高系统性能。

异常处理:在方法抛出异常时进行处理,如记录异常信息或进行异常转换。

39.SpringMVC工作流程

1.用户发送请求到前端控制器

2.前端控制器收到请求调用处理器映射器

3.处理器映射器找到具体的处理器,生成处理器对象以及处理器拦截器,并返回前端控制器

4.前端控制器调用处理器适配器

5.处理器适配器经过适配调用具体处理器Controller

6.具体控制器Controller执行完成返回模型视图对象

7.处理器适配器将模型视图对象返回给前端控制器

8.前端控制器将模型视图对象传给视图解析器

9.视图解析器解析后返回具体的view

10前端控制器将view进行渲染视图

11.最后前端响应用户

40.Spring用到了哪些设计模式

工厂模式、单例模式、代理模式、模板方法模式

工厂模式:Spring通过BeanFactory、ApplicationContext等接口创建并管理对象实例。这种方式将对象的创建与使用解耦,使得程序更加灵活和可扩展。Spring的IoC容器就是一个典型的工厂模式应用,它负责实例化、配置和组装Bean,降低了对象间的耦合度。

单例模式:Spring中的Bean默认都是单例的,即在整个Spring IoC容器中,每个Bean只会有一个实例。这通过Bean的scope属性进行控制,当scope为singleton时,即表示使用单例模式。单例模式的设计有助于节省资源并提高性能。

代理模式:Spring的AOP(面向切面编程)功能大量使用了代理模式。AOP通过在目标方法执行前后添加额外的行为(如日志、事务管理等),而这些额外的行为是通过代理对象来实现的。Spring提供了两种代理方式:JDK动态代理和CGLIB代理。此外,Spring Security的底层也使用了代理模式。

模板方法模式:在Spring的JdbcTemplate、HibernateTemplate、RestTemplate等类中,使用了模板方法模式。这些类定义了一个操作中的算法骨架,而将一些步骤延迟到子类中实现。这种方式使得Spring可以为不同的数据库操作或HTTP请求提供统一的接口,同时允许用户根据自己的需求进行定制。

简化版

代理模式:两种设计模式-------静态代理和动态代理

单例模式:在Spring配置文件中设置bean默认为单例模式

模板方式模式:解决代码重复问题

工厂模式:Spring使用beanFactory来创建对象

41.Spring的自动装配方式

基于XML的配置:byName按属性名称自动装配、byYbpe按属性类型自动装配、constructor按构造函数进行装配

基于注解的自动装配:@Autowired:按类型自动装配。、@Resource:可以按名称或类型进行装配@Qualifier:于指定要注入的Bean的名称。

基于Java配置:使用@Configuration注解来标注配置类,并使用

42.Spring解决循环依赖

构造函数注入:如果两个Bean通过构造函数相互注入,那么Spring无法解决这种循环依赖,因为构造函数注入需要在Bean实例化时立即完成依赖注入,而循环依赖会导致无法完成实例化。

setter方法注入和字段注入:这两种注入方式允许在Bean实例化后进行依赖注入,因此Spring可以通过三级缓存机制来解决循环依赖问题。

使用代理对象:当发现循环依赖时,Spring可以创建一个代理对象来替代实际的Bean。这个代理对象可以在需要时提供实际的Bean实例,从而解决循环依赖问题。

43.mybatis中#{}和${}区别

#{}:预编译处理。Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;

${}时,就是用${}替换成变量的值;使用#{}可以有效的防止SQL注入,提高系统安全性。

44.Mybatis如何执行批量操作

使用foreach标签在XML中构建批量插入语句

1.在Mapper XML文件中定义一个带有List类型参数的insert方法。

2.使用标签遍历这个列表,并为每个元素构建一个VALUES子句。

3.调用这个方法并传入一个包含多个待插入对象的List

45.Mybatis是如何进行分页的

1.在Mapper接口中定义一个带有RowBounds参数的查询方法,用于进行分页查询。

2.在对应的Mapper XML配置文件中编写SQL语句

3.调用查询方法时,传入一个RowBounds对象来指定查询的起始行和返回的行数。

46.Mybatis的一级、二级缓存

一级缓存:是SqlSession级别缓存,默认开启

二级缓存:是NameSpace级别缓存,多个SqlSession可以共享,使用需要进行配置开启

Mybatis首先去缓存中查询结果集,如果没有则查询数据库,如果有则从缓存取出返回结果集就不走数据库。Mybatis内部存储缓存使用一个HashMap,key为hashCode+sqlId+Sql语句。value为从查询出来映射生成的java对象

Mybatis的二级缓存即查询缓存,它的作用域是一个mapper的namespace,即在同一个namespace中查询sql可以从缓存中获取数据。二级缓存是可以跨SqlSession的。

缓存的查找顺序:二级缓存 一级缓存 数据库

47.Spring常用注解

@Component:通用注解,用于标记一个类。
@Service:用于标记业务逻辑层的类。
@Repository:用于标记数据访问层(DAO)的类。
@Controller:用于标记控制层的类,通常用于Web层。
@Autowired:自动装配依赖,可以用于字段、方法或构造函数上。
@Qualifier:当有多个相同类型的Bean时,用于指定具体哪一个Bean。
@Value:从属性文件中读取值并注入到字段中。
@Scope:定义Bean的作用域。
@Configuration:标记一个类为配置类,替代XML配置文件。
@Bean:在配置类中使用,用于声明一个Bean。

48.SpringMVC常用注解

@RequestMapping:映射HTTP请求到处理方法上,可以用于类或方法上。
@GetMapping:映射HTTP GET请求到处理方法上。
@PostMapping:映射HTTP POST请求到处理方法上。
@PutMapping:映射HTTP PUT请求到处理方法上。
@DeleteMapping:映射HTTP DELETE请求到处理方法上。
@PathVariable:用于从URL中提取路径变量。
@RequestParam:用于从请求参数中提取值。
@RequestBody:用于将请求体中的内容绑定到方法参数上。
@ResponseBody:用于将方法返回值直接写入HTTP响应体中。
@RestController:组合了@Controller和@ResponseBody,用于创建RESTful服务。

49.SpringBoot常用注解

@SpringBootApplication:用于启动Spring Boot应用,通常是主类上的注解。
@EnableAutoConfiguration:启用Spring Boot的自动配置机制,根据类路径中的依赖自动配置应用。
@ComponentScan:指定Spring扫描组件的包路径,默认扫描当前包及其子包。
@Configuration:标记一个类为配置类,替代XML配置文件。
@Bean:在配置类中使用,用于声明一个Bean。
@Autowired:自动装配依赖,可以用于字段、方法或构造函数上。
@Value:从属性文件中读取值并注入到字段中。
@Profile:用于指定某个Bean或配置类在特定的环境中生效。
@ConditionalOnClass / @ConditionalOnMissingClass:用于条件化地加载Bean,根据类路径中是否存在某个类。
@ConditionalOnProperty:用于条件化地加载Bean,根据配置文件中的属性值。
@RestController:组合了@Controller和@ResponseBody,用于创建RESTful服务。
@RequestMapping / @GetMapping / @PostMapping / @PutMapping / @DeleteMapping:
用于映射HTTP请求到处理方法上。
@PathVariable / @RequestParam / @RequestBody / @ResponseBody:用于处理请求参数和响应体。

50.SpringCloud常用注解

@EnableDiscoveryClient:启用服务发现客户端,例如Eureka、Consul等。
@EnableEurekaClient:特定于Eureka的服务发现客户端注解。
@EnableFeignClients:启用Feign客户端,用于声明式HTTP客户端。
@FeignClient:用于声明一个Feign客户端接口。
@RibbonClient:用于配置Ribbon客户端,进行负载均衡。
@HystrixCommand:用于定义Hystrix命令,实现断路器模式。
@EnableCircuitBreaker / @EnableHystrixDashboard:启用断路器和Hystrix仪表盘。
@EnableZuulProxy / @EnableZuulServer:启用Zuul代理或服务器,用于API网关。
@StreamListener:用于监听消息通道中的消息,常用于Spring Cloud Stream。
@EnableBinding:用于启用Spring Cloud Stream的绑定功能。
@RefreshScope:用于使Bean在配置更新时重新加载,常用于动态刷新配置。

51.RESTful四种请求方式及对应操作

GET 查询操作

POST 添加操作

DELETE 删除操作

PUT 修改操作

52.Vue2和Vue3区别

在组件模板结构上,Vue2中,中必须只有一个根标签;Vue3中,允许组件有多个根标签,会默认把这些标签包裹在一个虚拟标签中。

从API上,在Vue2中,使用选项类型API,将组件的选项(如data、computed、methods等)分割到不同的属性中;在Vue3中,引入合成型API,允许使用方法来分割组件的逻辑。

从定义数据变量和方法上,在Vue2中,数据放在data中,方法定义在methods中;在Vue3中,使用setup()方法定义响应性数据和方法。

从生命周期钩子函数上,在Vue2中,生命周期钩子函数包括beforeCreate、created、beforeMount、mounted、beforeUpdate、updated等;在Vue3中,Vue3中的生命周期钩子在调用前需要先进行引入。

从双向数据绑定原理上,在Vue2中,使用ES5的Object.defineProperty()方法对数据进行劫持,结合发布-订阅模式实现双向数据绑定。但这种方法只能监听某个属性,不能对整个对象进行监听;在Vue3中,引入ES6的Proxy API进行数据代理,可以直接绑定整个对象,提升效率,且能监听数组内部数据的变化。

53.Linux常见命令

ls 列出目录内容

cd 用于切换当前目录

cd.. 返回上一级目录

pwd 显示当前目录的路径

exit 退回到原来用户

cp 复制文件或目录

mv 移动或重命名文件或目录

rm 删除文件或目录

shutdown:关闭系统。

useradd:添加新用户。

passwd:设置或更改用户密码

userdel:删除用户

touch 目录/文件名

mkdir 目录名 创建普通文件夹

ifconfig: 显示或配置网络设备

解压压缩包 tar zcvf 压缩文件名.tar.gz

54.where和having区别

where 进行分组前的过滤,后面不能写 聚合函数

having 是分组后的过滤,面可以写 聚合函数

55.Maven关键字

Project:Maven中的基本工作单元

POM(pom.xml):Maven的核心文件

groupId:工程的全局唯一标识符

version:项目的版本号

dependency:项目所依赖的其他包或库

plugin:Maven的插件

scope:依赖的作用域

packaging:项目的打包方式

56.hashmap和hashtable区别

1.从线程安全性方面,HashMap线程不安全,HashTable是线程安全

2.键和值的允许性:HashMap:允许使用null作为键和值。Hashtable:不允许使用null作为键或值。

3.初始容量和扩容机制:HashMap:初始容量为16,当已用容量超过总容量乘以负载因子(默认值为0.75)时,HashMap会进行扩容,扩容为当前容量翻倍。Hashtable: 初始容量为11,当已用容量超过总容量乘以负载因子(同样为0.75)时,Hashtable也会进行扩容,扩容为当前容量翻倍加1。

4.HashMap:没有重写toString()方法。Hashtable:重写了toString()方法。

57.jdk1.8新特性

1.可以使用Lambda表达式,简化我们写匿名函数的步骤

2.加入了Stream API这个特性,我们不需要编写复杂的循环和条件语句,而且支持并发处理,处理大量数据的时候,更加高效

3.加了Optional类,这个类可以帮我们解决空指针异常问题、它可以处理理可能为空的对象。

4.定义接口默认方法,接口中可以定义默认实现的方法,让实现接口的类可以选择性地实现默认方法。引入了新的关键字default来修饰接口的默认方法。

58.四大算法

1.冒泡排序的原理

首先,算法首先比较相邻的两个元素。如果第一个元素比第二个元素大,则交换它们的位置。

其次,对每一对相邻元素进行这样的比较和交换后,最大的元素会在这组数的最后面。

最后,对剩下的元素重复以上步骤,直到没有任何一对元素需要交换。

2.快速排序的原理

首先,从数列中挑出一个元素,称为“基准”

其次,重新排序数列,所有元素比基准值小的摆放在基准的前面,所有元素比基准值大的摆在基准的后面,相同的数可以到任何一边。

最后,把小于基准值元素的子数列和大于基准值元素的子数列排序。

3.归并排序的原理

什么是 简单来说,就是将一个大的问题划分为若干个小问题分别解决,然后合并这些小问题的解以得到原问题的解。

原理

首先,确定分解点,选择中间点作为分解点,将序列分为两个子序列,对两个子序列分别进行归并排序,通过递归调用归并排序函数来实现。

其次,创建临时数组,存放合并后的有序序列,为两个子序列分别设置指针

接着,比较两个指针所指向的元素,将较小的元素复制到临时数组中,并将相应指针向后移动一格。

最后,当其中一个子序列的指针到达序列尾部时,将另一个子序列中剩余的元素全部复制到临时数组的剩余位置。将临时数组中的有序序列复制回原数组中的相应位置,完成一次合并操作。

4.二分查找的原理

什么是 在有序数组中查找某一特定元素的搜索方法

原理

首先,确定查找范围,通常使用两个指针来表示,一个指向查找范围的起始位置,另一个指向查找范围的结束位置。

其次,计算中间位置,其索引通常为(初始位置+结束位置) / 2

接着,将目标元素与中间位置的元素进行比较。

1.如果目标元素等于中间位置的元素,则查找成功,返回该元素的索引。

2.如果目标元素小于中间位置的元素,将结束位置调整中间位置 - 1,继续在前半部分查找。

3.如果目标元素大于中间位置的元素,将初始位置调整为中间位置 + 1,继续在后半部分查找。

最后,不断重复上述比较与调整查找范围的过程,直到发现目标元素不存在于数组中即可实现二分查找。

59.Spring优点

1.是一个轻量级框架,业务逻辑和框架可以实现解耦

2.Spring其中一点核心是IOC,IOC是控制反转,以前我们想获取对象,直接new就可以;现在获取对象,直接和Spring容器中去取,目的是为了解耦

3.另一大核心AOP,AOP是面向切面编程,AOP是一种面向切面编程,是对面向对象的一种补充。AOP的主要思想是将横切关注点(如日志记录、事务管理、安全检查等)与业务逻辑代码分离.

4.简化开发:Spring框架提供了很多常用的功能模块和组件,如Spring Boot、Spring MVC、Spring Data等,这些方便地进行开发和集成其他技术栈。

60.SpringMVC优点

1.灵活性:Spring MVC采用了MVC(Model-View-Controller)设计模式,将业务逻辑、数据访问和界面展示等职责进行分离,使应用程序更易于开发、测试和维护。

2.松耦合:Spring MVC框架最大程度地避免了应用程序组件之间的直接依赖性,将它们连接起来的是Spring IoC容器,这让开发人员能够更加灵活地配置和组织应用程序。

3.易于测试:Spring MVC框架将控制层、业务层和数据访问层等各个组件进行了逻辑分离,使得每个组件可以单独测试,降低了测试成本和测试复杂度。

4.强大的请求处理能力:Spring MVC提供了强大的请求处理能力,包括多种请求映射和数据绑定方式,可以方便地进行请求和响应数据的处理。

5.高度可定制化:Spring MVC框架提供丰富的可配置选项,开发人员可以根据需求进行灵活的定制。

6.集成能力:Spring MVC框架可以轻松与Spring Framework、Hibernate、MyBatis等流行的开源框架无缝集成,扩展性强。

61.SpringBoot优点

1.简化项目配置 这样我们可以专注于业务逻辑的实现,而无需为配置细节分心。

2.快速开发 SpringBoot提供了丰富的开发工具和插件,可以快速创建并部署应用程序。

3.自动装配 通过自动装配来提供默认配置和Bean的管理。

4.简化依赖管理 通过引入相应的“starter”依赖,可以方便地添加所需的第三方库和组件,解决了依赖冲突和版本兼容性问题。

62.SpringCloud优点

1.简化微服务开发:Spring Cloud提供了一组工具和库,帮助开发者更容易地构建和部署微服务。它支持声明式服务发现、配置中心、负载均衡、熔断器等,简化了微服务的开发、部署和运维。

2.强大的生态系统:Spring Cloud拥有庞大的生态系统,包括许多开源项目和第三方库,这些库可以帮助开发者更容易地构建各种类型的微服务,如API网关、认证中心、监控中心等。

3.灵活性和可扩展性:Spring Cloud提供了灵活的依赖管理机制,可以轻松地添加新的依赖项和库。它还支持分布式追踪、分布式日志和监控等高级功能,可以根据业务需求进行灵活扩展。

4.社区活跃:Spring Cloud拥有庞大的社区,提供了丰富的文档、教程和示例,可以帮助开发者快速上手并解决遇到的问题。

5.服务拆分粒度更细:Spring Cloud有利于资源重复利用,提高开发效率,可以更精准地制定优化服务方案,提高系统的可维护性。

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

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

相关文章

Pytorch | 利用NI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击

Pytorch | 利用NI-FGSM针对CIFAR10上的ResNet分类器进行对抗攻击 CIFAR数据集NI-FGSM介绍背景算法流程 NI-FGSM代码实现NI-FGSM算法实现攻击效果 代码汇总nifgsm.pytrain.pyadvtest.py 之前已经针对CIFAR10训练了多种分类器: Pytorch | 从零构建AlexNet对CIFAR10进行…

redis开发与运维-redis02-redis数据类型与命令总结

文章目录 【README】【1】redis通用命令与数据结构【1.1】通用命令【1.2】数据结构与内部编码【1.3】redis单线程架构【1.3.1】redis单线程优缺点 【2】字符串(值的类型为字符串)【2.1】常用命令【2.1.1】设置值【2.1.2】获取值【2.1.3】批量设置值【2.1…

机器学习《西瓜书》学习笔记《待续》

如果说,计算机科学是研究关于“算法”的学问,那么机器学习就是研究关于“学习算法”的学问。 目录 绪论引言基本术语 扩展向量的张成-span使用Markdown语法编写数学公式希腊字母的LaTex语法插入一些数学的结构插入定界符插入一些可变大小的符号插入一些函…

电脑开机提示error loading operating system怎么修复?

前一天电脑还能正常运行,但今天启动时却显示“Error loading operating system”(加载操作系统错误)。我已经仔细检查了硬盘、接线、内存、CPU和电源,确认这些硬件都没有问题。硬盘在其他电脑上可以正常使用,说明不是硬…

git企业开发的相关理论(一)

目录 一.初识git 二.git的安装 三.初始化/创建本地仓库 四.配置用户设置/配置本地仓库 五.认识工作区、暂存区、版本库 六.添加文件__场景一 七.查看 .git 文件/添加到本地仓库后.git中发生的变化 1.执行git add后的变化 index文件(暂存区) lo…

Linux网络——网络基础

Linux网络——网络基础 文章目录 Linux网络——网络基础一、计算机网络的发展背景1、网络的定义(1) 独立模式(2)网络互联 2、局域网 LAN3、广域网 WAN4、比较局域网和广域网5、扩展 —— 域域网和互联网 二、协议1、协议的概念2、…

react中实现导出excel文件

react中实现导出excel文件 一、安装依赖二、实现导出功能三、自定义列标题四、设置列宽度五、样式优化1、安装扩展库2、设置样式3、扩展样式功能 在 React 项目中实现点击按钮后导出数据为 Excel 文件,可以使用 xlsx 和 file-saver 这两个库。 一、安装依赖 在项目…

7-Zip 加密功能使用教程:如何设置密码保护压缩文件

压缩包如何加密?7-Zip 是一款开源的文件归档工具,支持多种压缩格式,并提供了对压缩文件进行加密的功能。使用 7-Zip 可以轻松创建和解压 .7z、.zip 等格式的压缩文件,并且可以通过设置密码来保护压缩包中的数据不被未授权访问。 准…

[计算机网络]ARP协议的故事:小明找小红的奇妙旅程

1.ARP小故事 在一个繁忙的网络世界中,每个设备都有自己的身份标识——MAC地址,就像每个人的身份证号码一样。在这个故事里,我们的主角小明(主机)需要找到小红(目标主机)的MAC地址,才…

新版国标GB28181设备端Android版EasyGBD支持国标GB28181-2022,支持语音对讲,支持位置上报,开源在Github

经过近3个月的迭代开发,新版本的国标GB28181设备端EasyGBD安卓Android版终于在昨天发布到Github了,最新的EasyGBD支持了国标GB28181-2022版,还支持了语音对讲、位置上报、本地录像等功能,比原有GB28181-2016版的EasyGBD更加高效、…

McDonald‘s Event-Driven Architecture 麦当劳事件驱动架构

原文链接 1 mcdonalds-technical-blog/ 原文链接 2 mcdonalds-technical-blog/ 麦当劳在异步、事务性和分析性处理用例中使用跨技术栈的事件,包括移动订单进度跟踪和向客户发送营销通信(交易和促销)。 统一事件平台(unified eve…

【CSS in Depth 2 精译_089】15.2:CSS 过渡特效中的定时函数

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第五部分 添加动效 ✔️【第 15 章 过渡】 ✔️ 15.1 状态间的由此及彼15.2 定时函数 ✔️ 15.2.1 定制贝塞尔曲线 ✔️15.2.2 阶跃 ✔️ 15.3 非动画属性 文章目录 15.2 定时函数 Timing function…

一个开源的自托管虚拟浏览器项目,支持在安全、私密的环境中使用浏览器

大家好,今天给大家分享一个开源的自托管虚拟浏览器项目Neko,旨在利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器,为用户提供安全、私密且多功能的浏览体验。 项目介绍 Neko利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器,提供…

AW36518芯片手册解读(3)

接前一篇文章:AW36518芯片手册解读(2) 二、详述 3. 功能描述 (1)上电复位 当电源电压VIN降至预定义电压VPOR(典型值为2.0V)以下时,该设备会产生复位信号以执行上电复位操作&#x…

浅谈目前我开发的前端项目用到的设计模式

浅谈目前我开发的前端项目用到的设计模式 前言 设计模式很多,看到一个需求,项目,我们去开发的时候,肯定是做一个整体的设计进行开发,而在这次我项目中,我也做了一个整体的设计,为什么要设计&a…

线性规划中的几种逻辑表达式

线性规划中的几种逻辑表达式 注意: 摘录字刘博士的《数学建模与数学规划》, 以便用时可查。 实际上Gurobi API 中自身放啊变的逻辑表达式函数,下面列出自定义的实现方式。 1 逻辑与 如果 x 1 1 x_1 1 x1​1, x 2 1 x_2 1 x2​1, 那…

JVM对象分配内存如何保证线程安全?

大家好,我是锋哥。今天分享关于【JVM对象分配内存如何保证线程安全?】面试题。希望对大家有帮助; JVM对象分配内存如何保证线程安全? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在JVM中,对象的内存分配…

Antd react上传图片格式限制

限制分辨率&#xff08;像素&#xff09; <a-upload :before-upload"beforeUpload">// 上传图片宽高比例限制const beforeUpload file > {return new Promise((resolve, reject) > {// // 图片类型限制// let isJpgOrPng file.type image/png || fil…

基于 iAP2 协议 的指令协议,用于对安防设备的 MCU 进行操作

协议设计目标 1. 安全性&#xff1a;通过 iAP2 协议与 MCU 设备进行安全通信。 2. 通用性&#xff1a;支持对安防设备的常见功能进行操作&#xff0c;如状态查询、设备控制、参数配置等。 3. 高效性&#xff1a;数据结构简洁清晰&#xff0c;易于解析和扩展。 4. 扩展性&#x…

Type-C单口便携屏LDR6021

随着科技的飞速发展&#xff0c;便携式电子产品在我们的日常生活中扮演着越来越重要的角色。在这一背景下&#xff0c;Type-C单口便携显示器作为一种新兴的显示设备&#xff0c;凭借其独特的优势迅速崭露头角&#xff0c;成为市场的新宠。本文将深入探讨Type-C单口便携显示器的…