QQ邮箱上传超大文件速度怎么这么快,我上传一个三百多M的电影居然只要两秒钟,请问这是用的什么技术?

解决方案 »

  1.   

    我这边迅雷的下载速度只有300KB/s
      

  2.   

    130硬盘IO读写都是个问题。更不要说是上传。
    最近qq邮箱经常出一些问题倒是真的。
      

  3.   

    三百多M的文件,要HASH出MD5可能也不止两秒我觉得LZ是把快捷方式传了上去
      

  4.   

    应该是对比MD5..QQ服务器有备份.PS一下:硬盘IO的速度和带宽速度  现在应该是带宽速度快一些.
      

  5.   

    这是因为服务器上有这个文件了 别人上传过一次了。hash一样的话qq不会重新上传的。
      

  6.   

    存的MD5,直接检索MD5的吧。你到搜索引擎上搜东西不也用不着两秒,服务器性能和引擎程序员的水平还是要相信的。
      

  7.   

    有可能是在QQ的文件服务器上已经有你这个文件了,在它的服务器有记录,
    而你上传后他只是把那个文件弄个副本或者是直接让你这个文件的链接指向那个文件就可以了PS:文件只要没有改动过文件的内容,通过文件的MD5或者Has1是就能对比出相同的文件
      

  8.   

    你是否上传后重新上传的,或是腾讯做了判断,先在本地对文件进行一个检查,比如算一个哈希数、md5值,然后到服务器中,找md5值一样的文件,如果有。就不上传,只是用你的文件名做别名,给你个连接。等文件的引用连接全部都不存在,则删除服务器文件。
      

  9.   

    上传之前是先扫描 如果QQ服务器上存在此文件 就不用重复存储 直接发一个链接给你 指向服务器的文件 
    这么简单的问题 如果是通用的软件包 电影或者其他的 基本QQ服务器会有别人上传过 就不需要有人传第二次了 
    如果该文件服务器上没有 你是第一次上传 就很慢了 不会超过300K/s 就算我的迅雷最高可以几M/s
      

  10.   

    你就扯吧  wow客户端10G  你5G/s ?  就算网络有这么快你网卡硬盘也没这么快
      

  11.   

    电影文件可能都不做全文hash,只截取关键部分数据做hash,是可以达到2s做完然后对比的。
      

  12.   

    是很快!不过我的没有你这么快,是先扫描,再上传。
      我试了一下,436M的,不到10秒,完成扫描和上传(上传也就2,3秒)
      还有我们经常在qq上给好友传东西,也是很快的。
      至于程序么,我菜鸟一个, 刚学过c++,正接触c++++呢,呵呵。
      

  13.   

    最近发现QQ群中有一个功能,就是当天最热门的图片,那么这个图片如何比较是同一张呢,肯定还是MD5这些东东的作用,所以这里没有真实上传是可信的
      

  14.   

    不知道你们听过迅雷的离线下载没有?
    如果有真正需要的哥们,付点小费就可以搞定.我也是在一个博客看到的.
    http://hi.baidu.com/38809972/blog/item/ff98821b7413a10c8618bf87.html
      

  15.   

    16楼靠谱 转帖参考有时候我们通过QQ上传一个几百M的文件,竟然只用了几秒钟,从带宽上限制可以得出,实际上传文件是不可能的。实现的思路肯定是根据文件内容生成一个“唯一的标识符”,根据这个标识符去判断服务器上是否已经存在这个文件,如果存在,则不需要再次上传。但是根据文件内容生成“唯一的标识符”,效率会不会有问题呢。于是用php做个最简单的测试:以下是代码片段:
    <?php 
    include("./Timer.class.php");//timer类用于统计程序运行时间 
    Timer::getInstance()->start();//开始计时 
    $big_string = file_get_contents("./test.zip");//读取文件内容 
    echo "文件大小是:".strlen($big_string)/(1024*1024)."MB<BR>";//输出文件大小 
    echo md5($big_string)."<BR>";//输出MD5后的字符串 
    Timer::getInstance()->printTime();//输出耗费的时间 
    ?>输出结果如下:以下是引用片段:文件大小是:487.146002769MB 
    c9cb9487b71fa2130b5d1110a2819e34 
    Timer NO:1 Did something in 3.28920602798 seconds;
    可以看到,MD5一个487M的文件,只用了3.29秒,比我预想的快了许多。因此,通过“md5('文件内容')”生成“唯一标识符”的方法是完全可行的,效率不会存在问题,我想上面的方法肯定还有优化的空间。QQ的大文件快速上传估计就是通过这样的方式实现的。在上传大文件的时候,先查询下服务器看看文件的“唯一标识符”是否存在,只要这个标识符存在,就不用再上传文件了。扩展:1  由于md5的特性,“md5('文件内容')”也可以用于校验“文件的完整性”和“内容是否有被修改过”,这也是我们下载一些软件时,在旁边能看到MD5效验码的原因。2  APACHE 的 ETAG 实现:APACHE 的 ETAG 是可以自己定义方法的,较普遍的做法是根据文件的内容生成ETAG。因为当有多台web服务器时,以浏览图片为例,想要让浏览器缓存你的图片。但你传到不同服务器上的图片时间不会一致,所以不能用文件的last_modify时间作为cache的参照,这时候就可以采取发送ETAG,ETAG是按照图片内容生成特定字符串的。只要文件内容没有改变,ETAG就不会改变,cache就会有效。