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

Linux环境变量详解

引言

在Linux系统中,环境变量是一种非常重要的概念,它影响着系统的运行方式和应用程序的行为。无论你是Linux新手还是经验丰富的管理员,深入理解环境变量都能帮助你更高效地使用和管理Linux系统。本文将从基础概念到高级应用,全面剖析Linux环境变量的方方面面。

目录

1. [环境变量基础](#环境变量基础)

2. [环境变量配置文件](#环境变量配置文件)

3. [查看与管理环境变量](#查看与管理环境变量)

4. [设置环境变量的方法](#设置环境变量的方法)

5. [环境变量的作用域](#环境变量的作用域)

6. [PATH环境变量详解](#path环境变量详解)

7. [其他重要环境变量](#其他重要环境变量)

8. [环境变量的应用场景](#环境变量的应用场景)

9. [环境变量的最佳实践](#环境变量的最佳实践)

10. [常见问题与解决方案](#常见问题与解决方案)

1.环境变量基础

什么是环境变量

环境变量是在操作系统中存储有关系统运行环境信息的变量。它们是由操作系统维护的一组动态命名值,可以影响运行在系统中的进程的行为。

环境变量通常由键值对(key=value)组成,例如:

HOME=/home/userPATH=/usr/local/bin:/usr/bin:/bin

环境变量的类型

在Linux中,环境变量主要分为两类:

1. **环境变量(Environment Variables)**:

   - 全局变量,可被所有子进程继承

   - 通过`export`命令定义

   - 可以使用`env`或`printenv`命令查看

2. **Shell变量(Shell Variables)**:

   - 仅在当前shell中有效

   - 通常使用`变量名=值`的形式定义

   - 可以使用`set`命令查看所有变量(包括环境变量和shell变量)

 环境变量的命名约定

虽然Linux对环境变量名没有严格限制,但通常遵循以下约定:

- 变量名由字母、数字和下划线组成

- 通常使用大写字母

- 不要以数字开头

- 不能包含空格或特殊字符

2.环境变量配置文件

Linux系统中,环境变量可以在多个配置文件中设置,这些文件在不同的时机被读取,适用于不同的场景。

系统级配置文件

系统级配置文件影响所有用户:

1. **/etc/profile**:

   - 系统全局环境变量设置

   - 在用户登录时被读取

   - 通常包含一些设置用户环境的基本脚本

2. **/etc/profile.d/*.sh**:

   - `/etc/profile`会执行这个目录中所有的`.sh`脚本

   - 管理员可以在这个目录下添加自定义脚本

3. **/etc/bashrc** 或 **/etc/bash.bashrc**(依发行版而定):

   - 为所有用户的bash shell定义函数和别名

   - 当bash shell被调用时读取

4. **/etc/environment**:

   - 系统范围的环境变量设置

   - 不包含脚本,只有简单的变量赋值

用户级配置文件

用户级配置文件只影响特定用户:

1. **~/.profile**:

   - 用户登录时被读取

   - 用于设置用户环境变量

2. **~/.bashrc**:

   - 打开新终端窗口时被读取

   - 用于定义别名、函数和自定义提示符等

3. **~/.bash_profile** 或 **~/.bash_login**:

   - 用户登录时被读取

   - 如果存在,将替代`.profile`执行

4. **~/.zshrc**:

   - 如果使用zsh shell,这个文件会被读取

   - 类似于`.bashrc`的作用

配置文件的优先级和顺序

对于登录shell,配置文件的读取顺序为:

1. `/etc/profile`

2. `/etc/profile.d/*.sh`

3. `~/.bash_profile`(如果存在)

4. `~/.bash_login`(如果`.bash_profile`不存在且该文件存在)

5. `~/.profile`(如果前两个都不存在且该文件存在)

对于非登录交互式shell(如打开新终端窗口):

1. `/etc/bash.bashrc`(某些发行版)

2. `~/.bashrc`

3. 查看与管理环境变量

 查看环境变量

要查看当前shell中定义的环境变量,可以使用以下命令:

# 显示所有环境变量env# 或者使用printenv# 显示特定环境变量(例如PATH)echo $PATH# 显示所有变量(包括环境变量和shell变量)set

示例输出:

USER=usernameHOME=/home/usernameSHELL=/bin/bashPATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbinPWD=/home/usernameLANG=en_US.UTF-8...

 检查变量是否存在

检查特定环境变量是否已设置:

# 方法1:使用echoecho $VARIABLE_NAME# 方法2:使用printenvprintenv VARIABLE_NAME# 方法3:使用test命令(更推荐的方式)if [ -n "$VARIABLE_NAME" ]; thenecho "Variable exists and is not empty"elseecho "Variable does not exist or is empty"fi

 设置环境变量的方法

临时设置(当前会话)

临时设置环境变量仅在当前终端会话中有效,退出终端后变量将被销毁:

# 设置shell变量MYVAR="Hello World"# 将shell变量提升为环境变量export MYVAR# 也可以一步完成export MYVAR="Hello World"# 验证设置echo $MYVAR

 持久化设置(用户级别)

要使环境变量在用户所有会话中永久有效,可以将设置添加到用户配置文件中:

# 编辑用户的.bashrc文件echo 'export MYVAR="Hello World"' >> ~/.bashrc# 使更改立即生效source ~/.bashrc

持久化设置(系统级别)

要为所有用户设置环境变量:

# 在/etc/profile.d/中创建新脚本sudo echo 'export MYVAR="Hello World"' > /etc/profile.d/myvar.sh# 设置正确的权限sudo chmod 644 /etc/profile.d/myvar.sh# 也可以编辑/etc/environment(更简单但功能更有限)sudo echo 'MYVAR="Hello World"' >> /etc/environment

 修改和删除环境变量

# 修改已存在的环境变量export PATH="$HOME/bin:$PATH"# 删除环境变量unset MYVAR

 环境变量的作用域

环境变量的可见性和继承行为是理解其工作方式的关键。

 进程继承

- 子进程会从父进程继承环境变量

- Shell变量不会被继承,除非通过`export`转为环境变量

- 子进程修改继承的环境变量不会影响父进程

 用户和系统作用域

- **用户作用域**:在用户配置文件中设置的变量仅对该用户可见

- **系统作用域**:在系统配置文件中设置的变量对所有用户可见

 示例:变量继承

# 父进程设置变量export PARENT_VAR="I am the parent"SHELL_VAR="Shell only"

启动子进程


# 在子进程中echo $PARENT_VAR  # 输出: I am the parentecho $SHELL_VAR   # 没有输出,因为SHELL_VAR未导出

PATH环境变量详解

PATH变量可能是Linux中最重要的环境变量之一,它决定了系统在哪些目录中查找可执行文件。

PATH的结构

PATH变量包含一系列目录,用冒号`:`分隔:

PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

当你在终端中输入命令时,系统会按照PATH中的目录顺序查找该命令的可执行文件。

修改PATH变量

# 将目录添加到PATH开头(优先搜索)export PATH="/new/directory:$PATH"# 将目录添加到PATH末尾(最后搜索)export PATH="$PATH:/new/directory"# 永久添加(对当前用户)echo 'export PATH="/new/directory:$PATH"' >> ~/.bashrcsource ~/.bashrc

 PATH变量的安全性

注意事项:

- 不要将`.`(当前目录)放在PATH的开头,这可能导致执行恶意程序

- 确保只有受信任的目录在PATH中

- 注意目录的顺序,先列出的目录具有更高的优先级

其他重要环境变量

除了PATH之外,还有许多重要的预定义环境变量:

HOME当前用户的主目录/home/username
USER当前登录用户名username
SHELL当前用户的默认shell/bin/bash
PWD当前工作目录/current/directory
LANG系统语言和区域设置en_US.UTF-8
TERM终端类型xterm-256color
EDITOR默认文本编辑器/usr/bin/nano
DISPLAYX服务器显示:0
LD_LIBRARY_PATH动态链接库搜索路径/usr/lib:/lib
PS1主提示符格式\u@\h:\w$
HISTSIZE命令历史记录大小1000

 示例:使用重要环境变量

# 回到用户主目录cd $HOME# 显示当前工作目录echo $PWD# 使用默认编辑器打开文件$EDITOR filename.txt# 自定义提示符export PS1="[\t] \u@\h:\w\$ "

环境变量的应用场景

环境变量在许多场景中非常有用

 1. 程序配置

许多程序和工具使用环境变量进行配置:

# 为Git设置代理export HTTP_PROXY="http://proxy.example.com:8080"export HTTPS_PROXY="http://proxy.example.com:8080"# 设置Java内存大小export JAVA_OPTS="-Xmx2g -Xms1g"# 设置Python路径export PYTHONPATH="/custom/path:$PYTHONPATH"

2. 开发环境

为不同的开发环境设置不同的变量:

# 开发环境export NODE_ENV="development"export DEBUG="true"# 生产环境export NODE_ENV="production"export DEBUG="false"

3. 多语言支持

# 设置英语环境export LANG="en_US.UTF-8"# 设置中文环境export LANG="zh_CN.UTF-8"

4. 自定义命令和脚本

使用环境变量简化命令行操作:

# 创建快捷方式export WORKSPACE="$HOME/projects"alias cdw="cd $WORKSPACE"# 在脚本中使用环境变量echo "Welcome, $USER! Your home is $HOME"

环境变量的最佳实践

以下是处理环境变量的一些推荐做法:

安全性考虑

- **敏感信息**:避免将密码和API密钥等敏感信息直接存储在环境变量中

- **权限**:确保包含敏感环境变量的配置文件具有适当的权限(如`chmod 600 ~/.secret_env`)

- **清理**:在不需要时unset敏感环境变量

 易维护性

- **分组**:将相关环境变量分组到单独的配置文件中

- **注释**:为复杂的环境变量设置添加注释,解释其用途

- **默认值**:在使用环境变量时提供默认值,增加脚本的健壮性

# 使用默认值的例子PROJECT_DIR="${PROJECT_DIR:-/default/path}"

组织结构

推荐的环境变量组织方式:

1. 系统级别的共享环境变量放在`/etc/profile.d/`

2. 用户级别的个人环境变量放在`~/.bashrc`或`~/.profile`

3. 特定应用程序的环境变量放在专用配置文件中,需要时source

# 在~/.bashrc中# 一般环境变量export EDITOR="vim"export VISUAL="vim"# 引入特定环境设置if [ -f ~/.work_env ]; thensource ~/.work_envfi

 常见问题与解决方案

环境变量未生效

**问题**:设置了环境变量但不起作用

**解决方案**:

1. 确认是否正确使用了`export`命令

2. 检查语法错误,特别是引号和空格

3. 确保使用了`source`命令应用更改

4. 检查变量名是否正确(区分大小写)

# 正确设置方式export MY_VAR="value"source ~/.bashrc

PATH相关问题

**问题**:命令未找到,尽管可执行文件确实存在

**解决方案**:

1. 检查PATH变量是否包含可执行文件所在目录

2. 确保可执行文件有执行权限(`chmod +x file`)

3. 使用绝对路径测试命令

# 检查PATHecho $PATH# 添加目录到PATHexport PATH="$PATH:/missing/directory"

 子进程无法访问变量

**问题**:在脚本或子进程中无法访问环境变量

**解决方案**:

1. 确保变量已被`export`

2. 检查脚本中是否有`unset`或覆盖该变量的操作

3. 对于`sudo`命令,可能需要使用`-E`选项保留环境变量

# 保留环境变量运行sudo命令sudo -E command

 持久化设置问题

**问题**:重启后环境变量设置丢失

**解决方案**:

1. 确保变量设置在正确的配置文件中(`.bashrc`、`.profile`等)

2. 检查语法错误

3. 确认配置文件权限正确

 总结

环境变量是Linux系统中强大而灵活的工具,掌握它们的使用可以提高你的工作效率并自定义你的操作环境。本文涵盖了从基础概念到高级应用的各个方面,希望能帮助你更好地理解和使用Linux环境变量。

环境变量的关键要点:

1. 环境变量是存储系统环境信息的键值对

2. 它们可以在不同级别(会话、用户、系统)设置

3. 环境变量由子进程继承,而shell变量不会除非使用`export`

4. PATH是最常用的环境变量,它决定命令查找位置

5. 理解配置文件加载顺序有助于正确设置环境变量

无论你是系统管理员、开发者还是普通用户,深入理解环境变量都能帮助你更高效地使用Linux系统。

参考资料

- Bash手册: [GNU Bash Manual](https://www.gnu.org/software/bash/manual/)

- Linux文档项目: [The Linux Documentation Project](https://tldp.org/)

- Linux环境变量指南: [Linux Environment Variables Guide](https://www.baeldung.com/linux/path-variable)

相关文章:

Linux环境变量详解

引言 在Linux系统中,环境变量是一种非常重要的概念,它影响着系统的运行方式和应用程序的行为。无论你是Linux新手还是经验丰富的管理员,深入理解环境变量都能帮助你更高效地使用和管理Linux系统。本文将从基础概念到高级应用,全面…...

【antd + vue】Tree 树形控件:默认展开所有树节点 、点击文字可以“选中/取消选中”节点

一、defaultExpandAll 默认展开所有树节点 1、需求:默认展开所有树节点 2、问题: v-if"data.length"判断的层级不够,只判断到了物理那一层,所以只展开到那一层。 3、原因分析: 默认展开所有树节点, 如果是…...

专题三——二分查找

目录 一、二分查找 1、题目 2、解题思路 3、代码实现 4、时间复杂度 5、朴素二分法的模板总结 二、在排序数组中查找元素的第一个和最后一个位置 1、题目 2、题目解析 3、代码实现 4、 模板总结(重点) 三、x的算法平方根 1、题目 2、 题目解…...

从零实现HTTP服务器

响应: 第一部分测试代码,读取请求 Makefile binhttpserver #生成的可执行程序 ccg #编译器名称 LD_FLAGS-stdc11 -lpthread #-DDEBUG1 #链接选项 srcmain.cc$(bin):$(src)$(cc) -o $ $^ $(LD_FLAGS).PHONY:clean clean:rm -f $(bin) 1111111 main.cc…...

智能检索知识库​

一、智能检索知识库作用 1. 提升信息检索效率,降低人力成本 快速获取精准答案:员工无需手动翻阅大量文档(如产品手册、合同、技术文档),直接通过自然语言提问获取答案。 减少重复性工作:HR、客服、技…...

北斗导航 | 接收机自主完好性监测(RAIM)算法学习思路总结及其算法研究:理论、实现与验证

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 接收机自主完好性监测学习思路 壹、学习思路贰、理论、实现与验证1. 引…...

无法读取库伦值文件节点解决方案

读取库伦值的目的是为了换算成电流,量化场景功耗用途 1.报错日志 /power_log/debuglogger$ adb shell dmesg | grep -Ei "avc..system_server"[ 79.942272] logd.auditd: type1400 audit(1744279324.832:7149): avc: denied { read } for comm"…...

OCR API识别对比

OCR 识别DEMO OCR识别 demo 文档由来 最开始想使用百度开源的 paddlepaddle大模型 研究了几天,发现表格识别会跨行,手写识别的也不很准确。最终还是得使用现成提供的api。。 文档说明 三个体验下来 腾讯的识别度比较高,不论是手写还是识别表…...

高速电路设计概述

1.1 低速设计和高速设计的例子 本节通过一个简单的例子,探讨高速电路设计相对于低速电路设计需要考虑哪些不同的问题。希望读者通过本例,对高速电路设计建立一个表象的认识。至于高速电路设计中各方面的设计要点,将在后续章节展开详细的讨论…...

Keil C51中32位变量赋值异常问题分析与解决

Keil C51中32位变量赋值异常问题分析与解决 问题描述 在使用Keil5对51单片机进行编程时&#xff0c;遇到一个32位变量赋值不正确的问题。具体代码如下&#xff1a; typedef unsigned long uint32;g_Flow_Time (uint32)Storage[2] << 24 | Storage[3] << 16 | S…...

python工程中的包管理(requirements.txt)

pip install -r requirements.txtpython工程通过requirements.txt来管理依赖库版本&#xff0c;上述命令&#xff0c;可以一把安装依赖库&#xff0c;类似java中maven的pom.xml文件。 参考 [](...

用Python修改字体字形与提取矢量数据:fontTools实战指南

字体设计与分析是NLP和视觉领域的交叉应用&#xff0c;而**fontTools** 是一款强大的Python库&#xff0c;可以让我们直接操作字体文件的底层结构。本文将通过两个实用函数&#xff0c;展示如何修改特定字形和提取所有字形的矢量数据&#xff0c;帮助开发者快速上手字体编辑与分…...

数据库守护神-WAL机制

什么是WAL机制&#xff1f; WAL&#xff08;Write-Ahead Logging&#xff0c;预写日志&#xff09;是一种保证数据库操作原子性和持久性的核心机制。其核心原则可概括为&#xff1a; 任何数据修改操作&#xff0c;必须在对应的日志记录持久化到磁盘之后&#xff0c;才能将实际…...

[MySQL]数据库与表创建

欢迎来到啾啾的博客&#x1f431;。 这是一个致力于构建完善 Java 程序员知识体系的博客&#x1f4da;。 它记录学习点滴&#xff0c;分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 欢迎评论交流&#xff0c;感谢您的阅读&#x1f604;。 本篇简单记录…...

工作记录 2015-05-27

工作记录 2015-05-27 序号 工作 相关人员 1 修改了指定短语的大小写的处理。 取消了一些逗号的处理。 郝 另&#xff1a; iCDA更新到了190的D:\Temp\CHTeam\iCDA_20150527下了 修改的文件&#xff1a; bin目录下是程序。 0223目录下是0223的一些设置和关键字。 更新…...

嵌入式汇编语言从小白到入门:从零开始的底层编程之旅

嵌入式汇编语言从小白到入门:从零开始的底层编程之旅 汇编语言作为最接近机器语言的编程方式,在嵌入式开发中扮演着不可替代的角色。本文将带你从零开始,逐步掌握嵌入式汇编语言的核心概念和实践技巧,最终能够独立编写简单的汇编程序并与C语言混合编程。 一、汇编语言与嵌…...

GPIO_ReadInputData和GPIO_ReadInputDataBit区别

目录 1、GPIO_ReadInputData: 2、GPIO_ReadInputDataBit: 总结 GPIO_ReadInputData 和 GPIO_ReadInputDataBit 是两个函数&#xff0c;通常用于读取微控制器GPIO&#xff08;通用输入输出&#xff09;引脚的输入状态&#xff0c;特别是在STM32系列微控制器中。它们之间的主要…...

不使用docker在本地安装与配置RAGFlow

RAGFlow 本地安装与配置(非docker方式) 一. 运行环境 windows10 CPU i7-12700F 2.10GHz内存 32GGPU RTX 4060 Ti 8G wsl 2 Ubuntu-22.04 1. 防火墙配置 wsl默认访问windows的本机服务需要配置防火墙&#xff0c;否则访问会失败。 windows10的防火墙配置&#xff1a; 打…...

sysfs 设备模型

介绍 Sysfs 设备文件系统与proc是同一类的文件系统&#xff0c;基于ramfs实现的内存文件系统。 1.1 为什么会有 sysfs&#xff1f;procfs 的局限性&#xff1a; 早期&#xff0c;Linux 使用 procfs 来提供内核与用户空间的交互接口。但 procfs 的设计不够层次化&#xff0c;设…...

彩讯携Rich AICloud与一体机智算解决方案亮相中国移动云智算大会

2025年4月10日&#xff0c;2025中国移动云智算大会在苏州盛大开幕&#xff0c;本次大会以“由云向智 共绘算网新生态”为主题&#xff0c;与会嘉宾围绕算力展开重点探讨。 大会现场特设区域展出各参会单位的最新算力成果&#xff0c;作为中国移动重要合作伙伴&#xff0c;彩讯…...

js触发隐式类型转换的场景

JavaScript 的隐式类型转换&#xff08;Implicit Type Coercion&#xff09;会在某些操作或上下文中自动触发&#xff0c;将值从一种类型转换为另一种类型。以下是常见的触发场景&#xff1a; 1. 使用 &#xff08;宽松相等&#xff09;比较时 会尝试将两边的值转换为相同类型后…...

《AI大模型应知应会100篇》第9篇:大模型的推理能力:原理与实现

第9篇&#xff1a;大模型的推理能力&#xff1a;原理与实现 摘要 近年来&#xff0c;随着大语言模型&#xff08;LLM&#xff09;的快速发展&#xff0c;其推理能力逐渐成为研究和应用中的热点话题。这些模型不仅能够生成流畅的文本&#xff0c;还能在一定程度上进行逻辑推理、…...

PODS_ROOT、BUILT_PRODUCTS_DIR和SRCROOT有什么区别

在 iOS/macOS 开发中&#xff0c;${PODS_ROOT}、${BUILT_PRODUCTS_DIR} 和 ${SRCROOT} 是三个核心的 Xcode 环境变量&#xff0c;它们的区别主要体现在 目录层级、内容归属 和 生命周期 上。以下是结构化对比和具体示例&#xff1a; 1. 定义与作用域对比 变量全称指向路径管理…...

Elasticsearch 系列专题 - 第六篇:高级功能与生态系统

Elasticsearch 不仅是一个强大的搜索引擎,还提供了高级功能和丰富的生态系统支持。本篇将深入探讨这些特性,并介绍如何与其他工具协同工作。 1. 高级特性 1.1 跨集群搜索(Cross-Cluster Search) 跨集群搜索允许查询多个独立集群的数据,适用于分布式系统。 配置远程集群:…...

python的web框架flask(hello,world版)

问题 最近需要基于一个开源项目进行二次开发&#xff0c;但是&#xff0c;现在的我主修java&#xff0c;从来没有接触过python的web开发。所以&#xff0c;我现在需要学习一下flask的hello&#xff0c;world。 python版本选择 通过这个Python版本状态页面Status of Python v…...

Vue学习笔记 - 逻辑复用 - 组合式函数

昨天参加了次视频面试&#xff0c;慢慢可以查漏补缺,继续学习Vue相关的知识&#xff0c;考虑找个实际的开源项目。 逻辑复用 组合式函数 在 Vue 应用的概念中&#xff0c;“组合式函数”(Composables) 是一个利用 Vue 的组合式 API 来封装和复用有状态逻辑的函数。 无状态的…...

Caffeine的两种实现方式

咱们来具体对比一下你之前给的这段配置代码&#x1f447;&#xff1a; java Configuration EnableCaching public class CacheConfig { Bean public CacheManager cacheManager() { CaffeineCacheManager manager new CaffeineCacheManager("myCache"); manager.…...

单细胞Seurat标准分析流程R语言封装

单细胞Seurat标准分析流程R语言封装 数据预处理与质控(线粒体基因比例计算、QC图表生成)标准化与高变基因筛选PCA/UMAP降维与聚类分析 差异表达分析模块自动化输出PNG可视化图表(质控小提琴图、UMAP聚类图)结果将保存在results/和figures/目录下(RDS对象、差异基因CSV表格…...

MOS管的发热原因和解决办法

发热来源 如上图&#xff0c;MOS管的工作状态有4种情况&#xff0c;分别是开通过程&#xff0c;导通过程&#xff0c;关断过程和截止过程。 导致发热的损耗主要有两种&#xff1a;开关损耗、导通损耗。 导通损耗 导通损耗比较好计算&#xff0c;根据驱动电压VGS值可以得到MOS…...

航顺HK32M070电钻解决方案:驱动未来,掌控无限可能

一、市场规模与增长&#xff1a;电动工具行业持续扩容&#xff0c;电钻需求强劲 全球电动工具市场规模近年来保持稳定增长&#xff0c;2023年市场规模已达288.5亿美元&#xff0c;预计2024年将突破304.9亿美元&#xff0c;年复合增长率达6.9%。中国市场表现尤为亮眼&#xff0…...

关于nacos注册的服务的ip异常导致网关路由失败的问题

文章目录 关于nacos注册的服务的ip异常导致网关路由失败的问题相关处理方案为方案一:手动指定服务注册的 IP 地址方法二&#xff1a;设置优先使用的网络段方法三&#xff1a;指定网络接口方法四&#xff1a;忽略特定的网卡 备注 关于nacos注册的服务的ip异常导致网关路由失败的…...

UI测试流程与关键注意点解析

在当今以用户体验为核心的数字时代&#xff0c;用户界面(UI)作为软件与用户交互的直接窗口&#xff0c;其质量直接影响着产品的成败。UI测试作为软件测试的重要组成部分&#xff0c;确保应用程序不仅功能完善&#xff0c;而且在视觉呈现和交互体验上也能满足用户期望。 作为软…...

从零开始构建智能聊天机器人:Rasa与ChatGPT API实战教程

引言&#xff1a;AI对话系统的时代机遇 在数字化转型浪潮中&#xff0c;聊天机器人已成为连接用户与服务的关键纽带。无论是客服系统中的724小时即时响应&#xff0c;还是智能家居中的语音交互&#xff0c;聊天机器人正在重塑人机交互方式。本文将通过详细教程&#xff0c;手把…...

SSM aop切面编程的学习

面向切面的AOP编程的引入&#xff1a; 1. 代码缺陷 - 非核心代码对核心业务功能有干扰&#xff0c;导致程序员在开发核心业务功能时分散了精力 - 附加功能代码重复&#xff0c;分散在各个业务功能方法中&#xff01;冗余&#xff0c;且不方便统一维护&#xff01; 2. 解决思路 …...

Zen 5白色装机优选,华硕X870 AYW GAMING WIFI W主板来了!

华硕X870/X870E系列主板再次迎来新成员——华硕X870 AYW GAMING WIFI W主板正式发售&#xff01;专为追求高性价比游戏玩家而量身打造&#xff0c;延续AYW系列经典SPACE太空元素&#xff0c;配合大面积银白色散热装甲&#xff0c;打造出了极具金属质感和科技感的外观&#xff0…...

第Y1周:调用YOLOv5官方权重进行检测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 文章目录 1、前言2、下载源码3、运行代码 1、前言 YOLOv5分为YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四个版本&#xff0c;这里以YOLOv5s为例。 2、下载源码 安…...

科技项目验收测试怎么做?验收测试报告如何获取?

科技项目从研发到上市需要一个很长的周期&#xff0c;并且在上市之前还有一个至关重要的交付过程&#xff0c;那就是项目验收&#xff0c;验收需要通过验收测试来呈现。科技项目验收测试是确保项目成功交付的关键步骤&#xff0c;那么是如何进行的呢?企事业单位想要获取科技项…...

C++笔记

C知识笔记 一、C概述 C是一种通用编程语言&#xff0c;它在C语言的基础上扩展而来&#xff0c;支持面向对象编程、泛型编程和过程化编程等多种编程范式。C具有高效、灵活、接近硬件等特点&#xff0c;广泛应用于系统软件、应用软件、嵌入式系统、游戏开发等领域。其强大的性能…...

国产Linux统信安装mysql8教程步骤

系统环境 uname -a Linux FlencherHU-PC 6.12.9-amd64-desktop-rolling #23.01.01.18 SMP PREEMPT_DYNAMIC Fri Jan 10 18:29:31 CST 2025 x86_64 GNU/Linux下载离线安装包 浏览器下载https://downloads.mysql.com/archives/get/p/23/file/mysql-test-8.0.33-linux-glibc2.28…...

如何应对“最后时刻任务堆积”(鼓包现象)

应对“最后时刻任务堆积”&#xff08;鼓包现象&#xff09;的方法包括&#xff1a;合理规划项目时间表、强化进度跟踪管理、明确任务优先级、有效的资源配置、提升团队沟通效率。其中&#xff0c;强化进度跟踪管理尤为关键。根据项目管理协会&#xff08;PMI&#xff09;的调查…...

C语言,原码、补码、反码

计算机是以补码来存储的 原码&#xff1a;正数最高位为&#xff1a;0&#xff1b;负数最高位为&#xff1a;1 &#xff08;最高位是符号位&#xff09; 正数&#xff1a;三码合一 如&#xff1a;2&#xff1a; 原码&#xff1a;0000 0000 0000 0000 0000 0000 0000 0010&#…...

Unifying Short and Long-Term Tracking with Graph Hierarchies—CVPR2023

Unifying Short and Long-Term Tracking with Graph Hierarchies 博客目录 Unifying Short and Long-Term Tracking with Graph Hierarchies摘要概况引言和相关介绍提出的观点 SUSHI核心构建跟踪图的层次结构构建分层剪辑分区 做第二个创新模块的需要将研究的重点从处理遮挡的问…...

深入解析 C# 中的模板方法设计模式

模板方法设计模式&#xff08;Template Method Pattern&#xff09;是行为型设计模式中的一种&#xff0c;它定义了一个操作中的算法框架&#xff0c;并允许子类在不改变算法整体结构的情况下&#xff0c;重新定义该算法的某些步骤。该模式通常用于类中包含一系列固定步骤的算法…...

0411 | 软考高项笔记:项目立项

在软考的项目管理知识体系中&#xff0c;技术可行性和经济可行性是项目立项阶段非常重要的两个分析维度。以下是对这两个考点的详细解释和记忆方法&#xff1a; 技术可行性分析 定义&#xff1a; 技术可行性分析是评估项目在现有技术条件和资源下是否能够成功实施。它主要回答…...

ubnetu 服务器版本常用端口和开放的端口对应的应用

1. 使用 netstat 查看端口与进程 netstat 是查看网络连接和监听端口的常用工具。通过以下命令可以列出所有开放的TCP/UDP端口及其关联的进程&#xff1a; sudo netstat -tulnp参数解析&#xff1a; -t&#xff1a;显示TCP端口。 -u&#xff1a;显示UDP端口。 -l&#xff1…...

【服务器端表单字符验证】

文章目录 一、实验目的二、核心代码实现三、调试关键问题四、总结 一、实验目的 掌握JSP表单验证在服务器端的实现技术&#xff0c;实现对用户输入字符的非空及长度为5的验证&#xff0c;返回对应提示信息并优化用户交互。 二、核心代码实现 前端表单 <form action"…...

pip 与 conda 的全面比较:Python 包管理的深度解析

在 Python 的生态系统中&#xff0c;包管理工具是开发者日常工作的重要组成部分。​其中&#xff0c;pip 和 conda 是最常用的两种包管理工具。​虽然它们在功能上有一些重叠&#xff0c;但在设计理念、功能范围、依赖管理、环境隔离等方面存在显著差异。​本文将从多个维度深入…...

GTID不一致修复

背景描述 GTID模式下&#xff0c;mysql主从切换后&#xff0c;主从同步报错 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION 1, but the master has purged bi…...

conda-pack打包环境到超算上。解决无法打包可编辑包

conda-pack 打包 使用 conda-pack 打包 Conda 环境可以将整个环境打包成一个独立的可移植压缩包&#xff0c;方便在其他机器上解压使用。以下是具体步骤&#xff1a; 1.安装 conda-pack 首先需要安装 conda-pack。你可以通过 conda 或 pip 安装&#xff1a; conda install …...

O(n)复杂度实现寻找数组第k小的数(快速选择算法)

非堆排序实现&#xff0c;利用快速排序思想实现的快速选择 package algorithm;public class Test {public int quickSelect(int nums[], int left, int right, int k){if (left right) return nums[left];int i left - 1, j right 1, x nums[left];while (i < j){do i…...