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

详谈系统中的环境变量

目录

  • 前言
  • 1. 指令背后的本质
  • 2. 环境变量背后的本质
  • 3. 环境变量到底是什么
  • 4. 命令行参数
  • 5. 本地变量 与 内置命令
  • 6. 环境变量的相关命令

前言

相信在 it 行业学习或者工作的小伙伴们,基本都配置过环境变量(windows环境下),如果你也不知道你配置的环境变量到底是什么,或者说,你只会配置环境变量,但并不知道它到底是什么,不妨看看这篇文章,或许可以给你带来新的认识。

这篇文章会先介绍配置环境变量的本质是在干什么,然后 通过环境变量的全局属性,引出 命令行参数 ,进而理解环境变量具有全局属性,还有简单拓展本地变量与内建命令的区别。

1. 指令背后的本质

小篇之前讲过一篇文章 如何正确看待Linux下的各种命令,当时我们就谈论过了所谓 linux 下的各种指令,其本质都是一个可执行程序,而这些可执行程序(指令)与我们平常编译 C/C++ 之后形成的可执行程序有什么区别呢?

其实二者没有什么本质区别,要说区别,其一就是你的没有人家的厉害,其二就是你的不能够直接运行,而需要指定路径(./test)。所以如果你想要,你完全可以让你自己写的程序,变的跟指令一样的执行。

在这里插入图片描述

没错,我们确实做到了,现在我们自己编写的程序,再也不需要通过 ./ 才能运行了。


2. 环境变量背后的本质

echo $PATH		// 打印系统中的PATH环境变量
ehco $HOME		// 当前用户的工作目录

大家有没有想过一个问题,当我们 xshell 连接上远端服务器后,为什么会自动进入到当前用户的家目录下。凡是都有因果,而这件事,就是 xshell 中的 bash 进程为我们做的,当身份信息验证成功,bash 就会自动根据当前用户执行 cd $HOME 这样的指令。

在这里插入图片描述

因此,不同用户所查看到的 HOME 环境变量也是不一样的。

让我们自己编写的程序 像 指令 一样的运行,不仅可以通过将可执行程序拷贝到 /usr/bin 目录下,也可以将可执行程序所处目录路径添加到系统中的 PATH 变量中,这样同样也可以让我们的程序 像 指令 一样的执行!

PATH=$PATH:/home/outlier/linux/env
在 PATH 追加路径,一定要加上 $PATH: 
否则就是直接覆盖原本的 PATH

在这里插入图片描述

所以环境变量背后的本质是什么?----- 我们可以简单理解为,当我们将某一个路径配置到 PATH 中,那么就可以直接像指令一样的执行 该路径下的所有可执行程序!因为系统会自动在 PATH 从左往右依次寻找这些路径下,是否有这个可执行程序,如果有,那么在执行时,系统会自动补充该程序所在路径,其道理与我们手动指定路径并且执行是一样!

但关于环境变量到底是什么,这些现象还无法说明。


3. 环境变量到底是什么

echo env : 可以查看系统中所有的环境变量

[root@localhost ~]# env
XDG_SESSION_ID=3
HOSTNAME=localhost.localdomain
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000				
USER=root					
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:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;3
1:*.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:*.jp
eg=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:*.pn
g=01;35:*.svg=01;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=0
1;35:*.flc=01;35:*.avi=01;35:*.fli=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;36:*.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/root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/node-v14.18.2/bin:/root/bin			
PWD=/root		
LANG=en_US.UTF-8
KDEDIRS=/usr
HISTCONTROL=ignoredups
SHLVL=1
HOME=/root
LOGNAME=root
XDG_DATA_DIRS=/root/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
LESSOPEN=||/usr/bin/lesspipe.sh %s
DISPLAY=localhost:11.0
NODE_HOME=/usr/local/node-v14.18.2
XAUTHORITY=/root/.xauthYF8InL
_=/bin/env 
OLDPATH=/home/outlier/linux

以上就是我自己系统中所有的环境变量了,其中较为重要的有如下

  • HISTSIZE 就是用来保存历史指令的,HISTSIZE=1000 就决定了只会保存最近的1000条指令
  • USER=root 则记录当前登录的用户名
  • PWD=/root 记录当前用户所处的路径
  • LOGNAME=root 记录当前登录的用户
  • OLDPATH=/home/outlier/linux 记录上一次所处路径,这也是为什么执行 cd - 的时候,总是可以直接返回上一次路径,经过 bash 的解释之后,最终其实就是在执行 cd $OLDPATH 这条指令。

刚刚我们是通过系统指令 env 或者 echo 某一个环境变量来获取的,下面我要介绍一种在代码层面获取环境变量的方法。

include<stdio.h>
#include<stdlib.h>
int main()
{printf("who: %s\n", getenv("USER"));printf("PATH: %s\n", getenv("PATH"));return 0;
}

在这里插入图片描述

其中值得关注的是,不同用户执行该程序时,getenv() 获取的环境变量的值并不相同! 这也说明了程序内部是可以通过获取环境变量来得知当前运行该程序是哪个用户。所以当环境变量认识到这一步,我们必须要重新认识一下 linux 中的权限问题。

Linux权限的理解与操作 这篇文章过后,我们应该要知道,权限分两种,一种对人,一种对物。而今天我们要重新认识对人的权限,凭什么一个文件属性上写着拥有者是谁,所属组是谁,就能决定这个人有没有权限。凭的就是当程序被用户运行时,它内部是可以通过 getenv 去获取当前是哪个用户在访问的,换言之,程序本身就可以决定允许被谁读写执行等操作。 为了让这方面的理解更加直观,我们还可以再来一个 demo。

int main()
{char who[32] = {0};strcpy(who, getenv("USER"));if(strcmp(who, "root") == 0){printf("你是上帝,所以你随便玩!\n");}else{printf("你是普通用户,要受到权限的约束!\n");}return 0;
}

在这里插入图片描述

所以环境变量到底是什么?? ---- 环境变量是系统提供的一组 name=value 形式的变量,不同的环境变量有不同的用户,通常具有全局属性

那为什么是环境变量具有全局属性呢?


4. 命令行参数

在回答上面的问题之前,我们需要先讲一下 命令行参数。

简单来说,命令行参数就是我们各种命令后面带的选项,例如 ls -lls -als -a -l -i 等等,ls 后面带的这些选项都叫做命令行参数!

而 C/C++ 程序当中的 main 函数,其实也是有参数传递的,只不过在 windows 平台下基本不用到而已。

int main(int argc, char* argv[], char* env[]){ int i = 0;for(; argv[i]; ++i){printf("argv[%d]->%s\n", i, argv[i]);}}// 其中的 argv 和 env 就是一个指针数组,而 char* 一般所指的就是字符串的起始地址
// 换言之,在命令行的一切指令,最终都会被 bash 解释成字符串,存入到 argv 数组中
// env 则是存储环境变量的数组

在这里插入图片描述

上述 demo 就很好的验证了,argv 这个数组就是在存储我们的指令 以及附带的各个选项

接着,为了更好理解 命令行参数 跟我们所谓的 指令选项 有什么关联,我们可以来一个 demo

int main(int argc, char* argv[], char* env[])
{if(argc != 2){printf("Usage: %s -[a|b|c|d]\n", argv[0]);return 0;}if(strcmp(argv[1], "--help")==0){printf("Usage: %s -[a|b|c|d]\n", argv[0]);}else if(strcmp(argv[1], "-a") == 0){printf("功能1\n");}else if(strcmp(argv[1], "-b") == 0){printf("功能2\n");}else if(strcmp(argv[1], "-c") == 0){printf("功能3\n");}else if(strcmp(argv[1], "-d") == 0){printf("功能4\n");}else{printf("default功能\n");}
}

在这里插入图片描述

所以现在应该能够理解所谓 命令行参数 是在干什么了吧 或者 为什么要设计 命令行参数 ? ----- 为指令、工具,软件等提供命令行选项的支持!,这样在用户层看到的结果一直都是,带上不同的选项,我就可以看到不同的运行效果;站在开发者的角度,我就可以通过设置各种 命令行参数 来实现不同选项不同效果的体现!

但是现在有一个问题,main 函数当中的参数是谁给传递进来的呢??

我们要明白一个因果,既然有参数,那就势必会有传参这个行为。虽然我们一直在说 main 函数是整个代码程序的入口,但我们从来没有说过它不是一个函数,既然是函数,那就会存在两种行为,一种是调用别的函数,一种是被别的函数调用。所以既然 main 函数有参数,那就说明它一定会被别的函数调用!在我们编译代码的时候,编译器内部就会有一个 Startup() 这个的函数调用我们的 main(),然后对 main 函数做一个传参检查,最后编译我们的代码。

而 main 有了传参,并且其中一个是用于存储环境变量的数组,那么现在,我们也可以不通过 getenv 来获取环境变量了,可以直接遍历 env[ ] 来获取所有的环境变量(getenv() 只能获取指定的一个环境变量)。

int main(int argc, char* argv[], char* env[])
{int i = 0;for(; env[i]; ++i){printf("env[%d]->%s\n", i, env[i]);}
}

并且,通过代码层面上对 env 数组遍历出来的结果,与 bash 中的 env 指令中获取的环境变量,是一模一样的!而这恰恰可以说明 环境变量具有全局属性 这件事!

我们所有的程序,在运行起来后都会转变为进程,而这些进程都是 bash 的子进程。而 bash 本身在启动的时候,会从操作系统的配置文件中读取环境变量信息,子进程会继承父进程(bash)的环境变量!而作为 bash 的子进程,在不需要修改环境变量的数据时,子进程关于环境变量的数据 与 父进程(bash)是一模一样的!

换言之!所有的子进程都会继承 bash 的环境变量,而子进程的子进程又会继承其父进程的环境变量,这样下来,所有的进程都能够获取到环境变量,这不就是 环境变量具有全局属性吗!!


5. 本地变量 与 内置命令

张三:我承认小篇你讲的很好,但是上面这些我还是不相信,环境变量具有全局属性这件事。

所以我们再谈一个话题,那就是什么是本地变量?什么是内置命令?

在这里插入图片描述

在本 bash 进程内定义的变量,就称为本地变量,并且不会被继承!---- 如何证明它不会被继承?

int main(int argc, char* argv[], char* env[])
{printf("MYVALUE: %s\n", getenv("MYVALUE"));
}

在这里插入图片描述

我们在 bash 中定义的本地变量,我们是可以查看到,但是我们自己编写的程序被运行起来,就会变为 bash 的子进程,而 bash 可以查到本地变量,其子进程却不行,这不就证明了本地变量不具备全局属性,不会被子进程继承!反之,当我们 export 设置为环境变量之后,其子进程是会继承父进程的环境变量的,因此我们运行程序之后,又发现突然查得到了,再次证明环境变量具有全局属性这件事!

不过,这里有一处疑点。当我们 ehco $MYVALUE 是可以查到本地变量的。之前我们 ps axj 查看进程并且用 grep 命令过滤关键词的时候,出来的结果中还有 grep 这个进程,当时我们就说,grep 在执行的时候,bash 同样也会为其创建一个子进程。那这么说,执行 echo 的时候,同样也会创建子进程在执行啊,你刚刚才说的 子进程不会继承本地变量,所以获取不到本地变量,怎么今天 执行 ehco 创建出来的子进程,好像继承了本地变量?(因为 echo 能够打印这个本地变量)

echo 就是我们要说的内建命令!

并不是所有的命令都会被创建子进程,有些命令是不需要 bash 创建子进程的,而是由 bash 亲自执行,这类命令大都是 bash 内部自己写的 或者 系统提供的函数,我们将这类命令称为 内建命令

而 cd 命令就是典型的内建命令。怎么证明呢? ----- 当我们在 cd xxx 进入某个路径时,如果你说 bash 会为 cd 命令创建子进程,然后让子进程去执行这条命令,那我们改的应该也是子进程的路径,但为什么 bash 中的路径也被更改了呢?我们 cd 的时候,bash 的命令行一直是实时更新我们当前所处的目录的!所以这就说不通了,只能说明 cd 是内建命令,由 bash 亲自执行,并没有创建子进程去执行!所以当我们 cd xxx,改的当然就是 bash 的路径了。

我们在通过一个 demo 来感受 cd 命令

int main(int argc, char* argv[], char* env[])
{// bash 在执行 cd 命令的时候,类似如下,判断到是 cd 命令后,不创建子进程,直接通过 chdir 修改路径!if(strcmp(argv[1], "cd")==0){chdir(argv[1]);}// 模拟 cd 命令调用 chdirsleep(30);printf("path begin changing!\n");if(argc == 2){chdir(argv[1]);}printf("path change end!\n the process is sleeping!\n");sleep(30);
}

在这里插入图片描述

cd 命令就是类似如此,执行的时候直接调用 chdir 修改路径,并不会 frok() 创建子进程。

6. 环境变量的相关命令

echo: 显示某个环境变量值
export: 设置一个新的环境变量
env: 显示所有环境变量
unset: 清除环境变量
set: 显示本地定义的shell变量和环境变量

关于环境变量的内容,到这里就结束了。

如果感觉该篇文章给你带来了收获,可以 点赞👍 + 收藏⭐️ + 关注➕ 支持一下!

感谢各位观看!

相关文章:

详谈系统中的环境变量

目录 前言1. 指令背后的本质2. 环境变量背后的本质3. 环境变量到底是什么4. 命令行参数5. 本地变量 与 内置命令6. 环境变量的相关命令 前言 相信在 it 行业学习或者工作的小伙伴们&#xff0c;基本都配置过环境变量&#xff08;windows环境下&#xff09;&#xff0c;如果你也…...

RAG与LLM原理及实践(11)--- Milvus hybrid search 源码分析及思想

目录 背景 hybrid search 源码分析 WeightedRanker 源码 hybrid search 核心 参数详解 基本入参 扩展入参 aysnc方式代码调用案例 说明 源码逻辑 prepare 调用过程 stub 调用结果 stub 调用过程 blocking 与 async 调用方式 深入内部core weightedRanker 的ch…...

JavaScript模拟空调效果

JavaScript模拟空调效果https://www.bootstrapmb.com/item/15074 在JavaScript中模拟空调效果主要依赖于前端界面的交互和状态变化&#xff0c;因为实际的温度调节、风扇速度调整等硬件操作无法直接通过JavaScript在浏览器中实现。不过&#xff0c;我们可以通过JavaScript来模…...

14.2 Pandas数据处理

欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: 工💗重💗hao💗:野老杂谈 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来:详细讲解AIGC的概念、核心技术、应用领域等内容。 ⭐…...

python学习7---多进程

一、介绍 多进程是指在同一程序中创建多个独立的进程来执行任务。每个进程都有自己独立的内存空间&#xff0c;相互之间不干扰。 因为GIL锁的存在&#xff0c;对于CPU密集型任务&#xff08;例如计算密集型操作&#xff09;&#xff0c;使用多进程可以提高程序的效率。 优点&am…...

基于Spring + Vue的旅游景区项目+源代码+文档说明

文章目录 源代码下载地址项目介绍项目功能界面预览 项目备注源代码下载地址 源代码下载地址 点击这里下载源码 项目介绍 基于Spring Vue的旅游景区项目 项目功能 民宿管理员&#xff1a;订单数量统计&#xff0c;订单交易额统计&#xff0c;客房统计饼图&#xff0c;酒店…...

Java后端面试题

Redis缓存穿透、雪崩、击穿&#xff0c;布隆过滤器 一致性hash 一致性hash sharding-jdbc实现一致性hash #一致性hash, 应用在mysql数据库的分库分表上&#xff0c; 现在已经完成了分库分表&#xff0c; 现在的问题出现了&#xff0c; 需要继续新增数据库节点&#xff0c; 请…...

【Git】远程仓库新建分支后,拉到本地开发

1. 在远程仓库上创建分支 2. git fetch origin&#xff1a;在本地同步远程仓库的分支&#xff08;获取远程仓库所有分支的所有修改&#xff09; 3. git remote -a&#xff1a;查看所有分支&#xff08;远程&#xff0b;本地&#xff09; 4. git checkout -b 本地名 远程仓库…...

React H5设置企业级v6版本路由的配置

路由配置是项目开发的必要一环&#xff0c;尤其是目前流行SPA&#xff0c;下面看看如何使用v6版本路由进行合理的H5路由配置 一、基本页面结构&#xff08;目录根据开发要求建&#xff0c;下面仅用于展示配置路由&#xff09; 二、具体文件实现 1. index.tsx import React f…...

【微信小程序】全局配置

1. 全局配置文件及常用的配置项 2.window (1).小程序窗口的组成部分 (2). 了解 window 节点常用的配置项 (3). 设置导航栏的标题 (4). 设置导航栏的背景色 (5). 设置导航栏的标题颜色 (6). 全局开启下拉刷新功能 (7). 设置下拉刷新时窗口的背景色 (8).设置下拉刷新时 loading …...

25届秋招网络安全面试资料库

吉祥知识星球http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247485367&idx1&sn837891059c360ad60db7e9ac980a3321&chksmc0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330#rd 《网安面试指南》http://mp.weixin.qq.com/s?…...

Adobe Dimension DN v4.0.2 解锁版下载安装教程 (专业的三维3D建模工具)

前言 Adobe Dimension&#xff08;简称DN&#xff09;是一款3D设计软件&#xff0c;三维合成和渲染工具&#xff0c;2D平面的二维转为3D立体的三维合成工具&#xff0c;用于3Dmax\C4D\MAYA等三维软件生成的效果图&#xff0c;在3D场景中排列对象、图形和光照。3D应用程序使用的…...

Python中*args 和 **kwargs作参数时有什么区别

*args 和 **kwargs 是 Python 函数定义中用于处理可变数量的参数的语法&#xff0c;初学者对于二者总是傻傻区分不了&#xff0c;今天我们就来详细解读一下这两个在参数传递时有什么不同。 首先要明白单个星号可以解包元组或者列表&#xff0c;两个星号可以解包字典。如&#…...

[CSS3]2D与3D变换技术详解

文章目录 2D变换&#xff08;2D Transform&#xff09;3D变换&#xff08;3D Transform&#xff09;结语 CSS3中的2D变换与3D变换是指通过transform属性对HTML元素进行几何操作&#xff0c;使其在二维或三维空间中进行移动、旋转、缩放和倾斜等变换。这些变换为前端开发者提供了…...

大恒相机通过Line2或Line3直接给出3.3V触发,形成分时曝光

大恒相机通过Line2或Line3直接给出3.3V触发&#xff0c;形成分时曝光 一、分时曝光需求二、3.3V信号分时曝光设计 写在前面 上班了&#xff0c;没多少时间再去精度论文了&#xff0c;大多是项目上的事情。 一、分时曝光需求 一般的12V光源通过光源控制器与大恒相机Line1线连接…...

electronjs实现打开的网页密码自动保存

在 Electron 中实现自动保存网页密码的功能涉及到几个步骤&#xff0c;以下是一个基本的实现思路&#xff1a; 1. 监听登录事件 首先&#xff0c;你需要监听用户的登录事件。当用户在一个网页上登录后&#xff0c;通常会有一个 POST 请求发送到服务器验证凭据。你可以监听这个…...

观测云的自动化监控:CRD 资源与自动发现

在云原生技术快速发展的今天&#xff0c;Kubernetes已成为企业容器化应用的中心舞台。随着应用的规模化和动态化&#xff0c;传统的监控方法已经难以满足需求。自动化监控&#xff0c;以其高效性和准确性&#xff0c;成为云原生监控的新趋势。观测云平台通过与Kubernetes的深度…...

九、OpenCVSharp 中的图像形态学操作

文章目录 简介一、腐蚀1. 腐蚀的原理和数学定义2. 结构元素的形状和大小选择3. 腐蚀操作的代码实现和效果展示二、膨胀1. 膨胀的概念和作用2. 与腐蚀的对比和组合使用(如开运算、闭运算)三、开运算1. 开运算的定义和用途(去除小的明亮区域)2. 开运算在去除噪声和分离物体方…...

http和websocket

http和websocket是什么 网络通信的协议 区别 http: 只能客户端发送&#xff0c;服务端接收。 websocket: 客户端和服务端都可以发送和接收数据。 链接...

Go 语言错误处理

不管使用哪种语言&#xff0c;程序代码都可能包含各种错误&#xff0c;例如语法错误、逻辑错误、除 0 错误和文件缺失等。因此&#xff0c;每种编程语言都有处理错误的内置机制。 1. Go 程序中的错误 需要指出的是&#xff0c;错误有多种类型。语法错误通常是开发人员在编写代…...

LVS部分配置1

LVS nat服务器&#xff08;作时间服务器&#xff09; [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 [rootlocalhost ~]# yum -y install ntpdate [rootlocalhost ~]# ntpdate cn.ntp.org.cn [rootlocalhost ~]# which ntpdate [rootlocalhost…...

datax和datax-web打包成docker运行

概述 datax和datax-web从一台机器迁移到另一台时&#xff0c;要重新搭建一套运行环境&#xff0c;比较麻烦&#xff1b;打包成docker镜像后迁移就方便多了; 因为我的mysql版本是8&#xff0c;需要在datax的read和write中手动添加8的jdbc驱动 所以我先各自下载好了datax和data…...

命令行参数环境变量

目录 前言&#xff1a; 命令行参数&#xff1a; 现象&#xff1a; 这些参数的意义&#xff1a; 为什么要这么做&#xff1f; 这些事是谁做的呢&#xff1f; 环境变量 现象&#xff1a; 创建环境变量&#xff1a; 结合程序理解&#xff1a; 前言&#xff1a; 我们在前…...

『大模型笔记』WizardLM:使大型预训练语言模型能够遵循复杂的指令

WizardLM: Empowering Large Pre-Trained Language Models to Follow Complex Instructions 文章目录 一. WizardLM:使大型预训练语言模型能够遵循复杂的指令二. Evolve-Instruct(优化版)2.1. 概述2.2. 实施二. 参考文献WizardLM:使大型预训练语言模型能够遵循复杂的指令:…...

编程-设计模式 2:抽象工厂模式

设计模式 2&#xff1a;抽象工厂模式 定义与目的 定义&#xff1a;抽象工厂模式提供一个接口&#xff0c;用于创建一系列相关或相互依赖的对象&#xff0c;而无需指定它们具体的类。目的&#xff1a;该模式的主要目的是解耦客户端代码与产品类之间的关系&#xff0c;并确保一…...

阿里云智能大数据演进

本文根据7月24日飞天发布时刻产品发布会、7月5日DataFunCon2024北京站&#xff1a;大数据大模型.双核时代实录整理而成&#xff0c;演讲信息如下&#xff1a; 演讲人&#xff1a;徐晟 阿里云研究员/计算平台产品负责人 主要内容&#xff1a; Overview - 阿里云大数据 AI 产品…...

Java面试题———Spring篇①

目录 一&#xff0c;谈谈你对SpringIOC的理解 二&#xff0c;Spring中有哪些依赖注入方式 三&#xff0c;你用过哪些Spring注解 四&#xff0c;SpringBean的作用域有几种 五&#xff0c;Spring中的bean线程安全吗 六&#xff0c;谈谈你对SpringAOP的理解 七&#xff0c;…...

4章10节:用R做数据重塑,变体函数应用详解和可视化的数据预处理介绍

数据重塑(Data Reshaping)是将数据从一种结构转换为另一种结构的过程,是清理、分析和可视化数据的重要步骤。R语言作为数据科学的强大工具,提供了许多包来帮助我们进行数据重塑,其中最常用的就是dplyr包。dplyr包以其简洁的语法和高效的操作速度著称,它不仅可以帮助我们进…...

Socks5代理IP在跨境电商和网络爬虫领域的实战应用

在现代互联网环境中&#xff0c;Socks5代理IP因其强大的灵活性和隐私保护功能&#xff0c;成为了跨境电商和网络爬虫领域的重要工具。本文将探讨Socks5代理IP的基本原理&#xff0c;并详细介绍其在跨境电商和网络爬虫中的实际应用。 1. Socks5代理IP简介 Socks5代理IP是一种网…...

农业上的目标跟踪论文汇总

文章目录 2022Multi-object tracking using Deep SORT and modified CenterNet in cotton seedling counting (Computers and Electronics in Agriculture)A novel apple fruit detection and counting methodology based on deep learning and trunk tracking in modern orcha…...

焦作做网站的公司/网站流量统计软件

Time Limit: 5000 ms Memory Limit: 512 MB description 给你\(n, m\)&#xff0c;求\(\sum\limits_{i1}^{n}\sum\limits_{j1}^{m} lcm(i,j)\) 答案对100000009取模。 多组数据。 input 第一行有一个正整数tt表示数据组数 接下来tt行每行有两个正整数n,mn,m output tt行&#x…...

杭州网站建设费用/河北优化seo

--测试环境,SQL Server2000,远程服务器名:xz,用户名为:sa,无密码,测试数据库:test--1. 链接服务器上的表 create table [user](id int primary key,number varchar(4),name varchar(10)) go--2. 本地服务器上的表 --本机的表,state说明:null 表示新增记录,1 表示修改过的记录,0…...

vs中可以用新建项目来做网站吗/网络营销软件排行

被教练坑了。 并没有任何卵用的成电宣传活动。 题目全是成电acm训练的原题&#xff0c;而且画风诡秘&#xff0c;4h4题。 还因为建了子文件夹爆了0。 最大疯子树【题目描述】给定一棵 n 个结点的树&#xff0c;结点编号为 1~n&#xff0c;i 号结点的权重记为 wi&#xff08;每…...

给自己女朋友做的网站/今日小说百度搜索风云榜

荷塘月色 朱自清 这几天心里颇不宁静。今晚在院子里坐着乘凉&#xff0c;忽然想起日日走过的荷塘&#xff0c;在这 满月的光里&#xff0c;总该另有一 番样子吧。月亮渐渐地升高了&#xff0c;墙外马路上孩子们的欢笑&#xff0c;已经听不见了&#xff1b;妻在屋里拍着闰儿…...

拼团购物网站怎么做/上海培训机构有哪些

很多人学习面向对象和设计模式&#xff0c;往往是为了技术而技术&#xff0c;只是学到了形式&#xff0c;很僵化。这都是因为没有把握好技术的目的是为了什么。对于设计来说&#xff0c;他的目的就是为了方便软件开发和软件维护。 不提倡滥用设计&#xff0c;在于设计是和你当…...

网站在线沟通工具/网站首页排名seo搜索优化

深海迷航秘籍怎么用&#xff1f;深海迷航游戏中使用秘籍可以快速的完成任务&#xff0c;增加物品收益&#xff0c;本文带来了秘籍代码及使用方法&#xff0c;有需要的玩家欢迎收藏。下面就一起来看看深海迷航秘籍代码大全吧。f3 f8同时打开&#xff0c;勾选掉禁用控制台选项&am…...