文件夾同步算法概述
以前爲公司的產品完成過此功能,總的實現有點複雜,這裏說一下大概的算法.
1) 掃描本地同步目錄,記錄目錄下所有文件.
2)掃描遠程同步目錄,記錄目錄下所有文件,併發送到本地端.
3) 不分大小寫的排序本地/遠程同步目錄的文件列表。
4) 通過歸併比較,得到四組文件:本地僅有的文件,遠程僅有的文件,本地新的文件,遠程新的文件。
5) 根據用戶的選項,傳輸這四組文件。
對於處理大的文件夾(3萬以上),這裏存在幾個瓶頸:
1) 發送遠程同步目錄文件信息到本地,由於底層arm的緩衝區大小有限,過多的文件數據,會導致arm溢滿,導致session中斷,所以一次最多發送遠程同步目錄的文件5000個,大於5000的分多次發送.
2) 不分大小寫的排序,之前找的csdn上一個貼子的算法,速度極慢,後來用的是<<effect stl>>一書提供的例子,快得多了。
3) 排序:MFC用的STL排序函數用的就是快速排序,其最差速度爲n*n, 所以碰到某些數據速度極慢,而SGI的排序函數
用的是混合排序,最差速度是n*logn,所以無論何種數據,速度都會很快.
1) 掃描本地同步目錄,記錄目錄下所有文件.
2)掃描遠程同步目錄,記錄目錄下所有文件,併發送到本地端.
3) 不分大小寫的排序本地/遠程同步目錄的文件列表。
4) 通過歸併比較,得到四組文件:本地僅有的文件,遠程僅有的文件,本地新的文件,遠程新的文件。
5) 根據用戶的選項,傳輸這四組文件。
對於處理大的文件夾(3萬以上),這裏存在幾個瓶頸:
1) 發送遠程同步目錄文件信息到本地,由於底層arm的緩衝區大小有限,過多的文件數據,會導致arm溢滿,導致session中斷,所以一次最多發送遠程同步目錄的文件5000個,大於5000的分多次發送.
2) 不分大小寫的排序,之前找的csdn上一個貼子的算法,速度極慢,後來用的是<<effect stl>>一書提供的例子,快得多了。
3) 排序:MFC用的STL排序函數用的就是快速排序,其最差速度爲n*n, 所以碰到某些數據速度極慢,而SGI的排序函數
用的是混合排序,最差速度是n*logn,所以無論何種數據,速度都會很快.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
健康碼—7天,支付寶“健康碼”怎樣從杭州跑遍全國!有人連續30小時沒閤眼
雲棲號資訊小哥
2021-01-26 16:52:56
軟件開發中原生開發與H5開發和混合開發的區別
雲棲號資訊小哥
2020-07-30 16:34:52
IntelliJ IDEA構建多Module項目及部署到Tomcat
摩壳佬卡佛特
2020-07-08 12:17:40
面向接口編程----思維
dwj_daiwenjie
2020-07-08 10:29:15
官宣:傳智播客將於7月11日舉辦2020年夏季課程產品發佈會
传智播客官方博客
2020-07-08 09:26:22
restful(一) 簡介
疯狂打码中
2020-07-08 07:56:25
如何成爲安卓軟件開發工程師?
小枫vip
2020-07-08 04:48:59
基於jdk8的全新實用時間工具類
Spark4J
2020-07-08 02:57:40
淘寶助理的sqlite3數據庫解密
ufo2006
2020-07-07 19:52:11
delphi 二維碼示例,支持d7,d2010及更高版本
ufo2006
2020-07-07 19:52:11
delphi2007 Tstringlist的新增屬性 StrictDelimiter
ufo2006
2020-07-07 19:52:10
delphi xe10 TNetHTTPClient 中文亂碼 utf-8的解碼
ufo2006
2020-07-07 19:52:07
asphyre pxl canvas的常用函數介紹
ufo2006
2020-07-07 19:52:07
delphi用indy實現php後臺的文件上傳下載
ufo2006
2020-07-07 19:52:05