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

相关内容

热门资讯

atv系统和安卓9.0,引领智... 你有没有想过,你的手机和你的ATV(全地形车)之间能有什么交集呢?别惊讶,今天就要给你揭秘这个奇妙的...
安卓最好用省电的系统,探索最佳... 你有没有发现,手机用着用着,电池就“咕咚咕咚”地叫唤起来?别急,今天就来给你揭秘,安卓世界里那些最好...
有哪些安卓类型的系统,多款定制... 你知道吗?在手机世界里,安卓系统就像是个万能的魔法师,它不仅能变出各种各样的手机,还能衍生出各种有趣...
安卓系统精简多少内存,提升运行... 你有没有想过,你的安卓手机为什么有时候会变得那么慢呢?是不是觉得内存不够用,总是卡卡的?别急,今天就...
高端安卓工控系统哪个好,揭秘最... 你有没有想过,家里的智能设备越来越多了,但它们之间的沟通却总是有点儿“鸡同鸭讲”?这不,最近我在研究...
安卓系统识别磁盘格式,磁盘格式... 你有没有遇到过这种情况:手机里突然多了一个陌生的磁盘,你好奇地想看看里面有什么宝贝,却发现安卓系统竟...
惠普平板怎么换安卓系统,惠普平... 你有没有发现,惠普平板电脑的安卓系统有时候用起来还挺不顺手的?别急,今天就来手把手教你如何给惠普平板...
手机显示安卓系统有攻击,揭秘手... 最近是不是发现你的手机屏幕上突然弹出了好多奇怪的提示,说是安卓系统有攻击?别慌,这可不是什么科幻电影...
安卓系统合并分区工具,高效优化... 你有没有想过,你的安卓手机里那些零零散散的存储空间,其实可以变得井井有条呢?没错,今天就要给你安利一...
超好玩安卓系统游戏,解锁无限游... 你有没有发现,最近手机里的游戏越来越好玩了?尤其是那些安卓系统上的游戏,简直让人停不下来!今天,就让...
mate关闭安卓系统通知,深度... 你是不是也和我一样,手机里通知乱糟糟的,有时候连个重要信息都找不到?别急,今天就来和你聊聊如何让你的...
安卓系统诺基亚n96 你有没有想过,那个曾经风靡一时的诺基亚N96,现在在安卓系统下还能焕发出怎样的光彩呢?今天,就让我带...
安卓类原生系统下载方法,安卓原... 你有没有想过,为什么你的手机总是那么卡,那么慢?是不是因为它的系统太老了,需要更新一下呢?别急,今天...
安卓系统车机界面,智能驾驶体验... 你有没有发现,现在越来越多的汽车都开始搭载智能系统了?没错,就是那种可以连接手机、导航、娱乐一应俱全...
神器系统和安卓内存对比,性能与... 你有没有想过,为什么你的手机有时候会卡得像蜗牛一样?其实,这背后有一个神秘的大脑在默默操控着——那就...
鸿蒙系统版本安卓版区别,安卓版... 你有没有发现,最近手机圈子里有个大热门,那就是鸿蒙系统。没错,就是那个华为自主研发的系统。不过,你知...
韶关安卓系统广告机,智能展示新... 韶关安卓系统广告机:点亮城市繁华的智慧之光想象当你走在韶关的街头,突然间,一块块屏幕如同魔法般亮起,...
安卓系统收据怎么开启,实际应用... 你有没有发现,安卓手机里的收据功能超级实用,但是很多人却不知道怎么开启它呢?别急,今天就来手把手教你...
安卓8.0系统有多厉害,引领智... 你有没有发现,最近你的安卓手机是不是变得超级聪明,好像懂你的心思一样?没错,这就是安卓8.0系统的魔...
安卓升级系统占内存多少,升级前... 你有没有发现,每次安卓系统一升级,手机就像喝饱了水一样,膨胀了不少呢?这不,最近就有小伙伴好奇地问,...