BNU-FZH

fengzhenhua@outlook.com

科研工作中离不开绘制各种各样的科研图片,通过程序可以将数据保存下来,然后使用绘图软件绘制图片。其中CSV数据文件( Comma Separated Values, 逗号分隔的值)是比较常用的文件,本文介绍CSV数据文件。

CSV 文件优点

  • 简单易懂:CSV 文件基于纯文本格式,因此可以使用任何文本编辑器(如neovim)轻松打开和编辑。
  • 数据兼容性:CSV 文件中的数据可以很容易地跨平台进行传输和处理,任何具有 CSV 处理功能的软件(如Microsoft ExcelGoogle Sheets、甚至编程语言库)都能处理该类型的文件。
  • 资源占用低:CSV 文件以纯文本形式存储数据,其体积相对较小,便于节省存储空间。

CSV 文件结构

  • 每行表示一条记录:CSV 文件中的每一行代表一条记录,相当于数据库中的一行数据。
  • 逗号分隔:每行数据中,使用逗号, 进行数据分隔,代表不同的数据。
  • 引号包围:当数据单元格中的内容含有逗号时,为避免混淆,需要引号 (单引号 ' 或双引号 ")将这个数据包围起来,防止误认为是两个不同数据。

ArchLinux是一个优秀的Linux发行版,但是在使用Paru安装AUR中的软件时,很多软件依赖于Github上的软件,但有时候它不能访问,为此本人开发了脚本ParuAxel.sh.

配置Github镜像

为了提高Github的访问速度,可以设置git的下载镜像网站,于是首先配置git如下:

~/.gitconfig
1
2
3
4
5
6
7
8
9
10
11
[user]
email = YourEmail
name = YourName
; [url "https://521github.com/"]
; [url "https://githubfast.com/"]
; [url "https://git.homegu.com/"]
; [url "https://kkgithub.com/"]
; [url "https://github.hscsec.cn/"]
; [url "https://gitclone.com/github.com/"]
[url "git@github.com:"]
insteadOf = https://github.com/

ParuAxel 脚本

/usr/bin/ParuAxel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#! /bin/sh
#
# Program: ParuAxel.sh
# Version: V1.4
# Author : Zhen-Hua Feng
# Email : fengzhenhua@outlook.com
# Date : 2024-11-06 14:08
# Copyright (C) 2023 feng <feng@arch>
#
# Distributed under terms of the MIT license.
#
GIT_DOMIN=`echo $2 | cut -f3 -d'/'`;
GIT_OTHER=`echo $2 | cut -f4- -d'/'`;
GIT_INIT="https://github.com/"
GCF=/home/$USER/.gitconfig
GIT_MIR=$(grep "url \"http" $GCF)
GIT_SIT=(${GIT_MIR[*]//" "/""})
GIT_SIT=(${GIT_SIT[*]//";"/""})
GIT_SIT=(${GIT_SIT[*]//"[url\""/""})
GIT_SIT=(${GIT_SIT[*]//"\"]"/""})
GIT_DETECT(){
wget --spider -T 5 -q -t 2 $1
}
i=0 ; j=0
case "$GIT_DOMIN" in
"github.com")
if [ -e $GCF ]; then
while [[ $i -lt "${#GIT_SIT[*]}" ]]; do
GIT_DETECT ${GIT_SIT[$i]}
if [[ $? = 0 ]]; then
GIT_URL=${GIT_SIT[$i]}$GIT_OTHER
i=${#GIT_SIT[*]} ; j=1
else
let i+=1
fi
done
if [[ $j -eq 0 ]]; then
GIT_URL="$GIT_INIT$GIT_OTHER"
fi
else
GIT_URL="$GIT_INIT$GIT_OTHER"
fi
echo "Download from mirror $GIT_URL";
# Single-threaded, enabled by default
/usr/bin/curl -gqb "" -fLC - --retry 3 --retry-delay 3 -o $1 $GIT_URL;
# Multi-threading, which may not be supported by some mirror websites
# /usr/bin/axel -n 15 -a -o $1 $GIT_URL;
;;
*)
GIT_URL=$2;
/usr/bin/axel -n 15 -a -o $1 $GIT_URL;
;;
esac

编写思路:首先探测~/.gitconfig文件,提取所有的http镜像地址,然后按顺序测试镜像地址,遇到可以使用的镜像则设置为下载地址,同时停止继续探测。如果全部探测完成后没有发现可用地址,则仍然使用https://github.com的原始地址。由于不是所有镜像都支持axel多线程下载,所以默认开启curl下载。为了提高效率,当探测到可用镜像时就停止了继续探测其他镜像,但是这不能保证探测到的镜像速度最快,所以在此版中应当尽量将速度快的镜像排在~/.gitconfig的前面,下一版计划实现自动速度的探测。

/etc/makepkg.conf
1
2
3
4
5
6
DLAGENTS=('file::/usr/bin/curl -qgC - -o %o %u'
'ftp::/usr/bin/axel -n 15 -a -o %o %u'
'http::/usr/bin/axel -n 15 -a -o %o %u'
'https::/usr/bin/ParuAxel %o %u'
'rsync::/usr/bin/rsync --no-motd -z %u %o'
'scp::/usr/bin/scp -C %u %o')

具体设置

基本用法

1
eval command-line

其中command-line是在终端上键入的一条普通命令行。然而当在它前面放上eval时,其结果是shell在执行命令行之前扫描它两次。

举例解释

1
2
pipe="|"
eval ls $pipe wc -l

shell1次扫描命令行时,它替换出变量$pipe的值,接着eval使它再次扫描命令行,这时shell作为管道符号了。

参考文章

在部署博客时,首先探测目标网站是否畅通是一个必要的环节。然而之前的探测方法依赖于返回码,但是不同的网站返回码不同,所以这不是一个很好的方法,本文的目标就是解决这个探测通用性的问题。

wget方法

wget 探测网站
1
wget --spider -T 5 -q -t 2 https://gitlab.com ; echo $?

若返回值为\(0\), 则表示目标网站可以正常访问,否则表示网络不通。

wget的常用参数为:

1
2
3
4
5
--spider                   模拟爬虫的行为去访问网站,但不会下载网页
-q, --quiet 安静的访问,禁止输出,类似-o /dev/null功能
-o, --output-file=FILE 记录输出到文件
-T, --timeout=SECONDS 访问网站的超时时间
-t, --tries=NUMBER 当网站异常时重试网站的次数

curl方法

curl 探测网站
1
curl -s -o /dev/null https://gitlab.com ; echo $?

若返回值为0, 则代表正常. 这个方法的优点在于与返回的状态码无关,是一个通用方案。

curl 探测网站---状态码方法
1
curl -I -m 5 -s -w "%{http_code}\n" -o /dev/null www.baidu.com

上述方法,会返回一个状态码,若为200则代表www.baidu.com可以正常访问。但是,不同网站的状态码不同,所以这不是一个友好的方案,因此将此方法仅记录在此,但编写脚本时尽量不要使用。

参考文章

  • 测试网站链接是否可用(wget和curl)

  • 注意:在上述文章中,测试代码与echo $?前使用了管道符号|, 这是不对的. 在本文中已经更正为;, 这表示无论前面的代码是否正确运行后面的echo照样执行,这样才能正确返回上一步的$?状态,实现准确判断。

自定义一个函数并调用

1
2
3
4
5
6
7
8
9
import numpy as np

def func_x(a):
y = a + 1
return y

print(func_x(x)) # 调用
# 输出
# 2

frompyfunc 函数

如果a不是一个数,而是一个向量或数组呢?这时需要使用numpy中的通用函数np.frompyfunc(func,1,1), 这里的参数func指的是你要使用的函数,第二个参数为func中的参数个数,第三个参数为func中的返回值的个数。现在进一步改写为计算数组的情况:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import numpy as np

def func_x(a):
y = a + 1
return y

A = [0, 1, 2]
func_ = np.frompyfunc(func_x, 1, 1)

y = func_(A)

print(y)
# 结果:
# [1 2 3]

参考文章

np.frompyfunc()函数的使用 Numpy | 函数向量化

看到很多研究,凭空臆想了一些复杂的电磁场,但是研究的火热,然后他们臆想的这些电磁场又不满足Maxwell方程组, 所以从根本上讲就不是电磁场。因为这个基础性的问题,可能会引起某些人的不适,所以决定不发文章,直接在我的博客说明吧。因为我认为知识是全人类的,没有必要非得挂上名字发表,所以我也不怕别人在发表之前看到我的东西,因此就有了这篇文章。

简介

Maxwell 描述了电磁场的基础性质,目前我个人认为,如果一个东西它不满足这组方程,那它一定不是电磁场!所以,研究电磁场相关的问题首先要确保自己选择的电磁场满足这组方程。同时,本人还认为,一个研究如果研究内容不是现实世界中存在的或间接存在的,那这样的研究就是无效研究。

Maxwell 方程组

普遍的 Maxwell 方程组

\[\begin{align} \nabla\times\vec{E} &=-\frac{1}{c}\frac{\partial \vec{B}}{\partial t} \label{eq:maxwella} \\ \nabla\times\vec{B} &=\frac{4\pi}{c}\vec{j}+\frac{1}{c}\frac{\partial \vec{E}}{\partial t} \label{eq:maxwellb} \\ \nabla\cdot\vec{B} &=0 \label{eq:maxwellc}\\ \nabla\cdot\vec{E} &=4\pi\rho \label{eq:maxwelld} \end{align}\]

无源的 Maxwell 方程组

当空间中不存在电流和电荷时,电磁场满足的方程叫无源的 Maxwell 方程组。在真空中传播的激光就属于这种情况,其具体表达式为

\[\begin{align}\label{eq:maxwell1} \nabla\times\vec{E} &=-\frac{1}{c}\frac{\partial \vec{B}}{\partial t} \\ \nabla\times\vec{B} &=\frac{1}{c}\frac{\partial \vec{E}}{\partial t} \\ \nabla\cdot\vec{B} &=0 \\ \nabla\cdot\vec{E} &=0 \end{align}\]

真空中电场只是时间的函数的形式

如果真空中的电场只是时间的函数,那它的表达式是怎样的?由于受 Maxwell 方程组的限制,这个形式, 这一段就来探讨这种只与时间有关的电场形式。

只与时间有关的电场与只与空间有关的磁场对应

由于真空中无源,所以应当满足无源的 Maxwel 方程组。又由于电场只是时间的函数,于是\(\nabla\times\vec{E}=0\), 根据式\(\eqref{eq:maxwell1}\) 的第一式可得

\[\begin{equation}\label{eq:maxwell2} -\frac{1}{c}\frac{\partial \vec{B}}{\partial t}=0 \end{equation}\]

\(\eqref{eq:maxwell2}\)表明\(\vec{B}\)不是时间的显函数,所以它最多只能是空间的函数。

只与空间有关的磁场导致电场只能与时间的一次方成正比

根据式\(\eqref{eq:maxwell1}\)的第2式,由于磁感应强度\(\vec{B}\)只与空间有关,所以\(\nabla\times\vec{B}\)就只与空间有关,所以直接对偏导数积分就得到

\[\begin{equation}\label{eq:maxwell3} \vec{E}=\vec{E}_0+t\nabla\times\vec{B} \end{equation}\]

由式\(\eqref{eq:maxwell3}\)可得,真空无源的电场受 Maxwell 方程组限制而只能取这种形式,它不能凭空臆造,不能设置任意的函数形式,这正是当前(2024年11月01日)好多研究强场的人做的工作中所必须面对的问题。无意与人争论,放在博客上,请大家各取所需。

只与时间有关的无源电磁场的势也只能与时间的一次方成正比

由 Maxwell 方程组可以导出电磁场标势和矢势满足的达朗贝尔方程

\[\begin{align} \frac{1}{c}\frac{\partial^2 \varphi}{\partial t^2}-\nabla^2\varphi &=0 \label{eq:maxwell4}\\ \frac{1}{c}\frac{\partial^2 \vec{A}}{\partial t^2}-\nabla^2\vec{A} &=0 \label{eq:maxwell5} \end{align}\]

由式\(\eqref{eq:maxwell4}\) 和式\(\eqref{eq:maxwell5}\) 可得,对于只与时间有关的势,\(\nabla^2\)项就变为零,对时间的偏导就变成了导数,于是可以得出结论:只与时间有关的无源电磁场的势也只能与时间的一次方成正比.

电场强度和磁感应强度必须满足波动方程

介质中\(\vec{E}\)\(\vec{B}\)满足的方程

对式\(\eqref{eq:maxwella}\)取旋度,再代入式\(\eqref{eq:maxwelld}\)

\[\begin{equation}\label{eq:bodong0} \nabla^2\vec{E}-\frac{1}{c^2}\frac{\partial^2\vec{E}}{\partial t^2} =\frac{4\pi}{c^2}\frac{\partial \vec{j}}{\partial t}+4\pi\rho \end{equation}\]

对式\(\eqref{eq:maxwellb}\)取旋度,再代入\(\eqref{eq:maxwellc}\)\[\begin{equation}\label{eq:bodong1} \nabla^2\vec{B}-\frac{1}{c^2}\frac{\partial^2\vec{B}}{\partial t^2} =-\frac{4\pi}{c}\nabla\times\vec{j} \end{equation}\]

真空中\(\vec{E}\)\(\vec{B}\)满足的方程

真空中无源,所以令式\(\eqref{eq:bodong0}\)和式\(\eqref{eq:bodong1}\)中的源\(\vec{j}=0\)\(\rho=0\), 得到

\[\begin{align} \nabla^2\vec{E}-\frac{1}{c^2}\frac{\partial^2\vec{E}}{\partial t^2}&=0 \label{eq:bodong2} \\ \nabla^2\vec{B}-\frac{1}{c^2}\frac{\partial^2\vec{B}}{\partial t^2}&=0 \label{eq:bodong3} \end{align}\]

通过式\(\eqref{eq:bodong2}\) 和式\(\eqref{eq:bodong3}\) 更容易看出来,对于只是时间函数的电场强度和磁感应强度最多只能是时间的一次函数。对于一般情况,电场强度和磁感应强度都必须是波动方程的解,如果任意设置各式各样的只与时间有关的函数那就不是电磁波了。

简介

本指南将向您展示如何在 Linux 上安装 Tor 浏览器。 Tor 浏览器是一款开源、跨平台的现代网络浏览器,注重隐私。浏览器的主要目的是为您提供互联网上的基本隐私权, 它有以下优点:

  • 加密:当您使用 Tor 浏览器时,您的流量在通过 Tor 中继通过 Tor 网络时会被多次加密。

  • 抵制指纹识别:当您使用其他浏览器(例如 Google Chrome、Firefox 等)时,系统会记录您的个人资料,以便轻松跟踪您在互联网上的活动。另一方面,Tor 浏览器可确保所有用户看起来都一样,从而使广告商很难对您进行分析。

  • 阻止跟踪:大多数网站以 Cookie 或本地存储会话的形式保存您的活动历史记录。这些信息可以让您轻松追踪您。 Tor 浏览器会在每次浏览会话后删除所有 cookie 和其他相关信息,使营销人员和广告商难以跟踪您。

安装

1. 下载 Tor 游览器

1
2
cd ~/Downloads
wget https://github.com/TheTorProject/gettorbrowser/releases/download/linux64-12.5.1/tor-browser-linux64-12.5.1_ALL.tar.xz

注意: 上述方法与发行版无关,并且适用于任何 Linux 发行版.

2. 解压缩安装文件

1
2
cd ~/Downloads
tar -xvf tor-browser-linux64-12.5.1_ALL.tar.xz

3. 将游览器注册为应用程序

1
2
3
sudo mv tor-browser /opt
cd /opt/tor-browser
./start-tor-browser.desktop --register-app
  • 注意:/opt目录是为不属于核心Linux系统的可选或附加软件包保留的。但是在最后一步注册为Linux应用程序时,一定不要加sudo
  • 参考文章:如何在 Linux 上安装 Tor 浏览器

问题描述

2024年10月20日, 获取了微软的最新版 Windows 11 LTSC版本, 于是将台式机上的Windows 10 LTSC 升级为Windows 11 LTSC. 在之前的双系统配置中,我们使用相同的UEFI分区,这样即可以减少对固态硬盘的分区,设置起来也方便。但是,在安装完成Windows 11后, 发现每次启动到Windows 11 后再重启,则UEFI分区将会被重写,这导致了GRUB被覆盖掉了,于是无法进行Linux的引导!此问题虽然可以挂载ArchLinux安装盘后重新挂载分区修复,但是再次使用Windows 11后,问题再次出现。相较而言,我的笔记本上仍然是Win10 + ArchLinux的配置,它却没有出现此问题。根据上述情况可以得出结论,微软想独占硬盘,进而阻止Linux启动,这无形中增加了Linux用户的使用门槛,导致一此人不敢轻易换到Linux系统下工作。

通过上述分析,Win11的流氓行为恰恰反映了微软感受到了Linux的压力,这可以证明Linux越来越受到重视。为了实现同一电脑上自由的切换操作系统,且用上最新的Windows,本文在实践的前提下,记录下此可行方案。

解决方案

设置 Windows 11独占一块硬盘

由于我的台式机有多块硬盘,所以单独拿出一块256GSSD安装Windows 11 LTSC, 同时在安装过程中要删除已经存在于另一块512GNvme固态硬盘上的UEFI分区和16MWindows预留分区。这样操作下来,在新的256硬盘上安装Windows时,它就会自动创建EFI分区在256硬盘上,也就相当于Windows独占了这块256固态硬盘。当使用完Windows后,再重启时它虽然会检查并重写EFI分区,但是也只是写这个256G硬盘,所以也就不会影响512G硬盘上的GRUB了。

恢复 GRUB 分区

在安装Windows 11的过程中删除了512G硬盘上的UEFI分区,这是为了防止Windows自动将其设置为自己的UEFI。此时,Linux是无法引导的,因为它的UEFI分区已经被删除了。所以,我们现在要重建这个分区。由于使用了ManjaroLive镜像启动后,再用Gparted软件同时删除了之前的UEFI16M预留分区,所以硬盘分区表就发生了变化,所以重新安装GRUB后,要修改/etc/fstab文件,确保原来硬盘的//home/boot/efi分区正确挂载。插入Ventoy启动U盘, 选择ArchLinux,成功启动后依次执行下述命令。

重建 GRUB

在重建GRUB前使用lsblk查看硬盘分区,记住512G硬盘的新分区,对应挂载到相应的挂载点。

1
2
3
4
5
6
7
mount /dev/nvme0n1p1  /mnt/
mount /dev/nvme0n1p3 /mnt/home
mount /dev/nvme0n1p4 /mnt/boot/efi
arch-chroot /mnt
pacman -S os-prober
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ArchLinux
grub-mkconfig -o /boot/grub/grub.cfg

重建GRUB配置时,命令grub-mkconfig会自动搜索电脑所有的硬盘,并将找到的操作系统启动项加载到GRUB菜单中,在启动时可以随时选择。接下来的重点工作是修改Linux的分区表, 下面仅列出需要修改的部分。

vimlink
1
2
3
4
5
6
7
8
# /dev/nvme0n1p1
UUID=b4f5ab83-c06d-4f09-86b9-af00fa6acfeb / ext4 rw,relatime 0 1

# /dev/nvme0n1p4
UUID=8641-51F6 /boot/efi vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2

# /dev/nvme0n1p3
UUID=99c16664-0d77-4911-bfe1-d08a14d5db9e /home ext4 rw,relatime 0 2

重新启动系统

1
2
exit
reboot -h now

设置双系统的时间同步

为了避免主力系统ArchLinux出现问题,切换到Windows11后,右键开始菜单,选择以管理员身份打开 「PowerShell」,输入以下命令:

1
Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1

解释

支持UEFI的主板,对于每一个UEFI分区,在启动时BIOS菜单中就会有一个启动项。Window 11流氓的地方就是安装时它自动探测所有硬盘中的UEFI分区,并占据第一个默认启动的UEFI分区,而切换到Windows11后它就会重写这个分区,覆盖其他的操作系统引导。所以在双系统的配置中,应当先确保无其他UEFI分区的前提下,单独安装Windows 11, 然后在Linux的安装盘上单独划分一个UEFI分区,再安装Linux或恢复GRUB. 安装Linux或恢复GRUB后,启动Linux, 再执行一遍grub-mkconfig以搜索添加Windows 11的启动项. 虽然BIOS中存在了两个启动项,但是每次切换系统都按F8或其他按键来切换系统不是太方便,于是才有在GRUB中添加Windows11的操作,这样想的切换操作系统时一个上下移动菜单就方便解决了。

对于只有一块硬盘的电脑,要么建立两个UEFI分区然后再安装Windows11Linux. 要么直接使用一个UEFI分区,然后安装Windows 10Linux, 既然Windows是作为一个备用系统处理那些不得不在Windows处理的文件,所以也没必要追求最新,因此我的笔记本上仍然使用Windows10+ArchLinux方案。

Linux系统下的软件包管理器主要包括APT、YUM、DNF、Zypper和Pacman等。本文对不同发行版的包管理器进行简要介绍如下:

  1. APT (Advanced Packaging Tool)

    • 功能描述:APT是Debian及其衍生发行版(如Ubuntu)中的高级软件包管理工具。它提供了一个方便的接口来处理软件包的安装、更新和移除,同时自动处理依赖关系.
    • 常用命令apt update用于更新软件包列表,apt upgrade用于升级所有可升级的软件包,apt install package_name用于安装指定的软件包,apt remove package_name用于卸载软件包.
  2. YUM (Yellowdog Updater, Modified)

    • 功能描述:YUM是基于RPM的前端软件包管理工具,主要用于Red Hat Enterprise Linux (RHEL) 和CentOS等发行版。它能够从指定的服务器自动下载RPM包并且安装,可以自动处理软件包的依赖关系。
    • 常用命令yum install package_name用于安装软件包,yum update用于更新所有软件包,yum remove package_name用于卸载软件包。
  3. DNF (Dandified Yum)

    • 功能描述:DNF是一个现代化的软件包管理工具,它是YUM的替代品,提供了更高的性能和更好的依赖解析算法。DNF在Fedora和其他一些基于RPM的系统中广泛使用。
    • 常用命令dnf install package_name用于安装软件包,dnf update用于更新所有软件包,dnf remove package_name用于卸载软件包。
  4. Zypper

    • 功能描述:Zypper是openSUSE系统中的软件包管理工具,提供了一系列命令来处理软件包的安装、更新和移除。Zypper也支持模式匹配查询和解决复杂的软件依赖问题。
    • 常用命令zypper install package_name用于安装软件包,zypper update用于更新所有软件包,zypper remove package_name用于卸载软件包。
  5. Pacman

    • 功能描述:Pacman是Arch Linux系统中的主要软件包管理工具。它提供了一种简单的方式来安装、更新、移除和管理软件包及其依赖项。
    • 常用命令pacman -S package_name用于安装软件包,pacman -Syu用于同步软件包数据库并升级所有软件包,pacman -R package_name用于卸载软件包。

总的来说,这些软件包管理工具不仅帮助用户高效地管理软件包,还确保了系统的稳定和安全。通过掌握这些工具的使用,用户可以更加自如地进行系统维护和软件部署。

近期由于更换了显示器,就想着把无线鼠标和无线键盘的接收器都插入到显示器的USB接口上,这样可以更简洁。但是由于2.4G会受到USB3.0的强烈干扰,这表现为如果把这些无线设备的接收器离USB3.0接口比较近的时候,一旦有USB3.0U盘等工作的时候发射的电磁波与2.4G接近而发生干扰,导致无线键盘掉字符或卡顿。看网上的一些文章,国内的无线设备多使用的是公版的无线接收模块,而我的Logi鼠标却不受影响。为此将USB上行线接到电脑的USB2.0接口上,完美解决无线电干扰的问题。鉴于这次USB接收器问题的解决,本文记录一下各种USB接口协议,虽然不是严格的官方标准,但一般而言可能通过颜色来区分。

不同颜色和USB对照表

USB版本 颜色 传输速度 最大电流 最大电压 最大功率
1.0 白色 1.2Mbps~12Mbps 500mA 5V 2.5Watts
2.0 黑色 480Mbps 500mA 5V 2.5Watts
3.0 深蓝色 5Gbps 900mA 5V 4.5Watts
3.1 浅蓝色 10Gbps 1.5A~3A 5V 15Watts
Thunderbolt 3 USB-C 40Gbps 5A 20V 100Watts

USB Type-C:这是一个接口标准,而不是USB数据传输标准。根据Power Delivery (PD)规范,USB Type-C可以支持高达20伏特(V)和5安培(A)的电源输出,但实际电流取决于设备和电缆的能力。

参考文章