文件、文本阅读与重定向、路径与理解指令——linux指令学习(一)

        前言:本节内容标题虽然为指令,但是并不只是讲指令, 更多的是和指令相关的一些原理性的东西。 如果友友只想要查一查某个指令的用法, 很抱歉, 本节不是那种带有字典性质的文章。但是如果友友是想要来学习的, 那么本篇文章很适合, 而且非常适合初入linux的小白。

目录

基本指令

常见指令

文件的属性与类型

.文件的作用

路径

..文件的作用

其他基本指令

基本指令2

如何看待指令

重定向与阅读文本


基本指令

常见指令

ls、 cd、 pwd、mkdir、 touch

  • ls:显示当前目录下的文件信息
  • cd:进入某一个文件夹
  • pwd:查看当前路径
  • mkdir:创建文件夹
  • touch:创建普通文件

903e3e9b085342609bbf028af9b77608.png

文件的属性与类型

        在linux中, 可以将文件分为两类, 一类是普通文件, 也就是touch出来的; 一类是文件夹, 也就是mkdir出来的。 对应我们windows中的文件夹(如图红框框)和普通文件(如图蓝框框)

b35605d8c6ce435f8f8f130d540e1946.png

另外, 指令也可以携带选项。 比如ls -a就是显示隐藏文件。 ls -l就是详细的显示文件的属性。 

2b1844c108034836a85cb41f1085a896.png

        第一个红框框是显示隐藏文件,是的, 文件也是有隐藏文件和非隐藏文件的区别的。“."这个其实就是一个隐藏文件夹, 表示当前目录。 ".."也是一个隐藏文件夹, 表示上级目录。

        第二个红框框是详细的显示文件属性。 文件 = 文件的数据 + 文件的属性。 文件的属性也是数据, 是数据就要存储, 那么就要占用空间。 所以当我们创建一个空文件, 里面即使没有保存任何信息, 这个文件也要占用磁盘空间。所以, ls显示文件信息, 本质上就是在显示文件的属性。

        同时, 文件的操作 = 文件内容的操作 + 文件属性的操作

        现在来看一下下面这张图中前面的一个长条红框框。 框起来的部分就是文件的类型。 

f387743c14984fc286d4e2534bc445e0.png

文件的类型分为: 文件目录——以d开头、 普通文件——以-开头。

        第三个红框框是ls -al, 这个指令是将ls -a 和ls -l的后面的选项合起来。 这样用是没有问题的。 结果就是既显示隐藏文件, 也会详细的将文件属性显示出来。

.文件的作用

在linux中, 任何文件目录下面都有两个隐藏文件"."和".."为什么? 他们有什么用?

        首先来看".", 这个隐藏文件是表示当前目录。 我们在执行某些程序或者操作(本质上都是文件, linux下一切皆文件)时, 可能需要确定是哪个路径下的程序或者操作。 这个时候, 如果要执行当前目录下的程序或者文件, 我们就要用到".", 表示执行当前目录下的某些操作。如图a.out是一个可执行文件:

9263c0456434457f912e1cff48a91946.png

路径

        在了解“..”的作用之前, 我们要先了解路径的相关概念:

        这里可以思考一个问题, 那就是对于一个文件夹来说, 它可以放另一个目录或者放普通文件。 那么就决定了我们的目录结构, 我们的目录结构一定是一个多叉树的样子。

        linux的目录结构的叶子节点一定是一个空目录或者一个普通文件。而它路上的节点, 一定是一个非空目录。所以 我们对于文件目录的增删查改, 实际上都是对这棵多叉树的增删查改。 

        对于一个文件来说, 我们找到这个文件就要有这个文件的路径。 也就是多叉树上面的路径。那么为什么可以使用路径呢? 

        这是因为路径具有唯一性。 对于一棵多叉树来说, 每一个根节点都只有一个父亲节点。 那么就是说这个根节点回推到某一节点, 只有一条路可以走。 所以路径具有唯一性。

        接下来看一下路径分隔符, 这个小斜杠就是路径分隔符:

53ea0a9439fa45a38a15df02229d4961.png

   路径分为绝对路径和相对路径 

  •          绝对路径:绝对路径就是从我们的根目录下(/), 定位到某一个特定位置, 具有唯一性的路径叫做绝对路径, 如图:

6195ab49ff7645928f6cbac77830172b.png

  •         相对路径:如果我们目前在dir2目录下, 如果_mian_yang目录下还有一个dir3.那么../dir3就是dir3相对于dir2的相对路径。

    两个路径的比较

  • 绝对路径通常比较长, 但是永远不会变, 一般在一定场景, 如文件配置。

a862cab07c134fa4953c643769a0c073.png

  • 相对路径往往比较短, 一般命令行输入, 比较常用相对路径。

2f5fa1b43d2f4550815235051579e14d.png

..文件的作用

         而"..", 就可以用在相对路径中, 比如cd ../dir3路径, 意思是进入上级目录中的dir3兄弟文件夹中。 

其他基本指令

//ls -F

ls -F能够显示文件的类型, 在最后显示/代表文件夹, 在最后显示*代表可执行文件, 什么都不带代表普通文件。

c5a4a0228abd44fba845179825ff80fa.png

//whoami

查看自己当前的账户

0c5a3cc39e184c46b71a8f716a12098c.png

在linux中, 所有普通用户账号都会放到home目录下面, 进入路径是: /home

6d002940318445eab6f3cfc275993a26.png

 home目录对应着windows中的用户:

ae12669baac64f73beefe6723447135b.png
//cd~

cd~的作用是返回当前账户的家目录:

普通用户返回家目录:

ecc1bfa25ff04b5cbdfe7167f7ca92e4.png

root用户返回家目录:

6f148d515baa4ee88b143dea5fe00cfc.png

1888a357eb1b429e82437c72523c1201.png

//mkdir -p 一串文件

2cc3892a821c4885af1fdad53cb689c7.png

//cd -, cd - 可以返回到上一级的路径中

30e3ce840eae49b1bd8a4f57a3c435a6.png

基本指令2

rm

rm是删除指令,后面什么都不加时, 可以删除普通文件。 但是如果要删除一个目录文件就会删除失败。

f2fb9db0a1694192842ed2236e098261.png

517c1f835c404a8baf782e2342a49cbe.png

rm -r 可以删除目录文件, r的意思是递归。 这条指令也就是递归删除。 

0cc62c625e3043a583b0035504f65a2e.png在默认情况下, 我们的普通用户删除东西时, 系统不会确认我们是否删除 

4b278d841fbb48d39a31643ced936744.png

但是如果是root账户, 我们删文件(这个的所有者是root)时, 系统就会确认我们是否删除, 并且如果删除一个目录文件, 还会一层一层的问我们是否删除。 

54d06f3380cb45299ed14f59eec4e0bb.png

那如果我们普通用户下想要让系统问我们就要使用 rm -i。

如果我们root账户下不想让系统问我们就要使用 rm -f。

//man手册

使用方式 man + 指令

man man就是询问自己的功能, 查看自己的详细信息。

man有版本的说法, man1一般就是指令接口, man2一般就是系统接口,man3一般就是c语言接口。

man手册在查找的时候, 如果不加编号, 那么默认会从第一号手册开始, 一个手册一个手册往下找, 直到找到或者所有手册找完也没有找到。(退出用q)

d7d3615429d54adcb288743184bfd125.png

3a25742c0a6641cfa1a81c13f0ffd725.png

//先来简单的说一说echo,和cat

echo可以将后面的字符串默认加上换行符并打印到显示器上。

16b6bbbea684478082aa9ad40d94e5ad.png

但是, 当我们在字符串的后面加 > 文件名的时候, 就会发生输出重定向, 原本应该打印到显示器上的内容就会被打印到文件里。 

55979c34dafb4347b846417605ac4c9d.png

然后要看到hl.txt文件里面的内容就要使用cat, cat + 文件名 是在文件里面读取数据打印到显示器上面。
3525801931fd4eb3a89ea82f9f25adf9.png

//cp

cp的功能是拷贝,就是用一个文件拷贝出另一个文件, 文件名可以不同, 但内容相同。相当于windows里面的cv。

        cp 文件1 文件2, 这里的文件1就是原版本, 这里的文件2就是要拷贝出来的文件。 文件2默认被拷贝在当前目录, 但是尝试告诉我们相同目录不能又相同名字的文件, 所以当前目录如果又和它同名的文件, 这个文件就会被覆盖。

        cp 文件1 路径, 将文件1拷贝到相应路径上, 这个更加灵活,根据上面所学的相对路径或者绝对路径, 可以随便拷贝到一个路径下面。 需要注意的是, 如果路径的末尾是目录, 那么就会拷贝到目录下面,并且文件名默认就是文件1的名称。但是如果路径的末尾是普通文件, 那么就会生成这个文件, 如果存在同名, 就把它覆盖掉。(这个应该是常识, 和windows上一样, 这里只是梳理一下, 其实文件1也可以是一条路径, 就是将某个路径下的文件拷贝到某个路径下

        需要注意的是, 当cp在覆盖的时候, 系统会确认我们的操作, 如果我们不想看到这个确认, 就可以加上-f选项。 同理, -i选项就是想要被他询问。 

//mv

mv是剪切并重命名, 有了上面学习cp的基础, mv就比较简单了。 我们可以直接这样记

        mv 路径1/文件名1 路径2/文件名2 其实就是将一个路径下的文件, 剪切到一个路径下。 就是将路径1里面的文件1剪切到路径2里面并且重命名。 需要注意的是如果有重名的,同样会将原本的那个覆盖掉。 还有, 如果文件2是一个目录, 那么就是将文件文件1剪切到文件2里面。 名字是默认的文件1的名称。 

知道了剪切, 我们就可以做一些操作了。

如何看待指令

        我们应该如何去看待指令呢?

        其实, 指令和我们写的可执行程序a.out都是可执行的, 所以指令的本质其实就是一个可执行程序

        那么看这样一个例子:

a26b301ea8d14144aff3b99d39116d0e.png

这里我乱写了一串指令, 很显然, 系统中不存在这条指令。 那么它为什么知道不存在?是不是因为系统查找了所有指令,但是找不到一条和我要的相同的? 所以, 我们就可以推断, 指令在执行之前, 系统会先寻找指令。 那么这个指令在哪里寻找呢? 答案就是/usr/bin里面。 这里就是系统查找指令的地方, 所有指令都在这里放着————即:指令是在系统的特定路径下存在的, 它一定是某种可执行程序。

2a1ba86dbd14459b82954c9648928688.png

那么, 如果我们将我们自己写的程序,放到这里面, 是不是就相当于我们自己写的程序也是一条指令了? 这个过程, 其实就是安装程序。 现在我们来自己写一个a.out并把它放在/usr/bin里面, 下次我们使用的时候就不需要加./了:

ecc058bbb19f463faf675b66575a7e72.png

所以, 指令的本质就是可执行程序, 和我们自己写的代码, 编译好的程序, 没有本质区别。 但是如果我们不想要这个指令的时候还可以把他从/usr/bin里面移出来, 这个过程就是卸载程序:

0868fc455f4e4b30a6a05eae5a2c1f75.png

综上,我们可以得到, 指令的本质就是一个可执行文件, 只不过这个可执行文件被自动安装到了系统的搜索目录下面。

-----------------------下面接着讲其他指令

//alias取别名

alias的用法是: alias 取的别名='指令'

ll其实就是一个别名, 要查看这个别名, 我们可以使用which,这里会告诉我们ll的原型是什么。

06f65e1d34d147a2bc66b55552bf82b5.png

 我们可以自己给某个指令取一下别名:

fc29d336dc7f4158a7fcd46c211903bb.png

然后取消别名就是将这个la的别名变成空指令的别名:

f04bbdfcdb4347d49148cf6156ed45a6.png

------------------

重定向与阅读文本

现在先来了解一个概念:linux下一切皆文件, 显示器, 键盘, 磁盘文件。 都是文件

 我们使用cat指令,如果我们cat后面什么都没加, 那么cat就会默认在键盘上面读取:

61c1ba747e0d4e6d81b039b0ffe517b0.png

        注意, 这里我们虽然输入字符s, 显示器上就有一个s, 回车又会打印一个s。 为什么是从键盘上读取, 而不是从显示器上读取?因为这里本质上其实就是从键盘上读取字符, 而我们之所以输入一个字符, 能够在显示器上显示出来, 是因为我们在键盘上输入后, 显示器给我们回显到了屏幕上。 所以本质还是从键盘上读取。

        对于显示器来说, 它没有读方法(NULL), 只有写方法(fwrite)。 对于键盘来说, 他只有读方法(fread), 没有写方法(NULL)。 而普通文件读方法和写方法都有。 而在linux的视角下,NULL也是有, 所以linux下面所有文件都有读写方法。 

        所以, 这里可以重新来理解一下重定向: 把本应该写到显示器文件上的内容写到了普通的磁盘文件中, 这就叫做重定向。

e3127dde0c3f464282146ac262d2011b.png

3490fdf2ddd640c88221a6f1a93800ce.png

关于重定向, 我们还要了解到就是, 其实我们使用重定向, 它一共做了两个步骤:

1、清空文件

2、向文件中写入内容。

比如下面这个例子, 就是什么都没写, 只清空了文件。

75ca8d8eb6394518969dc750f2c61320.png

//>>追加重定向

        >是先清空再向文件中写入内容。但是如果我们不想要清空文件, 就要是用>>, 这个是在文件的后面追加内容。

ab43dafb58cd45d2b5a8f32f0276124c.png

        这里echo默认后面会添加换行符, 如果不想添加换行符, 就要使用printf

ac15c00df0244d93995f60633df8bfc6.png

//<输入重定向

cat当什么都不加的时候是默认从键盘上读取数据。但是如果我们cat < 文件名, 就相当于cat 文件名, 意思是从文件中读取数据。另外, cat还有一些选项:

cat -n 文件名, 对文件打印, 并且打印行号。

cat -b 文件名, 对文件带你, 并且对非空行打印行号。

cat -s 文件名, 对文件打印, 如果有多个空行连起来, 那么只打印一个空行。

//more和less读取大文件 

cat不适合读取大文件,more和less更适合读取大文件。 当我们用cat读取大文件时:

2235b0965569464a8af8be588d3a498e.png

我们智能使用鼠标向上滑动地翻找。

我们使用more读取大文件, 文件会只将屏幕打满, 我们向下翻找只需要按空格。

a587020447364859a40d0ddc946245d3.png

并且可以输入行号跳转到相应行数:

48aa727b3c6b495087c17ce4e062f956.png

但是还有一些问题, 那就是不能上翻。 所以我们通常很少使用more, 更多的是使用less阅读大文件, less阅读大文件, 按上就是向上翻, 按下就是向下翻。

//head 和 tail 和 管道

head可以拿到文件中的前n行。 用法是 : head -行数 文件名:

0dd65407dc454600bc00a2995fb8fae1.png

tail 可以拿到文件中的倒数n行。 用法是: tail -行数 文件名:

52a8d764aee4428f87d6f0c864c64d67.png

        如果此时我们要拿到中间5000行左右的数据怎么办?

        我们可以先拿到前5000行数据放到一个新的文件中, 然后再对新的文件取后几十行, 就能拿到中间5000行左右的数据了。 但是这个方法有个问题, 就是必须创建中间文件, 但是我们不想创建中间文件。 怎么办?

        这里可以使用管道 | : 管道也是管道文件, 它是一种内存级文件(什么意思,博主也不懂)。

但是管道文件的作用就是将符号左边的数据结果放到自己里面, 再将数据交给右边进行计算。 相当于起到中转的作用。在计算机中, 数据就是资源, 而管道文件就是输送数据这种资源。 用法:
f93616162177430498de66cdb0c357b0.png

--------------

以上, 就是本节全部内容。

 //ps:下面都是一些对于操作系统的理解与一些课堂笔记, 友友们没有兴趣自行退出即可

        操作系统是管理软硬件资源的软件。 计算机中最底层的就是硬件——比如cpu、显卡、网卡、显示器、键盘等等。 这些硬件的上一层就是驱动器, 驱动器是用来驱动硬件进行工作的。 而这些驱动器的上一层就是操作系统, 操作系统通过管理驱动器, 进而管理硬件。最上层其实就是应用软件。 应用软件提出需求, 操作系统根据需求间接管理硬件, 让硬件做出相应的工作。

        综上, 操作系统, 驱动器, 硬件就是三层软硬件资源, 提供了一套软硬件服务。

        如图:

cf17b9d6ab01485aae0c4420aa59b436.png

        对于如图四层资源, 我们可以这样理解:

  •         操作系统: 管理和决策——相当于boss
  •         设备驱动: 沟通底层硬件, 接收操作系统的命令——相当于项目经理
  •         硬件: 执行工作, 办事——相当于程序员
  •         应用程序: 向操作系统提出需求——相当于用户

在日常中, 需要有各种各样服务的软件,来满足用户各种各样的需求。       

        个人笔记:

27ae46b1589741359f99eb49418df92b.png

那么, 一个好的操作系统的衡量指标是什么, 为什么要有操作系统呢?

        首先一个好的操作系统, 不能用着用着蓝屏——要稳定; 其次, 一个好的操作系统不能用着非常卡, 体验不好——要快, 流畅; 最后, 一个好的操作系统, 用户的信息要安全, 否则信息很容易被盗取, 用户的体验不好——要安全

        至于为什么要有操作系统, 这就涉及到了操作系统的核心工作, 操作系统的核心工作就是通过对下管理好软硬件资源的手段, 达到对上提供良好的, 稳定快速安全的操作环境

        个人笔记:

a8d372003d9b447fa9913fb7f45540ce.png

        那么, 我们如何理解我们在计算机中执行的各种操作呢?

        比如我们使用printf在显示器上打印, 向磁盘中写入数据, 玩游戏时像网络中发送请求等等这些操作。 这些软件操作其实最终都会被转化为硬件操作。

        也就是说, 我们日常在计算机上面执行的各种行为, 最终都会被转化为硬件行为。

        比如说我们使用printf, printf最终会打印到我们的显示器上。 其实本质就是通过软件将内容打印到了硬件上。        我们向磁盘中写入数据, 其实就是将代码——软件, 写到了磁盘——硬件上。         还有我们打网络游戏时, 为什么我们能够同步的看到别人的状态情况,其实就是因为我们每个人的电脑都在向服务端推送数据, 而这个推送的过程中, 就要先将数据输入到网卡上面。

         综上, 我们任何软件的行为, 最终都会转换为硬件行为。 并且这个过程自顶向下, 贯穿整个计算机软硬件结构, 而软件的下层挨着的就是操作系统。所以未来我们进行各种计算机操作, 都和操作系统直接或者间接的相关

        个人笔记:

2b698a43225c47acb690ebe6f06788d5.png

----------

下面是本节全部的笔记(个人笔记,整理很乱, 友友们自行选择是否观看):

0ecc105a75aa40079df53953b24fa07c.png

0ec32c83239844ff9711341133333fd2.png

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

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

相关文章

带有网站和 PHP 后端的占星咨询应用程序 | 包括聊天、音频视频通话源码

我们的应用程序基于 Astrotalk、Guruji 等热门业务&#xff0c;这些业务已经在市场上取得成功。 我们的应用程序配备了用 Laravel 开发的功能齐全的后端&#xff0c;Laravel 是一种广泛使用的基于 PHP 的 Web 应用程序框架。 总的来说&#xff0c;我们的新占星术应用程序对于…

Midway Serverless 发布 2

可以看看优化后的开发情况&#xff0c;不仅和应用一样&#xff0c;速度还比较快&#xff0c;也不会生成临时目录&#xff0c;修改实时生效。 这是 v2.0 和 v1.0 的根本性变化&#xff0c;也是整体架构升级带来的巨大优势。 当然&#xff0c;这一块并不是功能的新增&#xff0c…

AcWing 1550:完全二叉搜索树

【题目来源】https://www.acwing.com/problem/content/1552/【题目描述】二叉搜索树 (BST) 递归定义为具有以下属性的二叉树&#xff1a; &#xff08;1&#xff09;若它的左子树不空&#xff0c;则左子树上所有结点的值均小于它的根结点的值 &#xff08;2&#xff09;若它的右…

有趣的算法

目录&#xff1a; 1、百钱买百鸡 2、韩信点兵 1&#xff09;概述 2&#xff09;正常取余算法 3&#xff09;循环算法 1、百钱买百鸡 我国古代《算经》中的“百钱买百鸡”问题&#xff1a; 鸡翁一&#xff0c;值钱五&#xff1b;鸡母一&#xff0c;值钱三&#xff1b;鸡…

《梦醒蝶飞:释放Excel函数与公式的力量》9.2 FV函数

9.2 FV函数 FV函数是Excel中用于计算投资或贷款在若干期后的未来值的函数。它是一个非常实用的财务函数&#xff0c;能够帮助我们快速计算投资的最终价值或贷款的期末余额。 9.2.1 函数简介 FV函数用于计算基于定期固定支付和固定利率的投资或贷款的未来值。未来值是指在一定…

【电商纯干货分享】干货速看!电商数据集数据API接口数据分析大全!

数据分析——深入探索中小企业数字化转型&#xff0c;专注提供各行业数据分析干货、分析技巧、工具推荐以及各类超实用分析模板&#xff0c;为钻研于数据分析的朋友们加油充电。 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09…

初学嵌入式是弄linux还是单片机?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“666”之后私信回复“666”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;1、先入门了51先学了89c52…

白嫖A100-interLM大模型部署试用活动,亲测有效-2.Git

申明 以下部分内容来源于活动教学文档&#xff1a; Docs git 安装 是一个开源的分布式版本控制系统&#xff0c;被广泛用于软件协同开发。程序员的必备基础工具。 常用的 Git 操作 git init 初始化一个新的 Git 仓库&#xff0c;在当前目录创建一个 .git 隐藏文件夹来跟踪…

Linux|信号

Linux|信号 信号的概念信号处理的三种方式捕捉信号的System Call -- signal 1.产生信号的5种方式2.信号的保存2.1 core 标志位 2.信号的保存2.1 对pending 表 和 block 表操作2.2 阻塞SIGINT信号 并打印pending表例子 捕捉信号sigaction 函数验证当前正在处理某信号&#xff0c…

3-3 超参数

3-3 超参数 什么是超参数 超参数也是一种参数&#xff0c;它具有参数的特性&#xff0c;比如未知&#xff0c;也就是它不是一个已知常量。是一种手工可配置的设置&#xff0c;需要为它根据已有或现有的经验&#xff0c;指定“正确”的值&#xff0c;也就是人为为它设定一个值&…

Linux系统的服务——以Centos7为例

一、Linux系统的服务简介 服务是向外部提供对应功能的进程&#xff0c;其运行在系统后台&#xff0c;能够7*24小时持续不断的提供外界随时发来的服务请求&#xff0c;且服务进程常驻在内存中&#xff0c;具有固定的端口号&#xff0c;通过端口号就能找到服务内容。 提供服务的一…

2000-2022年地级市数字经济指数(含控制变量)

2000-2022年地级市数字经济指数&#xff08;含控制变量&#xff09; 目录 数字经济对区域经济发展的影响实证研究 一、引言 二、文献综述 三、数据来源与变量说明 四、实证模型 五、程序代码与运行结果 数字经济对区域经济发展的影响实证研究 摘要&#xff1a; 本文旨在…

Ubuntu防火墙相关内容

Ubuntu防火墙相关的命令&#xff0c;主要用于日常使用过程中&#xff0c;忘记命令时查找方便&#xff0c;不用再去各种地方搜索了。以下命令均已root用户执行&#xff0c;如果是非root用户&#xff0c;需要添加sudo 查看防火墙的启用状态 ufw status 说明是启用状态。 启用防…

Fish Speech: 开源文本转语音技术(TTS)的新里程碑

简介 Fish Speech 是一个全新的文本转语音(TTS)解决方案&#xff0c;该项目由fishaudio开发。当前模型使用约十五万小时三语数据训练&#xff0c;对中文支持非常的完美。 能够熟练处理和生成中文、日语和英语的语音&#xff0c;语言处理能力接近人类水平&#xff0c;并且声音…

代码随想录算法训练营第4天|LeetCode24,19,02,07,142

24.交换链表结点 题目链接&#xff1a;24. 两两交换链表中的节点 - 力扣&#xff08;LeetCode&#xff09; 文章链接&#xff1a;代码随想录 (programmercarl.com) 视频链接&#xff1a;代码随想录算法公开课 | 最强算法公开课 | 代码随想录 第一想法 正常模拟&#xff0c;先画…

算法金 | 欧氏距离算法、余弦相似度、汉明、曼哈顿、切比雪夫、闵可夫斯基、雅卡尔指数、半正矢、Sørensen-Dice

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 抱个拳&#xff0c;送个礼 在算法模型构建中&#xff0c;我们经常需要计算样本之间的相似度&#xff0c;通常的做法是计算样本之间的距…

性价比蓝牙耳机排行榜前十名有哪些?十大性价比蓝牙耳机榜单盘点

作为使用真无线蓝牙耳机长达5-6年的资深爱好者&#xff0c;我始终对音频技术和产品的创新保持着浓厚的兴趣&#xff0c;最近&#xff0c;我投入了一笔不小的资金&#xff0c;超过大几千元&#xff0c;用于深入测试和评估市面上多款来自各大品牌的真无线蓝牙耳机&#xff08;包括…

EtherCAT转Profinet网关配置说明第一讲:配置软件安装及介绍

网关XD-ECPNS20为EtherCAT转Profinet协议网关&#xff0c;使EtherCAT协议和Profinet协议两种工业实时以太网网络之间双向传输 IO 数据。适用于具有EtherCAT协议网络与Profinet协议网络跨越网络界限进行数据交换的解决方案。 本网关通过上位机来进行配置。 首先安装上位机软件 一…

用递归解决冒泡排序问题

冒泡排序是种很简单的排序方式. 如果用循环方式, 通常就是两层循环. 由于两层循环都是与元素个数 N 线性相关, 所以可以简单估算出它的时间复杂度是 O(N2), 通常而言, 这是较糟糕的复杂度. 当然, 这也几乎是所有简单方式的宿命, 想简单就别想效率高! 前面篇章说到递归也是一种循…

基于Java技术的人事管理系统

你好&#xff0c;我是专注于计算机科学领域的小野。如果你对人事管理系统感兴趣或有相关需求&#xff0c;欢迎私信交流。 开发语言&#xff1a; Java 数据库&#xff1a; MySQL 技术&#xff1a; B/S模式、Java技术、SpringBoot 工具&#xff1a; Eclipse、MySQL、浏览…