【运维工具】Ansible一款好用的自动化工具
Ansible一款好用的自动化工具
- 概述
- 一、基本概念与特点
- 二、核心组件
- 三、主要功能与应用场景
- 四、优缺点
- 如何使用
- 一、安装Ansible
- 二、配置Ansible
- 三、使用Ansible
- 四、注意事项
- Playbook语法详解
- 一、YAML文件的基本结构
- 二、Playbook的主要组成部分
- 三、Playbook示例
- 四、注意事项
概述
Ansible是一款开源的自动化工具,旨在简化IT操作的复杂性。以下是对Ansible的详细介绍:
一、基本概念与特点
- 开源与易用性:Ansible由Michael DeHaan创建,并于2012年发布,随后在2015年被Red Hat收购。它采用YAML(Yet Another Markup Language)作为其配置文件的格式,使得即使是非技术人员也能轻松上手。
- 无代理架构:Ansible通过SSH协议与远程主机通信,这意味着你不需要在目标主机上安装任何额外的代理或软件,这大大简化了部署和维护的复杂性。
- 模块化设计:Ansible拥有丰富的模块库,涵盖了从文件操作、软件包管理到系统服务管理等多种任务。这些模块可以轻松地组合和复用,极大地提高了工作效率。此外,Ansible还支持自定义模块,用户可以根据自己的需求编写特定的模块。
- 并发执行:Ansible能够同时对多个主机执行任务,这得益于其高效的并发执行机制。通过异步任务和并行执行,Ansible可以在短时间内完成大规模的自动化任务。
- 扩展性与集成性:Ansible的架构设计非常灵活,支持多种扩展方式。用户可以通过编写自定义模块、连接插件和回调插件来扩展Ansible的功能。此外,Ansible还支持与多种第三方工具集成,如Docker、Kubernetes等。
- 活跃的社区支持:Ansible拥有一个活跃的开源社区,社区成员贡献了大量的模块、插件和文档。这使得Ansible的功能不断丰富,用户可以轻松找到解决问题的方法。此外,Red Hat作为Ansible的母公司,也为Ansible提供了强大的商业支持。
二、核心组件
- 控制节点(Control Node):运行Ansible的机器,通常是管理员的工作站或服务器。控制节点需要Python环境,通常是Linux系统,但也可以是macOS。Windows系统不能作为控制节点。
- 目标节点(Managed Node):被Ansible管理的远程主机。目标节点不需要安装Ansible,只需要支持SSH和Python环境。
- 主机清单(Inventory):定义了目标节点的列表,可以是静态文件或动态生成的。主机清单是Ansible管理的基础,它定义了Ansible可以管理的主机和组。
- Playbook:描述自动化任务的YAML文件,包含一系列的任务(Tasks)。Playbooks是Ansible的核心功能之一,它们定义了Ansible如何配置和管理系统。
- 模块(Modules):Ansible的基本执行单元,用于执行具体的任务,如安装软件、配置服务等。
- 连接插件(Connection Plugins):定义了Ansible如何与管理节点通信。默认情况下,Ansible使用SSH连接插件,但也可以使用其他插件,如WinRM(用于Windows节点,但Ansible对Windows系统的支持相对有限)。
三、主要功能与应用场景
- 批量系统配置:Ansible可以用于批量配置服务器,包括操作系统设置、网络配置等。
- 批量程序部署:通过定义Playbooks,Ansible可以自动化地部署各种应用程序,从简单的Web服务器到复杂的多层应用架构。
- 任务编排:Ansible支持使用Playbooks来编排复杂的IT任务,如持续部署、零停机更新等。
- 日常运维任务自动化:如系统更新、日志清理、备份等日常运维任务都可以通过Ansible进行自动化。
四、优缺点
优点:
- 入门快速,简单上手。
- 基于Python语言,易于扩展和集成。
- 无代理架构,简化了部署和维护的复杂性。
- 可读性强,采用YAML格式的配置文件。
缺点:
- 对Windows系统的支持相对有限。
- 在某些情况下,运行效率可能较低,因为task任务是串行运行的,且多台设备同时运行一个task时有并发数限制。
综上所述,Ansible以其简单易用、无代理架构、强大的模块化设计、高效的并发执行、强大的扩展性和活跃的社区支持等特点,在IT自动化领域占据了重要地位。无论是初创公司还是大型企业,Ansible都能为其提供强大的自动化支持。
如何使用
Ansible是一个功能强大的自动化工具,它可以帮助管理服务器的配置状态、部署应用程序和执行各种系统管理任务。以下是Ansible的使用说明:
一、安装Ansible
-
在CentOS上安装:
- 首先,需要启用EPEL仓库,因为Ansible仓库默认不在yum仓库中。可以通过执行
yum install epel-release -y
来启用EPEL仓库。 - 然后,使用yum命令安装Ansible,执行
yum install ansible
。 - 安装完成后,可以使用
ansible --version
命令来验证Ansible是否成功安装。
- 首先,需要启用EPEL仓库,因为Ansible仓库默认不在yum仓库中。可以通过执行
-
在其他Linux发行版上安装:
- 可以参考Ansible的官方网站(https://www.ansible.com/)提供的安装指南,根据具体的Linux发行版选择合适的安装方法。
二、配置Ansible
-
编辑Ansible的配置文件:
- Ansible的配置文件通常位于
/etc/ansible/ansible.cfg
。 - 在配置文件中,可以设置一些全局参数,如默认的SSH用户、超时时间、日志文件等。
- Ansible的配置文件通常位于
-
设置主机清单文件:
- 主机清单文件用于定义要管理的目标主机,通常位于
/etc/ansible/hosts
。 - 在主机清单文件中,可以定义主机组和主机,以及与主机相关的变量。
- 主机清单文件用于定义要管理的目标主机,通常位于
三、使用Ansible
-
基本命令:
ansible [主机文件] -m [模块名称] -a "[模块参数]"
:这是Ansible的基本命令格式,用于在指定的主机上执行特定的模块。- 例如,要查看所有主机的日期,可以使用
ansible all -m command -a "date"
。
-
Playbook:
- Playbook是Ansible的核心概念,用于定义管理任务和配置。
- 一个Playbook包括一系列任务(tasks)、主机、变量和处理逻辑。
- Playbook文件通常使用YAML语法编写。
- 执行Playbook可以使用
ansible-playbook
命令,并指定Playbook文件的路径。
-
常用模块:
- command模块:用于在远程主机上执行命令。
- shell模块:类似于command模块,但功能更强大,可以执行复杂的shell命令。
- copy模块:用于在远程主机上复制文件。
- service模块:用于管理远程主机上的服务,如启动、停止、重启等。
- user模块:用于管理远程主机上的用户,如添加、删除、修改用户等。
-
实例:
- 查看时间:
ansible all -m command -a "date" -u root -k
(其中-u
指定用户,-k
提示输入密码)。 - 查看网卡信息:
ansible all -m shell -a "ifconfig|grep eth0" -u root -k
。 - 文件传送:
ansible all -m copy -a "src=/root/install.log dest=/root/install.log.1" -u root -k
。
- 查看时间:
四、注意事项
- 权限问题:在执行Ansible命令时,需要确保有足够的权限来访问目标主机和执行相应的操作。
- SSH配置:Ansible默认使用SSH协议来连接目标主机,因此需要确保SSH服务已经正确配置并运行。
- 模块选择:在选择使用哪个模块时,需要根据具体的需求和场景来选择合适的模块。
- Playbook编写:在编写Playbook时,需要注意YAML语法的正确性,以及任务之间的依赖关系和执行顺序。
通过以上步骤,您可以初步掌握Ansible的使用方法和一些常见操作。Ansible是一个功能强大的自动化工具,可以大大简化系统管理任务并提高效率。您可以根据自己的需要,进一步探索Ansible的更多功能和用法,以便更好地应用于实际工作中。
Playbook语法详解
Ansible Playbook的语法是基于YAML(YAML Ain’t Markup Language)格式的,它是一种易于阅读和编写的数据序列化格式,常用于配置文件。以下是对Ansible Playbook语法的详细说明:
一、YAML文件的基本结构
-
文件开始和结束标记:
- Playbook文件通常以
---
开始,表示YAML文档的开始。虽然结束标记...
是可选的,但通常省略。
- Playbook文件通常以
-
缩进:
- YAML使用空格进行缩进,表示层级关系。每个缩进级别通常由两个空格组成,不能使用Tab键。
- 同一级别的缩进空格数量必须相等,子项相对于父项要有缩进,平级关系保持相同缩进。
-
列表:
- 使用短横线(
-
)加空格表示列表项。 - 列表项下的子项使用相同的缩进级别。
- 使用短横线(
-
键值对:
- 键和值之间使用冒号(
:
)分隔,冒号后面必须有空格。
- 键和值之间使用冒号(
二、Playbook的主要组成部分
-
Play:
- Play是Playbook的基本单位,一个Playbook可以包含一个或多个Play。
- 每个Play以
- hosts:
开始,指定要执行该Play的主机组或主机。
-
Tasks:
- Tasks是Play中的任务列表,每个任务都是一个动作,用于在指定的主机上执行。
- Tasks列表以
- name:
开始,后面跟任务的名称(可选,但建议使用以便于识别)。 - 然后是具体的任务动作,通常使用Ansible的模块来定义。
-
Handlers:
- Handlers是用于处理特定事件的任务列表,当某个条件满足时(如文件内容发生变化),会触发相应的Handler。
- Handlers的语法与Tasks类似,但通常在Tasks中通过
notify:
关键字引用。
-
Variables(变量):
- 变量用于在Playbook中存储和引用数据。
- 可以在Play级别、Task级别或Role级别定义变量。
- 使用
vars:
关键字定义变量列表。
-
Roles:
- Roles是Ansible用于层次性、结构化地组织Playbook的一种方式。
- Roles包含变量、任务、处理器、模板和文件等,可以通过
include_role:
关键字在Playbook中引用。
三、Playbook示例
以下是一个简单的Ansible Playbook示例,用于在指定的主机组上安装并启动httpd服务:
---
- name: Install and start Apache HTTPDhosts: webremote_user: roottasks:- name: Ensure httpd package is presentyum:name: httpdstate: present- name: Ensure httpd is enabled and runningservice:name: httpdenabled: truestate: started
在这个示例中:
name:
指定了Play的名称。hosts:
指定了要执行该Play的主机组。remote_user:
指定了在远程主机上执行任务的用户。tasks:
列表包含了两个任务:- 第一个任务使用
yum
模块确保httpd包已安装。 - 第二个任务使用
service
模块确保httpd服务已启用并在运行。
- 第一个任务使用
四、注意事项
- 在编写Playbook时,请确保YAML语法的正确性,特别是缩进和空格的使用。
- Ansible对大小写敏感,因此请确保键和值的正确大小写。
- 使用
ansible-playbook
命令执行Playbook文件,并可以通过--syntax-check
选项进行语法检查。
通过以上说明和示例,您应该对Ansible Playbook的语法有了更深入的了解。在实际应用中,您可以根据具体需求和场景编写更复杂的Playbook来实现自动化管理任务。
相关文章:
【运维工具】Ansible一款好用的自动化工具
Ansible一款好用的自动化工具 概述一、基本概念与特点二、核心组件三、主要功能与应用场景四、优缺点 如何使用一、安装Ansible二、配置Ansible三、使用Ansible四、注意事项 Playbook语法详解一、YAML文件的基本结构二、Playbook的主要组成部分三、Playbook示例四、注意事项 概…...
4.Web安全——JavaScript基础
一、JavaScript是什么? JavaScript 是一种高级的、解释型的编程语言,广泛应用于网页开发和各种软件应用程序中。 二、为什么要学习JavaScript XSS(跨站脚本攻击)防范 XSS 是一种常见的 Web 安全漏洞,攻击者将恶意脚…...
mysql删除无用用户
1、删除不用的账户 (1) 查看当前已存在账户 mysql> select user,host,password from mysql.user; 或下面的命令 #mysql> sELECT DISTINCT CONCAT(User: ,user,,host,;) AS query FROM mysql.user; --------------------------------------- | query …...
2025元旦源码免费送
我们常常在当下感到时间慢,觉得未来遥远,但一旦回头看,时间已经悄然流逝。对于未来,尽管如此,也应该保持一种从容的态度,相信未来仍有许多可能性等待着我们。 免费获取源码。 更多内容敬请期待。如有需要可…...
静态库封装之ComFile类
ComFile.h /* author:EricsT data:20241024 version:V1.0 history:author data version contentEricsT 20241024 V1.0 新增ComFile类[common、FILE以及stream部分] */#pragma once#include <string> #include <fstream> using namespace std;class ComFile { publi…...
概率论与数理统计
概率论占比更多,三分之二左右 数理统计会少一些 事件之间的概率 ab互斥,不是ab独立 古典概型吃高中基础,考的不会很多 条件概率公式,要记 公式不要全记,很多有名称的公式是通过基础公式转换而来的 目的在于解决一…...
鸿蒙HarmonyOS开发:基于Swiper组件和自定义指示器实现多图片进度条轮播功能
文章目录 一、概述1、场景介绍2、技术选型 二、实现方案1、图片区域实现2、底部导航点设计3、手动切换 三、所有代码1、设置沉浸式2、外层Tabs效果3、ImageSwiper组件 四、效果展示 一、概述 在短视频平台上,经常可以见到多图片合集。它的特点是:由多张…...
django --递归查询评论
表数据 树状结构 action(methods(GET, ), detailFalse) def get_info_pinglun(self, request, *args, **kwargs) -> Response:根据评论id查所有回复params wenxian_pinglun_id --> 评论id;wenxian_pinglun_id self.request.GET.get(wenxian_pinglun_id)results se…...
kafka怎么保证顺序消费?
kafka怎么保证顺序消费? 1. 分区内的顺序保证2. 并发消费3. 实现顺序消费的策略4. 注意事项 kafka创建 topic 的时候没有指定分区数量,那么默认只会有一个分区。如果你想要创建一个具有多个分区的 topic,你可以在创建 topic 的命令中指定 --p…...
springboot原生socket通讯教程
需求背景 最近需要对接一些硬件设备,他们选择了socket通讯,并且使用的是私有化协议加密通讯。这种情况下适合原生的socket加解密解析,不适合NettySocket,这在开发中增加了难度。所有的代码都要手动去敲。如果你的只想通过socket传输一些数据,而且都是json的数据,例如聊天…...
革新排版机产线:一体式IO模块引领自动化高效控制新时代
在瞬息万变的制造业浪潮中,自动化与智能化已成为推动产业升级的关键力量。特别是在印刷行业,排版机的效率与精度直接关系到产品的质量与市场竞争力。近年来,随着技术的不断革新,明达技术MR20一体式IO模块凭借其高度集成、灵活配置…...
《深度学习梯度消失问题:原因与解决之道》
在深度学习的训练过程中,梯度消失是一个常见且棘手的问题,它会严重影响模型的训练效果和性能。以下是对该问题的原因分析与解决办法。 梯度消失问题的原因 首先是激活函数选择不当。像Sigmoid和Tanh这类传统激活函数,在输入值较大或较小时&…...
IP-MS常见问题(一)
用于IP-MS实验的样品,需要多少样品量? 建议使用约2107数量的细胞(约5 mg蛋白)进行IP实验。 其他类型的IP起始样品,如组织、细菌等可根据蛋白含量进行换算。 经过IP实验步骤或纯化富集的蛋白通常不超过10 μg…...
四种线程池的创建及任务提交
1. 线程池概述 1.1 线程池的定义 线程池是管理和控制线程使用的一种手段。它通过提前创建一定数量的线程,并将任务提交给这些线程执行,来实现资源的合理分配和任务的高效处理。 关键点: 线程复用:线程池在任务执行完毕后&#…...
【优选算法】查找总价格为目标值的两个商品
链接:LCR 179. 查找总价格为目标值的两个商品 - 力扣(LeetCode) 解法:利用单调性,使用双指针算法解决问题 1.先从小到大排序 2. sum > t : right--; sum < t : left; sum t : return class Solution {public…...
从零开始学架构——互联网架构的演进
1 技术演进 1.1 技术演进的动力 对于新技术,我们应该站在行业的角度上思考,哪些技术我们要采取,哪些技术我们不能用,投入成本过大会不会导致满盘皆输?市场、技术、管理三者组成的业务发展铁三角,任何一个…...
Linux 系统常见问题
SSH问题 SSH连接服务器时报错: ssh_exchange_identification: read: Connection reset by peer 报错信息: ssh_exchange_identification: read: Connection reset by peer可以通过ssh -p root -v查看连接时详情 解决方法: vi /etc/host…...
工厂模式与抽象工厂模式在Unity中的实际应用案例
一、实验目的 实践工厂模式和抽象工厂模式的实际应用。 创建一个小型的游戏场景,通过应用这些设计模式提升游戏的趣味性和可扩展性。 掌握在复杂场景中管理和使用不同类型的对象。 比较在实际游戏开发中不同设计模式的实际效果和应用场景。 学习如何进行简单的性…...
AI定义汽车/跨域融合/整车智能,汽车智能化2.0时代新机会来了
汽车智能化2.0,产业正在发生深度变革。 一方面,AI大模型开始在多个域同步赋能智能汽车,从智能座舱到智能驾驶,再到底盘域,AI大模型正在快速推动汽车变革为超级智能体,AI定义汽车时代开始来临。 另一方面&…...
QT----------多媒体
实现思路 多媒体模块功能概述: QT 的多媒体模块提供了丰富的功能,包括音频播放、录制、视频播放和摄像头操作等。 播放音频: 使用 QMediaPlayer 播放完整的音频文件。使用 QSoundEffect 播放简短的音效文件。 录制音频: 使用 QMe…...
[ubuntu-22.04]ubuntu不识别rtl8153 usb转网口
问题描述 ubuntu22.04插入rtl8153 usb转网口不识别 解决方案 安装依赖包 sudo apt-get install libelf-dev build-essential linux-headers-uname -r sudo apt-get install gcc-12 下载源码 Realtek USB FE / GBE / 2.5G / 5G Ethernet Family Controller Softwarehttps:/…...
洛谷P1525 [NOIP2010 提高组] 关押罪犯(种子并查集基础)
题目链接:P1525 [NOIP2010 提高组] 关押罪犯 - 洛谷 | 计算机科学教育新生态 题目难度:普及+/提高 题目描述: S 城现有两座监狱,一共关押着 N 名罪犯,编号分别为 1∼N,有m对罪犯,每对之间有仇恨值,问如何分配罪犯使得现 Z 市长要看到其中最大的矛盾值最小。 输入格…...
Android笔试面试题AI答之Android基础(11)
Android入门请看《Android应用开发项目式教程》,视频、源码、答疑,手把手教 文章目录 1.Android的权限有哪些?**1. 普通权限****常见普通权限** **2. 危险权限****权限分组****常见危险权限组及权限** **3. 特殊权限****常见特殊权限** **4. …...
【智行安全】基于Synaptics SL1680的AI疲劳驾驶检测方案
随著车载技术的快速进步,驾驶安全越来越受到重视,而疲劳驾驶是造成交通事故的重要原因之一。传统的驾驶监控技术因精度不足或反应迟缓,无法满足实时监测需求。因此,结合人工智能技术的疲劳驾驶检测系统成为行业新方向,…...
多分类的损失函数
在多分类任务中,常用的损失函数能够衡量模型输出的类别分布与目标类别之间的差异,帮助模型学习更准确的分类能力。以下是多分类任务中常用的损失函数: 1. 交叉熵损失(Cross-Entropy Loss) 公式: CrossEntropyLoss = − 1 N ∑ i =...
探索数据之美,Plotly引领可视化新风尚
在数据如潮的今天,如何精准捕捉信息的脉搏,让数据说话?Plotly,这款强大的数据可视化工具,正以其卓越的性能和丰富的功能,成为数据分析师、科学家及工程师们的得力助手。 Plotly不仅仅是一个绘图库…...
青少年编程与数学 02-006 前端开发框架VUE 02课题、创建工程
青少年编程与数学 02-006 前端开发框架VUE 02课题、创建工程 一、开发环境(一)WebStorm安装WebStorm配置WebStorm安装中文语言包安装 Translation插件 (二)Node.jsWindows系统安装Node.jsLinux系统安装Node.jsNode.js与Vue.js的关…...
高并发场景下的秒杀系统架构设计与实现
引言 秒杀系统是一种高并发场景的典型应用,广泛存在于电商平台、抢票系统和促销活动中。秒杀活动的特点是短时间内吸引大量用户同时访问并尝试抢购商品,这对系统的高并发处理能力、稳定性和用户体验提出了极高的要求。 在秒杀系统中,常见的…...
局域网中单台交换机VLAN应用
网络拓扑 其中交换机接口类型都为access接口。 Ethernet 0/0/1 VLAN ID为10 Ethernet 0/0/2 VLAN ID为10 Ethernet 0/0/5 VLAN ID为20 Ethernet 0/0/6 VLAN ID为20 Host-1 ip为192.168.64.11/24 Host-2 ip为192.168.64.12/24 Host-3 ip为192.168.64.21/24 Host-4 ip为192.168…...
UNI-APP_i18n国际化引入
官方文档:https://uniapp.dcloud.net.cn/tutorial/i18n.html vue2中使用 1. 新建文件 locale/index.js import en from ./en.json import zhHans from ./zh-Hans.json import zhHant from ./zh-Hant.json const messages {en,zh-Hans: zhHans,zh-Hant: zhHant }…...
纯血鸿蒙ArkUI选项卡布局详解
当页面信息较多的时候,为了让用户能够聚焦于当前显示的内容,需要对页面的内容进行分类,提高页面空间利用率。Tabs组件可以在一个页面内实现快速的视图内容切换,一方面提升查找信息的效率,另一方面精简用户单词获取到的…...
从0开始的opencv之旅(1)cv::Mat的使用
目录 Mat 存储方法 创建一个指定像素方式的图像。 尽管我们完全可以把cv::Mat当作一个黑盒,但是笔者的建议是仍然要深入理解和学习cv::Mat自身的构造逻辑和存储原理,这样在查找问题,或者是遇到一些奇奇怪怪的图像显示问题的时候能够快速的想…...
uniapp 微信小程序开发使用高德地图、腾讯地图
一、高德地图 1.注册高德地图开放平台账号 (1)创建应用 这个key 第3步骤,配置到项目中locationGps.js 2.下载高德地图微信小程序插件 (1)下载地址 高德地图API | 微信小程序插件 (2)引入项目…...
Activation Functions
Chapter4:Activation Functions 声明:本篇博客笔记来源于《Neural Networks from scratch in Python》,作者的youtube 其实关于神经网络的入门博主已经写过几篇了,这里就不再赘述,附上链接。 1.一文窥见神经网络 2.神经…...
【TextIn—智能文档解析与DocFlow票据AI自动化处理:赋能企业文档数字化管理与数据治理的双重利器】
TextIn—智能文档解析与票据AI自动化处理:赋能企业文档数字化管理与数据治理的双重利器 在数据驱动的时代,企业面临的挑战不仅在于海量数据的整理和响应速度的提高,更在于如何有效管理和利用这些日益增长的海量信息。尤其是在信息日趋多样…...
Quartus In-System Sources and Probes Editor 的使用说明
文章目录 前言使用说明参考资料 前言 Quartus 提供了 In-System Sources and Probes Editor 调试工具,通过 JTAG 接口使用该工具可以驱动和采样内部节点的逻辑值。即通过 Sources 功能来驱动 FPGA 内部信号,通过 Probes 功能来探测内部节点的逻辑值。在…...
【视觉SLAM:八、后端Ⅱ】
视觉SLAM后端的核心任务是估计相机的轨迹和场景的三维结构,这需要解决非线性优化问题。为了保证效率和精度,后端主要依赖以下两种方法:滑动窗口法(基于局部优化的策略)和位姿图优化(基于全局优化的策略&…...
【大模型实战篇】LLaMA Factory微调ChatGLM-4-9B模型
1. 背景介绍 虽然现在大模型微调的文章很多,但纸上得来终觉浅,大模型微调的体感还是需要自己亲自上手实操过,才能有一些自己的感悟和直觉。这次我们选择使用llama_factory来微调chatglm-4-9B大模型。 之前微调我们是用两块3090GPU显卡&…...
多个DataV遍历生成
DataV是数据可视化工具 与Echart类似 相对Echart图标边框 装饰可选官网DataV 安装 npm install kjgl77/datav-vue3main.ts import DataVVue3 from kjgl77/datav-vue3 app.use(DataVVue3)多个DataV遍历生成 Vue3viteDataV为例:<template><div w50rem h25rem flex&qu…...
【JavaWeb后端学习笔记】MySQL的常用函数(字符串函数,数值函数,日期函数,流程函数)
MySQL函数 1、字符串函数2、数值函数3、日期函数4、流程函数 1、字符串函数 函数说明concat(s1, s2, …, sn)字符串拼接,将 s1, s2, …, sn 拼接成一个字符串lower(str)将字符串 str 全部转为小写upper(str)将字符串 str 全部转为大写lpad(str, n, pad)左填充&…...
开源AI智能名片2+1链动模式O2O商城小程序在流量留存与转化中的深度应用与优化策略
摘要 在数字化时代,企业面临的市场竞争日益激烈,传统的营销手段已难以满足当前市场的多样化需求。开源AI智能名片21链动模式O2O商城小程序作为一种创新的数字化营销工具,凭借其开源特性、AI智能名片功能、21链动模式以及O2O商城小程序的优势…...
API多并发识别、C#文字识别
在当今数字化转型的浪潮中,信息处理的速度和准确性成为了企业在市场中立足的关键因素之一。特别是在大数据时代,海量的信息需要被快速、精确的解析和利用,因此,这正是文字识别技术大放异彩的舞台。翔云平台针对市场需求࿰…...
JVM和异常
Java 虚拟机(Java Virtual Machine,简称 JVM) 概述 JVM 是运行 Java 字节码的虚拟计算机,它是 Java 程序能够实现 “一次编写,到处运行(Write Once, Run Anywhere)” 特性的关键所在。Java 程…...
设计模式 创建型 单例模式(Singleton Pattern)与 常见技术框架应用 解析
单例模式(Singleton Pattern)是一种创建型设计模式,旨在确保某个类在应用程序的生命周期内只有一个实例,并提供一个全局访问点来获取该实例。这种设计模式在需要控制资源访问、避免频繁创建和销毁对象的场景中尤为有用。 一、核心…...
idea( 2022.3.2)打包报错总结
一 报错 class lombok.javac.apt.LombokProcessor (in unnamed module 0x4fe64d23) cannot access class com.sun.tools.javac.processing.JavacProcessingEnvironment (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.processing …...
基于SpringBoot在线竞拍平台系统功能实现十一
## 一、前言介绍:1.1 项目摘要 随着网络技术的飞速发展和电子商务的普及,竞拍系统作为一种新型的在线交易方式,已经逐渐深入到人们的日常生活中。传统的拍卖活动需要耗费大量的人力、物力和时间,从组织拍卖、宣传、报名、竞拍到成…...
kubernetes学习-Service
kubernetes学习-Service 1. Service说明2. 功能3.Service类型3.1 NodePort3.1.1 创建web-service.yaml3.1.2 创建web-pod.yaml3.1.3 部署3.1.4 验证 3.2 ClusterIP3.2.1 创建web-clusterIp-service.yaml3.2.2 创建web-clusterIp-pod.yaml3.2.3 部署3.2.4 验证 3.3 LoadBalancer…...
【bluedroid】A2dp Source播放流程源码分析(4)
接上集分析:【bluedroid】A2dp Source播放流程源码分析(3)-CSDN博客 蓝牙和AUDIO之间的接口 蓝牙和audio之间的通信是通过socket,管理socket中的文件是UIPC,UIPC管理两条socket。 A2DP_CTRL_PATH /data/misc/bluedroid/.a2dp_ctrl A2DP_DATA_PATH /data/misc/bluedroid…...
vue3基础,小白从入门到精通
目录 一、vue.js 简述 二、 下载 vue.esm-browser.js 这个模块文件 三、创建第一个Vue程序 3.1创建代码过程 四、v-on 五、循环遍历(v-for) 六、判断语法(v-if和v-show) 6.1节点的动态属性v-bind 6.2 用v-bind实现CSS样式绑定 一、vue.js 简述 Vue 3 是一款流行的 J…...
Go 如何优雅退出进程
优雅退出设计步骤 在 Go 项目中,设计优雅退出(Graceful Shutdown)时,通常需要确保在收到退出信号时,程序能够安全地清理资源并优雅地退出。以下是常见的优雅退出设计步骤: 步骤 1:创建 contex…...