【3】阿里面试题整理

[1]. ES架构,如何进行路由以及选主

路由:在Elasticsearch(ES)中,默认的路由算法是基于文档的_id。具体来说,Elasticsearch会对文档的_id进行哈希计算,然后对分片数量取模,以确定该文档应存储在哪个分片上。这个过程可以确保同一个文档始终路由到相同的分片上,除非分片数量发生变化。

选主:Elasticsearch使用Zen Discovery模块进行选主(Leader Election)。这个过程类似于一个Leader Election算法。每个节点都会参与投票,选举出一个合适的master节点。master节点负责管理集群的状态,例如分片的分配和元数据的维护。

[2]. 组合索引的使用及需要注意的问题。

组合索引是为了优化多条件查询而创建的,它会将多个列组合在一起作为索引。

只有当查询条件中包含了索引中最左边的列或最左边的几个列时,这个索引才能被使用。

为了让索引更高效,应该将选择性比较高的列放在前面,这样才能更快地筛选出数据。

组合索引有一定的维护成本,每次插入、更新或者删除数据的时候都需要更新索引,创建过多的索引会增加数据库的负担。

[3]. 主键索引与唯一索引的区别。

主键索引要求列值不能为NULL,而唯一索引允许存在NULL值。

一张表只能有一个主键索引,但可以有多个唯一索引。

主键索引通常是聚集索引,直接影响数据在磁盘上的存储方式,而唯一索引一般是非聚集的。

主键索引主要用于唯一标识表中的每一行数据,而唯一索引主要是用来确保特定列的数据唯一性。

[4]. 数据库与Redis的缓存一致性问题。

数据库和Redis的缓存一致性问题,主要是因为缓存和数据库之间的数据存在时间差,并且有多个并发操作可能会导致数据不一致。

为了解决这个问题,需要考虑两方面:缓存更新策略和一致性维护策略。

缓存更新策略方面,最常用的是旁路缓存模式,即先查缓存,缓存没有再查数据库,并且把数据写入缓存,更新数据的时候,先更新数据库,然后删除缓存。

这种策略的好处是简单易用,缺点是首次查询会慢一些。

一致性维护策略方面,最基本的是先更新数据库再删除缓存,但这种方式在并发时可能导致不一致,所以可以使用延时双删策略或者利用消息队列来实现最终一致性。

[5]. HashMap的扩容机制。

HashMap在初始化的时候会分配一个初始的容量,当HashMap的元素数量达到一个阈值(容量乘以负载因子)的时候,就会触发扩容。

扩容的时候,HashMap会创建一个新的数组,容量是原数组的2倍,然后把原数组中的元素重新计算hash值,并根据新的数组容量重新分配到新的数组中。因此,这是一个比较耗时的操作,会导致HashMap的性能下降,所以,如果在预知存储的数据量比较大的情况下,最好在初始化的时候设置一个合理的容量,避免频繁的扩容。

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

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

相关文章

【Linux】opencv在arm64上提示找不到libjasper-dev

解决opencv在arm64上提示找不到libjasper-dev的问题。 本文首发于❄慕雪的寒舍 问题说明 最近我在尝试编译opencv,安装依赖项libjasper1和libjasper-dev的时候就遇到了这个问题。在amd64平台上,我们可以通过下面的命令安装(ubuntu18.04&…

【数据结构】_时间复杂度相关OJ(力扣版)

目录 1. 示例1:消失的数字 思路1:等差求和 思路2:异或运算 思路3:排序+二分查找 2. 示例2:轮转数组 思路1:逐次轮转 思路2:三段逆置(经典解法) 思路3…

基于微信小程序的电子商城购物系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

【linux】Linux 常见目录特性、权限和功能

目录特性默认权限主要功能/用途/根目录,所有目录的起点755文件系统的顶层目录,包含所有其他子目录和文件/bin基础二进制命令目录(系统启动和修复必需的命令)755存放所有用户可用的基本命令(如 ls, cp, bash 等&#xf…

docker直接运行arm下的docker

运行环境是树莓派A 处理器是 arm32v6 安装了docker,运行lamp 编译安装php的时候发现要按天来算,于是用电脑vm下的Ubuntu系统运行arm的docker 然后打包到a直接导入运行就可以了 第一种方法 sudo apt install qemu-user-static 导入直接运行就可以了…

计算机网络一点事(22)

地址解析协议ARP ARP:查询Mac地址 ARP表(ARP缓存):记录映射关系,一个数据结构,定期更新ARP表 过程:请求分组,响应分组 动态主机配置协议DHCP 分配IP地址,配置默认网关…

tomcat核心组件及原理概述

目录 1. tomcat概述 1.1 概念 1.2 官网地址 2. 基本使用 2.1下载 3. 整体架构 3.1 核心组件 3.2 从web.xml配置和模块对应角度 3.3 如何处理请求 4. 配置JVM参数 5. 附录 1. tomcat概述 1.1 概念 什么是tomcat Tomcat是一个开源、免费、轻量级的Web服务器。 Tomca…

科技快讯 | OpenAI首次向免费用户开放推理模型;特朗普与黄仁勋会面;雷军回应“10后小学生深情表白小米SU7”

不用开口:谷歌 AI 帮你致电商家,价格、预约一键搞定 谷歌在1月30日推出Search Labs中的“Ask for Me”实验性功能,用户可利用AI代替自己致电商家咨询价格和服务。该功能已与美汽车修理厂和美甲沙龙店合作,用户需加入Search Labs并…

帆软 FCA -业务分析师认证学习

帆软 FCA -业务分析师认证学习 认证概述 适合人群 企业中有需求管理、指标梳理、业务逻辑梳理、项目规划等需求的人员,想提升综合数据能力、推进数据应用落地的业务/IT骨干。 具体-FCA-业务分析理论 考试要求: FCA-业务分析理论考试- 费用&#xff1a…

Vue.js路由管理与自定义指令深度剖析

Vue.js 是一个强大的前端框架,提供了丰富的功能来帮助开发者构建复杂的单页应用(SPA)。本文将详细介绍 Vue.js 中的自定义指令和路由管理及导航守卫。通过这些功能,你可以更好地控制视图行为和应用导航,从而提升用户体验和开发效率。 1 自定义指令详解 1.1 什么是自定义…

Maya软件安装步骤与百度网盘链接

软件简介: MAYA软件是Autodesk旗下的著名三维建模和动画软件。maya软件功能更为强大,体系更为完善,因此国内很多的三维动画制作人员都开始转向maya,maya软件已成为三维动画软件的主流。 百度网盘链接: https://pan.baidu.com/s…

kamailio的部分模块的解释及代码示例【文章由DeekSeek大模型提供】

以下是 Kamailio 中这些模块的详细说明及示例代码: 1. tls.so 作用:提供 TLS 支持,用于加密 SIP 通信。示例:loadmodule "tls.so" modparam("tls", "certificate", "/etc/kamailio/tls/serve…

深入理解linux中的文件(上)

1.前置知识: (1)文章 内容 属性 (2)访问文件之前,都必须打开它(打开文件,等价于把文件加载到内存中) 如果不打开文件,文件就在磁盘中 (3&…

一个用于测试的 HL7 Server

说明 一个用于测试的 HL7 Server。在过NIST的认证时,需要演示检验数据通过HL7进行传输,所以写了这工具。 HL7的消息解析和编码使用了NHapi。包含两个服务: ReceiveServiceSendService 这2个服务都继承自 BaseService public class BaseSe…

使用 Go 和 gqlgen 实现 GraphQL API:实战指南

使用 Go 和 gqlgen 实现 GraphQL API:实战指南 在本文中,我将分享如何使用 Go 语言和 gqlgen 框架实现一个完整的 GraphQL API。我们将构建一个包含用户、文章和评论功能的博客系统 API。 技术栈 Gogqlgen (GraphQL 框架)MySQL (数据存储)Redis (缓存…

matlab快速入门(2)-- 数据处理与可视化

MATLAB的数据处理 1. 数据导入与导出 (1) 从文件读取数据 Excel 文件:data readtable(data.xlsx); % 读取为表格(Table)CSV 文件:data readtable(data.csv); % 自动处理表头和分隔符文本文件:data load(data.t…

洛谷题目 P5994 [PA 2014] Kuglarz 题解 (本题较难)

题目传送门: P5994 [PA 2014] Kuglarz - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 前言: 本题涉及到最小生成树中的 kruskal 算法和并查集算法,图论基础概念两大知识点,瞎按对莱索没有学过图论的或最小生成树的可能会对这道…

消息队列篇--通信协议篇--网络通信模型(OSI7层参考模型,TCP/IP分层模型)

一、OSI参考模型(Open Systems Interconnection Model) OSI参考模型是一个用于描述和标准化网络通信功能的七层框架。它由国际标准化组织(ISO)提出,旨在为不同的网络设备和协议提供一个通用的语言和结构,以…

C# Winform制作一个登录系统

using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace 登录 {p…

10.7 LangChain Models深度解析:解锁大模型集成与调优的全景攻略

LangChain Models深度解析:解锁大模型集成与调优的全景攻略 关键词: LangChain Models模块、大模型集成、LLM调用优化、多模型管理、本地模型部署 一、Models模块的定位:大模型应用的“中央调度器” 传统开发的痛点: 碎片化集成:每个模型需单独编写适配代码性能黑洞:缺…