Rust in Action笔记 第八章 网络

news2024/7/5 23:33:01
  1. P253的图展示了网络各层用到的协议在这里插入图片描述
  2. Box<dyn std::error::Error>表示一个指针指向的实现了标准错误库的类型,dyn表明这是一个特征对象(trait object),是rust里多态的一种实现方式;
  3. 特征对象和模板对象(generics)都是rust实现多态的方式,模板属于静态分发(static dispatch),需要更多的磁盘空间(disk space),但是更快(faster funtime);特征对象(trait object)属于动态分发(dynamic dispatch),运行时需要的空间更小但会引入一点运行时的开销(间接指针的寻址开销);
  4. 在rust里特征对象有三种形式,&dyn Trait, &mut dyn Trait, Box<dyn Trait>,主要区别是Box<dyn Trait>是有所有权的对象(owned trait object),另外两种是借用(borrowed)的,旧版本中还有&Trait, Box<Trait>表示特征对象,现在已经弃用,在函数返回值封装错误成Box<dyn Trait>的原因是Box的大小已知,可以存放在栈上;
  5. 8.3节后面大部分通过一个简单的RPG游戏来介绍特征对象;
  6. 8.4节讲了如何使用标准库中std::net::TcpStream来创建tcp连接,以及使用trust_dns库来解析域名;通常绑定本地地址为0.0.0.0:0,表示在本机由OS挑选一个随机的端口来创建连接;
  7. 使用Vec::with_capacity(512)vec![0;512]来创建Vec<T>的区别在于前者的长度为0,容量为512,后者的长度和容量都是512;
  8. 问号?在一个返回Result<T,E>的函数结尾是一个语法糖,作为try!宏的缩写形式,当返回结果是Ok(T)的时候返回T,返回Err(err)的时候,try! / ?提前返回并且尝试将err转化成调用函数返回值的Error类型;
  9. 为一个新的类型实现std::error::Error可以在实现部分留空,因为在std::error::Error里有默认实现,map_err(f)中会把一个error类型映射(map)到一个函数(function)中,在这里一个实现了std::error::Error的枚举错误类型可以看做是一个function;
  10. 如果不想使用map_err(),可以为自己的Error类型实现std::convert::From来减少过于冗长的代码;还有一种应对多种Error类型返回值的方法就是使用unwrap()或者expect(),但这种方法不推荐给库作者,因为使用库的用户可能会碰到意想不到崩溃;
  11. MAC地址有6个字节,分为全球地址(universally administered address)和局域地址(locally administered address),全球地址在MAC地址的前3个字节里,表示组织编号,而局域地址的6个字节都是设备编号;
  12. MAC地址有单播(unicast)和广播(multicast)两种模式,区别在于单播只会让目标MAC地址收到数据帧(frame),设置方法是在MAC地址第一个字节的最低位,设为1表示广播模式,下图比较清晰的阐释了两种模式的区别:图8.4
  13. 8.9节介绍了用ip tuntap工具来创建虚拟网络设备,必须在Linux环境下运行,详见Page282;8.10节从命令行参数处理、MAC地址生成、DNS解析、用TCP原语发起HTTP请求,实现了一个比较底层的网络处理工具;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/695438.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

短视频------Adobe Photoshop 笔记总结

一、Adobe Photoshop 使用方式方法 ctrlc/v 复制 粘贴 ctrlx 剪切 ctrla 全选 ctrlz撤销 ctrls保存 ENTER 回车 换行 CTRL 调取定界框 CAPSLOCK 大写锁定 Esc 退出 Delete 删除 Backspace 退格 Ctrl shi alt 三个控制键 Shi 连选 ctrl 加选/减选 锁屏 WinL 打开运行命令窗口 …

vue实现输入网址生成二维码、解码、下载、更改功能

功能&#xff1a; 1.输入网址生成二维码 2.二维码可以下载 3.可以更改二维码中心的图片 4.可以通过本地相册的二维码进行解码 1.下载三个插件 下载vue-qr&#xff0c;用于生成二维码 npm install vue-qr 下载vue-jimp并指定版本号&#xff0c;最新版不行&#xff0c;实…

Linux中yum、dnf、rpm

yum 1、看是否安装了某些东西 yum list all | grep php

一篇文章带你从入门都入土 Kafka 消息中间件(原理+代码)

目录 一、Kafka定义 二、消息队列 三、Kafka基础架构图 四、安装Kafka 4.1 为每台服务器下载Kafka并解压 4.2 查看目录结构 4.3 为每台服务器修改配置文件server.properties 4.4 为每台服务器配置Kafka环境变量 4.5 启动zookeeper集群 4.6 启动Kafka集群 4.7 关闭Ka…

IDEA初次连接Redis配置

解决IDEA报错代码&#xff1a;redis.clients.jedis.exceptions.JedisConnectionException: Failed connecting to host 192.168.127.185:6379 第一步、引入jedis依赖 <!--引入jedis依赖--> <dependencies><dependency><groupId>redis.clients</gr…

天数智芯通用GPU产品天垓100与飞桨完成III级兼容性测试,加速人工智能产业生态建设

近日&#xff0c;上海天数智芯半导体有限公司&#xff08;以下简称“天数智芯”&#xff09;通用 GPU 产品天垓 100 与飞桨已完成 III 级兼容性测试。测试结果显示&#xff0c;双方兼容性表现良好&#xff0c;整体运行稳定。这是天数智芯加入“飞桨硬件生态共创计划 ”后的阶段…

Tensor core原理

什么是Tensorcore Tensor core是nvidia底层执行运算的硬件单元&#xff0c;不同于nvidia以往的cuda core(全浮点型&#xff09;&#xff0c;Tensor core是近几年推出来的、混合精度的、将累加和累乘放在一起的计算硬件&#xff1b; 什么是混合精度 混合精度指的是在输入、输…

电脑出现0xC1900101错误怎么办?

在更新或安装Windows操作系统时&#xff0c;有时系统会提示出现了0xC1900101错误。这个错误的出现通常是源于与驱动程序相关的错误所致。那么当电脑出现0xC1900101错误时该怎么办呢&#xff1f; 为什么会出现错误代码0xC1900101&#xff1f; 通常情况下&#xff0c;有以下几个…

Java重点:反射机制的使用

目录 一、概念 二、类类 1、类类的获取方式 1&#xff09;类名.Class 2&#xff09;对象.getClass() 3&#xff09;Class.forName() 三、反射实例化 1、调用一个公有的无参构造方法 2、调用一个公有的一个参构造方法 3、调用一个公有的两个参构造方法 4、调用一个私有…

gitee(码云)如何生成并添加公钥

一&#xff0c;简介 在使用Gitee的时候&#xff0c;公钥是必须的&#xff0c;无论是克隆还是上传。本文主要介绍如何本地生成和添加公钥到服务器。供参考。 二&#xff0c;步骤介绍 2.1 本地生成公钥 打开git bash 输入以下代码回车三次&#xff1a; # 替换为你自己的邮箱…

opencv特征检测 HOG特征算法

1 HOG特征简介 Hog 算法的工作原理是创建图像中梯度方向分布的柱状图&#xff0c;然后以一种非常特殊的方式对其进行归一化。这种特殊的归一化使得Hog 能够有效地检测物体的边缘&#xff0c;即使在对比度很低的情况下也是如此。这些标准化的柱状图被放在一个特征向量&#xff…

51单片机的数字时钟系统【含仿真+程序+报告】

51单片机的数字时钟系统【含仿真程序报告】 1、 系统组成2、功能概述3、仿真4、程序代码5、报告6、资源链接 1、 系统组成 该系统由AT89C51单片机DS1302时钟模块按键模块DS18B20LCD显示模块构成。 2、功能概述 可显示实时的日期 包括 年-月-日 时分秒 星期 农历时间DS18B20室…

将图像2D转换为3D--LeiaPix Converter

LeiaPix Converter是一款免费的在线图像处理工具&#xff0c;可帮助用户将2D图像实时转换为精美的3D光场图像。 它使用由Leia开发的专有算法&#xff0c;为照片、插画和艺术作品等2D图像添加深度和立体感&#xff0c;目前是完全免费的。 LeiaPix Converter 的特点 多格式转换…

安全多方计算、联邦学习和可信执行环境

目录 隐私计算的三大技术流派&#xff1a;联邦学习、安全多方计算、可信计算 隐私计算的三大技术流派&#xff1a;联邦学习、安全多方计算、可信计算 1.多方安全计算&#xff0c;由姚期智院士于1982年首次提出&#xff0c;通过设计特殊的加密算法和协议&#xff0c;在无可信第…

Java 已知文件路径参数,用两种方法获取文件名

一、先获取带扩展名的fileName String filePath "D:\\manage\\uploadFile\\2023-06-28283\\初测.xlsx"; File file new File(filePath); // 或者 Path path Paths.get(filePath);String fileName1 file.getName(); System.out.println(fileName1);Path fileName…

Jmeter线程组配置

目录 前言&#xff1a; 一、线程组配置字段说明 二、线程组配置示例 前言&#xff1a; JMeter是一款开源的压力测试工具&#xff0c;被广泛应用于测试Web应用程序的性能和负载能力。其中线程组是JMeter中最基本、最重要的功能之一。线程组用于模拟多个并发用户对目标应用程…

Bryntum Scheduler Pro 5.3.5 Crack-专业调度组件

BRYNTUM Scheduler Pro调度程序专业版 专业的日程安排小部件 一个专业有大脑的调度UI组件。Scheduler Pro 可帮助您安排任务&#xff0c;同时考虑资源和任务的可用性。 连接您的任务 让 Scheduler Pro 处理剩下的事情。它将根据您定义的链接安排您的任务并遵守任何任务限制。这…

echarts——折线图点击线触发函数getZr()——技能提升

今天看到技术群里在讨论echarts中的折线图&#xff0c;有人遇到一个功能就是点击折线要触发点击事件&#xff0c;但是官网上的click点击事件只针对折线的拐点。 但是有人提出是可以通过getZr()方法来实现 网上也确实有大神提出一样的解决方法&#xff0c;链接如下&#xff1…

属鸡的脾气性格怎么样?

有的人认为属鸡的人脾气暴躁&#xff0c;而有的认为属鸡的人性格温和&#xff0c; 其实属鸡的人都有两面性&#xff0c;对好人善良温情&#xff0c;对坏人则腹黑邪恶&#xff0c;是不是很惊讶&#xff1f;古人认为鸡有预报能力&#xff0c;此种预言能力在鸡年生的人身上也会出现…

Stable Diffusion 使用outpainting扩展图像

通常SD可以应用绘制的图像是固定分辨率的&#xff0c;但是如果想要超出这个分辨率的话那就要使用一些方法&#xff0c;并且如果还想保持这些图片的连贯性&#xff0c;例如背景就要使用到outpainting。 文章目录 操作流程准备图像 操作流程 准备图像 首先将需要扩展边缘的图像…