当前位置: 首页 > news >正文

Docker图形化界面工具Portainer最佳实践

  • 前言

  • 安装Portainer

  • 实践-基于Portainer安装redis-sentinel部署

  • Spring Boot集成Redis Sentinel


前言

本篇文章笔者推荐一个笔者最常用的docker图形化管理工具——Portainer。

安装Portainer

编写docker-compose文件

Portainer部署的步骤比较简单,我们还是以docker-compose文件的形式完成Portainer的安装,首先我们需要需要编写的名为portainer.yml的文件,内容如下:

version: "3"
services:portainer:image: portainer/portainer:latestcontainer_name: portainerports:- "9000:9000"volumes:- /app/portainer/data:/data- /var/run/docker.sock:/var/run/docker.sock

完成后,我们将这个文件上传到我们的服务器即。

初始化并配置容器

将配置文件上传之后我们就可以尝试启动了,为了方便查看服务是否可以正常启动,我们还先以前台运行的方式启动,到达portainer.yml文件位置,键入前台启动命令

docker-compose -f portainer.yml up

当控制台没有输出错误,并显示正常启动后,我们分开服务器的9000端口,浏览器输入服务器ip:9000,即可进入Portainer初始化界面,它会要求我们配置用户名密码:

图片

完成账户密码初始化之后,我们点击local进行服务器本地容器管理

图片

图片

此时我们就会看到local中docker的基本信息了

图片

图片

在步入local,我们就可以按需管理容器、镜像、网络等配置信息。我们不妨点击containers查看我们服务器中当前运行的docker容器。

图片

图片

可以看到我们docker中容器的运行情况,由于portainer涉及操作很多,笔者这里就不一一演示了,感兴趣的读者可以自行查阅portainer官方文档

https://www.portainer.io/take-5

图片

图片

到上述步骤我们已经可以确定portainer安装基本成功了,我们可以回到服务器将portainer后台启动,正式使用portainer了。

docker-compose -f portainer.yml up -d

实践-基于Portainer安装redis-sentinel部署

介绍

读完上述的介绍可能读者们对Portainer还没有一个比较清晰的了解,所以笔者在这里就基于一个redis-sentinel的部署介绍一下Portainer的日常操作步骤。

首先我们来介绍一下本次部署架构,我们会基于一台服务器完成一主二从+三个哨兵的部署架构,最终效果是:

  • 当主节点更新数据之后,从节点数据也会进行同步。

  • 当我们将主节点手动停止之后,哨兵就会选举出新的master继续进行工作。

图片

图片

安装步骤
主从复制部署

首先我们先进性主从结构的部署,我们还是基于docker-compose创建一个名为redis-cluster.yml的文件配置一下主从信息,配置内容如下,笔者已将配置的含义都一一注释,读者可自行参考修改。需要注意以下两点:

安全起见,建议读者尽可能不要使用6379作为对外暴露的端口号,就算使用6379也尽可能设置一个安全的密码,避免被人下挖矿程序。

当读者复制下面的文件在服务器启动时可能会报各种语法错误,所以笔者推荐的yaml格式化在地址,读者完成配置后可以将配置粘贴到这个网站完成自动格式化。这样可以避免启动时报一些没必要的错误

version: '3'
services:# 主节点master:image: redis# 主节点名称container_name: redis-master# 设置redis登录密码、从节点连接主节点的密码command: redis-server --requirepass xxxx--masterauth xxxxports:# 对外暴露端口号为16379- 16379:6379# 从节点slave1:image: rediscontainer_name: redis-slave-1ports:# 对外暴露端口号为16380- 16380:6379# 启动redis 从属于容器名为 redis-master的redis,端口号为容器端口号而不是对外映射端口号,设置连接密码,连接主节点的密码command:  redis-server --slaveof redis-master 6379 --requirepass xxxx--masterauth xxxxx# 从节点2slave2:image: rediscontainer_name: redis-slave-2ports:- 16381:6379command: redis-server --slaveof redis-master 6379 --requirepass xxxxx --masterauth xxxxx

完成后我们即可将配置上传到服务器并启动:

docker-compose -f redis-cluster.yml up

启动完成后就可以在portainer中看到一主二从出现在containers列表中

图片

以master为例,我们不妨点击log查看master节点的运行情况

图片

从输出可以看到master没有输出任何错误,说明master正常运行了。

图片

在确认每个容器都能正常启动之后,我们不妨尝试在master节点写入一些数据测试一下主从节点同步功能是否正常。

在没有portainer之前,我们进入docker容器内容用的都是使用docker exec -it 容器id bash/sh命令,有了portainer之后,我们进入容器的操作就变得非常简单了。

回到容器列表,点击redis-master进入容器管理界面

图片

点击console,进入容器终端连接界面

图片

点击connect连接进入容器

图片

然后我们就进入的容器内部,尝试使用redis-cli认证并设置一个kv值。

图片

完成上述步骤后,我们到达从节点的容器内部查阅数据可以发现,主节点数据确实同步过来了,自此我们主从复制部署基本完成。

图片

创建redis-sentinel专用网络驱动

为了确保redis-sentinel可以统一管理且和其他容器隔离,我们在部署sentinel之前需要基于Portainer创建一个自定义的brige网络。

什么是brige网络呢?其实docker容器中有以下几种网络驱动类型,不同的网络驱动类型可以使得容器和宿主机有着不同的网络关联:

  1. host: 使用docker宿主机网络

  2. bridge: 该网络支持在同一个宿主机上的各个容器实例之间的通信。bridge网络是一个独立的网络空间,在网络空间内部的各个容器实例能够直接通信。

  3. none: 是一个完全隔离的自治网络,甚至与Docker宿主机的网络都不通,必须手工配置网卡后才能够使用。加入到该网络的容器实例,往往要在后续设置中加入到其他的第三方网络。

  4. overlay: 该类型的网络适用于Docker宿主机集群中的各个独立的容器实例之间通信。

  5. macvlan: 该类型的网络适用于容器实例需要与宿主机的MAC地址直接通信,无需端口映射,也无需NAT,容器实例的eth0直接与宿主机的物理网卡通信。容器实例可以被赋予公共IP,并从宿主机外部直接访问。

所以我们这里就希望创建一个名为redis-sentinel的bridge网络将主从和哨兵节点关联起来,并且和docker中的其他容器隔离开:

图片

所以我们按照点击network,选择add network进行自定义网络创建

图片

输入名称为redis-sentinel,其余默认,然后直接点击

图片

然后直接点击create the network

图片

然后我们就可以在network列表中看到我们配置的network,自此网络redis专用桥接网络配置完成。

图片

重点来了,我们的redis主从节点现在都处于默认的网络驱动中,我们必须手动将其配置到redis-sentinel网络中,当然有了portainer,这种操作也不会很难。

我们只需要点击容器列表,找到我们的主动节点容器,然后分别进入他们的管理列表最下方,找到network选项,在network列表中找到redis-sentinel选择join network即可。

图片

创建哨兵

接下来就可以配置哨兵节点了,首先自然是创建一个名为redis-sentinel.yml的docker-compose文件配置3个哨兵:

version: '3'
services:sentinel1:image: redis# 容器名称container_name: redis-sentinel-1ports:# 端口映射- 26379:26379# 启动redis哨兵command: redis-sentinel /usr/local/etc/redis/sentinel.confvolumes:# 哨兵1的sentinel.conf和宿主文件位置映射- /app/cloud/redis/sentinel/sentinel1.conf:/usr/local/etc/redis/sentinel.confsentinel2:image: rediscontainer_name: redis-sentinel-2ports:- 26380:26379command: redis-sentinel /usr/local/etc/redis/sentinel.confvolumes:- /app/cloud/redis/sentinel/sentinel2.conf:/usr/local/etc/redis/sentinel.confsentinel3:image: rediscontainer_name: redis-sentinel-3ports:- 26381:26379command: redis-sentinel /usr/local/etc/redis/sentinel.confvolumes:- /app/cloud/redis/sentinel/sentinel3.conf:/usr/local/etc/redis/sentinel.conf
# 重点,将3个哨兵加入到redis-sentinel和主从节点建立联系
networks:default:external:name: redis-sentinel

从配置文件中可以看出笔者将哨兵文件和宿主文件进行关联,所以我们需要按照上面配置在app/cloud/redis/sentinel/文件夹下创建3个哨兵的配置文件sentinel.conf。

哨兵1的配置文件如下,其余哨兵配置同理,只需按需修改ip和端口号即可:

port 26379
dir /tmp
# master节点在bridge网络中的ip值
sentinel monitor redis-master 172.20.0.2 6379 2
# master节点密码
sentinel auth-pass redis-master xxxxx
sentinel down-after-milliseconds redis-master 30000
sentinel parallel-syncs redis-master 1
sentinel failover-timeout redis-master 180000
sentinel deny-scripts-reconfig yes

可以看到笔者将master节点命名为redis-master,然后网络配置为172.20.0.2这个值是从哪里来的呢?很简单,我们点击redis-master即redis主节点那个容器管理界面,到达最下方,就可以在ip address一栏看到master节点的容器ip地址,因为哨兵节点和主从节点都处于redis-sentinel这个网络中,所以170.20.0.x这个网络是互通的,在bridge模式下配置这个ip地址是完全没有问题的。

图片

完成上述步骤后我们就可以将哨兵启动

docker-compose -f  redis-sentinel.yml up

此时我们点击任意一个哨兵节点都可以看到,哨兵的状态信息,自此哨兵也部署完成了

图片

测试可用性

此时我们就可以测试哨兵是否正常工作了,我们的测试用例很简单,我们将master关闭掉,查看哨兵是否会选举出新的master顶上。

在测试前我们首先进入master容器输入info replication查看master容器中的redis是否为主节点

图片

再查看另外两个几点是否身份是否确属从节点。

从节点1:

图片

从节点2:

图片

我们通过portainer图形界面将redis-master关闭。

图片

点入任意一个哨兵日志,可以看到它监控到主节点下线,并快速选举出一个新的节点作为master上线

图片

我们根据ip地址172.20.0.3定位到是slave2这个redis,我们进入容器查看其身份,确实变为master。

图片

自此我们的redis-sentinel部署完成了。

相关文章:

Docker图形化界面工具Portainer最佳实践

前言 安装Portainer 实践-基于Portainer安装redis-sentinel部署 Spring Boot集成Redis Sentinel 前言 本篇文章笔者推荐一个笔者最常用的docker图形化管理工具——Portainer。 安装Portainer 编写docker-compose文件 Portainer部署的步骤比较简单,我们还是以…...

在Linux上获取MS(如Media Server)中的RTP流并录制为双轨PCM格式的WAV文件

在Linux上获取MS(如Media Server)中的RTP流并录制为双轨PCM格式的WAV文件 一、RTP流与WAV文件格式二、实现步骤三、伪代码示例四、C语言示例代码五、关键点说明六、总结在Linux操作系统上,从媒体服务器(如Media Server,简称MS)获取RTP(Real-time Transport Protocol)流…...

栈及栈的操作

栈及栈的操作 栈结构 栈是一种只能在一端进行插入或删除操作的数据结构。栈有两个基本的操作:入栈和出栈。 入栈:将一个新的元素放到栈顶。 出栈:从栈顶取出一个元素。栈顶的元素总是最后入栈,需要出栈时,又最先被从栈中取出。栈的操作规则:LIFO(Last…...

YOLOv10-1.1部分代码阅读笔记-utils.py

utils.py ultralytics\nn\modules\utils.py 目录 utils.py 1.所需的库和模块 2.def _get_clones(module, n): 3.def bias_init_with_prob(prior_prob0.01): 4.def linear_init(module): 5.def inverse_sigmoid(x, eps1e-5): 6.def multi_scale_deformable_attn_py…...

JDK8源码分析Jdk动态代理底层原理

本文侧重分析JDK8中jdk动态代理的源码,若是想看JDK17源码分析可以看我的这一篇文章 JDK17源码分析Jdk动态代理底层原理-CSDN博客 两者之间有着略微的差别,JDK17在JDK8上改进了不少 目录 源码分析 过程 生成的代理类大致结构 本文侧重分析JDK8中jdk…...

springboot配置并使用RestTemplate

目录 一、RestTemplate配置 1、将RestTemplate初始化为Bean 2、使用HttpClient作为RestTemplate客户端 (1)引入HttpClient依赖 (2)修改RestTemplate配置类 3、设置拦截器 (1)新增拦截器类 &#xf…...

【MySQL关于数据库和表结构的增删查改】

数据库和表结构的基本语法 数据库命令关于字符集语法 表操作语法创建表查看表结构修改表修改表名增加字段同时修改字段名和字段数据类型仅修改字段数据类型删除字段 删除表 备份和恢复备份恢复 mysql -h 127.0.0.1 -P 3306 -u root -p mysql -u root -h 和 -p 默认 进入MySQL程…...

Linux 服务器启用 DNS 加密

DNS 加密的常用协议包括 DNS over HTTPS (DoH)、DNS over TLS (DoT) 和 DNSCrypt。以下是实现这些加密的步骤和工具建议: 1. 使用 DoH (DNS over HTTPS) 工具推荐: cloudflared(Cloudflare 提供的客户端)doh-client(…...

2025年,测试技能支棱起来。

你是否曾为提升自己的测试技能而烦恼?在这个日新月异的技术时代,2025年已经悄然而至,软件测试行业的需求和挑战也在不断变化。那么,如何在这个竞争激烈的环境中脱颖而出,成为一名更加优秀的测试工程师呢? …...

HTML5实现好看的二十四节气网页源码

HTML5实现好看的新年春节元旦网站源码 前言一、设计来源1.1 主界面1.2 关于我们界面1.3 春季节气界面1.4 夏季节气界面1.5 秋季节气界面1.6 冬季节气界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载结束语 HTML5实现好看的二十四节气网页源码,春季节气&#xf…...

每天你好20250103(距离春节26天!!!)

亲爱的朋友们,大家早上好! 🌞 今天是 1 月 3 日,星期五,2025 年的第三天,同时也是第 1 周的第五天,农历乙巳[蛇]年十一月十四日。祥龙辞岁去,瑞蛇迎春来,在这曙光初照的…...

【音频伴奏分离】UVR5软件介绍

Ultimate Vocal Remover 5 (UVR5) 是一款功能强大的AI人声伴奏音频分离软件,它能够利用深度学习模型从音频文件中分离出人声和伴奏。UVR5在音乐制作、音频编辑、学习等多种场景中都非常有用。以下是UVR5的一些主要特点和使用方法: 主要特点:…...

安卓触摸事件的传递

setOnTouchListener()返回值的副作用(触摸事件是否继续往下或往后传递)如下: 返回值效果是否往下层view传递是否往当前view的后续监听传递true该pointer离开屏幕前的后续所有触摸事件都会传递给该TouchListener否否false该pointer离开屏幕前…...

51c视觉~合集40

我自己的原文哦~ https://blog.51cto.com/whaosoft/12951385 #SparX 港大提出SparX:强化Vision Mamba和Transformer的稀疏跳跃连接机制 本文分享香港大学计算和数据科学学院俞益洲教授及其研究团队发表于 AAAI 2025 的论文——SparX,一种强化 Visio…...

25年1月更新。一图流Windows 上搭建 Python 开发环境:Python + PyCharm 安装全攻略(文中有安装包不用官网下载)

引言 随着 Python 在数据科学、Web 开发、自动化脚本等多个领域的广泛应用,越来越多的开发者选择它作为首选编程语言。而 PyCharm 作为一个功能强大的集成开发环境(IDE),为 Python 开发者提供了极大的便利。本文将详细介绍如何在 …...

C# 设计模式的六大原则(SOLID)

C# 设计模式的六大原则(SOLID) 引言 在面向对象编程中,设计模式提供了高效、可复用和可维护的代码结构。SOLID原则是软件设计中的一组重要原则,用于确保代码具有良好的可维护性、可扩展性和灵活性。SOLID是五个设计原则的首字母…...

MQ-导读

什么是MQ? MQ是一款消息中间件,通常被称为"消息队列",用于分布式架构中上下文的异步通信。 举个例子 就拿登录来说,用户在登录的时候需要去进行一些其他的操作,比如风控、短信、记录日志,如果采用同步的方式…...

Spring MVC的@ResponseBody与@RequestBody

ResponseBody注解用于将Controller的方法返回的对象,通过springmvc提供的HttpMessageConverter接口转换为指定格式的数据如:json,xml等,通过Response响应给客户端。 RequestBody注解用于读取http请求的内容(字符串),通过springmv…...

常见硬件及其对应的驱动模块列表

常见硬件及其对应的驱动模块列表 1. 电机类 硬件设备驱动模块功能步进电机ULN2003、A4988、DRV8825提供电流和电压,控制步进和方向直流电机L298N、L293D、TB6612FNG提供双向电流控制,实现正反转和调速伺服电机无(直接 PWM 控制)控…...

IDEA开发Java应用的初始化设置

一、插件安装 如下图所示: 1、Alibaba Java Coding Guidelines 2.1.1 阿里开发者规范,可以帮忙本地自动扫描出不符合开发者规范的代码,甚至是代码漏洞提示。 右击项目,选择《编码规约扫描》,可以进行本地代码规范扫…...

系统架构师考试-ABSD基于架构的设计方法

概念 ABSD是体系结构驱动,是指构成体系结构的软件构件和类的组合驱动的。 ABSD强调由商业、质量和功能需求的组合驱动软件架构设计。使用ABSD方法,设计活动可以从项目总体功能框架明确就开始,并且设计活动的开始并不意味着需求抽取和分析活…...

Node.js入门html,css,js 30年了nodejs环境 09年出现 15

Node.js入门 html,css,js 30年了 nodejs环境 09年出现 15年 nodejs为我们解决了2个方面的问题: 【锦上添花】让我们前端工程师拥有了后端开发能力(开接口,访问数据库) - 大公司BFF(50)【✔️】前端工程…...

2025跨年倒计时

<!DOCTYPE html> <html lang"zh"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>2025年跨年倒计时</title><style>/* 页…...

淘宝京东电商商品SKU信息抓取API测试实战指南

在电商平台的商品管理中&#xff0c;SKU&#xff08;Stock Keeping Unit&#xff0c;库存单位&#xff09;信息扮演着至关重要的角色。它不仅关乎商品的库存管理&#xff0c;还直接影响到消费者的购买决策。为了高效地获取并验证电商平台&#xff08;如淘宝、京东&#xff09;上…...

SAP财务凭证的更改、冲销的方式

文章目录 一、财务凭证更改二、财务凭证冲销 【SAP系统研究】 #SAP #FICO #SAP财务 一、财务凭证更改 &#xff08;1&#xff09;已经过账的财务凭证 FB02&#xff1a;过完帐的允许更改的地方有限&#xff0c;只有凭证抬头文本、参照、分配、文本、原因代码等。 &#xff0…...

RepPoints: Point Set Representation for Object Detection

CornerNet论文阅读整理-CSDN博客 可变形卷积(Deformable Conv)原理解析与torch代码实现-CSDN博客 RepPoints(本质是可变形卷积DCN)再理解-CSDN博客 简介&#xff1a; 时间&#xff1a;2019 会议&#xff1a;ICCV 作者&#xff1a;Ze Yang&#xff0c;Shaohui Liu&#xff0c…...

高效使用AI完成编程项目任务的指南:从需求分析到功能实现

随着人工智能工具的普及&#xff0c;即便是零编程基础或基础薄弱的用户&#xff0c;也可以借助AI完成许多技术任务。然而&#xff0c;要高效地使用AI完成编程任务&#xff0c;关键在于如何清晰表达需求&#xff0c;并逐步引导AI实现目标。 在本文中&#xff0c;我们将通过开发…...

Linux命令——RPM与yum

文章目录 一、RPM包命令1.安装和升级包2.删除包3.查询包信息4.验证和检查5.其他操作 二、yum安装器1.安装包2.更新包3.卸载包4.查询和搜索5.清理缓存6.其他操作 一、RPM包命令 1.安装和升级包 命令解释rpm -ivh package.rpm安装一个 RPM 包&#xff0c;显示详细信息和进度条r…...

C++软件设计模式之责任链模式

责任链模式的动机与意图 动机&#xff1a; 在软件开发中&#xff0c;经常会遇到需要处理一系列请求或事件的情况。这些请求可能需要经过多个处理对象&#xff0c;每个对象根据其职责决定是否处理请求或将其传递给下一个对象。责任链模式&#xff08;Chain of Responsibility P…...

Spring Cloud Security集成JWT 快速入门Demo

一、介绍 JWT (JSON Web Token) 是一种带有绑实和信息的简单标准化机制&#xff0c;在信息通信中用于验证和信息传递。尤其在应用中使用Spring Cloud实现分布式构建时&#xff0c;JWT可以作为一种无状态验证原理的证明。 本文将进一步描述如何在Spring Cloud Security中集成JW…...

Python 爬虫

一、创建项目 1.双击打开pycharm&#xff0c;点击新建项目 2.项目设置- 勾选[继承全局站点软件包]- 勾选[可用于所有项目]- 取消勾选[创建main.py欢迎脚本]- 点击创建 3.项目名称右键--新建--python文件 4.输入文件名--回车二、编辑代码 # 导入请求模块 import requests # 如…...

【PCIe 总线及设备入门学习专栏 4.1 -- PCI 总线的地址空间分配】

文章目录 Overview 本文转自&#xff1a;https://blog.chinaaet.com/justlxy/p/5100053219 Overview PCI 总线具有32位数据/地址复用总线&#xff0c;所以其存储地址空间为 2324GB。也就是PCI上的所有设备共同映射到这4GB上&#xff0c;每个PCI设备占用唯一的一段PCI地址&…...

虚拟电厂搭建指南:绿虫仿真设计软件的助力

在虚拟电厂的搭建中&#xff0c;绿虫仿真设计软件起着重要作用。 绿虫光伏仿真软件是一款综合性辅助工具&#xff0c;能为虚拟电厂中的光伏项目提供精准数据支持。它所提供的项目选址地气象数据&#xff0c;涵盖海拔、辐照、风速、温度等&#xff0c;数据源为 Meteonorm &…...

开源漏洞管理工具--Faraday

前言 在现代安全领域&#xff0c;面临着两个主要的挑战&#xff1a;一是设计出智能化的方式来获取新信息&#xff0c;二是有效地跟踪和管理发现的内容&#xff0c;以便不断改善修复工作。为了解决这些问题&#xff0c;Faraday应运而生&#xff0c;它能够帮助您专注于漏洞的发现…...

一、EF框架的Database First开发模式(数据库优先)

Database First开发模式(数据库优先) ‌Database First‌是Entity Framework&#xff08;EF&#xff09;的三种开发模式之一&#xff0c;适用于在已有数据库的情况下进行开发。其核心思想是从现有数据库中逆向生成实体类和映射文件&#xff0c;然后在此基础上进行开发。 官方…...

Datawhale AI冬令营(第二期)动手学AI Agent task2--学Prompt工程,优化Agent效果

目录 如何写好Prompt&#xff1f; 工具包神器1&#xff1a;Prompt框架——CO-STAR 框架 工具包神器2&#xff1a;Prompt结构优化 工具包神器3&#xff1a;引入案例 案例&#xff1a;构建虚拟女友小冰 1. 按照 CO-STAR框架 梳理目标 2. 撰写Prompt 3. 制作对话生成应用&…...

Go IO之文件处理,TCPUDP讲解

文章目录 1 文件处理1.1 打开和关闭文件1.2 读取文件1.2.1 简单示例1.2.2 中文乱码1.2.2.1 bufio1.2.2.2 ioutil 1.3 写入文件1.3.1 Write 和 WriteString1.3.2 fmt.Fprintln1.3.2.1 写入文件1.3.2.2 写入标准输出 1.3.3 bufio.NewWriter1.3.4 ioutil.WriteFile 2 TCP&UDP2…...

[卫星遥感] 解密卫星目标跟踪:挑战与突破的深度剖析

目录 [卫星遥感] 解密卫星目标跟踪&#xff1a;挑战与突破的深度剖析 1. 卫星目标跟踪的核心挑战 1.1 目标的高速与不确定性 1.2 卫星传感器的局限性 1.3 数据处理与融合问题 1.4 大尺度与实时性要求 2. 当前卫星目标跟踪的主流技术 2.1 卡尔曼滤波&#xff08;Kalman …...

U盘提示格式化?原因、恢复方案与预防措施全解析

一、U盘提示格式化现象概述 在日常使用U盘的过程中&#xff0c;我们有时会遇到一个令人头疼的问题——U盘插入电脑后&#xff0c;系统却弹出一个提示框&#xff0c;告知我们U盘需要格式化才能访问。这个提示往往伴随着数据的潜在丢失风险&#xff0c;让我们不禁为之心焦。U盘提…...

Vuex中dispatch的用法

在 Vuex 中&#xff0c;dispatch 是用于触发 actions 的方法&#xff0c;它的主要作用是调用一个 action 并可以传递一些参数。以下是关于 dispatch 的详细解释&#xff1a; 基本语法 dispatch(type, payload)type&#xff1a;要调用的 action 的名称&#xff0c;它是一个字符…...

Agent系列:AppAgent v2-屏幕智能Agent(详解版)

引言 简介 方法 Agent 框架 Agent 交互 探索阶段 部署阶段 文档生成 高级功能 实验结果 总结 局限性 未来工作 1. 引言 大语言模型&#xff08;LLM&#xff09;如 ChatGPT 和 GPT-4 显著提升了自然语言处理能力&#xff0c;并且推动了智能体在自主决策中的应用。…...

Word如何插入图片并移动到某个位置

Word如何插入图片并移动到某一个位置 新建word→插入→图片 选择合适的位置→选择图片→打开 点击图片→布局选项→选择文字环绕下的任意一个→固定在页面上 点击图片就可以将图片移动到任意位置...

[CTF/网络安全] 攻防世界 upload1 解题详析

姿势 在txt中写入一句话木马<?php eval($_POST[qiu]);?> 回显如下&#xff1a; 查看源代码&#xff1a; Array.prototype.contains function (obj) { var i this.length; while (i--) { if (this[i] obj) { return true; } } return false; } function …...

golang:微服务架构下的日志追踪系统(二)

背景 在使用Gin框架进行服务开发时&#xff0c;我们遇到了一个日志记录的问题。由于Gin的上下文&#xff08;*gin.Context&#xff09;实现了context.Context接口&#xff0c;在调用日志记录器的Info、Warn、Error等方法时&#xff0c;直接传递Gin的上下文通常不会导致编译错误…...

单片机的存储器类型

单片机&#xff08;Microcontroller Unit, MCU&#xff09;是一种将计算机的主要部分集成在一个芯片上的微型计算机。它集成了处理器(CPU)、存储器、输入输出接口等必要的功能模块&#xff0c;广泛应用于各种嵌入式系统中。单片机的存储器结构对于理解和使用单片机至关重要&…...

深入剖析MySQL数据库架构:核心组件、存储引擎与优化策略(一)

sql语句分为两大类&#xff1a;查询&#xff08;select&#xff09;、增删改----修改&#xff08;update&#xff09; select语句的执行流程 执行sql语句的流程&#xff1a;连接数据库、缓存查询、解析器、优化器、执行器、存储引擎操作数据 客户端&#xff1a;图形界面工具…...

java常见的面试题

目录 一、 spring的配置文件的哪四处? 1.数据源&#xff08;Data Source&#xff09;配置 2.事务管理器&#xff08;Transaction Manager&#xff09;配置 3. 扫描组件&#xff08;Component Scanning&#xff09;配置 4. AOP&#xff08;面向切面编程&#xff09;配置&…...

2025吉林大学软件学院研究生人工智能原理真题

选择题 5题共10分 5.以下模型不需要训练过程的是&#xff1f; A.支持向量机 B.决策树 C.KNN近邻算法 D.卷积神经网络 简答题 4题35分 1.大模型是否已经通过图灵测试 2.三个近二十年来的机器学习模型和应用案例 3.LDA原理和算法流程 4.CNN原理和算法流程 证明题 谓词逻辑15…...

Qt判别不同平台操作系统调用相应动态库读取RFID

本示例使用的读卡器&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1b8jdyXi&ftt&id562957272162 #include <QDebug> #include "mainwindow.h" #include "./ui_mainwindow.h" #include "QLibrary"…...

智慧工地系统:建筑施工智能化管理的全新模式

智慧工地概述 智慧工地是将互联网的理念和和物联网的技术引入建筑工地&#xff0c;依托物联网、互联网、大数据、5G技术&#xff0c;建立云端数据平台&#xff0c;形成大数据的业务体系&#xff0c;打通一线操作与远程监管的链条&#xff0c;实现劳务、安全、环境、材料等各个…...