自动化运维工具Ansible教程(一)【入门篇】

news2024/11/18 7:43:53

文章目录

  • 前言
  • Ansible 入门到精通
    • 入门篇
    • 进阶篇
    • 精通篇
    • 入门篇
      • 1. Ansible 简介
      • 2. 安装 Ansible
        • 1. 通过包管理器安装:
        • 2. 通过源码安装:
      • 3. Ansible 的基本概念和核心组件
      • 4. 编写和运行第一个 Ansible Playbook
      • 5. 主机清单和组织结构
        • 主机清单
        • 组织结构
      • 6. Ansible 常用模块和任务
      • 7. Ansible 变量和模板
      • 8. Ansible 条件和循环
  • 参考文档

在这里插入图片描述

前言

ansible 学习大纲
在这里插入图片描述
Ansible 是一个开源的自动化工具,用于配置管理、应用部署和任务执行。它以简单、可读性强的 YAML 格式的 Playbooks 为基础,使得自动化任务变得简单、可维护和可扩展。

  1. 简单易用:Ansible 的设计目标之一是简单易用。它使用 YAML 语法定义任务和配置,无需编写复杂的脚本或编程代码。初学者可以快速上手,同时也适用于复杂的自动化需求。

  2. 无代理:Ansible 使用 SSH 协议进行远程连接和执行任务,无需在远程主机上安装任何代理程序。这使得部署和管理变得简单,同时减少了对目标主机的依赖和配置要求。

  3. 基于模块化:Ansible 基于模块化的架构,提供了丰富的模块来管理各种不同类型的系统、服务和应用。这些模块可以执行各种任务,如安装软件包、配置文件、启动服务等。

  4. 声明式语法:Ansible Playbooks 使用声明式语法描述所需的状态和配置,而不是编写特定的步骤和命令。这使得配置管理和自动化任务的维护更加直观和可读性强。

  5. 可扩展性:Ansible 可以轻松扩展以适应不同规模和复杂度的环境。它支持分组管理、变量管理、角色和插件等功能,可以构建复杂的自动化流程和组织结构。

  6. 强大的生态系统:Ansible 拥有庞大的社区和活跃的贡献者,提供了大量的模块、角色和插件。Ansible Galaxy 是一个社区驱动的集市,提供了现成的角色和模块,可用于加速和共享自动化任务的开发。

Ansible 的应用场景广泛,可以用于服务器配置管理、应用部署、云基础设施管理、网络设备配置、持续集成/持续部署 (CI/CD) 等。它的简单性、可读性和可扩展性使得 Ansible 成为许多组织和开发团队的首选自动化工具。

Ansible 入门到精通

入门篇

  1. Ansible 简介
  2. 安装 Ansible
  3. Ansible 的基本概念和核心组件
  4. 编写和运行第一个 Ansible Playbook
  5. 主机清单和组织结构
  6. Ansible 常用模块和任务
  7. Ansible 变量和模板
  8. Ansible 条件和循环

进阶篇

  1. Ansible 的高级主题(例如:角色、动态清单、变量管理等)
  2. 使用 Ansible Vault 进行加密和解密
  3. Ansible 远程执行和连接方式
  4. 高级 Ansible Playbook 技巧
  5. 使用 Ansible 进行系统配置和部署
  6. Ansible 的容器和云集成
  7. Ansible 自动化测试和检查
  8. Ansible 运维和故障排除

精通篇

  1. Ansible 在企业级环境中的应用和扩展
  2. Ansible 与其他自动化工具的集成
  3. Ansible 最佳实践和实际案例分析
  4. Ansible 性能优化和容错机制
  5. Ansible 社区和资源

入门篇

1. Ansible 简介

2. 安装 Ansible

安装 Ansible 主要有两种方式:通过包管理器和源码安装。

1. 通过包管理器安装:

对于基于 Debian 的系统(如 Ubuntu),可以使用 apt-get 命令来安装 Ansible:

sudo apt-get update
sudo apt-get install software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt-get install ansible

对于基于 Red Hat 的系统(如 CentOS),可以使用 yum 命令来安装 Ansible:

sudo yum install epel-release
sudo yum install ansible

2. 通过源码安装:

如果你需要使用 Ansible 的最新版本,或者你的系统没有预包装的 Ansible,你可以选择通过源码安装。首先,你需要安装一些必要的依赖,然后从 GitHub 上克隆 Ansible 的源码,并安装:

sudo apt-get install git python3-pip
git clone https://github.com/ansible/ansible.git
cd ansible
sudo pip3 install .

安装完成后,你可以使用 ansible --version 命令来检查 Ansible 是否已经成功安装,以及其版本信息。

3. Ansible 的基本概念和核心组件

在这里插入图片描述

Ansible的一些基本概念和核心组件:

  1. 主机清单(Inventory):主机清单是一个定义可管理主机的文件或文件集合。它指定了Ansible应该在哪些主机上执行任务。主机清单可以是静态的(静态清单文件)或动态的(通过外部脚本或插件生成)。

  2. Playbook:Playbook是一个YAML格式的文件,用于定义Ansible的配置、部署和管理任务。它由一个或多个Play(任务集合)组成,每个Play定义了一组在一组主机上执行的任务。

  3. 模块(Modules):模块是Ansible的基本执行单元,用于执行具体的任务。Ansible提供了丰富的模块库,用于管理文件、安装软件包、配置服务等各种操作。

  4. 任务(Tasks):任务是在Playbook中定义的单个操作步骤。每个任务通常使用一个模块来执行特定的操作,例如安装软件包、复制文件、启动服务等。

  5. 角色(Roles):角色是一种组织和复用Playbook的机制。它将相关的任务、变量和文件组织到单个目录结构中,使得管理和维护复杂的配置变得更加容易。

  6. 变量(Variables):变量用于存储和传递数据,以在Playbook中进行配置和任务执行。变量可以在不同的层次(全局、主机组、主机、角色等)进行定义和使用。

  7. 模板(Templates):模板是一种允许在文件复制过程中进行动态渲染的机制。它使用Jinja2模板引擎,可以根据变量和条件生成最终的配置文件。

  8. 插件(Plugins):插件是可扩展Ansible功能的组件。它们可以修改或扩展Ansible的核心行为,包括主机清单解析、任务执行、变量处理等。

  9. 控制节点(Control Node):控制节点是运行Ansible的主机或服务器。它是执行Ansible命令和Playbook的机器,与目标主机通过SSH建立连接并进行管理操作。

这些是Ansible的一些基本概念和核心组件。通过理解这些概念,您可以开始编写和执行Ansible Playbook,实现自动化的系统配置和管理

4. 编写和运行第一个 Ansible Playbook

在这里插入图片描述

要编写一个部署包含 Spring Boot 项目、Redis、MySQL 和 Nginx 的 Ansible Playbook, 可以按照以下步骤进行操作:

  1. 主机清单(Host Inventory)
    指定你要在其中部署和管理应用程序的主机列表。它是一个文本文件,其中包含主机的名称或 IP 地址,并按组织和分类进行分组。主机清单告诉 Ansible 在哪些主机上执行特定的任务或角色。
    主机清单文件通常具有 .ini.yaml 扩展名
    我们有两个组 [web_servers][database_servers],每个组中列出了相应主机的名称和 IP 地址。你需要根据你的实际部署环境和需求来创建和维护主机清单文件。
[web_servers]
web1 ansible_host=192.168.1.10
web2 ansible_host=192.168.1.11

[database_servers]
db1 ansible_host=192.168.1.20
db2 ansible_host=192.168.1.21
  1. 创建一个名为 deploy.yml 的 Ansible Playbook 文件。
    在这个 Playbook 中,我们首先定义了一些变量,例如项目名称、项目版本和 MySQL 的 root 密码。你可以根据实际情况修改这些变量的值。
    接下来,我们列出了一系列任务:
  • 更新 apt 缓存
  • 安装 Java Development Kit (JDK)
  • 安装 Redis
  • 安装 MySQL
  • 对 MySQL 进行安全设置
  • 安装 Nginx
  • 配置 Nginx
  • 部署 Spring Boot 项目
  • 启动 Spring Boot 项目
---
- name: Deploy Spring Boot Project
 hosts: 172.16.57.56 # 替换为你的目标主机清单

 vars:
   project_name: icepip-first-project # 项目名称
   project_version: 1.0.0  # 项目版本
   mysql_root_password: your_mysql_root_password  # MySQL root 密码

 tasks:
   - name: Update apt cache  # 更新 apt 缓存
     become: yes
     apt:
       update_cache: yes

   - name: Install Java Development Kit (JDK)  # 安装 Java Development Kit (JDK)
     become: yes
     apt:
       name: openjdk-11-jdk
       state: present

   - name: Install Redis  # 安装 Redis
     become: yes
     apt:
       name: redis-server
       state: present

   - name: Install MySQL  # 安装 MySQL
     become: yes
     apt:
       name: mysql-server
       state: present

   - name: Secure MySQL installation  # 安全设置 MySQL 安装
     become: yes
     mysql_user:
       name: root
       password: "{{ mysql_root_password }}"
       login_unix_socket: /var/run/mysqld/mysqld.sock
       host: localhost
       check_implicit_admin: yes
       login_user: root
       login_password: ""
       priv: "*.*:ALL,GRANT"
       state: present

   - name: Install Nginx  # 安装 Nginx
     become: yes
     apt:
       name: nginx
       state: present

   - name: Configure Nginx  # 配置 Nginx
     become: yes
     template:
       src: nginx.conf.j2
       dest: /etc/nginx/nginx.conf
       validate: /usr/sbin/nginx -t
     notify:
       - Restart Nginx

   - name: Deploy Spring Boot project  # 部署 Spring Boot 项目
     become: yes
     copy:
       src: target/{{ project_name }}-{{ project_version }}.jar
       dest: /opt/{{ project_name }}.jar

   - name: Start Spring Boot project  # 启动 Spring Boot 项目
     become: yes
     shell: |
       nohup java -jar /opt/{{ project_name }}.jar > /dev/null 2>&1 &

 handlers:
   - name: Restart Nginx  # 重启 Nginx
     become: yes
     service:
       name: nginx
       state: restarted

Configure Nginx 任务中,使用了一个名为 nginx.conf.j2 的模板文件来配置 Nginx。你需要创建这个模板文件并定义适合你的项目的 Nginx 配置。定义了一个名为 Restart Nginx 的处理程序,在配置更改时重新启动 Nginx 服务。

  1. 创建一个名为 nginx.conf.j2 的模板文件
    Nginx 配置了一个监听端口为 80 的服务器块,将请求代理到运行在本地的 Spring Boot 项目的 8080 端口。
worker_processes auto;
events {
  worker_connections 1024;
}
http {
  server {
    listen 80;
    server_name your_domain;

    location / {
      proxy_pass http://localhost:8080;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
    }
  }
}
  1. 保存并关闭 deploy.ymlnginx.conf.j2 文件。

  2. 运行 Ansible Playbook:

		ansible-playbook deploy.yml

Ansible 将连接到目标主机并按照 Playbook中定义的任务顺序执行操作。它会安装和配置 Redis、MySQL 和 Nginx,然后部署和启动 Spring Boot 项目。

5. 主机清单和组织结构

主机清单(Host Inventory)和组织结构在 Ansible 中起着关键的作用。它们用于定义和组织要管理的主机以及如何对它们进行分类和分组。

主机清单

  1. 主机清单文件:主机清单文件是一个文本文件,其中列出了要在 Ansible 中管理的主机的信息。它可以包含主机名、IP 地址、连接信息和其他变量。主机清单文件可以使用 .ini.yaml 格式编写。

  2. 主机组:主机组是一种将主机按逻辑或功能进行分组的方式。你可以基于不同的标准(如角色、地理位置、环境等)将主机分成不同的组。这样,你可以根据需要在组级别或单个主机级别上执行任务。

  3. 组变量:组变量是应用于特定主机组的变量。它们以组的名称作为键,可以在主机清单文件中定义。通过组变量,你可以在一次性中为一组主机设置共享的属性和配置。

  4. 主机变量:主机变量是应用于单个主机的变量。它们以主机的名称作为键,可以在主机清单文件中定义。主机变量允许你为特定主机设置独立的属性和配置。

  5. 动态主机清单:动态主机清单是一种动态生成主机清单的机制。它可以从外部源(如云提供商、配置管理数据库等)获取主机信息,并在运行时构建主机清单。这对于动态环境中的自动化和弹性部署非常有用。

通过合理组织和使用主机清单和组织结构,你可以更好地管理和扩展 Ansible 部署。你可以根据你的项目需求和部署架构,灵活地定义主机组、变量和组织结构,以便有效地执行任务和角色。

在Ansible中,主机清单是一个配置文件,它包含了被Ansible管理的所有主机的列表。主机清单通常用于制定哪些主机应该接受哪些特定的命令和配置。

主机清单的基本结构是这样的:

在这个例子中,web_serversdatabase_servers就是组(组名),

[web_servers]
web1 ansible_host=192.168.1.10
web2 ansible_host=192.168.1.11

[database_servers]
db1 ansible_host=192.168.1.20
db2 ansible_host=192.168.1.21

组织结构

Ansible的组织结构是通过主机清单来管理的,可以构建高级别的抽象结构,这意味着可以有子组、父组,甚至可以有嵌套的子组。 atlantaraleigh是子组;southeast是父组,它包含了两个子组(atlanta, raleigh);usa是一个更大的父组,包含了更多的子组。同时,在[southeast:vars]下定义的变量(some_server,halon_system_timeout,self_destruct_countdown,escape_pods) 将对southeast组以及其下的所有子组和主机生效。

[atlanta]
host1
host2

[raleigh]
host3
host4

[southeast:children]
atlanta
raleigh

[southeast:vars]
some_server=foo.southeast.example.com
halon_system_timeout=30
self_destruct_countdown=60
escape_pods=2

[usa:children]
southeast
northeast
southwest
northwest

这种组织结构的设计使得Ansible能够非常轻松地管理大型的网络结构。你可以简单地通过改变组或父组的配置来改变一大组机器的行为。

6. Ansible 常用模块和任务

Ansible 提供了丰富的模块来执行各种任务。下面是一些常用的 Ansible 模块和任务的示例:

  1. apt 模块:用于管理基于 APT(Debian、Ubuntu)的软件包。可以安装、升级、移除软件包,并更新本地的软件包缓存。
- name: Install nginx
  apt:
    name: nginx
    state: present
  1. yum 模块:用于管理基于 YUM(Red Hat、CentOS)的软件包。可以安装、升级、移除软件包,以及管理软件包仓库。
- name: Install httpd
  yum:
    name: httpd
    state: present
  1. copy 模块:用于将文件从控制节点复制到远程主机。可以指定源文件路径和目标路径,并设置文件权限和所有权。
- name: Copy configuration file
  copy:
    src: /path/to/source/file.conf
    dest: /etc/destination/file.conf
    owner: root
    group: root
    mode: 0644
  1. template 模块:用于使用模板引擎生成文件,并将其复制到远程主机。可以使用变量和条件逻辑来自定义生成的文件。
- name: Generate configuration file from template
  template:
    src: /path/to/template.conf.j2
    dest: /etc/destination/file.conf
    owner: root
    group: root
    mode: 0644
  1. service 模块:用于管理系统服务的状态。可以启动、停止、重新启动服务,并设置服务的启动状态。
- name: Start nginx service
  service:
    name: nginx
    state: started
  1. command 模块:用于在远程主机上执行命令并获取输出结果。
- name: Execute a command
  command: ls -l /path/to/directory
  register: result

- name: Print command output
  debug:
    var: result.stdout

这只是一小部分常用的 Ansible 模块和任务示例。Ansible 还提供了许多其他模块,涵盖了各种任务,包括文件操作、用户管理、数据库操作、云资源管理等。你可以根据具体需求选择适当的模块和任务,构建自己的 Ansible Playbooks。

7. Ansible 变量和模板

在 Ansible 中,变量和模板的定义可以在不同的位置和方式进行。以下是几种常见的定义方式:

1. 主机清单文件中定义变量: 可以在主机清单文件中为每个主机或主机组定义变量。这些变量将应用于特定的主机或主机组,可以在 Playbooks 和模板中使用。主机变量使用 host_varsgroup_vars 目录来组织,文件名与主机名或组名相对应。

示例(位于 host_vars 目录下的文件):

# host_vars/web1.yml
http_port: 8080

示例(位于 group_vars 目录下的文件):

# group_vars/web_servers.yml
http_port: 8080

2. Playbook 文件中定义变量: 可以在 Playbook 文件中定义变量,这些变量将应用于整个 Playbook 中的任务。可以使用 vars 关键字定义变量。

示例:

- name: Configure web server
  hosts: web_servers
  vars:
    http_port: 8080
  tasks:
    - name: Install and configure web server
      ...

3. 命令行中定义变量: 可以在运行 Ansible 命令时通过命令行参数定义变量。可以使用 -e--extra-vars 参数来传递变量。

示例:

ansible-playbook playbook.yml -e "http_port=8080"

4. 注册变量: 在任务执行期间,可以使用 register 关键字将命令执行的结果保存到变量中。注册变量可以在后续任务中使用。

示例:

- name: Execute a command
  command: ls -l /path/to/directory
  register: result

- name: Print command output
  debug:
    var: result.stdout

5. 模板文件中定义变量: 可以在模板文件中使用变量占位符,并在 Playbook 中通过 template 模块将变量值传递给模板。

示例模板文件 template.conf.j2

# Configuration file
server_ip = {{ ansible_host }}
http_port = {{ http_port }}

在 Playbook 中使用 template 模块:

- name: Generate configuration file from template
  template:
    src: template.conf.j2
    dest: /etc/destination/file.conf
    owner: root
    group: root
    mode: 0644

8. Ansible 条件和循环

在 Ansible 中,条件和循环用于控制任务的执行流程和处理复杂的配置情况。以下是 Ansible 中条件和循环的用法和示例:

条件

使用条件语句可以根据不同的条件来执行或跳过任务。

  1. when 关键字:when 关键字允许你在任务级别使用条件判断。任务只有在条件为真时才会执行。
- name: Install package if OS is CentOS 7
  yum:
    name: package_name
    state: present
  when: ansible_distribution == 'CentOS' and ansible_distribution_major_version == '7'
  1. failed_when 关键字:failed_when 关键字允许你在任务执行失败时自定义失败的条件。
- name: Execute a command and ignore non-zero return code
  command: some_command
  failed_when: false
  1. changed_when 关键字:changed_when 关键字允许你自定义任务是否被标记为已更改的条件。
- name: Execute a command and always report as changed
  command: some_command
  changed_when: true

循环

使用循环结构可以对列表、字典等数据进行迭代,执行重复的任务。

  1. with_items 关键字:with_items 关键字用于循环遍历列表。
- name: Create multiple users
  user:
    name: "{{ item }}"
    state: present
  with_items:
    - user1
    - user2
    - user3
  1. loop 关键字:loop 关键字用于循环遍历任意可迭代对象,包括列表、字典等。
- name: Create multiple users
  user:
    name: "{{ item }}"
    state: present
  loop:
    - user1
    - user2
    - user3
  1. with_dict 关键字:with_dict 关键字用于循环遍历字典。
- name: Set multiple facts
  set_fact:
    "{{ item.key }}": "{{ item.value }}"
  with_dict:
    key1: value1
    key2: value2
    key3: value3
  1. with_fileglob 关键字:with_fileglob 关键字用于循环遍历匹配指定文件模式的文件列表。
- name: Copy files
  copy:
    src: "{{ item }}"
    dest: /path/to/destination/
  with_fileglob:
    - /path/to/files/*.txt
    - /path/to/files/*.conf

参考文档

  1. Ansible 官方文档 ↗: Ansible 官方文档是学习 Ansible 的最全面和权威的资源。它包含了 Ansible 的所有功能、模块和概念的详细说明,并提供示例和最佳实践指南。

  2. Ansible 官方示例 ↗: Ansible 官方示例库包含了一系列使用 Ansible 的示例 Playbooks,涵盖了各种常见的用例和场景。这些示例可以帮助你学习和理解如何使用 Ansible 进行自动化配置和部署。

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

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

相关文章

好用免费的Chat GPT(亲测有用)

1、MindLink麦灵 MindLink麦灵 点进登录后 普通用户可以提问100次 2、你问我答 你问我答 无限次数的。 3、灵感 灵感 点击链接后会提示你如何下载使用。 这个有win版和mac版,点击登陆后,每日都会有30次GPT3/3.5的提问。 4、WebTab 在浏览器插件中…

如何加载卫星影像全国一张图?

我们在“你的家乡清晰可见,全国卫星影像100%覆盖!”一文中,为你分享了一个可以十分方便地查看家乡高清卫星影像的方法。 该卫星影像数据源由长光卫星提供,你可以通过水经微图PC端或Web端查看,也可以将该卫星影像加载到…

指针跃动——客户运营服务中心上线了!

指针跃动——客户运营服务中心上线了! ——打通客户运营服务全链路—— 随着全国代驾业务需求的不断增长,“指针跃动”宣布:指针跃动——客户运营服务中心上线了! 以新的思维方式来看待客户服务,利用人工智能、大数据等…

Flyway-数据库管理工具使用与命令

工作流程 应用程序完成数据库连接池的建立后,flyway自动运行初次使用,flyway会创建一个flyway_schema_history表,用于记录sql执行记录flyway会扫描项目指定路径(默认classpath: db/migration)下的所有sql脚本&#xf…

Magisk V26.3卡刷包APK最新版下载-支持payload.bin自动维补ROOT

从magisk V26.0开始,topjohnwu作者更新的比较快,从26.0.-26.3各种版本快速迭代 今天又更新到了最新的26.3版本。从界面来看,和之前没什么不同,最大的可能就是功能 上的新增。从官方日志中,我们可以清晰的看到26.3版本三…

ES6之 变量的解构赋值 ➕ 扩展运算符(…)

ES6之 变量的解构赋值 ➕ 扩展运算符 1. 变量的解构赋值2. 扩展运算符2.1 简介(官网)2.2 应用例子2.2.1 简单例子12.2.2 数组拷贝2.2.3 连接多个数组2.2.4 拷贝对象(多层和多维数组一样)2.2.5 合并对象2.2.6 关于展开对象&#xf…

Python爬虫数据存哪里|数据存储到文件的几种方式

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 爬虫请求解析后的数据,需要保存下来,才能进行下一步的处理,一般保存数据的方式有如下几种: 文件:txt、csv、excel、json等,保存数据量小。 关系型数据库…

【代码分享不会用?玩转Git,跟上节奏 快上车!】

一、安装 Git 客户端 这里为大家提供了windows版的Git客户端以及安装图文详解文档。百度网盘: https://pan.baidu.com/s/1CDu0Ke199pt3Ysv-QtWObA 提取码:8888 如果过期了请留言联系我。 二、注册码云账号 打开码云网站:https://gitee.com…

在Git中将本地分支推送到远程仓库

这里很明显 我git云端只有一个master分支 然后 我在本地创建了一个develop分支 然后 现在我想将他放在云端 首先 我们要执行 git checkout -b develop将本地切换到 develop 分支上 因为我这里已经选择的就是了 就不需要了 然后我们执行 git push origin develop这样 刷新云…

基于Java+SpringBoot+Vue前后端分离小学生身体素质测评管理系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

高压放大器在机械制造领域的应用有哪些

在机械制造领域,高压放大器扮演着至关重要的角色。它们被广泛应用于各种机械设备和系统中,提供高压力、高精度的电信号放大。下面安泰电子将详细介绍高压放大器在机械制造领域的几个关键应用。 材料测试和强度试验 高压放大器广泛应用于材料测试和强度试…

手游联运平台都具备哪些功能?

手游联运平台是为了方便游戏发行商进行游戏发行和运营而提供的一种服务平台,具备多种功能以支持游戏在不同渠道上的推广和运营。以下是一些手游联运平台通常具备的功能: 多渠道发行:提供多种渠道,如应用商店、社交媒体、合作伙伴等…

回归与聚类算法系列②:线性回归

目录 1、定义与公式 2、应用场景 3、特征与目标的关系分析 线性回归的损失函数 为什么需要损失函数 损失函数 ⭐如何减少损失 4、优化算法 正规方程 梯度下降 优化动态图 偏导 正规方程和梯度下降比较 5、优化方法GD、SGD、SAG 6、⭐线性回归API 7、实例&#…

Deep Java Library(五)DJLServing java client demo

1.工具类HttpUtils package com.lihao.client; import java.io.IOException; import java.net.URI; import java.net.URLEncoder; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.nio.charset.Standard…

2023 年高教社杯全国大学生数学建模竞赛题目 A 题 定日镜场的优化设计

A 题 定日镜场的优化设计 构建以新能源为主体的新型电力系统,是我国实现“碳达峰”“碳中和”目标的一项重要措施。塔式太阳能光热发电是一种低碳环保的新型清洁能源技术[1]。 定日镜是塔式太阳能光热发电站(以下简称塔式电站)收集太阳能的基…

WorkPlus Meet白板和文档共享功能上线,私有化视频会议全新升级

在迅猛发展的数字化时代,私有化视频会议成为企业高效沟通和协作的关键工具。WorkPlus Meet作为领先品牌,倾力打造私有化视频会议平台,并且最新上线了全新的白板和文档共享模块。本文将重点介绍WorkPlus Meet如何通过创新功能和稳定性&#xf…

金蝶迷路“云”丛中

​ 来源 | 科技新知 作者 | 樟稻 在云转型的浪潮中,金蝶曾一度领先用友数年,如今却在大模型上出现被逆转的迹象。 8月,金蝶推出自主研发的金蝶云苍穹GPT大模型,号称填补了国内第一个财务大模型的空白。而此前,用友…

【Axure教程】中继器网格拖动摆放

拖动摆放图标在移动端操作中扮演了重要的角色,允许用户自定义其设备的界面,使其更符合其偏好和使用习惯。这可以提高用户对设备的满意度和舒适度,将最常用的应用放置在易于访问的位置,从而提高使用效率。所以拖动摆放这类型操作不…

【区块链 | IPFS】IPFS节点搭建、文件上传、节点存储空间设置、节点上传文件chunk设置

一、创建ipfs节点 通过ipfs init在本地计算机建立一个IPFS节点 本文有些命令已经执行过了,就没有重新初始化。部分图片拷贝自先前文档,具体信息应以实物为准 ipfs init initializing IPFS node at /Users/CHY/.ipfs generating 2048-bit RSA keypair.…

Android Room数据库LiveData与ViewModel结合使用详解

Android Room是Android开发中的一个持久性库处理大量结构化数据的应用可极大地受益于在本地保留这些数据。最常见的使用场景是缓存相关的数据,这样一来,当设备无法访问网络时,用户仍然可以在离线状态下浏览该内容。 Room 持久性库在 SQLite …