云计算入门——Linux 命令行入门
云计算入门——Linux 命令行入门
前些天发现了一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站。
介绍
如今,我们许多人都熟悉计算机(台式机和笔记本电脑)、智能手机和平板电脑,它们具有图形用户界面(也称为 GUI),使我们能够导航应用程序、网络和文件(如文档和照片)通过视觉体验。Windows、macOS 和 Linux 操作系统均提供各种桌面环境(例如,带有文件夹和文件的图像)和下拉菜单,所有这些都提供对计算机程序、应用程序和我们自己的媒体的访问。
尽管 GUI 对于许多用户来说是使用计算机的直观方式,但它们通常无法为我们提供对计算机的最大权力,并且它们可能会阻止我们对计算机拥有完全的管理访问权限,包括安装、修改或删除软件或文件。此外,由于 GUI 很大程度上是可视化的,因此它们通常无法像所有用户那样易于访问。
在没有 GUI 的情况下导航我们自己的个人计算机和远程云服务器的一种方法是通过基于文本的终端或命令行界面 (CLI)。
几乎所有计算机操作系统上都存在终端接口,终端模拟器也可作为平板电脑和智能手机的应用程序使用。终端通过增加管理员访问权限、增强定制环境的能力以及自动化流程的机会,为用户提供了对其机器的更全面的访问权限。它们还为用户提供访问远程计算机(例如云服务器)的能力。
本文将为刚刚接触终端环境的用户提供通过浏览器中的嵌入式 Web 终端使用命令行界面的基础知识(我们可以在下面启动该终端)。读完本文后,我们应该了解如何在 Linux(或 macOS)计算机或服务器上使用终端。
了解终端窗口
当我们第一次使用新计算机或智能手机时,我们可能希望打开它并通过检查可用的应用程序来了解如何使用它,并了解东西在哪里,以便我们可以自定义设备以适应我们的需求。我们可以通过类似的方式通过终端来熟悉计算机。
一般我们看到的窗口如下(可能没有右上角的符号):

在终端中,应该有一个美元符号$和一个闪烁的光标。我们将在此处开始输入命令来告诉终端要做什么。
我们启动的终端是 Ubuntu 20.04 终端。Ubuntu 是一个流行的 Linux 发行版,最初基于 Unix 操作系统。macOS 操作系统也是基于 Unix 的。如果我们在 Linux 或 macOS 计算机上阅读本教程,则我们的操作系统上应该有一个终端,其工作方式与我们将在本文中使用的嵌入式终端类似。
在许多这样的Unix(或基于*nix)操作系统中,提示符末尾的符号可能是一个$符号,也可能是一个#符号,其含义如下:
$或美元符号 — 我们已作为普通用户登录#或井号标签或井号符号 — 我们以具有提升权限的用户身份登录
环境中记录的用户#也称为 root 用户,默认情况下被视为超级用户或管理员。
我们先以普通用户身份登录,之后可以通过命令获得管理员权限sudo。
请注意,在本地计算机的终端上工作时最好多加小心,因为我们可以作为管理员在终端上进行一些更改,从而对我们正在使用的计算机进行永久性更改。
熟悉目录
我们将通过输入命令开始使用终端。命令是用户发出的指令,传达用户希望计算机执行的操作**。**我们将在终端中输入命令,然后在准备好计算机执行给定命令时按ENTER或RETURN。
让我们输入以下命令,然后输入ENTER。我们还可以复制该命令,或者通过将鼠标悬停在下面的代码块上时单击相关链接来要求它在启动的交互式终端中运行。
pwd
运行此命令后,我们将收到以下输出:
Output
/home/sammy
该pwd命令代表“当前工作目录”,它可以让我们知道当前文件系统中的位置。
在此示例中,我们位于名为/home/sammy 的目录(或文件夹)中,它代表名为sammy 的用户。如果我们以具有提升权限的用户root身份登录,则该目录将被称为/root。在个人计算机上,该目录可能称为拥有该计算机的用户的名称。
现在,这个目录是空的。让我们创建一个目录来存储我们在本文中将创建的文件,例如,我们可以将其称为 files。
我们将使用下面的命令,mkdir代表“创建目录”。输入命令后,我们需要写入文件夹的名称,该名称会将值传递给命令,以便命令可以在创建此目录时执行。该值(文件夹的名称)称为参数**,**它是提供给命令的输入。如果我们熟悉自然语言语法,我们可以将参数视为命令动词所作用的对象。
为了创建一个名为files的新目录,我们将编写以下内容,运行mkdir命令并使用files作为参数:
mkdir files
运行此命令后,除了带有闪烁光标的新行之外,我们不会收到任何输出。终端上出现这条新行后,我们就可以执行下一个命令了。
列出内容并了解权限
由于我们尚未收到有关新目录的任何具体反馈,因此我们将使用命令来了解有关当前工作目录中内容的更多信息。我们可以通过使用以下命令ls(表示“ l i s t”)列出目录中的文件来确认新目录确实存在:
ls
我们将收到确认files目录存在的输出:
Output
files
这为我们提供了有关当前工作目录中内容的一般信息(一般都是文件夹的名称,一长串子)。如果我们想了解更多详细信息,我们可以ls使用所谓的标志来运行命令。在 Linux 命令中,标志由连字符和字母组成-,将附加选项(和更多参数)传递给命令。在我们的示例中,我们将添加该-l标志,当与 ls配对时,该标志表示我们希望使用该选项在我们的命令中使用长列表格式。
让我们输入这个命令和标志,如下所示:
ls -l
按下ENTER 后,我们将在终端中收到以下输出:
Output
total 4
drwxr-xr-x 2 sammy sammy 4096 Nov 13 18:06 files
这里有两行输出。第一行指的是分配给该目录的计算机内存块(一般都是文件夹的名称,一长串子),第二行主要指的是文件的用户权限。
为了获得更加人类可读的输出,我们还可以传递-hor--human-readable标志,它将以人类可读的格式打印内存大小,如下所示。一般来说,一个连字符-指的是单字母选项,两个连字符指--的是用文字写出的选项。请注意,某些选项可以使用两种格式。我们可以通过将标志链接在一起将多个选项构建到命令中,如-lh.
例如,下面的两个命令提供相同的结果,尽管它们的写法不同:
ls -lh
ls -l --human-readable
这两个命令都将返回以下输出,与上面的输出类似:
Output
total 4.0K
drwxr-xr-x 2 sammy sammy 4.0K Nov 13 18:06 files
我们会注意到我们的目录名称files位于第二行输出的末尾。该名称指示/home/sammy输出行正在描述用户目录中的哪个特定项目。如果目录中有另一个文件,我们将有另一行输出,其中包含该文件的详细信息。
该行的前面有一个字符和破折号的列表。我们来分解一下每个字符的含义:
| 字段 | 描述 |
|---|---|
| d | directory (or folder))——一种可以保存其他文件的文件类型,对于组织文件系统很有用;如果是这样-,这将引用非目录文件 |
| r | read — 打开和读取文件或列出目录内容的权限 |
| w | write— 修改文件内容的权限;以及添加、删除、重命名目录中的文件 |
| x | execute — 运行程序文件或进入和访问目录中的文件的权限 |
在第一个字符drwx`中,第一个字母`d`表示该项目`files`是一个目录。如果这是目录以外的文件,则该字符串将以连字符开头,如`-rwx`,其中第一个连字符表示非目录文件。下面的三个字母,代表目录*所有者*`rwx`的权限,表示该目录可以被文件所有者**读**、**写**、**执行。**如果这些字符中的任何一个被替换为连字符,则意味着所有者不具有该字符所代表的权限类型。
输出中接下来的三个字符是r-x,表示目录的files组权限。在本例中,该组具有读取和执行权限,但没有写入权限,因为w 被替换为-. 我们稍后将讨论如何识别该组。
第一个字符串的最后三个字符r-x表示有权访问该计算机的任何其他组的权限。在这种情况下,这些用户组还可以读取和执行,但不能写入。
输出中的数字2是指该文件的链接数。在 Linux 中,链接提供了一种创建快捷方式的方法来帮助用户导航文件系统。当我们创建此文件时,Linux 会执行一些后台工作来创建该文件的绝对链接和该文件的自引用链接,以允许用户沿着相对路径导航。
数字后2,单词sammy显示两次。这部分输出提供有关与files目录关联的所有者和组的信息。此行中的第一个实例sammy指的是目录的所有者,我们之前看到的权限是rwx。该用户是我们作为用户创建目录sammy时的所有者,并且是文件的当前所有者。虽然用户是我们当前环境中的唯一用户,但类 Unix 操作系统通常有多个用户,因此了解哪个用户拥有文件的所有权是很有用的。
第二个实例sammy指的是有权访问该files目录的组,我们之前看到的权限是r-x。在这种情况下,组名与所有者用户名相同sammy。在现实环境中,操作系统上可能有其他组可以访问该目录,例如staff或类似的用户名admin。
该输出行的其余详细信息4.0K是计算机上目录的内存分配以及该目录上次修改的日期,我们刚刚创建的。
通过对文件系统和权限有了更深入的了解,我们可以继续在 Linux 终端上浏览文件系统。
浏览文件系统
到目前为止,我们已经学习了如何确定文件系统中的位置、如何创建新目录、如何列出文件以及如何确定权限。
接下来让我们学习如何移动文件系统。我们已经创建了一个新目录,但我们仍然在主用户目录/home/sammy中。为了移动到我们创建的目录/home/sammy/files中,我们将使用cd命令并将要移动到的目录的名称作为参数传递。该命令cd代表“更改目录”,我们将像这样构造它**:**
cd files
同样,除了带有闪烁光标的新行之外,我们不会收到任何输出,但我们可以使用之前使用的命令检查我们是否位于/home/sammy/files目录中:pwd
pwd
我们将得到以下输出,确认我们所在的位置:
Output
/home/sammy/files
这将验证我们是否位于用户目录/home/sammy的/home/sammy/files目录中。我们是否觉得这个语法很熟悉?它可能会让我们想起带有正斜杠的网站 URL,事实上,网站也是在目录中的服务器上构建的。
让我们转到服务器的主目录。无论我们位于文件系统中的哪个位置,我们始终可以使用以下命令cd /移动到主目录:
cd /
为了确认我们已经移动并了解该目录中的内容,让我们运行 list 命令:
ls
我们将收到以下输出:
Outputbin
boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run s sbin srv sys tmp usr var
里面有很多文件!该/目录是Linux服务器的主目录,称为“根”目录。请注意,根目录与默认的“root”用户不同。我们可以将该/目录视为 Linux 计算机的主要动脉,因为它包含运行计算机所需的所有文件夹。例如,sys目录保存Linux内核和系统信息虚拟文件系统。如果我们想了解有关每个目录的更多信息,可以访问Linux 基金会文档。
我们还会注意到我们已经进入过一个目录,即/home用户文件夹。从/目录中,我们可以将目录更改回 ,/home然后再更改回files,或者我们可以通过输入绝对路径直接移回该文件夹cd:
cd /home/sammy/files
现在,如果我们运行pwd,我们将收到/home/sammy/files输出。
文件路径表示文件或目录在计算机或服务器上的位置。我们可以以相对或绝对方式调用文件或目录的路径。相对路径是指当我们移动到相对于当前工作目录的位置时,就像我们已经进入/home/sammy/然后移入files/. 绝对路径是指我们调用指向某个位置的直接行,就像我们上面使用 /home/sammy/files所做的那样,表明我们从/目录开始,调用/home/sammy/用户目录,然后调用嵌套files/目录。
此外,Linux 利用点符号来帮助用户通过相对路径进行导航。单.代表当前所在目录,双..代表父目录。因此,从当前位置 ( /home/sammy/files) 开始,我们可以使用两个点返回到父/home/sammy用户目录,如下所示:
cd ..
如果我们运行pwd,我们将收到/home/sammy输出,如果我们运行ls,我们将收到files输出。
另一个需要熟悉的重要符号是~代表计算机的主目录。在这里,我们的主目录是/home/sammy为 sammy 用户调用的,但在本地计算机上,它可能是我们自己的名称,如sammy-shark/ 中所示。
我们可以在计算机上的任何位置键入以下内容并返回到此主目录:
cd ~
创建和修改文本文件
现在我们已经了解了 Linux 文件系统以及如何解决它的基础,让我们开始创建新文件并了解如何在命令行上操作文本。
首先,我们确保位于用户文件files/夹的目录中/home/sammy,我们可以通过使用 进行验证pwd,或者更改绝对路径上的目录:
cd /home/sammy/files
下来,我们将创建一个新的文本文件。我们将创建一个.txt文件,这是一个可以跨操作系统读取的标准文件。与文件.doc不同,文件由未格式化的.txt文本组成。无格式文本(包括文件中的文本)可以轻松地在命令行上使用,因此可以在以编程方式处理文本数据时使用(例如,自动进行文本分析、从文本中提取信息等)。
我们将从使用touch命令开始,该命令可以创建新文件或修改现有文件。要使用它,我们可以使用该命令touch并将要创建的文本文件的名称作为参数传递,如下所示。
touch ocean.txt
按ENTER 后,我们将收到新的一行命令提示符,并且我们可以列出 的当前内容files/以确保它已创建。
ls
Output
ocean.txt
到目前为止,我们已经创建了一个ocean.txt在创建时不包含任何文本的文件。
如果我们想创建一个用文本初始化的文本文件,我们可以使用该echo命令,该命令用于在Linux中显示文本字符串。
我们可以echo直接在命令行上使用,让界面在我们后面重复。传统的第一个程序可以这样"Hello, World!"编写:
echo Hello, World!
Output
Hello, World!
echo命令本身不允许我们将文本值存储到文本文件中。为此,我们需要输入以下内容:
echo "Sammy the Shark" > sammy.txt
上面的命令使用echo,然后是我们要添加到文件中的文本(用引号引起来),然后是重定向运算符>,最后是新文本文件的名称sammy.txt。
我们可以检查我们的新文件是否存在,再次使用ls.
ls
Output
ocean.txt sammy.txt
现在,我们的/home/sammy/files用户文件夹中有两个文本文件。接下来,我们可以确认该文件sammy.txt确实包含我们要求终端回显的文本。我们可以用cat命令来做到这一点。该命令是 con cat enate 的缩写,cat对于处理文件非常有用。其功能之一是显示文件的内容。
cat sammy.txt
运行命令后,我们将收到以下输出:
Output
Sammy the Shark
如果我们在空文件上运行cat,我们将不会收到任何回复,因为该文件中没有文本。我们也可以将文本添加到这个现有文件中。让我们在文件中添加 Zora Neale Hurston 。
echo "Some people could look at a mud puddle and see an ocean with ships." > ocean.txt
现在,如果我们运行cat,将收到刚刚输入的文本的输出。
cat ocean.txt
Output
Some people could look at a mud puddle and see an ocean with ships.
到目前为止,我们已经创建了文本文件并向这些文件添加了文本,但我们尚未修改这些文件。如果我们想这样做,我们可以使用命令行文本编辑器。有几种流行的选择,包括 Vim 和 Emacs、nano。在这里我们将使用 nano,这是一个不太复杂的 CLI 文本编辑器程序。
可以使用nano命令调用 nano 文本编辑器。如果我们想编辑现有sammy.txt文件,可以通过将文件名作为参数传递来实现。
nano sammy.txt
该文件将在我们的终端上打开:
sammy.txt
Sammy the Shark
使用键盘的箭头键,将光标移动到行尾,然后从 Sammy 的角度开始输入几行。
注意:在命令行上,我们不能使用鼠标或其他指针在文件系统和文件内进行导航。我们需要使用键盘,特别是箭头键来移动文本文件。
当我们完成文件后,它可能会显示如下内容:
sammy.txt
Sammy the SharkHello, I am Sammy.
I am studying computer science.
Nice to meet you!
我们的文件现在包含我们想要的文本,我们现在可以保存并关闭该文件。我们可能会注意到终端窗口底部有一些指导:
^G Get Help ^O WriteOut ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos
^X Exit ^J Justify ^W Where Is ^V Next Page ^U UnCut Text ^T To Spell
因为我们目前已经完成了该文件的处理,所以我们想要Exit该文件。这里,^符号指的是键盘上的ControlorCTRL键,上面的输出告诉我们需要将该键与X(使用这个小写字母,而不按该SHIFT键)组合起来才能离开文件。让我们同时按下这两个键:
CTRL x
上述内容通常内联编写为技术文档CTRL + X或Ctrl+x技术文档中。
此时,我们会收到以下提示:
OutputSave modified buffer? Y YesN No ^C Cancel
为了保存它,我们将按y“是”字母:
y
我们将收到如下反馈。
OutputFile Name to Write: sammy.txt
还有其他选项,包括使用CTRL + C 取消,但如果我们愿意关闭文件,则可以在此时按 ENTER保存文件并退出。
假设我们想要制作一些其他的学习文件。则可以在files/目录中创建一个新目录students:
mkdir students
接下来,移动目录。mv命令代表move ,****它允许我们更改文件的位置。该命令的构造方式是将我们要移动的文件作为第一个参数,将新位置作为第二个参数。以下两个执行将产生相同的结果。
mv sammy.txt students
mv sammy.txt students/sammy.txt
如果我们想更改文件名(如mv sammy.txt students/sammy-the-shark.txt.
现在,如果我们运行该ls命令,我们将看到只有ocean.txt和students/目录位于我们的当前目录 ( files/) 中。让我们进入students/`文件夹。
cd students
我们可以复制该sammy.txt文件以创建更多文件。为此,我们可以使用命令cp,cp代表复制。此命令的工作方式与命令类似,将原始文件作为第一个参数,将新文件作为第二个参数。
cp sammy.txt alex.txt
现在,我们可以打开alex.txt并检查它。
nano alex.txt
到目前为止,alex.txt和sammy.txt相同。通过替换一些单词,我们可以将该文件修改为如下所示。请注意,我们可以使用CTRL + K删除整行。
alex.txt
Alex the Leafy SeadragonHello, I am Alex.
I am studying oceanography.
Nice to meet you!
自动完成和历史记录
许多版本的命令行(包括本文中嵌入的交互式终端)允许我们自动完成并重复使用命令。这可以帮助我们更快地移动,因为它可以节省我们的打字时间。
例如,在使用cat时,在输入完整的sammy.txt文件名之前,按TAB键。可以自动完成完整的文件名,以便我们的终端提示符显示以下内容:
cat sammy.txt
现在,如果我们按ENTER,终端应将文件的内容返回到命令行。
另一个快捷方式是按UP箭头键,这将让我们循环浏览最近运行的命令。在光标闪烁的新行中,按UP几次箭头键可以快速访问之前的命令。
如果我们需要复制在终端中执行的所有命令,我们还可以使用适当命名的history命令来调用此会话的整个历史记录:
history
根据之前的输入内容,我们应该收到 30 行或更多行命令,从以下输出开始:
Output 1 pwd2 mkdir files3 ls4 ls -l
...
熟悉这些快捷方式将为我们提供支持,让我们更加熟练地使用命令行界面。
处理来自 Web 的文件
使用连接到互联网的命令行界面使我们可以访问网络上的所有资源,并可以以自动化的方式对其进行操作。通过该终端,我们还可以直接访问我们拥有凭据的云服务器、管理和编排云基础设施、构建我们自己的 Web 应用程序等。现在,由于我们已经学习了如何在终端上使用文本文件,因此我们将介绍如何从网络上下载文本文件,以便我们使用的机器可以使用该文本文件。
让我们回到files/目录:
cd /home/sammy/files
从这里,我们将使用该curl命令将数据从网络传输到浏览器上的个人交互式终端。该命令curl代表客户端URL(网址)。
例如,拉取一个文件,我们将该文件的 URL 传递给命令curl,如下所示。
curl https://地址/文件名.txt
一旦我们按下ENTER,我们将收到该段落的文本作为终端的输出
Output"You like the sea, Captain?""Yes; I love it! The sea is everything. It covers seven tenths of the terrestrial globe.
...
"Captain Nemo," said I to my host, who had just thrown himself on one of the divans, "this
is a library which would do honor to more than one of the continental palaces, and I am
absolutely astounded when I consider that it can follow you to the bottom of the seas."
虽然在终端窗口上显示文本很有趣,但我们没有可用的文件,我们只传输了数据但尚未存储它。(我们可以通过运行ls来验证该文件不存在)。
为了将文本保存到文件中,我们需要curl使用-O标志运行,这使我们能够将文本输出到文件中,并为本地副本采用与远程文件相同的名称。
curl -O https://地址/文件名.txt
我们将从终端收到文件已下载的反馈。
Output % Total % Received % Xferd Average Speed Time Time Time CurrentDload Upload Total Spent Left Speed
100 2671 100 2671 0 0 68487 0 --:--:-- --:--:-- --:--:-- 68487
如果我们想使用文件的特定替代名称(在本例中为jules.txt)。
curl -o jules.txt https://地址/文件名.txt
我们现在可以像处理任何其他文本文件一样处理该文件。尝试使用cat或使用nano 进行编辑。
在下一节中,我们将清理一些文件并退出终端。
删除文件和终止命令
与任何其他计算机一样,我们有时需要删除不再相关的文件和文件夹,并退出我们正在使用的程序。
我们需要清理一些学习文件和相关文件夹。确保我们位于students/目录中:
cd /home/sammy/files/students
如果我们运行ls,我们的文件夹可能会有一些文件,如下所示:
Outputalex.txt drew.txt jamie.txt jesse.txt sammy.txt taylor.txt
我们可以使用命令删除单个文件,命令rm代表**“**删除”。我们需要将要删除的文件作为参数传递。
警告:请注意,一旦删除文件,就无法撤消。在按ENTER 之前,请确保我们要删除该文件。
rm sammy.txt
现在,如果我们运行ls,我们会注意到sammy.txt不再位于文件夹中:
Outputalex.txt drew.txt jamie.txt jesse.txt taylor.txt
虽然我们现在知道可以使用rm 删除单个文件,但如果我们想要删除整个students/目录及其所有内容,则时间效率不高。
用于删除目录的命令称为**,**rmdir代表删除目录。让我们移动到父文件夹,以便我们可以使用那里的目录(我们将无法删除当前所在的文件夹)。
cd ..
从/home/sammy/用户目录中,我们可以rmdir运行students.
rmdir students
但是,这不起作用,因为我们收到以下反馈:
Outputrmdir: failed to remove 'students': Directory not empty
该命令不起作用,因为rmdir仅适用于空目录,并且该students目录中仍然有文件。(在这里,我们可以创建一个新的空文件夹,然后尝试rmdir使用。可以使用rmdir 删除空文件夹。)
要删除其中仍包含文件的目录,我们需要尝试不同的选项。在计算机科学中,递归通常用于迭代自引用;因此我们可以调用主要项及其所有依赖项。使用rm命令,我们可以递归地删除主students目录及其所有内容依赖项。我们将使用代表递归的-r标志,并将文件夹students作为参数传递。
rm -r students
此时,如果我们运行ls,我们会注意到students/`不再位于我们当前的目录中,并且它所保存的文件也都不可用,因为它们已全部被删除。
完成终端会话后,尤其是在远程服务器上工作时,可以使用exit命令退出终端。一旦我们对本次会话中所取得的成就感到满意(因为我们将无法恢复它),我们可以输入以下内容,然后ENTER离开终端。
exit
在我们的交互式终端上,我们将收到以下输出,确认我们的会话已结束。
Output
Session ended
此会话完成后,我们可以刷新此页面,然后启动新终端来尝试备用命令,或创建一个新文件系统来探索。
结论
恭喜!我们现在已经熟悉了终端界面,并且可以很好地利用计算机和服务器做更多事情
相关文章:
云计算入门——Linux 命令行入门
云计算入门——Linux 命令行入门 前些天发现了一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站。 介绍 如今,我们许多人都熟悉计算机(台式机和笔记本电…...
自然语言处理(NLP)的发展
自然语言处理的发展 随着深度学习和大数据技术的进步,自然语言处理取得了显著的进步。人们正在研究如何使计算机更好地理解和生成人类语言,以及如何应用NLP技术改善搜索引擎、语音助手、机器翻译等领域。 方向一:技术进步 自然语言处理&…...
让uniapp小程序支持多色图标icon:iconfont-tools-cli
前景: uniapp开发小程序项目时,对于iconfont多色图标无法直接支持;若将多色icon下载引入项目则必须关注包体,若将图标放在oss或者哪里管理,加载又是一个问题,因此大多采用iconfont-tools工具,但…...
丹麦公司注册优势 丹麦公司注册条件 丹麦公司注册注意事项
丹麦公司注册优势 1、开-放的商业环境,拥有公平透明的商业法律和制度。 2、简化的注册流程,无需繁琐的审批程序和复杂的材料准备。 3、全球认可的声誉,有助于提升贵公司的国际形象。 4、该国的政-府在坚持适度紧缩的财政政策,…...
C++PythonC# 三语言OpenCV从零开发(4):视频流读取
文章目录 相关链接视频流读取CCSharpPython 总结 相关链接 C&Python&Csharp in OpenCV 专栏 【2022B站最好的OpenCV课程推荐】OpenCV从入门到实战 全套课程(附带课程课件资料课件笔记) OpenCV 教程中文文档|OpenCV中文 OpenCV教程中文文档|W3Csc…...
vue element MessageBox.prompt this.$prompt组件禁止显示右上角关闭按钮,取消按钮,及点击遮罩层关闭
vue element MessageBox.prompt this.$prompt组件禁止或取消显示右上角关闭按钮,取消按钮,及点击遮罩层关闭 实现效果: 实现代码 MessageBox.prompt(请先完成手机号绑定, 系统提示, {confirmButtonText: 提 交,showClose: false,closeOnClic…...
Oracle 日常健康脚本
文章目录 摘要常用脚本 摘要 保持 Oracle 数据库的良好健康状况对于系统的可靠性和性能至关重要。本文将介绍一些常用的 Oracle 日常健康脚本,帮助您监控数据库并及时识别潜在的问题,以保证数据库的稳定运行。 常用脚本 1.查询数据库实例和实例级别的…...
leetcode670最大交换
给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。 示例 1 : 输入: 2736 输出: 7236 解释: 交换数字2和数字7。 示例 2 : 输入: 9973 输出: 9973 解释: 不需要交换。 注意: 给定数字的范围是 [0, 108] int maximumSwap(int num) {…...
XML 注入漏洞原理以及修复方法
漏洞名称:XML注入 漏洞描述:可扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具 有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XM…...
x-cmd pkg | dasel - JSON、YAML、TOML、XML、CSV 数据的查询和修改工具
目录 简介首次用户快速实验指南基本功能性能特点竞品进一步探索 简介 dasel,是数据(data)和 选择器(selector)的简写,该工具使用选择器查询和修改数据结构。 支持 JSON,YAML,TOML&…...
Oracle 19c RAC集群管理 ---------关键参数以及常用命令
Oracle 19c RAC集群管理 ---------关键参数 Oracle 19C RAC 参数最佳实践 --开启强制归档 ALTER DATABASE FORCE LOGGING; --设置 30分钟 强制归档 ALTER SYSTEM SET ARCHIVE_LAG_TARGET1800 SCOPEBOTH SID*; --设置期望undo保持时间3h ALTER SYSTEM SET UNDO_RETENTION21600…...
时限挑战——深度解析Pytest插件 pytest-timeout
在软件开发中,测试用例的执行时间通常是一个关键考虑因素。Pytest插件 pytest-timeout 提供了一个强大的插件,允许你设置测试用例的超时时间。本文将深入介绍 pytest-timeout 插件的基本用法和实际案例,助你精确掌控测试用例的执行时限。 什么…...
Java入门篇:打造你的Java开发环境——从零开始配置IDEA与Eclipse
引言 “工欲善其事,必先利其器” 作为每一位Java初学者的必经之路,搭建合适的开发环境是至关重要的第一步。本篇将详细指导你如何安装并配置两大主流Java开发工具——IntelliJ IDEA和Eclipse,助你在编程之旅上迈出坚实的第一步。 一、Java开发环境准备 1. 下载并安装Java D…...
文本批量处理大师:简化文本处理,释放无限生产力!
在数字化时代,我们每天都要处理大量的文本数据,无论是办公文档、网页内容还是社交媒体帖子。然而,面对海量的信息,传统的一键式操作已经无法满足我们的需求。我们需要一个更高效、更智能的工具来提升我们的工作效率。今天…...
Go 方法
第 1 章 方法 Go 语言也支持面向对象的思想;所谓面向对象编程:1对象就是简单的一个值或者变量,并且拥有其方法2方法是某种特定类型的函数3 面向对象编程就是使用方法来描述每个数据结构的属性和操作; 使用者不需要了解对象本身的…...
深度学习与大数据在自然语言处理中的应用与进展
引言 在当今社会,深度学习和大数据技术的快速发展为自然语言处理(NLP)领域带来了显著的进步。这种技术能够使计算机更好地理解和生成人类语言,从而推动了搜索引擎、语音助手、机器翻译等领域的创新和改进。 NLP的发展与技术进步…...
GPT4+Python近红外光谱数据分析及机器学习与深度学习建模
详情点击链接:GPT4Python近红外光谱数据分析及机器学习与深度学习建模 第一:GPT4 1、ChatGPT(GPT-1、GPT-2、GPT-3、GPT-3.5、GPT-4模型的演变) 2、ChatGPT对话初体验 3、GPT-4与GPT-3.5的区别,以及与国内大语言模…...
Java项目:12 Springboot的垃圾回收管理系统
作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 1.介绍 垃圾分类查询管理系统,对不懂的垃圾进行查询进行分类并可以预约上门回收垃圾。 让用户自己分类垃圾, 按国家标准自己分类…...
HarmonyOS自定义弹出对话框CustomDialog并传递变量
HarmonyOS定义了一系列弹窗反馈类的组件 和前端开发框架VUE3配套生态库element plus中的提供各种组件相比,还是要少一些。可能是手机端操作和PC端操作的差异导致的 如果内置的弹窗不满足要求,可以基于CustomDialog自定义出各种个性化的反馈组件。 首先新建一个ets文件,…...
React16源码: React中的renderRoot的错误处理的源码实现
renderRoot的错误处理 1 )概述 在 completeWork这个方法之后, 再次回到 renderRoot 里面在 renderRoot 里面执行了 workLoop, 之后,对 workLoop 使用了try catch如果在里面有任何一个节点在更新的过程当中 throw Error 都会被catch到catch到之后就是错误…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
