面試經歷(一)雪花算法

uid生成方面

1:為什么用雪花算法

分布式ID的唯一性需要保證,同時需要做到

1:單調遞增

2:確保安全,一個是要能體現出遞增的單號,二一個不能輕易的被惡意爬出訂單數量

3:含有時間戳

4:高可用,低延遲

5:高QPS

2:雪花算法構成

0(符號位)41位(bits)的時間戳10位機器碼12位序列號,可以根據時間戳長短調整。

時間戳記錄的是毫秒數,最多表示69年。機器碼可以確保在多個服務器上生成ID的唯一性,如果跨機房部署,可以把10位拆成5位機房id+5位機器id。10個比特最多1024個機器。序列號是在時間相同是生成不同標識的,同一毫秒可以產生4096的ID。

3:時間回撥問題

沒問到,但是可以了解。

回撥時間小的時候,不生成ID,循環等待時間點到達。

或者給拓展位+1,或者在序列號中騰出一部分位置來標識。

美團和百度有解決的方案嗎,美團的leaf-snowflake:以“1+41+10+12”的方式組裝ID號,改動點為:將SnowFlake從本地jar包變成了獨立服務,并引入了Zookeeper來解決時鐘回撥問題

4:別的算法

百度UidGenerator是Java實現的,基于Snowflake算法的唯一ID生成器。UidGenerator以組件形式工作在應用項目中, 支持自定義workerId位數和初始化策略。

UUID:通用唯一識別碼。標準是32位的16進制數字,本地生成不依賴別的。但是不易存儲,長度太長,同時uuid無序,信息生成的時候基于MAC地址生成也可能暴露使用者的位置。

數據庫自增:設置步長

Redis實現:提供INCR或INCRBY這種自增原子命令,通過Redis單線程保證唯一性

MD5算法:用加鹽算法實現,加鹽算法意思是每個人在做菜的時候都會放不同的鹽,因此代表不重復的標識,可以通過UUID來實現,然后MD5算法就可以通過UUID+密碼來生成。

但MD5一是不支持分布式,同時已經在04年被破解了,可以采用更好的sha-256算法

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/76942.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76942.shtml
英文地址,請注明出處:http://en.pswp.cn/web/76942.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

基于GA遺傳優化TCN-BiGRU注意力機制網絡模型的時間序列預測算法matlab仿真

目錄 1.算法運行效果圖預覽 2.算法運行軟件版本 3.部分核心程序 4.算法理論概述 5.算法完整程序工程 1.算法運行效果圖預覽 (完整程序運行后無水印) 2.算法運行軟件版本 matlab2024b(提供軟件版本下載) 3.部分核心程序 (完整版代碼包…

深度強化學習 pdf 董豪| 馬爾科夫性質,馬爾科夫過程,馬爾科夫獎勵過程,馬爾科夫決策過程

深度強化學習 pdf 百度云 hea4 pdf 主頁 概念 馬爾可夫獎勵過程和價值函數估計的結合產生了在絕大多數強化學習方法中應用的核心結果——貝爾曼 (Bellman)方程。最優價值函數和最優策略可以通過求解貝爾曼方程得到,還將介紹三種貝爾曼 方…

驗證Kubernetes的服務發現機制

驗證Kubernetes的服務發現機制 文章目錄 驗證Kubernetes的服務發現機制[toc]一、驗證基于環境變量的服務發現機制 服務發現是讓客戶端能夠以固定的方式獲取到后端Pod訪問地址的機制。下面驗證環境變量和DNS這兩種機制。 一、驗證基于環境變量的服務發現機制 對于需要訪問服務…

FPGA系列之DDS信號發生器設計(DE2-115開發板)

一、IP核 IP(Intellectual Property)原指知識產權、著作權等,在IC設計領域通常被理解為實現某種功能的設計。IP模塊則是完成某種比較復雜算法或功能(如FIR濾波器、FFT、SDRAM控制器、PCIe接口、CPU核等)并且參數可修改的電路模塊&#xff0c…

Java單例模式詳解:實現線程安全的全局訪問點

精心整理了最新的面試資料和簡歷模板,有需要的可以自行獲取 點擊前往百度網盤獲取 點擊前往夸克網盤獲取 一、什么是單例模式? 單例模式(Singleton Pattern)是一種創建型設計模式,它保證一個類僅有一個實例&#xff…

JVM 生產環境問題定位與解決實戰(七):實戰篇——OSSClient泄漏引發的FullGC風暴

本文已收錄于《JVM生產環境問題定位與解決實戰》專欄,完整系列見文末目錄 引言 在前六篇博客中,我們系統性地學習了 JVM 生產環境問題定位與解決的全套工具鏈,涵蓋jps、jmap、jstat、jstack、jcmd 等基礎工具的使用技巧,深入剖析…

Spark集群搭建-spark-local

(一)安裝Spark 安裝Spark的過程就是下載和解壓的過程。接下來的操作,我們把它上傳到集群中的節點,并解壓運行。 1.啟動虛擬機 2.通過finalshell連接虛擬機,并上傳安裝文件到 /opt/software下 3.解壓spark安裝文件到/op…

Java 異常 SSLException: fatal alert: protocol_version 全解析與解決方案

在 Java 網絡通信中,SSLException: fatal alert: protocol_version 是典型的 TLS/SSL 協議版本不兼容異常。本文結合 Java 官方規范、TLS 協議標準及實戰經驗,提供體系化解決方案,幫助開發者快速定位并解決協議版本沖突問題。 一、異常本質&…

虛擬列表技術深度解析:原理、實現與性能優化實戰

虛擬列表技術深度解析:原理、實現與性能優化實戰 引言 在當今數據驅動的互聯網應用中,長列表渲染已成為前端開發的核心挑戰。傳統的一次性全量渲染方式在數據量超過千條時,往往導致頁面卡頓、內存飆升等問題。虛擬列表(Virtual L…

2025-04-20 李沐深度學習4 —— 自動求導

文章目錄 1 導數拓展1.1 標量導數1.2 梯度:向量的導數1.3 擴展到矩陣1.4 鏈式法則 2 自動求導2.1 計算圖2.2 正向模式2.3 反向模式 3 實戰:自動求導3.1 簡單示例3.2 非標量的反向傳播3.3 分離計算3.4 Python 控制流 硬件配置: Windows 11Inte…

Redis的使用總結

Redis 核心使用場景 緩存加速 高頻訪問數據緩存(如商品信息、用戶信息) 緩解數據庫壓力,提升響應速度 會話存儲 分布式系統共享 Session(替代 Tomcat Session) 支持 TTL 自動過期 排行榜/計數器 實時排序&#x…

富文本編輯器實現

🎨 富文本編輯器實現原理全解析 📝 基本實現路徑圖 #mermaid-svg-MO1B8a6kAOmD8B6Y {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-MO1B8a6kAOmD8B6Y .error-icon{fill:#552222;}#mermaid-s…

LeetCode熱題100——283. 移動零

給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。 請注意 ,必須在不復制數組的情況下原地對數組進行操作。 示例 1: 輸入: nums [0,1,0,3,12] 輸出: [1,3,12,0,0] 示例 2: 輸入: nums [0] 輸出:…

與Ubuntu相關命令

windows將文件傳輸到Ubuntu 傳輸文件夾或文件 scp -r 本地文件夾或文件 ubuntu用戶名IP地址:要傳輸到的文件夾路徑 例如: scp -r .\04.py gao192.168.248.129:/home/gao 如果傳輸文件也可以去掉-r 安裝軟件 sudo apt-get update 更新軟件包列表 sudo apt insta…

Kafka 在小流量和大流量場景下的順序消費問題

一、低流量系統 特點 消息量較少,吞吐量要求低。系統資源(如 CPU、內存、網絡)相對充足。對延遲容忍度較高。 保證順序消費的方案 單分區 單消費者 將消息發送到單個分區(例如固定 Partition 0),由單個…

小程序 GET 接口兩種傳值方式

前言 一般 GET 接口只有兩種URL 參數和路徑參數 一:URL 參數(推薦方式) 你希望請求: https://serve.zimeinew.com/wx/products/info?id5124接口應該寫成這樣,用 req.query.id 取 ?id5124: app.get(&…

小白學習java第14天(中):數據庫

1.DML data manage language數據庫管理語言 外鍵:外鍵是什么?就是對其進行表與表之間的聯系,就是使用的鍵進行關聯! 方法一:我們在數據庫里面就對其進行表與表之間的連接【這種是不建議的,我不太喜歡就是將數據里面弄…

NO.95十六屆藍橋杯備戰|圖論基礎-單源最短路|負環|BF判斷負環|SPFA判斷負環|郵遞員送信|采購特價產品|拉近距離|最短路計數(C++)

P3385 【模板】負環 - 洛谷 如果圖中存在負環&#xff0c;那么有可能不存在最短路。 BF算法判斷負環 執?n輪松弛操作&#xff0c;如果第n輪還存在松弛操作&#xff0c;那么就有負環。 #include <bits/stdc.h> using namespace std;const int N 2e3 10, M 3e3 1…

K8s pod 應用

/** 個人學習筆記&#xff0c;如有問題歡迎交流&#xff0c;文章編排和格式等問題見諒&#xff01; */ &#xff08;1&#xff09;編寫 pod.yaml 文件 pod 是 kubernetes 中最小的編排單位&#xff0c;一個 pod 里包含一個或多個容器。 apiVersion: v1 # 指定api版本 kind…

Oracle創建觸發器實例

一 創建DML 觸發器 DML觸發器基本要點&#xff1a; 觸發時機&#xff1a;指定觸發器的觸發時間。如果指定為BEFORE&#xff0c;則表示在執行DML操作之前觸發&#xff0c;以便防止某些錯誤操作發生或實現某些業務規則&#xff1b;如果指定為AFTER&#xff0c;則表示在執行DML操作…