Go 语言初学实践(3)
这几天一直在写个小东西,基本也做完了。抽点时间贴段代码继续这个系列。
我写的 http server 在支持断点续传时碰到个小的算法问题。就是我希望用户在完整下载完一次指定文件后,就让这个文件 URL 失效。而如果用户不断的从中间开始分段下载的话,很难从统计下载字节数来判定整个文件是否下载完一次。
我希望把下载完一次的标准定为,文件的每个字节都至少被请求一次。这个问题用线段树来实现最为贴切。当然还会有各种其它方案,就不展开讨论了。
这里的代码有很大的优化余地,但是就具体应用来说,性能方面也足够了。严谨点来说,我在服务器上额外增加了一些判断,防止被恶意攻击。比如如果分段太多(恶意的每间隔一个字节请求一个字节)对于大文件会导致这个数据结构占据过多内存。这时直接掐断服务即可,这里不展开讨论。
Comments
Posted by: dummy | (7) April 4, 2012 01:24 PM
Posted by: liuzhi | (6) May 3, 2011 09:27 AM
Posted by: wstc | (5) March 14, 2011 04:31 PM
Posted by: dark | (4) March 12, 2011 05:17 PM
Posted by: edisonH | (3) March 10, 2011 11:46 PM
Posted by: Cloud | (2) March 9, 2011 09:05 PM
Posted by: fcicq | (1) March 9, 2011 05:49 PM