关于privatebt的信息
面对信息化时代,稍不注意就会脱轨,所以及时的补充知识才能让我们与时俱进,今天给大家带来的是关于privatebt和的一篇文章,相信会给你带来较大的帮助!
本文目录:
- 1、
- 2、
- 3、
- 4、
- 5、
什么是PT下载?
PT(Private Tracker)下载其实也是BT下载的一种,对高清等大数据量文件来说,pt下载是十分合适的,毕竟高清对带宽的要求较高,很少有用户能够短时间内下载完一部高清影片。PT起源于美国,国内多数高清影片的最初来源就是采用PT下载的HDBits网站。现在,国内也涌现出不少PT高清下载网站,比如HDChina和ccfbist,还有专门进行DVD下载的ourdvd。
BT 和 pT是什么意思
PT(Private Tracker)下载其实也是Bt下载的一种,但有两个明显的改进:一是私密的小范围下载,二是进行流量统计,根据上载量决定你的权限。
BT下载时,软件会分析.torrent种子文件得到Tracker地址,然后连接Tracker服务器,服务器返回其他下载者的IP,下载者再与这些IP联系进行下载,从而减轻了服务器的负担,BT下载的Tracker是公开的,而Private Tracker 下载(PT下载)的Tracker则是私有的,每个人的Tracker是不同的,即passkey不同,passkey对PT下载者很重要,所以不要轻易泄露出去。
其实和通常BT相比,PT就是多了一个passkey验证,这样就能保证未注册的用户不能下载。所以passkey很重要,一旦发现有问题,就要到站点上去重置passkey。Tracker Server根据passkey把BT客户端上传量和下载量进行计算,从而算出分享率(上传量/下载量)。如果分享率太小,将会被删除帐号,从而不能下载。
这样Private Tracker 下载(PT下载)是一种小范围的BT下载,通过禁用DHT有要求地选择并控制用户数量,这样,在有限的范围内,下载的用户基本上都可以达到自己的宽带上限,Private Tracker 下载(PT下载)下载还通过论坛等方式的约束机制将BT下载的理念现实化,真正让用户做到下载的过程中努力上传。因此,Private Tracker 下载(PT下载)的速度很快,能够让用户款待得到最大程度的使用。
PT通过对做种时间和流量的要求在一定程度上避免了BT中存在的下完不做种的现象,因此在网络上,尤其是需要大文件(如高清)资源交换的时候广受欢迎,在PT站里,“水管”代表上传带宽的大小,大水管可以通过快速的上传获得积分,PT站点也会采取措施(比如做种时间,优惠等)使上传较慢的小水管能够参与贡献和共享资源。
PT的种子和BT的种子有没有区别?
PT(PrivateTracker)下载其实也是BT下载的一种,和BT下载有两个最明显的不同,即私密的小范围下载和进行流量统计。BT下载时,BT客户端首先解析.torrent种子文件得到 Tracker地址,然后连接Tracker服务器。Tracker服务器回应下载者的请求,提供其他下载者(包括发布者)的IP。下载者再连接其他下载者,根据.torrent文件,两者分别向对方告知自己已经有的块(数据),然后交换对方没有的数据。此时不需要其他服务器参与,分散了单个线路上的数据流量,因此减轻了服务器负担。Tracker是BT下载的一个重要组成部分,用于记录上下载用户的互连信息。而PT下载和BT下载的区别是PT下载的 Tracker是私有的,BT下载的Tracker则是公开的。
PT下载是一种小范围的BT下载,通过禁用DHT,有要求地选择并控制用户数量。这样,在有限的范围内,下载的用户基本都可以达到自己带宽的上限。 PT下载还通过论坛制度的约束机制将BT的设计理念现实化,真正让用户做到下载的过程中努力上传。因此,PT下载的速度很快,能够让用户带宽得到最大程度的使用,而且种子时效长。
谁知道private系列影片的下载地址啊?
一般网站上都是收费的,而且是外国网站(中国不允许)。
只能去BT或者电驴上搜搜了。
补充:这个,,网站上一般不会贴出来地址的。要用搜索功能,搜索网友共享出来的。
如何用C++实现一个整数类的集合??
这个东西还是用2叉树做吧,链表查找太慢,这是我今天写的,刚好昨天看完了2叉树,所以写了个,试试看,有问题请留言,如果你实在要用链表实现的话我也可以给你写个:
#include iostream
#include cstddef
#include sstream
using namespace std;
// pre declaration is needed for class BTFolk
template class T
class Set;
// binary tree common properties
template class T
class BTFolk {
protected:
BTFolk(){}; // uncreatable
public:
struct Node {
T data; // data
Node* lhs; // left child
Node* rhs; // right child
};
static void inorderWalk(const Node* node, std::ostream os); // traverse the tree
static void recursivelyDelete(Node* node); // clean up tree
static void assign(SetT lhs, const SetT rhs); // assign to another tree
};
template class T
void BTFolkT::inorderWalk(const Node* node, std::ostream os)
{
if(node)
{
inorderWalk(node-lhs, os);
os node-data ' ';
inorderWalk(node-rhs, os);
}
}
template class T
void BTFolkT::recursivelyDelete(Node* node)
{
if(node)
{
recursivelyDelete(node-lhs);
recursivelyDelete(node-rhs);
delete node;
}
}
template class T
void BTFolkT::assign(SetT lhs, const SetT rhs)
{
T* a = rhs.toArray();
lhs.clear();
for(T* beg = a; beg != a + rhs.size(); ++beg)
lhs.insert(*beg);
delete [] a;
}
// class Set
template class T
class Set : private BTFolkT {
public:
Set(); // default constructor
Set(const T* beg, const T* end); // initialize from array
Set(const SetT rhs); // cc
bool search(const T elem)const; // search a element
bool insert(const T elem); // insert a element
bool remove(const T elem); // delete a element
bool empty()const; // is set empty?
void clear(); // clean up, null set
T* toArray()const; // convert to a sorted array, remember to release memory
std::size_t size()const; // return number of elements
friend std::ostream operator (std::ostream os, const SetT theSet); // output set
bool operator == (const SetT rhs)const; // test for equality
SetT operator = (const SetT rhs)const; // assign
SetT operator * (const SetT rhs)const; // intersection 交集
SetT operator + (const SetT rhs)const; // union 并集
SetT operator - (const SetT rhs)const; // difference 差集
~Set();
private:
typename SetT::Node* root; // root node
std::size_t numElems; // number of elements
typename SetT::Node* getParentNode(const T elem); // get parent node
};
template class T
typename SetT::Node* SetT::getParentNode(const T elem)
{
if(root-data == elem)
return 0;
typename SetT::Node* node = elem root-data ? root-lhs : root-rhs;
typename SetT::Node* preNode = root;
while(node-data != elem)
{
preNode = node;
if(elem node-data)
node = node-lhs;
else
node = node-rhs;
}
return preNode;
}
template class T
SetT::Set() : root(0), numElems(0)
{}
template class T
SetT::Set(const T* beg, const T* end) : root(0), numElems(0)
{
while(beg != end)
insert(*beg++);
}
template class T
SetT::Set(const SetT rhs) : root(0), numElems(0)
{
assign(*this, rhs);
}
template class T
bool SetT::search(const T elem)const
{
typename SetT::Node* node = root;
while(node node-data != elem)
{
if(elem node-data)
node = node-lhs;
else
node = node-rhs;
}
return node ? true : false;
}
template class T
bool SetT::insert(const T elem)
{
typename SetT::Node** pnode = root;
if(!search(elem))
{
while(*pnode)
{
if(elem (*pnode)-data)
pnode = (*pnode)-lhs;
else
pnode = (*pnode)-rhs;
}
*pnode = new typename SetT::Node;
(*pnode)-data = elem;
(*pnode)-lhs = (*pnode)-rhs = 0;
++numElems;
return true;
}
return false;
}
template class T
bool SetT::remove(const T elem)
{
if(!search(elem))
return false;
typename SetT::Node* parent = getParentNode(elem);
typename SetT::Node* temp;
typename SetT::Node** nodeToUpdate;
typename SetT::Node* nodeToRemove;
if(parent)
nodeToUpdate = parent-lhs parent-lhs-data == elem ? parent-lhs : parent-rhs;
else
nodeToUpdate = root;
nodeToRemove = *nodeToUpdate;
if(!((*nodeToUpdate)-lhs || (*nodeToUpdate)-rhs))
*nodeToUpdate = 0;
else if(((*nodeToUpdate)-lhs ? 1 : 0) ^ ((*nodeToUpdate)-rhs ? 1 : 0))
*nodeToUpdate = (*nodeToUpdate)-lhs ? (*nodeToUpdate)-lhs : (*nodeToUpdate)-rhs;
else
{
temp = (*nodeToUpdate)-rhs;
while(temp-lhs)
temp = temp-lhs;
temp-lhs = (*nodeToUpdate)-lhs;
if(temp-rhs)
getParentNode(temp-data)-lhs = temp-rhs;
temp-rhs = (*nodeToUpdate)-rhs-rhs;
*nodeToUpdate = temp;
}
delete nodeToRemove;
--numElems;
return true;
}
template class T
inline bool SetT::empty()const
{
return numElems == 0;
}
template class T
inline void SetT::clear()
{
recursivelyDelete(root);
root = 0;
numElems = 0;
}
template class T
T* SetT::toArray()const
{
stringstream sstrm;
inorderWalk(root, sstrm);
T* a = new T[numElems];
for(int* p = a; p != a + numElems; ++p)
sstrm *p;
return a;
}
template class T
inline std::size_t SetT::size()const
{
return numElems;
}
template class T
std::ostream operator (std::ostream os, const SetT theSet)
{
typename SetT::Node* node = theSet.root;
SetT::inorderWalk(node, os);
return os;
}
template class T
bool SetT::operator == (const SetT rhs)const
{
typename SetT::Node* me = root;
ostringstream oss1, oss2;
inorderWalk(me, oss1);
inorderWalk(rhs.root, oss2);
return oss1.str() == oss2.str();
}
template class T
SetT SetT::operator = (const SetT rhs)const
{
assign(*this, rhs);
return *this;
}
template class T
SetT SetT::operator * (const SetT rhs)const
{
T* a = toArray();
T* bega = a;
T* enda = a + numElems;
SetT c;
while(bega != enda)
{
if(rhs.search(*bega))
c.insert(*bega);
++bega;
}
delete [] a;
return c;
}
template class T
SetT SetT::operator + (const SetT rhs)const
{
T* a = this-toArray();
T* bega = a;
T* enda = a + this-numElems;
T* b = rhs.toArray();
T* begb = b;
T* endb = b + rhs.numElems;
SetT c;
while(bega != enda)
c.insert(*bega++);
while(begb != endb)
c.insert(*begb++);
delete [] a;
delete [] b;
return c;
}
template class T
SetT SetT::operator - (const SetT rhs)const
{
T* a = toArray();
T* bega = a;
T* enda = a + numElems;
SetT c;
while(bega != enda)
{
if(!rhs.search(*bega))
c.insert(*bega);
++bega;
}
delete [] a;
return c;
}
template class T
SetT::~Set()
{
recursivelyDelete(root);
}
int main()
{
int foo[] = {2,6,4,3,4};
Setint a, b(foo, foo + 5);
a.insert(2);
a.insert(5);
a.insert(1);
a.insert(9);
a.insert(7);
cout "set a: " a "size: " a.size() '\n';
cout "set b: " b "size: " b.size() "\n\n";
a.insert(6);
b.insert(1);
cout "insert 6 to a: " a "size: " a.size() '\n';
cout "insert 1 to b: " b "size: " b.size() "\n\n";
cout "try to insert duplicate 9 to a: " (a.insert(9) ? "success\n\n" : "failed\n\n");
cout.setf(ios::boolalpha);
cout "a contains 3: " a.search(3) '\n';
cout "b contains 4: " b.search(4) "\n\n";
cout "delete 9 from a.\n";
a.remove(9);
int bar[] = {1,2,3,4,6};
Setint c(bar, bar + 5);
cout "set a: " a "size: " a.size() '\n';
cout "set b: " b "size: " b.size() '\n';
cout "set c: " c "size: " a.size() "\n\n";
cout "intersection of a b:\t" a * b '\n';
cout "union of a b:\t\t" a + b '\n';
cout "difference of a b:\t" a - b "\n\n";
cout "a == b: " (a == b) '\n';
cout "b == c: " (b == c) "\n\n";
a.clear();
cout "a is empty: " a.empty() '\n';
cout "b is empty: " b.empty() endl;
cout.unsetf(ios::boolalpha);
}
感谢您阅读本篇对privatebt的详细介绍,如果你对还不够了解,想进一步学习关于privatebt的知识,可以在本站首页搜索你想知道的!