2024广东省职业技能大赛云计算赛项实战——Ansible部署Zabbix
Ansible部署Zabbix
前言
今年的比赛考了一道Ansible部署Zabbix的题目,要求就是用两台centos7.5的云主机,一台叫ansible,一台叫node,使用对应的软件包,通过ansible节点控制node节点安装zabbix服务。这道题还是算比较简单的题,不过也是有坑就是了。
Ansible 是一个开源的自动化工具,用于配置管理、应用程序部署、任务自动化和 IT 编排,可以简化和自动化繁琐的运维任务。
关于zabbix的了解和基础的搭建,我在这篇文章中有讲:1+X云计算运维与开发(中级)实战案例——Zabbix分布式监控系统搭建_实战案例——zabbix 分布式监控系统-CSDN博客
不了解的可以去看看,看完你就会发现Ansible部署Zabbix根本没有难点,主要就是避坑。
虚拟机使用的是自行创建的CentOS7,如果你不会,那虚拟机创建的流程可以参考我这篇文章:职业技能大赛云计算赛项实战——OpenStack搭建-CSDN博客
需要的镜像Centos7.5为CentOS-7-x86_64-DVD-1804.iso,可从阿里镜像站下载:centos-vault-7.5.1804-isos-x86_64安装包下载_开源镜像站-阿里云 (aliyun.com)
因为我没有镜像,也没那么多流量下载,所以我用7.4的CentOS-7-x86_64-DVD-1708替代需要用到的软件包:https://pan.baidu.com/s/1y9OckLD3HmIq40g_y-XYbQ?pwd=2s9q
提取码:2s9q
我为什么说这道题坑呢,因为当时我还没有想到把里面的文件搞到本地的方法,只能在他们那个平台做这道题,题目要求用7.5的云主机,而那个平台申请的主机全是7.9的。这就导致在后面安装软件包时出现依赖关系错误,比如安装zabbix需要php的版本为5.4.16-46,虽然在软件包里携带的zabbix软件仓库有,但7.9的系统源的版本是5.4.16-48,安装时系统默认安装更高版本的,又比如mariadb,需要的版本是5.5.56-2,但7.9的版本更高,是1:5.5.68-1,同时系统还默认安装了更高版本的mariadb-libs。最后我是通过指定7.5的系统源,再把mariadb-libs删掉做出来的。
7.5的系统源里,php的版本是5.4.16-45,mariadb则一样,是5.5.56-2,安装时默认安装最新版本,不会影响到过程
我用7.4的替代,php的版本更低,是php-5.4.16-42,也不会影响
节点规划如下:
| 主机名 | IP/24 | 节点 |
|---|---|---|
| ansible | 192.168.100.21 | ansible节点 |
| node | 192.168.100.22 | node节点 |
操作过程
更改主机名
#两个节点修改好主机名
[root@localhost ~]# hostnamectl set-hostname ansible
[root@localhost ~]# bash
[root@ansible ~]# [root@localhost ~]# hostnamectl set-hostname node
[root@localhost ~]# bash
[root@node ~]#
上传软件包
将我提供的软件包上传至ansible节点

解压软件包
#ansible包含了安装ansible的软件包以及依赖,我们把ansbile的软件仓库解压至/opt目录
[root@ansible ~]# tar -zxf ansible.tar.gz -C /opt
[root@ansible ~]# ls /opt/ansible/
packages repodata
#install_zabbix.tar.gz是ansible执行任务需要用到的文件,我们把它解压到主目录即可
[root@ansible ~]# tar -zxf install_zabbix.tar.gz
[root@ansible ~]# ls install_zabbix
group_vars install_zabbix.yaml roles
[root@ansible ~]# ls install_zabbix/roles/zabbix/
files handlers meta tasks templates vars
[root@ansible ~]# ls install_zabbix/roles/zabbix/files/
yum.repo zabbix.tar.gz
#files目录存放着需要复制到目标节点的静态文件,这里包含仓库文件yum.repo和zabbix的软件包及其依赖包的压缩包,它们将在执行任务时被直接复制到node节点上
#handlers目录存放着处理器(handlers)任务,处理器会在特定条件下触发,通常用于重启服务或执行其他操作,这道题还用不到它
#meta目录包含角色的元数据,如依赖关系和其他角色相关信息,同样用不到
#tasks目录包含角色的主要任务列表,定义了角色需要执行的各种操作和配置步骤
#templates目录存放着Jinja2模板文件,这些模板可以在运行时渲染成目标节点上的配置文件,使得配置文件可以根据变量或条件动态生成
#vars目录包含角色范围内的变量,这些变量可以被任务和模板引用,用于参数化配置和操作,这里是被group_vars目录里的all文件替代了,我们也用不到
配置YUM源
#删除系统自带源
[root@ansible ~]# rm -rf /etc/yum.repos.d/*
#创建新的仓库文件
[root@ansible ~]# vi /etc/yum.repos.d/local.repo
[ansible]
name=ansible
baseurl=file:///opt/ansible
gpgcheck=0
enabled=1
#检查可用性
[root@ansible ~]# yum clean all && yum repolist
源标识 源名称 状态
ansible ansible 22
repolist: 22
#安装ansible
[root@ansible ~]# yum -y install ansible
配置主机映射
#编辑系统的主机映射文件
[root@ansible ~]# cat >> /etc/hosts << EOF
> 192.168.100.21 ansible
> 192.168.100.22 node
> EOF
#编辑ansible的主机清单文件,可以说是ansible的主机映射文件
#我们定义一个zabbix的主机组,把node节点的ip写上
[root@ansible ~]# cat >> /etc/ansible/hosts << EOF
> [zabbix]
> 192.168.100.22
> EOF
配置免密登录
#执行ansible剧本的时候需要远程连接主机,所以我们配置ssh免密登录
[root@ansible ~]# ssh-keygen
...
Enter file in which to save the key (/root/.ssh/id_rsa):#回车
...
Enter passphrase (empty for no passphrase):#回车
...
Enter same passphrase again:#回车
...
#将公钥复制给node节点
[root@ansible ~]# ssh-copy-id root@node
...
Are you sure you want to continue connecting (yes/no)? yes
...
root@node's password: #输入node节点密码
配置node节点
#我们做一下node节点的环境准备
#挂载好node节点的系统源
#先创建给挂载目录
[root@node ~]# mkdir /opt/centos
#挂载系统镜像
[root@node ~]# mount -o loop /dev/sr0 /opt/centos
#如果你是使用CentOS-7-x86_64-DVD-2009.iso镜像,在7.9的系统进行本实验的话,你还需要删掉系统自带的mariadb-libs,因为它的版本太高了:yum -y remove mariadb-libs
完善脚本
这道题简单的一部分原因就是我们不用从头写剧本,提供给我们的软件包已经写好了大部分,我们只需要补充关键部分即可。
#我们回到ansible节点,把ansible的文件完善一下
[root@ansible ~]# cd install_zabbix
[root@ansible install_zabbix]#
#all文件是全局变量文件,可以通过设置值,写剧本的时候用变量替代,这里写个数据库密码的变量就行了,数据库主机名的变量没必要,就模板文件有一处用到,我们直接删掉。
[root@ansible install_zabbix]# vi group_vars/all
DB_PASS: zabbix
#变量和值直接有空格,看清楚了
#yum.repo文件是后面我们要传给node节点的仓库文件
[root@ansible install_zabbix]# vi roles/zabbix/files/yum.repo
[zabbix]
name=zabbix
baseurl=
gpgcheck=0
enabled=1
#我们把它补充好:
[root@ansible install_zabbix]# vi roles/zabbix/files/yum.repo
[zabbix]
name=zabbix
baseurl=file:///root/zabbix
gpgcheck=0
enabled=1
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
#main文件是我们安装zabbix的任务列表
[root@ansible install_zabbix]# vi roles/zabbix/tasks/main.yaml
---###- name: selinux configshell: "{{item}}"with_items:- sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config- name: Selinux Config Setenforceshell: getenforceregister: info#执行getenforce命令查看Selinux的执行模式,并把值赋给info- name: when_Selinuxshell: setenforce 0when: info['stdout'] == 'Enforcing'#当info的值为Enforcing时,执行setenforce 0命令临时关闭selinux- name: firewalldshell: systemctl stop firewalld && systemctl disable firewalldignore_errors: yes###这段是关闭防火墙和Selinux的操作,不需要我们补齐#通过name的描述我们可知这里是移动系统默认源的操作,需要我们补齐- name: mv yum configshell: mv #这里是复制仓库文件的地方,需要我们补齐命令,把补充完整的yum.repo移过来- name: copy repo copy: #这里则是移动zabbix软件源压缩包的地方,需要我们补齐命令,把zabbix.tar.gz移过来- name: Copy Repo Tarcopy: #这里是解压zabbix.tar.gz的地方,需要我们补齐- name: Decompression Packageshell: #这里是安装http服务并启动的地方,需要我们补齐- name: Yum Install httpdyum: name:- httpd state: - name: Start Servicesystemd:name: httpdstate: restartedenabled: yes###- name: Install Mariadbyum: name: - mariadb-server- mariadb state: present- name: Start Servicesystemd:name: mariadbstate: restartedenabled: yes###这一段都不需要补齐,是安装数据库并启动的操作###- name: Config Mariadb Usershell: mysqladmin -uroot password {{ DB_PASS }}ignore_errors: yes- name: Mariadb Create zabbixshell: mysql -uroot -p{{ DB_PASS }} -e ""ignore_errors: yes- name: privileages mariadbshell: "{{ item }}"with_items:- mysql -uroot -p{{ DB_PASS }} -e ""- mysql -uroot -p{{ DB_PASS }} -e ""###这段是配置数据库的地方,需要我们补齐命令###"{{ item }}"是Jinja2的模板语法,可以依次操作with_items写的的命令,而不用写两段任务。#这里是安装zabbix服务的地方,需要我们补齐需要安装的组件- name: Install zabbixyum: name:- - - - state: present#这里是导入数据库文件的地方,无需补齐 - name: sql config mariadbshell: chdir=/usr/share/doc/zabbix-server-mysql-3.4.15/ zcat create.sql.gz |mysql -uroot -p{{ DB_PASS }} zabbixignore_errors: yes#这里是设置时区的地方,无需补齐- name: Php Timezoneshell: "{{item}}"with_items:- sed -i "s/^;date.timezone.*/;date.timezone=RPC/g" /etc/php.ini- sed -i "s/#\ php_value/php_value/g" /etc/httpd/conf.d/zabbix.conf- sed -i "s/date.timezone.*/date.timezone Asia\/Shanghai/g" /etc/httpd/conf.d/zabbix.conf#这里是将模板文件复制到node节点,成为其zabbix配置文件的地方,需要我们补齐目标路径- name: Config zabbix_server.conftemplate: src=zabbix_server.conf.j2 dest=#这里是重启http和zabbix服务的地方,无需我们补齐- name: Restart Httpd And zabbix-serversystemd:name: "{{item}}"state: restartedenabled: yeswith_items:- httpd- zabbix-server
#将其补齐后的内容如下:
---- name: selinux configshell: "{{item}}"with_items:- sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config- name: Selinux Config Setenforceshell: getenforceregister: info- name: when_Selinuxshell: setenforce 0when: info['stdout'] == 'Enforcing'- name: firewalldshell: systemctl stop firewalld && systemctl disable firewalldignore_errors: yes- name: mv yum configshell: mv /etc/yum.repos.d/* /media/- name: copy repo copy: src=yum.repo dest=/etc/yum.repos.d/- name: Copy Repo Tarcopy: src=zabbix.tar.gz dest=/root/- name: Decompression Packageshell: tar -zxf /root/zabbix.tar.gz- name: Yum Install httpdyum: name:- httpd state: present- name: Start Servicesystemd:name: httpdstate: restartedenabled: yes- name: Install Mariadbyum: name: - mariadb-server- mariadb state: present- name: Start Servicesystemd:name: mariadbstate: restartedenabled: yes- name: Config Mariadb Usershell: mysqladmin -uroot password {{ DB_PASS }}ignore_errors: yes- name: Mariadb Create zabbixshell: mysql -uroot -p{{ DB_PASS }} -e "create database zabbix character set utf8 collate utf8_bin;"ignore_errors: yes- name: privileages mariadbshell: "{{ item }}"with_items:- mysql -uroot -p{{ DB_PASS }} -e "grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';"- mysql -uroot -p{{ DB_PASS }} -e "grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix';"- name: Install zabbixyum: name:- zabbix-server-mysql- zabbix-web-mysql- zabbix-agentstate: present- name: sql config mariadbshell: chdir=/usr/share/doc/zabbix-server-mysql-3.4.15/ zcat create.sql.gz |mysql -uroot -p{{ DB_PASS }} zabbixignore_errors: yes- name: Php Timezoneshell: "{{item}}"with_items:- sed -i "s/^;date.timezone.*/;date.timezone=RPC/g" /etc/php.ini- sed -i "s/#\ php_value/php_value/g" /etc/httpd/conf.d/zabbix.conf- sed -i "s/date.timezone.*/date.timezone Asia\/Shanghai/g" /etc/httpd/conf.d/zabbix.conf- name: Config zabbix_server.conftemplate: src=zabbix_server.conf.j2 dest=/etc/zabbix/zabbix_server.conf- name: Restart Httpd And zabbix-serversystemd:name: "{{item}}"state: restartedenabled: yeswith_items:- httpd- zabbix-server#如果你了解zabbix的搭建流程,且看过我之前搭建zabbix的文章,你就会发现补充的部分,与我那篇文章的命令是一模一样的
#zabbix_server.conf.j2模板文件是我们复制给node节点当zabbix的配置文件的
#我们编辑一下先,只需要添加101行DBHost的值即可
#添加前:
[root@ansible install_zabbix]# sed -n '100,104p' roles/zabbix/templates/zabbix_server.conf.j2
DBName=zabbix
DBHost=
DBPassword=zabbix
DBSocket=/tmp/mysql.sock
#添加后:
[root@ansible install_zabbix]# sed -n '100,104p' roles/zabbix/templates/zabbix_server.conf.j2
DBName=zabbix
DBHost=localhost
DBPassword=zabbix
DBSocket=/tmp/mysql.sock
执行剧本
#首先带你们看一下剧本的内容
[root@ansible install_zabbix]# vi install_zabbix.yaml
#YAML文件的开始标记
---
#这里指定了执行这个剧本的主机组,我们前面在/etc/ansible/hosts文件里定义了zabbix主机组,里面包含了node节点
- hosts: zabbix
#这里则是指定了执行任务时使用的用户名,执行任务时会用root用户连接对方主机remote_user: root
#制定了要应用的角色列表,这个实验我们有且只有一个zabbix角色,ansible会找到zabbix角色下的task目录,执行里面的main.yaml任务roles:- zabbix#在执行剧本前,我们使用--syntax-check检查一下剧本有没有语法错误
[root@ansible install_zabbix]# ansible-playbook install_zabbix.yaml --syntax-check
#如果显示这样就说明语法没有问题,有语法错误的话会给你指出具体错误的地方
playbook: install_zabbix.yaml
#OK,一切准备就绪,我们执行剧本
[root@ansible install_zabbix]# ansible-playbook install_zabbix.yaml
...
#执行最后会给我们一个总结报告,总共执行了20个任务,19个导致了实际更改,有1个被跳过(临时关闭selinux那里,因为我提前关了,不满足when的条件,于是跳过了)
#其他的,unreachable是主机不可达的数量。failed是任务失败的数量。rescued是被救回的任务数量,这个需要在任务中使用rescue块,在原先任务执行到一半失败了就会执行rescue块的内容,进行恢复操作,避免剧本执行中断。我们这个实验没有使用,自然就没有救回的了。ignored是被忽略的任务数量,我们在任务后面多处添加了ignore_errors: yes,如果那个任务执行失败,也会继续执行剧本,相应的这个数字也会增加。
PLAY RECAP *****************************************************************************************
192.168.100.22 : ok=20 changed=19 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
验证实验结果
我们打开浏览器,在地址栏输入node节点ip/zabbix,如果跳转到了zabbix的安装界面,则说明我们剧本执行成功,没有任何问题了

后语
关于zabbix的一些基础使用,设置中文界面和监控主机啥的,我也在这篇文章也有提及,感兴趣的可以看一下:1+X云计算运维与开发(中级)实战案例——Zabbix分布式监控系统搭建_实战案例——zabbix 分布式监控系统-CSDN博客
ansible搭建应用考察的题目还有部署ELK、Kafka、ZooKeeper、FTP还有Mariadb的,其实只要了解了ansible,这些都不难,后续可能会再讲个ELK的。
相关文章:
2024广东省职业技能大赛云计算赛项实战——Ansible部署Zabbix
Ansible部署Zabbix 前言 今年的比赛考了一道Ansible部署Zabbix的题目,要求就是用两台centos7.5的云主机,一台叫ansible,一台叫node,使用对应的软件包,通过ansible节点控制node节点安装zabbix服务。这道题还是算比较简…...
Linux—— ansible循环
1.如果有大量的变量要定义,如果多个变量本身类型相同或类似 再比如,同一个剧本,给主机同时安装多个软件包 按照已有的用法,每个软件包都对应不同变量,还会涉及到改剧本 2.现在可以用清单,以及playbook里…...
RabbitMQ 开发指南
连接RabbitMQ 连接方式一: 也可以选择使用URI的方式来实现 连接方式二: Connection接口被用来创建一个Channel,在创建之后,Channel可以用来发送或者接收消息。 Channel channel conn.createChannel();使用交换器和队列 声明…...
ElasticSearch学习笔记(二)文档操作、RestHighLevelClient的使用
文章目录 前言3 文档操作3.1 新增文档3.2 查询文档3.3 修改文档3.3.1 全量修改3.3.2 增量修改 3.4 删除文档 4 RestAPI4.1 创建数据库和表4.2 创建项目4.3 mapping映射分析4.4 初始化客户端4.5 创建索引库4.6 判断索引库是否存在4.7 删除索引库 5 RestClient操作文档5.1 准备工…...
python离线安装第三方库、及其依赖库(单个安装,非批量移植)
文章目录 1.外网下载第三方库、依赖库2.内网安装第三方库3.补充附录内网中离线安装python第三方库,这时候只能去外网手动下载第三方库,再传回内网进行安装。 问题是python第三方库往往有其前置依赖包,你很难清楚某个第三方库依赖的是哪些依赖包,更难受的是依赖包可能还有其…...
昨天发的 npm 包,却因为 registry 同步问题无法安装使用
用过 HBuilderX 云打包的都知道,云上面的 Android 环境很有限,其实并不能覆盖 uniapp 生态所有的版本,甚至说只能覆盖最新的一两个版本。 如果你需要用到 HBuilderX 安卓云打包,就必须及时跟进 HBuilderX 的版本更新,…...
Redis 数据恢复及持久化策略分析
在分布式系统中,Redis作为高性能的键值存储数据库,广泛应用于缓存、会话管理、消息队列等场景。对于Redis数据的可靠性,持久化是至关重要的一环。当Redis宕机时,如何恢复数据成为一个关键问题。这篇文章将详细分析Redis的数据恢复…...
vscode 快捷键侧边栏
_____ 配置 vscode 快捷键 visual studio code - open explorer and close sidebar with the same key - Stack Overflow { "key": "ctrlshifte", // when Explorer not open // "command": "workbench.view.explorer", // either…...
FreeRTOS:1、任务通知vTaskNotifyGiveFromISR保证实时性
文章目录 背景解释意义 背景 首先,我们看以下代码: #include "FreeRTOS.h" #include "task.h"TaskHandle_t s_task_handle NULL;void vTaskFunction(void *pvParameters) {for (;;) {// 等待通知ulTaskNotifyTake(pdTRUE, portMA…...
监督学习:从数据中学习预测模型的艺术与科学
目录 引言 一、监督学习的基本概念 1、数据集 2、特征 3、标签 4、模型 二、监督学习的原理和方法 1、基本原理 2、常用方法 三、监督学习的定义与分类 1、 定义 2.、分类 四、为什么是监督学习? 1、 明确的学习目标 2、高准确率 3、易于评估 4、 …...
深入理解Java虚拟机(JVM)中的垃圾回收器
垃圾回收(Garbage Collection, GC)是现代编程语言中用于管理内存的重要机制,特别是在Java虚拟机(JVM)中。 它的基本原理是自动检测和释放不再被程序使用的内存,以避免内存泄漏和提高程序执行效率。 1.GC的基…...
视频集市新增支持多格式流媒体拉流预览
流媒体除了常用实时流外还有大部分是以文件的形式存在,做融合预览必须要考虑多种兼容性能力,借用现有的ffmpeg生态可以迅速实现多种格式的支持,现在我们将按需拉流预览功能进行了拓展,正式支持了ffmpeg的功能,可快捷方…...
定时器-前端使用定时器3s轮询状态接口,2min为接口超时
背景 众所周知,后端是处理不了复杂的任务的,所以经过人家的技术讨论之后,把业务放在前端来实现。记录一下这次的离大谱需求吧。 如图所示,这个页面有5个列表,默认加载计划列表。但是由于后端的种种原因,这…...
python实践笔记(二): 类和对象
1. 写在前面 最近在重构之前的后端代码,借着这个机会又重新补充了关于python的一些知识, 学习到了一些高效编写代码的方法和心得,比如构建大项目来讲,要明确捕捉异常机制的重要性, 学会使用try...except..finally&…...
指定GPU跑模型
加上一个CUDA_VISIBLE_DEVICES0,2就行了,使用0卡和2卡跑模型,注意多卡有时候比单卡慢,4090无NVlink,数据似乎是通过串行的方式传输到多个gpu的,只不过单个gpu是并行计算,数据在gpu与gpu之间似乎是串行传输的…...
Windows桌面运维----第五天
1、华为路由怎们配置IP、划分vlan、互通: 1、用户模式→系统模式; 2、进入相关端口,配置IP地址; 3、开通相应vlan,设置vlanX、IP地址; 4、绑定相关端口,设置端口类型; 5、电脑设置IP&#…...
bash和dash的区别(及示例)
什么是bash、dash Bash(GNU Bourne-Again Shell)是许多Linux平台的内定Shell,事实上,还有许多传统UNIX上用的Shell,像tcsh、csh、ash、bsh、ksh等等。 GNU/Linux 操作系统中的 /bin/sh 本是 bash (Bourne-Again Shell) 的符号链接࿰…...
Java基础入门day65
day65 web项目 页面设计 仿照小米官网,将首页保存到本地为一个html页面,再将html页面保存为jsp页面,在项目中的web.xml文件中配置了欢迎页 <welcome-file-list><welcome-file>TypesServlet</welcome-file> </welcome-…...
解密制度的规定和解密工作的具体流程
解密制度是指对于某些敏感的文件或资料,经过一定的时间后,根据相关规定和程序,可以进行解密,解除文件的保密状态,使其可以被公众查阅或利用。解密制度的目的在于确保涉密信息的保密等级与其重要程度相适应,防止涉密信息的泄露和使用不当,同时促进信息公开、传播历史知识…...
实际中常用的网络相关命令
一、ping命令 ping是个使用频率极高的实用程序,主要用于确定网络的连通性。这对确定网络是否正确连接,以及网络连接的状况十分有用。 简单的说,ping就是一个测试程序,如果ping运行正确,大体上就可以排除网络访问层、网…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
稳定币的深度剖析与展望
一、引言 在当今数字化浪潮席卷全球的时代,加密货币作为一种新兴的金融现象,正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而,加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下,稳定…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
全面解析数据库:从基础概念到前沿应用
在数字化时代,数据已成为企业和社会发展的核心资产,而数据库作为存储、管理和处理数据的关键工具,在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理,到社交网络的用户数据存储,再到金融行业的交易记录处理&a…...
