【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.pswp.cn/web/67660.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/67660.shtml
英文地址,請注明出處:http://en.pswp.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模塊的定位:大模型應用的“中央調度器” 傳統開發的痛點: 碎片化集成:每個模型需單獨編寫適配代碼性能黑洞:缺…