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

linux自动化批量分发SSH密钥同时批量测试SSH连接教程(包含自动化脚本代码)

1、检查端口

  • 检查分发对象22端口是否打开

    nmap  -p22  ip地址
    

    如果要批量检查端口可以参考我写的这篇文章:linux自动化一键批量检查主机端口

2、命令行分发密钥原理

Linux分发密钥原理主要涉及SSH(Secure Shell)协议,该协议用于在客户端和服务器之间建立安全的加密连接。以下是Linux分发密钥原理的详细解释:

2.1、密钥对生成

  • 私钥(Private Key):私钥是保密的,用于解密数据和证明身份。它必须被用户单独妥善保管,不能泄露给未经授权的人员。

  • 公钥(Public Key):公钥是公开的,用于加密数据和验证身份。它可以按需配置到目标服务器上的相应账号中。

  • 例子:在Linux系统中,通常使用ssh-keygen命令来生成密钥对:

    ssh-keygen -t rsa
    

    执行上面命令,一直按回车可以生成一个RSA密钥对,生成的私钥文件默认名为id_rsa,公钥文件默认名为id_rsa.pub,密码为空。
    在这里插入图片描述

    保存在默认目录。执行下面命令可以查看到

     ls /root/.ssh/
    

2.2、密钥分发

  • 将公钥复制到服务器:客户端需要将生成的公钥文件(如id_rsa.pub)复制到目标服务器的用户家目录下的.ssh文件夹中,并重命名为authorized_keys文件(如果该文件已存在,则将其内容追加到该文件中)。这可以通过scp命令或ssh-copy-id命令来实现。

  • 例子: 分发密钥到目标机器

    ssh-copy-id -i /root/.ssh/id_rsa.pub  root@目标机器IP地址
    

    在这里插入图片描述

2.3、SSH登录认证

  • 客户端发送登录请求:当客户端尝试通过SSH连接到服务器时,它会发送一个包含其公钥的登录请求。

  • 服务器验证公钥:服务器接收到登录请求后,会在用户家目录下的.ssh/id_rsa.pub文件中查找与客户端公钥相匹配的记录。

  • 生成随机数并加密:如果找到匹配的公钥,服务器会生成一个随机数,并使用该公钥对其进行加密。

  • 客户端解密并返回:客户端使用自己的私钥对加密的随机数进行解密,并将解密后的原文信息返回给服务器。

  • 服务器验证身份:服务器将客户端返回的信息与原始随机数进行比对。如果比对成功,则表示客户端成功证明了其身份,允许其登录到服务器。

  • 例子:

    ssh root@目标机器IP地址 hostname -I
    

    ssh 目标机器IP地址 hostname -I
    

    上面命令执行结果如下
    在这里插入图片描述

3、创建自动化分批量发密钥脚本并执行

注意: 下面所有的脚本测试文件请保证在同一个目录下。脚本和测试文件直接复制粘贴在终端,然后回车即可

  • 批量发密钥脚本

    cat <<EOF>> distribute_keys.sh 
    #!/usr/bin/bash
    # 作者:黑子哥呢?
    # 描述:一键批量分发密钥# 检查是否提供了正确数量的参数
    if [ "\$#" -ne 3 ]; thenecho "错误:此脚本需要三个参数:用户名、用户密码和SSH密钥密码"echo "用法:sh \$0 <用户名> <用户密码> <SSH密钥密码>"exit 1
    fi# 脚本自身路径赋值给变量SH
    SH=\$0# 接收脚本执行时传递的第一个参数作为用户名
    USER_NAME=\$1# 接收脚本执行时传递的第二个参数作为用户密码
    USER_PASSWORD=\$2# 接收脚本执行时传递的第三个参数作为SSH密钥的密码
    SSH_KEY_PASSWORD=\$3
    echo "开始执行:\$SH"
    echo "开始检查SSH密钥对是否存在"# 判断~/.ssh/id_rsa和~/.ssh/id_rsa.pub文件是否都不存在
    if [ ! -f ~/.ssh/id_rsa ] &&  [ ! -f ~/.ssh/id_rsa.pub ]; thenecho "SSH密钥对不存在!" echo "开始自动创建SSH密钥对..."# 使用用户输入的密码创建SSH密钥对,重定向输出到/dev/null以隐藏详细信息ssh-keygen -t rsa  -f ~/.ssh/id_rsa -P "\$SSH_KEY_PASSWORD" -C "管理机" &>/dev/nullecho "SSH密钥对创建成功!"
    elseecho "SSH公钥文件已存在"
    fi# 显示私钥和公钥的位置
    echo "私钥位置:\$HOME/.ssh/id_rsa"
    echo -e "公钥位置:\$HOME/.ssh/id_rsa.pub\n"# 服务器列表的文件路径
    HOST_LIST="host.txt"# 获取本地服务器公钥的路径
    SSH_KEY="\$HOME/.ssh/id_rsa.pub"# 临时文件用来保存分发成功的服务器
    OPEN_HOST_FILE=\$(mktemp)# 临时文件用于保存分发失败的服务器
    CLOSED_HOST_FILE=\$(mktemp)# 临时文件用于保存测试连接失败的服务器
    DISTRIBUTE_HOST_FILE=\$(mktemp)# 遍历服务器列表并分发密钥,同时保存结果到临时文件
    echo "开始分发公钥..."
    while IFS= read -r HOST; doecho "正在分发公钥给\$HOST"# expect脚本的参数包括:服务器地址、用户名、密码、公钥路径、公钥密码expect distribute_keys.exp "\$HOST" "\$USER_NAME" "\$USER_PASSWORD" "\$SSH_KEY" "\$SSH_KEY_PASSWORD" &>/dev/nullif [ \$? -eq 1 ]; thenecho "分发公钥给\$HOST失败!"echo "\$HOST" >> "\$CLOSED_HOST_FILE"continuefiecho "正在测试\$HOST服务器SSH连接..."# expect脚本的参数包括:服务器地址、公钥密码expect connection.exp "\$HOST" "\$SSH_KEY_PASSWORD" &>/dev/null if [ \$? -eq 0 ]; thenecho "测试连接\$HOST成功!"echo "\$HOST" >> "\$OPEN_HOST_FILE"elseecho "测试连接\$HOST失败!"echo "\$HOST" >> "\$DISTRIBUTE_HOST_FILE"fi
    done < "\$HOST_LIST"# 如果分发成功的服务器文件不为空,则显示成功的服务器列表
    if [ -s "\$OPEN_HOST_FILE" ]; thenecho "分发公钥成功的服务器列表如下:"cat "\$OPEN_HOST_FILE"
    fi# 如果分发失败的服务器文件不为空,则显示失败的服务器列表
    if [ -s "\$CLOSED_HOST_FILE" ]; thenecho "分发公钥失败的服务器列表如下:"cat "\$CLOSED_HOST_FILE"
    fi# 如果分发失败的服务器文件不为空,则显示测试连接失败的服务器列表
    if [ -s "\$DISTRIBUTE_HOST_FILE" ]; thenecho "测试连接失败的服务器列表如下:"cat "\$DISTRIBUTE_HOST_FILE"
    fi
    # 删除临时文件
    rm -f "\$OPEN_HOST_FILE" "\$CLOSED_HOST_FILE" "\$DISTRIBUTE_HOST_FILE"
    EOF
    
  • expect分发公钥交互脚本

    cat <<EOF>> distribute_keys.exp
    # !/usr/bin/expect
    # 作者:黑子哥呢?
    # 描述:密钥分发交互脚本# 设置超时时间为2秒
    set timeout 2# 从命令参数中获取远程主机的主机名、用户名、密码、密钥和密钥密码
    set hostname [lindex \$argv 0]
    set username [lindex \$argv 1]
    set password [lindex \$argv 2]
    set ssh_key  [lindex \$argv 3]
    set ssh_key_password [lindex \$argv 4]# 启动ssh-copy-id命令,将本地SSH公钥复制到远程主机上
    spawn ssh-copy-id  -f -i \$ssh_key \$username@\$hostname # 等待并处理交互提示
    expect  {"*yes/no*" {send "yes\r"expect "*password:"send "\$password\r"}"*password*" {send "\$password\r"}"*passphrase*" {send "\$ssh_key_password\r"}default {exit 1}
    }
    expect eof
    EOF
    
  • expect测试连接交互脚本

    cat <<EOF>> connection.exp
    # !/usr/bin/expect
    # 作者:黑子哥呢?
    # 描述:连接交互脚本# 设置超时时间为2秒
    set timeout 2# 从命令参数中获取远程主机的主机名和密钥密码
    set hostname [lindex \$argv 0]
    set ssh_key_password [lindex \$argv 1]# 启动ssh命令,测试连接命令
    spawn ssh \$hostname w# 等待并处理交互提示
    expect  {"*passphrase*" {send "\$ssh_key_password\r"}"*passdord*" {send "\$ssh_key_password\r"           }
    }
    expect eof
    EOF
    
  • 创建测试文件,下面的ip地址改成自己的即可

    cat <<EOF>> host.txt
    1.1.1.12
    1.1.1.13
    1.1.1.14
    EOF
    
  • 执行脚本
    注意:如果SSH密钥不存在脚本会自动创建,同时请确认好root用户密码和SSH密钥密码正确,密码错误可能导致脚本执行过程中分发公钥失败

    sh distribute_keys.sh 用户 用户密码 SSH密钥密码
    

    我开启了1.1.1.12和1.1.13服务器,另外一台服务器处于关机状态 ,运行结果如下:
    在这里插入图片描述

    四、安全性与便捷性

  1. 安全性:由于私钥是保密的,并且只有匹配的公钥才能解密由私钥加密的数据,因此这种基于密钥的认证方式比传统的密码认证方式更安全。即使攻击者截获了加密的通信内容,也无法解密出私钥或密码。
  2. 便捷性:一旦配置了公钥/私钥对,用户就可以实现无密码登录多个服务器。这大大提高了操作的便捷性,并减少了密码泄露的风险。

综上所述,Linux分发密钥原理是通过生成密钥对、分发公钥、进行SSH登录认证等步骤来实现的。这种基于密钥的认证方式不仅提高了安全性,还带来了操作的便捷性。

相关文章:

linux自动化批量分发SSH密钥同时批量测试SSH连接教程(包含自动化脚本代码)

1、检查端口 检查分发对象22端口是否打开 nmap -p22 ip地址如果要批量检查端口可以参考我写的这篇文章&#xff1a;linux自动化一键批量检查主机端口 2、命令行分发密钥原理 Linux分发密钥原理主要涉及SSH&#xff08;Secure Shell&#xff09;协议&#xff0c;该协议用于…...

C++ 设计模式:命令模式(Command Pattern)

链接&#xff1a;C 设计模式 链接&#xff1a;C 设计模式 - 访问者模式 命令模式&#xff08;Command Pattern&#xff09;是一种行为型设计模式&#xff0c;它将请求封装成一个对象&#xff0c;从而使你可以用不同的请求对客户进行参数化&#xff0c;对请求排队或记录请求日志…...

Flink源码解析之:Flink On Yarn模式任务提交部署过程解析

Flink源码解析之&#xff1a;Flink On Yarn模式任务提交部署过程解析 一、Flink on Yarn部署模式概述 Apache Hadoop YARN 在许多数据处理框架中都很流行。 Flink 服务提交给 YARN 的 ResourceManager&#xff0c;后者会在 YARN NodeManagers 管理的机器上生成容器。 Flink 将…...

C++算法20例

1、求两个数的最大公约数 int gcd(int a, int b) { 2 return b 0 ? a : gcd(b, a % b); 3} 2、判断素数 bool isPrime(int n) {if (n < 1) return false; for (int i 2; i * i < n; i) {if (n % i 0) return false;}return true; } 3、冒泡排序 void bubbleSort…...

雷军:科技传奇的逐梦之旅

亲爱的小伙伴们&#x1f618;&#xff0c;在求知的漫漫旅途中&#xff0c;若你对深度学习的奥秘、Java 与 Python 的奇妙世界&#xff0c;亦或是读研论文的撰写攻略有所探寻&#x1f9d0;&#xff0c;那不妨给我一个小小的关注吧&#x1f970;。我会精心筹备&#xff0c;在未来…...

python版本的Selenium的下载及chrome环境搭建和简单使用

针对Python版本的Selenium下载及Chrome环境搭建和使用&#xff0c;以下将详细阐述具体步骤&#xff1a; 一、Python版本的Selenium下载 安装Python环境&#xff1a; 确保系统上已经安装了Python 3.8及以上版本。可以从[Python官方网站]下载并安装最新版本的Python&#xff0c;…...

linux tar 文件解压压缩

文件压缩和解压 tar -c: 建立压缩档案 -x&#xff1a;解压 -t&#xff1a;查看内容 -r&#xff1a;向压缩归档文件末尾追加文件 -u&#xff1a;更新原压缩包中的文件 -z&#xff1a;有gzip属性的 -j&#xff1a;有bz2属性的 -v&#xff1a;显示所有过程 -O&#xff1a;…...

Razzashi Raptor

拉扎什迅猛龙 Razzashi Raptor 2024.12.24 无论是工作、游戏&#xff0c;除了坚持&#xff0c;还需要一点运气&#xff0c;2024年跨年啦。 World of Warcraft [CLASSIC]80猎人[Grandel][祖尔格拉布][血领主曼多基尔][拉扎什迅猛龙]20241231跨年回报_哔哩哔哩bilibili_魔兽 Ra…...

Fetch处理大模型流式数据请求与解析

为什么有的大模型可以一次返回多个 data&#xff1f; Server-Sent Events (SSE)&#xff1a;允许服务器连续发送多个 data: 行&#xff0c;每个代表一个独立的数据块。 流式响应&#xff1a;大模型服务通常以流式响应方式返回数据&#xff0c;提高响应速度。 批量处理&#x…...

【网络安全实验室】脚本关实战详情

难道向上攀爬的那条路&#xff0c;不是比站在顶峰更让人热血澎湃吗 1.key又又找不到了 点击链接&#xff0c;burp抓包&#xff0c;发送到重放模块&#xff0c;点击go 得到key 2.快速口算 python3脚本 得到key 3.这个题目是空的 试了一圈最后发现是 4.怎么就是不弹出key呢…...

怎么配置每一次重启服务器后,自动启动Tocmat

前言 宝子们&#xff0c;今天来给大家详细讲讲服务器如何配置每次重启后自动启动 Tomcat&#xff0c;让你的服务器应用始终保持在线状态&#xff0c;高效运行&#xff01; windows版本 在 Windows 系统下&#xff0c;有两种常用的方法可以实现这个目标。 第一种方法是利用服…...

《机器学习》——利用OpenCV库中的KNN算法进行图像识别

文章目录 KNN算法介绍下载OpenCV库实验内容实验结果完整代码手写数字传入模型训练 KNN算法介绍 一、KNN算法的基本要素 K值的选择&#xff1a;K值代表选择与新测试样本距离最近的前K个训练样本数&#xff0c;通常K是不大于20的整数。K值的选择对算法结果有重要影响&#xff0c…...

D3.js

d3是用于数据可视化 可用于处理数据、创建图表、实现动画效果和交互功能应用场景: 数据可视&#xff1a;将复杂的数据以图表的形式展示出来&#xff0c;便于用户理解和分析。交互式图&#xff1a;支持事件处理和动画效果&#xff0c;提升用户体验。仪表盘和报&#xff1a;广泛…...

Windows onnxruntime编译openvino

理论上来说&#xff0c;可以直接访问 ONNXRuntime Releases 下载 dll 文件&#xff0c;然后从官方文档中下载缺少的头文件以直接调用&#xff0c;但我没有尝试过。 1. 下载 OpenVINO 包 从官网下载 OpenVINO 的安装包并放置在 C:\Program Files (x86) 路径下&#xff0c;例如…...

Python中的sqlite3模块:SQLite数据库接口详解

Python中的sqlite3模块&#xff1a;SQLite数据库接口详解 主要功能sqlite3.connect(database)connection.cursor()cursor.execute(sql)connection.commit()cursor.fetchall()connection.close() 使用示例执行结果总结 在Python中&#xff0c;sqlite3模块提供了一个与SQLite数据…...

Unity功能模块一对话系统(4)实现个性文本标签

本期我们将了解如何在TMPro中自定义我们的标签样式&#xff0c;并实现两种有趣的效果。 一.需求描述 1.定义<float>格式的标签&#xff0c;实现标签处延迟打印功能 2.定义<r" "></r>格式的标签&#xff0c;实现标签区间内文本片段的注释显示功能…...

Vue.js前端框架教程15:Vue父子组件之间的通信ref、emits

文章目录 1. 属性传递(Props)2. 事件监听( Emits)3. `ref` 引用4. `provide` 和 `inject`5. 插槽(Slots)在 Vue 3 中,父子组件之间的通信可以通过多种方式实现,包括属性传递、事件监听、插槽以及 ref 和 provide/inject。以下是这些通信方式的详解: 1. 属性传递(Pro…...

Python 实现 冒泡排序算法示例

冒泡排序算法示例 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单的排序算法。它重复地遍历要排序的列表&#xff0c;比较相邻的元素&#xff0c;并交换它们的位置&#xff0c;如果它们的顺序错误。这个过程会重复进行&#xff0c;直到没有需要交换的元素为止&#x…...

《机器学习》--线性回归模型详解

线性回归模型是机器学习中的一种重要算法&#xff0c;以下是对其的详细解释&#xff1a; 一、定义与原理 线性回归&#xff08;Linear Regression&#xff09;是利用数理统计中回归分析&#xff0c;来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。线性回归…...

Django项目部署到服务器

文章目录 django项目部署到服务器在服务器上安装Django和依赖&#xff1a;项目代码上传配置数据库收集静态文件配置Web服务器配置Gunicorn&#xff08;WSGI服务器&#xff09;启动/停止/重载systemd服务。 django项目部署到服务器 在服务器上安装Django和依赖&#xff1a; su…...

CSDN编辑器

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…...

如何免费解锁 IPhone 网络

您是否担心 iPhone 上的网络锁定&#xff1f;如果您的 iPhone 被锁定到特定运营商&#xff0c;解锁它可以连接到不同的运营商。好吧&#xff0c;我们为您准备了一份指南。 iPhone运营商免费解锁将是小菜一碟。在我们的解锁运营商 iphone 免费指南中。我们为您提供了一份简介&am…...

Trimble天宝X9三维扫描仪为建筑外墙检测提供了全新的解决方案【沪敖3D】

随着城市化进程的快速推进&#xff0c;城市高层建筑不断增多&#xff0c;对建筑质量的要求也在不断提高。建筑外墙检测&#xff0c;如平整度和垂直度检测&#xff0c;是衡量建筑质量的重要指标之一。传统人工检测方法不仅操作繁琐、效率低下&#xff0c;还难以全面反映墙体的真…...

微服务のGeteWay

目录 概念&#xff1a; 三大核心&#xff1a; 工作流程&#xff1a; 9527网关如何做路由映射&#xff1a; GetWay高级特性&#xff1a; 按服务名动态路由服务&#xff1a; 断言Route Predicate Factories &#xff1a; 获取当前时区时间&#xff1a; After Route &…...

Golang 中 Goroutine 的调度

Golang 中 Goroutine 的调度 Golang 中的 Goroutine 是一种轻量级的线程&#xff0c;由 Go 运行时&#xff08;runtime&#xff09;自动管理。Goroutine 的调度基于 M:N 模型&#xff0c;即多个 Goroutine 可以映射到多个操作系统线程上执行。以下是详细的调度过程和策略&…...

MyBatis使用的设计模式

目录 1. 工厂模式&#xff08;Factory Pattern&#xff09; 2. 单例模式&#xff08;Singleton Pattern&#xff09; 3. 代理模式&#xff08;Proxy Pattern&#xff09; 4. 装饰器模式&#xff08;Decorator Pattern&#xff09; 5. 观察者模式&#xff08;Observer Patt…...

淺談Cocos2djs逆向

前言 簡單聊一下cocos2djs手遊的逆向&#xff0c;有任何相關想法歡迎和我討論^^ 一些概念 列出一些個人認為比較有用的概念&#xff1a; Cocos遊戲的兩大開發工具分別是CocosCreator和CocosStudio&#xff0c;區別是前者是cocos2djs專用的開發工具&#xff0c;後者則是coco…...

选择器(结构伪类选择器,伪元素选择器),PxCook软件,盒子模型

结构为类选择器 伪元素选择器 PxCook 盒子模型 (内外边距&#xff0c;边框&#xff09; 内外边距合并&#xff0c;塌陷问题 元素溢出 圆角 阴影: 模糊半径&#xff1a;越大越模糊&#xff0c;也就是越柔和 案例一&#xff1a;产品卡片 <!DOCTYPE html> <html lang&q…...

CentOS 7系统 OpenSSH和OpenSSL版本升级指南

文章目录 CentOS 7系统 OpenSSH和OpenSSL版本升级指南环境说明当前系统版本当前组件版本 现存安全漏洞升级目标版本升级准备工作OpenSSL升级步骤1. 下载和解压2. 编译安装3. 配置环境 OpenSSH升级步骤1. 下载和解压2. 编译安装3. 创建systemd服务配置4. 更新SSH配置文件5. 设置…...

使用 Comparable 和 Comparator 接口对集合排序

使用 Comparable 和 Comparator 接口对集合排序&#xff1a; 1. 使用 Comparable 接口&#xff1a; 当你希望一个类的对象能够按照某种自然顺序进行排序时&#xff0c;可以实现 Comparable 接口 并重写 compareTo() 方法。 实现步骤&#xff1a; 1.1 实现 Comparable<T&g…...

最新常见的图数据库对比,选型,架构,性能对比

图数据库排名 地址&#xff1a;https://db-engines.com/en/ranking/graphdbms 知识图谱查询语言 SPARQL、Cypher、Gremlin、PGQL 和 G-CORE 语法 / 语义 / 特性 SPARQL Cypher Gremlin PGQL G-CORE 图模式匹配查询 语法 CGP CGP CGP(无可选)1 CGP CGP 语义 子…...

混合合并两个pdf文件

混合两个pdf 1、在线免费交替和混合奇数和偶数PDF页面2、有什么软件把两个 PDF 交叉合并&#xff1f;3、pdfsam本地合并 如何Google翻译的原文和译文合并&#xff0c;&#xff08;沉浸式翻译效果相对较好&#xff09; 1、在线免费交替和混合奇数和偶数PDF页面 https://deftpd…...

OpenCV-Python实战(9)——滤波降噪

一、均值滤波器 cv2.blur() img cv2.blur(src*,ksize*,anchor*,borderType*)img&#xff1a;目标图像。 src&#xff1a;原始图像。 ksize&#xff1a;滤波核大小&#xff0c;&#xff08;width&#xff0c;height&#xff09;。 anchor&#xff1a;滤波核锚点&#xff0c…...

uniapp——微信小程序读取bin文件,解析文件的数据内容(三)

微信小程序读取bin文件内容 读取用户选择bin文件&#xff0c;并解析数据内容&#xff0c;分包发送给蓝牙设备&#xff1b; 文章目录 微信小程序读取bin文件内容读取文件读取内容返回格式 API文档&#xff1a; getFileSystemManager 关于App端读取bin文件&#xff0c;请查看&…...

Python 中常用的算法

1. 排序算法 用于将数据按特定顺序排列。 冒泡排序&#xff08;Bubble Sort&#xff09;选择排序&#xff08;Selection Sort&#xff09;插入排序&#xff08;Insertion Sort&#xff09;快速排序&#xff08;Quick Sort&#xff09;归并排序&#xff08;Merge Sort&#xf…...

xadmin后台首页增加一个导入数据按钮

xadmin后台首页增加一个导入数据按钮 效果 流程 1、在添加小组件中添加一个html页面 2、写入html代码 3、在urls.py添加导入数据路由 4、在views.py中添加响应函数html代码 <!DOCTYPE html> <html lang...

Kubernetes: NetworkPolicy 的实践应用

一、Network Policy 是什么,在云原生领域有和作用 Network Policy 是 Kubernetes 官方提出来的一种网络策略的规范&#xff0c;用户通过编写符合对应规范的规则来控制 k8s 集群内 L3 和 L4 层的网络流量。 NetworkPolicy 主要的功能就是实现在云原生领域的容器网络管控它给用…...

计算机体系结构期末复习3:GPU架构及控制流问题

目录 一、GPU设计思路 1.简化流水线、增加核数 2.单指令多线程&#xff08;SIMT&#xff09; 3.同时驻留大量线程 4.总思路&#xff1a;多线程单指令多线程 二、GPU的控制流问题 1.什么是控制流问题 2.怎么应对分支分歧 一、GPU设计思路 1.简化流水线、增加核数 2.单指…...

excel怎么删除右边无限列(亲测有效)

excel怎么删除右边无限列&#xff08;亲测有效&#xff09; 网上很多只用第1步的&#xff0c;删除了根本没用&#xff0c;还是存在&#xff0c;但是隐藏后取消隐藏却是可以的。 找到右边要删除的列的第一个空白列&#xff0c;选中整个列按“ctrlshift>(向右的小箭头)”&am…...

ChatGPT-4助力学术论文提升文章逻辑、优化句式与扩充内容等应用技巧解析。附提示词案例

目录 1.扩写&#xff08;expansion/paraphrasing&#xff09; 2.优化&#xff08;optimization&#xff09; 3.缩写&#xff08;optimization&#xff09; 4.提取关键词&#xff08;keyword extraction&#xff09; 5.短语转换&#xff08;phrase transformation&#xff…...

C++和OpenGL实现3D游戏编程【连载19】——着色器光照初步(平行光和光照贴图)(附源码)

1、本节要实现的内容 我们在前期的教程中,讨论了在即时渲染模式下的光照内容。但在我们后期使用着色器的核心模式下,会经常在着色器中使光照,我们这里就讨论一下着色器光照效果,以及光照贴图效果,同时这里知识会为后期的更多光照效果做一些铺垫。本节我们首先讨论冯氏光照…...

html+css网页制作 美食 美食网5个页面

htmlcss网页制作 美食 美食网5个页面 网页作品代码简单&#xff0c;可使用任意HTML辑软件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html编辑软件进行运行及修改编辑等操作&#xff09;。 获取源码 1&#xff0…...

Mac 12.1安装tiger-vnc问题-routines:CRYPTO_internal:bad key length

背景&#xff1a;因为某些原因需要从本地mac连接远程linxu桌面查看一些内容&#xff0c;必须使用桌面查看&#xff0c;所以ssh无法满足&#xff0c;所以决定安装vnc客户端。 问题&#xff1a; 在mac上通过 brew install tiger-vnc命令安装, 但是报错如下&#xff1a; > D…...

遥感图像车辆检测-目标检测数据集

遥感图像车辆检测-目标检测数据集&#xff08;包括VOC格式、YOLO格式&#xff09; 数据集&#xff1a; 链接: https://pan.baidu.com/s/1XVlRTVWpXZFi6ZL_Xcs7Rg?pwdaa6g 提取码: aa6g 数据集信息介绍&#xff1a; 共有 1035 张图像和一一对应的标注文件 标注文件格式提供了…...

51c自动驾驶~合集43

我自己的原文哦~ https://blog.51cto.com/whaosoft/12930230 #ChatDyn 上交大最新ChatDyn&#xff1a;一句话操纵三维动态 理解和生成真实的三维虚拟世界是空间智能的核心。所生成的三维虚拟世界能够为自动驾驶、具身智能等AI系统提供高质量闭环仿真训练场&#xff0c;高效…...

随机变量是一个函数-如何理解

文章目录 一. 随机变量二. 随机变量是一个函数-栗子(一对一)1. 掷骰子的随机变量2. 掷骰子的随机变量&#xff08;求点数平方&#xff09;3. 抛硬币的随机变量4. 学生考试得分的随机变量 三. 随机变量是一个函数-理解(多对一) 一. 随机变量 随机变量就是定义在样本空间上的函数…...

云计算在医疗行业的应用

云计算在医疗行业的应用广泛而深入&#xff0c;为医疗服务带来了前所未有的变革。以下是对云计算在医疗行业应用的详细解析&#xff1a; ### 一、医疗数据共享与整合 云计算平台具有强大的数据存储和处理能力&#xff0c;使得医疗数据共享与整合成为可能。通过云计算平台&…...

Cursor提示词

你是一位经验丰富的项目经理&#xff0c;对于用户每一次提出的问题&#xff0c;都不急于编写代码&#xff0c;更多是通过深思熱虑、结构化的推理以产生高质量的回答&#xff0c;探索更多的可能方案&#xff0c;并从中寻找最佳方案。 约束 代码必须可以通过编译回答尽量使用中…...

C++ 设计模式:单例模式(Singleton Pattern)

链接&#xff1a;C 设计模式 链接&#xff1a;C 设计模式 - 享元模式 单例模式&#xff08;Singleton Pattern&#xff09;是创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供一个全局访问点来访问这个实例。单例模式在需要全局共享资源或控制实例数量的…...

C++中生成0到180之间的随机数

在C中生成0到180之间的随机数&#xff0c;可以使用标准库中的和头文件。提供了rand()函数来生成随机数&#xff0c;而提供了time()函数来设置随机数生成的种子。这样每次运行程序时&#xff0c;生成的随机数序列都会不同。 以下是一个简单的示例代码&#xff0c;展示了如何生成…...