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

ML-Agents:智能体(三)

注:本文章为官方文档翻译,如有侵权行为请联系作者删除
Agent - Unity ML-Agents Toolkit–原文链接>

ML-Agents:智能体(一)
ML-Agents:智能体(二)
ML-Agents:智能体(三)
ML-Agents:智能体(四)

动作和执行器

动作是Agent执行的来自 Policy 的指令。当 Academy 调用函数时,动作将作为参数 传递给 an IActionReceiver( anAgent或 an IActuator)。支持两种类型的动作:连续离散ActionBuffers``IActionReciever.OnActionReceived()

策略和训练算法都不知道动作值本身的含义。训练算法只是尝试不同的动作列表值,并观测随着时间的推移和许多训练事件对累积奖励的影响。因此,为Agent定义动作的唯一地方是在函数中OnActionReceived()

例如,如果您设计了一个在二维空间中移动的Agent,则可以使用连续或离散动作。在连续情况下,您可以将动作大小设置为 2(每个维度一个),Agent的策略将输出一个具有两个浮点值的动作。在离散情况下,您将使用一个大小为 4 的分支(每个方向一个),策略将创建一个动作数组,其中包含一个值范围从零到三的元素。或者,您可以创建两个大小为 2 的分支(一个用于水平移动,一个用于垂直移动),策略将输出一个动作数组,其中包含两个值范围从零到一的元素。您也可以使用连续和离散动作的组合,例如,对水平移动使用一个连续动作,对垂直移动使用大小为 2 的离散分支。

Heuristic()请注意,当您为Agent编写操作程序时,使用Agent的方法测试操作逻辑通常会很有帮助,这可以让您将键盘命令映射到操作。

持续行动

当Agent的策略具有连续动作时, ActionBuffers.ContinuousActions传递给AgentOnActionReceived()函数的是一个长度等于Continuous Action Size属性值的数组。数组中的各个值具有您赋予它们的任何含义。例如,如果您将数组中的元素指定为Agent的速度,则训练过程将学习通过此参数控制Agent的速度。

3DBall 示例使用具有两个控制值的连续动作。

3DBall

这些控制值应用于立方体的旋转:

    public override void OnActionReceived(ActionBuffers actionBuffers){var actionZ = 2f * Mathf.Clamp(actionBuffers.ContinuousActions[0], -1f, 1f);var actionX = 2f * Mathf.Clamp(actionBuffers.ContinuousActions[1], -1f, 1f);gameObject.transform.Rotate(new Vector3(0, 0, 1), actionZ);gameObject.transform.Rotate(new Vector3(1, 0, 0), actionX);}

默认情况下,我们提供的 PPO 算法的输出会将值预限制 ActionBuffers.ContinuousActions在 [-1, 1] 范围内。如果您计划在环境中使用第三方算法,最佳做法是手动限制这些值。如上所示,您可以在限制控制值后根据需要缩放控制值。

离散动作

当 Agent 的 Policy 采用离散动作时, ActionBuffers.DiscreteActions传递给 AgentOnActionReceived()函数的 是一个长度为 的整数数组Discrete Branch Size。定义离散动作时,Branches 是一个整数数组,每个值对应每个分支的可能性数量。

例如,如果我们想要一个可以在平面上移动和跳跃的Agent,我们可以定义两个分支(一个用于运动,一个用于跳跃),因为我们希望我们的Agent能够同时移动跳跃。我们将第一个分支定义为有 5 种可能的动作(不移动、向左、向右、向后、向前),第二个分支定义为有 2 种可能的动作(不跳、跳跃)。该 OnActionReceived()方法看起来像:

// Get the action index for movement
int movement = actionBuffers.DiscreteActions[0];
// Get the action index for jumping
int jump = actionBuffers.DiscreteActions[1];// Look up the index in the movement action list:
if (movement == 1) { directionX = -1; }
if (movement == 2) { directionX = 1; }
if (movement == 3) { directionZ = -1; }
if (movement == 4) { directionZ = 1; }
// Look up the index in the jump action list:
if (jump == 1 && IsGrounded()) { directionY = 1; }// Apply the action results to move the Agent
gameObject.GetComponent<Rigidbody>().AddForce(new Vector3(directionX * 40f, directionY * 300f, directionZ * 40f));
掩盖离散动作

使用离散操作时,可以指定某些操作对于下一个决策而言是不可能的。当Agent由神经网络控制时,Agent将无法执行指定操作。请注意,当Agent由其启发式方法控制时,Agent仍将能够决定执行屏蔽操作。为了禁止某个操作,请重写虚拟方法Agent.WriteDiscreteActionMask(),并调用 SetActionEnabled()提供的IDiscreteActionMask

public override void WriteDiscreteActionMask(IDiscreteActionMask actionMask)
{actionMask.SetActionEnabled(branch, actionIndex, isEnabled);
}

在哪里:

  • branch是要允许或禁止操作的分支的索引(从 0 开始)
  • actionIndex是您想要允许或禁止的操作的索引。
  • isEnabled是一个布尔值,指示是否应该允许该操作。

例如,如果你有一个有 2 个分支的Agent,并且在第一个分支(分支 0)上有 4 个可能的操作:“不做任何事”“跳跃”“射击” 和_“更换武器”。然后使用下面的代码,Agent将在下一个决策中“不做任何事”“更换武器”_(因为动作索引 1 和 2 被屏蔽)

actionMask.SetActionEnabled(0, 1, false);
actionMask.SetActionEnabled(0, 2, false);

Note:

  • SetActionEnabled如果要在多个分支上放置掩码,可以多次调用。
  • 在每个步骤中,操作的状态都会被重置并默认启用。
  • 您无法屏蔽分支的所有操作。
  • 您无法在连续控制中屏蔽动作。

IActuator 接口和 ActuatorComponents

Actuator API 允许用户将行为从 Agent 中抽象出来并放入组件中(类似于 ISensor API)。IActuator接口和Agent 类都实现了IActionReceiver接口,以便与当前的向后兼容Agent.OnActionReceived。这意味着在您决定使用 API 之前,您无需更改代码IActuator

与界面一样ISensor,该IActuator界面适用于高级用户。

抽象类ActuatorComponent用于IActuator在运行时创建实际。它必须与 附加到GameObjectAgent或附加到子GameObject。执行器及其所有数据结构在 期间初始化Agent.Initialize。这样做是为了防止运行时出现意外分配。

IActuator您可以在示例场景中找到实现的示例Basic注意Behavior Parameters:使用IActuator和时,无需调整Agent中的操作 ActuatorComponents

在内部,Agent.OnActionReceived使用IActuator将动作发送给Agent,尽管这主要是从用户那里抽象出来的。

总结

  • Agent可以使用Discrete和/或Continuous动作。
  • 离散动作可以有多个动作分支,并且可以屏蔽某些动作以使其不会被执行。
  • 一般来说,动作越少,学习就越容易。
  • 确保将连续动作大小和离散分支大小设置为每种动作所需的数字,而不是更大,因为后者可能会干扰训练过程的效率。
  • 连续动作值应被限制在适当的范围内。提供的 PPO 模型会自动将这些值限制在 -1 和 1 之间,但第三方训练系统可能不会这样做。

鉴于作者水平有限,本文可能存在不足之处,欢迎各位读者提出指导和建议,共同探讨、共同进步。

相关文章:

ML-Agents:智能体(三)

注&#xff1a;本文章为官方文档翻译&#xff0c;如有侵权行为请联系作者删除 Agent - Unity ML-Agents Toolkit–原文链接> ML-Agents&#xff1a;智能体&#xff08;一&#xff09; ML-Agents&#xff1a;智能体&#xff08;二&#xff09; ML-Agents&#xff1a;智能体&a…...

【harbor】离线安装2.9.0-arm64架构服务制作和升级部署

执行: .prepare 【作用就是产生一些配置信息 和docker-compose.yaml文件&#xff0c;然后docker-compose发布docker】 harbor官网地址&#xff1a;Harbor 参考文档可以看这里&#xff1a;部署 harbor 2.10.1 arm64 - 简书。 前提环境准备&#xff1a; 安装docker 和 docker…...

可视化-Visualization

可视化-Visualization 1.Introduction Visualization in Open CASCADE Technology is based on the separation of: on the one hand – the data which stores the geometry and topology of the entities you want to display and select, andon the other hand – its pr…...

完整化安装kubesphere,ks-jenkins的状态一直为init

错误描述&#xff1a; 打印日志&#xff1a; kubectl describe pod ks-jenkins-7fcff7857b-gh4g5 -n kubesphere-devops-system 日志描述如下&#xff1a; Events: Type Reason Age From Message ---- ------ ---- …...

halcon三维点云数据处理(十)locate_cylinder_3d

目录 一、locate_cylinder_3d例程代码二、gen_binocular_rectification_map函数三、binocular_disparity函数四、自定义函数select_best_candidates五、自定义函数remove_shadowed_regions 一、locate_cylinder_3d例程代码 1、读取或者创建3D形状模型&#xff0c; 2、根据双目…...

【CSS】设置滚动条样式

文章目录 基本语法用法案例 基本语法 在CSS中&#xff0c;可以使用 ::-webkit-scrollbar 和相关伪元素来为滚动条设置样式&#xff0c;但请注意这些伪元素是非标准的&#xff0c;主要用于WebKit内核浏览器&#xff08;如Chrome、Safari&#xff09;。 ::-webkit-scrollbar CSS …...

一个运行在浏览器中的开源Web操作系统Puter本地部署与远程访问

文章目录 前言1.关于Puter2.本地部署Puter3.Puter简单使用4. 安装内网穿透5.配置puter公网地址6. 配置固定公网地址 &#x1f4a1; 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击跳转到网站…...

支持selenium的chrome driver更新到131.0.6778.264

最近chrome释放新版本&#xff1a;131.0.6778.264 如果运行selenium自动化测试出现以下问题&#xff0c;是需要升级chromedriver才可以解决的。 selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only s…...

conda+jupyter+pycharm:如何在Windows conda环境下运行jupyter并使用浏览器或者pycharm运行.ipynb

1 安装conda 2 conda环境下安装jupyter pip install jupyter3 设置jupyter配置文件 1&#xff09;创建 jupyter_notebook_config.py文件 jupyter notebook --generate-config 2&#xff09;设置密码 3&#xff09;设置参数 直接将以下参数修改为自己的配置后复制到配置文件…...

生成式数据增强在大语言模型中的应用与实践

引言 近年来&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;如GPT、BERT等在自然语言处理&#xff08;NLP&#xff09;领域取得了巨大突破。然而&#xff0c;这些模型的性能往往依赖于大量高质量的训练数据&#xff0c;而在许多实际应用场景中&am…...

深度学习笔记11-优化器对比实验(Tensorflow)

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 一、导入数据并检查 二、配置数据集 三、数据可视化 四、构建模型 五、训练模型 六、模型对比评估 七、总结 一、导入数据并检查 import pathlib,…...

汽车免拆诊断 | 2007款保时捷Carrera S车行驶中发动机冷却液温度报警灯异常点亮

故障现象 一辆2007款保时捷Carrera S车&#xff0c;搭载3.8 L自然吸气发动机&#xff0c;累计行驶里程约为7.8万km。车主反映&#xff0c;车辆行驶一段距离后&#xff0c;组合仪表上的发动机冷却液温度报警灯异常点亮。为此&#xff0c;在其他维修厂已更换过节温器、发动机冷却…...

【蓝牙】win11 笔记本电脑连接 hc-06

文章目录 前言步骤 前言 使用电脑通过蓝牙添加串口 步骤 设置 -> 蓝牙和其他设备 点击 显示更多设备 更多蓝牙设置 COM 端口 -> 添加 有可能出现卡顿&#xff0c;等待一会 传出 -> 浏览 点击添加 hc-06&#xff0c;如果没有则点击 再次搜索 确定 添加成…...

what?ngify 比 axios 更好用,更强大?

文章目录 前言一、什么是ngify&#xff1f;二、npm安装三、发起请求3.1 获取 JSON 数据3.2 获取其他类型的数据3.3 改变服务器状态3.4 设置 URL 参数3.5 设置请求标头3.6 与服务器响应事件交互3.7 接收原始进度事件3.8 处理请求失败3.9 Http Observables 四、更换 HTTP 请求实现…...

EFCore HasDefaultValueSql (续2 HasComputedColumnSql)

前情&#xff1a;EFCore HasDefaultValueSql EFCore HasDefaultValueSql (续1 ValueGeneratedOnAdd)-CSDN博客 小伙伴在使用 HasDefaultValueSql 时&#xff0c;对相关的 ValueGeneratedOnAdd, HasComputedColumnSql 也有了疑问&#xff1a; HasComputedColumnSql 对于计算…...

springboot整合h2

在 Spring Boot 中整合 H2 数据库非常简单。H2 是一个轻量级的嵌入式数据库&#xff0c;非常适合开发和测试环境。以下是整合 H2 数据库的步骤&#xff1a; 1. 添加依赖 首先&#xff0c;在你的 pom.xml 文件中添加 H2 数据库的依赖&#xff1a; <dependency><grou…...

Unity自带的真车模拟系统,速度不够大r时如何以匀速上桥

在 Unity 中&#xff0c;如果你使用自带的真车模拟系统&#xff08;如 Wheel Collider&#xff09;时&#xff0c;发现车辆上桥时速度不够&#xff0c;导致无法顺利上坡&#xff0c;可以通过以下方法调整车辆的行为&#xff0c;使其能够以匀速上桥&#xff1a; 1. 调整 Wheel C…...

HarmonyOS鸿蒙-@State@Prop装饰器限制条件

一、组件Components级别的状态管理&#xff1a; State组件内状态限制条件 1.State装饰的变量必须初始化&#xff0c;否则编译期会报错。 // 错误写法&#xff0c;编译报错 State count: number;// 正确写法 State count: number 10; 2.嵌套属性的赋值观察不到。 // 嵌套的…...

C# 中的 Task 和 Async/Await

理解 C# 中的 Task 和 Async/Await&#xff1a;提升程序性能的利器 前言&#xff1a;在现代应用程序开发中&#xff0c;特别是在设计用户界面&#xff08;UI&#xff09;和进行网络请求等 I/O 操作时&#xff0c;异步编程变得尤为重要。C# 提供了一套强大的异步编程模型&#…...

vue.js 基于VueCli自定义创建项目

在使用Vue.js进行项目开发时&#xff0c;我们可以使用Vue CLI来快速创建项目。Vue CLI是一个基于Vue.js的命令行工具&#xff0c;它提供了一套完整的项目脚手架&#xff0c;可以帮助开发者快速搭建Vue.js项目的开发环境。 下面我们来详细解析如何使用Vue CLI自定义创建项目&am…...

Java中的反射机制及其应用场景

目录 什么是Java反射机制&#xff1f; 工作原理 主要应用场景 注意事项 总结 什么是Java反射机制&#xff1f; Java反射机制是一种强大的工具&#xff0c;它允许程序在运行时访问、检查和修改其本身的类和对象的信息。通过反射&#xff0c;开发者可以在不知道类的具体实现…...

金融项目实战 03|JMeter脚本实现手工接口测试

目录 一、环境说明 1、项目环境搭建 2、Mock说明 二、构造测试数据 1、通过系统页面构造 2、通过接口构造 3、通过数据库构造【推荐】 4、案例&#xff1a;构造借款业务数据 三、JMeter执行接口测试用例 1、获取图片验证码、获取短信验证码 2、注册脚本 3、登录脚本…...

前端工具汇总

1. vscode 下载地址&#xff1a;https://code.visualstudio.com/ vscode扩展汇总&#xff1a; 1.1 Code Spell Checker&#xff08;必须安装&#xff09; 代码拼写检查器 1.2 Auto Close Tag 自动添加HTML/XML的关闭标签 3. Auto Import 自动查找、解析并为所有可用导入…...

【学习路线】Python数据分析(数据科学) 详细知识点学习路径(附学习资源)

学习本路线内容之前&#xff0c;请先学习Python的基础知识 其他路线&#xff1a; Python基础 >> Python进阶 >> Python爬虫 >> Python数据分析&#xff08;数据科学&#xff09; >> Python 算法&#xff08;人工智能&#xff09; >> Pyth…...

Flutter 实现验证码输入框学习

学习flutter代码 实现一个用于输入验证码的自定义组件&#xff0c;它允许用户输入固定长度的验证码&#xff0c;并在输入完成时触发回调。 前置知识点学习 TextStyle TextStyle 是 Flutter 中用于定义文本样式的类。它提供了一组属性来控制文本的外观&#xff0c;如字体大小、…...

hutool糊涂工具通过注解设置excel宽度

import java.lang.annotation.*;Documented Retention(RetentionPolicy.RUNTIME) Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER}) public interface ExcelStyle {int width() default 0; }/*** 聊天记录*/ Data public class DialogContentInfo {/**…...

汽车基础软件AutoSAR自学攻略(四)-AutoSAR CP分层架构(3) (万字长文-配21张彩图)

汽车基础软件AutoSAR自学攻略(四)-AutoSAR CP分层架构(3) (万字长文-配21张彩图) 前面的两篇博文简述了AutoSAR CP分层架构的概念&#xff0c;下面我们来具体到每一层的具体内容进行讲解&#xff0c;每一层的每一个功能块力求用一个总览图&#xff0c;外加一个例子的图给大家进…...

有收到腾讯委托律师事务所向AppStore投诉带有【水印相机】主标题名称App的开发者吗

近期&#xff0c;有多名开发者反馈&#xff0c;收到来自腾讯科技 (深圳) 有限公司委托北京的一家**诚律师事务所卞&#xff0c;写给AppStore的投诉邮件。 邮件内容主要说的是&#xff0c;腾讯注册了【水印相机】这四个字的商标&#xff0c;所以你们这些在AppStore上的app&…...

SpringBoot操作spark处理hdfs文件

SpringBoot操作spark处理hdfs文件 1、导入依赖 <!-- spark依赖--><dependency><groupId>org.apache.spark</groupId><artifactId>spark-core_2.12</artifactId><version>3.2.2</version></dependency><depend…...

Spring Boot中的依赖注入是如何工作

Spring Boot 中的依赖注入&#xff08;Dependency Injection&#xff0c;简称 DI&#xff09;是通过 Spring 框架的核心机制——控制反转&#xff08;Inversion of Control&#xff0c;IOC&#xff09;容器来实现的。Spring Boot 基于 Spring Framework&#xff0c;在应用中自动…...

算法面试1

简述yolov1的网络架构 YOLOv1网络结构包括24层卷积层用来提取图像的特征&#xff0c;2层全连接层回归得到7730&#xff08;141420&#xff09;的张量。   网络结构大概如下&#xff1a;输入的是4484483通道的图像&#xff0c;就是RGB图像&#xff0c;然后用64个卷积核大小是…...

Android车机DIY开发之软件篇(八)单独编译

Android车机DIY开发之软件篇(八)单独编译 1.CarLauncher单独编译 CarLauncher源码位于 packages/apps/Car/Launcher 用Eclipse ADT 谷歌定制版编译而成&#xff0c;.mk .bp编译 Android13目录如下: alientekalientek:~/packages/apps/Car$ ls Calendar …...

保证Mysql数据库到ES的数据一致性的解决方案

文章目录 1.业务场景介绍1.1 需求分析1.2 技术实现方案 2.业界常用数据一致性方案分析2.1 同步双写方案2.2 MQ异步双写方案2.3 扫表定期同步方案2.4 监听binlog同步方案 1.业务场景介绍 1.1 需求分析 某知名的在线旅游平台&#xff0c;在即将到来的春季促销活动之前&#xff…...

Cursor实现go项目配置并实现仓库Gin项目运行

✅作者简介&#xff1a;大家好&#xff0c;我是 Meteors., 向往着更加简洁高效的代码写法与编程方式&#xff0c;持续分享Java技术内容。 &#x1f34e;个人主页&#xff1a;Meteors.的博客 &#x1f49e;当前专栏&#xff1a;知识备份 ✨特色专栏&#xff1a;知识分享 &#x…...

【网络云SRE运维开发】2025第2周-每日【2025/01/11】小测-【第11章NAT理论和实操考试】解析

文章目录 一、选择题二、理论题三、实操题 【网络云SRE运维开发】2025第2周-每日【2025/01/11】小测-【第11章NAT理论和实操考试】解析 一、选择题 在H3C设备上&#xff0c;NAT技术主要用于&#xff08; &#xff09; A. 提高网络安全性 B. 实现不同网段的通信 C. 将内部私有IP…...

drawDB docker部属

docker pull xinsodev/drawdb docker run --name some-drawdb -p 3000:80 -d xinsodev/drawdb浏览器访问&#xff1a;http://192.168.31.135:3000/...

页面顶部导航栏(Navbar)的功能(Navbar/index.vue)

这段代码是一个 Vue.js 组件&#xff0c;实现了页面顶部导航栏&#xff08;Navbar&#xff09;的功能。我将分块分析它的各个部分&#xff1a; 模板 (Template): <!-- spid-admin/src/layout/components/Navbar/index.vue --> <template><div class"navb…...

【人工智能】用Python进行对象检测:从OpenCV到YOLO的全面指南

对象检测是计算机视觉领域的核心任务之一&#xff0c;广泛应用于视频监控、自动驾驶、智能安防等多个场景。随着深度学习技术的发展&#xff0c;基于传统方法的对象检测逐渐被基于神经网络的先进模型所取代。本文将系统地介绍如何使用Python进行对象检测&#xff0c;重点探讨了…...

深度学习从入门到实战——卷积神经网络原理解析及其应用

卷积神经网络CNN 卷积神经网络前言卷积神经网络卷积的填充方式卷积原理展示卷积计算量公式卷积核输出的大小计算感受野池化自适应均值化空洞卷积经典卷积神经网络参考 卷积神经网络 前言 为什么要使用卷积神经网络呢&#xff1f; 首先传统的MLP的有什么问题呢&#xff1f; - …...

Flink概念知识讲解之:Restart重启策略配置

Flink概念知识讲解之&#xff1a;Restart重启策略配置 当 Task 发生故障时&#xff0c;Flink 需要重启出错的 Task 以及其他受到影响的 Task &#xff0c;以使得作业恢复到正常执行状态。 Flink 通过重启策略和故障恢复策略来控制 Task 重启&#xff1a;重启策略决定是否可以…...

Golang中使用 Mqtt

MQTT 是一种基于发布/订阅模式的 轻量级物联网消息传输协议 &#xff0c;可以用极少的代码和带宽为联网设备提供实时可靠的消息服务&#xff0c;它广泛应用于物联网、移动互联网、智能硬件、车联网、电力能源等行业。 本文主要介绍如何在 Golang 项目中使用 github.com/eclips…...

腾讯云下架印度云服务器节点,印度云服务器租用何去何从

近日&#xff0c;腾讯云下架印度云服务器节点的消息引起了业界的广泛关注。这一变动让许多依赖印度云服务器的用户开始担忧&#xff0c;印度云服务器租用的未来究竟在何方&#xff1f; 从印度市场本身来看&#xff0c;其云服务市场的潜力不容小觑。据 IDC 报告&#xff0c;到 2…...

STM32内置Flash

一、原理 利用flash存储用户数据需要注意查看&#xff0c;用户数据是否会覆盖芯片运行程序。 IAP&#xff08;在程序中编程&#xff09;利用程序修改程序本身&#xff0c;和OTA是一个原理。IAP在程序中编程支持任意一种通信下载。 ICP&#xff08;在电路中编程&#xff0c;通…...

面试:C++类成员初始化顺序

1、非静态数据成员&#xff1a;按它们在类定义的声明顺序初始化&#xff0c;不会按它们在初始化列表的顺序。 2、静态数据成员&#xff1a;在main函数启动之前&#xff0c;并且只初始化一次 3、基类构造函数&#xff1a;如果类从一个或多个基类继承而来&#xff0c;基类的构造…...

约束的笔记

约束的分类 为什么需要约束 为了保证数据的完整性 ①实体完整性&#xff08;Entity Integrity&#xff09;(同一个表中&#xff0c;不能存在两条完全相同无法区分的记录) ②域完整性&#xff08;Domain Integrity&#xff09; ③引用完整性&#xff08;Referential Integ…...

【Docker】安装registry本地镜像库,开启Https功能

下载镜像 docker pull registry:2 需要启动https功能&#xff0c;就要生成服务端的自签名的证书和私钥&#xff0c;以及在docker客户端安装这个经过签名的证书。 第一步&#xff1a;生成公私钥信息&#xff0c;第二步&#xff0c;制作证书签名申请文件&#xff0c; 第三步&…...

el-tree拖拽光标错位问题

背景&#xff1a;el-tree实现的分类树增加拖拽功能后&#xff0c;当分类树由于数量较多产生滚动条&#xff0c;如果分类树已滚动&#xff0c;进行拖拽时会造成光标错位的问题: 原因&#xff1a;el-tree拖拽光标定位的高度并未加上滚动的高度解决&#xff1a;将滚动的样式属性放…...

Linux权限

目录 一.Linux权限的概念 二.Linux权限管理 1.文件访问者的分类 2.文件类型和访问权限 1.文件类型 2.基本权限 3.文件权限的表示方法 1.字符表示法 2.八进制表示法 4.文件权限的相关访问方法 1.chmod 2.chown 3.chgrp 4.粘滞位 三.权限总结 一.Linux权限的概念 …...

mysql binlog 日志分析查找

文章目录 前言一、分析 binlog 内容二、编写脚本结果总结 前言 高效快捷分析 mysql binlog 日志文件。 mysql binlog 文件很大 怎么快速通过关键字查找内容 一、分析 binlog 内容 通过 mysqlbinlog 命令可以看到 binlog 解析之后的大概样子 二、编写脚本 编写脚本 search_…...

win32汇编环境,窗口程序中对按钮控件常用操作的示例

;运行效果 ;win32汇编环境&#xff0c;窗口程序中对按钮控件常用操作的示例 ;常用的操作&#xff0c;例如创建按钮控件&#xff0c;使其无效&#xff0c;改变文本&#xff0c;得到文本等。 ;将代码复制进radasm软件里&#xff0c;直接就可以编译运行。重点部分加备注。 ;>&g…...