旋风离线下载的工作原理是什么?

发布时间:2024-12-06 02:42 作者:游氏手游网

旋风离线下载的工作原理是什么?

QQ旋风离线下载是腾讯公司开发的代理用户离线下载服务,旨为用户提供更快、更稳定、更安全、更省心的下载体验。在您提交任务链接到服务器后,服务器将会自动为您下载到专属空间。完成后,您便可从专属空间提取文件到本地。目前内测中,消息指出未来的QQ旋风离线下载将会永久免费,不设收费项目。

概述

离线下载本质是下载服务器帮你下。这种东西只适合冷门的资源。比如,你的正常下载速度能达200KB/S,但是你下的资源是冷门资源,下载速度只能达到10KB/S,那么你就得下很久,如果你用离线下载,你就可以关掉电脑,节约电费。过一段时间,离线下好了,你再从服务器上以平常的速度下到自己的电脑上。如果你下的不是慢速的冷门资源,离线下载没什么作用。离线下载是无法突破宽带的物理限制。

但近年来,随着以中国铁通为代表的互联网接入服务运营商对P2P下载的疯狂封锁,使得用户付了费却无法下载互联网资源。针对这一恶劣行径,目前可以采取的办法就是采用离线下载。

方法

(1)用户通过客户端或Web界面提交一个下载请求。

(2)公司服务器端接受请求,服务器首先查询用户提交的下载链接是否被下载过;如果没有,开启多线程实施下载(或用QQ旋风自己特有的P2P方式);如果有,直接把已下载的数据文件(或只是文件的链接)放入用户服务器端的在线空间。

(3)下载完成后,用户在线登录到在线空间,取回下载的文件。其间也可以采用QQ旋风自己的P2P方式,从已下载或正在下载相同文件的用户那里取得数据。

备注:QQ旋风现在对离线下载目前是面向QQ会员体验,667版本支持主流下载方式 如HTTP/EMULE/BT 类型的下载。

好处减少挂机时间

下载等待时间太长、文件过大、资源冷门时,交给离线下载吧,不用通宵挂机照样下载。省电又不损耗硬盘!

随时随地享用

想下载,又想游戏了?需要下载,但是无法守在电脑前了?交给离线下载吧,让您的下载任务随时随地都在进行!

稳定高速下载

离线下载完成后,就可以通过旋风的专有下载通道将任务稳定高速的下载到本地。

存储空间大

存贮空间根据会员等级的不同而不同,目前初始等级的会员离线存储空间为3G,存储时长7天,而会员等级5级的会员离线存储空间为8G,存储时长9天。支持同时添加数个任务,但每次只能下载3个任务!每位用户都有独享的专属空间,让您的离线下载更加的方便!

java中扩展赋值运算的优先级怎么规定?

1 位运算符

一共3个移位运算符,左移位<<,右移位>>和无符号移位>>>。左移位<<在低位处补0。右移位>>若值为正则在高位插入0,若值为负则在高位插入1。无符号右移位>>>无论正负都在高位处插入0。

非运算符~

&对两个整型操作数中对应位执行布尔代数,两个位都为1时输出1,否则0。

^对两个整型操作数中对应位执行布尔代数,两个位相等0,不等1。

|对两个整型操作数中对应位执行布尔代数,两个位都为0时输出0,否则1。

如:

以下哪种运算正确:

A. 1010 0000 0000 0000 0000 0000 0000 0000 >> 4

gives 0000 1010 0000 0000 0000 0000 0000 0000

B. 1010 0000 0000 0000 0000 0000 0000 0000 >> 4

gives 1111 1010 0000 0000 0000 0000 0000 0000

C. 1010 0000 0000 0000 0000 0000 0000 0000 >>> 4

gives 0000 1010 0000 0000 0000 0000 0000 0000

D. 1010 0000 0000 0000 0000 0000 0000 0000 >>> 4

gives 1111 1010 0000 0000 0000 0000 0000 0000

选:B C

以下哪一运算正确:

A. 0000 0100 0000 0000 0000 0000 0000 0000 << 5

gives 1000 0000 0000 0000 0000 0000 0000 0000

B. 0000 0100 0000 0000 0000 0000 0000 0000 ...1 位运算符

一共3个移位运算符,左移位<<,右移位>>和无符号移位>>>。左移位<<在低位处补0。右移位>>若值为正则在高位插入0,若值为负则在高位插入1。无符号右移位>>>无论正负都在高位处插入0。

非运算符~

&对两个整型操作数中对应位执行布尔代数,两个位都为1时输出1,否则0。

^对两个整型操作数中对应位执行布尔代数,两个位相等0,不等1。

|对两个整型操作数中对应位执行布尔代数,两个位都为0时输出0,否则1。

如:

以下哪种运算正确:

A. 1010 0000 0000 0000 0000 0000 0000 0000 >> 4

gives 0000 1010 0000 0000 0000 0000 0000 0000

B. 1010 0000 0000 0000 0000 0000 0000 0000 >> 4

gives 1111 1010 0000 0000 0000 0000 0000 0000

C. 1010 0000 0000 0000 0000 0000 0000 0000 >>> 4

gives 0000 1010 0000 0000 0000 0000 0000 0000

D. 1010 0000 0000 0000 0000 0000 0000 0000 >>> 4

gives 1111 1010 0000 0000 0000 0000 0000 0000

选:B C

以下哪一运算正确:

A. 0000 0100 0000 0000 0000 0000 0000 0000 << 5

gives 1000 0000 0000 0000 0000 0000 0000 0000

B. 0000 0100 0000 0000 0000 0000 0000 0000 << 5

gives 1111 1100 0000 0000 0000 0000 0000 0000

C. 1100 0000 0000 0000 0000 0000 0000 0000 >> 5

gives 1111 1110 0000 0000 0000 0000 0000 0000

D. 1100 0000 0000 0000 0000 0000 0000 0000 >> 5

gives 0000 0110 0000 0000 0000 0000 0000 0000

选:A C

Given:

1.Public class test (

2. Public static void main (String args[]) (

3. System.out.printIn (6 ^ 3);

4. )

5.)

What is the output

Ans: 5

2 位运算符返回的是数值,不是boolean类型值

如:

if(5&7>0 && 5|2)

System.out.println(true);

显示:编译出错

3 对于一个整型数进行移位,其右操作数应该小于32,对于一个长整型数进行移位,其右操作数应该小于64。如果右操作数大于了规定的位数,编译不会报错,取右操作数的模来进行移位操作。

如:

class Test

{

public static void main(String args[])

{

int x= 16384;

System.out.println(x>>33);

}

}

显示:8192

4 注意进行位操作时,会自动转成int型,转换之后,可接受右操作数长度为32。进行位运算时,总是先将短整型和字节型值转换成整型值再进行移位操作的。

如:

class Test

{

public static void main(String args[])

{

byte x = 127;

byte y = (byte)(x>>9);

System.out.println(y);

}

}

显示:0

如:

char c = 'l';

System.out.println(c>>1);

编译通过,把字符值转成了int值

5 boolean类型值true对应位值1,false对应位值0,返回仍然是boolean类型。&,|,^,都可以用于布尔值,但是~不能用于布尔值。

布尔类型true,false可以比较,但只有==能使用,<,<=...会产生编译错误。除此外,布尔类型不能和其他类型数值比较。

如:

class Test

{

public static void main(String args[])

{

boolean x = true;

boolean y = false;

System.out.println((x&y) + + (x&x));

System.out.println((x^y) + + (y^y));

System.out.println((x|y) + + (y|y));

}

}

显示:false ture true false false true true false

6 位运算要求操作数为整数,操作数不能是字符串也不能是小数。

如:

String s = Hello;

long l = 99;

double d = 1.11;

int i = 1;

int j = 0;

a:j = i<<s;

b: j = i<<j;

c: j = i<<d;

d: j = i<<l;

正确:b,d

如:

char c = 'l';

System.out.println(c>>1);

编译通过,把字符值转成了int值

Integer i = Integer(1);

System.out.println(i>>1);

编译无法通过

7 由于位运算是二进制运算,不可与一些八进制数搞混,java中二进制无表示法。

如:

System.out.println(010|4);

显示:12

并且当位运算中遇见负数,必须把它转成补码再进行计算。而不是使用原码。

如:

class Test

{

public static void main(String args[])

{

try

{

int x = -7;

System.out.println(x/2 + + (x >> 1));

}

catch(Exception e)

{

System.out.pritnln(Exception);

}

}

}

a A compiler error

b Exception

c -3 -3

d -3 -4

e -4 -4

f None of the above

选:f

-7>>1:-7补码:11111111 11111111 11111111 11111001

随后操作得: 11111111 11111111 11111111 11111100

关于-7/2,其中仍与正数除法相同,为-3。

如:

int a = -1;

int b = -1;

a = a >>> 31;

b = b >> 31;

显示:a=1,b=-1

其中b处,高位插入1,是插入31个,是一32个1,这是一个补码,随后转成十进制为-1。

稍复杂的如:

int i = 1;

i <<= 31;

i >>= 31;

i >>= 1;

int j = 1;

j <<= 31;

j >>= 31;

System.out.println(i= + i);

System.out.println(j= + j);

显示:i=-1 j=-1

i<<=31 : 1000 0000 0000 0000 0000 0000 0000 0000 //这里已经被当作负数了

i>>=31 : 1111 1111 1111 1111 1111 1111 1111 1111

i>>=1 : 1111 1111 1111 1111 1111 1111 1111 1111

8 对于~操作,可以根据计算机中二进制正负数之间的关系,采取取负减一法,即~i = (-i)-1.

如:

int i = 45678;

int j = ~i;

System.out.println(j);

结果:(-45678)-1 = -45679

如:

class Test

{

public static void main(String args[])

{

int x = 1;

int y = ~x+1;

System.out.println(x+ +y);

}

}

显示:1 -1

9 运算符优先级和运算顺序:运算顺序从左至右,赋值顺序从右至左。

class Test

{

public static void main(String args[])

{

int [] refToArray = { 10, 11};

int var = 1;

refToArray[var-1] = var = 2;

System.out.println(refToArray[0] + + refToArray[1]);

}

}

如上输出为2和11,首先计算数组下标,随后赋值。

运算符== 的优先级高于赋值运算符=的优先级。

如:

public class Test

{

public static void main(String args [])

{

int i = 10;

int j = 10;

boolean b = false;

if(b=i==j)

System.out.println(True);

else

System.out.println(False);

}

}

位运算符和比较符同级别,自左向右运算即可。

如:

if(5&7>0 && 5|2)

System.out.println(true)

显示:编译出错

其中5&7最先计算,随后计算5&7结果是否大于0。

手游推荐