日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

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

來源: 責(zé)編: 時間:2024-03-27 09:26:22 227觀看
導(dǎo)讀大家好,我是前端西瓜哥。Figma 支持多人協(xié)同,那它是如何做到順序一致性的呢?在多人同時操作同層級的多個圖形的順序時,需要保證用戶的意圖能保留,不會被其他用戶的操作覆蓋丟棄,且所有用戶最終的順序是一致的。為解決這個問

7ro28資訊網(wǎng)——每日最新資訊28at.com

大家好,我是前端西瓜哥。7ro28資訊網(wǎng)——每日最新資訊28at.com

Figma 支持多人協(xié)同,那它是如何做到順序一致性的呢?7ro28資訊網(wǎng)——每日最新資訊28at.com

在多人同時操作同層級的多個圖形的順序時,需要保證用戶的意圖能保留,不會被其他用戶的操作覆蓋丟棄,且所有用戶最終的順序是一致的。7ro28資訊網(wǎng)——每日最新資訊28at.com

為解決這個問題,F(xiàn)igma 使用了一種名為 Fractional Indexing 的簡單算法。7ro28資訊網(wǎng)——每日最新資訊28at.com

Fractional indexing 的原理

Fractional Indexing,直譯的話,是小數(shù)索引。7ro28資訊網(wǎng)——每日最新資訊28at.com

該算法的原理并不復(fù)雜。7ro28資訊網(wǎng)——每日最新資訊28at.com

圖形對象會使用 index 屬性表示順序,記錄自己在同級圖形中的位置。7ro28資訊網(wǎng)——每日最新資訊28at.com

index 的值為 0 到 1 之間的 64 位浮點(diǎn)數(shù),不包括 0 和 1。7ro28資訊網(wǎng)——每日最新資訊28at.com

出于減少體積的考慮,figma 會丟掉前面的 0.,并把剩余的小數(shù)部分?jǐn)?shù)字轉(zhuǎn)換成 ASCII 中的可打印字符(共 95個,表達(dá)為 95 進(jìn)制數(shù))。7ro28資訊網(wǎng)——每日最新資訊28at.com

不能為 0 和 1, 是因?yàn)槿绻o某個圖形設(shè)置了 0 或 1,這個圖形的左側(cè)或右側(cè)添加的圖形的 index 就會超出了 0 到 1 的范圍。7ro28資訊網(wǎng)——每日最新資訊28at.com

7ro28資訊網(wǎng)——每日最新資訊28at.com

當(dāng)往兩個圖形之間插入新的節(jié)點(diǎn)時,我們會取這兩個圖形 index 的中點(diǎn)。7ro28資訊網(wǎng)——每日最新資訊28at.com

比如我們要在索引值分別為 0.3 和 0.4 的圖形插入圖形,這個圖形的索引值會取中間值 0.35。7ro28資訊網(wǎng)——每日最新資訊28at.com

7ro28資訊網(wǎng)——每日最新資訊28at.com

移動圖形同理。7ro28資訊網(wǎng)——每日最新資訊28at.com

但在實(shí)現(xiàn)這個算法的時候,你需要注意兩個問題。7ro28資訊網(wǎng)——每日最新資訊28at.com

精度問題

首先是精度問題。7ro28資訊網(wǎng)——每日最新資訊28at.com

說到取中間值,容易聯(lián)想到二分查找。7ro28資訊網(wǎng)——每日最新資訊28at.com

二分查找效率很高,時間復(fù)雜度是 O(logn),是因?yàn)椴还軘?shù)據(jù)規(guī)模多大,它 每一次查找都會直接將數(shù)據(jù)量減半,給你打骨折。7ro28資訊網(wǎng)——每日最新資訊28at.com

7ro28資訊網(wǎng)——每日最新資訊28at.com

index 使用的雙浮點(diǎn)數(shù),能表示的二進(jìn)制小數(shù)部分位數(shù)為 52 位,每次二分就是進(jìn)行 位右移操作,會用掉一個精度。7ro28資訊網(wǎng)——每日最新資訊28at.com

假設(shè)我們不斷地往 0.3 到 0.4 的區(qū)間靠近 0.3 的那邊插入新圖形,我們會看到 index 非??斓亟咏?0.3,最后因?yàn)榫扔猛?,再也無法二分。7ro28資訊網(wǎng)——每日最新資訊28at.com

const getMid = (a, b) => (a + b) / 2;const left = 0.3let right = 0.4for (let i = 0; i <= 50; i++) {  right = getMid(left, right);  console.log(right);}

上面的代碼在 50 次左右就將精度耗盡了。7ro28資訊網(wǎng)——每日最新資訊28at.com

7ro28資訊網(wǎng)——每日最新資訊28at.com

這種是很極端的場景,一般正常的用戶操作不會出現(xiàn),F(xiàn)igma 并不打算處理這種情況的。7ro28資訊網(wǎng)——每日最新資訊28at.com

字符串表示法

當(dāng)然精度問題是有辦法解決的,那就是用無限精度的數(shù)據(jù)類型:字符串。7ro28資訊網(wǎng)——每日最新資訊28at.com

該算法使用 "0" 到 "9" 的字符串表示索引,并通過字典序作為排序依據(jù)。7ro28資訊網(wǎng)——每日最新資訊28at.com

空字符表示最小值,null 表示最大值。7ro28資訊網(wǎng)——每日最新資訊28at.com

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

比如 "3" 和 "6" 的中點(diǎn)是 "5",而不是 "45"。但 "3" 和 “4” 因?yàn)樘拷?,只能得?"35"。7ro28資訊網(wǎng)——每日最新資訊28at.com

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

假如兩個相鄰圖形的 index 分別是  "123" 和 "1234"。7ro28資訊網(wǎng)——每日最新資訊28at.com

我們會取后面不同的部分 ""(表示 0) 和 "4",取中點(diǎn) "2",然后添加回相同前綴 "123",得到我們需要的新索引 "1232"。7ro28資訊網(wǎng)——每日最新資訊28at.com

另外,對比 "123" 和 "123004" 時,"123" 要補(bǔ)全后綴零為 "12300"。7ro28資訊網(wǎng)——每日最新資訊28at.com

我們來看看效果。7ro28資訊網(wǎng)——每日最新資訊28at.com

使用這種方式,對 "3" 和 "4" 進(jìn)行 1000 次的二分,因?yàn)橥黄屏司认拗?,我們會得到非常非常長的字符串。7ro28資訊網(wǎng)——每日最新資訊28at.com

7ro28資訊網(wǎng)——每日最新資訊28at.com

很長,通常通過編碼處理精簡,這里就不過多介紹了。7ro28資訊網(wǎng)——每日最新資訊28at.com

沖突問題

最后是沖突問題。7ro28資訊網(wǎng)——每日最新資訊28at.com

如果耿直地計(jì)算中點(diǎn),那當(dāng)多個客戶的都同時往兩個節(jié)點(diǎn)之間插入圖形,同步后就會出現(xiàn)多個圖形的 index 相同的場景。7ro28資訊網(wǎng)——每日最新資訊28at.com

對此,我們會 在中間值的基礎(chǔ)上,加上一個隨機(jī)的偏移值,這樣多個客戶端之間的沖突概率就非常的低。7ro28資訊網(wǎng)——每日最新資訊28at.com

但非常極端的情況下,沖突還是可能發(fā)生的,這種情況下就需要作為 中心權(quán)威的服務(wù)端去做修正 了,進(jìn)行微小偏移,且和其他索引值不沖突。7ro28資訊網(wǎng)——每日最新資訊28at.com

結(jié)尾

Fractional Indexing 的優(yōu)點(diǎn)是實(shí)現(xiàn)簡單,不需要 CRDT 那種墓碑機(jī)制,要保留大量無用的元數(shù)據(jù)。7ro28資訊網(wǎng)——每日最新資訊28at.com

缺點(diǎn)是極端場景 index 的長度很長,有精度不夠?qū)е露质〉倪吘増鼍埃捎米址鉀Q),以及對圖形編輯器并無大礙的交錯問題(兩用戶分別輸入 "123" 和 "ABC",同步后可能會得到 "1A2B3C",而不是 "123ABC")。7ro28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-79607-0.htmlFigma 在協(xié)同編輯中使用的順序一致性算法: Fractional indexing

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 詳解SpringBoot錯誤處理

下一篇: 完美世界控股集團(tuán)入選新一批國家文化產(chǎn)業(yè)示范基地名單

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
一区二区冒白浆视频| 国产一区二区三区在线播放免费观看 | 久久久久一区二区| 久久久久久夜| 欧美日韩精品中文字幕| 国产精品外国| 亚洲第一在线综合在线| 一本久久精品一区二区| 欧美在线关看| 欧美极品影院| 国产日韩欧美不卡| 亚洲国产一区二区三区a毛片| 中日韩美女免费视频网址在线观看 | 国外视频精品毛片| 亚洲精选中文字幕| 欧美一区二区三区在线| 免费高清在线一区| 国产精品久久久久久久久久久久久| 黄色综合网站| 亚洲一区二区免费看| 老色批av在线精品| 国产精品久久久久久久app| 狠狠做深爱婷婷久久综合一区 | 99精品国产高清一区二区| 久久高清福利视频| 欧美日韩一区二区在线| 国语自产在线不卡| 亚洲视频欧美在线| 美日韩在线观看| 国产精品日日摸夜夜摸av| 亚洲欧洲精品一区二区三区 | 欧美激情综合亚洲一二区| 国产三级欧美三级日产三级99| 亚洲精品偷拍| 久久嫩草精品久久久精品| 国产精品久久久久久久久久直播| 亚洲黄色高清| 久久久激情视频| 国产精品露脸自拍| 亚洲精品一区二区在线| 久久蜜桃精品| 国产欧美一区二区三区久久人妖 | 国产精品免费一区二区三区在线观看 | 在线视频精品| 六月婷婷久久| 国产一区二区三区不卡在线观看| 这里只有精品视频| 欧美韩日一区| 尤物yw午夜国产精品视频明星| 午夜精品视频| 欧美日韩极品在线观看一区| 亚洲高清资源综合久久精品| 久久精品夜色噜噜亚洲a∨| 国产精品日韩专区| 宅男精品视频| 欧美日韩免费区域视频在线观看| 亚洲国产精品久久久久婷婷老年| 久久成人免费视频| 国产精品影音先锋| 亚洲一区二区精品在线观看| 欧美日韩国产色站一区二区三区 | 久久国产99| 国产日韩欧美高清免费| 亚洲女同在线| 欧美日韩理论| 99国产精品99久久久久久粉嫩| 欧美不卡一区| 亚洲高清视频一区| 老牛影视一区二区三区| 国内精品久久久久久| 欧美一区二区在线免费观看 | 一区二区三区国产在线观看| 欧美精选午夜久久久乱码6080| 最新中文字幕一区二区三区| 免费高清在线视频一区·| 亚洲电影在线免费观看| 久久三级福利| 伊人男人综合视频网| 久久人人精品| 亚洲第一综合天堂另类专| 麻豆精品传媒视频| 日韩午夜视频在线观看| 亚洲欧美清纯在线制服| 欧美成人综合一区| 禁断一区二区三区在线| 欧美亚洲一区| 国产一区二区三区成人欧美日韩在线观看 | 亚洲精品一区中文| 欧美极品在线播放| 日韩一级视频免费观看在线| 欧美金8天国| 99精品99久久久久久宅男| 国产欧美va欧美va香蕉在| 亚洲国产日韩欧美在线99| 久久精品国产久精国产爱| 国产午夜亚洲精品羞羞网站| 久久激情久久| 怡红院精品视频在线观看极品| 久久伊人亚洲| 亚洲黄网站黄| 欧美日韩精品欧美日韩精品 | 在线视频国产日韩| 欧美高清在线视频| 日韩一区二区精品| 国产精品毛片a∨一区二区三区| 校园春色国产精品| 精品91久久久久| 欧美电影美腿模特1979在线看| 99视频一区二区| 国产精品影视天天线| 久久久久久久久岛国免费| 亚洲日本激情| 国产精品精品视频| 久久成人精品一区二区三区| 在线观看欧美成人| 欧美日韩网址| 欧美在线视屏| 亚洲精品久久在线| 欧美激情视频一区二区三区不卡| 野花国产精品入口| 国产乱码精品1区2区3区| 久久久久久9999| 亚洲乱码视频| 国产视频欧美视频| 欧美成在线观看| 亚洲在线观看免费视频| 黄色成人免费观看| 欧美日韩成人在线播放| 亚洲欧美国产不卡| 亚洲国产成人久久| 国产精品久久久一区二区三区| 久久亚洲私人国产精品va媚药 | 免费视频一区二区三区在线观看| 一区二区三区国产精华| 国产综合色精品一区二区三区 | 亚洲国产婷婷香蕉久久久久久| 欧美性视频网站| 久久久久久久久久久一区| 9久草视频在线视频精品| 国产亚洲成av人片在线观看桃 | 欧美日韩黄视频| 久久精品一区四区| 一区二区三欧美| 在线高清一区| 国产精品对白刺激久久久| 老司机久久99久久精品播放免费| 亚洲综合色在线| 亚洲人成精品久久久久| 国产一区导航| 亚洲精品国产拍免费91在线| 快she精品国产999| 亚洲欧洲日本在线| 国产精品女人网站| 欧美不卡三区| 欧美在线电影| 亚洲午夜激情在线| 亚洲电影免费观看高清完整版| 国产精品美女| 欧美国产一区在线| 久久久999国产| 亚洲手机在线| 亚洲人成久久| 狠狠色狠狠色综合日日小说| 国产精品欧美风情| 欧美精品三级日韩久久| 久久免费视频在线观看| 亚洲在线第一页| 亚洲黄色在线看| 国产一区二区三区免费不卡 | 欧美在线播放视频| 宅男噜噜噜66一区二区66| 国内精品免费午夜毛片| 国产精品久久久久9999吃药| 欧美高清在线视频| 久久久久成人精品| 亚洲欧美另类中文字幕| 一区二区欧美日韩视频| 亚洲精品美女久久7777777| 国内精品美女在线观看| 国产日韩精品一区二区三区| 国产精品久线观看视频| 欧美日韩美女在线观看| 欧美不卡视频一区| 久久影音先锋| 久久久国产成人精品| 久久精品国产在热久久| 欧美专区第一页| 亚洲欧美一区二区原创| 亚洲性视频网址| 亚洲视频专区在线| 亚洲视屏一区| 亚洲一区二区三区在线看| 亚洲深夜福利视频| 一区二区三区国产| 亚洲午夜国产一区99re久久 | 欧美大秀在线观看| 欧美成人精品| 欧美高清在线精品一区| 欧美激情综合在线| 欧美日韩高清在线一区| 欧美日韩在线不卡一区| 欧美日韩免费一区| 欧美天堂在线观看| 国产精品国产三级国产普通话三级 |