每日五问(java)
admin
2024-03-31 18:36:36
0

一.Spring boot 约定优于配制?
对于这个问题从四个方面回答
(1)约定优于配制是一种软件设计的范式,它的核心思想是减少软件开发人员对于配制项的维护,从而让开发人员更加聚焦在业务逻辑上。
(2)Spring boot就是约定优于配制的一个产物,它类似与spring框架下的一个脚手架,通过springboot我们可以快速开发一个基于spring的一个应用程序。
(3)基于传统的spring框架下开发web应用的时候我们需要做很多和业务无关并且只需要做一个次的配制项 例如1.管理jar包的依赖2.web.xml的维护3.Dispatch-Servlet.xml4.应用部署到web5.第三方组件集成IOC.而在springboot中我们不需要再去做这些繁琐的配制,因为springboot已经帮我们完成了,而完成这一个动作的前提就是基于约定优于配制的这一个思想。springboot约定优于配制的体现有很多 1.springboot-starter启动依赖它能够帮助我们管理所有的jar包版本2.如果当前应用依赖于web这个jar包他会内置一个tomcat容器来去运行web应用我们不再需要单独取部署3.springboot自动装配的机制中通过扫描约定路径下的spring.factories文件去进行识别配置类从而去实现bean的自动装载
(4)springboot默认会加载resource目录下的application.properties文件
总的来说约定优于配制是一个比较常见的软件设计思想他的核心本质都是为了去更加高效以及更加便捷的去实现软件系统的开发和维护
二.如何去理解springboot中的Starter?
Starter这个组件是springboot中四大核心特性之一除此之外springboot中还有自动装配,Actuator监控等这些特性都是为了让开发者开发基于spring生态下的的企业级应用的时候只需要关心业务逻辑减少对配制和外部环境的依赖。(1)Starter组件是以功能为维度来维护对应jar包功能的版本依赖开发者就不需要关注这些版本冲突这种容易出错的细节(2)Starter组件会把对应功能所有的jar包依赖全部导进来,避免开发者自己去引入依赖带来的一些麻烦(3)Starter组件内部集成自动装配这一个机制也就是说程序依赖Starter组件之后,这个组件会自动集成到spring生态里,并且对于相关bean管理也是基于自动装配来完成后的(4)依赖Starter组件之后这些组件的对应的功能所需要的外部化配制会自动集成到springboot中我们只需要在application.properties文件中进行维护配制就好了比如说redis这个starter只需要在application.properties文件中去维护redis这个链接信息就可以直接使用,在我看来Starter组件完美体现了约定优于配制这个理念,springboot官方提供了很多Starter组件但是官方不一定能去维护所有的Starter组件所以对于不存在的Starter组件,第三方会自己去维护这样一个组件,Starter组件和第三方Starter组件最大的区别就是命名方式,官方维护的Starter组件是
spring-boot-starter-xxx,第三方是xxx-spring-boot-starter.
三.接口和抽象类的区别是什么?
(1)抽象类中的成员变量可以是各种类型 但是接口中的成员变量默认为 public static final 类型。
(2)抽象类可以存在普通成员函数,接口中只能存public abstract方法
(3)抽象类只能继承一个,接口可以继承多个
(4)接口的设计目的是对类的行为进行约束,也就是提供一种机制可以强制不同的类具有相同的行为,它只约束了行为的有无,但不对如何实现进行限制。
(5)抽象类的设计目的 是为了代码的复用 当不同类具有相同的行为也就是说有一些共性的东西这时候就可以把这些共性的东西抽象出来就会派生出来所以说抽象类一定先有子类然后把子类的共性抽象出一个父类,但是这里有些方法是没有实现的所以不能实例化。
(6)接口是对行为的抽象,接口的核心是定义行为,即实现类是可以做什么,至于实现类主体是谁,怎么实现的接口并不关心
四.sleep()和wait() 有什么区别?
对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类
中的。
sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持
者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象
锁。
当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象调用
notify()方法后本线程才进入对象锁定池准备,获取对象锁进入运行状态。
五.volatile 是什么?
volatile 是 Java 虚拟机提供的轻量级的同步机制(三大特性)
(1)保证可见性
(2)不保证原子性
(3)保证有序性(禁止指令重排)
性能:volatile 修饰的变量进行读操作与普通变量几乎没什么差别,但是写操作相对慢一些,因为需要在本地代码中插入很多内存屏障来保证指令不会发生乱序执行,但是开销比锁要小
synchronized 无法禁止指令重排和处理器优化,为什么可以保证有序性可见性
加了锁之后,只能有一个线程获得到了锁,获得不到锁的线程就要阻塞,所以同一时间只有一个线程执行,相当于单线程,由于数据依赖性的存在,单线程的指令重排是没有问题的
线程加锁前,将清空工作内存中共享变量的值,使用共享变量时需要从主内存中重新读取最新的值;线程解锁前,必须把共享变量的最新值刷新到主内存中

相关内容

热门资讯

安卓系统的如何测试软件,从入门... 你有没有想过,你的安卓手机里那些神奇的软件是怎么诞生的呢?它们可不是凭空出现的,而是经过一系列严格的...
小米8安卓系统版本,安卓系统版... 你有没有发现,手机更新换代的速度简直就像坐上了火箭呢?这不,小米8这款手机自从上市以来,就凭借着出色...
华为手机安卓系统7以上,创新体... 你有没有发现,最近华为手机越来越受欢迎了呢?尤其是那些搭载了安卓系统7.0及以上版本的机型,简直让人...
儿童英语免费安卓系统,儿童英语... 哇,亲爱的家长朋友们,你是否在为孩子的英语学习发愁呢?别担心,今天我要给你带来一个超级好消息——儿童...
ios系统切换安卓系统还原,还... 你有没有想过,有一天你的手机从iOS系统切换到了安卓系统,然后再从安卓系统回到iOS系统呢?这听起来...
灵焕3装安卓系统,引领智能新体... 你知道吗?最近手机圈里可是掀起了一股热潮,那就是灵焕3这款神器的安卓系统升级。没错,就是那个曾经以独...
安卓系统指南针软件,探索未知世... 手机里的指南针功能是不是让你在户外探险时倍感神奇?但你知道吗,安卓系统中的指南针软件可是大有学问呢!...
华为是不用安卓系统了吗,迈向自... 最近有个大新闻在科技圈里炸开了锅,那就是华为是不是不再使用安卓系统了?这可不是一个简单的问题,它涉及...
安卓系统热点开启失败,排查与解... 最近是不是你也遇到了安卓系统热点开启失败的小麻烦?别急,让我来给你详细说说这个让人头疼的问题,说不定...
小米max2系统安卓,安卓系统... 你有没有听说过小米Max2这款手机?它那超大的屏幕,简直就像是个移动的电脑屏幕,看视频、玩游戏,那叫...
电池健康怎么保持安卓系统,优化... 手机可是我们生活中不可或缺的好伙伴,而电池健康度就是它的生命力。你有没有发现,随着使用时间的增长,你...
安卓手机怎么调系统颜色,安卓手... 你有没有发现,你的安卓手机屏幕颜色突然变得不那么顺眼了?是不是也想给它换换“脸色”,让它看起来更有个...
安卓系统清粉哪个好,哪款清粉工... 手机用久了,是不是觉得卡得要命?别急,今天就来聊聊安卓系统清理垃圾哪个软件好。市面上清理工具那么多,...
华为被限制用安卓系统,挑战安卓... 你知道吗?最近科技圈可是炸开了锅!华为,这个我们耳熟能详的名字,竟然因为一些“小插曲”被限制了使用安...
安卓系统是不是外国,源自外国的... 你有没有想过,我们每天离不开的安卓系统,它是不是外国货呢?这个问题听起来可能有点奇怪,但确实很多人都...
安卓系统缺少文件下载,全面解析... 你有没有发现,用安卓手机的时候,有时候下载个文件真是让人头疼呢?别急,今天就来聊聊这个让人烦恼的小问...
kktv系统刷安卓系统怎么样,... 你有没有听说最近KKTV系统刷安卓系统的事情?这可是个热门话题呢!咱们一起来聊聊,看看这个新玩意儿到...
安卓系统连接电脑蓝牙,操作指南... 你有没有遇到过这种情况:手机里堆满了各种好用的应用,可就是想找个方便快捷的方式,把手机里的音乐、照片...
安卓车机11.0系统包,智能驾... 你有没有发现,最近你的安卓车机系统好像悄悄升级了呢?没错,就是那个安卓车机11.0系统包!这可不是一...
安卓系统最高到多少,从初代到最... 你有没有想过,你的安卓手机系统升级到哪一步了呢?是不是好奇安卓系统最高能到多少呢?别急,今天就来带你...