搜集了一些题

kafka为什么会重复消费消息?

在kafka提交offset的时候,可能由网络延迟或者某些原因导致,offset没有同步,导致其他consumer消费了已经消费的消息

kafka如何实现顺序消费?

kafak的话需要将顺序消费的消息通过指定分区策略发送到指定的partition中
如果了解rocketMq的话,可以顺带一句,rkmq自带顺序消息功能,分为全局顺序和局部顺序消息,一般情况下都采用局部顺序消息这种机制

kafak如何保证消息不丢失?

生产端: ack = all,reties次数加大;消费端:关闭自动提交offset,消费消息成功后手动提交offset

消息进入死信队列的条件?
  1. 消息到达超时时间
  2. 队列长度到达限制
  3. 消息拒绝签收,不把消息放入原队列中
浅拷贝和深拷贝?
  • 浅拷贝:在拷贝一个对象时,对对象的基本数据类型的成员变量进行拷贝,但对引用类型的成员变量只进行引用的传递,并没有创建一个新的对象,当对引用类型的内容修改会影响被拷贝的对象。
  • 深拷贝:在拷贝一个对象时,除了对基本数据类型的成员变量进行拷贝,对引用类型的成员变量进行拷贝时,创建一个新的对象来保存引用类型的成员变量。
sleep、wait、yeild、join区别?
  • sleep 是thread方法,sleep 过程中线程不会释放锁,只会阻塞线程
  • wait 是object方法,wait 过程中线程会释放对象锁,只有当其他线程调用 notify 才能唤醒此线程
  • yeild 是thread方法,不是释放资源锁,调用yeild的线程进入就绪状态
  • join 是等待调用join方法的线程结束之后,程序再继续执行
synchronized 和 lock的区别?
  1. syn是关键字 lock是接口
  2. lock需要手动加锁和释放锁,syn不需要
  3. lock只能锁代码块,syn可以锁类、方法、代码块
  4. syn是非公平锁,lock既可以是公平锁也可以是非公平锁,默认是非公平锁
  5. syn修饰的代码在执行异常时,jdk会自动释放线程占有的锁,当Lock发生异常时,如果程序没有通过unLock()去释放锁,则很可能造成死锁现象
  6. lock可以让等待锁的线程响应中断处理,如tryLock(long time, TimeUnit unit),而syn不行,使用syn时,等待的线程会一直等待下去,不能够中断
  7. lock可以绑定条件,实现分组唤醒需要的线程;syn要么随机唤醒一个,要么唤醒全部线程
g1和cms的应用场景?

cms应用于老年代,g1应用于内存大于8G的机器,g1不在物理上区分年轻代和老年代

说一下ThreadLocal?

作用:每个线程都会有一份自己的资源变量

ThreadLocalMap中使用的key为ThreadLocal的弱引用,value为强引用。当ThreadLocal没被外部引用时key会被GC回收,导致key为null,而value永远无法被回收从而内存泄漏。最好每次用完ThreadLocal后手动调用remove()。

为什么要使用线程池?
  1. 降低资源消耗
  2. 提高响应速度
  3. 提高线程的可管理性
tcp 为什么要三次握手,两次不行吗?为什么?

如果采用两次握手,那么只要服务器发出确认数据包就会建立连接,但由于客户端此时并未响应服务器端的请求,那此时服务器端就会一直在等待客户端,这样服务器端就白白浪费了一定的资源。若采用三次握手,服务器端没有收到来自客户端的再此确认,则就会知道客户端并没有要求建立请求,就不会浪费服务器的资源。

为什么要设置Survivor区?
  1. 如果不设置Survivor区 只有eden区 存活的的对象就会直接被放到送到老年代,老年代被填满就会触发触发Major GC(因为Major GC一般伴随着Minor GC,也可以看做触发了Full GC)
  2. 设置两个Survivor区最大的好处就是解决了碎片化
Spring如何解决循环依赖问题?

解决的核心原理就是:在对象实例化之后,依赖注入之前,Spring提前暴露的Bean实例的引用在第三级缓存中进行存储。

  • 一级缓存 singletonObjects (concurrentHashmap)
  • 二级缓存 earlySingletonObjects (hashmap)
  • 三级缓存 singletonFactory (hashmap)
聚簇索引和非聚簇索引在b+树上的展示形式?
  • 聚簇索引:数据跟索引绑定在一起
  • 非聚簇索引:数据跟索引分开存储
mysql三大范式?
  1. 每一列都是不可分割的,原子性
  2. 如果表是单主键,那么主键以外的列必须完全依赖于主键;如果表是复合主键,那么主键以外的列必须完全依赖于主键,不能仅依赖主键的一部分.
  3. 表中的非主键列必须和主键直接相关而不能间接相关
MySQL 怎么知道 binlog 是完整的?
  • statement格式的 binlog,完整的标识是最后有 COMMIT 关键字
  • row 格式的binlog,完整的标识是最后会有一个 XID event 关键字
查询长时间不返回可能是什么原因?应该如何处理?
  • 查询速度慢的原因很多:
  1. 查询字段没有索引或者没有触发索引查询
  2. I/O 压力大,读取磁盘速度变慢
  3. 内存不足
  4. 网络速度慢
  5. 查询出的数据量过大,可以采用多次查询或其他的方法降低数据量
  6. 死锁
  • 解决方式:
  1. 正确创建和使用索引。
  2. 把数据、日志、索引放到不同的 IO 设备上,减少主数据库的 IO 操作。更换 MySQL 的磁盘为固态硬盘,以提高磁盘的 IO 性能。
  3. 升级内存,更换更大的内存。
  4. 提升网速,升级带宽。
  5. 用 Profiler 来跟踪查询,得到查询所需的时间,找出有问题的 SQL 语句,优化 SQL。
  6. 查询时值返回需要的字段。
  7. 设置死锁的超时时间,限制和避免死锁消耗过多服务器的资源。
什么是存储引擎?
  • 存储引擎:不同的数据文件在磁盘的组织形式
  1. frm:表结构
  2. ibd:数据和索引文件
mysql索引失效的情况
  • 不符合最左匹配原则
  • 索引列有计算
  • 有or
  • 模糊查询 like %
  • 索引列有函数
  • 需要类型转换
聚集索引和非聚集索引?
  • 聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个
  • 聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续
  • 聚集索引:物理存储按照索引排序;聚集索引是一种索引组织形式,索引的键值逻辑顺序决定了表数据行的物理存储顺序
  • 非聚集索引:物理存储不按照索引排序;非聚集索引则就是普通索引了,仅仅只是对数据列创建相应的索引,不影响整个表的物理存储顺序.
  • 索引是通过二叉树的数据结构来描述的,我们可以这么理解聚簇索引:索引的叶节点就是数据节点。而非聚簇索引的叶节点仍然是索引节点,只不过有一个指针指向对应的数据块。
  • 聚集索引是主健索引或第一个不为空的唯一索引
  • 非聚集索引实际上就是普通索引
MySQL 中可不可以只要 binlog,不要 redo log?
  • 不可以,binlog 没有崩溃恢复的能力
MySQL 中可不可以只要 redo log,不要 binlog?
  • redo log 是循环写不能保证所有的历史数据,这些历史数据只能在 binlog 中找到
  • binlog 是高可用的基础,高可用的实现原理就是 binlog 复制.
MySQL 最多可以创建多少个索引列?

最多可以创建 16 个索引列.

什么叫回表查询?

普通索引查询到主键索引后,回到主键索引树搜索的过程,我们称为回表查询.

mysql的innodb和myisam区别?
  • innodb 支持外键,myisam不支持
  • innodb 支持事物,myisam不支持
  • innodb 支持崩溃后数据恢复
  • innodb 支持行级锁,myisam支持表锁
  • innodb 不支持全文索引,myisam支持fulltext
mysql如何解决死锁?

死锁概念:是指两个或两个以上的进程在执行过程中。因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去

  • 查出死锁线程 select trx_MySQL_thread_id from information.schema.innodb.trx; 并且kill掉
  • 设置锁的超时时间, innodblock_wait_timeout= 1000
mysql如何处理满查询?
  1. 开启满查询日志,定位哪条语句有问题
  2. 通过执行计划分析sql语句,获得其使用索引的情况,之后修改语句或者修改索引,使得语句尽可能命中索引
  3. 如果语句无法继续优化,考虑数据量太大,进行垂直或者水平分表
explain执行计划主要看那几个指标?
  1. table
  2. type
  3. key
  4. extra
InnoDB 为什么要使用 B+ 树,而不是 B 树、Hash、红黑树或二叉树?
  • B 树:不管叶子节点还是非叶子节点,都会保存数据,这样导致在非叶子节点中能保存的指针数量变少(有些资料也称为扇出),指针少的情况下要保存大量数据,只能增加树的高度,导致IO操作变多,查询性能变低;
  • Hash:虽然可以快速定位,但是没有顺序,IO 复杂度高;
  • 二叉树:树的高度不均匀,不能自平衡,查找效率跟数据有关(树的高度),并且 IO 代价高;
  • 红黑树:树的高度随着数据量增加而增加,IO 代价高。
MySQL事务隔离级别?
  1. 读未提交
  2. 读已提交
  3. 可重复读
  4. 串行
事务的基本要素?
  1. 独立性
  2. 一致性
  3. 持久性
  4. 原子性
事务的并发问题
  1. 脏读:读取了其他事务未提交的数据.
  2. 不可重复读:在事务A多次读取数据过程中,事务B修改了这个数据,导致事务A读取的数据不一致.
  3. 幻读:A修改所有的数据为1的时候,B新增了一条数据,A修改结束后发现还有一条记录没有改过来.
    不可重复读侧重于修改,幻读侧重于新增或删除
Redis做消息队列与其他消息队列相比有什么不同?

Redis作为消息队列:

· 如果你的需求是快产快消的即时消费场景,并且生产的消息立即被消费者消费掉。

· 如果速度是你十分看重的,比如慢了一秒好几千万这种。

· 如果允许出现消息丢失的场景。

· 如果你不需要系统保存你发送过的消息。

· 如果需要处理的数据量并不是那么巨大。

其他消息队列:

· 如果你想要稳定的消息队列。

· 如果你想要你发送过的消息可以保留一定的时间,并不是无迹可寻的时候。

· 如果你无法忍受数据的丢失。

· 如果速度不需要那么的快。

· 如果需要处理数据量巨大的时候。

应用场景分析

Redis:轻量级,高并发,延迟敏感即时数据分析、秒杀计数器、缓存等。

其他MQ:重量级,高并发,异步批量数据异步处理、并行任务串行化,高负载任务的负载均衡等。

redis是单线程的,为什么那么快?
  1. 完全基于内存
  2. i/o多路复用
  3. 数据结构简单
  4. 拥有自己的协议-Redis 序列化协议
什么是分布式事务?

一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败.

CAP定理?

在分布式系统中,可用性、一致性、分区容错性不能同时被满足,P必须满足,剩下的根据业务从AC中选一个

redis和zookeeper分布式锁,哪个性能更高?
  • redis的性能优于zookeeper
  • redis是基于内存的
  • zookeeper需要进行节点数据通过 至少需要两次io

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/7462.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Packet Tracer – 配置动态 NAT

Packet Tracer – 配置动态 NAT 拓扑图 目标 第 1 部分:配置动态 NAT 第 2 部分:验证 NAT 实施 第 1 部分: 配置动态 NAT 步骤 1: 配置允许的流量。 在 R2 上,为 ACL 1 配置一个语句以允许属于 172.16.0.…

【Docker-compose】基于Docker-compose创建LNMP环境并运行Wordpress网站平台

基于Docker compose创建LNMP环境并运行Wordpress网站平台 1.Docker-Compose概述2. YAML文件格式及编写注意事项3. Docker-Compose配置常用字段4.Docker Compose常用命令5.使用Docker-compose创建LNMP环境,并运行Wordpress网站平台5.1 Docker Compose环境安装5.2 使用…

深入解析 SOCKS5 代理与网络安全

一、SOCKS5 代理技术概述 SOCKS5(Socket Secure 5)代理是 SOCKS 协议的最新版本,它允许客户端在客户端与代理服务器之间建立一个安全通道,并通过此通道发送请求并访问远程服务器。与 HTTP/HTTPS 代理相比,SOCKS5 代理在…

【外键合并python】

外键合并(Foreign Key Merge) 外键合并是指在数据库或者数据表中,通过共同的外键将多个数据表合并在一起的操作。在 Excel 表格中,我们可以使用外键来将多个表格合并,类似于数据库中的关联操作。 步骤一:…

SpringBoot项目——springboot配置Tomcat两个端口,https和http的方式 jar的打包和运行

目录 引出springboot配置Tomcat两个端口,https和http的方式1.生成SSL证书2.配置client.p12和https端口3.配置http的8080端口WebServerFactoryCustomizer接口4.启动项目 项目应用:在某项目中有一个功能需要https协议Tomcat启动https和http两个端口根据htt…

工业物联网网关让PLC数据手机端监控和报警更加简单

在传统的工厂管理中,我们想要看到现场设备的实时数据,必须在控制室内通过工控机、电脑、触摸屏等这些上位机设备才能看到,同理PLC维护也需要工程师在现场进行编程调试工作,非常不方便。 随着工业物联网的发展,作为设备…

“学习嵌入式开发:明确目标,提升技能“

嵌入式领域涵盖广泛,不可能一次性掌握所有知识。因此,明确学习目标和方向非常重要。选择感兴趣且与职业发展相关的领域进行深入学习是明智之举。 嵌入式技术在不断发展,过去与现在存在差异。选择学习当前行业的主流技术和趋势是明智选择。掌…

抖音矩阵系统源码开发搭建部署分享

一、 功能开发设计 (1)数据概览:账号,视频top10数据统计 (2)AI视频创意:原创视频批量剪辑,阶乘算法,去重原理 (3)同城拓客:线下门店…

【Java基础教程】(四十六)IO篇 · 下:System类对IO的支持:错误输出、信息输出、系统输入,字符缓冲流、扫描流和对象序列化流~

Java基础教程之IO操作 下 🔹本节学习目标1️⃣ System类对 IO 的支持1.1 错误输出:System.err1.2 信息输出:System.out1.3 系统输入:System. in 2️⃣ 字符缓冲流:BufferedReader3️⃣ 扫描流:Scanner4️⃣…

两个数组的dp问题(2)--动态规划

一)交错字符串: 97. 交错字符串 - 力扣(LeetCode) 一)确定一个状态标识: 如果我选择s1的一段区间,再进行选择s2得一段区间那么s3这个字符串的长度就已经固定了 预处理:在s1字符串s2字符串和s3字符串前面加上一个虚拟字符,让下标从…

【MyBatis-Plus 进阶学习笔记】

MyBatis-Plus 进阶学习笔记记录 一、 MyBatis Plus 七大功能0. 数据准备1. 逻辑删除2. 自动填充2.1 优化1 自动填充 有的类没有更新和创建时间字段2.2 优化2 自己设置时间时填充自己设置的,不设置时自动填充 3. 乐观锁插件 注:wrapper不能服用4. 性能分析…

网安高级笔记1

html实体编码 HTML实体编码&#xff0c;格式 以&符号开头&#xff0c;以;分号结尾的 HTML 中的预留字符必须被替换为字符实体 在 HTML 中不能使用小于号&#xff08;<&#xff09;和大于号&#xff08;>&#xff09;&#xff0c;这是因为浏览器会误认为它们是…

RFC8470在HTTP中使用早期数据

摘要 使用TLS早期数据会暴露出重放攻击的可能性。本文定义了允许客户端与服务器就早期数据中发送的HTTP请求进行通信的机制。描述了使用这些机制来减轻重放风险的技术。 1. 介绍 TLS 1.3[TLS13]引入了早期数据&#xff08;也称为零往返时间&#xff08;0-RTT&#xff09;数…

ffplay播放器剖析(7)----音视频暂停模块分析

文章目录 1. 暂停触发流程2. toggle_pause3. stream_toggle_pause 1. 暂停触发流程 1.通过SDL触发事件调用toggle_pause 2.toggle_pause调用stream_toggle_pause 3.stream_toggle_pause修改暂停变量 2. toggle_pause static void toggle_pause(VideoState *is) {stream_to…

AI写场景小作文

AI写场景小作文 https://edu.csdn.net/learn/38500/612957?spm3001.4143 函数isNum(n) 参数为字符串属于整数&#xff0c;浮点数&#xff0c;或复数&#xff0c;则输出True,否则输出False def isNum(n):try:neval(n)if type(n)int or type(n)float or type(n)complex:print…

HTML中的焦点管理

前言 焦点作为页面交互中的重要一环&#xff0c;涉及到的知识点也比较多&#xff0c;有必要做一个统一的总结。 HTML 中的可获取焦点的元素 具有 href 属性的 HTMLAnchorElement/HTMLAreaElement非禁用态的 HTMLInputElement/HTMLSelectElement/HTMLTextAreaElement/HTMLBut…

【VUE】使用elementUI tree组件根据所选id自动回显

需求如下&#xff1a; 1.点击父级节点 将父级节点下children中所有id放入数组 2.点击父级下的子节点 将点击的子节点放入数组 3.取消选择父节点&#xff0c;将放入数组的所有子节点id删除 4.根据选择的子节点数组&#xff0c;匹配他所属的父节点 <el-tree:data"tre…

Docker——compose单机容器集群编排

Docker——compose单机容器集群编排 一、Docker-compose概述1.为何需要Docker-compose2.Docker-compose 的特征3.Docker-compose 的优势4.Docker-compose 的劣势5.Docker-compose 的生产环境 二、Docker Compose 环境安装三、YAML 文件格式及编写注意事项四、Docker Compose配置…

Spin语法

消息传递 消息通道用于对数据从一个过程到另一个过程的传输进行建模。它们在本地或全局上声明,如下所示: chan qname = [16] of {short}这将声明一个通道,该通道最多可以存储16个short类型的消息。通道名称可以通过通道从一个进程传递到另一进程,也可以作为进程实例化中的…

STM32自学笔记17-步进电机驱动项目-磁编码器的正常使用

上节有这样一句话&#xff1a; 步进电机旋转角度和编码器输出数据之间的关系通常是非线性的。在校准过程中&#xff0c;可以通过采集一系列已知角度位置的数据点&#xff0c;并拟合出角度与编码器数据之间的关系。这个拟合可以使用曲线拟合算法或其他数学方法来实现。通过拟合&…