java基础面试题(九)
java基础面试题(九)
SpringBoot/SpringCloud
- 什么是SpringBoot?
在Spring框架这个大家族中,产生了很多衍生框架,比如Spring、Springmvc框架等,Spring的核心内容在于控制反转(IOC)和依赖注入(DI),所谓控制反转并非是一种技术,而是一种思想,在操作方面是指在spring配置文件中创建,依赖注入即为由spring容器为应用程序的某个对象提供资源,比如引用对象、常量数据等。
SpringBoot是一个框架,一种全新的编程规范,他的产生简化了框架的使用,所谓简化是指简化了Spring众多框架中所需的大量且繁琐的配置文件,所以SpringBoot是一个服务于框架的框架,服务范围是简化配置文件。 - 为什么要用SpringBoot?
1)SpringBoot使编码简单
2)SpringBoot使配置变简单
3)SpringBoot使部署变简单
4)SpringBoot使监控变简单 - SpringBoot的核心配置文件是什么?
SpringBoot提供了两种配置文件:
properties文件
yml文件 - springboot配置文件有哪几种类型?它们有什么区别?
springboott提供了两种常用的配置文件,分别是properties文件和yml文件。相对于properties文件,yml文件更年轻,但是也有更多的坑。可谓成也萧何败萧何,yml文件通过空格来确定层级关系,使配置文件结构更清晰,但是也会因为微不足道的空格破坏了层级关系。 - springboot有哪些方式可以实现热部署?
SpringBoot实现热部署的方式有两种:
①使用spring loaded
在项目中添加如下代码:
<build><plugins><plugin><!-- springBoot编译插件--><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><dependencies><!-- spring热部署 --><!-- 该依赖在此处下载不下来,可以放置在build标签外部下载完成后再粘贴进plugin中 --><dependency><groupId>org.springframework</groupId><artifactId>springloaded</artifactId><version>1.2.6.RELEASE</version></dependency></dependencies></plugin></plugins></build>
添加完毕后需要使用mvn指令运行:
首先找到IDEA中的Edit configurations ,然后进行如下操作:(点击左上角的"+",然后选择maven将出现右侧面板,在红色划线部位输入如图所示指令,你可以为该指令命名(此处命名为MvnSpringBootRun))
点击保存将会在IDEA项目运行部位出现,点击绿色箭头运行即可
②使用spring-boot-devtools
在项目的pom文件中添加依赖:
<!--热部署jar--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency>
然后:使用 shift+ctrl+alt+"/" (IDEA中的快捷键) 选择"Registry" 然后勾选 compiler.automake.allow.when.app.running
109. jpa和hibernate有什么区别?
JPA Java Persistence API,是Java EE5的标准ORM接口,也是ejb3规范的一部分。
Hibernate,当今很流行的ORM框架,是JPA的一个实现,但是其动能是JPA的超集。
JPA和Hibernate之间的关系,可以简单地理解为JPA是标准接口,Hibernate是实现。那么Hibernate是如何实现与JPA的这种关系的呢?
Hibernate主要通过三个组件来实现的,及hibernate-annotation、hibernate-entitymanager和hibernate-core。
hibernate-annotation是Hibernate支持annotation方式配置的基础,它包括了标准的JPA annotation以及Hibernate自身特殊功能的annotation。
hibernate-core是Hibernate的核心实现,提供了Hibernate所有的核心功能。
hibernate-entitymanager实现了标准的JPA,可以把它看成hibernate-core和JPA之间的适配器,它并不直接提供ORM的功能,而是对hibernate-core进行封装,使得Hibernate符合JPA的规范。
110. 什么是SpringCloud?
从字面理解,SpringCloud就是致力于分布式系统、云服务的框架。
SpringCloud是整个Spring家族中新的成员,是最近云服务火爆的必然产物。
SpringCloud为开发人员提供了快速构建分布式系统中一些常见模式的工具,例如:
配置管理
服务注册与发现
断路器
智能路由
服务间调用
负载均衡
为代理
控制总线
一次性令牌
全局锁
领导选举
分布式会话
集群状态
分布式消息
……
使用SpringCloud开发人员可以开箱即用的实现这些模式的服务和应用程序。这些服务可以在任何环境下运行,包括分布式环境,也包括开发人员自己的笔记本电脑以及各种托管平台。
111. SpringCloud断路器的作用是什么?
在SpringCloud中使用了Hystrix来实现断路器的功能,断路器可以防止一个应用程序多次试图执行一个操作,即很可能失败,允许它继续而不等待故障恢复或者浪费CPU周期,而它确定该故障是持久的。断路器模式也使应用程序能够检测故障是否已经解决,如果问题似乎已经得到纠正,应用程序可以尝试调用操作。
断路器增加了稳定性和灵活性,以一个系统,提供稳定性,而系统从故障中恢复,并尽量减少此故障对性能的影响。它可以帮助快速地拒绝一个操作,即很可能失败,而不是等待操作超时(或者不返回)的请求,以保持系统的响应时间。如果断路器提高每次改变状态的时间的事件,该信息可以被用来检测断路器保护系统的部件的健康状态,或以提醒管理员当断路器跳闸,以在打开状态。
112. SpringCloud的核心组件有哪些?
①. 服务发现——Netflix Eureka
一个RestFul服务,用来定位运行在AWS地区(Region)中的中间层服务。由两个组件组成:Eureka服务器和Eureka客户端。Eureka服务器用作服务注册服务器。Eureka客户端时一个java客户端,用来简化与服务器的交互、作为轮询负载均衡器,并提供鼓舞的故障切换支持。Nitfix在其生产环境中使用的是另外的客户端,它提供基于流量、资源利用率以及出错状态的加权负载均衡。
②. 客服端负载均衡——Netflix Ribbon
Ribbon,主要提供客户侧的软件负载均衡算法。Ribbon客户端组件提供一系列完善的配置选项,比如连接超时、重试、重试算法等。Ribbon内置可插拔、可定制的负载均衡组件。
③. 断路器——Netflix Hystrix
断路器可以防止一个应用程序多次试图执行一个操作,即很可能失败,允许它继续而不等待故障恢复或者浪费 CPU 周期,而它确定该故障是持久的。断路器模式也使应用程序能够检测故障是否已经解决。如果问题似乎已经得到纠正,应用程序可以尝试调用操作。
④. 服务网关——Netflix Zuul
类似nginx,反向代理的功能,不过netflix自己增加了一些配合其他组件的特性。
⑤. 分布式配置——Spring Cloud Config
这个还是静态的,得配合Spring Cloud Bus实现动态的配置更新。
java基础面试题(九)相关推荐
- 100道Java基础面试题收集整理(附答案)
不积跬步无以至千里,这里会不断收集和更新Java基础相关的面试题,目前已收集100题. 1.什么是B/S架构?什么是C/S架构 B/S(Browser/Server),浏览器/服务器程序 C/S(Cl ...
- 判断一个java对象中的属性是否都未赋值_100道Java基础面试题(一)
100道Java基础面试题(一)未来大家将步入职场,面试的时候面试官还会问大家一些Java相关的问题.小编整理出100道非常实用的面试题目,可以帮助双体的小伙伴应对面试,我们一起来看看都有哪些吧! 1 ...
- Java继承_30道最常问的Java基础面试题
30道最常问的Java基础面试题 1. 面向对象和面向过程的区别面向过程优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开发.Linux/Unix等一般采 ...
- Java 基础面试题,java基础面试笔试题
我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家. 扫描二维码或搜索下图红色VX号,加VX好友,拉你进[程序员面试学习交流群]免费领取.也欢迎各位一起 ...
- Java进阶篇(六)——Swing程序设计(上),java面试题,java基础笔试题,BAT
写在最前面,我总结出了很多互联网公司的面试题及答案,并整理成了文档,以及各种学习的进阶学习资料,免费分享给大家.扫码加微信好友进[程序员面试学习交流群],免费领取.也欢迎各位一起在群里探讨技术. Sw ...
- Java基础知识面试题(2021最新版)
转载自:https://thinkwon.blog.csdn.net/article/details/104390612 文章目录 Java概述 何为编程 什么是Java jdk1.5之后的三大版本 ...
- Java基础-面试题精华(2021最新)
Java基础-面试题精华 提示:本人已经成功帮助20多位面试者斩获BAT大厂offer,现在把自己的笔记分享出来,提炼出高频java面试题目,都是干货,觉得有用的话,记得点赞收藏哦,后期会上sprin ...
- Java基础语法(九)——String类
文章目录 Java基础语法(九)--String类 一.定义方式 二.内存 三.字符串比较相等 四.字符串常量池 (1) 直接赋值 (2)采用构造方法 (3)intern 的使用 五.理解字符串不可变 ...
- 人类高质量Java基础面试题大全,又是一篇三万字的总结!
点击主页访问更多精彩文章:https://blog.csdn.net/weixin_45692705?spm=1001.2101.3001.5343 Java基础面试题目录 共勉 ! Java概述 1 ...
最新文章
- python 自动填充表单,如何在Django / Python中自动填充PDF表单?
- cocos2dx--cocos2dx3.1.1执行报无法解析的外部符号
- 人工智能已经迫在眉睫_创意计算机已经迫在眉睫
- 如何编写数据库可视化界面_编写用于数据可视化的替代文本
- ReactiveCocoa源码拆分解析(四)
- 性能调优必备利器之 JMH
- QCon思考之通过Quora和Spotify案例,直击数据处理背后的魅影
- Latex 合并pdf文档
- AppStore编年史 iOS游戏开发者的变迁路
- go任务调度2(linux的cron调用)
- 怎么彻底卸载趋势杀毒软件
- 中国智慧建造投资前景预测与十四五战略规划建议报告2022年版
- 粒子群matlab工具箱,Matlab粒子群算法工具箱使用方法及实例演示
- R语言ggplot2可视化(细节优化)
- sql查询语句中分组添加小计,GROUPING的使用
- 红豆薏米的祛湿效果到底好不好?
- 你知道哪些出身最奇特的程序员?
- 素数个数求解与素数的判定
- 内容算法解读:提高内容摘要与原文的一致性(Faithfulness)
- 进销存管理软件排行榜