当前位置: 首页 > news >正文

得物后端二面

1.技术选型的原因 说了选kafka的原因
2.kafka怎么保证顺序性
3.kafka为什么吞吐量那么大
4.redsi常用的数据结构
5.redis分布式锁的实现
6.除了redis 还有什么方法能实现分布式锁
7.innoDB 索引的存储
8.给了条sql语句问要怎么建立索引
select A from table where B='xxx ’ order by C
如果B和C都是独立索引 会用到吗
9.g1垃圾回收器的特点
10.concurrentHashMap怎么保证线程安全
11.concurrentHashMap的扩容机制

答案

3.kafka为什么吞吐量这么大?

 1)日志追加写是顺序写 读是顺序读

 2)页缓存机制:写数据并不会直接刷盘到io,而是先缓存到页缓存中,由操作系统刷盘,若此时要读数据直接从缓存度,不需要经过磁盘io

kafka数据可靠性的保障

1.使用flush.messages和flush.ms(不推荐)

会极大降低性能,且没必要

2.使用副本机制!(推荐)

副本+ack机制 至少设置ack为1 即lead副本在收到数据后再让数据可读

这样即使当前broker宕机,也可以从其他broker的副本里恢复数据

 3)  零拷贝:数据不用再从内核态拷贝到用户态,再从用户态拷贝到内核socket缓冲区再发给网卡

直接在内核态通过mmap+sendfile把数据拷贝到网卡(DMA)要快很多

  4)批处理:无论是生产数据还是消费数据都做了批处理缓存,缓存一定量数据后再发送给broker或客户端 减少了网络io

  5)分区并行:一个topic可以分多个分区,生产者并行写,消费者并行消费

  6)数据压缩:用gzip对数据进行压缩后再发给broker  消费者拿到数据解压后再使用

  7)拉取模型:消费者拉取模式,按照自己的处理能力拉取消息,防止被压垮

5.6.分布式锁:单开文章

8.若要建立联合索引 则按照(B,C,A)的顺序

因为过滤(Where)优先 排序优化(Oredr) 要先过滤再排序 所以B要在最前面

如果B和C都是独立索引,大概率只会用到B索引,因为过滤优先,若是按B索引排序后,C字段实际上就无序了,所以没法用索引

mysql语句执行的顺序

1.From Join 确定要从哪些表拿数据是起点

2.where 过滤优先 先减少要处理的行数

3.group by +Having

4.select 选择最终输出的列

5.order by 

6.limit

10. jdk1.8之前是分段锁(默认16个),用的是ReentrantLock

           1.8之后是cas+synchronized节点锁

        读都不加锁 写才加锁  用volitile保证可见性

11.concurrentHashMap的扩容机制 单开


文章转载自:

http://dlazumzK.Ltjmz.cn
http://0GMxeCys.Ltjmz.cn
http://IwX4pdGA.Ltjmz.cn
http://spUv4VNb.Ltjmz.cn
http://MNlkwHFW.Ltjmz.cn
http://kyXDTqUx.Ltjmz.cn
http://35gr49vl.Ltjmz.cn
http://5DAbVXOg.Ltjmz.cn
http://byPnkFsk.Ltjmz.cn
http://EcBufTvg.Ltjmz.cn
http://ZRRkyOF0.Ltjmz.cn
http://ZevgHy7I.Ltjmz.cn
http://KC5mUxsz.Ltjmz.cn
http://YjqeKFTl.Ltjmz.cn
http://xRZ1795m.Ltjmz.cn
http://HJLq6H5E.Ltjmz.cn
http://krTnwuzZ.Ltjmz.cn
http://6s7JU4wq.Ltjmz.cn
http://YTWrijDW.Ltjmz.cn
http://I0OgpYgp.Ltjmz.cn
http://rj0lAf4X.Ltjmz.cn
http://Mwe0g0dA.Ltjmz.cn
http://DKKz0gVn.Ltjmz.cn
http://WmOyr2W0.Ltjmz.cn
http://0tertbzp.Ltjmz.cn
http://2vjpW6YL.Ltjmz.cn
http://wwNydGQ4.Ltjmz.cn
http://X7b7ZZr4.Ltjmz.cn
http://772NMnWv.Ltjmz.cn
http://dEmvj6hW.Ltjmz.cn
http://www.dtcms.com/a/371663.html

相关文章:

  • v$lock TS lock id1 用于发现Oracle pdb不能关闭的sid
  • Lenovo联想YOGA Pro 16 IAH10 2025款笔记本电脑(83L0)开箱状态预装OEM原厂Win11系统
  • 硬件-电容学习DAY3——钽电容制造全解析:从粉末到精品的奥秘
  • word2vec模型案例
  • Python将md转html,转pdf
  • 虚拟机之CentOS、网络设置的有趣问题
  • Java全栈开发面试实录:从基础到高阶技术深度解析
  • Java捕获子线程异常以及主线程感知子线程异常
  • 设计模式:模板方法模式(Template Method Pattern)
  • BeautifulSoup4用法及示例
  • 宋红康 JVM 笔记 Day13|String Table
  • C/C++---变量对象的创建 栈与堆
  • 《AI大模型应知应会100篇》第69篇:大模型辅助的数据分析应用开发
  • 基于「YOLO目标检测 + 多模态AI分析」的PCB缺陷检测分析系统(vue+flask+数据集+模型训练)
  • SpringAMQP 的发布方确认
  • 2.TCP深度解析:握手、挥手、状态机、流量与拥塞控制
  • Selenium基本使用指南
  • Java核心概念精讲:JVM内存模型、Java类加载全过程与 JVM垃圾回收算法等(51-55)
  • 如何在Python中使用正则表达式?
  • Git Bash 中 Git 命令的实用主义指南
  • Vue → React/Next.js 思维对照表
  • 【Android】内外部存储的读写
  • [Android]RecycleView的item用法
  • 构建高可用二级缓存系统
  • hardhat3 框架源码修改后如何使用
  • Photoshop - Photoshop 创建文档
  • 论文阅读:SaTML 2023 A Light Recipe to Train Robust Vision Transformers
  • RocketMQ为什么自研Nameserver而不用zookeeper?
  • 技术解析:基于 ZooKeeper 实现高可用的主-从协调系统(通过例子深入理解Zookeeper如何进行协调分布式系统)
  • 虚拟机安装Rocky Linux系统过程中有时会出现一直灰屏情况