Linux:/proc/sys/vm/目录各文件详解

目录

  • 前言
  • 一、/proc/sys/vm/目录各文件
  • 二、相关功能的API函数

前言

  /proc/sys/vm/ 目录是 Linux 系统中的一个特殊目录,它包含了与虚拟内存子系统相关的系统内核参数。这些参数可以用来配置系统的虚拟内存管理策略,包括内存分配、页面置换、内存压缩、NUMA 等方面的设置。用户和系统管理员可以通过修改这些内核参数来调整系统的内存管理行为,以优化系统性能或满足特定的应用需求。

一、/proc/sys/vm/目录各文件

在这里插入图片描述
  根据列出的文件名,这些文件涉及到 Linux 操作系统的调优和内核参数的配置。下面逐个分析各个文件的作用和含义:

  1. admin_reserve_kbytes:该文件用于配置管理员保留的内存大小,以字节为单位。这些内存页不会被分配给普通用户。

  2. compaction_proactiveness:

    • 该参数用于配置内存紧缩(memory compaction)的主动性。内存紧缩是一种机制,用于解决内存碎片化问题。在内存压缩过程中,内核会尝试重新组织内存页,以便更容易找到连续的内存块来满足分配请求。
    • 可能的取值范围为 0 到 100。较高的值表示更积极主动地进行内存紧缩,但也可能增加系统负载。较低的值则表示更保守的紧缩策略,可能导致内存碎片的累积。
    • 用户可以通过修改这个参数来调整内存紧缩的主动性,从而平衡系统的内存利用率和性能开销。
  3. compact_memory:

    • 该参数用于启用或禁用内存的同区压缩(memory compaction)。同区压缩是一种特定的内存管理策略,通过重新组织内存页来减少内存碎片化,提高内存利用率。
    • 可能的取值为 0(表示禁用)或 1(表示启用)。
    • 用户可以通过修改这个参数来控制系统是否使用同区压缩来优化内存布局。
  4. compact_unevictable_allowed:

    • 这个参数用于配置是否允许压缩不可被驱逐的内存(unevictable memory)。
    • 不可被驱逐的内存是一种无法从内存中移除的内存,例如被锁定的内存或内核数据结构等。
    • 设置为 1 表示允许压缩不可被驱逐的内存,设置为 0 则表示禁止压缩这部分内存。
    • 用户可以通过修改这个参数来调整系统对不可被驱逐内存的处理策略。
  5. dirty_background_bytes

    • 该参数定义了当系统中脏页达到此阈值时,后台写回进程(内核线程)将开始写回脏页到磁盘。
    • 单位为字节,这个参数用于控制在后台写回脏页时可用内存的阈值。
  6. dirty_background_ratio

    • dirty_background_bytes 类似,这个参数定义了后台写回进程开始写回脏页的内存使用比率阈值。
    • 以系统可用内存的百分比来表示。
  7. dirty_bytes

    • 这个参数定义了在脏页被强制回写之前脏页的数量上限。
    • 当脏页的数量超过此阈值时,内核将启动写回脏页的操作。
  8. dirty_expire_centisecs

    • 该参数设置了脏页被认为“过期”的时间,单位为100毫秒。
      。过期的脏页将被写回到磁盘。
    • 当脏页在内存中存在时间超过这个阈值时,它将被认为是过期的。
  9. dirty_ratio

    • 定义了内存中可以被脏页占用的最大比例。当这个比例被超过时,进程将被阻塞,以等待脏页写回磁盘。
  10. dirtytime_expire_seconds:这个参数定义了脏页存在时间的上限,在这个时间之后,脏页将被写回到磁盘。

  11. dirty_writeback_centisecs: 用于配置脏页刷新到磁盘的时间间隔,单位为百分之一秒。

  12. drop_caches:该参数并非用于配置脏页,而是用于清空文件系统缓存和页缓存,以释放内存。可以通过在这个文件中写入不同的数值来执行不同的清理操作。echo 3 > /proc/sys/vm/drop_caches, 执行缓存清空操作。数字 3 代表清空页缓存、目录项缓存和 inode 缓存。

13.extfrag_threshold:这个参数用于控制系统分配连续内存页面的策略。当内存分配请求被满足时,内核会尽量提供连续的物理内存页。“extfrag_threshold” 就是设置内核认为内存碎片过大的阈值。

  1. hugetlb_shm_group:这个参数是为了支持 HugeTLB(大页面)而设置的。它指定了希望使用大页面的用户空间进程的共享内存分配所需的权限。

  2. laptop_mode:这个参数是针对笔记本电脑而设计的,用于控制系统在省电模式下的行为。当启用 “laptop_mode” 时,系统会尽量降低功耗,延长电池续航时间。

  3. legacy_va_layout:这个参数用于启用或禁用内核在用户态地址空间中使用传统的 “VA = PA + PAGE_OFFSET” 布局。通常情况下,不需要手动修改此参数。

  4. lowmem_reserve_ratio:这个参数决定了系统在低内存条件下要保留多少内存以供内核使用。默认情况下,内核会保留一部分内存,以便能够应对低内存压力和系统任务的需要。

  5. max_map_count:这个参数限制了每个进程能够创建的内存映射区(vma)的数量。通过限制这个数量,可以提高系统的安全性和稳定性。

  6. memory_failure_early_kill:这个参数决定了内核对检测到的内存故障的处理方式。当启用 “memory_failure_early_kill” 时,内核会快速杀死出现内存故障的进程以防止进一步的损害。

  7. memory_failure_recovery:这个参数用于设置内核对内存错误的恢复行为。它决定了内核在检测到内存故障后的下一步操作,如是否尝试修复或替换故障的内存区域。

  8. min_free_kbytes:是 Linux 内核中的一个调整参数,用于设置最小空闲内存的阈值。它表示内核将尽量保留的空闲内存量,以确保系统具有足够的可用内存来应对突发的内存需求。以页的数量为单位。当内存使用量接近 min_free_kbytes 时,内核会避免分配更多的内存页面,以保留一定的空闲内存。这样做的目的是避免系统因为内存不足而陷入频繁的页面置换操作,以及在处理突发内存需求时能够有一些缓冲空间。

  9. min_slab_ratio:这个参数用于控制内核中 slab 分配器的空间使用比例。它表示 slab 缓存的最小使用比例,当 slab 缓存的使用比例低于该值时,内核会释放一些 slab 缓存以回收内存空间。

  10. min_unmapped_ratio:这个参数用于控制内核中未映射内存的使用比例。当未映射内存的使用比例低于该值时,内核会回收未映射的内存页面以释放内存空间。

  11. mmap_min_addr:这个参数用于限制被非特权进程用于 mmap() 系统调用的地址范围。它指定了 mmap() 返回的映射地址的最小值,防止用户空间进程随意映射低地址空间。

  12. mmap_rnd_bits mmap_rnd_compat_bits:这两个参数控制 mmap 映射地址的随机化。mmap_rnd_bits 指定了 mmap 映射地址的位数,mmap_rnd_compat_bits 指定了与其他架构上的二进制兼容时的位数。`

  13. nr_hugepagesnr_hugepages_mempolicy:这两个参数用于设置系统中 HugeTLB(大页面)的数量。nr_hugepages 设置为大于 0 的值时,表示分配固定数量的大页面;nr_hugepages_mempolicy 在 NUMA 架构上指定了每个 NUMA 节点分配的大页面数量。

  14. cnr_overcommit_hugepages:这个参数用于设置系统中额外可动态分配的 HugeTLB(大页面)的数量。当系统的 HugeTLB 使用完时,内核会尝试动态分配额外的 HugeTLB 页面。

  15. numa_stat文件提供了 NUMA(非统一内存访问)系统的统计信息。。NUMA 是一种多处理器系统架构,其中每个处理器与特定的内存区域(称为 NUMA 节点)关联,而且每个处理器只能直接访问本地节点的内存,对其他节点的访问需要通过交互连接进行。

  16. numa_zonelist_order:该文件用于指定 NUMA 架构的内存分配策略。

"numa_zonelist_order" 是 Linux 内核中的一个调优参数,用于指定 NUMA(Non-Uniform
Memory Access,非一致性内存访问)系统中内存分配的顺序。在 NUMA 系统中,不同的内存
区域可能与不同的处理器或处理器组相关联,因此需要考虑内存分配的顺序以最大化性能。该参数的具体数值表示在尝试从本地节点分配内存失败时,内核会尝试从其他 NUMA 节点上
分配内存,并且按照指定的次序依次尝试其他节点。这对于优化应用程序在 NUMA 系统上的
内存访问和性能至关重要。默认情况下,这个参数的值通常是一个适当的默认值,但可以根据特定的性能需求进行调整。
要注意的是,直接修改这个参数可能会对系统性能产生影响,因此在实际调整时需要谨慎操作
并进行充分的测试和评估。
  1. oom_dump_tasks:这是一个控制开关,用于启用或禁用当系统内存不足时将 oom_score_adj 值为负的任务信息写入到 /proc 文件系统中的特殊文件 /proc/sys/kernel/panic_on_oom 中。当启用时,内核会将这些进程的信息记录下来,并可用于诊断系统内存用尽的情况。

  2. oom_kill_allocating_task:此参数控制是否允许内核在 Out-Of-Memory 条件下终止分配内存的进程。当启用时,内核会尝试终止正在分配内存的进程以尝试释放内存。当禁用时,内核会尝试终止具有最高 OOM 分数的进程。

  3. overcommit_kbytes:这是一个用于控制过度承诺内存的参数,用于指定系统允许的过度承诺的总内存(以 kBytes 为单位)。

  4. overcommit_memory:该参数用于控制内存过度承诺策略。

OVERCOMMIT_GUESS (0): 这个选项是默认的设置。在这种模式下,内核会根据系统中可用的物理内存
和已分配的虚拟内存的大小来判断是否允许超额分配。例如,当虚拟内存的总量超过物理内存加上交换
空间的大小时,会禁止超额分配。这种模式下的行为通常是比较合理且安全的。OVERCOMMIT_ALWAYS (1): 这个选项表示内核始终允许超额分配。不论物理内存和已分配的虚拟内存
之间是否有足够的空间,内核都会允许进程进行超额分配。这样做的话,即使系统实际内存不足,也不
会阻止进程进行内存分配操作。但是,当实际可用内存超出物理内存大小时,可能会导致应用程序在使
用超额内存时发生页错误(page fault)。OVERCOMMIT_NEVER (2): 这个选项表示内核不允许超额分配。当进程请求内存超过操作系统实际可用
的物理内存大小时,内核会阻止超额分配,并抛出 Out-Of-Memory (OOM) 错误,使进程能够适当地
处理内存不足的情况。
  1. overcommit_ratio:这个参数用于指定内存过度承诺的比率。它表示了系统内存大小与所允许的过度承诺内存大小之间的比率。

  2. page-cluster:这个参数用于设置内存页合并的阈值。内核会尝试合并空闲内存页,以减少内存碎片和提高内存使用效率。

  3. page_lock_unfairness:这个参数用于控制内存页锁定时的公平性策略。当启用时,内核会尽量公平地处理内存页的锁定请求。

  4. panic_on_oom:此参数是一个开关,用于控制当系统内存不足时是否触发 kernel panic。当启用时,系统将在内存耗尽时触发 panic;当禁用时,系统会尝试通过终止进程或其他手段来尝试恢复。

  5. percpu_pagelist_high_fraction: 决定了用于单个 CPU 的 per-CPU 内存页面列表的最大比例。per-CPU 页面列表是系统用于分配给每个 CPU 的内存页面的特殊列表。

  6. stat_interval: 用于设置内存统计信息输出到 /proc/zoneinfo 文件的时间间隔。

  7. stat_refresh: 控制在刷新内存统计信息时是否清零统计数据。设置为 1 时表示清零,设置为 0 时表示不清零。

  8. swappiness: 系统用来管理内存和交换空间的参数。它定义了系统在何时、以及何种程度上使用交换空间来替换内存。

  9. unprivileged_userfaultfd: 决定是否允许非特权用户创建和使用 userfaultfd 文件描述符(用于处理用户态页缺失异常)。

  10. user_reserve_kbytes: 为非特权进程保留的物理内存页大小,确保非特权用户总是能分配到一定数量的内存页。

  11. vfs_cache_pressure: 用于控制内核释放缓存页的速度。较高的值会导致更积极地释放缓存,以腾出更多的内存。

  12. watermark_boost_factor: 这个参数用于设定内核在内存压力情况下提高回收行为的程度。当系统内存低于 “水位线”(watermark)时,内核将执行更积极的内存回收。watermark_boost_factor 的值表示水位线以下可用内存大小的增加倍率。默认值是 150,表示内核会尝试回收额外的 50%(1.5 倍)超过水位线以下的可用内存。

  13. watermark_scale_factor: 这个参数用于设置内核在内存压力情况下,何时开始进行内存回收。watermark_scale_factor 的值表示系统内存大小的一部分,作为水位线以下的可用内存大小。默认值是 10,表示内核开始回收内存的临界点是当前系统可用内存的 10%。

  要修改这些参数的值,可以通过 sysctl 命令或直接修改 /proc/sys/vm/watermark_boost_factor/proc/sys/vm/watermark_scale_factor 文件。

  1. zone_reclaim_mode: 控制内核中区域再分配的行为。这个参数决定了内核在 NUMA 系统中如何管理内存的分配和回收。

  这些文件中的每一个都是与调优和配置内核参数相关的,可以通过修改这些文件来改变系统的行为和性能。注意,在改动这些文件之前,需要了解对应的参数的含义和影响,并谨慎调整系统设置。

二、相关功能的API函数

  与/proc/sys/vm/目录中的文件具有相同功能的Linux API函数和C库函数包括:

  1. sysctl函数:可以通过sysctl函数读取和修改内核参数。可以使用sysctl函数直接读取和修改/proc/sys/vm/目录下的文件。

  2. fopenfreadfwrite函数:可以使用C标准库函数来打开、读取和写入/proc/sys/vm/目录下的文件。

  3. openreadwrite函数:可以使用Linux系统调用函数来打开、读取和写入/proc/sys/vm/目录下的文件。

  4. sscanf函数:可以使用sscanf函数将文件中的内容解析为变量,方便进行处理。

  5. fprintf函数:可以使用fprintf函数将变量的值格式化后写入文件中。

  这些函数和方法可以帮助读取和修改/proc/sys/vm/目录下的文件的内容,实现对相应内核参数的操作。下面是使用C语言和相关函数来读取和修改/proc/sys/vm/目录下文件的示例代码:

  1. 使用sysctl函数读取内核参数的示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/sysctl.h>int main() {int mib[2];size_t len;int swappiness;// 将参数名称转换为 MIB 值mib[0] = CTL_VM;mib[1] = VM_SWAPPINESS;len = sizeof(swappiness);// 获取swappiness值if (sysctl(mib, 2, &swappiness, &len, NULL, 0) < 0) {perror("sysctl");exit(1);}printf("Swappiness: %d\n", swappiness);return 0;
}如果在使用 `sysctl` 函数时出现 "Function not implemented" 的错误,这意味着该函数或特定
的系统参数不受当前操作系统或内核的支持。这种情况可能发生在以下几种情况下:1. 操作系统版本较旧:某些系统参数可能是在后续的操作系统版本中引入的,因此在较旧的版本中
可能不受支持。尝试升级操作系统或使用较新版本的内核可能会解决这个问题。2. 系统参数未启用:某些系统可能禁用了特定的系统参数,以增加安全性或限制某些操作。在这种
情况下,你将无法使用 `sysctl` 函数来访问或修改这些参数。3. 编译选项不正确:有些发行版或内核配置可能不包括对 `sysctl` 函数的支持。在这种情况下,
你将无法使用该函数,除非重新编译内核或启用相关的编译选项。
  1. 使用fopen、fread和fwrite函数读取和修改内核参数的示例代码:
#include <stdio.h>int main() {FILE* file;int value;// 读取内核参数file = fopen("/proc/sys/vm/swappiness", "r");if (file == NULL) {perror("Failed to open file");return 1;}fscanf(file, "%d", &value);printf("vm.swappiness: %d\n", value);fclose(file);// 修改内核参数file = fopen("/proc/sys/vm/swappiness", "w");if (file == NULL) {perror("Failed to open file");return 1;}fprintf(file, "%d", 10);fclose(file);return 0;
}
  1. 使用open、read和write函数读取和修改内核参数的示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>int main() {int fd;char buffer[1024];ssize_t bytes_read;// 读取内核参数fd = open("/proc/sys/vm/swappiness", O_RDONLY);if (fd == -1) {perror("Failed to open file");return 1;}bytes_read = read(fd, buffer, sizeof(buffer) - 1);if (bytes_read == -1) {perror("Failed to read file");return 1;}buffer[bytes_read] = '\0';printf("vm.swappiness: %s\n", buffer);close(fd);// 修改内核参数fd = open("/proc/sys/vm/swappiness", O_WRONLY);if (fd == -1) {perror("Failed to open file");return 1;}char new_value[] = "10";ssize_t bytes_written = write(fd, new_value, sizeof(new_value) - 1);if (bytes_written == -1) {perror("Failed to write file");return 1;}close(fd);return 0;
}

  以上示例代码展示了不同函数和方法读取和修改/proc/sys/vm/目录下文件的方式。具体的操作根据不同的需求和情况可以选择适用的方法。

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

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

相关文章

数据结构【线性表篇】(四)

数据结构【线性表篇】(四&#xff09; 文章目录 数据结构【线性表篇】(四&#xff09;前言为什么突然想学算法了&#xff1f;为什么选择码蹄集作为刷题软件&#xff1f; 目录一、栈(一)、栈的顺序存储(二)、栈的链式存储(三)、共享栈 二、队列(一)、队列的顺序存储(二)、队列的…

Nginx 不同源Https请求Http 报strict-origin-when-cross-origin

原因&#xff1a; nginx代理配置url指向只开放了/* 而我/*/*多了一层路径 成功&#xff1a;

2024新版塔罗占卜网站源码风水起名附带搭建视频及文本教程

附带文本教学及视频教程安装方法以linux为例&#xff1a; 1、建议在服务器上面安装宝塔面板&#xff0c;以便操作&#xff0c;高逼格技术员可以忽略这步操作。 2、把安装包文件解压到根目录&#xff0c;同时建立数据库&#xff0c;把数据文件导入数据库 3、修改核心文件conf…

python多环境管理工具——pyenv-win安装与使用教程

目录 pyenv-win简介 pyenv-win安装 配置环境变量 pyenv的基本命令 pyenv安装py环境 pyenv安装遇到问题 pycharm测试 pyenv-win简介 什么是pyenv-win&#xff1a; 是一个在windows系统上管理python版本的工具。它是pyenv的windows版本&#xff0c;旨在提供类似于unix/li…

cargo设置国内源 windows+linux

cargo默认的源比pip的源好多了&#xff0c;但是有时候速度还是很慢 一、部分国内源&#xff08;排名不分先后&#xff09; 这些源的格式用在具体的配置文件中 中国科学技术大学 [source.crates-io] replace-with ustc[source.ustc] registry "git://mirrors.ustc.ed…

Redis Cluster集群模式学习

Redis Cluster集群模式 Redis哨兵模式&#xff1a;https://blog.csdn.net/liwenyang1992/article/details/133956200 Redis Cluster集群模式示意图&#xff1a; Cluster模式是Redis3.0开始推出采用无中心结构&#xff0c;每个节点保存数据和整个集群状态&#xff0c;每个节点都…

[C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计

源码地址&#xff1a; github地址&#xff1a;https://github.com/Ahmednull/L2CS-Net L2CS-Net介绍&#xff1a; 眼睛注视&#xff08;eye gaze&#xff09; 是在各种应用中使用的基本线索之一。 它表示用户在人机交互和开放对话系统中的参与程度。此外&#xff0c;它还被用…

C/C++面向对象(OOP)编程-回调函数详解(回调函数、C/C++异步回调、函数指针)

本文主要介绍回调函数的使用&#xff0c;包括函数指针、异步回调编程、主要通过详细的例子来指导在异步编程和事件编程中如何使用回调函数来实现。 &#x1f3ac;个人简介&#xff1a;一个全栈工程师的升级之路&#xff01; &#x1f4cb;个人专栏&#xff1a;C/C精进之路 &…

再见2023,你好2024!

大家好&#xff0c;我是老三&#xff0c;本来今天晚上打算出去转一转&#xff0c;陆家嘴打车实在太艰难了&#xff0c;一公里多的路&#xff0c;司机走了四十分钟&#xff0c;还没到&#xff0c;再加上身体不适&#xff0c;咳嗽地比较厉害&#xff0c;所以还是宅在酒店里&#…

用通俗易懂的方式讲解大模型:使用 Docker 部署大模型的训练环境

之前给大家介绍了主机安装方式——如何在 Ubuntu 操作系统下安装部署 AI 环境&#xff0c;但随着容器化技术的普及&#xff0c;越来越多的程序以容器的形式进行部署&#xff0c;通过容器的方式不仅可以简化部署流程&#xff0c;还可以随时切换不同的环境。 实际上很多云服务厂…

Java ArrayList在遍历时删除元素

文章目录 1. Arrays.asList()获取到的ArrayList只能遍历&#xff0c;不能增加或删除元素2. java.util.ArrayList.SubList有实现add()、remove()方法3. 遍历集合时对元素重新赋值、对元素中的属性赋值、删除元素、新增元素3.1 普通for循环3.2 增强for循环3.3 forEach循环3.4 str…

目标检测-Two Stage-Mask RCNN

文章目录 前言一、Mask RCNN的网络结构和流程二、Mask RCNN的创新点总结 前言 前文目标检测-Two Stage-Faster RCNN提到了Faster RCNN主要缺点是&#xff1a; ROI Pooling有两次量化操作&#xff0c;会引入误差影响精度 Mask RCNN针对这一缺点做了改进&#xff0c;此外Mask …

数据结构——顺序栈与链式栈的实现

目录 一、概念 1、栈的定义 2、栈顶 3、栈底 二、接口 1、可写接口 1&#xff09;数据入栈 2&#xff09;数据出栈 3&#xff09;清空栈 2、只读接口 1&#xff09;获取栈顶数据 2&#xff09;获取栈元素个数 3&#xff09;栈的判空 三、栈的基本运算 四、顺序栈&…

Linux实战:部署基于Postfix 与 Dovecot 的邮件系统

一、电子邮件系统简介 在电子邮件系统中&#xff0c;为用户收发邮件的服务器名为邮件用户代理&#xff08;Mail User Agent&#xff0c;MUA&#xff09;&#xff0c;MTA &#xff08;邮件传输代理&#xff09;的工作职责是转发处理不同电子邮件服务供应商之间的邮件&#xff0…

目标检测 YOLOv5 - 推理时的数据增强

目标检测 YOLOv5 - 推理时的数据增强 flyfish 版本 YOLOv5 6.2 参考地址 https://github.com/ultralytics/yolov5/issues/303在训练时可以使用数据增强&#xff0c;在推理阶段也可以使用数据增强 在测试使用数据增强有个名字叫做Test-Time Augmentation (TTA) 实际使用中使…

PostgreSQL数据库的json操作

1.操作符 select json字段::json->key值 from order -- 对象域 select json字段::json->>key值 from order -- 文本 select json字段::json#>{key值} from order -- 对象域 select json字段::json#>>{key值} from order -- 文本对象域表示还能继续操作&#…

26、web攻防——通用漏洞SQL注入SqlmapOracleMongodbDB2

文章目录 OracleMongoDBsqlmap SQL注入课程体系&#xff1b; 数据库注入&#xff1a;access、mysql、mssql、oracle、mongodb、postgresql等数据类型注入&#xff1a;数字型、字符型、搜索型、加密型&#xff08;base63 json&#xff09;等提交方式注入&#xff1a;get、post、…

ES6之生成器(Generator)

✨ 专栏介绍 在现代Web开发中&#xff0c;JavaScript已经成为了不可或缺的一部分。它不仅可以为网页增加交互性和动态性&#xff0c;还可以在后端开发中使用Node.js构建高效的服务器端应用程序。作为一种灵活且易学的脚本语言&#xff0c;JavaScript具有广泛的应用场景&#x…

如何使用Git进行代码版本管理

目录 建立仓库 分支管理 推送代码 问题 建立仓库 先在远程代码托管平台&#xff08;如GitHub、GitLab等&#xff09;上创建一个新的仓库 使用命令行或终端&#xff0c;进入你的本地项目目录 如果项目还没有使用Git进行版本控制&#xff0c;可以通过执行以下命令来初始…

Origin 2021软件安装包下载及安装教程

Origin 2021下载链接&#xff1a;https://docs.qq.com/doc/DUnJNb3p4VWJtUUhP 1.选中下载的压缩包&#xff0c;然后鼠标右键选择解压到"Origin 2021"文件夹 2.双击打开“Setup”文件夹 3.选中“Setup.exe”鼠标右键点击“以管理员身份运行” 4.点击“下一步" 5…