<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          TO-DO無(wú)后端待辦事項(xiàng)應(yīng)用

          聯(lián)合創(chuàng)作 · 2023-09-29 15:19

          一個(gè)無(wú)后端待辦事項(xiàng)應(yīng)用,數(shù)據(jù)用 LeanCloud 進(jìn)行同步。

          簡(jiǎn)介

          這是一個(gè)無(wú)后端的待辦事項(xiàng)應(yīng)用,數(shù)據(jù)用 LeanCloud 進(jìn)行同步,也是我的第三個(gè) iOS 項(xiàng)目。

          做這個(gè)項(xiàng)目的初衷是想比較全面地體現(xiàn)我的前后端水平,該同步算法從整理思路到實(shí)現(xiàn) 95% 的代碼(意為接近穩(wěn)定)花了兩周時(shí)間,除思路外沒有任何代碼可以參考(反正我是沒有找到...

          界面設(shè)計(jì)來(lái)源于 DO ,部分素材和界面為本人設(shè)計(jì)。

          該項(xiàng)目于 2016-12-29 日第一版開發(fā)完成,之前由于意外收錄可能有些朋友 clone 的是不穩(wěn)定版,還請(qǐng)重新下載一次。

          項(xiàng)目演示

          測(cè)試服務(wù)器

          為了方便大家觀察服務(wù)器的數(shù)據(jù),測(cè)試賬號(hào)已公開,要是有什么情況請(qǐng)通知我,(當(dāng)然萬(wàn)一發(fā)生了類似超額的情況我不一定會(huì)解決),另一方面會(huì)這樣做的主要原因是自己搭建的話可能比較麻煩。

          注:從 2016 年 12 月 31 日起,該項(xiàng)目中的所有的第三方 API Key 已經(jīng)換成測(cè)試賬號(hào)中的新秘鑰,且之前的 API Key 都被棄用。

          LeanCloud 賬號(hào)

          todotest

          Abcd123!@#

          七牛賬號(hào)(存放頭像)

          [email protected]

          Abcd123!@#

          高德

          高德 Key 要 BundleID,請(qǐng)各位自行配置,不用地圖也一樣。

          同步算法、思路等

          如果你對(duì)這個(gè)感興趣的話,請(qǐng)查看以下內(nèi)容,并對(duì)照相應(yīng)代碼進(jìn)行理解。

          相關(guān)代碼位于 SGSyncManager.m 和配置于 LeanCloud 云函數(shù)中的 nodejs 代碼。

          思路來(lái)源

          該同步思路來(lái)源于以下兩篇回答,并根據(jù)項(xiàng)目需求總結(jié)而來(lái)。

          服務(wù)端和各種客戶端(手機(jī)端,平板端,web端)怎樣進(jìn)行數(shù)據(jù)同步?

          Evernote 的同步方式是怎樣的?

          同步方式

          每一批次兩個(gè)并行隊(duì)列,每次最多同步X條數(shù)據(jù),超過(guò)X條下次進(jìn)行同步。

          每批同步分上傳和下載(與隊(duì)列不對(duì)應(yīng)),若上傳或下載數(shù)超過(guò)上限,則下一批次同步。

          同步類型

          1. 若本地沒有同步記錄,則將本地所有數(shù)據(jù)進(jìn)行上傳,并將服務(wù)器上所有的數(shù)據(jù)進(jìn)行下載(Incremental Sync)

          2. 若 lastSyncTimeOnServer = lastSyncTimeOnClient,表明服務(wù)器數(shù)據(jù)沒有變化,則僅需要上傳本地修改過(guò)的數(shù)據(jù)和新增的數(shù)據(jù)(Send Changes)

          3. 若 lastSyncTimeOnServer > lastSyncTimeOnClient,則進(jìn)行全量同步,先對(duì)比同步所有已有數(shù)據(jù),再將其他數(shù)據(jù)從服務(wù)器上下載(Full Sync)

          4. 其他情況進(jìn)行(Incremental Sync)

          注意事項(xiàng)

          1. 所有同步時(shí)間戳均以服務(wù)器時(shí)間為準(zhǔn),每次同步之前先獲取服務(wù)器的時(shí)間戳

          2. 對(duì)比同步規(guī)則:1.大版本同步小版本 2.版本相同的話,以線上數(shù)據(jù)為準(zhǔn)進(jìn)行覆蓋(另一種做法是建立沖突副本,根據(jù)本項(xiàng)目的實(shí)際情況不采用這種方式)

          異常情況

          以下幾種情況會(huì)影響同步時(shí)數(shù)據(jù)的原子性:

          1. 云函數(shù)返回之前掛掉:下次同步則為full sync,同時(shí)在對(duì)比時(shí)會(huì)將objectId賦值給本地對(duì)應(yīng)的待辦事項(xiàng)。

          2. 若在批次之間掛掉的話(上一批成功,下一批掛掉),這時(shí)需要在判斷同步類型時(shí),判斷上一次同步成功的記錄次數(shù),若次數(shù)超限,此次同步為full sync。

          同步難點(diǎn)

          1. 處理各種異常情況,保證數(shù)據(jù)的一致性和原子性

          2. 同步效率

          3. 分批同步

          同步流程

          同步穩(wěn)定性

          從我大致寫好同步功能(2016-6-20)到今天(2016-12-30)一共產(chǎn)生了 3300 條同步記錄,暫時(shí)沒有發(fā)現(xiàn)數(shù)據(jù)錯(cuò)誤的地方,如果各位發(fā)現(xiàn)這方面有什么問(wèn)題和 Bug 請(qǐng)一定提交 issue,非常感謝。

          同步記錄截圖:

          瀏覽 22
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产女人操逼视频 | 亚洲欧美第一页 | 综合在线一区 | 一级黄色片成年人电影 | A片激情视频 |