PT和BT有啥区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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下载的速度很快,能够让用户带宽得到最大程度的使用,而且种子时效长。
参考技术A 二者都是一种信号调制方法
AM是幅度调制,就是调制信号的大小随原信号的幅度而改变。
FM是频率调制,就是调制信号的大小随原信号的频率而改变。

Flutter 中 required 和 @required 有啥区别。它们之间有啥区别,我们啥时候需要使用它们?

【中文标题】Flutter 中 required 和 @required 有啥区别。它们之间有啥区别,我们啥时候需要使用它们?【英文标题】:what is the difference between required and @required in flutter. What is the difference between them and when do we need to use them?Flutter 中 required 和 @required 有什么区别。它们之间有什么区别,我们什么时候需要使用它们? 【发布时间】:2021-08-10 23:36:48 【问题描述】:

如果我从命名参数中删除required,它会给我一个错误:

参数 'color' // 不能有 'null' 的值,因为它 类型,但隐含的默认值为 'null'。

它们有什么区别,什么时候需要用到?

class RoundedButton extends StatelessWidget 
  late final Color color;
  final String title;
  final VoidCallback? onPressedInput;

  RoundedButton(
      required this.color,
      required this.title,
      @required this.onPressedInput);

  @override
  Widget build(BuildContext context) 
    return Padding(
      padding: EdgeInsets.symmetric(vertical: 16.0),
      child: Material(
        color: color,
        borderRadius: BorderRadius.circular(30.0),
        elevation: 5.0,
        child: MaterialButton(
          onPressed: onPressedInput,
          minWidth: 200.0,
          height: 42.0,
          child: Text(
            title,
          ),
        ),
      ),
    );
  

【问题讨论】:

从 Dart 2.12/Flutter 2.0 开始,你不应该再次使用@required,而应该在你有一个不可为空的命名参数时始终使用required 【参考方案1】:

@required 只是一个注释,它允许分析器让您知道您缺少一个命名参数,仅此而已。所以你仍然可以编译应用程序,如果这个命名参数没有被传递,你可能会得到一个异常。

然而,dart 中添加了合理的 null 安全性,required 现在是一个关键字,需要传递给命名参数,这样如果没有传递这个参数,它就不会让编译器运行。它使您的代码更加严格和安全。

如果你真的认为这个变量可以为空,那么你可以通过在其后添加? 来更改类型,这样就不需要必需的关键字,或者你可以为参数添加一个默认值。

【讨论】:

so required 比@required 强? 是的,required 是强制性的,而@required 不是【参考方案2】:

https://dart.dev/null-safety/faq#how-does-required-compare-to-the-new-required-keyword

@required 注释标记必须传递的命名参数;如果 不是,分析器会报告一个提示。

使用 null 安全性,具有不可为 null 类型的命名参数必须 要么有一个默认值,要么用新的 required 关键字标记。 否则,它不可为空是没有意义的,因为 未通过时默认为null。

当从遗留代码调用空安全代码时,必需的关键字是 与@required 注释完全一样对待:未能提供 参数将导致分析器提示。

当从空安全代码调用空安全代码时,未能提供 必需的参数是一个错误。

这对迁移意味着什么?如果在需要添加的地方要小心 之前没有@required。任何未通过的呼叫者 新需要的参数将不再编译。相反,您可以添加 默认值或使参数类型可为空。

【讨论】:

以上是关于PT和BT有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

我想知道pt资源的质量与bt资源的质量有啥不同吗?

PT与BT的区别在哪?(转)

请问一下BT656跟BT1120和BT709有啥区别

pt923g光猫和925有啥区别

px、em 和 ex 有啥区别?

pt1000响应速度怎么计算