一文讲懂Mac中的环境变量

你是否曾经因为环境变量配置不当而浪费了宝贵的开发时间?你是否好奇为什么有时候在终端输入命令会提示"command not found",而有时候又能正常运行?如果你是一名Mac用户,并且希望真正掌握环境变量的奥秘,那么这篇文章将为你揭开Mac中环境变量的神秘面纱,帮助你成为一名更高效的开发者。
image.png

目录

    • 什么是环境变量?
    • 为什么环境变量如此重要?
    • Mac中常见的环境变量
    • 如何查看Mac中的环境变量
    • 设置环境变量的方法
      • 临时设置
      • 永久设置
      • 系统级环境变量
    • 环境变量加载顺序
    • 常见问题和解决方案
      • 1. 环境变量没有生效
      • 2. PATH环境变量混乱
      • 3. 环境变量包含空格
      • 4. 子进程无法访问环境变量
      • 5. IDE或图形应用程序无法识别环境变量
      • 6. 版本管理工具(如pyenv, rbenv)与系统路径冲突
    • 环境变量最佳实践
    • 高级技巧:使用direnv管理项目特定的环境变量
      • 安装direnv
      • 使用direnv
      • 高级direnv用法
    • 总结

什么是环境变量?

环境变量是一种在操作系统中存储的动态命名值,可以影响系统中运行程序的行为。简单来说,它们就像是你电脑中的一个个小便签,上面记录着各种重要信息,这些信息可以被系统或其他程序读取和使用。

在Mac(以及其他Unix-like系统)中,环境变量通常表现为"键值对"的形式:

KEY=value

例如,一个常见的环境变量是PATH,它告诉系统在哪里查找可执行文件:

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

image.png

为什么环境变量如此重要?

环境变量之所以重要,是因为它们在软件开发和系统管理中扮演着关键角色:

  1. 命令行工具的可用性: PATH环境变量决定了系统在哪里查找可执行文件。正确配置PATH可以让你在任何目录下使用命令行工具。

  2. 配置应用程序行为: 许多应用程序使用环境变量来确定其行为。例如,JAVA_HOME环境变量告诉Java应用程序在哪里找到Java运行时。

  3. 安全性: 某些环境变量用于存储敏感信息,如API密钥或数据库连接字符串,这样可以避免将这些信息硬编码到源代码中。

  4. 跨平台兼容性: 环境变量提供了一种在不同操作系统间共享配置的方法。

  5. 开发环境管理: 不同的项目可能需要不同版本的工具或库。通过环境变量,你可以轻松切换между不同的开发环境。
    image.png

Mac中常见的环境变量

让我们来看看Mac系统中一些常见且重要的环境变量:

  1. PATH:

    • 作用:指定系统查找可执行文件的目录列表。
    • 示例:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
  2. HOME:

    • 作用:指定当前用户的主目录。
    • 示例:/Users/yourusername
  3. USER:

    • 作用:当前登录用户的用户名。
    • 示例:yourusername
  4. SHELL:

    • 作用:指定当前用户的默认shell。
    • 示例:/bin/zsh
  5. LANG:

    • 作用:设置程序的语言和区域设置。
    • 示例:en_US.UTF-8
  6. JAVA_HOME:

    • 作用:指定Java开发工具包(JDK)的安装位置。
    • 示例:/Library/Java/JavaVirtualMachines/jdk-15.jdk/Contents/Home
  7. PYTHONPATH:

    • 作用:指定Python查找模块的额外目录。
    • 示例:/Users/yourusername/projects/python_modules
  8. NODE_ENV:

    • 作用:指定Node.js应用程序的运行环境(如开发、生产等)。
    • 示例:development
  9. EDITOR:

    • 作用:指定默认的文本编辑器。
    • 示例:/usr/bin/vim
  10. TERM:

    • 作用:指定终端类型。
    • 示例:xterm-256color
      image.png

如何查看Mac中的环境变量

在Mac中,有several 线下查看环境变量的方法:

  1. 使用env命令:
    打开终端,输入以下命令:

    env
    

    这将列出所有当前设置的环境变量。

  2. 使用printenv命令:

    printenv
    

    这个命令的效果与env类似。

  3. 查看特定的环境变量:
    如果你只想查看某个特定的环境变量,可以使用echo命令:

    echo $PATH
    

    这将显示PATH环境变量的值。

  4. 使用set命令:

    set
    

    这个命令会显示所有的shell变量,包括环境变量。

  5. 在图形界面中查看:
    你也可以通过以下步骤在图形界面中查看系统环境变量:

    • 打开 “终端” 应用程序
    • 在菜单栏中选择 “Shell” > “新建窗口” > “系统环境变量”
      这将打开一个新的终端窗口,显示所有的系统环境变量。
      image.png

让我们通过一个实际的例子来演示如何查看和理解环境变量:

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/homebrew/bin$ echo $HOME
/Users/yourusername$ printenv | grep JAVA
JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-15.jdk/Contents/Home

在这个例子中,我们首先查看了PATH环境变量,它显示了一系列由冒号分隔的目录。这些目录就是系统查找可执行文件的地方。然后我们查看了HOME环境变量,它指向当前用户的主目录。最后,我们使用grep命令过滤出包含"JAVA"的环境变量,这里显示了JAVA_HOME的设置。

理解这些环境变量的含义和作用,对于排查问题和优化开发环境至关重要。例如,如果你安装了一个新的命令行工具,但在终端中无法使用,很可能是因为它的安装目录没有被添加到PATH环境变量中。

设置环境变量的方法

在Mac中设置环境变量有两种主要方法:临时设置和永久设置。让我们详细探讨这两种方法。

临时设置

临时设置的环境变量只在当前终端会话中有效。一旦关闭终端窗口或重启电脑,这些设置就会失效。

  1. 使用export命令:

    export MY_VARIABLE="Hello, World!"
    

    这会创建一个名为MY_VARIABLE的新环境变量。

  2. 在命令前设置:

    MY_VARIABLE="Hello, World!" python my_script.py
    

    这种方法只为特定命令设置环境变量。

示例:假设你正在开发一个Python应用,需要临时设置一个API密钥:

$ export API_KEY="your-secret-api-key"
$ python
Python 3.9.5 (default, May  4 2021, 03:33:11) 
[Clang 12.0.0 (clang-1200.0.32.29)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print(os.environ.get('API_KEY'))
your-secret-api-key
>>> exit()$ echo $API_KEY
your-secret-api-key$ # 关闭终端后,再次打开新的终端窗口
$ echo $API_KEY
# 此时不会显示任何内容,因为环境变量已经失效

image.png

永久设置

如果你希望环境变量在重启后依然有效,你需要将它们添加到shell的配置文件中。对于大多数Mac用户来说,默认的shell是Zsh。

  1. 编辑~/.zshrc文件:

    nano ~/.zshrc
    
  2. 添加环境变量:
    在文件的末尾添加:

    export MY_VARIABLE="Hello, World!"
    
  3. 保存并退出:
    Ctrl+X,然后按Y,最后按Enter

  4. 重新加载配置文件:

    source ~/.zshrc
    

示例:让我们永久设置JAVA_HOME环境变量:

$ echo 'export JAVA_HOME=$(/usr/libexec/java_home)' >> ~/.zshrc
$ source ~/.zshrc
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk-15.jdk/Contents/Home

这个例子中,我们使用java_home工具动态获取Java安装路径,并将其设置为JAVA_HOME环境变量。通过将这行配置添加到~/.zshrc文件中,我们确保每次打开新的终端窗口时,这个环境变量都会被正确设置。

注意:如果你使用的是Bash而不是Zsh,你需要编辑~/.bash_profile~/.bashrc文件。

系统级环境变量

image.png

除了用户级的环境变量,Mac还允许设置系统级的环境变量,这些变量对所有用户都有效。

  1. 创建或编辑/etc/paths.d/目录下的文件:

    sudo nano /etc/paths.d/mypath
    
  2. 添加新的路径:
    在文件中添加新的路径,每行一个。

  3. 保存并退出

这种方法主要用于修改系统的PATH环境变量。对于其他类型的系统级环境变量,你可以编辑/etc/environment文件:

sudo nano /etc/environment

在这个文件中,你可以添加键值对形式的环境变量:

SYSTEM_WIDE_VARIABLE="This is a system-wide environment variable"

记住,修改系统级配置需要管理员权限,而且可能影响系统的稳定性,请谨慎操作。

环境变量加载顺序

image.png

了解Mac中环境变量的加载顺序对于解决冲突和优化配置至关重要。以下是Mac(使用Zsh作为默认shell)加载环境变量的大致顺序:

  1. /etc/zshenv
  2. ~/.zshenv
  3. /etc/zprofile
  4. ~/.zprofile
  5. /etc/zshrc
  6. ~/.zshrc
  7. /etc/zlogin
  8. ~/.zlogin

这个顺序意味着:

  • 系统级配置(/etc/下的文件)先于用户级配置(~/下的文件)加载。
  • zshenv文件最先加载,适合放置重要的环境变量。
  • zshrc文件在交互式shell中加载,适合放置别名(alias)和函数定义。
  • zlogin文件最后加载,适合放置登录后的设置。

理解这个加载顺序可以帮助你更好地组织你的环境变量配置。例如,如果你想要某个环境变量在所有情况下都可用(包括非交互式shell),你应该将它放在~/.zshenv中。

让我们通过一个实际的例子来说明这个加载顺序的重要性:

# 在 /etc/zshenv 中
export GLOBAL_VAR="Hello from global"# 在 ~/.zshenv 中
export GLOBAL_VAR="Hello from user"
export USER_VAR="User specific"# 在 ~/.zshrc 中
alias print_vars='echo $GLOBAL_VAR && echo $USER_VAR'

在这个例子中:

  • GLOBAL_VAR在系统级和用户级在这个例子中:
  • GLOBAL_VAR在系统级和用户级配置中都被定义了。
  • USER_VAR只在用户级配置中定义。
  • 我们在~/.zshrc中定义了一个别名来打印这些变量。

当我们打开一个新的终端窗口时,会发生以下情况:

$ echo $GLOBAL_VAR
Hello from user
$ echo $USER_VAR
User specific
$ print_vars
Hello from user
User specific

这个结果说明:

  1. 用户级的~/.zshenv中的设置覆盖了系统级的/etc/zshenv中的设置。
  2. ~/.zshrc中定义的别名成功加载并可以使用。

理解这种加载顺序可以帮助你解决环境变量冲突,并确保你的配置按预期工作。

常见问题和解决方案

在使用Mac的环境变量时,开发者可能会遇到一些常见问题。让我们来看看这些问题以及它们的解决方案:
image.png

1. 环境变量没有生效

问题: 你设置了一个新的环境变量,但是在新的终端窗口中无法使用。

解决方案:

  • 确保你已经正确地设置了环境变量,并且在正确的配置文件中设置(~/.zshrc~/.zshenv)。
  • 使用source命令重新加载配置文件:
    source ~/.zshrc
    
  • 如果问题仍然存在,尝试重启终端应用程序或注销并重新登录。

2. PATH环境变量混乱

问题: 某些命令无法找到,或者系统使用了错误版本的命令。

解决方案:

  • 检查你的PATH环境变量:
    echo $PATH
    
  • 确保重要的目录位于PATH的前面。你可以在~/.zshrc中重新设置PATH:
    export PATH="/usr/local/bin:$PATH"
    
  • 使用which命令检查特定命令的位置:
    which python
    

3. 环境变量包含空格

问题: 包含空格的环境变量值导致错误。

解决方案:

  • 在设置环境变量时使用引号:
    export MY_VAR="This is a value with spaces"
    

4. 子进程无法访问环境变量

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

解决方案:

  • 确保变量已经被导出。使用export命令而不是简单的赋值:
    export MY_VAR="value"  # 正确
    MY_VAR="value"  # 错误,不会传递给子进程
    
  • 对于需要在所有情况下都可用的变量,将其设置在~/.zshenv文件中。

5. IDE或图形应用程序无法识别环境变量

问题: 在终端中设置的环境变量在IDE或其他图形应用程序中不可用。

解决方案:

  • 对于通过Dock启动的应用程序,你可能需要在~/.zshenv中设置环境变量。
  • 或者,你可以创建一个launchd.conf文件来设置全系统的环境变量:
    echo 'setenv MY_VAR value' | sudo tee -a /etc/launchd.conf
    
    然后重启系统使更改生效。

6. 版本管理工具(如pyenv, rbenv)与系统路径冲突

问题: 安装了版本管理工具后,系统使用了错误版本的解释器。

解决方案:

  • 确保版本管理工具的初始化脚本正确添加到你的shell配置文件中。
  • 例如,对于pyenv,在~/.zshrc中添加:
    eval "$(pyenv init -)"
    
  • 确保这些初始化命令在PATH修改之后。

通过理解这些常见问题和解决方案,你可以更好地管理Mac中的环境变量,避免因配置错误而浪费宝贵的开发时间。

环境变量最佳实践

image.png

为了更有效地使用环境变量并避免潜在的问题,这里有一些最佳实践建议:

  1. 使用有意义的名称:
    选择清晰、描述性的名称for 环境变量。例如,使用DATABASE_URL而不是DB_CONN

    export DATABASE_URL="postgresql://user:password@localhost:5432/mydb"
    
  2. 避免敏感信息:
    不要在版本控制系统中存储包含敏感信息(如密码、API密钥)的环境变量。Instead,使用.env文件或专门的秘密管理工具。

    # .env file (不要提交到版本控制系统)
    API_KEY=your_secret_api_key
    
  3. 使用默认值:
    当使用环境变量时,提供默认值以增加代码的健壮性。

    # In a shell script
    ENVIRONMENT=${ENVIRONMENT:-development}
    
  4. 分组相关变量:
    使用前缀来组织相关的环境变量。

    export APP_NAME="MyApp"
    export APP_VERSION="1.0.0"
    export APP_DEBUG="true"
    
  5. 文档化:
    记录你的环境变量,包括它们的用途、可能的值和默认值。

    # DATABASE_URL: The connection string for the database
    # Format: postgresql://user:password@host:port/dbname
    # Default: postgresql://localhost:5432/myapp
    export DATABASE_URL="postgresql://localhost:5432/myapp"
    
  6. 使用工具管理多环境:
    对于需要在不同环境(开发、测试、生产)之间切换的项目,考虑使用如direnv这样的工具。

  7. 定期审查和清理:
    定期检查你的环境变量,移除不再使用的变量。

  8. 使用类型安全的封装:
    在应用程序代码中,使用类型安全的方法来访问环境变量。

    import os
    from typing import Optionaldef get_database_url() -> str:url = os.environ.get('DATABASE_URL')if url is None:raise ValueError("DATABASE_URL must be set")return urldef get_debug_mode() -> bool:return os.environ.get('DEBUG', 'false').lower() == 'true'
    
  9. 版本控制环境变量模板:
    虽然不应该在版本控制中包含实际的环境变量值,但是可以包含一个模板或示例文件。

    # .env.example
    DATABASE_URL=postgresql://user:password@localhost:5432/dbname
    API_KEY=your_api_key_here
    DEBUG=false
    
  10. 使用环境特定的配置文件:
    对于不同的环境,使用不同的配置文件。

    # .zshrc
    if [ -f ~/.zshrc_local ]; thensource ~/.zshrc_local
    fi
    

    然后,在每个环境中创建一个.zshrc_local文件,包含特定于该环境的设置。

通过遵循这些最佳实践,你可以创建一个更加健壮、安全和可维护的环境变量配置。这不仅可以提高你的开发效率,还可以减少由于环境配置错误而导致的问题。

高级技巧:使用direnv管理项目特定的环境变量

当你在多个项目之间切换工作时,管理项目特定的环境变量可能会变得复杂。这就是direnv发挥作用的地方。direnv是一个扩展shell的工具,它可以根据当前目录加载和卸载环境变量。

安装direnv

在Mac上,你可以使用Homebrew来安装direnv:

brew install direnv

安装后,你需要在你的shell配置文件(如~/.zshrc)中添加以下行:

eval "$(direnv hook zsh)"

使用direnv

  1. 创建.envrc文件:
    在你的项目目录中创建一个.envrc文件:

    cd /path/to/your/project
    touch .envrc
    
  2. 添加环境变量:
    .envrc文件中添加你的项目特定的环境变量:

    export PROJECT_NAME="MyAwesomeProject"
    export DATABASE_URL="postgresql://localhost:5432/myproject"
    export API_KEY="your_secret_api_key"
    
  3. 允许direnv:
    首次创建或修改.envrc文件后,你需要显式地允许direnv加载它:

    direnv allow
    

现在,每次你进入这个项目目录时,这些环境变量就会自动加载。当你离开目录时,它们会自动卸载。

高级direnv用法

  1. 继承环境变量:
    你可以使用dotenv命令来加载.env文件:

    # .envrc
    dotenv .env
    
  2. 根据环境加载不同的配置:

    # .envrc
    if [ "$ENVIRONMENT" = "production" ]; thendotenv .env.production
    elsedotenv .env.development
    fi
    
  3. 添加目录到PATH:

    # .envrc
    PATH_add bin
    
  4. 设置项目特定的shell别名:

    # .envrc
    alias run="python manage.py runserver"
    
  5. 自动激活虚拟环境:

    # .envrc
    layout python3
    

通过使用direnv,你可以大大简化项目间的切换过程,确保每个项目都有正确的环境设置,而不会污染全局环境。

总结

在这篇文章中,我们深入探讨了Mac中环境变量的方方面面。我们学习了什么是环境变量,为什么它们如此重要,以及如何在Mac系统中查看、设置和管理它们。我们还讨论了常见问题及其解决方案,分享了一些最佳实践,并介绍了如何使用direnv这样的高级工具来管理项目特定的环境变量。

理解和正确使用环境变量可以:

  • 提高开发效率
  • 增强应用程序的安全性
  • 简化配置管理
  • 使项目更易于在不同环境之间迁移

记住,环境变量是强大的工具,但也需要谨慎使用。始终遵循安全最佳实践,特别是在处理敏感信息时。定期审查和更新你的环境变量配置,确保它们始终符合你的需求。

最后,我鼓励你深入探索本文中提到的工具和技术。实践是掌握这些概念的最好方法。尝试在你的下一个项目中应用这些知识,你会发现它们如何改变你的开发工作流程。

通过掌握Mac中的环境变量,你将成为一个更高效、更专业的开发者。祝你编码愉快!

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java设计模式—面向对象设计原则(二) --------> 里氏代换原则 LSP (完整详解,附有代码+案列)

文章目录 里氏代换原则3.2.1 概述3.2.2 改进上述代码 里氏代换原则 里氏代换原则:Liskov Substitution Principle,LSP 3.2.1 概述 里氏代换原则是面向对象设计的基本原则之一。 里氏代换原则:任何基类可以出现的地方,子类一定…

html实现好看的多种风格手风琴折叠菜单效果合集(附源码)

文章目录 1.设计来源1.1 风格1 -图文结合手风琴1.2 风格2 - 纯图片手风琴1.3 风格3 - 导航手风琴1.4 风格4 - 双图手风琴1.5 风格5 - 综合手风琴1.6 风格6 - 简描手风琴1.7 风格7 - 功能手风琴1.8 风格8 - 全屏手风琴1.9 风格9 - 全屏灵活手风琴 2.效果和源码2.1 动态效果2.2 源…

FloodFill(洪水灌溉)算法专题——DFS深搜篇

目录 1、图像渲染 1.1 算法原理 1.2 算法代码 2、岛屿数量 2.1 算法原理 2.2 算法代码 3、岛屿的最大面积 3.1 算法原理 3.2 算法代码 4、被围绕的区域 4.1 算法原理 4.2 算法代码 5、太平洋大西洋水流问题 5.1 算法原理 5.2 算法代码 6、扫雷游戏 6.1 算法原理…

React学习day07-ReactRouter-抽象路由模块、路由导航、路由导航传参、嵌套路由、默认二级路由的设置、两种路由模式

14、ReactRouter续 (2)抽象路由模块 1)新建page文件夹,存放组件 组件内容: 2)新建router文件夹,在其下创建实例 3)实例导入,使用 4)效果 (3&…

【大数据方案】智慧大数据平台总体建设方案书(word原件)

第1章 总体说明 1.1 建设背景 1.2 建设目标 1.3 项目建设主要内容 1.4 设计原则 第2章 对项目的理解 2.1 现状分析 2.2 业务需求分析 2.3 功能需求分析 第3章 大数据平台建设方案 3.1 大数据平台总体设计 3.2 大数据平台功能设计 3.3 平台应用 第4章 政策标准保障体系 4.1 政策…

Day26_0.1基础学习MATLAB学习小技巧总结(26)——数据插值

利用空闲时间把碎片化的MATLAB知识重新系统的学习一遍,为了在这个过程中加深印象,也为了能够有所足迹,我会把自己的学习总结发在专栏中,以便学习交流。 参考书目: 1、《MATLAB基础教程 (第三版) (薛山)》 2、《MATL…

Java项目——苍穹外卖(二)

Redis 简介 Redis是一个基于内存的key-value结构数据库 基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛 基础操作 启动 在redis安装目录中打开cmd,输入如上图指令即可启动,按下crtl…

【图像匹配】基于SIFT算法的图像匹配,matlab实现

博主简介:matlab图像代码项目合作(扣扣:3249726188) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于基于SIFT算法的图像匹配,用matlab实现。 一、案例背景和算法介绍 本…

es的封装

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、类和接口介绍0.封装思想1.es的操作分类 二、创建索引1.成员变量2.构造函数2.添加字段3.发送请求4.创建索引总体代码 三.插入数据四.删除数据五.查询数据 前…

Linux下root用户共享conda环境给其他用户

首先可以先用命令查看环境存储位置 conda env list 比如我的root用户的base环境 # conda environments: # base * /usr/local/miniconda3 在root下先给环境添文件夹加普通用户的权限 chmod -R 755 /usr/local/miniconda3 接下来新建一个用户&#xff0…

Python 课程14-TensorFlow

前言 TensorFlow 是由 Google 开发的一个开源深度学习框架,广泛应用于机器学习和人工智能领域。它具有强大的计算能力,能够运行在 CPU、GPU 甚至 TPU 上,适用于从小型模型到大规模生产系统的各种应用场景。通过 TensorFlow,你可以…

Unity+LeapMotion2的使用

开始吧 导入步骤1.到官网下载软件并安装2.安装插件3.场景中添加检测管理器4.场景中添加手部模型 更多细节 导入步骤 1.到官网下载软件并安装 地址 重启电脑后连接设备 可以看到连接成功 2.安装插件 (也可以看官方教程) Project—>PackageManag…

从AI应用排行榜选择AI产品(9月)

2024年9月13日,OpenAI公司宣布推出其全新的AI模型:o1,在数学、编程和科学问题的解决处理能力上取得了显著进步。该模型通过自我对弈强化学习(Self-play RL)和思维链(Chain of Thought, CoT)技术…

openssl的使用

1、编译 Github下载:https://github.com/openssl/openssl 官网下载:https://openssl-library.org/source/index.html 官网历史版本:https://www.openssl.org/source/old/ 1.1 Windows下编译 我的文章:OPC UA使用 Openssl库编译…

0基础带你入门Linux之使用

1.Ubuntu软件管理 回顾一下,我们之前使用su root切换到root模式,使用who 发现为什么显示的还是bd用户呢?为什么呢? 这个who是主要来查看的是我们登录的时候是以什么用户登录的 所以即使我们使用who进行查看的时候显示的还是bd用…

【浅水模型MATLAB】尝试复刻SCI论文中的溃坝流算例

【浅水模型MATLAB】尝试复刻SCI论文中的溃坝流算例 前言问题描述控制方程及数值方法浅水方程及其数值计算方法边界条件的实现 代码框架与关键代码模拟结果 更新于2024年9月17日 前言 这篇博客算是学习浅水方程,并利用MATLAB复刻Liang (2004)1中溃坝流算例的一个记录…

SysML图例-重症输液泵

SysML图中词汇 infusion pump 输液泵。替代传统的重力式吊瓶输液,达到更加精准和更加安全给药的目的。 syringe pump 注射泵。也称作微量输液泵,主要目的是对容量式输液泵在微量给药方面的一个补充。

ECMAScript与JavaScript的区别

目录 一、什么是ECMAScript? 二、什么是JavaScript? 三、ECMAScript与JavaScript的关系 3.1 ECMAScript规范版本 3.2 JavaScript的实现 四、ECMAScript与JavaScript的主要区别 4.1 规范与实现的区别 4.2 版本更新 4.3 环境支持 4.4 语言特性 五…

中秋期间互联网产品故障事件(晋江、115盘、阿里云盘)盘点

24年中秋期间,除了肆掠的“贝碧嘉”台风外,互联网故障bug事件也不少,趁着有空盘点下,可作为员工信息安全培训案例。 一:晋江文学城访问异常(基础环境故障类) 9月14日,“晋江崩了”冲…

【python设计模式3】创建型模式2

目录 抽象工厂模式 建造者模式 单例模式 创建型模式概述 抽象工厂模式 抽象工厂模式:定义一个工厂类的接口让工厂子类来创建一系列相关或者相互依赖的对象。相比工厂方法模式,抽象工厂模式中的每一个具体工厂都生产一套产品。下面是生产厂商生产一部手…