MacBook 与其他设备的低成本高性能数据传输方案

news2024/9/23 7:21:59

本篇文章分享在不使用路由器的情况下,使用“数据线或网线”将 MacBook 与其他设备连接在一起,获得更高效率的数据交换性能。

写在前面

最近考虑将 Mac 设备和其他的设备连在一起使用,比如之前在“廉价的家用工作站方案:前篇”或“装在笔记本里的私有云环境:K8s 集群准备”两篇文章里提到的大内存,多核心的设备与 MacBook 更高效的连通到一起,以及搭载 M1/M2 芯片的 MacBook 连接在一起。

因为目标设备都是笔记本,能够直接想到的成本比较低的方案便是使用有线或者无线路由器,将设备连通到一起。但是,借助路由器,会是传输效率最高的方案吗?或者会是成本最合理的方案吗?显然不是。

被抛弃的方案选型

单纯追求效率,首选方案中一定会有“光纤方案”的一席之位,早在 2005 年,苹果出品的 XSAN 就支持通过接入光纤方式来进行高效的数据交互操作。如果选择这个方案,我们可以选择比如 QNAP 出品的万兆雷电3转换器,支持将光纤 SFP+ 接口转换为传统的电口,这样的转换头大概 2000 元一只。忽略掉线缆、使用两个转换器直接组网,成本在 4000 元左右(可能触发优惠券)。

但是上面的方案中,我们只能覆盖 Mac 连通 Mac,或者 Mac 连通具备雷电接口的设备,当另外一个设备不支持雷电的时候,这个方案就无能为力了,比如是 AMD 芯片的设备,或者是阉割掉全功能雷电接口的某些厂商。

如果追求方便,我们或许会想到使用无线网络交换,现如今的 Mac 设备也好,新的笔记本设备也罢,基本都支持 Wi-Fi 6(非 Mac设备更换网卡成本 100 元左右),甚至 Wi-Fi 6E 规格进行数据传输,搭配一个支持 Wi-Fi 6 的无线路由器就能够得到理论千兆的传输速率。

作为第一批小米 Wi-Fi 6路由器的用户,在使用两年设备之后,就个人体验来说,如果是长时间的数据交互,还是可能遇到一些问题的。首先,延迟相比有线还是不够稳定;其次,想得到更好的传输效果,我们需要传输的设备都距离路由器比较近才能够得到好的效果。并且,在传输过程中,如果其他的设备进行下载或者上传,会影响总共可用的无线传输带宽,进而影响传输效果。

如果不用光纤、也不用无线,那么剩下的可选方案里,最经济实惠的只有使用“有线”传输了。

如果不考虑外出使用,理想状况,我们使用可选品牌和型号越来越多的2.5G、万兆(10G)交换机或者路由器,搭配雷电转万兆、USB 3(Type-C)转万兆的 USB 网卡,就能满足设备网络连接稳定,传输效率不差啦。

即使我们从长期使用角度来看,暂且忽略目前 2.5G 或者万兆设备的价格,依旧会发现两个问题:首先,雷电转万兆的 USB 网卡价格不逊前文中提到的雷电转光口的价格;其次,USB 目前市面上基本只有转 5G 速率的网卡(市面上没有 10GbE 的 USB NIC 控制器),5G 版本价格也不算便宜,在这个需求场景下显得非常鸡肋。

高性价比的数据交互、传输方案

那么,退而求其次的高性价比方案是什么呢?

考虑到我们还是会有携带设备外出的情况,所以如果组网连通依赖中心化设备(光纤终端、万兆交换机、高密或者支持 Wi-Fi 6E 的无线 AP),就不是那么好了,并且中心化设备也需要支付额外的成本。

上文提到的问题,如果我们将设备类型拆开,划分为与连接“雷电”的设备与“非雷电”设备,再排除掉上文中提到的问题,那么答案就很明显啦。

与支持雷电的设备,我们使用雷电数据线进行连接组网,满足连通和数据传输需求,成本只需要一根几十块钱的数据线。

与不支持雷电的设备,我们可以借助古老的“网线”直连,为了提升效率,除了直接使用笔记本目前都搭载的千兆网卡之外,还可以使用相对便宜的 2.5G USB 网卡来完成设备的连接。相比较上文中动辄几千的成本,购置两个 2.5G USB 网卡,搭配两条七类网线,包邮到家大概 300 块左右。

下面记录一下 Mac 和其他设备使用“数据线”直连的配置过程,以及目前的传输速率,先来记录使用雷电相互连接的 Mac 设备。

使用雷电数据线直连其他 Mac 或支持雷电协议的设备

支持雷电协议的设备,能够在使用雷电数据线连接设备彼此的时候,互相协调分配可用的 IP,并保证网络连通。

使用雷电数据线连接两台支持雷电的设备

当设备使用雷电数据线连接之后,我们将能看到系统网络设置中多出一个“雷劈网桥”,稍等片刻,它会完成网络地址的分配,状态将会从“无 IP 地址” 变为“自分配的 IP”。

获得雷电网桥分配的 IP 地址

选择“网桥”,点击进去之后,我们将得到设备分配的 IP 地址。想要两台设备进行数据交互,我们需要使用相同的方式,打开系统设置中的网络选项卡,获得两台设备的 IP 地址。当然,也可以使用命令 arp -a,来获得使用雷电数据线连接的设备,所分配的地址:

arp -a
...
...
suyangdedahaomacbook-pro.local (169.254.190.176) at 82:e7:xx:xx:xx:1 on bridge0 [ethernet]
...
...

接下来,我们可以使用 iperf3 测试连接速度,如果你的 Mac 设备没有安装它,可以通过 brew install iperf3 来完成安装。然后选择其中一台作为服务器,另外一台作为客户端,来模拟数据传输下载,得到网络连接速度。

比如,我在其中一台上输入 iperf3 -s 启动测速服务端:

iperf3 -s
-----------------------------------------------------------
Server listening on 5201 (test #1)
-----------------------------------------------------------

然后接着,在另外一台设备上输入 iperf3 -c 169.254.190.176 ,设置好要测试的 IP 地址,对雷电线另外一头的设备进行压力测试:

iperf3 -c 169.254.190.176                    
Connecting to host 169.254.190.176, port 5201
[  5] local 169.254.13.145 port 56484 connected to 169.254.190.176 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  1.67 GBytes  14.3 Gbits/sec                  
[  5]   1.00-2.00   sec  1.86 GBytes  16.0 Gbits/sec                  
[  5]   2.00-3.00   sec  1.84 GBytes  15.8 Gbits/sec                  
[  5]   3.00-4.00   sec  1.94 GBytes  16.6 Gbits/sec                  
[  5]   4.00-5.00   sec  1.90 GBytes  16.3 Gbits/sec                  
[  5]   5.00-6.00   sec  1.85 GBytes  15.9 Gbits/sec                  
[  5]   6.00-7.00   sec  1.78 GBytes  15.3 Gbits/sec                  
[  5]   7.00-8.00   sec  1.97 GBytes  16.9 Gbits/sec                  
[  5]   8.00-9.00   sec  1.90 GBytes  16.3 Gbits/sec                  
[  5]   9.00-10.00  sec  1.91 GBytes  16.4 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  18.6 GBytes  16.0 Gbits/sec                  sender
[  5]   0.00-10.00  sec  18.6 GBytes  16.0 Gbits/sec                  receiver

iperf Done.

上面的输出日志中,我们得到了 16.0 Gbits 的测试结果。

但其实,我们应该稍微拉长一些测试时间,以及可以选择忽略掉前几次速度可能不够客观的数据反馈,以及适当调整下速度的计量单位,方便我们与日常使用的 MB/s 进行转换。比如,在下面的命令中,我声明要使用 “MB” 作为单位,忽略最开始的 5 次数据结果,并且将测试时间拉长至 20 s:

iperf3 -c 169.254.190.176 -f MB --omit 5 --time 20
Connecting to host 169.254.190.176, port 5201
[  5] local 169.254.13.145 port 56505 connected to 169.254.190.176 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  1.79 GBytes  1832 MBytes/sec                  (omitted)
[  5]   1.00-2.00   sec  1.98 GBytes  2030 MBytes/sec                  (omitted)
[  5]   2.00-3.00   sec  1.97 GBytes  2016 MBytes/sec                  (omitted)
[  5]   3.00-4.00   sec  1.93 GBytes  1977 MBytes/sec                  (omitted)
[  5]   4.00-5.00   sec  1.90 GBytes  1946 MBytes/sec                  (omitted)
[  5]   0.00-1.00   sec  1.93 GBytes  1973 MBytes/sec                  
[  5]   1.00-2.00   sec  1.90 GBytes  1946 MBytes/sec                  
[  5]   2.00-3.00   sec  1.95 GBytes  1994 MBytes/sec                  
[  5]   3.00-4.00   sec  2.03 GBytes  2079 MBytes/sec                  
[  5]   4.00-5.00   sec  1.89 GBytes  1933 MBytes/sec                  
[  5]   5.00-6.00   sec  1.90 GBytes  1943 MBytes/sec                  
[  5]   6.00-7.00   sec  2.01 GBytes  2061 MBytes/sec                  
[  5]   7.00-8.00   sec  1.97 GBytes  2016 MBytes/sec                  
[  5]   8.00-9.00   sec  1.84 GBytes  1883 MBytes/sec                  
[  5]   9.00-10.00  sec  1.95 GBytes  1992 MBytes/sec                  
[  5]  10.00-11.00  sec  1.93 GBytes  1979 MBytes/sec                  
[  5]  11.00-12.00  sec  1.93 GBytes  1981 MBytes/sec                  
[  5]  12.00-13.00  sec  2.07 GBytes  2118 MBytes/sec                  
[  5]  13.00-14.00  sec  1.98 GBytes  2029 MBytes/sec                  
[  5]  14.00-15.00  sec  1.92 GBytes  1968 MBytes/sec                  
[  5]  15.00-16.00  sec  2.00 GBytes  2044 MBytes/sec                  
[  5]  16.00-17.00  sec  1.89 GBytes  1935 MBytes/sec                  
[  5]  17.00-18.00  sec  1.89 GBytes  1931 MBytes/sec                  
[  5]  18.00-19.00  sec  1.86 GBytes  1904 MBytes/sec                  
[  5]  19.00-20.00  sec  1.83 GBytes  1872 MBytes/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-20.00  sec  38.7 GBytes  1979 MBytes/sec                  sender
[  5]   0.00-20.00  sec  38.7 GBytes  1979 MBytes/sec                  receiver

iperf Done.

测试结束后,我们能够看到数据传输速度的结果是 1979 MBytes,除以 8 ,得到差不多 247 MB/s 的速度。

在完成基础测试之后,我们使用日常数据传输命令 scp 来进行一个简单的额外测试。

允许 Mac 通过 SSH  进行远程登录

想要完成 scp 的数据拷贝,我们需要在系统设置中的“通用”菜单里找到“共享”,然后在“共享”中打开“远程登录”。

接着,使用常规命令,不指定传输数据使用的加密算法,从另外一台设备下载“Ubuntu 22.04”的系统镜像到本地:

scp 169.254.13.145:~/linktest/ubuntu-22.04.1-live-server-amd64.iso .
(soulteary@169.254.13.145) Password:
ubuntu-22.04.1-live-server-amd64.iso        100% 1407MB 204.9MB/s   00:06

可以看到传输速度在 200MB/s 出头,应该是加密算法影响了传输效率,这里我们将加密算法指定为计算量比较低的方法,再进行尝试:

scp -c aes128-ctr 169.254.13.145:~/linktest/ubuntu-22.04.1-live-server-amd64.iso .
(soulteary@169.254.13.145) Password:
ubuntu-22.04.1-live-server-amd64.iso        100% 1407MB 234.2MB/s   00:06

scp -c aes128-ctr 169.254.13.145:~/linktest/ubuntu-22.04.1-live-server-amd64.iso .
(soulteary@169.254.13.145) Password:
ubuntu-22.04.1-live-server-amd64.iso        100% 1407MB 234.1MB/s   00:06

可以看到传输速度到达了 234MB/s 左右,接近我们使用 iperf3 测试的结果。

相比较使用中心化设备,我们只需要一根数据线,就能随时随地的进行至少 200MB/s 的数据传输了,比多数环境中的千兆网络满载速率要高一倍,是不是还挺不错的?

使用网线与其他设备直接连接

因为我的 2.5G 网卡还在路上,所以我先使用普通的千兆网卡完成本文的配置部分,等待网卡到位,我在更新/补充数据部分。

这里,我使用 Mac 来与一台 AMD CPU 的 Ubuntu 笔记本进行连接,当我们使用网线插上两台设备后,此时设备并不能够直接使用,还需要进行额外的设置。

创建一个虚拟网络接口

还是在系统设置中,打开网络设置,然后选择“管理虚拟接口”。

新建桥接器

接着,在弹出的对话框中选择“新建桥接器”。

选择 USB 网卡,创建桥接器

选择要桥接的设备为我们的 USB 网卡,然后起个名字,按“创建”按钮。点击创建,和上文中使用雷电数据线连接设备一样,我们将能够看到一个黄色的小圆点,以及网桥状态显示为“自分配的 IP”。

为网桥设置 IP 地址

进入创建好的网桥的详细设置中,先选择“TCP/IP”,然后选择“手动指定 IP 地址”,在 IP 地址中填写一个合适的地址,例如:192.168.199.2

等待设置完毕

设置完毕,我们返回网络列表,可以看到“黄色的小圆点”变成了“绿色的小圆点”。

这里,我们也需要设置网线连着的另外一台机器,如果你的系统不支持设置网桥,并且那台设备也不需要直接联网,可以直接修改该设备网卡中的 IP 地址,将 IP 地址的网段和网络掩码修改的和 Mac 设备一致即可,比如 192.168.199.3255.255.0.0

为了完成性能验证,我们和上面一样,首先需要选择一台设备执行 iperf3 -s 启动测试服务端。

然后在另外一台设备上输入命令,来完成测试:

iperf3 -c 192.168.199.2 -4 -f MB --omit 5 --time 20
Connecting to host 192.168.199.2, port 5201
[  5] local 192.168.199.3 port 50140 connected to 192.168.199.2 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   114 MBytes   114 MBytes/sec    0    431 KBytes       (omitted)
[  5]   1.00-2.00   sec   113 MBytes   113 MBytes/sec    0    499 KBytes       (omitted)
[  5]   2.00-3.00   sec   112 MBytes   112 MBytes/sec    0    523 KBytes       (omitted)
[  5]   3.00-4.00   sec   112 MBytes   112 MBytes/sec    0    602 KBytes       (omitted)
[  5]   4.00-5.00   sec   111 MBytes   111 MBytes/sec    0    602 KBytes       (omitted)
[  5]   0.00-1.00   sec   113 MBytes   113 MBytes/sec    0    602 KBytes       
[  5]   1.00-2.00   sec   112 MBytes   112 MBytes/sec    0    602 KBytes       
[  5]   2.00-3.00   sec   113 MBytes   113 MBytes/sec    0    602 KBytes       
[  5]   3.00-4.00   sec   112 MBytes   112 MBytes/sec    0    602 KBytes       
[  5]   4.00-5.00   sec   112 MBytes   112 MBytes/sec    0    602 KBytes       
[  5]   5.00-6.00   sec   112 MBytes   112 MBytes/sec    0    602 KBytes       
[  5]   6.00-7.00   sec   113 MBytes   113 MBytes/sec    0    602 KBytes       
[  5]   7.00-8.00   sec   112 MBytes   112 MBytes/sec    0    602 KBytes       
[  5]   8.00-9.00   sec   112 MBytes   112 MBytes/sec    0    602 KBytes       
[  5]   9.00-10.00  sec   113 MBytes   113 MBytes/sec    0    602 KBytes       
[  5]  10.00-11.00  sec   111 MBytes   111 MBytes/sec    0    602 KBytes       
[  5]  11.00-12.00  sec   113 MBytes   113 MBytes/sec    0    602 KBytes       
[  5]  12.00-13.00  sec   112 MBytes   112 MBytes/sec    0    602 KBytes       
[  5]  13.00-14.00  sec   113 MBytes   113 MBytes/sec    0    602 KBytes       
[  5]  14.00-15.00  sec   112 MBytes   112 MBytes/sec    0    950 KBytes       
[  5]  15.00-16.00  sec   112 MBytes   113 MBytes/sec    0    950 KBytes       
[  5]  16.00-17.00  sec   112 MBytes   113 MBytes/sec    0    950 KBytes       
[  5]  17.00-18.00  sec   112 MBytes   112 MBytes/sec    0    950 KBytes       
[  5]  18.00-19.00  sec   111 MBytes   111 MBytes/sec    0   1.38 MBytes       
[  5]  19.00-20.00  sec   112 MBytes   113 MBytes/sec    0   1.38 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-20.00  sec  2.19 GBytes   112 MBytes/sec    0             sender
[  5]   0.00-20.00  sec  2.19 GBytes   112 MBytes/sec                  receiver

iperf Done.

可以看到,使用千兆网线和网卡连接的两台设备,能够跑到 110MB/s 的满速。

同样的,使用 scp 进行速度测试,因为上限是 100MB/s ,所以我们就不指定传输加密算法了,设备性能足够高,怎么都能跑满这个千兆带宽:

scp -P 55555 ./ubuntu-22.04.1-live-server-amd64.iso 192.168.199.3:/app/linktest/
ubuntu-22.04.1-live-server-amd64.iso        100% 1407MB 110.2MB/s   00:12

scp -P 55555 192.168.199.3:/app/linktest/ubuntu-22.04.1-live-server-amd64.iso .
ubuntu-22.04.1-live-server-amd64.iso        100% 1407MB 110.7MB/s   00:12

最后

这篇内容就先到写到这里啦。

希望能够帮助到想要更高效率完成数据交互、传输,但是同样不希望增加太多成本的你,新年快乐。

–EOF


如果你觉得内容还算实用,欢迎点赞分享给你的朋友,在此谢过。

如果你想更快的看到后续内容的更新,请戳 “点赞”、“分享”、“喜欢” ,这些免费的鼓励将会影响后续有关内容的更新速度。


我们有一个小小的折腾群,里面聚集了几百位喜欢折腾的小伙伴。

在不发广告的情况下,我们在里面会一起聊聊软硬件、HomeLab、编程上的一些问题,也会在群里不定期的分享一些技术沙龙的资料。

喜欢折腾的小伙伴欢迎扫码添加好友。(添加好友,请备注实名,注明来源和目的,否则不会通过审核)

关于折腾群入群的那些事


本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 署名 4.0 国际 (CC BY 4.0)

本文作者: 苏洋

创建时间: 2023年01月01日
统计字数: 9077字
阅读时间: 19分钟阅读
本文链接: https://soulteary.com/2023/01/01/low-cost-high-performance-data-transfer-solution-for-macbook-and-other-devices.html

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

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

相关文章

利用Python实现酒店评论的中文情感分析,含数据集

利用Python实现酒店评论的情感分析 完整代码下载地址:利用Python实现酒店评论的中文情感分析 情感极性分析,即情感分类,对带有主观情感色彩的文本进行分析、归纳。情感极性分析主要有两种分类方法:基于情感知识的方法和基于机器学…

抽象类和接口1

目录 🌤️抽象类概念 🌤️抽象类语法 🌤️抽象类的作用 ⛅接口的概念 ⛅接口的语法 ⛅接口的使用 ⛅接口的特性 ....... 🌤️抽象类概念 在面向对象的概念中,所有对象都是通过类来描述的,但并不是所有的…

上手华为鸿蒙手表gt系列从准备到发布

文章目录1、前期准备2、证书&签名3、编码&发布FQA:问题1:The graphic card OpenGL version is too old for Previewer to work. It must be 3.2 or later. Update the OpenGL driver based on the graphics card model.问题2:编译成HAp,报错 ent…

[UE笔记]延迟与延迟补偿

Lag即延迟,是多人游戏中常会出现的一个现象。lag compensation即延迟补偿,是一种减少延迟对游戏造成影响的技术。 Ping 多个含义 一种指令(用于验证ip地址是否存在或者主机是否正在运行)描述服务器需要多长时间响应客户端的输入…

OpenCV实战——使用邻居访问扫描图像

OpenCV实战——使用邻居访问扫描图像0. 前言1. 图像锐化2. 邻居访问扫描图像3. 锐化滤波器4. 完整代码相关链接0. 前言 在图像处理中,有时需要根据某个像素的相邻像素的值计算该像素位置的值。当这个邻域包括上一行和下一行的像素时,就需要同时扫描图像…

JavaScript高级 浏览器的渲染原理与JavaScript代码执行原理

浏览器的渲染原理1. 网页的解析过程2. 浏览器内核1. V8引擎3. 浏览器渲染过程1. HTML解析2. 生成CSS规则3. 构建Render Tree4. 布局(layout)5. 绘制(Paint)4. 回流和重绘解析1. 回流2. 重绘3. web 性能优化4. 合成和性能优化5. 浏…

剑指offer----C语言版----第六天

目录 1. 用栈实现队列 1.1 题目描述 1.2 栈和队列的基础知识 1.3 思路分析 2. 扩展题目——用队列实现栈 2.1 题目描述 2.2 思路分析 1. 用栈实现队列 原题链接: 剑指 Offer 09. 用两个栈实现队列 - 力扣(LeetCode)https://leetcode.cn/…

数据结构集合框架与大O渐进表示法

作者:爱塔居的博客_CSDN博客-JavaSE领域博主 专栏:数据结构 作者简介:大三学生,希望跟大家一起进步!🌹 博客简介:了解数据结构,学习一些关于数据结构的前置知识 文章目录 目录 文章目…

【论文翻译】Deep Learning for Multi-view Stereo via Plane Sweep: A Survey(2021)

一、论文简述 1. 第一作者:Qingtian Zhu 2. 发表年份:2021 3. 发表期刊:CVPR 4. 关键词:MVS、深度学习、综述 5. 核心思想:读到的第一篇深度MVS的综述,总结的很好,内容涵盖了2021年前的研究…

遗传算法python进阶理解+论文复现(纯干货,附前人总结引路)

遗传算法python进阶理解论文复现(纯干货,附前人总结引路)一、简介和相关概念遗传算法简介相关概念介绍二、与其他智能优化算法的比较蚁群算法粒子群优化算法人工神经网络算法模拟退火算法鱼群算法三、必学知识(站在前人的肩膀上&a…

1214. 波动数列(推公式 + DP)

题目如下: 思路 or 题解: 我们可以设: 第一个数为 xxx d {a, -b} 那后续的数为:xd1x d_1xd1​ , xd1d)2x d_1 d_)2xd1​d)​2 … … xd1d2......dn−1x d_1 d_2 ... ... d_{n - 1}xd1​d2​......dn−1​ 根据题意和上面…

(Java高级教程)第二章Java多线程常见面试题-第三节:线程安全集合类和死锁

文章目录一:线程安全集合类(1)多线程环境下使用ArrayList(2)多线程环境使用队列(3)多线程使用哈希表二:死锁(1)概念(2)死锁产生的四个…

(小程序)会议OA项目-首页

目录 一、FIex布局简介 1.什么是flex布局? 2.flex属性 学习地址: 3.flex弹性布局演示 ① 容器的属性 ⑴ flex-direction属性 ⑵ flex-wrap属性 ⑶ flex-flow ⑷ justify-content属性 ⑸ align-items属性 ⑹ align-content属性 二、轮播图组件m…

微信记录怎么恢复?恢复已删除微信历史记录的4种方式

恢复已删除微信历史记录的4种方式 如何在有/没有备份的情况下在 iPhone 和 Android 上恢复旧的或已删除的微信历史记录,如聊天对话、语音消息、照片、图片和视频剪辑?参考本指南,祝您成功恢复微信数据。 关于微信数据恢复 “说真的&#xf…

容器化技术Docker与任务编排

Docker容器化 Docker简介 传统的Java项目部署需要自己进行打包,redis,nignx等中间件需要安装以及进行很多配置,稍微繁琐,而Docker使用了容器化的技术把这一过程封装为一条指令解决,而这取决于它的架构设计&#xff0c…

数值优化之函数高阶信息

本文ppt来自深蓝学院《机器人中的数值优化》 目录 1 函数高阶信息的介绍 2 函数高阶信息的计算 1 函数高阶信息的介绍 hessian矩阵是对称矩阵,最后一个公式是函数关于0的泰勒展开 负梯度是函数下降的最快方向 注意区分Hessian矩阵与Jacobian矩阵,Hess…

9_4、Java基本语法之System、Math、BigInteger与BigDecimal类的使用

一、System类的使用 1、System类代表系统,系统级的很多属性和控制方法都放置在该类的内部。 该类位于java.lang包。 由于该类的构造器是private的,所以无法创建该类的对象,也就是无法实 例化该类。其内部的成员变量和成员方法都是static的&am…

【算法题解】7. 反转链表

文章目录题目解法一:迭代解题思路代码实现复杂度分析解法二:递归解题思路代码实现复杂度分析题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。来自:leetcode 解法一:迭代 解题思路 使用…

广州车展智能卷王:集度ROBO-01的取与舍

作者 | 德新 编辑 | 王博2022年的最后两天,今年最后一个A级车展在广州开幕。由于种种原因,不少车企匆忙备战或者干脆缺席,这届展会不如往届热闹。但也有憋了大招的选手,比如集度。 12月30日上午,集度在一场非常短的发布…

11-内部类and 12-集合初步

文章目录11-内部类链接外部类使用.this 和.new匿名内部类12-集合初步思考1&#xff0c;List<Apple> apples new ArrayList<>();思考2&#xff0c;如何初始化一个collection思考3&#xff0c;Pet关键字思考4&#xff0c;关于ListIterator这个双向迭代器思考5&#…