每日五问(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 无法禁止指令重排和处理器优化,为什么可以保证有序性可见性
加了锁之后,只能有一个线程获得到了锁,获得不到锁的线程就要阻塞,所以同一时间只有一个线程执行,相当于单线程,由于数据依赖性的存在,单线程的指令重排是没有问题的
线程加锁前,将清空工作内存中共享变量的值,使用共享变量时需要从主内存中重新读取最新的值;线程解锁前,必须把共享变量的最新值刷新到主内存中

相关内容

热门资讯

怎么解除订阅安卓系统,安卓系统... 你是不是也和我一样,手机里订阅了好多服务,结果现在想解除订阅,却一头雾水?别急,今天就来手把手教你如...
安卓系统停用怎么开启,轻松恢复... 亲爱的手机控们,你是否曾经遇到过安卓系统突然停用的情况,让你手忙脚乱,不知所措?别担心,今天就来教你...
安卓系统电池健康度,电池健康度... 你有没有发现,你的安卓手机最近是不是有点儿不给力了?电池续航能力大不如前,充电速度也慢了不少?别急,...
安卓系统按键怎么截图,安卓系统... 你是不是也和我一样,有时候想截个图分享给朋友,却发现安卓手机的截图功能有点神秘呢?别急,今天就来手把...
购票系统安卓源代码,架构设计与... 你有没有想过,那些我们每天离不开的购票系统,它们背后的秘密是什么呢?今天,就让我带你一探究竟,揭开购...
安卓手机系统后台测试,深度解析... 你有没有发现,你的安卓手机后台总是悄悄地忙碌着?别小看了这些后台程序,它们可是手机系统稳定运行的关键...
安卓系统重启的图标,解锁设备新... 手机突然重启,是不是心里有点慌?别急,今天就来和你聊聊安卓系统重启的图标,让你一眼就能认出它,再也不...
车载智慧屏安卓系统,智能出行新... 你有没有发现,现在的车载智慧屏越来越智能了?尤其是那些搭载了安卓系统的,简直就像是个移动的小电脑,不...
安卓系统连上网权限,解锁设备无... 你有没有发现,你的安卓手机里有些应用总是偷偷连上网?别小看这个小小的网络权限,它可是能影响你隐私、消...
安卓谷歌操作系统,探索安卓谷歌... 你知道吗?在智能手机的世界里,有一个操作系统可是无人不知、无人不晓,那就是安卓谷歌操作系统。它就像一...
安卓系统手写%怎样调出,具体实... 你有没有遇到过这种情况:在使用安卓手机的时候,突然想用手写输入法来记录一些灵感或者重要信息,可是怎么...
安卓手机重置 系统设置,轻松恢... 手机用久了是不是感觉卡顿得厉害?别急,今天就来教你怎么给安卓手机来个大变身——重置系统设置!想象你的...
win如何安装安卓系统,Win... 哇,你有没有想过,让你的Win系统也能玩转安卓应用?没错,就是那种在手机上轻松自如的安卓系统,现在也...
苹果qq和安卓系统,跨平台体验... 你有没有发现,现在手机市场上,苹果和安卓的较量可是越来越激烈了呢!咱们就来聊聊这个话题,看看苹果QQ...
显示最好的安卓系统,探索最新旗... 你有没有想过,为什么安卓系统那么受欢迎呢?它就像一个魔法盒子,里面装满了各种神奇的魔法。今天,就让我...
安卓app怎么降级系统,系统版... 你有没有发现,有时候安卓手机的系统更新后,新功能虽然炫酷,但老系统用起来更顺手呢?别急,今天就来教你...
雷军脱离安卓系统,引领科技变革... 你知道吗?最近科技圈可是炸开了锅,因为我们的雷军大大竟然宣布要脱离安卓系统,这可真是让人大跌眼镜啊!...
安卓系统自动开网络,安卓系统自... 你有没有发现,手机里的安卓系统有时候会自动开启网络连接,这可真是让人又爱又恨啊!有时候,你正专心致志...
安卓系统怎样控制后台,因为服务... 手机里的安卓系统是不是感觉越来越卡了?后台程序太多,不仅耗电还影响性能。别急,今天就来教你怎么巧妙地...
安卓系统打游戏推荐,一触即达! 你有没有发现,现在手机游戏越来越好玩了?不管是休闲小游戏还是大型MMORPG,都能在手机上畅玩。但是...