Ansible基本介绍与模块使用

news2025/2/26 3:54:19

目录

引言

一、Ansible简介

(一)基本概述

(二)主要特点

二、Ansible安装及基本组件

(一)yum安装

(二)编译安装

(三)基本配置信息

1.主配置文件

2.主机清单

3.角色目录

(四)Ansible相关工具

1.ansible临时工具

2.定义主机组

3.验证

三、模块

(一)Command 模块

(二)shell模块

(三)Script模块

(四)copy模块

(五)Get_url 模块

(六)Fetch 模块

(七)File模块

(八)stat模块

(九)unarchive 模块

(十)Archive模块

(十一)Cron 模块

(十二)Yum和 Apt 模块

(十三)Service 模块

(十六)mount模块

(十四)User 模块

(十五)Group 模块

(十六)Lineinfile 模块

(十七)replace 模块

(十八)setup模块


引言

在当今快速发展的IT环境中,自动化已成为运维工作的重要组成部分。Ansible作为一款强大的IT自动化工具,凭借其简洁易用的特性、无需客户端代理的架构以及丰富的模块库,逐渐成为众多企业和开发者青睐的首选解决方案。本文将带您深入探索Ansible的魅力所在,并通过实例了解如何使用它来简化和优化日常运维任务

一、Ansible简介

(一)基本概述

Ansible 是一款开源的 IT 自动化工具,主要用于配置管理、应用部署、任务执行以及多服务器间的协调工作。它由 Michael DeHaan 在 2012 年创建,并于 2015 年被 Red Hat 公司收购,目前是 Red Hat Ansible Automation Platform 的核心组件。

(二)主要特点

Ansible 的主要特点包括

简单易用:基于 YAML 格式的 playbook 定义任务,直观且易于理解。

无代理架构:通过 SSH 连接直接在远程主机上执行任务,无需在目标机器上安装任何代理软件或守护进程。

模块化设计:提供了大量的内置模块,覆盖了操作系统配置、网络设备管理、云计算服务操作等众多领域。用户也可以自定义模块来满足特定需求。

幂等性:许多 Ansible 模块都具有幂等性,即无论执行多少次,只要系统状态达到预期,都不会再做更改,确保了系统的稳定性。

库存管理(Inventory):Ansible 使用 inventory 文件管理要操作的目标主机列表,可以灵活地根据组(groups)和主机变量进行运维操作。

角色(Roles):为了代码复用和组织结构清晰,Ansible 提供了角色的概念,用于将一组相关的任务、文件和模板打包在一起。

动态_inventory:支持从各种源获取动态主机信息,如 EC2 API、OpenStack 或者 CMDB 系统。

安全传输:通过使用 SSH 密钥对等方式保证数据的安全传输。

扩展性强:除了丰富的官方模块库,Ansible 还有一个活跃的社区,不断开发新的模块和插件以支持更多的功能。

一键回滚:部分高级特性如 ansible-bender 支持容器镜像构建时的一键回滚。

二、Ansible安装及基本组件

使用yum安装,或使用python进行编译安装

(一)yum安装

由于本地yum源中并没有Ansible的安装包,需要先下载epel源,或其它源来进行安装

yum  install epel-release.noarch -y   #先下载epel源

yum  install ansible  -y                       #下载ansible

使用ansible  --version命令查看版本信息

(二)编译安装

由于centos7自带的python环境版本比较低,需要进行升级

首先需要升级python以及编译安装所需环境

yum  install wget zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make zlib zlib-devel libffi-devel python3-devel epel-release -y

下载源码包

wget https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tgz

yum  install  -y  python-simplejson  python-paramiko  python-ecdsa  python-markupsafe python-yaml python-jinja2 python-pycrypto python3-setuptools

./configure --prefix=/usr/local/python

(三)基本配置信息

配置文件

/etc/ansible/ansible.cfg 主配置文件,配置ansible工作特性,也可以在项目的目录中创建此文件,当前目录下如果也有ansible.cfg,则此文件优先生效,建议每个项目目录下,创建独有的ansible.cfg文 件

/etc/ansible/hosts 主机清单

/etc/ansible/roles/ 存放角色的目录

1.主配置文件

打开/etc/ansible/ansible.cfg文件

[defaults]
'包含Ansible的全局默认设置,如日志文件位置、模块搜索路径、连接超时时间等'

[inventory]
'关于如何解析和管理主机清单文件的设置,比如库存插件的类型、是否允许动态库存等'

[privilege_escalation]
'与权限提升相关的设置,例如sudo或su策略、密码询问等'

[paramiko_connection]
'若使用Paramiko作为连接方式,在此定义相关参数。Paramiko是一个纯Python实现的SSHv2协议库'

[ssh_connection]
'有关通过SSH连接到远程主机的配置选项,包括控制并发连接数、压缩传输数据等'

[persistent_connection]
'关于持久连接的相关设置,这种连接可以复用已建立的SSH会话以提高执行效率'

[accelerate]
'Ansible加速器相关配置,用于在代理服务器上部署加速器以提高网络性能'

[selinux]
'与SELinux安全上下文相关的设置,确保在执行任务时对SELinux标签进行正确处理'

[colors]
'Ansible输出的颜色主题设置,便于用户在终端查看更易读的彩色输出信息'

[diff]
'针对任务执行前后差异对比的设置,启用后可在更改文件或模板时显示详细的差异内容'

主要查看一下defaults的基本配置

inventory
#指定默认的主机清单文件位置,用于定义Ansible要管理的主机列表。
library
#自定义模块库路径,如果需要使用非标准模块,可以在这里指定额外的模块存放目录。
module_utils
#定义自定义模块辅助工具(Module Utilities)的位置。
remote_tmp 和 local_tmp
#分别设置远程主机和本地主机上临时文件的存储路径。
plugin_filters_cfg
#指定插件过滤器配置文件的路径。
forks
#设置并发执行任务的最大数量,即同时控制多少台主机。
poll_interval
#设置轮询间隔时间,当Ansible等待命令或任务在远程主机上完成时,每隔多久检查一次状态。
sudo_user
#默认sudo使用的用户名,如果不指定则默认为root。
ask_sudo_pass 和 ask_pass
#控制是否在运行需要sudo或直接登录密码的任务时询问密码,默认为True。
transport
#指定连接方式,默认为smart,根据实际情况选择SSH或其他方式。
remote_port
#远程主机SSH服务的端口号,默认为22。
module_lang 
#与模块执行的语言环境相关,前者指定了模块运行的语言(通常为C)
module_set_locale
#后者控制是否在执行模块时设置相应的locale。

2.主机清单

用于定义和组织Ansible要管理的远程主机列表。在这个文件中,可以按照组(groups)或单个主机的方式列出目标主机,并可为每个组或主机指定特定的变量。以下是基本的可配置参数

ansible_ssh_host 
#将要连接的远程主机名.与你想要设定的主机的别名不同的话,可通过此变量设置.
ansible_ssh_port 
#ssh端口号.如果不是默认的端口号,通过此变量设置.这种可以使用 ip:端口

ansible_ssh_user 
#默认的 ssh 用户名

ansible_ssh_pass 
#ssh 密码(这种方式并不安全,我们强烈建议使用 --ask-pass 或 SSH 密钥)

ansible_sudo_pass 
#sudo 密码(这种方式并不安全,我们强烈建议使用 --ask-sudo-pass)

ansible_sudo_exe (new in version 1.8)
#sudo 命令路径(适用于1.8及以上版本)

ansible_connection 
#与主机的连接类型.比如:local, ssh 或者 paramiko. Ansible 1.2 以前默认使用 
#paramiko.1.2 以后默认使用 'smart','smart' 方式会根据是否支持 ControlPersist, 
#来判断'ssh' 方式是否可行.

ansible_ssh_private_key_file
#ssh 使用的私钥文件.适用于有多个密钥,而你不想使用 SSH 代理的情况.

ansible_shell_type 
#目标系统的shell类型.默认情况下,命令的执行使用 'sh' 语法,可设置为'csh' 或 'fish'.

ansible_python_interpreter 
#目标主机的python路径.适用于系统中有多个Python, 或者命令路径不是"/usr/bin/python".

3.角色目录

/etc/ansible/roles/ 是Ansible 角色(Role)的默认存放位置。Ansible 角色是一种组织和复用任务、变量、文件、模板和其他资源的标准方法,它有助于保持代码结构清晰,并在多个项目间共享配置

在 /etc/ansible/roles/ 目录下,每个子目录都代表一个角色,其结构通常如下:

├── role1
│   ├── defaults
│   │   └── main.yml  # 默认变量文件
│   ├── files        # 需要复制到远程主机的文件
│   ├── handlers     # 定义处理程序的任务文件
│   ├── meta         # 角色元数据信息,如依赖的角色列表
│   ├── tasks        # 角色的任务列表
│   ├── templates    # Jinja2 模板文件
│   ├── tests        # 测试脚本和数据
│   ├── vars         # 角色特定变量文件
│   └── README.md    # 角色的文档说明
├── role2
│   ...               # 类似于 role1 的结构
└── ...

(四)Ansible相关工具

/usr/bin/ansible

#主程序,临时命令执行工具

/usr/bin/ansible-doc

#查看配置文档,模块功能查看工具,相当于man ansible-doc -l |grep 关键字 具体模块名字

/usr/bin/ansible-playbook

#定制自动化任务,编排剧本工具,相当于脚本

/usr/bin/ansible-pull

#远程执行命令的工具

/usr/bin/ansible-vault

#文件加密工具

/usr/bin/ansible-console

#基于Console界面与用户交互的执行工具

/usr/bin/ansible-galaxy

#下载/上传优秀代码或Roles模块的官网平台

1.ansible临时工具

执行一次性操作,其语法为

ansible    <host-pattern>            [-m module_name]     [-a args]
命令      主机或者清单中的组         -m 指定模块      -a  执行的任务

选项作用
--version显示版本
-m module指定模块,默认为command
-v   详细过程 -vv -vvv更详细
--list-hosts显示主机列表,可简写 --list
-C, --check检查,并不执行
-T, --timeout=TIMEOUT执行命令的超时时间,默认10s
-k, --ask-pass提示输入ssh连接密码,默认Key验证
-u, --user=REMOTE_USER执行远程执行的用户,默认root
-b, --become  代替旧版的sudo 切换
--become-user=USERNAME 指定sudo的runas用户,默认为root
-K, --ask-become-pass提示输入sudo时的口令
-f FORKS, --forks FORKS     指定并发同时执行ansible任务的主机数

2.定义主机组

定义一个主机清单,可以对多个主机同时进行操作,在/etc/ansible/hosts文件中添加主机组

语法格式为:

[组名]

ip/域名

……

在文件末尾添加下图信息

[host]

#这个组包含了两个具体的 IP 地址:192.168.83.40 和 192.168.83.50。
#当你执行针对 [host] 组的 Ansible 命令时,这些主机都会受到影响。

[hosts]

#这个组包含了一个范围表达式:192.168.83.[45:50]。
#这是一个主机列表扩展格式,表示从 192.168.83.45 到 192.168.83.50 的一系列主机

 可以使用list参数列出主机

3.验证

ansible默认使用ssh协议连接,所以需要将ssh协议作为客户端配置文件的/etc/ssh/ssh_config中第35行取消注释,将默认的ask改为no,取消公钥验证

这里进行远程连接时还需要输入密码,且同组之中的主机密码必须相同

将ansible的主配置文件中的71行取消注释,不验证密码

Ansible 在首次连接到一个新主机时不会要求用户手动确认其 SSH 主机密钥,而是直接接受任何提供的密钥。

这可以提高自动化任务执行的速度和流程,但在安全性上有所牺牲,因为它可能导致受到中间人攻击的风险增加

建议恢复默认设置,使用ssh-keygen生成公钥验证,进行免密登录

如何使用免密登录,点击下方链接进行查看

ssh远程登录协议-CSDN博客

设置完毕后,就可以直接使用ansible工具了

ansible工具还支持通配符,条件匹配等

三、模块

Ansible 模块是 Ansible 自动化运维工具的核心组件,它们是可重用的、幂等性的代码单元,执行特定的任务并报告状态。每个模块都设计为解决一个具体的系统管理任务,例如安装软件包、管理用户账户、配置服务或处理文件系统操作。

可以使用ansible-doc命令查看支持哪些模块以及模块的详细信息

使用ansible-doc  模块名称  查看某一个模块的详细信息及 使用方法



 

(一)Command 模块

功能:在远程主机执行命令,此为默认模块,可忽略 -m 选项

注意:此命令不支持 $VARNAME < > | ; & 等,可以用shell模块实现

注意:此模块不具有幂等性

比如在定义的host组中所有的主机的/opt目录下,建立test文件

可以在配置文件中修改默认使用的模块

(二)shell模块

功能:和command相似,用shell执行命令,支持各种符号,比如:*,$, >

注意:此模块不具有幂等性

(三)Script模块

功能:在远程主机上运行ansible服务器上的脚本(无需执行权限)

注意:此模块不具有幂等性

(四)copy模块

功能:从ansible服务器主控端复制文件到远程主机

注意: src=file 如果是没指明路径,则为当前目录或当前目录下的files目录下的file文件

相关语句

src              #代表源文件路径
dest            #代表文件落地路径
owner         #属主
group          #属组
mode          #代表权限
backup        #如果复制时有同名文件会先备份再复制,只在源文件做修改后生效

content       #指定内容,直接生成目标文件

当文件内容修改后需要再次copy到远端,建议开启备份功能

指定内容建立文件

(五)Get_url 模块

功能: 用于将文件从http、https或ftp下载到被管理机节点上

相关语句

url        #下载文件的URL,支持HTTP,HTTPS或FTP协议
dest     #下载到目标路径(绝对路径),如果目标是一个目录,就用服务器上面文件的名                  称,如果目标设置了名称就用目标设置的名称
owner  #指定属主
group  #指定属组
mode  #指定权限
force    #如果yes,dest不是目录,将每次下载文件,如果内容改变,替换文件。如果否,则               只有在目标不存在时才会下载该文件

(六)Fetch 模块

功能:从远程主机提取文件至ansible的主控端,copy相反,目前不支持目录

来自不同远程主机的文件将会被分别存放在本地对应主机名的子目录下。

(七)File模块

file模块用于处理远程主机上的文件和目录操作。它主要用于创建、删除、重命名文件或目录,并可以设置权限、所有权等属性

path       #指定文件路径
state      #文件状态 有:新建(touch) 删除(absent) 文件夹(directory)  连接文件(link)等
src         #源文件
mode     #权限
owner    #属主
group     #属组
recurse   #递归修改目录属性

在/opt/目录下建立一个kysw.txt.文件。指定属主与属组为kysw,设置权限为755

新建目录,指定state为directory

删除文件

创建链接文件,指定路径名称为/opt/kysw-link

递归修改目录的属主与属组

ansible host -m file -a 'path=/opt/kysw.d  owner=kysw group=kysw state=recurse'

(八)stat模块

stat模块用于获取远程主机上文件或目录的详细状态信息。这个模块类似于Linux命令行工具stat,它不改变目标的状态,而是返回关于指定路径的属性,包括但不限于:

文件是否存在
文件大小
所有者和组
权限模式(如:0755)
最后访问、修改和更改的时间戳
是否为符号链接以及指向的位置(如果是符号链接的话)
文件类型(常规文件、目录、符号链接等)

常用的返回值判断

exists: 判断是否存在
isuid: 调用用户的ID与所有者ID是否匹配

(九)unarchive 模块

unarchive模块用于解压缩存档文件(如.tar、.tar.gz、.tgz、.zip等格式的文件),并将其内容展开到指定的目录。

基本参数

copy:默认为yes,当copy=yes,拷贝的文件是从ansible主机复制到远程主机上,如果设置为copy=no,会在远程主机上寻找src源文件
remote_src:和copy功能一样且互斥,yes表示在远程主机,不在ansible主机,no表示文件在ansible主机上
src:源路径,可以是ansible主机上的路径,也可以是远程主机(被管理端或者第三方主机)上的路径,如果是远程主机上的路径,则需要设置copy=no
dest:远程主机上的目标路径
mode:设置解压缩后的文件权限

实现有两种用法:

1.将ansible主机上的压缩包传到远程主机后解压至特定目录,设置copy=yes,此为默认值,可省略

2.将远程主机上的某个压缩包解压缩到指定路径下,设置copy=no

远程主机的/mnt目录下会生成解压后的文件

解压远程主机的压缩文件

(十)Archive模块

archive模块用于将一组文件或目录打包成一个存档文件(如.tar、.tar.gz、.zip等格式),并可选择性地将结果存放在远程主机上或者本地控制节点。

(十一)Cron 模块

cron模块用于在远程主机上管理cron定时任务。该模块允许您创建、更新或删除Cron条目,这对于自动化运维工作流程非常有用,特别是在需要确保多台服务器上的定时任务一致时

支持时间:minute(分),hour(时),day(日),month(月),weekday(周)

删除任务

(十二)Yum和 Apt 模块

yum和apt模块分别用于管理基于RHEL/CentOS系列(使用Yum或DNF包管理器)以及基于Debian/Ubuntu系列(使用Apt包管理器)的Linux系统的软件包。

常用参数

name                       所安装的包的名称
state                         present--->安装, latest--->安装最新的, absent---> 卸载软件。
update_cache          强制更新yum的缓存
conf_file                   指定远程yum安装时所依赖的配置文件(安装本地已有的包)。
disable_pgp_check  是否禁止GPG checking,只用于presentor latest。
disablerepo              临时禁止使用yum库。 只用于安装或更新时。
enablerepo               临时使用的yum库。只用于安装或更新时

使用yum模块,可以在远程主机上同时安装软件

使用yum模块安装

查看远程主机

ansible host -m yum -a 'name=* state=lastest exclude=kernel*,foo*'

#升级除kernel和foo开头以外的所有包

ansible host -m yum -a 'name=httpd state=absent'              #删除

(十三)Service 模块

service模块的作用是管理远程主机上的服务

常用参数

name参数           #指定需要操作的服务名称,比如 nginx。
state参数            #指定服务的状态,可用值有 started(开启)、stopped(关闭)、restarted(重启)、reloaded(重新加载配置文件)。
enabled参数       #指定是否将服务设置为开机启动项, yes表示设置为开机启动,no不设置

比如管理远程主机上刚安装的nginx服务

(十六)mount模块

mount模块用于管理远程主机上的文件系统挂载。这个模块可以挂载、卸载或重新挂载文件系统,并且能够检查当前的挂载状态

ansible  host  -m mount -a 'path=/mnt fstype=xfs opts=noatime state=unmounted'

#解挂载

ansible host -m mount -a 'src=192.168.83.40:/data/wordpress path=/mnt opts="_netdev" state=mounted'
#永久卸载
ansible host -m mount -a 'src=192.168.83.40:/data/wordpress path=mnt state=absent'

#解除永久挂载

(十四)User 模块

user模块用于管理远程主机上的用户账户。它可以创建、修改或删除用户,以及设置用户的密码、SSH密钥、sudo权限等属性。

comment        #用户的描述信息
createhome    #是否创建家目录
force               #在使用state=absent时, 行为与userdel –force一致.
group             #指定基本组
groups            #指定附加组,如果指定为(groups=)表示删除所有组
home              #指定用户家目录
move_home   #如果设置为home=时, 试图将用户主目录移动到指定的目录
name               #指定用户名
non_unique      #该选项允许改变非唯一的用户ID值
password        #指定用户密码,使用 SHA512 hash
remove            #在使用state=absent时, 行为是与userdel –remove一致
shell                 #指定默认shell
state                #设置帐号状态,不指定为创建,指定值为absent表示删除
system            #当创建一个用户,设置这个用户是系统用户。这个设置不能更改现有用户
uid                   #指定用户的uid
update_ password 
  always      如果password参数设置的值与用户当前的加密过的密码字符串不一致,则直接更新用户的密码,默认值即为always
  on_create   如果password参数设置的值与用户当前的加密过的密码字符串不一致,则不会更新用户的密码字符串,保持之前的密码设定

示例:

(十五)Group 模块

group 模块用于在远程主机上管理用户组。这个模块可以创建、更新或删除系统中的用户组

查看组文件

删除组

(十六)Lineinfile 模块

lineinfile 模块用于管理远程主机上的文本文件,并确保该文件包含或不包含特定的一行内容。这个模块常用来修改配置文件,确保某个配置项的存在、更新或删除

regexp参数 :使用正则表达式匹配对应的行,当替换文本时,如果有多行文本都能被匹配,则只有最后面被匹配到的那行文本才会被替换,当删除文本时,如果有多行文本都能被匹配,这么这些行都会被删除。

常用关键字

path                #指定要操作的文件
regexp            #使用正则表达式匹配对应的行
line                 #修改为新的内容
insertafter      #将文本插入到“指定的行”之后
insertbefore   #将文本插入到“指定的行”之前
state              #删除对应的文本时,需要state=absent
backrefs        #1.支持后向引用、2.当未匹配到内容则不操作文件
backup           #是否在修改文件之前对文件进行备份
create            #当要操作的文件并不存在时,是否创建对应的文件

比如:使用ansible将所有远程主机的selinux设置为默认关闭状态

删除文件中指定的内容

(十七)replace 模块

replace 模块用于查找并替换远程主机上的文本文件中的指定内容。这个模块不同于 lineinfile 模块,它根据正则表达式进行查找和替换,可以处理多行匹配的情况

path                 # 文件路径
regexp             # 要被替换的正则表达式模式
replace            # 替换为的新内容
backup            # 可选参数,如果设置为yes,则在修改文件前创建一个备份

将selinux配置文件中的disabled修改为enforcing

(十八)setup模块

setup模块用于收集远程主机的信息。当执行 ansible <hostname> 或 ansible-playbook -i inventory_file playbook.yml(其中没有明确指定执行的模块)时,Ansible 默认会运行 setup 模块来获取目标主机的基本信息。

这些 facts 信息可以直接以变量的形式使用,但是如果主机较多,会影响执行速度

在host组中只有两台机器,就达到1664行,如果主机较多,可能会影响本地主机的运行,可以使用filter参数来指定查看远端主机信息

ansible  [主机组]  -m setup -a  "fiter=参数"

例如查看远端主机的主机名

ansible_all_ipv4_addresse仅显示ipv4的信息
ansible_devices仅显示磁盘设备信息
ansible_distribution显示是什么系统,例:centos,suse等
ansible_distribution_version仅显示系统版本
ansible_machine显示系统类型,例:32位,还是64位
ansible_ethO仅显示eth0的信息
ansible_hostname仅显示主机名
ansible_kernel仅显示内核版本
ansible_lvm显示lvm相关信息
ansible_memtotal_mb显示系统总内存
ansible_memfree_mb显示可用系统内存
ansible_memory_mb详细显示内存情况
ansible_swaptotal_mb显示总的swap内存
ansible_swapfree_mb显示swap内存的可用内存
ansible_mounts显示系统磁盘挂载情况
ansible_processor显示cpu个数(具体显示每个cpu的型号)
ansible_processor_vcpus显示cpu个数(只显示总的个数)
ansible_python_version显示python版本

所收集的信息会被存储在变量中,这些变量可以在后续的任务中作为条件判断或者动态生成配置文件内容的基础

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

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

相关文章

v-bind 绑定 class 与 style 基础用法

使用 v-bind 指令绑定 class 和 style 时语法相对复杂一些&#xff0c;这两者是可以互相替代的&#xff0c;均用于响应更新HTML元素的属性&#xff0c; v-bind 绑定 class 属性可以改写成绑定 style 属性&#xff0c;只是 css 属性位置变了而已。 1. 绑定 class 属性 1.1 数组…

GPT-4与Claude3、Gemini、Sora:AI领域的技术创新与突破

【最新增加Claude3、Gemini、Sora、GPTs讲解及AI领域中的集中大模型的最新技术】 2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚…

考研失败, 学点Java打小工_Day3_卫语句_循环

1 编码规范——卫语句 表达异常分支时&#xff0c;少用if-else方式。   比如成绩判断中对于非法输入的处理&#xff1a; /*>90 <100 优秀>80 <90 良好>70 <80 一般>60 <70 及格<60 不及格*/Testpu…

行业领袖齐聚香港,共襄区块链盛宴——Symbiosis 联合创始人Nick Avramov确认出席Hack.Summit() 2024区块链开发者大会

随着区块链技术的飞速进步和广泛应用&#xff0c;一场区块链行业的重量级盛会即将在香港数码港隆重举行。由Hack VC主办、AltLayer和Berachain协办&#xff0c;并得到Solana、The Graph、Blockchain Academy、ScalingX、0G、SNZ和数码港等机构的合作支持&#xff0c;由Techub N…

【全开源】JAVA姓氏头像情侣头像家庭头像赚钱签名头像谐音顽埂头像设计小程序头像大全系统源码支持微信小程序+微信公众号+H5|博纳软云

一、功能介绍 用户端&#xff1a;查看近期生成的头像&#xff0c;我的团队&#xff0c;分享好友&#xff0c; 姓氏头像&#xff0c;情侣头像&#xff0c;亲子头像&#xff0c;家庭头像 选择模板&#xff0c;个人资料&#xff0c;修改资料&#xff0c;注销账号。 我们技术使用…

你真的会做抖音小店吗?你做抖店的方法是正确的吗?教学分享

大家好&#xff0c;我是电商花花。 新的一年&#xff0c;不少做抖店的商家都会产生一个疑问&#xff0c;2024年抖音小店无货源还能继续做吗&#xff1f; 做无货源模式还会被处罚吗&#xff1f; 先说答案&#xff0c;2024年抖音小店无货源能做&#xff0c;不仅能做且仍然是抖音…

简明 FastAPI 并发请求指南

在当今的数字化世界中&#xff0c;网络用户对于高速响应和持续连接的诉求日益显著。这促使了基于 Python 构建的 FastAPI 框架受到广泛关注&#xff0c;它不仅现代化且效率极高&#xff0c;而且简化了并行请求的处理。本篇文章旨在探讨 FastAPI 如何处理这类请求&#xff0c;并…

Java项目:64 ssm营业厅宽带系统+jsp

作者主页&#xff1a;舒克日记 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 角色&#xff1a;管理员、用户 管理员的功能有&#xff1a;查看已发布的用户信息&#xff0c;修改用户信息或更换用户内容&#xff0c;用户信息作废&…

计算机二级Python题目12

目录 1. 基础题 1.1 基础题1 1.2 基础题2 1.3 基础题3 2. turtle画图题 3. 大题 3.1 大题1 3.2 大题2 1. 基础题 1.1 基础题1 sinput("请输入一个小数&#xff1a;") ss[::-1] cs0 for c in s:if c.:breakcseval(c) print({:*>10}.format(cs)) 1.2 基础…

SpringCloud Alibaba 入门简介

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第十一篇&#xff0c;即介绍 SpringCloud Alibaba 的入门信息。 二、出现的原因 Spring Cloud Netflix…

外包干了28天,技术退步明显......

说一下自己的情况&#xff0c;本科生&#xff0c;19年通过校招进入深圳某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&a…

哈希技术解析:从哈希函数到哈希桶迭代器的全面指南

文章目录 引言一、哈希表与哈希函数1、哈希表的基本原理2、哈希函数的作用与特点3、哈希冲突的处理方法 二、哈希桶及其迭代器1、 哈希桶a.定义哈希桶结构b.哈希函数c.哈希桶的插入、查找、删除 2、 哈希桶的迭代器a.类型定义与成员变量b.构造函数c.解引用与比较操作d.递增操作…

LeetCode 每日一题 Day 102-108

2864. 最大二进制奇数 给你一个 二进制 字符串 s &#xff0c;其中至少包含一个 ‘1’ 。 你必须按某种方式 重新排列 字符串中的位&#xff0c;使得到的二进制数字是可以由该组合生成的 最大二进制奇数 。 以字符串形式&#xff0c;表示并返回可以由给定组合生成的最大二进…

【DL经典回顾】激活函数大汇总(二十五)(GEGLU附代码和详细公式)

激活函数大汇总&#xff08;二十五&#xff09;&#xff08;GEGLU附代码和详细公式&#xff09; 更多激活函数见激活函数大汇总列表 一、引言 欢迎来到我们深入探索神经网络核心组成部分——激活函数的系列博客。在人工智能的世界里&#xff0c;激活函数扮演着不可或缺的角色…

OxyPlot 导出图片

在 OxyPlot 官方文档 https://oxyplot.readthedocs.io/en/latest/export/index.html 中查看 这里用到的是导出到 PNG 文件的方法&#xff0c;不过用的 NuGet 包最新版&#xff08;2.1.0&#xff09;中&#xff0c;PngExporter 中并没有 Background 属性&#xff1a; 所以如果图…

【No.13】蓝桥杯二分查找|整数二分|实数二分|跳石头|M次方根|分巧克力(C++)

二分查找算法 知识点 二分查找原理讲解在单调递增序列 a 中查找 x 或 x 的后继在单调递增序列 a 中查找 x 或 x 的前驱 二分查找算法讲解 枚举查找即顺序查找&#xff0c; 实现原理是逐个比较数组 a[0:n-1] 中的元素&#xff0c;直到找到元素 x 或搜索整个数组后确定 x 不在…

node核心模块之Process

核心模块, 是node中自带的模块&#xff0c;可以在node中直接使用 目录 1. process(对象)1.1process.exit()1.2process.nextTick(callback: Function, ...args: any[]) 2.宿主对象2.1浏览器宿主对象window2.2node宿主对象global2.3ES标准下&#xff0c;全局对象的标准名globalT…

CPU的核心数与线程数对性能的影响是什么

我们经常在CPU的配置参数中看到核心数和线程数&#xff0c;那你知道CPU的核心数与线程数对性能的影响是什么呢&#xff1f;核心数和线程数是越多越好吗&#xff1f;要弄清楚这个问题&#xff0c;我们必须先了解以下几个基础知识。 什么是CPU核心&#xff1f; CPU核心&#xf…

【苍穹外卖Day06】异步请求与同步请求+Ajax+微信小程序上实现发送异步请求

什么是同步和异步 同步 在主线程上排队执行的任务&#xff0c;只有前一个任务执行完毕&#xff0c;才能继续执行下一个任务。也就是一旦调用开始&#xff0c;就必须等待其返回结果&#xff0c;程序的执行顺序和任务排列顺序一致。客户端必须等待服务器端的响应。在等待的期间客…

redis实战-黑马点评-优惠卷秒杀

全局ID生成器&#xff1a; 全局ID生成器&#xff1a;是一种再分布式系统下生成全局唯一的ID的工具。唯一性&#xff0c;高可用&#xff0c;高性能&#xff0c;安全性&#xff0c;递增性。 封装工具类生成全局ID: Component public class RedisIDWorker {ResourceStringRedisTe…