day049-初识Ansible与常用模块

文章目录

  • 0. 老男孩思想-人脉的本质
  • 1. Ansible
    • 1.1 密钥认证
    • 1.2 安装ansible
    • 1.3 添加ansible配置文件
    • 1.4 配置主机清单文件(Inventory)
    • 1.5 测试
    • 1.6 ansible的模块思想
    • 1.7 command模块
    • 1.8 需求:每台服务器的密码都不同,怎么批量执行业务?
    • 1.9 ansible常用模块
      • 1.9.1 shell模块
      • 1.9.2 script模块
      • 1.9.3 file模块
      • 1.9.4 user/group模块
      • 1.9.5 yum/apt模块
      • 1.9.6 copy模块
      • 1.9.7 systemd模块
  • 2. 思维导图

0. 老男孩思想-人脉的本质

  • 人与人之间的连接本质是通过需求连接的,即人脉的本质就是需求的满足。
    • 需求越强,连接越紧密,关系越好;反之,就会朝着陌生的方向发展。
    • 员工与老板、父母与孩子、学生与老师、妻子与丈夫皆是如此。

在这里插入图片描述

1. Ansible

Ansible 是一款开源的 IT 自动化工具,用于配置管理、应用部署、任务编排等。它基于 SSH(无需客户端)和 YAML 语法,以 无代理(Agentless) 方式运行,适合大规模服务器管理。

  • 无代理架构:无需在目标机器安装客户端,降低维护成本。

1.1 密钥认证

  • ansible管理端服务器:m02
  • 客户端:web01、web02、web03
# 下载sshpass
[root@m02 /server/scripts]# yum install -y sshpass.x86_64 
# 编写分发密钥脚本并执行
[root@m02 /server/scripts]# cat fenfa.sh 
#!/bin/bash
##############################################################
# File Name:key_authentication.sh
# Version:V1.0
# Author:SunKexu
# Organization:www.oldboyedu.com
# Desc:批量密钥认证
##############################################################
export LANG=en_US.UTF-8# vars
#ips="5 6 7 8 9 10 31 41 "
ips="7 8 9"
# 密码可能有特殊符号,用单引号
pass='SKX2554.'
user="root"
# command
# 生成密钥
create_key(){key_file="$HOME/.ssh/id_rsa"[ ! -f ${key_file} ] && {ssh-keygen -t rsa -f ${key_file} -P ''}return $?
}
# 分发密钥
distribute_key(){for ip in ${ips}dosshpass -p $pass ssh-copy-id -o StrictHostKeyChecking=no ${user}@10.0.0.$ipdonereturn $?
}
# 检查
check(){for ip in $ipsdossh -o StrictHostKeyChecking=no ${user}@10.0.0.$ip hostname -Idonereturn $?
}
# main 启动函数
main(){create_keydistribute_keycheck
}
main[root@m02 /server/scripts]# bash fenfa.sh 
……

1.2 安装ansible

  • pip:Python包管理工具
# 安装pip工具
[root@m02 ~]# yum install -y python3-pip
……
[root@m02 ~]# pip3 --version 
pip 20.2.2 from /usr/lib/python3.7/site-packages/pip (python 3.7)
# 升级pip
[root@m02 ~]# python3 -m pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple --upgrade pip
……
[root@m02 ~]# pip3 --version 
pip 24.0 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
# 配置pip下载源
[root@m02 ~]# pip3 config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
Writing to /root/.config/pip/pip.conf
# 安装ansible
[root@m02 ~]# pip3 install ansible
……
[root@m02 ~]# ansible --version
[DEPRECATION WARNING]: Ansible will require Python 3.8 or newer on the controller starting with 
Ansible 2.12. Current version: 3.7.9 (default, Jun 10 2022, 11:25:35) [GCC 7.3.0]. This feature 
will be removed from ansible-core in version 2.12. Deprecation warnings can be disabled by setting 
deprecation_warnings=False in ansible.cfg.
/usr/local/lib/python3.7/site-packages/ansible/parsing/vault/__init__.py:44: CryptographyDeprecationWarning: Python 3.7 is no longer supported by the Python core team and support for it is deprecated in cryptography. The next release of cryptography will remove support for Python 3.7.from cryptography.exceptions import InvalidSignature
ansible [core 2.11.12] config file = Noneconfigured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']ansible python module location = /usr/local/lib/python3.7/site-packages/ansibleansible collection location = /root/.ansible/collections:/usr/share/ansible/collectionsexecutable location = /usr/local/bin/ansiblepython version = 3.7.9 (default, Jun 10 2022, 11:25:35) [GCC 7.3.0]jinja version = 3.1.6libyaml = True

1.3 添加ansible配置文件

[root@m02 ~]# mkdir -p /etc/ansible
[root@m02 ~]# vim /etc/ansible/ansible.cfg
[root@m02 ~]# cat /etc/ansible/ansible.cfg
[defaults]
host_key_checking = False # 禁用主机密钥检查
deprecation_warnings = False
interpreter_python=/usr/bin/python3
[inventory]
[privilege_escalation]
[paramiko_connection]
[ssh_connection]
[persistent_connection]
[accelerate]
[selinux]
[colors]
[diff]

1.4 配置主机清单文件(Inventory)

  • ansible管理的客户端主机信息
[root@m02 ~]# vim /etc/ansible/hosts
[root@m02 ~]# cat /etc/ansible/hosts
[lb] # 主机组
172.16.1.5 # 主机信息
172.16.1.6
[web]
172.16.1.[7:10]
[db]
172.16.1.51
172.16.1.52
[nfs]
172.16.1.31
[bak]
172.16.1.41
  • 嵌套组
[root@m02 ~]# cat /etc/ansible/hosts
[lb]
172.16.1.5
172.16.1.6
[web]
172.16.1.[7:10]
[db]
172.16.1.51
172.16.1.52
[nfs]
172.16.1.31
[bak]
172.16.1.41[data:children] #嵌套组
db # 其他组名
nfs
bak

1.5 测试

  • ansible:向主机分发命令
    • -i:指定主机清单文件;后面写主机组名,或全部主机all
      • 操作的目标主机组,all 表示清单中定义的所有主机。
    • -m:指定模块
[root@m02 ~]# ansible -i /etc/ansible/hosts all -m ping
……
172.16.1.7 | SUCCESS => {"changed": false, # 表示本次操作未对目标主机造成任何变更(ping 是只读操作)"ping": "pong"
}
172.16.1.6 | SUCCESS => {"changed": false,"ping": "pong"
}
172.16.1.9 | SUCCESS => {"changed": false,"ping": "pong"
}
……
  • 指定嵌套组
[root@m02 ~]# ansible -i /etc/ansible/hosts data -m ping
/usr/local/lib/python3.7/site-packages/ansible/parsing/vault/__init__.py:44: CryptographyDeprecationWarning: Python 3.7 is no longer supported by the Python core team and support for it is deprecated in cryptography. The next release of cryptography will remove support for Python 3.7.from cryptography.exceptions import InvalidSignature
172.16.1.51 | SUCCESS => {"changed": false,"ping": "pong"
}
172.16.1.41 | SUCCESS => {"changed": false,"ping": "pong"
}
172.16.1.31 | SUCCESS => {"changed": false,"ping": "pong"
}
172.16.1.52 | SUCCESS => {"changed": false,"ping": "pong"
}
  • 直接指定主机ip
[root@m02 ~]# ansible 172.16.1.7 -m ping
/usr/local/lib/python3.7/site-packages/ansible/parsing/vault/__init__.py:44: CryptographyDeprecationWarning: Python 3.7 is no longer supported by the Python core team and support for it is deprecated in cryptography. The next release of cryptography will remove support for Python 3.7.from cryptography.exceptions import InvalidSignature
172.16.1.7 | SUCCESS => {"changed": false,"ping": "pong"
}

1.6 ansible的模块思想

  • Ansible 提供了丰富的模块,涵盖了文件管理、软件包安装、服务管理等各种常见的运维任务。这些模块封装了底层的shell 命令,用户无需关心具体的实现细节,只需关注目标状态。

  • ansible官方模块列表:[Index of all Modules — Ansible Community Documentation](https://docs.ansible.com/ansible/latest/collections/index_module.html)

  • Ansible的模块思想将自动化任务分解为 原子化、可复用、声明式 的单元,通过标准化接口和幂等性保证,实现了:

    • 降低学习成本:用户关注 “做什么”,而非 “怎么做”。
    • 提升可靠性:内置错误处理和状态管理。
    • 生态扩展:社区和厂商可快速贡献新模块。
  • ansible的模块化设计与传统shell脚本对比

特性传统脚本Ansible模块
维护性逻辑混杂,难以复用功能解耦,易于维护
可读性需解析脚本逻辑声明式语法,直观清晰
跨平台支持需手动适配不同系统模块自动适配
安全性可能残留临时文件或进程执行后自动清理

1.7 command模块

  • 模块选项:
    • -a:argv,向模块传递参数,也可以是命令;不能识别复杂符号,如管道
[root@m02 ~]# ansible -i /etc/ansible/hosts all -m command -a "hostname -I"
……
172.16.1.6 | CHANGED | rc=0 >>
10.0.0.6 172.16.1.6 
172.16.1.5 | CHANGED | rc=0 >>
10.0.0.5 172.16.1.5 
……
  • 安装软件包
ansible -i /etc/ansible/hosts all -m command -a 'rpm -e tree'
ansible -i /etc/ansible/hosts all -m command -a 'yum install -y tree'

1.8 需求:每台服务器的密码都不同,怎么批量执行业务?

  • ansible的主机清单可以指定用户名和密码,在服务器数量较少的时候可以这样做
  • ansible默认使用SSH连接客户机,因此需要指定ssh端口
[web]
10.0.0.7 ansible_user=root ansible_port=22 ansible_password=123456
10.0.0.7 ansible_user=root ansible_port=22 ansible_password=123456
……

1.9 ansible常用模块

模块分类模块说明
执行命令/脚本command默认模块,一般用于执行简单命令;不支持特殊符号,如:|、{、}、$……
shell能执行较多的命令,支持特殊符号
script1.分发脚本(管理端指定文件)
2.执行脚本(客户机运行)
文件、目录管理file与文件、目录、软连接相关;
path=路径
src=原文件
mode=文件权限(0644、0755)
owner、group
state=对文件、目录的操作(touch、directory、link、absent(删除))
用户管理user/group对用户/组管理
name=指定用户名
uid=指定用户id
create_home=true/false,是否创建家目录
state:添加用户present(默认),删除用户:absent
软件包管理yum/aptname:软件包名字
state:present安装软件,absent:删除软件
分发配置文件copysrc:指定管理机的文件
dest:指定客户机上的路径
modeo
owner
group
服务管理systemd服务管理模块
name:服务名字
enabled:是否开机自启动
state:指定服务状态(started、stopped、restarted、reloaded)

1.9.1 shell模块

[root@m02 ~]# ansible -i /etc/ansible/hosts data -m shell -a 'rpm -qa |grep tree'
……
172.16.1.41 | CHANGED | rc=0 >>
tree-1.8.0-2.ky10.x86_64
ostree-help-2020.4-2.ky10.noarch
ostree-2020.4-2.ky10.x86_64
172.16.1.51 | CHANGED | rc=0 >>
tree-1.8.0-2.ky10.x86_64
ostree-help-2020.4-2.ky10.noarch
ostree-2020.4-2.ky10.x86_64
……

1.9.2 script模块

  • 编写测试脚本
[root@m02 ~]# cat /server/scripts/check_info.sh
#!/bin/bash
##############################################################
# File Name:/server/scripts/check_info.sh
# Version:V1.0
# Author:SunKexu
# Organization:www.oldboyedu.com
# Desc:测试模块
##############################################################
hostnamectl
  • 测试script模块
[root@m02 ~]# ansible -i /etc/ansible/hosts data -m script -a '/server/scripts/check_info.sh'
……
172.16.1.51 | CHANGED => {"changed": true,"rc": 0,"stderr": "Shared connection to 172.16.1.51 closed.\r\n","stderr_lines": ["Shared connection to 172.16.1.51 closed."],"stdout": "   Static hostname: db01\r\n         Icon name: computer-vm\r\n           Chassis: vm\r\n        Machine ID: 882086c957f84ef49c0e846c2f4f3968\r\n           Boot ID: 6b6950319fad4dfda19e2323adfe5bc8\r\n    Virtualization: vmware\r\n  Operating System: Kylin Linux Advanced Server V10 (Lance)\r\n            Kernel: Linux 4.19.90-52.22.v2207.ky10.x86_64\r\n      Architecture: x86-64\r\n","stdout_lines": ["   Static hostname: db01","         Icon name: computer-vm","           Chassis: vm","        Machine ID: 882086c957f84ef49c0e846c2f4f3968","           Boot ID: 6b6950319fad4dfda19e2323adfe5bc8","    Virtualization: vmware","  Operating System: Kylin Linux Advanced Server V10 (Lance)","            Kernel: Linux 4.19.90-52.22.v2207.ky10.x86_64","      Architecture: x86-64"]
}
……

1.9.3 file模块

  • 模块参数:

    • path:指定目标路径
    • src:指定原文件路径
    • state:指定对目标的操作
      • directory:创建目录
      • touch:创建文件
      • link:创建软链接
      • absent:删除指定文件或目录
    • mode:指定目标文件/目录的权限,0755,0644……
    • owner:指定目标文件/目录的所有者
    • group:指定目标文件/目录的所属组
  • 创建目录

[root@m02 ~]# ansible -i /etc/ansible/hosts all -m file -a 'path=/backup state=directory'
172.16.1.7 | SUCCESS => {"changed": false,"gid": 0,"group": "root","mode": "0755","owner": "root","path": "/backup","size": 31,"state": "directory","uid": 0
}
172.16.1.9 | SUCCESS => {"changed": false,"gid": 0,"group": "root","mode": "0755","owner": "root","path": "/backup","size": 20,"state": "directory","uid": 0
}
172.16.1.8 | CHANGED => {"changed": true,"gid": 0,"group": "root","mode": "0755","owner": "root","path": "/backup","size": 6,"state": "directory","uid": 0
}
……
  • 创建文件
[root@m02 ~]# ansible -i /etc/ansible/hosts all -m file -a 'path=/backup/skx.txt state=touch'
……
172.16.1.8 | CHANGED => {"changed": true,"dest": "/backup/skx.txt","gid": 0,"group": "root","mode": "0644","owner": "root","size": 0,"state": "file","uid": 0
}
172.16.1.6 | CHANGED => {"changed": true,"dest": "/backup/skx.txt","gid": 0,"group": "root","mode": "0644","owner": "root","size": 0,"state": "file","uid": 0
}
……
  • 创建软链接
[root@m02 ~]# ansible -i /etc/ansible/hosts all -m file -a 'src=/etc/hosts path=/backup/hosts state=link'
……
172.16.1.5 | CHANGED => {"changed": true,"dest": "/backup/hosts","gid": 0,"group": "root","mode": "0777","owner": "root","size": 10,"src": "/etc/hosts","state": "link","uid": 0
}
172.16.1.7 | CHANGED => {"changed": true,"dest": "/backup/hosts","gid": 0,"group": "root","mode": "0777","owner": "root","size": 10,"src": "/etc/hosts","state": "link","uid": 0
}
……# 检查
[root@m02 ~]# ansible -i /etc/ansible/hosts all -m command -a 'ls -l /backup/hosts'
……
172.16.1.7 | CHANGED | rc=0 >>
lrwxrwxrwx 1 root root 10  79 20:59 /backup/hosts -> /etc/hosts
172.16.1.6 | CHANGED | rc=0 >>
lrwxrwxrwx 1 root root 10  79 20:59 /backup/hosts -> /etc/hosts
172.16.1.8 | CHANGED | rc=0 >>
lrwxrwxrwx 1 root root 10  79 20:59 /backup/hosts -> /etc/hosts
……
  • 删除软链接
[root@m02 ~]# ansible -i /etc/ansible/hosts all -m file -a 'path=/backup/hosts state=absent'
……
172.16.1.8 | CHANGED => {"changed": true,"path": "/backup/hosts","state": "absent"
}
172.16.1.9 | CHANGED => {"changed": true,"path": "/backup/hosts","state": "absent"
}
……
  • 创建目录,并指定权限和所属用户/组
[root@m02 ~]# ansible -i /etc/ansible/hosts all -m file -a 'path=/backup/skx state=directory mode=0700 owner=oldboy group=oldboy'
……
172.16.1.5 | FAILED! => {"changed": false,"gid": 0,"group": "root","mode": "0755","msg": "chown failed: failed to look up user oldboy", # 没有该用户"owner": "root","path": "/backup/skx","size": 6,"state": "directory","uid": 0
}
172.16.1.7 | CHANGED => {"changed": true,"gid": 1000,"group": "oldboy","mode": "0700","owner": "oldboy","path": "/backup/skx","size": 6,"state": "directory","uid": 1000
}
……

1.9.4 user/group模块

  • user模块参数:
    • name:指定用户名
    • uid:指定用户id
    • group:指定用户所属组
    • shell:指定命令解释器
    • create_home:是否创建家目录(true/false)
    • state:指定对该用户的操作;present:创建用户(默认),absent:删除用户
  • group模块参数:
    • name:指定用户组名
    • gid:指定组id
    • state:指定对该用户组的操作;present:创建用户组(默认),absent:删除用户组
  • 创建用户
[root@m02 ~]# ansible -i /etc/ansible/hosts all -m user -a 'name=www-ans uid=2999 group=www-ans shell=/sbin/nologin create_home=false state=present'
……
172.16.1.7 | FAILED! => {"changed": false,"msg": "Group www-ans does not exist"
}
172.16.1.5 | FAILED! => {"changed": false,"msg": "Group www-ans does not exist"
}
……# Ansible 的 user 模块默认不会自动创建用户组,因此需要先确保组存在。
# 创建用户组
[root@m02 ~]# ansible -i /etc/ansible/hosts all -m group -a 'name=www-ans gid=2999 state=present'
……
172.16.1.6 | CHANGED => {"changed": true,"gid": 2999,"name": "www-ans","state": "present","system": false
}
172.16.1.9 | CHANGED => {"changed": true,"gid": 2999,"name": "www-ans","state": "present","system": false
}
……# 创建用户
[root@m02 ~]# ansible -i /etc/ansible/hosts all -m user -a 'name=www-ans uid=2999 group=www-ans shell=/sbin/nologin create_home=false state=present'
……
172.16.1.9 | CHANGED => {"changed": true,"comment": "","create_home": false,"group": 2999,"home": "/home/www-ans","name": "www-ans","shell": "/sbin/nologin","state": "present","system": false,"uid": 2999
}
172.16.1.6 | CHANGED => {"changed": true,"comment": "","create_home": false,"group": 2999,"home": "/home/www-ans","name": "www-ans","shell": "/sbin/nologin","state": "present","system": false,"uid": 2999
}
……

1.9.5 yum/apt模块

  • yum模块参数:

    • name:指定软件包名称
    • state:指定对软件包的操作
      • present:安装软件(默认)
      • absent:删除软件
      • latest:更新软件
  • 安装软件

[root@m02 ~]# ansible -i /etc/ansible/hosts all -m yum -a 'name=wget state=present'
……
172.16.1.6 | CHANGED => {"ansible_facts": {"pkg_mgr": "dnf"},"changed": true,"msg": "","rc": 0,"results": ["Installed: wget-1.20.3-6.ky10.x86_64"]
}
172.16.1.9 | CHANGED => {"ansible_facts": {"pkg_mgr": "dnf"},"changed": true,"msg": "","rc": 0,"results": ["Installed: wget-1.20.3-6.ky10.x86_64"]
}
……

1.9.6 copy模块

  • 推荐分发文件或压缩包,分发目录极其缓慢

  • copy模块参数:

    • src:管理机上的原文件路径
    • dest:客户机上的目标路径
    • backup:如果客户机上有目标文件,是否要备份(true/false(默认))
  • 分发文件

[root@m02 ~]# ansible -i /etc/ansible/hosts all -m  copy -a 'src=/etc/hosts dest=/etc/hosts backup=true'
……
172.16.1.8 | SUCCESS => {"changed": false,"checksum": "a85d59aa0b622911d06dee4a51b95c62cde849bd","dest": "/etc/hosts","gid": 0,"group": "root","mode": "0644","owner": "root","path": "/etc/hosts","size": 311,"state": "file","uid": 0
}
172.16.1.5 | SUCCESS => {"changed": false,"checksum": "a85d59aa0b622911d06dee4a51b95c62cde849bd","dest": "/etc/hosts","gid": 0,"group": "root","mode": "0644","owner": "root","path": "/etc/hosts","size": 311,"state": "file","uid": 0
}
……

1.9.7 systemd模块

  • 模块参数:

    • name:服务名称
    • enabled:是否开机自启动(true/false)
    • state:指定服务状态
      • reloaded:重新加载服务的配置文件
      • restarted:重启服务
      • started:启动服务
      • stopped:停止服务
  • 批量启动nginx服务

[root@m02 ~]# ansible -i /etc/ansible/hosts web -m systemd -a 'name=nginx enabled=true state=restarted'
……
172.16.1.9 | CHANGED => {"changed": true,"enabled": true,"name": "nginx","state": "started","status": {"ActiveEnterTimestamp": "Thu 2025-07-10 08:13:46 CST","ActiveEnterTimestampMonotonic": "2570669227","ActiveExitTimestampMonotonic": "0",……

2. 思维导图

https://kdocs.cn/join/gpuxq6r?f=101\r\n邀请你加入共享群「老男孩教育Linux运维99期-孙克旭」一起进行文档协作


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

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

相关文章

力扣网编程134题:加油站(双指针)

一. 简介 前面两篇文章使用暴力解法,或者贪心算法解决了力扣网的加油站问题,文章如下: 力扣网编程150题:加油站(暴力解法)-CSDN博客 力扣网编程150题:加油站(贪心解法&#xff09…

XPath 语法【Web 自动化-定位方法】

🧭 XPath 语法简介(Web 自动化核心定位手段)一、XPath 是什么?XPath(XML Path Language)是用于在 XML/HTML 文档中定位节点的语言,由 W3C 标准定义。浏览器支持的是 XPath 1.0。应用场景广泛&am…

记一次 Linux 安装 docker-compose

一.下载 1.手动下载 下载地址:https://github.com/docker/compose/releases 下载后,放在/usr/local/bin/目录下,命名为:docker-compose 2.命令下载 sudo curl -L "https://github.com/docker/compose/releases/download/…

Go语言WebSocket编程:从零打造实时通信利器

1. WebSocket的魅力:为什么它这么火?WebSocket,简单来说,就是一种在单条TCP连接上实现全双工通信的神器。相比HTTP的请求-响应模式,它像是一条随时畅通的电话线,客户端和服务器可以随时“喊话”&#xff0c…

速学 RocketMQ

目录 本地启动&测试&可视化 核心概念 集群 主从 集群 Dledger 集群 总结 客户端消息确认机制 广播模式 消息过滤机制 顺序消息机制 延迟消息与批量消息 事务消息机制 ACL权限控制体系 RocketMQ客户端注意事项 消息的 ID、Key、Tag 最佳实践 消费者端…

【个人思考】不点菜的美学:Omakase 的信任、四季与食艺

本文原创作者:姚瑞南 AI-agent 大模型运营专家/音乐人/野生穿搭model,先后任职于美团、猎聘等中大厂AI训练专家和智能运营专家岗;多年人工智能行业智能产品运营及大模型落地经验,拥有AI外呼方向国家专利与PMP项目管理证书。(转载需经授权) 目录 🍣 什么是 Omakase?…

vivo Pulsar 万亿级消息处理实践(3)-KoP指标异常修复

作者:vivo 互联网大数据团队- Chen Jianbo 本文是《vivo Pulsar万亿级消息处理实践》系列文章第3篇。 Pulsar是Apache基金会的开源分布式流处理平台和消息中间件,它实现了Kafka的协议,可以让使用Kafka API的应用直接迁移至Pulsar,…

Marin说PCB之Allegro高亮BOM器件技巧详解

一,首先在原理图输出BOM的时候,只需要勾选器件的位号这个选项即可,具体操作如下所示:二,输出BOM完成后,打开表格选择我们器件的位号那列即可,然后复制到我们的TEXT文本中。三,接着就…

数据结构与算法——从递归入手一维动态规划【2】

前言: 记录一下对左程云系列算法课程--算法讲解066【必备】的剩余习题的学习。本文主要简单记录个人学习心得和提供C版本代码。如需要题目的细致讲解,请前往原视频。 涉及内容: 动态规划、三指针、 参考视频: 左程云--算法讲…

【理念●体系】Windows AI 开发环境搭建实录:六层架构的逐步实现与路径治理指南

【理念●体系】从零打造 Windows WSL Docker Anaconda PyCharm 的 AI 全链路开发体系-CSDN博客 Windows AI 开发环境搭建实录:六层架构的逐步实现与路径治理指南 ——理念落地篇,从路径规划到系统治理,打造结构化可复现的 AI 开发环境 AI…

5G标准学习笔记15 --CSI-RS测量

5G标准学习笔记15 --CSI-RS测量 前言 前面讲了,在5GNR中,CSI-RS 是支持信道状态评估、波束管理和无线资源管理(RRM)的关键参考信号。下面孬孬基于3GPP TS 38.331中的内容,详细定义了基于 CSI-RS 的测量程序&#xff0c…

第P28:阿尔茨海默病诊断(优化特征选择版)

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、进阶说明 针对于特征对模型结果的影响我们做了特征分析 特征选择 1. SelectFromModel 工作原理:基于模型的特征选择方法,使用…

AI的欧几里得要素时刻:从语言模型到可计算思维

引言 人工智能正在经历一个关键的转折点。就像欧几里得的《几何原本》为数学奠定了公理化基础一样,AI也正在寻找自己的"要素时刻"——一个能够将当前的语言模型能力转化为真正可计算、可验证思考的转变。 最近发表的论文《AI’s Euclid’s Elements Momen…

番外-linux系统运行.net framework 4.0的项目

基础环境:linux系统,.net framework 4.0,npgsql 2.2.5.0 (版本不同,构建可能失败) 方法背景:linux不支持运行.net framework 4.0,高版本mono不支持npgsql 2.x 主要使用&#xff1a…

国内AI训练都有哪些企业?:技术深耕与场景实践

国内AI训练都有哪些企业?当人工智能从实验室走向产业一线,AI 训练就像为智能系统 “施肥浇水” 的关键环节,让技术根系在各行业土壤里扎得更深。国内一批 AI 训练企业正各展所长,有的专攻技术优化,有的深耕场景应用。它…

微算法科技基于格密码的量子加密技术,融入LSQb算法的信息隐藏与传输过程中,实现抗量子攻击策略强化

随着量子计算技术的发展,传统加密算法面临被量子计算机破解的风险,LSQb 算法也需考虑应对未来可能的量子攻击。微算法科技基于格密码的量子加密技术,融入LSQb算法的信息隐藏与传输过程中,实现抗量子攻击策略强化。格密码在面对量子…

xAI发布Grok4+代码神器Grok4 Code,教你如何在国内升级订阅SuperGrok并使用到Grok4教程

就在今天,马斯克旗下xAI发布了其最新的旗舰AI模型Grok4,并同步推出专为开发者打造的编程利器 Grok 4 Code,还推出了一项全新的AI订阅计划——每月300美元的SuperGrokHeavy。 那最新发布的Grok4以及有哪些特性呢?以及如何才能使用…

Rust 变量遮蔽(Variable Shadowing)

在 Rust 中,变量遮蔽(Variable Shadowing) 是一种在同一作用域内重新声明同名变量的特性。它允许你创建一个新变量覆盖之前的同名变量,新变量与旧变量类型可以不同,且旧变量会被完全隐藏。核心特点允许同名变量重复声明…

【VScode | 快捷键】全局搜索快捷键(ctrl+shift+f)失效原因及解决方法

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 😎金句分享😎&a…

Windows 与 Linux 内核安全及 Metasploit/LinEnum 在渗透测试中的综合应用

目录 🛠️ 1. 内核安全如何助力渗透测试与黑客行业 1.1 内核安全的战略价值 1.2 结合 Metasploit 与 LinEnum 的作用 🔍 2. Metasploit 信息收集模块及其在内核安全中的应用 2.1 Windows 信息收集模块 2.2 Linux 信息收集模块 2.3 使用步骤 Wind…