kafka查看topic数据内容,成功入职字节跳动

高级Java面试题 高级Java面试题     2022-12-10     804

关键词:

正文

MyBatis 的整体架构分为三层, 分别是基础支持层核心处理层接口层,如下图所示。

基础支持层

反射模块

该模块对 Java 原生的反射进行了良好的封装,提供了更加简洁易用的 API ,方便上层使调用,并且对反射操作进行了一系列优化,例如缓存了类的元数据,提高了反射操作的性能。

类型转换模块

类型转换模块提供了两个主要功能,一个功能是别名机制,MyBatis 为了简化配置文件提供了别名机制;另一个功能是实现 JDBC 类型与 Java 类型之间的转换,该功能在为 SQL 语句绑定实参以及映射查询结果集时都会涉及。

日志模块

提供详细的日志输出信息,并且能够集成多种日志框架,其日志模块的一个主要功能就是集成第三方日志框架。

资源加载模块

资源加载模块主要是对类加载器进行封装,确定类加载器的使用顺序,并提供了加载类文件以及其他资源文件的功能。

解析器模块

解析器模块主要提供两个功能,一个功能是对 XPath 进行封装,为 MyBatis 初始化时解析 mybatis-config.xml 配置文件以及映射配置文件提供支持;另一个功能是为处理动态 SQL 语句中的占位符提供支持。

数据源模块

MyBatis 自身提供了相应的数据源实现,也提供了与第三方数据源集成的接口。

事务管理

MyBatis 对数据库中的事务进行了抽象,其自身提供了相应的事务接口和简单实现。一般在应用中,MyBatis 会与 Spring 框架集成,并由 Spring 框架管理事务。

缓存模块

MyBatis 中提供了一级缓存和二级缓存,而这两级缓存都是依赖于基础支持层中的缓存模块实现的。MyBatis 中自带的这两级缓存与 MyBatis  以及整个应用是运行在同一个 JVM 中的,共享同一块堆内存。如果这两级缓存中的数据量较大, 则可能影响系统中其他功能的运行,所以当需要缓存大量数据时,优先考虑使用 Redis 、Memcache 等缓存产品。

Binding 模块

在调用 SqlSession 相应方法执行数据库操作时,需要指定映射文件中定义的 SQL 节点,如果出现拼写错误,我们只能在运行时才能发现相应的异常。为了尽早发现这种错误,MyBatis 通过 Binding 模块将用户自定义的 Mapper 接口与映射配置文件关联起来,系统可以通过调用自定义 Mapper 接口中的方法执行相应的SQL 语句完成数据库操作,从而避免上述问题。

需要注意的是,开发人员无须编写自定义 Mapper 接口的实现,MyBatis 会自动为其创建动态代理对象。

核心处理层

在核心处理层中实现了 MyBatis 的核心处理流程,其中包括 MyBatis 的初始化以及完成一次数据库操作涉及的全部流程。

配置解析

在 MyBatis 初始化过程中,会加载 mybatis-config.xml 配置文件、映射配置文件以及 Mapper 接口中的注解信息,解析后的配置信息会形成相应的对象并保存到 Configuration 对象中。之后,利用该 Configuration 对象创建 SqlSessionFactory 对象。待 MyBatis 初始化之后,开发人员可以通过初始化得到 SqlSessionFactory 创建 SqlSession 对象并完成数据库操作。

SOL 解析与 scripting 模块

拼凑 SQL 语句是一件烦琐且易出错的过程,为了将开发人员从这项枯燥无趣的工作中解脱出来,MyBatis 实现动态 SQL 语句的功能,提供了多种动态 SQL 语句对应的节点,例如, 节点、 节点、 节点等。通过这些节点的组合使用,开发人员可以写出几乎满足所有需求的动态 SQL 语句。

MyBatis 中的 scripting 模块会根据用户传入的实参,解析映射文件中定义的动态 SQL 节点,并形成数据库可执行的 SQL 语句。之后会处理 SQL 语句中的占位符,绑定用户传入的实参。

SQL 执行

SQL 语句的执行涉及多个组件,其中比较重要的是 Executor 、StatementHandler 、ParameterHandler 和 ResultSetHandler。Executor 主要负责维护一级缓存和二级缓存,并提供事务管理的相关操作,它会将数据库相关操作委托给 StatementHandler 完成。StatementHandler 首先通过 ParameterHandler 完成 SQL 语句的实参绑定;然后通过 java.sql.Statement 对象执行 SQL 语句并得到结果集;最后通过 ResultSetHandler 完成结果集的映射,得到结果对象并返回。

插件

用户可以通过添加自定义插件的方式对 MyBatis 进行扩展。用户自定义插件也可以改变 MyBatis 的默认行为,例如,我们可以拦截 SQL 语句并对其进行重写。由于用户自定义插件会影响 MyBatis 的核心行为,在使用自定义插件之前,开发人员需要了解 MyBatis 内部的原理,这样才能编写出安全、高效的插件。

下图展示了 MyBatis 执行一条 SQL 语句的大致过程。

接口层

接口层相对简单,其核心是 SqlSession 接口,该接口中定义了 MyBatis 暴露给应用程序调用的 API,也就是上层应用与 MyBatis 交互的桥梁。接口层在接收到调用请求时,会调用核心处理层的相应模块来完成具体的数据库操作。

可以通过 MyBatis 源码的目录结构查看各个模块的具体实现,目录结构如下图所示。

封装的很清晰,基本是一个模块一个 package。

最后

由于篇幅限制,小编在此截出几张知识讲解的图解,有需要的程序猿(媛)可以点赞后戳这里免费领取全部资料获取哦

P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌

P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌

P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌

P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌

P8级大佬整理在Github上45K+star手册,吃透消化,面试跳槽不心慌

874703047)]

[外链图片转存中…(img-QYRiyNeL-1626874703047)]

[外链图片转存中…(img-jFjo51r0-1626874703048)]

成功拿到字节跳动offer,成功入职阿里

RPC概述RPC(RemoteProcedureCall)即远程过程调用,允许一台计算机调用另一台计算机上的程序得到结果,而代码中不需要做额外的编程,就像在本地调用一样。现在互联网应用的量级越来越大,单台计算机的能力有限... 查看详情

以27k成功入职字节跳动,这份《软件测试面试笔记》让我受益终身(代码片段)

朋友入职已经两周了,整体工作环境还是非常满意的!所以这次特意抽空给我写出了这份面试题,而我把它分享给小伙伴们,面试&入职的经验!大概是在3月中的时候他告诉我投递了简历,5月的时候经... 查看详情

kafka查看topic和消息内容命令

1、查询topic,进入kafka目录:bin/kafka-topics.sh--list--zookeeperlocalhost:2181 2、查询topic内容:bin/kafka-console-consumer.sh--bootstrap-serverlocalhost:9092--topictopicName--from-beginning 查看详情

字节跳动终面:35k,18薪,什么时候能入职?

我一个朋友,最近成功跳槽到字节,终面谈好35K,而且是18薪,终于拿到了人生的第一个60w!兴冲冲地跟女朋友炫耀,说自己也是互联网高薪人才了。结果却被她一顿”工种鄙视“,没办法,谁让我... 查看详情

启动kafka(代码片段)

启动zookeeper使用命令查看zookeeper是否启动成功: 启动kafkaBrokerr使用命令查看kafkaBroker是否启动更成功 在kafka中创建topic‘test‘bin/kafka-topics.sh--create--zookeeperlocalhost:2181--replication-factor1--partitions1--topictest1列出所有的topicbin/kaf... 查看详情

2021年最新android面试精讲,成功入职字节跳动

...类源码解析的文章博客五花八门、良莠不齐。杂乱、要么内容质量太浅,零散、碎片化,总看着看着就衔接不上了。所以,博主利用闲暇时间,花了近三个月将Android开发中最常用、面试被问频次最高的18类源码整... 查看详情

2021年最新android面试精讲,成功入职字节跳动

...类源码解析的文章博客五花八门、良莠不齐。杂乱、要么内容质量太浅,零散、碎片化,总看着看着就衔接不上了。所以,博主利用闲暇时间,花了近三个月将Android开发中最常用、面试被问频次最高的18类源码整... 查看详情

linux怎样查看kafka的某topic数据

...sign-partitions.sh--zookeeperlocalhost:2181--reassignment-json。5、最后查看kafka的某topic数据如图。注意事项:Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。参考技术A基于0.8.0版本... 查看详情

查看storm消费了多少kafka的数据

参考技术A基于0.8.0版本。##查看topic分布情况kafka-list-topic.shbin/kafka-list-topic.sh--zookeeper192.168.197.170:2181,192.168.197.171:2181(列出所有topic的分区情况)bin/kafka-list-topic.sh--zookeeper192.168.197.170:2181,192.168.197.171:2181--topictest(查看test的分区... 查看详情

帖子怎么彻底删除kafka的topic,然后重建?

...Command命令删除topic,但是并没有成功,用kafka-topics.sh命令查看依然可以查看到topic,应该怎样才能彻底删除topic?2016-01-01 添加评论分享2个回复 OpenSkill - Ope 查看详情

kafka小笔记(代码片段)

文章目录一、kafka命令1.查看所有主题2.创建主题3.查看topic详情4.查看所有topic详情5.删除topic6.消费topic7.生产者topic二、彻底删除kafka的topic三、kafka中的acks参数一、kafka命令进入到kafka目录的bin下:1.查看所有主题./kafka-topics.sh--... 查看详情

java程序员,是不是很想进字节跳动?开发三年的我拿到了入职通知

...a;字节跳动地点:北京工作经验:3年岗位:大数据事业部面试次数& 查看详情

java程序员,是不是很想进字节跳动?开发三年的我拿到了入职通知

...a;字节跳动地点:北京工作经验:3年岗位:大数据事业部面试次数& 查看详情

字节跳动的师兄跟我说:要带着离职的心态去入职?

你是不是在入职一家新公司是这样的心态:我一定要在这家公司好好的工作,最好是稳定几年。我一定要在这家公司好好干,学到更加厉害的技能。我一定要在这个公司干满一年,之后跳槽可以达到3000-4000的涨幅... 查看详情

字节跳动的师兄跟我说:要带着离职的心态去入职?

你是不是在入职一家新公司是这样的心态:我一定要在这家公司好好的工作,最好是稳定几年。我一定要在这家公司好好干,学到更加厉害的技能。我一定要在这个公司干满一年,之后跳槽可以达到3000-4000的涨幅... 查看详情

2022字节跳动数仓实习面经(23面hr面)

...总结,就放在一起吧。对往期内容感兴趣的同学可以查看如下内容👇:2022字节一面面经:2022字节跳动数据仓库实习面经.2022字节被拒面经:2022暑期实习字节跳动数据研发面试经历.2022百度面经:2022百度大数据开发工程师实习... 查看详情

不卷了,入职字节跳动一周果断离职

一个在大厂当外包员工的朋友,说最近看了《理想之城》,被剧中情节戳中。剧中苏筱是一名造价师,结果剧情中因为造价师证被扣,工作无法转正,就像打黑工一样,用剧中许峰的话说就是只能当个“影... 查看详情

如何查看kafka各partition数据量

参考技术A若没有分区,一个topic对应的消息集在分布式集群服务组中,就会分布不均匀,即可能导致某台服务器A记录当前topic的消息集很多,若此topic的消息压力很大的情况下,服务器A就可能导致压力很大,吞吐也容易导致瓶颈... 查看详情