精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Figma 在協(xié)同編輯中使用的順序一致性算法: Fractional indexing

開發(fā) 前端
在多人同時操作同層級的多個圖形的順序時,需要保證用戶的意圖能保留,不會被其他用戶的操作覆蓋丟棄,且所有用戶最終的順序是一致的。為解決這個問題,F(xiàn)igma 使用了一種名為 Fractional Indexing 的簡單算法。

大家好,我是前端西瓜哥。

Figma 支持多人協(xié)同,那它是如何做到順序一致性的呢?

在多人同時操作同層級的多個圖形的順序時,需要保證用戶的意圖能保留,不會被其他用戶的操作覆蓋丟棄,且所有用戶最終的順序是一致的。

為解決這個問題,F(xiàn)igma 使用了一種名為 Fractional Indexing 的簡單算法。

Fractional indexing 的原理

Fractional Indexing,直譯的話,是小數(shù)索引。

該算法的原理并不復雜。

圖形對象會使用 index 屬性表示順序,記錄自己在同級圖形中的位置。

index 的值為 0 到 1 之間的 64 位浮點數(shù),不包括 0 和 1。

出于減少體積的考慮,figma 會丟掉前面的 0.,并把剩余的小數(shù)部分數(shù)字轉換成 ASCII 中的可打印字符(共 95個,表達為 95 進制數(shù))。

不能為 0 和 1, 是因為如果給某個圖形設置了 0 或 1,這個圖形的左側或右側添加的圖形的 index 就會超出了 0 到 1 的范圍。

當往兩個圖形之間插入新的節(jié)點時,我們會取這兩個圖形 index 的中點。

比如我們要在索引值分別為 0.3 和 0.4 的圖形插入圖形,這個圖形的索引值會取中間值 0.35。

移動圖形同理。

但在實現(xiàn)這個算法的時候,你需要注意兩個問題。

精度問題

首先是精度問題。

說到取中間值,容易聯(lián)想到二分查找。

二分查找效率很高,時間復雜度是 O(logn),是因為不管數(shù)據(jù)規(guī)模多大,它 每一次查找都會直接將數(shù)據(jù)量減半,給你打骨折。

index 使用的雙浮點數(shù),能表示的二進制小數(shù)部分位數(shù)為 52 位,每次二分就是進行 位右移操作,會用掉一個精度。

假設我們不斷地往 0.3 到 0.4 的區(qū)間靠近 0.3 的那邊插入新圖形,我們會看到 index 非??斓亟咏?0.3,最后因為精度用完,再也無法二分。

const getMid = (a, b) => (a + b) / 2;

const left = 0.3
let right = 0.4

for (let i = 0; i <= 50; i++) {
  right = getMid(left, right);
  console.log(right);
}

上面的代碼在 50 次左右就將精度耗盡了。

這種是很極端的場景,一般正常的用戶操作不會出現(xiàn),F(xiàn)igma 并不打算處理這種情況的。

字符串表示法

當然精度問題是有辦法解決的,那就是用無限精度的數(shù)據(jù)類型:字符串。

該算法使用 "0" 到 "9" 的字符串表示索引,并通過字典序作為排序依據(jù)。

空字符表示最小值,null 表示最大值。

  • 計算中點會做舍入,盡量不占用更多的位數(shù)。

比如 "3" 和 "6" 的中點是 "5",而不是 "45"。但 "3" 和 “4” 因為太靠近,只能得到 "35"。

  • 如果是空字符,會等價于 "0",如果是 null,等價于 "10"(會比 "9" 大)。
  • 如果有前綴相同部分,取后面不同部分計算中點,再拼回去。

假如兩個相鄰圖形的 index 分別是  "123" 和 "1234"。

我們會取后面不同的部分 ""(表示 0) 和 "4",取中點 "2",然后添加回相同前綴 "123",得到我們需要的新索引 "1232"。

另外,對比 "123" 和 "123004" 時,"123" 要補全后綴零為 "12300"。

我們來看看效果。

使用這種方式,對 "3" 和 "4" 進行 1000 次的二分,因為突破了精度限制,我們會得到非常非常長的字符串。

很長,通常通過編碼處理精簡,這里就不過多介紹了。

沖突問題

最后是沖突問題。

如果耿直地計算中點,那當多個客戶的都同時往兩個節(jié)點之間插入圖形,同步后就會出現(xiàn)多個圖形的 index 相同的場景。

對此,我們會 在中間值的基礎上,加上一個隨機的偏移值,這樣多個客戶端之間的沖突概率就非常的低。

但非常極端的情況下,沖突還是可能發(fā)生的,這種情況下就需要作為 中心權威的服務端去做修正 了,進行微小偏移,且和其他索引值不沖突。

結尾

Fractional Indexing 的優(yōu)點是實現(xiàn)簡單,不需要 CRDT 那種墓碑機制,要保留大量無用的元數(shù)據(jù)。

缺點是極端場景 index 的長度很長,有精度不夠導致二分失敗的邊緣場景(可用字符串解決),以及對圖形編輯器并無大礙的交錯問題(兩用戶分別輸入 "123" 和 "ABC",同步后可能會得到 "1A2B3C",而不是 "123ABC")。

責任編輯:姜華 來源: 前端西瓜哥
相關推薦

2024-06-17 09:01:14

2021-02-05 08:00:48

哈希算法?機器

2025-09-08 07:25:16

2022-03-22 09:54:22

Hash算法

2017-07-25 14:38:56

數(shù)據(jù)庫一致性非鎖定讀一致性鎖定讀

2019-10-11 23:27:19

分布式一致性算法開發(fā)

2021-08-13 07:56:13

Raft算法日志

2022-11-10 07:49:09

hash算法代碼

2020-03-16 11:55:28

PaxosRaft協(xié)議

2020-07-20 08:30:37

算法哈希分布式系統(tǒng)

2021-07-27 08:57:10

算法一致性哈希哈希算法

2016-12-19 18:41:09

哈希算法Java數(shù)據(jù)

2022-12-14 08:23:30

2021-09-18 08:54:19

zookeeper一致性算法CAP

2021-02-02 12:40:50

哈希算法數(shù)據(jù)

2021-02-04 06:30:26

Python編程語言

2018-03-13 08:20:48

區(qū)塊鏈數(shù)據(jù)安全

2023-12-12 08:00:50

節(jié)點哈希算法

2018-07-05 09:41:08

一致性哈希算法

2019-11-01 09:13:37

算法哈希緩存
點贊
收藏

51CTO技術棧公眾號

国产美女精品免费电影| 亚洲人成毛片在线播放| 和岳每晚弄的高潮嗷嗷叫视频| 国产美女免费视频| 999在线观看精品免费不卡网站| 亚洲高清免费观看高清完整版| 精品久久一二三| 超碰国产在线观看| 国产69精品一区二区亚洲孕妇| 欧美在线免费视频| 希岛爱理中文字幕| 欧美色资源站| 制服丝袜激情欧洲亚洲| 日韩国产欧美亚洲| 成人影院在线看| 久久综合av免费| 999视频在线免费观看| 欧美精品一二三四区| 午夜精品毛片| 一本色道久久综合狠狠躁篇怎么玩| 欧美专区第二页| 精品日韩视频| 精品久久久久久国产91| 天堂av免费看| 视频福利在线| 国产成人av电影在线播放| 国产精品久久久久久久久久久久久 | 不卡av电影在线观看| 91精品人妻一区二区| 在线精品国产亚洲| 欧美一级夜夜爽| 欧美日韩中文不卡| 日韩性xxx| 欧美日韩国产一区二区三区| 国产精品igao激情视频| 幼a在线观看| 国产日韩欧美综合在线| 国内一区在线| 欧美综合视频在线| 国产成人精品免费| 亚洲一区二区三区在线免费观看 | av在线最新| 中文字幕亚洲视频| 亚洲美女搞黄| av基地在线| 国产精品日韩成人| 亚洲精品乱码视频| 99中文字幕一区| 中文字幕巨乱亚洲| 日韩精品久久久免费观看| 嫩草精品影院| 国产日韩精品一区二区三区| 青青草原亚洲| 国产在线资源| 国产精品美女久久久久久久久久久 | 性感美女久久精品| 男女猛烈激情xx00免费视频| 黄色羞羞视频在线观看| 亚洲午夜私人影院| 亚洲 自拍 另类小说综合图区| 黄色美女视频在线观看| 亚洲一区二区四区蜜桃| 欧美一级免费播放| 黄色视屏在线免费观看| 粉嫩av一区二区三区免费野| 日本成年人网址| 自拍偷自拍亚洲精品被多人伦好爽 | 中文字幕日韩综合av| 亚洲一二三精品| 97精品国产一区二区三区| 久久久精品在线| 久热精品在线观看| 亚洲精品影视| 国产成人黄色av| 91亚洲精品国偷拍自产在线观看| 国产剧情一区二区三区| 国产精品久久亚洲7777| 亚洲色图 校园春色| 久久久777精品电影网影网| 亚洲在线欧美| 色综合999| 欧美日韩在线一区| 国产一伦一伦一伦| 国产精品xxx在线观看| 亚洲区免费影片| 亚洲xxxx3d动漫| 亚洲欧美清纯在线制服| 国产精品普通话| www.97av| 欧美经典三级视频一区二区三区| 潘金莲一级淫片aaaaa免费看| 欧美人与禽猛交乱配| 91国偷自产一区二区三区成为亚洲经典 | 麻豆精品国产传媒mv男同 | 五月婷婷丁香综合网| 国产一区二区av在线| 日韩av在线直播| 青青青视频在线免费观看| 激情一区二区| 国产日韩中文在线| 日本免费一区视频| 国产精品女同一区二区三区| 国产精品国三级国产av| 亚洲精品国产嫩草在线观看| 精品国产一区二区在线观看| 操她视频在线观看| 一区二区三区成人精品| 国产在线播放不卡| 飘雪影视在线观看免费观看| 亚洲美女屁股眼交| 亚洲一区在线不卡| 日韩欧美美女在线观看| 欧美xxxx综合视频| 欧美日韩 一区二区三区| 粉嫩高潮美女一区二区三区| 亚洲欧洲一二三| 擼擼色在线看观看免费| 日韩欧美123| 99久久99久久精品免费| 国产精品资源| 国产精品日韩欧美一区二区三区| 日本在线免费看| 色妹子一区二区| 成人手机在线免费视频| 亚洲精华国产欧美| 亚洲精品女av网站| 免费av不卡| 欧美系列日韩一区| 在线 丝袜 欧美 日韩 制服| 亚洲天堂久久| dy888夜精品国产专区| 秋霞午夜理伦电影在线观看| 在线观看免费一区| 成人影视免费观看| 国产日韩视频| 免费久久久一本精品久久区| 97在线超碰| 欧美精品一区二区久久久| 久久久久久天堂| 国产精品66部| 日韩欧美一级在线| 亚洲一区二区三区在线免费| 久久深夜福利免费观看| 国产三级小视频| 亚洲欧洲中文日韩久久av乱码| 亚洲黄色小视频在线观看| 欧美偷拍综合| 国产免费一区视频观看免费| 国产黄色在线| 欧美亚洲精品一区| 婷婷综合在线视频| 麻豆精品久久精品色综合| 一区二区三区我不卡| 亚洲青青一区| 欧美xxxx18性欧美| 女人18毛片水真多18精品| 亚洲国产一区二区三区青草影视 | 久久精品一区八戒影视| 国产三级日本三级在线播放| 国内精品伊人久久久| 国产精品久久二区| 免费在线观看黄色网| 91精品国产综合久久香蕉的特点| 国产大学生自拍| 成人性生交大片免费看中文| 成人免费毛片网| 精品久久国产| 亚洲综合自拍一区| heyzo高清中文字幕在线| 精品无人区乱码1区2区3区在线| 欧美日韩综合一区二区三区| 国产精品久久看| 中文字幕永久免费| 国产日韩欧美一区| 日韩亚洲不卡在线| 国产视频一区二| 高清亚洲成在人网站天堂| 你懂的在线播放| 91精品国产欧美一区二区18| 欧洲猛交xxxx乱大交3| 99精品偷自拍| 成人日韩在线视频| 日韩一区二区久久| 亚洲自拍三区| 九九热播视频在线精品6| 国产精品久久久| 中日韩高清电影网| 亚洲欧美激情四射在线日| 国产毛片在线视频| 精品人伦一区二区三区蜜桃网站| 中文字幕丰满孑伦无码专区| 国产最新精品精品你懂的| 国产69精品久久久久久久| 成人综合专区| 国内视频一区| 亚洲综合资源| 欧美中文字幕视频| 99久久精品免费观看国产| 亚洲精品中文字| 午夜精品无码一区二区三区| 91黄色激情网站| 日产欧产va高清| 亚洲欧美在线视频观看| 中文字幕一区二区人妻在线不卡| 国产一区二区在线看| 免费看a级黄色片| 亚洲黄色精品| xxxxxx在线观看| 日本高清免费电影一区| 精品国产免费久久久久久尖叫| 四虎精品永久免费| 国产成人精品电影久久久| 日皮视频在线观看| 日韩在线观看免费网站| 男女污污视频在线观看| 欧美刺激脚交jootjob| 中文字幕有码视频| 日韩欧美极品在线观看| 精品无码一区二区三区电影桃花 | 成人性生活视频免费看| 999成人精品视频线3| 欧美日韩亚洲一区二区三区四区| 在线播放一区二区精品视频| 91老司机在线| 欧美日韩免费电影| 国产精品jizz在线观看麻豆| 成人美女视频| 91精品国产高清久久久久久| 精精国产xxxx视频在线中文版 | 国产精品夜夜夜爽张柏芝| 菠萝蜜一区二区| 日韩欧美国产二区| 久久不见久久见国语| 久久久久网址| 天堂99x99es久久精品免费| 国产精品二区三区四区| 91精品国产自产精品男人的天堂 | 成人在线视频免费观看| 日产精品高清视频免费| 国产欧美一区二区三区精品观看| 欧美成人dvd在线视频| 亚洲第一福利专区| 久久伦理网站| 九九热线有精品视频99| 欧美午夜精品久久久久久蜜| 欧美猛男同性videos| 免费成人av网站| 国产精品亚洲人成在99www| 欧美激情一区二区三区在线视频| 美女扒开腿让男人桶爽久久动漫| 国产一区二区三区四区hd| 欧美91在线| 日本一区二区久久精品| 欧美大黑bbbbbbbbb在线| 宅男在线精品国产免费观看| 久久精品影视| 国产欧美精品aaaaaa片| 99精品国产福利在线观看免费| 一二三四视频社区在线| 麻豆成人精品| 三级a在线观看| 黄一区二区三区| 国产吃瓜黑料一区二区| 成人av资源站| 无码人妻精品一区二区中文| 中文字幕精品一区二区精品绿巨人| 超碰人人干人人| 亚洲美女屁股眼交| 国产成人免费观看视频| 欧美亚洲综合另类| 国产黄色美女视频| 亚洲黄色有码视频| av在线免费一区| 精品中文字幕在线| 日韩影院在线| 成人高清视频观看www| 9l视频自拍蝌蚪9l视频成人| 美乳视频一区二区| 91综合网人人| 奇米精品一区二区三区| 日韩高清在线不卡| 色综合久久久无码中文字幕波多| 94色蜜桃网一区二区三区| 国产真人真事毛片视频| 亚洲一区二区五区| 羞羞色院91蜜桃| 亚洲成人av资源网| 一本一道波多野毛片中文在线| 欧美大片va欧美在线播放| 桃色av一区二区| 成人字幕网zmw| 亚洲警察之高压线| 国产精品88久久久久久妇女| 午夜在线视频观看日韩17c| 亚洲精品永久视频| 久久久久一区二区三区四区| 久久久久久久久久久久久女过产乱| 精品久久久一区二区| 国产露脸国语对白在线| 亚洲欧美第一页| 欧洲在线视频| 国产一区视频在线| 美女亚洲一区| 日本一本中文字幕| 狠狠色丁香久久婷婷综合_中| 亚洲专区区免费| 一区二区三区高清| 在线黄色av网站| 亚洲欧美日韩一区二区在线| 超清av在线| 亚洲专区在线视频| heyzo久久| 一本大道熟女人妻中文字幕在线| 国产综合色视频| 免费成人美女女在线观看| 色婷婷综合久久久久中文一区二区 | 性欧美精品一区二区三区在线播放| 亚洲精品视频一二三| 久久久久综合| 亚洲人人夜夜澡人人爽| 亚洲一级在线观看| 精品二区在线观看| 日日噜噜噜夜夜爽亚洲精品 | 99国产在线视频| 天天综合一区| 超碰超碰在线观看| 国产三级久久久| 国产99久久久久久免费看| 精品无人区乱码1区2区3区在线| av午夜在线观看| 国产在线一区二区三区欧美 | 国产精品理论在线观看| 国产熟妇一区二区三区四区| 日韩福利视频在线观看| av资源网在线播放| 国产伦精品一区二区三区在线| 综合久久婷婷| av在线天堂网| 五月天网站亚洲| 五月婷婷激情在线| 97精品国产97久久久久久春色| 9国产精品午夜| 免费国产黄色网址| 不卡的av中国片| 亚洲第一在线播放| 亚洲精品国产成人| 涩涩涩在线视频| 日本高清不卡一区二区三| 丝袜美腿亚洲一区二区图片| 日本成人免费视频| 精品视频全国免费看| 日本不卡三区| 超碰97在线资源| 99riav1国产精品视频| 中文字幕一区二区三区人妻不卡| 精品国产老师黑色丝袜高跟鞋| 亚欧在线观看视频| 日韩暖暖在线视频| 成人情趣视频| 亚洲三级在线视频| 午夜欧美大尺度福利影院在线看| 亚洲美女性生活| 欧美一级片在线播放| 欧美日韩激情| 亚洲色图欧美自拍| 亚洲国产一区二区三区| 欧美日韩影视| 成人国内精品久久久久一区| 午夜欧美视频| aa片在线观看视频在线播放| 欧洲生活片亚洲生活在线观看| 欧美日本一道| 国产成人免费电影| 久久久一二三| 国产一二三区精品| 日韩av在线网址| 欧美一级在线| 69sex久久精品国产麻豆| 国产网站一区二区| 国产99久久九九精品无码免费| 性欧美办公室18xxxxhd| 成人直播大秀| 午夜av免费看| 3d成人动漫网站| 蜜桃视频m3u8在线观看| 亚洲欧洲精品一区二区| 白白色亚洲国产精品| 一二区在线观看| 欧美亚洲视频一区二区| 91精品国产91久久久久久黑人| 黑森林av导航| 欧美精品 日韩| 最新欧美色图| 99re6这里有精品热视频| 国产丝袜欧美中文另类| 高潮毛片7777777毛片| 国产精品久久久av| 在线精品一区| 神马午夜精品91| 国产一区二区动漫|