面试题30天打卡-day13

news/2024/5/10 1:26:25/文章来源:https://blog.csdn.net/qq_56098191/article/details/130393507

1、Linux 中的硬链接和软连接是什么,二者有什么区别?

在Linux系统下,有两种链接文件,一种是硬链接(Hard Link),一种是软链接,也称为符号链接(Symbolic Link)。它们的区别如下:

硬链接:

  • 硬链接通过文件系统中的inode节点进行链接,因此,硬链接和源文件具有相同的inode节点号。
  • 硬链接只能在同一文件系统中的文件之间创建,不能对目录进行创建。
  • 可以有多个硬链接指向同一个inode节点,或者说一个文件可以拥有多个路径名,因此一个文件可以对应多个文件名。
  • 删除源文件或任何硬链接都不会影响其他链接的可用性,只有当所有链接都被删除后,inode节点才会被释放。

软链接:

  • 软链接是一个包含了另一个文件的路径名的文件,它通过一个文件名引用另一个文件。
  • 软链接可以链接不同文件系统的文件。
  • 在对软链接进行读或写操作的时候,系统会自动把该操作转换为对源文件的操作。
  • 删除软链接时,仅仅删除链接文件,不会删除源文件本身。
  • 软链接可以指向一个不存在的文件。

二者的区别如下:

  1. 文件系统中,一个硬链接是指向同一个 inode 的不同文件名,而一个软链接是一个包含目标文件路径的文件(快捷方式)。
  2. 硬链接只能链接到同一文件系统中的文件,软链接可以链接到不同的文件系统上的文件。
  3. 删除一个硬链接并不会影响其他硬链接或者真正的文件,而删除一个软链接会使得链接的目标文件或目录成为孤儿文件,除非该目标文件或目录也有其他链接。

2、请你介绍下 JVM 内存模型,分为哪些区域?各区域的作用是什么?

JVM内存区域分为五个部分,分别是堆,方法去、虚拟机栈,本地方法栈,程序计数器

image-20230304154805418

  • 堆。 堆是Java对象的存储区域,任何用new字段分配的Java对象实例和数组,都被分配在堆上,Java堆可使用-Xms -Xmx进行内存控制,值得一提的是从JDK1.7版本之后,运行时常量池从方法区移到了堆上。
  • 方法区。它用于存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据,方法区包括运行时常量池(Runtime Constant Pool),用于存储编译时生成的各种字面量和符号引用。方法区在JDK1.7版本及以前被称为永久代,从JDK1.8永久代被移除。
  • 虚拟机栈。虚拟机栈中执行每个方法的时候,都会创建一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等信息。每个线程都有一个独立的虚拟机栈,栈的大小可以通过-Xss参数设置。虚拟机栈分为栈帧(Stack Frame),每个方法执行时都会创建一个栈帧用于存储局部变量和操作数栈等信息。
  • 本地方法栈。与虚拟机栈发挥的作用相似,相比于虚拟机栈为Java方法服务,本地方法栈为虚拟机使用的Native方法服务,执行每个本地方法的时候,都会创建一个栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等信息。
  • 程序计数器。程序计数器是一块较小的内存区域,它用于记录当前线程所执行的字节码指令的地址,指示Java虚拟机下一条需要执行的字节码指令。每个线程都有一个独立的程序计数器,用于保证线程切换后能恢复执行的位置。

以上五个区域是Java虚拟机内存划分情况,其中方法区和堆被JVM中多个线程共享,比如类的静态常量就被存放在方法区,供类对象之间共享,虚拟机栈,本地方法栈,pc寄存器是每个线程独立拥有的,不会与其他线程共享。
所以Java在通过new创建一个类对象实例的时候,一方面会在虚拟机栈中创建一个该对象的引用,另一方面会在堆上创建类对象的实例,然后将对象引用指向该对象的实例。对象引用存放在每一个方法对应的栈帧中。

3、有哪些注解可以注入 Bean?@Autowired 和 @Resource 的区别?

在 Spring 框架中,常用的注入 Bean 的注解包括:

  1. @Autowired:自动注入,按照类型自动装配,如果有多个同类型的 Bean,则需要通过 @Qualifier 指定具体的 Bean。
  2. @Resource:Java 自带的注入方式,按照名称自动装配,默认是按照属性名称进行匹配,如果需要按照 Bean 的名称进行匹配,可以使用 @Resource(name=“beanName”)。
  3. @Inject:和 @Autowired 类似,也是按照类型进行自动装配,但是 @Inject 注解是 JSR-330 提供的,而 @Autowired 注解是 Spring 框架提供的。
  4. @Value:用于注入配置文件中的属性值,可以指定默认值。
  5. @Component:用于声明一个 Bean,作用类似于 XML 中的 标签。

以上注解都可以用于注入 Bean,不同的注解之间的区别主要在于注入方式和实现方式的不同。@Autowired 和 @Resource 最常用,其中 @Autowired 按照类型自动装配更为常用,而 @Resource 按照名称自动装配则比较适合需要明确指定 Bean 名称的情况。

百度的答案:

  1. @Autowired:Spring 官方推荐使用的注入 Bean 的方式,通过自动装配方式将 Bean 注入到需要使用的类中。
  2. @Resource:JSR-250 规范中提供的注入 Bean 的方式,可以通过指定 Bean 的名称或类型进行注入。
  3. @Inject:JSR-330 规范中提供的注入 Bean 的方式,与 @Autowired 类似,但更加灵活。
  4. @Qualifier:与 @Autowired 搭配使用,通过指定 Bean 的名称进行注入。
  5. @Value:通过配置文件中的属性值注入 Bean 中的字段或方法参数。
  6. @Component:用于声明一个 Bean,作用类似于 XML 中的 标签。

@Autowired 和 @Resource 的区别

  1. @Autowired注解是Spring提供的,而@Resource注解是J2EE本身提供的
  2. @Autowird注解默认通过byType方式注入,而@Resource注解默认通过byName方式注入
  3. @Autowired注解注入的对象需要在IOC容器中存在,否则,需要加上属性 required=false,表示忽略当前要注入的bean,如果有直接注入,没有则跳过,不会报错

在IOC容器中存在,否则,需要加上属性 required=false,表示忽略当前要注入的bean,如果有直接注入,没有则跳过,不会报错

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

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

相关文章

Codeforces Round 867 (Div. 3)

Problem - E - Codeforces 思路: 首先,如果n为奇数,中间那个数无法调整,所以只考虑偶数只有26个字母,我们用cnt[]记录每个字母需要交换的对数。设maxn为交换对数最多的字母。显然,如果cnt[maxn]>n/2,显…

006-reg

程序 程序输入用户名和序列号,会被存放在reg.dll里,程序重启验证 查壳 无壳,Delphi程序 载入OD分析 搜索到可疑字符串 看未注册附近 在这个地方传入的Username和SN,进call 验证了SN的长度和字符类型 在这个CALL里计算…

智加科技+舍弗勒,首发量产正向开发的智能重卡冗余转向

对于自动驾驶赛道来说,感知、规划和控制,除了计算平台、算法等核心上层软硬件支持,底盘控制系统同样是关键一环。事实上,从Demo到规模化量产,更好的车身控制能力以及冗余备份,也是自动驾驶公司迈入2.0阶段的…

Mybatis 全局配置文件 mybatis-config.xml

1、全局配置文件的用处 mybatis通过配置文件可以配置数据源、事务管理器、运行时行为、处理别名、类型处理、插件等信息。在mybatis应用初始化时,程序会解析全局配置文件,使用配置的信息实例化Configuration组件,完成基本配置的初始化。在my…

【Linux】解决切换用户出现bash-4.2$问题创建普通用户并设置密码、授权

【问题描述】 linux中创建了一个wxh用户,然后使用su命令切换用户后,终端提示符显示成“bash-4.2$”而不是[rootlocalhost wxh]#,导致ll等命令无法执行。 [rootlocalhost xhh]# su wxh bash-4.2$ ll bash: ll: 未找到命令 【原因】 没有在hom…

找出1-1000中的所有完美数

再次练习查找完美数,找出 1-1000 中的所有完美数。 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单…… 地址:https://l…

JVM 调优

大部分的情况都是由于企业内部代码逻辑不合理导致。 JVM内部性能优化 栈上分配方法内联JVM的自适应调整 JVM改错 大并发内存不足OOM 内存泄漏GC频繁CPU飙升 JVM的调优的原则是让你各项指标尽可能的利用到你硬件的性能瓶颈。 JVM的性能优化可以分为代码层面和非代码层面。 …

PyTorch实战3:天气识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍦 参考文章:365天深度学习训练营-第P3周:天气识别🍖 原作者:K同学啊|接辅导、项目定制 目录 一、前期准备1、导入数据2、transforms.Compose详…

【Python入门第五十四天】Python丨NumPy ufuncs

什么是 ufuncs? ufuncs 指的是“通用函数”(Universal Functions),它们是对 ndarray 对象进行操作的 NumPy 函数。 为什么要使用 ufuncs? ufunc 用于在 NumPy 中实现矢量化,这比迭代元素要快得多。 它们…

线程的生命周期以及sleep()方法和wait()方法

三种休眠状态:Blocked,Waiting,Timed_Waiting 注意两个Blocked态是不一样的,上面的Blocked只要睡眠时间到了马上进入运行态,下面处于Blocked的线程还需要抢到锁才能进入运行态 sleep()和wait()方法: sleep…

【hello Linux】进程间通信——匿名管道

目录 前言: 总结下上述的内容: 1. 进程间通信目的 2. 进程间通信的分类 1. 匿名管道 2. 匿名管道的使用 1. 匿名管道的创建 2. 使用匿名管道进行父子间通信 Linux🌷 前言: 进程具有独立性,拥有独立的数据、代码及其他…

论文阅读:PVO: Panoptic Visual Odometry

全景视觉里程计、同时做全景分割和视觉里程计 连接:PVO: Panoptic Visual Odometry 0.Abstract 我们提出了一种新的全景视觉里程计框架PVO,以实现对场景运动、几何和全景分割信息的更全面的建模。我们将视觉里程计(VO)和视频全景分割(VPS)在一个统一的…

STM32F4_SRAM中调试代码

目录 1. 在RAM中调试代码 2. STM32的三种存储方式 3. STM32的启动方式 4. 实验过程 通过上一节的学习,我们已经了解了SRAM静态存储器; 1. 在RAM中调试代码 一般情况下,我们在MDK中编写工程应用后,调试时都是把程序下载到芯片…

Java_异常

Java_异常 1.什么是异常 ​ 生活中的异常:感冒发烧、电脑蓝屏、手机死机等。 ​ 程序中的异常:磁盘空间不足、网络连接中断、被加载的资源不存在等。 ​ 程序异常解决办法:针对程序中非正常情况,Java语言引入了异常&#xff0…

注意力机制:基于Yolov5/Yolov7的Triplet注意力模块,即插即用,效果优于cbam、se,涨点明显

论文:https://arxiv.org/pdf/2010.03045.pdf 本文提出了可以有效解决跨维度交互的triplet attention。相较于以往的注意力方法,主要有两个优点: 1.可以忽略的计算开销 2.强调了多维交互而不降低维度的重要性,因此消除了通道和权…

日撸 Java 三百行day38

文章目录 说明day381.Dijkstra 算法思路分析2.Prim 算法思路分析3.对比4.代码 说明 闵老师的文章链接: 日撸 Java 三百行(总述)_minfanphd的博客-CSDN博客 自己也把手敲的代码放在了github上维护:https://github.com/fulisha-ok/…

VR全景图片,探究VR全景图片为何如此受欢迎?

随着科技的不断进步,虚拟现实技术逐渐渗透到我们的日常生活中,为我们带来了许多前所未有的体验和乐趣。而其中,VR全景图片作为一种基于虚拟现实技术的图片展示形式,不仅在旅游、房地产、教育等领域得到了广泛的应用,也…

c++强制类型转换:

强制类型转换:1. const属性用const_cast。 案例: 说明:该变量可以将变量的const 的属性去掉。如该案例,转换后修改x的值是合法的。2. 基本类型转换用static_cast。 案例: 说明:一般用在(1)基本类型&#xf…

学系统集成项目管理工程师(中项)系列10_立项管理

1. 系统集成项目管理至关重要的一个环节 2. 重点在于是否要启动一个项目,并为其提供相应的预算支持 3. 项目建议 3.1. Request for Proposal, RFP 3.2. 立项申请 3.3. 项目建设单位向上级主管部门提交的项目申请文件,是对拟建项目提出的总体设想 3…

基于centos7:Harbor-2.7.2部署和安装教程

基于centos7:Harbor-2.7.2部署和安装教程 1、软件资源介绍 Harbor是VMware公司开源的企业级DockerRegistry项目,项目地址为https://github.com/vmware/harbor。其目标是帮助用户迅速搭建一个企业级的Dockerregistry服务。它以Docker公司开源的registry…