Day209,2024年最新银行java开发面试

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注Java)
img

正文

Dropwizard:http://www.dropwizard.io (关注单个微服务的开发)

Consul、etcd&etc.(微服务的模块)

二、什么是SpringCloud


Spring Cloud并不是一种技术,他是一系列技术框架的集合。它利用 Spring Boot 的开发便利性简化了分布式系统基础设施的开发,如服务发现、服务注册、配置中心、消息总线、负载均衡、 熔断器、数据监控等,都可以用 SpringBoot 的开发风格做到一键启动和部署

1、Spring Cloud和Spring Boot是什么关系

SpringBoot

  • 快速开发单个微服务

  • 专注于快速、方便集成的单个微服务个体

  • 使用了默认大于配置的理念

  • 可以单独使用

SpringCloud:

  • 基于 Spring Boot 实现的开发工具,必须基于Spring Boot开发

  • 关注全局的服务治理框架

  • 离不开 Spring Boot

2、Spring Cloud相关基础服务组件

  • 服务发现——Netflix Eureka (Nacos

  • 服务调用——Netflix Feign

  • 熔断器 ——Netflix Hystrix

  • 服务网关 ——Spring Cloud GateWay

  • 分布式配置——Spring Cloud Config (Nacos

  • 消息总线 —— Spring Cloud Bus (Nacos

3、Spring Cloud的版本

Spring Cloud 并没有熟悉的数字版本号,而是对应一个开发代号。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vu3lpuIS-1614784096510)(../../../../../AppData/Roaming/Typora/typora-user-images/image-20210303111522743.png)]

开发代号看似没有什么规律,但实际上首字母是有顺序的,比如: Dalston 版本,我们可以简称 D 版本,对应的 Edgware 版本我们可以简称 E 版本。


小版本:

Spring Cloud 小版本分为 :

  • M : MileStone , M1 表示第 1 个里程碑版本,一般同时标注 PRE ,表示预览版版

  • SR : Service Release , SR1 表示第 1 个正式版本,一般同时标注 GA : (GenerallyAvailable), 表示稳定版本


服务发现-搭建Nacos服务

========================================================================

一、Nacos


1、基本概念

是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台


常见的注册中心

  1. Eureka(原生,2.0遇到性能瓶颈,停止维护)

  2. Zookeeper(支持,专业的独立产品。例如:dubbo)

  3. Consul(原生,GO语言开发)

  4. Nacos

Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud

Config

  • 通过 Nacos Server 和 spring-cloud-starter-alibaba-nacos-discovery 实现服务的注册与发现。

Nacos主要提供以下四大功能:

  1. 服务发现和服务健康监测

  2. 动态配置服务

  3. 动态DNS服务

  4. 服务及其元数据管理


Nacos结构图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BDJLf6is-1614784096515)(../../../../../AppData/Roaming/Typora/typora-user-images/image-20210303115621199.png)]


2、Nacos下载和安装

(1)下载地址和版本:

下载地址:https://github.com/alibaba/nacos/releases

下载版本:nacos-server-1.1.4.tar.gz 或 nacos-server-1.1.4.zip,解压任意目录即可

2 ) 启动nacos服务

  • Linux/Unix/Mac

启动命令(standalone代表着单机模式运行,非集群模式)

启动命令:sh startup.sh -m standalone

  • Windows

启动命令:cmd startup.cmd 或者双击startup.cmd运行文件。

访问:http://localhost:8848/nacos

用户名密码:nacos/nacos

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qDGQHoMX-1614784096517)(../../../../../AppData/Roaming/Typora/typora-user-images/image-20210303123119971.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Vkx7yTdt-1614784096522)(../../../../../AppData/Roaming/Typora/typora-user-images/image-20210303123125847.png)]

二、服务注册(service_edu为例)


把service-edu微服务注册到注册中心中,service-vod步骤相同

  • 注意,在service包下的都需要配置nacos服务器,因为都配置了下面的nacos配置

不然会报错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CsRyeDn6-1614784096527)(../../../../../AppData/Roaming/Typora/typora-user-images/image-20210303160931945.png)]

1、在service模块配置pom

配置 Nacos 客户端的 pom 依赖

org.springframework.cloud

spring-cloud-starter-alibaba-nacos-discovery

2、添加服务配置信息

配置application.properties,在客户端微服务中添加注册Nacos服务的配置信息

nacos注册中心

spring.cloud.nacos.discovery.server-addr= localhost:8848

3、添加Nacos客户端注解

在客户端微服务启动类中添加注解

@EnableDiscoveryClient //服务发现功能

4、启动客户端微服务

启动注册中心

启动已注册的微服务,可以在 Nacos 服务列表中看到被注册的微服务

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HE9iHsmP-1614784096529)(../../../../../AppData/Roaming/Typora/typora-user-images/image-20210303123417446.png)]

  • 跟上面步骤一样给service-vod、service-oss配置注册中心避免报错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-55Yso9Iz-1614784096531)(../../../../../AppData/Roaming/Typora/typora-user-images/image-20210303161206277.png)]


服务调用-Feign

====================================================================

一、Feign


1、基本概念

  • Feign是Netflix开发的声明式、模板化的HTTP客户端, Feign可以帮助我们更快捷、优雅地调用HTTP API。

Feign支持多种注解,例如Feign自带的注解或者JAX-RS注解等。

  • Spring Cloud对Feign进行了增强,使Feign支持了Spring MVC注解,并整合了Ribbon和Eureka,从而让Feign的使用更加方便。

  • Spring Cloud Feign是基于Netflix feign实现,整合了Spring Cloud Ribbon和Spring Cloud Hystrix,除了提供这两者的强大功能外,还提供了一种声明式的Web服务客户端定义的方式。

  • Spring Cloud Feign帮助我们定义和实现依赖服务接口的定义。在Spring Cloud feign的实现下,只需要创建一个接口并用注解方式配置它,即可完成服务提供方的接口绑定,简化了在使用Spring CloudRibbon时自行封装服务调用客户端的开发量。

二、实现服务调用


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3D9zcoAZ-1614784096532)(../../../../../AppData/Roaming/Typora/typora-user-images/image-20210303113950630.png)]

1、需求

删除课时的同时删除云端视频

2、在service模块添加pom依赖

org.springframework.cloud

spring-cloud-starter-openfeign

3、在调用端启动类添加注解

@EnableFeignClients

4、创建包和接口

创建 client 包

@FeignClient注解用于指定从哪个服务中调用功能 ,名称与被调用的服务名保持一致。

@GetMapping注解用于对被调用的微服务进行地址映射。

@PathVariable注解一定要指定参数名称,否则出错

@Component注解防止,在其他位置注入CodClient时idea报错

@Component

@FeignClient(“service-vod”)//指定调用的服务名,前提要注册到nacos注册中心中

public interface VodClient {

//根据视频id删除阿里云视频

@DeleteMapping(“/eduvod/video/removeAliyunVideoById/{id}”)

public R removeAliyunVideoById(@PathVariable(“id”) String id);

}

5、调用微服务

在【调用端】的VideoServiceImpl中调用client中的方法

//根据课程id删除小节

@Override

public void removeVideoByCourseId(String id) {

//查询云端视频id

EduVideo eduVideo = baseMapper.selectById(id);

String videoSourceId = eduVideo.getVideoSourceId();

//判断小节中是否有对应的视频文件

if (!StringUtils.isEmpty(videoSourceId)){

//有就删除

vodClient.removeAliyunVideoById(videoSourceId);

}

//删除小节

baseMapper.deleteById(id);

}

6、测试

添加一个小节

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aJlJkeg0-1614784096533)(../../../../../AppData/Roaming/Typora/typora-user-images/image-20210303160657127.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CslIKZde-1614784096535)(../../../../../AppData/Roaming/Typora/typora-user-images/image-20210303160715674.png)]

  • 点击删除

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7DVZveuf-1614784096537)(../../../../../AppData/Roaming/Typora/typora-user-images/image-20210303160725907.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ltoWScim-1614784096538)(../../../../../AppData/Roaming/Typora/typora-user-images/image-20210303160736348.png)]

  • 检查数据库和阿里云视频点播

在这里插入图片描述

  • 被删除了,测试成功

完善删除课程业务

==================================================================

一、service_vod服务


需求:删除课程的同时删除云端视频,要求添加一个可以删除多个视频的方法

  • VodController

//根据id删除多个阿里云视频

@DeleteMapping(“/removeBatch”)

public R removeBatch(@RequestParam(“videoIdList”) List videoIdList){

vodService.removeMoreVideo(videoIdList);

return R.ok();

}

  • service

接口

//根据id删除多个阿里云视频

void removeMoreVideo(List videoIdList);

Impl

//根据id集合删除多个视频

@Override

public void removeMoreVideo(List videoIdList) {

//将集合转换为1,2,3格式

String str = StringUtils.join(videoIdList.toArray(), “,”);

try {

//初始化对象

DefaultAcsClient client = InitObject.initVodClient(ConstantVodUtils.ACCESSKEY_ID, ConstantVodUtils.ACCESSKEY_SECRET);

//创建删除视频request对象

DeleteVideoRequest request = new DeleteVideoRequest();

//向request设置要删除视频的id值

request.setVideoIds(str);

//调用初始化对象的方法实现删除

DeleteVideoResponse response = client.getAcsResponse(request);

System.out.println(“RequestId = “+ response.getRequestId()+”\n”);

}catch (Exception e){

throw new AchangException(20001,“视频删除失败”);

}

}

  • Swagger测试

二、service_edu服务


service_edu去调用service_vod接口实现删除多个视频的功能

  • 给service_edu启动类上加@EnableFeignClients

  • 创建接口标注@FeignClient指定调用的服务名

@Component

@FeignClient(“service-vod”)//指定调用的服务名,前提要注册到nacos注册中心中

  • 在接口下创建调用service_vod的方法

//根据多个视频id删除多个阿里云视频

@DeleteMapping(“/eduvod/video/removeBatch”)

public R removeBatch(@RequestParam(“videoIdList”) List videoIdList);

  • VideoServiceImpl.java

//根据课程id删除小节

@Override

public void removeVideoByCourseId(String id) {

//根据课程id查询课程里面的所有视频

QueryWrapper wrapper = new QueryWrapper<>();

wrapper.eq(“course_id”,id);

wrapper.select(“video_source_id”);

List eduVideos = baseMapper.selectList(wrapper);

List list = new ArrayList<>();

for (EduVideo eduVideo : eduVideos) {

String sourceId = eduVideo.getVideoSourceId();

if (!StringUtils.isEmpty(sourceId)){

list.add(sourceId);

}

}

//根据多个视频id,删除多个视频

if (list.size()>0){

vodClient.removeBatch(list);

}

QueryWrapper queryWrapper2 = new QueryWrapper<>();

queryWrapper2.eq(“course_id”, id);

baseMapper.delete(queryWrapper2);

}

  • EduCourseServiceImpl

//删除课程

@Override

public boolean removeCourse(String id) {

//1、根据课程id删除小节

eduVideoService.removeVideoByCourseId(id);

Kafka进阶篇知识点

image

Kafka高级篇知识点

image

44个Kafka知识点(基础+进阶+高级)解析如下

image

由于篇幅有限,小编已将上面介绍的**《Kafka源码解析与实战》、Kafka面试专题解析、复习学习必备44个Kafka知识点(基础+进阶+高级)都整理成册,全部都是PDF文档**

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

}

QueryWrapper queryWrapper2 = new QueryWrapper<>();

queryWrapper2.eq(“course_id”, id);

baseMapper.delete(queryWrapper2);

}

  • EduCourseServiceImpl

//删除课程

@Override

public boolean removeCourse(String id) {

//1、根据课程id删除小节

eduVideoService.removeVideoByCourseId(id);

Kafka进阶篇知识点

[外链图片转存中…(img-6Ne6zx40-1713598164379)]

Kafka高级篇知识点

[外链图片转存中…(img-gqhFhwWS-1713598164380)]

44个Kafka知识点(基础+进阶+高级)解析如下

[外链图片转存中…(img-lNH8I5ZT-1713598164380)]

由于篇幅有限,小编已将上面介绍的**《Kafka源码解析与实战》、Kafka面试专题解析、复习学习必备44个Kafka知识点(基础+进阶+高级)都整理成册,全部都是PDF文档**

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Java)
[外链图片转存中…(img-eDxnp2hL-1713598164381)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值