2024年150道高频Java面试题(七十一)
141. spring cloud 的核心组件有哪些?
Spring Cloud 是一个基于Spring Boot实现的微服务架构开发工具集,它为微服务架构中的诸多问题提供了解决方案。Spring Cloud的核心组件主要包括以下这些:
- Spring Cloud Config:提供服务器和客户端支持,用于外部化配置的中心化管理。支持使用Git或文件系统作为配置存储,可以实现配置的热更新。
- Spring Cloud Netflix:包括多个子模块,它们是:
- Eureka:服务注册和发现组件,用于微服务架构中服务的注册与发现。
- Hystrix:容错管理组件,通过线程池隔离、熔断、限流等机制来防止服务的雪崩效应。
- Zuul:服务网关组件,提供动态路由、监控、弹性、安全等边缘服务功能。
- Ribbon:客户端负载均衡组件,可以很好的控制http和tcp的一些行为。
- Feign:声明式Web服务客户端,简化了编写Web服务客户端的操作。
- Spring Cloud Bus:通过轻量级消息代理连接分布式系统的节点,用于广播状态更改或事件,比如配置更改。
- Spring Cloud Stream:轻量级事件驱动微服务框架,用于构建与消息中间件集成的应用程序。
- Spring Cloud Sleuth:提供了服务跟踪的解决方案,主要用于跟踪微服务架构中的请求流程。
- Spring Cloud Gateway:提供了一个简单、有效的方式来路由到API,并为微服务架构提供了一种简单的、基于过滤器的API网关服务。
- Spring Cloud Security:为你的应用程序提供在Zuul代理中实施OAuth2标记继承和ID令牌翻译的功能。
- Spring Cloud Consul:包含服务发现和配置管理的支持,基于HashiCorp的Consul实现。
以下是一个简单的Eureka服务注册的代码示例:
@SpringBootApplication
@EnableEurekaClient
public class ServiceApplication {public static void main(String[] args) {SpringApplication.run(ServiceApplication.class, args);}
}@Configuration
public class EurekaConfig {@Value("${eureka.instance.instance-id}")private String instanceId;@Value("${eureka.instance.hostname}")private String hostname;@Beanpublic EurekaInstanceConfigBean eurekaInstanceConfig() {EurekaInstanceConfigBean config = new EurekaInstanceConfigBean();config.setInstanceId(instanceId);config.setHostname(hostname);return config;}
}
在这段代码中,@EnableEurekaClient
注解启用了Eureka客户端的功能,通过配置可以注册服务到Eureka服务注册中心。
以上是对Spring Cloud核心组件的简要说明和代码示例,这些组件共同构成了Spring Cloud的微服务解决方案。
142. 什么是 Mybatis
MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的工作。MyBatis 可以使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
下面是 MyBatis 的一些关键特点:
- 支持定制化 SQL、存储过程:MyBatis 主要管理 SQL 语句的运行,并将 SQL 语句与 Java 方法关联起来,使得开发者可以通过 Java 方法来执行 SQL 语句,而无需直接与 JDBC API 打交道。
- 参数映射和动态 SQL:MyBatis 提供了强大的映射标签和表达式语言,支持各种类型的参数映射,并且允许在 XML 中编写动态 SQL,以便根据不同的条件生成不同的 SQL 语句。
- 松耦合:MyBatis 不会强迫你使用某种数据层访问方式,你可以选择使用 SQL 映射或接口定义的方式来实现数据访问。
- 简单的 XML 配置:MyBatis 允许通过简单的 XML 文件来配置对象关系映射,使得数据库的配置变得灵活且易于理解。
- 支持多种数据库:MyBatis 支持多种数据库,如 MySQL、Oracle、SQL Server 等。
以下是 MyBatis 的工作流程的一个简单示例:
-
定义一个接口:
public interface UserMapper {User getUserById(int id); }
-
创建一个对应的 XML 映射文件:
<mapper namespace="com.example.mapper.UserMapper"><select id="getUserById" resultType="com.example.model.User">SELECT * FROM users WHERE id = #{id}</select> </mapper>
-
在 MyBatis 配置文件中注册映射文件:
<mappers><mapper resource="com/example/mapper/UserMapper.xml"/> </mappers>
-
通过 MyBatis 提供的 SQL 会话工厂来执行查询:
SqlSession session = sqlSessionFactory.openSession(); try {UserMapper mapper = session.getMapper(UserMapper.class);User user = mapper.getUserById(1);// 使用 user 对象... } finally {session.close(); }
MyBatis 通过这样的方式,使得数据访问层代码变得更加简洁,易于维护,同时也提供了良好的扩展性。
编程资料包领取:https://pan.quark.cn/s/601cbea644ff
编程、AI、副业交流:https://t.zsxq.com/19zcqaJ2b
领【150 道精选 Java 高频面试题】请 go 公众号:码路向前 。
相关文章:
2024年150道高频Java面试题(七十一)
141. spring cloud 的核心组件有哪些? Spring Cloud 是一个基于Spring Boot实现的微服务架构开发工具集,它为微服务架构中的诸多问题提供了解决方案。Spring Cloud的核心组件主要包括以下这些: Spring Cloud Config:提供服务器和…...

【深度学习】2.单层感知机
目标: 实现一个简单的二分类模型的训练过程,通过模拟数据集进行训练和优化,训练目标是使模型能够根据输入特征正确分类数据。 演示: 1.通过PyTorch生成了一个模拟的二分类数据集,包括特征矩阵data_x和对应的标签数据data_y。标签…...
JS经常碰见的报错问题
语法错误:由于 JavaScript 是一种动态语言,因此编写代码期间可能会出现语法错误。这可能包括拼写错误、漏掉分号或括号等问题。 作用域问题:JavaScript 中存在全局作用域和局部作用域的概念,有时候可能会出现变量作用域混乱导致的…...
纯前端实现截图功能
纯前端实现截图功能 一、插件二、主要代码 一、插件 一、安装html2canvas、vue-cropper npm i html2canvas --save //用于将指定区域转为图片 npm i vue-cropper -S //将图片进行裁剪二、在main.js注册vue-cropper组件 import VueCropper from vue-cropper Vue.use(VueCropper…...

【网络协议】应用层协议--HTTP
文章目录 一、HTTP是什么?二、HTTP协议工作过程三、HTTP协议1. fiddler2. Fiddler抓包的原理3. 代理服务器是什么?4. HTTP协议格式1.1 请求1.2 响应 四、认识HTTP的请求1.认识HTTP请求的方法2.认识请求头(header)3.认识URL3.1 URL是什么&…...

【图书推荐】《Vue.js 3.x+Element Plus从入门到精通(视频教学版)》
配套示例源码与PPT课件下载 百度网盘链接: https://pan.baidu.com/s/1nBQLd9UugetofFKE57BE5g?pwdqm9f 自学能力强的,估计不要书就能看代码学会吧。 内容简介 本书通过对Vue.js(简称Vue)的示例和综合案例的介绍与演练,使读者…...

抖店如何打造出爆品?学好这几招,轻松打爆新品流量
大家好,我是电商花花。 近年来,抖店商家越来越多,而选品,爆品就是我们商家竞争的核心了,谁能选出好的新品,打造出爆品,谁的会赚的多,销量多。 做抖音小店想出单,想赚钱…...

软件需求规范说明模板
每个软件开发组织都会为自己的项目选用一个或多个标准的软件需求规范说明模板。有许多软件需求规范说明模板可以使用(例如ISO/IEC/IEEE2011;Robertson and Robertson2013)。如果你的组织要处理各种类型或规模的项目,例如新的大型系统开发或是对现有系统进行微调&…...

vs2013使用qt Linguist以及tr不生效问题
一、qt Linguist(语言家)步骤流程 1、创建翻译文件,在qt选项中 2.选择对应所需的语言,得到.ts后缀的翻译文件 3.创建.pro文件,并将.ts配置在.pro文件中 3.使用qt Linguist 打开创建好的以.ts为后缀的翻译文件,按图所示…...
Leetcode 3163. String Compression III
Leetcode 3163. String Compression III 1. 解题思路2. 代码实现 题目链接:3163. String Compression III 1. 解题思路 这一题的话就是一个简单的贪婪算法,把相同的字符进行归并,然后按照题目中的表示方法进行表示一下即可。 2. 代码实现…...
Java匿名内部类的使用
演示匿名内部类的使用,很重要 package com.shedu.Inner;/*** 演示匿名内部类的使用*/ public class AnonymousInnerClass {//外部其他类public static void main(String[] args) {Outer04 outer04 new Outer04();outer04.method();} }class Outer04{//外部类priva…...

把自己的垃圾代码发布到官方中央仓库
参考博客:将组件发布到maven中央仓库-CSDN博客 感谢这位博主。但是他的步骤有漏缺,相对进行补充 访问管理页面 网址:Maven Central 新注册账号,或者使用github快捷登录,建议使用github快捷登录 添加命名空间 注意&…...

单机一天轻松300+ 最新微信小程序拼多多+京东全自动掘金项目、
现代互联网经济的发展带来了新型的盈利方式,这种方法通过微信小程序的拼多多和京东进行商品自动巡视,以此给商家带来增加的流量,同时为使用者带来利润。实践这一手段无需复杂操作,用户仅需启动相应程序,商品信息便会被…...

线性回归模型之套索回归
概述 本案例是基于之前的岭回归的案例的。之前案例的完整代码如下: import numpy as np import matplotlib.pyplot as plt from sklearn.linear_model import Ridge, LinearRegression from sklearn.datasets import make_regression from sklearn.model_selectio…...

解决文件夹打开出错问题:原因、数据恢复与预防措施
在我们日常使用电脑或移动设备时,有时会遇到一个非常棘手的问题——文件夹打开出错。这种错误可能会让您无法访问重要的文件和数据,给工作和生活带来极大的不便。本文将带您深入了解文件夹打开出错的原因,并提供有效的数据恢复方案࿰…...

Spring:面向切面(AOP)
1. 代理模式 二十三种设计模式中的一种,属于结构型模式。它的作用就是通过提供一个代理类,让我们在调用目标方法的时候,不再是直接对目标方法进行调用,而是通过代理类**间接**调用。让不属于目标方法核心逻辑的代码从目标方法中剥…...

本地镜像文件怎么导入docker desktop
docker tag d1134b7b2d5a new_repo:new_tag...

【机器学习-23】关联规则(Apriori)算法:介绍、应用与实现
在现代数据分析中,经常需要从大规模数据集中挖掘有用的信息。关联规则挖掘是一种强大的技术,可以揭示数据中的隐藏关系和规律。本文将介绍如何使用Python进行关联规则挖掘,以帮助您发现数据中的有趣模式。 一、引言 1. 简要介绍关联规则学习…...

Gradle筑基——Gradle Maven仓库管理
基础概念: 1.POM pom:全名Project Object Model 项目对象模型,用来描述当前maven项目发布模块的基础信息 pom主要节点信息如下: 配置描述举例(com.android.tools.build:gradle:4.1.1)groupId组织 / 公司的名称com.…...
c++11:智能指针的种类以及使用场景
指针管理困境 内存释放,指针没有置空;内存泄漏;资源重复释放 怎样解决? RAII 智能指针种类 shared_ptr 实现原理:多个指针指向同一资源,引用计数清零,再调用析构函数释放内存。 使用场景…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...