当前位置: 首页 > news >正文

【Linux】Linux 的管道与重定向的理解

 目录

 

一、了解Linux目录配置标准FHS

二、Linux数据重定向的理解与操作

2.1基本背景

2.2重定向的理解

2.3Linux管道命令的理解与操作

三、Linux 环境变量与PATH

3.1环境变量PATH


一、了解Linux目录配置标准FHS

FHS本质:是一套规定Linux目录结构,软件建议安装位置的标准。

(使用Linux来开发产品或者发布软件的公司、个人太多,如果每家公司或者个人都按照自己的意愿来配置文件或者软件的存放位置,这无疑是一场灾难 ! )

# 进入根目录
[root@localhost home]# cd /
# 下载tree命令:以树状图查看目录结构
[root@localhost ~]# yum install -y tree# 查看目录树:
# tree -d -L 1 用于以树状图的形式显示指定目录下的内容。
# 其中,-d 选项表示只显示目录名称,而不显示目录内容;-L 1选项表示只显示第一层目录。
[root@localhost /]# tree -d -L 1.
├── bin -> usr/bin #可执行文件目录,linux自带命令在这里
├── boot #开机会使用到的文件,包括Linux核心文件以及开机菜单与开机所需配置文件等等。
├── dev #设备目录
├── etc #配置文件几乎都放置在这个目录内,例如人员的帐号密码档、 各种服务的启始档等等。
├── home #家目录,系统默认的使用者主文件夹,用户的个人文件都可放在这里
├── lib -> usr/lib #放置在开机时会用到的函数库,以及在/bin或/sbin下面的指令会调用的函数库
├── lib64 -> usr/lib64 #与lib类似
├── media #放置可移除的设备,包括软盘、光盘、DVD等等设备都暂时挂载于此。
├── mnt #设备临时挂载目录
├── opt #第三方协力软件放置的目录
├── proc #是一个虚拟文件系统,放置内存中的数据,不占用硬盘空间
├── root #系统管理员的主文件夹
├── run #放置系统开机后所产生的各项信息
├── sbin -> usr/sbin #里面包括了开机、修复、还原系统所需要的指令,root用户使用
├── srv #service是一些网络服务启动之后,这些服务所需要取用的数据目录。
├── sys #与proc类似
├── tmp #temp,让一般使用者或者是正在执行的程序暂时放置文件的地方
├── usr #unix software resource:与软件安装/执行有关
└── var #variable,与系统运行过程有关,主要为变动性较大的数据
19 directories
————————————————

linux目录结构详细说明:linux目录结构详细说明 


二、Linux数据重定向的理解与操作

2.1基本背景

基本大部分计算机,要与人交互,都要默认打开三个设备(文件)

  • 标准输入,stdin,代码是0
  • 标准错误,stdout,代码是1
  • 标准错误输出,stderr,代码是2

为什么?Linux一切皆文件,交互需求,输入输出信息分类。除了上面的三个标准设备(文件), 我们可能经常有从文件读取数据,或者将数据写入文件的场景。

2.2重定向的理解

输出/追加重定向:本来应该显示到显示器(通常)文件的内容,写入到文件当中。
输入重定向:或者本来应该从显示器(通常)文件读取数据,转化成从指定文件读取数据

# 当前只有三个文件
[root@localhost Practice]# ls
test2.txt  test3.txt  test.txt
# 本来应该输出在控制台输出到了文件中
[root@localhost Practice]# echo 'Hello World' > test.txt
[root@localhost Practice]# cat test.txt
Hello World
# 将'I am xx '输入到test.txt文件中,我们发现原来的内容被覆盖
[root@localhost Practice]# echo  'I am xx ' > test.txt
[root@localhost Practice]# cat test.txt
I am xx 
# 追加重定向:>>
#将指定内容追加到文件内容的末尾[root@localhost Practice]# echo 'Hello World' >> test.txt
[root@localhost Practice]# cat test.txt
I am xx 
Hello World
# 输入重定向:cat本来是查看文件内容
# 现在表示向test.txt中写数据
[root@localhost Practice]# cat > test.txt
nihao
#输入我们要写入的数据
#查看test.txt文件中的内容,发现之前的内容被nihao覆盖了
[root@localhost Practice]# cat test.txt
nihao
# 查看test2.txt文件的内容
[root@localhost Practice]# cat test2.txt
Hello Linux
# 理解:将test2.txt文件的内容写入test.txt文件
[root@localhost Practice]# cat < test2.txt > test.txt
[root@localhost Practice]# cat test.txt
Hello Linux

2.3Linux管道命令的理解与操作

命令是可以产生数据的,如果我们还要多输出数据进行加工,甚至想多次加工,就需要使用管道

[whb@VM-0-3-centos ~]$ last #显示正在或者最近登录linux的用户信息
whb pts/5 123.139.120.197 Tue Mar 2 16:24 still logged in
wudu pts/4 222.91.65.7 Tue Mar 2 15:34 still logged in
wudu pts/3 222.91.65.7 Tue Mar 2 15:34 still logged in
whb pts/2 123.139.120.197 Tue Mar 2 15:21 still logged in
root pts/1 222.91.65.7 Tue Mar 2 15:03 still logged in
whb pts/0 123.139.120.197 Tue Mar 2 13:59 still logged in
wudu pts/2 222.91.65.7 Tue Mar 2 12:12 - 13:52 (01:39)
wudu pts/1 222.91.65.7 Tue Mar 2 12:12 - 13:52 (01:39)
root pts/0 222.91.65.7 Tue Mar 2 12:12 - 13:52 (01:39)
wudu pts/9 222.90.196.96 Mon Mar 1 14:48 - 01:38 (10:50)
wudu pts/6 222.90.196.96 Mon Mar 1 14:41 - 01:38 (10:57)
root pts/8 222.90.196.96 Mon Mar 1 14:19 - 01:39 (11:19)
wudu pts/7 222.90.196.96 Mon Mar 1 14:16 - 01:39 (11:22)
#如果我只想看到前5条信息呢?
[whb@VM-0-3-centos ~]$ last | head -5 
#其中'|'就是管道
#head是一个截取文本行的工具
whb pts/5 123.139.120.197 Tue Mar 2 16:24 still logged in
wudu pts/4 222.91.65.7 Tue Mar 2 15:34 still logged in
wudu pts/3 222.91.65.7 Tue Mar 2 15:34 still logged in
whb pts/2 123.139.120.197 Tue Mar 2 15:21 still logged in
root pts/1 222.91.65.7 Tue Mar 2 15:03 still logged in
...

可见,管道是可以级联多条命令的,每条命令的结果输出,都作为输入,导入下一条命令。有点像流水线.( | 前的内容作为输入,| 后的内容作为输出)

7b36af4dd8214e42ae695cc068f56626.png

三、Linux 环境变量与PATH

假设我们想用C写一个输出 ‘hello world’ 的程序

[whb@VM-0-3-centos test]$ cat test.c
#include <stdio.h>
int main()
{printf("hello world\n");return 0;
}
# 编译文件gcc -o
[whb@VM-0-3-centos test]$ gcc -o mycmd test.c
[whb@VM-0-3-centos test]$ ll
total 16
-rwxrwxr-x 1 whb whb 8400 Mar 2 16:46 mycmd
-rw-rw-r-- 1 whb whb 74 Mar 2 16:46 test.c
#等等,这个 './' 是什么东西?mycmd从构成上,也可以认为是一个命令
#像ls,就在/bin/ls or /usr/bin/ls, 为什么执行ls命令不需要带路径呢?(尽管也可以)
[whb@VM-0-3-centos test]$ ./mycmd
hello world

3.1环境变量PATH

是一个路径集,命令再被执行时,系统会在环境变量PATH中进行路径查找,如果找到,就停止查找,执行命令。

[whb@VM-0-3-centos test]$ echo $PATH #不同环境,平台可能内容会有不同
/usr/local/jdk8/bin:/usr/local/jdk8/jre/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sb
in:/home/whb/.local/bin:/home/whb/bin
$: 用来显示PATH环境变量的内容
#各个路径以 : 作为分隔符,每个区域代表一个搜索路径

这也就解释了,为何 ls 不需要带路径,因为 ls 所在的路径,本身就在PATH环境变量列表当中。

一条命令的执行过程:

1.找到

2.执行

当我们执行自己的命令时,需要加./,而系统命令不同,这是因为自己的命令系统找不到没有路径。在系统中,可执行程序的搜索路径保存在一个‘全局变量’PATH中(作用:给系统提供命令的搜索路径,是环境变量的一种)

查看'PATH的内容'--》相当于一个字符串:保存了多条路径,路径之间通过 :作为分隔符。采用从左向右依次进行程序搜索,找不到就搜索下一条路径,最终没有找到会报command not found的错误

# which 验证发现 ls 命令在系统的环境变量中存在
[whb@VM-0-3-centos test]$ which ls #which 显示指定命令所在路径
alias ls='ls --color=auto'
/usr/bin/ls

那么问题来了,我也想让我的’hello world‘程序执行的时候不带‘./’这样的路径, 怎么办呢?

#方法一
[whb@VM-0-3-centos test]$ mycmd
-bash: mycmd: command not found
#将自己的命令随便拷贝到环境变量的路径中
[whb@VM-0-3-centos test]$ sudo cp mycmd /usr/bin
[sudo] password for whb:
[whb@VM-0-3-centos test]$ ls /usr/bin/mycmd
/usr/bin/mycmd
[whb@VM-0-3-centos test]$ mycmd #但是千万不要这样干,因为会‘污染’指令集
hello world
#方法二
[whb@VM-0-3-centos test]$ echo $PATH
/usr/local/jdk8/bin:/usr/local/jdk8/jre/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbi
n:/home/whb/.local/bin:/home/whb/bin
[whb@VM-0-3-centos test]$ pwd #查看自己当前处于哪个目录
/home/whb/test
[whb@VM-0-3-centos test]$ export PATH=$PATH:/home/whb/test#导出新的环境变量,加上程序所在的路径
[whb@VM-0-3-centos test]$ echo $PATH
/usr/local/jdk8/bin:/usr/local/jdk8/jre/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbi
n:/home/whb/.local/bin:/home/whb/bin:/home/whb/test
[whb@VM-0-3-centos test]$ sudo rm /usr/bin/mycmd #删掉在/usr/bin路径下的可执行程序
[whb@VM-0-3-centos test]$ which mycmd #mycmd已经能通过环境变量被找到
~/test/mycmd
[whb@VM-0-3-centos test]$ mycmd #可以不带路径
hello world

#了解一下即可
[whb@VM-0-3-centos test]$ env #显示当前用户环境变量
XDG_SESSION_ID=3288
HOSTNAME=VM-0-3-centos
TERM=xterm
SHELL=/bin/bash
HISTSIZE=3000
SSH_CLIENT=123.139.120.197 21378 22
OLDPWD=/home/whb
SSH_TTY=/dev/pts/6
JRE_HOME=/usr/local/jdk8/jre
USER=whb
LD_LIBRARY_PATH=:/home/whb/.VimForCpp/vim/bundle/YCM.so/el7.x86_64
CLASS_PATH=.:/usr/local/jdk8/lib
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or
=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.ta
r=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:
*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:
*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01
;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz
=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:
*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=0
1;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*
.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01
;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fl
i=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.
emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;3
6:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=
01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
MAIL=/var/spool/mail/whb
PATH=/usr/local/jdk8/bin:/usr/local/jdk8/jre/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/us
r/sbin:/home/whb/.local/bin:/home/whb/bin:/home/whb/test
PWD=/home/whb/test
JAVA_HOME=/usr/local/jdk8
LANG=en_US.utf8
SHLVL=1
HOME=/home/whb
LOGNAME=whb
SSH_CONNECTION=123.139.120.197 21378 172.17.0.3 22
LESSOPEN=||/usr/bin/lesspipe.sh %s
PROMPT_COMMAND=history -a; printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}"
"${PWD/#$HOME/~}"
XDG_RUNTIME_DIR=/run/user/1005
HISTTIMEFORMAT=%F %T
_=/usr/bin/env

系统本身会提供某种全局查找属性,帮我们找到特定的模块/程序

其实,编译器内部也有类似的功能,想想,为何我们#include<头文件> ,并没有指明头文件在哪里,但是编译器也能帮我们找到并展开,包括我们也并没有指明我们的程序依赖哪些第三方库,编译器也能找到。

相关文章:

【Linux】Linux 的管道与重定向的理解

目录 一、了解Linux目录配置标准FHS 二、Linux数据重定向的理解与操作 2.1基本背景 2.2重定向的理解 2.3Linux管道命令的理解与操作 三、Linux 环境变量与PATH 3.1环境变量PATH 一、了解Linux目录配置标准FHS FHS本质&#xff1a;是一套规定Linux目录结构&#xff0c;软…...

【交互 / 差分约束】

题目 代码 #include <bits/stdc.h> using namespace std; using ll long long;const int N 10510; const int M 200 * 500 10; int h[N], ne[M], e[M], w[M], idx; ll d[N]; int n, m; bool st[N]; int cnt[N];void add(int a, int b, int c) {w[idx] c, e[idx] b…...

1. Go 语言环境安装

&#x1f451; 博主简介&#xff1a;高级开发工程师 &#x1f463; 出没地点&#xff1a;北京 &#x1f48a; 人生目标&#xff1a;自由 ——————————————————————————————————————————— 版权声明&#xff1a;本文为原创文章&#xf…...

灰度图像和RGB图像在数据大小和编码处理方式差别

技术背景 好多开发者对灰度图像和RGB图像有些认知差异&#xff0c;今天我们大概介绍下二者差别。灰度图像&#xff08;Grayscale Image&#xff09;和RGB图像在编码处理时&#xff0c;数据大小和处理方式的差别主要体现在以下几个方面&#xff1a; 1. 通道数差异 图像类型通道…...

Lord Of The Root: 1.0.1通关

Lord Of The Root: 1.0.1 来自 <Lord Of The Root: 1.0.1 ~ VulnHub> 1&#xff0c;将两台虚拟机网络连接都改为NAT模式 2&#xff0c;攻击机上做namp局域网扫描发现靶机 nmap -sn 192.168.23.0/24 那么攻击机IP为192.168.23.182&#xff0c;靶场IP192.168.23.247 3&…...

虚拟机安装CentOS7网络问题

虚拟机安装CentOS7网络问题 1. 存在的问题1.1 CentOS7详细信息 2. 解决问题3.Windows下配置桥接模式 1. 存在的问题 虽然已经成功在虚拟机上安装了CentOS7&#xff0c;但是依旧不能上网。 1.1 CentOS7详细信息 [fanzhencentos01 ~]$ hostnamectlStatic hostname: centos01Ic…...

AI-02a5a6.神经网络-与学习相关的技巧-批量归一化

批量归一化 Batch Normalization 设置合适的权重初始值&#xff0c;则各层的激活值分布会有适当的广度&#xff0c;从而可以顺利的进行学习。那么&#xff0c;更进一步&#xff0c;强制性的调整激活值的分布&#xff0c;是的各层拥有适当的广度呢&#xff1f;批量归一化&#…...

matlab实现蚁群算法解决公交车路径规划问题

使用蚁群算法解决公交车路径规划问题的MATLAB代码实现&#xff0c;包含详细注释和仿真流程。该算法以站点间行驶时间或距离为优化目标&#xff0c;寻找最优公交路线。 1. 问题建模与参数设置 1.1 输入数据 站点坐标&#xff1a;假设有20个公交站点&#xff0c;随机生成位置。…...

Agent Builder API - Agent Smith 扩展的后端服务(开源代码)

​一、软件介绍 文末提供程序和源码下载 Agent Builder API - Agent Smith 扩展的后端服务&#xff08;开源代码&#xff09;手动设置&#xff1a;在本地计算机中克隆此存储库并启动 python FAST API 服务器。&#xff08;可选&#xff09;安装并设置 Mongo DB。Dev Container…...

C++类和对象之相关特性

C 一.类型转换隐式类型转换 二.static成员一、static成员变量二、static成员函数三、static成员的存储位置四、总结 三.友元一、友元函数二、友元类三、友元成员函数四、总结 四.内部类五.匿名对象六.new 一.类型转换 在C中&#xff0c;类类型转换是指将一个类的对象转换为另一…...

容器编排的革命:Kubernetes如何引领IT的云原生时代

文章目录 Kubernetes的本质&#xff1a;容器世界的智能指挥家Kubernetes的核心功能包括&#xff1a; Kubernetes的演进&#xff1a;从谷歌的实验到全球标准核心技术&#xff1a;Kubernetes的基石与生态1. Pod与容器&#xff1a;最小调度单位2. Deployment&#xff1a;无状态应用…...

2025视频协作工具全景解析:技术跃迁与场景重构

一、技术演进:从功能工具到智能生态 2025年视频协作软件的核心竞争力已从基础功能升级为技术生态的构建。以分秒帧为例,其音视频生产协作系统,可帮助创作者在云端构建工作流,让跨地域、跨终端、跨团队的协作组可以在统一的安全平台上管理所有媒体资源、任务、反馈信息,从而更高…...

保持视频二维码不变,更新视频的内容

视频替换功能允许用户在保持视频二维码、观看地址和调用代码不变的情况下更新视频内容&#xff0c;从而节省重新印刷物料的成本。这一功能适用于多种场景&#xff0c;如营销宣传、产品操作手册、设备说明书等&#xff0c;当视频内容需要修改或更新时&#xff0c;用户只需上传新…...

Linux常用命令40——alias设置命令别名

在使用Linux或macOS日常开发中&#xff0c;熟悉一些基本的命令有助于提高工作效率&#xff0c;alias命令来自英文单词alias&#xff0c;中文译为“别名”&#xff0c;其功能是设置命令别名信息。我们可以使用alias将一些较长的命令进行简写&#xff0c;往往几十个字符的命令会变…...

Java大师成长计划之第22天:Spring Cloud微服务架构

&#x1f4e2; 友情提示&#xff1a; 本文由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;平台gpt-4o-mini模型辅助创作完成&#xff0c;旨在提供灵感参考与技术分享&#xff0c;文中关键数据、代码与结论建议通过官方渠道验证。 随着企业应用的不断扩展&#xff0c…...

为什么go语言中返回的指针类型,不需要用*取值(解引用),就可以直接赋值呢?

Go 中返回的是指针&#xff0c;但你却能直接用“.”访问字段&#xff0c;看起来像是“没有解引用”&#xff0c;其实是 Go 帮你自动处理了“指针解引用”的语法糖。 在 Go 中&#xff0c;如果你有一个结构体指针&#xff08;例如 *FileMeta&#xff09;&#xff0c;你可以直接…...

Java生成可控的Word表格功能开发

在日常办公自动化与系统集成场景中,生成结构化的Word文档已成为一种刚性需求,尤其是带有格式规范、内容动态填充的Word表格(Table)。本文将围绕如何利用Java开发一个可控的Word表格生成功能模块展开,涵盖技术选型、代码实现、边界控制与常见问题处理等方面,帮助开发者快速…...

OpenCV CUDA 模块中用于在 GPU 上计算矩阵中每个元素的绝对值或复数的模函数abs()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 void cv::cuda::abs(InputArray src, OutputArray dst, Stream &stream Stream::Null()) 是 OpenCV 的 CUDA 模块中的一个函数&#xff0c;…...

hadoop知识点

&#xff08;一&#xff09;复制和移动 1.复制文件 格式&#xff1a;cp源文件 目标文件 示例&#xff1a;把filel.txt复制一份得到file2.txt 2.复制目录 格式&#xff1a;cp-r源文件夹 目标文件夹 示例&#xff1a;把目标dir1复制一份得到dir2 3.重命名和移动 格式&#xff1a;…...

最短路与拓扑(2)

1、信使 #include<bits/stdc.h> using namespace std; const int N105; int n,m; int g[N][N]; int dist[N]; bool st[N]; const int INF0x3f3f3f3f;int dij(){memset(dist,0x3f,sizeof dist);dist[1]0;for(int i1;i<n;i){int t0;for(int j1;j<n;j){if(!st[j]&…...

LLaMA-Factory 微调 Qwen2-7B-Instruct

一、系统环境 使用的 autoDL 算力平台 1、下载基座模型 pip install -U huggingface_hub export HF_ENDPOINThttps://hf-mirror.com # &#xff08;可选&#xff09;配置 hf 国内镜像站huggingface-cli download --resume-download shenzhi-wang/Llama3-8B-Chinese-Chat -…...

濒危仙草的重生叙事:九仙尊米斛花节如何以雅集重构中医药文化IP

五月的霍山深处,层峦叠翠之间,中华仙草霍山米斛迎来一年一度的花期。九仙尊以“斛韵雅集,春野茶会”为主题,举办为期半月的米斛花文化节,融合中医药文化、东方美学与自然体验,打造一场跨越古今的沉浸式文化盛宴。活动涵盖古琴雅集、书法创作、茶道冥想、诗歌吟诵、民族歌舞等多…...

Pomelo知识框架

一、Pomelo 基础概念 Pomelo 简介 定位&#xff1a;分布式游戏服务器框架&#xff08;网易开源&#xff09;。 特点&#xff1a;高并发、可扩展、多进程架构、支持多种通信协议&#xff08;WebSocket、TCP等&#xff09;。 适用场景&#xff1a;MMO RPG、实时对战、社交游戏等…...

歌词滚动效果

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><!-- 设置标签页图标 --><link rel"shortcut icon&…...

python如何合并excel单元格

在Python中合并Excel单元格&#xff0c;常用openpyxl库实现。以下是详细步骤和示例代码&#xff1a; 方法一&#xff1a;使用 openpyxl 库 步骤说明&#xff1a; 安装库&#xff1a; pip install openpyxl导入库并加载文件&#xff1a; from openpyxl import load_workbook# …...

嵌入式学习笔记 D20 :单向链表的基本操作

单向链表的创建单向链表的插入单向链表的删除及清空单向链表的修改单向链表的查找单向链表的逆序 一、单向链表的创建 LinkList *CreateLinkList() {LinkList *ll malloc(sizeof(LinkList));if (NULL ll) {fprintf(stderr, "CreateLink malloc");return NULL;}ll…...

瀑布模型VS敏捷模型VS喷泉模型

​目录 ​​1. 瀑布模型(Waterfall Model)​​ ​​2. 敏捷模型(Agile Model)​​ ​​3. 喷泉模型(Fountain Model)​​...

Android usb网络共享详解

Android usb网络共享详解 文章目录 Android usb网络共享详解一、前言二、USB网络共享使用的前提1、Android设备支持adb 并且打开usb开关2、原生Settings能看到USB网络共享开关3、代码中检测USB网络共享是否支持 三、Settings 中USB网络共享代码的部分代码1、Settings\res\xml\t…...

在线黑白图像转换:简单却强大的视觉表达工具

为什么选择黑白图像&#xff1f; 在这个色彩缤纷的数字世界中&#xff0c;黑白摄影却始终保持着其独特的魅力。黑白图像消除了色彩的干扰&#xff0c;让我们更专注于构图、纹理和形式的表达。这种经典的转换技术能够创造出富有情感和强烈对比的视觉作品&#xff0c;呈现出彩色…...

python 异步执行测试

1. 并行执行机制 子进程级并行&#xff1a;通过 asyncio.create_subprocess_exec 启动的每个外部命令&#xff08;如 python run_spider.py&#xff09;会创建一个独立的系统进程&#xff0c;由操作系统直接调度&#xff0c;实现真正的并行执行。 协程级并发&#xff1a;主程序…...

《Python星球日记》 第69天:生成式模型(GPT 系列)

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、GPT简介&#xff1a;从架构到原理1. GPT的架构与工作原理2. Decoder-only结…...

STM32 之网口资源

1 网口资源介绍 STM32F407 是 STMicroelectronics 推出的高性能 ARM Cortex-M4 微控制器&#xff0c;具备多种外设接口&#xff0c;其中包括一个 Ethernet MAC 控制器&#xff08;带 IEEE 1588 支持&#xff09;。这意味着你可以使用 STM32F407 实现网络通信功能&#xff08;通…...

一分钟在Cherry Studio和VSCode集成火山引擎veimagex-mcp

MCP的出现打通了AI模型和外部数据库、网页API等资源&#xff0c;成倍提升工作效率。近期火山引擎团队推出了 MCP Server SDK&#xff1a; veimagex-mcp。本文介绍如何在Cherry Studio 和VSCode平台集成 veimagex-mcp。 什么是MCP MCP&#xff08;Model Context Protocol&…...

业务中台-典型技术栈选型(微服务、容器编排、分布式数据库、消息队列、服务监控、低代码等)

在企业数字化中台建设中&#xff0c;业务中台是核心支撑平台&#xff0c;旨在通过技术手段将企业核心业务能力抽象、标准化和复用&#xff0c;以快速响应前端业务需求。其核心技术流涉及从业务抽象到服务化、治理和持续优化的全流程。以下是业务中台建设中的核心技术体系及关键…...

图像颜色理论与数据挖掘应用的全景解析

文章目录 一、图像颜色系统的理论基础1.1 图像数字化的本质逻辑1.2 颜色空间的数学框架1.3 量化过程的技术原理 二、主要颜色空间的深度解析2.1 RGB颜色空间的加法原理2.2 HSV颜色空间的感知模型2.3 CMYK颜色空间的减色原理 三、图像几何属性与高级特征3.1 分辨率与像素密度的关…...

从规则驱动到深度学习:自然语言生成的进化之路

自然语言生成技术正经历着人类文明史上最剧烈的认知革命。这项起源于图灵测试的技术&#xff0c;已经从简单的符号操作演变为具备语义理解能力的智能系统。当我们回溯其发展历程&#xff0c;看到的不仅是算法模型的迭代更新&#xff0c;更是一部人类认知自我突破的史诗。这场革…...

影刀RPA网页自动化总结

1. 影刀RPA网页自动化概述 1.1 定义与核心功能 影刀RPA网页自动化是一种通过软件机器人模拟人类操作网页行为的技术&#xff0c;旨在提高网页操作效率、减少人工干预。其核心功能包括&#xff1a; 网页数据抓取&#xff1a;能够高效抓取网页上的数据&#xff0c;如电商数据、…...

[:, :, 1]和[:, :, 0] 的区别; `prompt_vector` 和 `embedding_matrix`的作用

prompt_vector = torch.sum(prompt_embedding * attention_weights.unsqueeze(-1), dim=1) # [1, hidden_dim] prompt_vector = torch.sum(prompt_embedding * attention_weights.unsqueeze(-1), dim=1) 主要作用是通过将 prompt_embedding 与 attention_weights 相乘后再按指…...

LeetCode 题解 41. 缺失的第一个正数

41. 缺失的第一个正数 给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 解释&#xff1a;范围 [1,…...

3337. 字符串转换后的长度 II

3337. 字符串转换后的长度 II # 定义了一个大质数 MOD&#xff0c;用于取模运算&#xff0c;防止数值溢出。 MOD 1_000_000_007# 矩阵乘法 mul def mul(a:List[List[int]], b:List[List[int]]) -> List[List[int]]:# 输入两个矩阵 a 和 b&#xff0c;返回它们的矩阵乘积 a…...

基于 TensorFlow 框架的联邦学习可穿戴设备健康数据个性化健康管理平台研究

基于 TensorFlow 框架的联邦学习可穿戴设备健康数据个性化健康管理平台研究 摘要: 随着可穿戴设备的普及,人们对于自身健康管理的需求日益增长。然而,可穿戴设备所收集的健康数据往往分散在不同用户的设备中,且涉及用户隐私敏感信息。本研究旨在构建一个基于 TensorFlow 框…...

查看字节真实二进制形式示例解析1

查看字节的真实二进制形式&#xff1f; 若需要显式查看二进制0/1&#xff0c;可以通过以下方法转换&#xff1a; 方法1&#xff1a;逐字节转换为二进制字符串 def bytes_to_binary(data: bytes) -> str:return .join([bin(byte)[2:].zfill(8) for byte in data])# 示例 …...

hadoop中spark基本介绍

Spark是一个基于内存计算的快速、通用、可扩展的大数据处理引擎&#xff0c;可与Hadoop集成并在其生态系统中发挥重要作用。以下是其基本介绍&#xff1a; 特点 - 快速&#xff1a;基于内存计算&#xff0c;能将中间结果缓存在内存中&#xff0c;避免频繁读写磁盘&#xff0c;大…...

Apollo学习——键盘控制速度

# keyboard_control.py import time import keyboard # 键盘输入模块 pip install keyboard from getkey import getkey, keys from cyber.python.cyber_py3 import cyber_time from cyber.python.cyber_py3 import cyber from modules.common_msgs.control_msgs import contro…...

无人机数据处理与特征提取技术分析!

一、运行逻辑 1. 数据采集与预处理 多传感器融合&#xff1a;集成摄像头、LiDAR、IMU、GPS等传感器&#xff0c;通过硬件时间戳或PPS信号实现数据同步&#xff0c;确保时空一致性。 边缘预处理&#xff1a;在无人机端进行数据压缩&#xff08;如JPEG、H.265&#xff09;…...

Java内存马的检测与发现

【网络安全】Java内存马的检测与发现 一、Java内存马的现象二、检测思路三、重点关注类四、检测方法1. 检查方法&#xff08;FindShell&#xff09;2. 检查方法&#xff08;sa-jdi&#xff09;3. 检查方法&#xff08;arthas-boot&#xff09;4. 检查方法&#xff08;cop.jar&a…...

基于策略的强化学习方法之策略梯度(Policy Gradient)详解

在前文中&#xff0c;我们已经深入探讨了Q-Learning、SARSA、DQN这三种基于值函数的强化学习方法。这些方法通过学习状态值函数或动作值函数来做出决策&#xff0c;从而实现智能体与环境的交互。 策略梯度是一种强化学习算法&#xff0c;它直接对策略进行建模和优化&#xff0c…...

未来软件开发趋势与挑战

未来软件开发的方向将受到技术进步、市场需求和社会变革的多重影响。以下是可能主导行业发展的关键趋势&#xff1a; 1. AI与自动化深度整合 AI代码生成&#xff1a;GitHub Copilot等工具将进化成"AI开发伙伴"&#xff0c;能理解业务逻辑并自动生成完整模块。自修复…...

【vue】生命周期钩子使用

一、详解 created&#xff1a;实例化完成还没有渲染 mounted&#xff1a;渲染完成 二、应用 在created之后获取网络请求&#xff0c;封装成函数&#xff0c;在需要的地方直接调用函数...

【CTFShow】Web入门-信息搜集

Web1 好长时间没刷题了&#xff0c;第一眼看到的时候有点儿手足无措 在信息搜集中最常用的手段就是直接查看源代码&#xff0c;所以直接F12大法吧&#xff0c;果不其然拿到了flag Web2 题目给了提示js前台拦截 无效操作 打开题看到界面还是一脸茫然 坏了&#xff0c;这波貌似…...