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

相关内容

热门资讯

Java注解怎么用 什么是注解 Java的注解(Annotation)是一种元数据ÿ...
脱不下孔乙己的长衫,现代的年轻... “如果我没读过书,我还可以做别的工作,可我偏偏读过书”“学历本该是我的敲...
Python3处理手写笔记 导语利用Python实现手写笔记的压缩与增强。至于起因大概是:这个内容很有趣。。。——...
单位员工工作守则 单位员工工作守则范本(通用10篇)  单位员工工作守则是怎样的?应该怎么去写呢?以下是小编帮大家整理...
公司安全管理规章制度 公司安全管理规章制度(通用10篇)  在社会一步步向前发展的今天,制度在生活中的使用越来越广泛,制度...
师范专业自荐信 师范专业自荐信模板锦集六篇  在当下的社会中,自荐信在我们的生活愈发常见,在写作上,自荐信也具有一定...
企业管理的规章制度 关于企业管理的规章制度(精选5篇)  随着社会一步步向前发展,制度的使用频率呈上升趋势,制度是指一定...
编程题]组队竞赛(Java实现... 🎉🎉🎉点进来你就是我的人了 博主主页:...
用JS+CSS打造你自己的弹幕... 文章目录前言主要内容实现方法DOM方法显现效果代码CANVAS方法显现效果代码总结更多宝藏 前言 ...
提档函 提档函范文  提档函怎么写?下面是小编给大家整理收集的提档函范文,欢迎大家阅读与参考。  提档函范文...
网吧管理制度 网吧管理制度(精选5篇)  在学习、工作、生活中,制度对人们来说越来越重要,制度泛指以规则或运作模式...
商调函 关于商调函范文  你知道商调函如何写吗?那么,下面是小编给大家整理收集的关于商调函范文,供大家阅读参...
活动方案流程 活动方案流程  一、活动概述  1、活动介绍  2017年客户答谢会,通过会议、庆典、晚会、参观、旅...
Windows OpenGL ... 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES...
7.docker入门到精通—D... 一、是什么?Dockerfile 是用来构建 Docker 镜像的文本文件࿰...
小公司管理制度范本 小公司管理制度范本  小公司管理制度范本(精选19篇)  在现实社会中,很多场合都离不了制度,制度是...
宾馆消防安全管理制度 宾馆消防安全管理制度  在现实社会中,制度使用的频率越来越高,制度是指要求大家共同遵守的办事规程或行...
机械工程自荐信 机械工程自荐信汇编5篇  在一步步向前发展的社会中,我们都可能会用到自荐信,在写作上,自荐信也具有一...
沂源县学校公务用车管理制度 沂源县学校公务用车管理制度沂源县学校公务用车管理制度一、公务用车日常管理1、学校公务用车实行“统一管...
python 基础系列篇:一、... python 基础系列篇:一、基本语法与基础数据类型前言开篇语约定python 基本语...