软体机器人动态手内笔旋转研究
人工智能咨询培训老师叶梓 转载标明出处
软体机器人因其在安全互动方面的优势而备受关注,但在高速动态任务中却面临挑战。最近,卡内基梅隆大学机器人研究所的研究团队提出了一种名为SWIFT的系统,旨在通过学习和试错来实现软体机器人手的动态任务,特别是手内笔旋转这一高难度动作。
想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具(限时免费)。
1小时实战课程,您将学习到如何轻松上手并有效利用 Llama Factory 来微调您的模型,以发挥其最大潜力。
CSDN教学平台录播地址:https://edu.csdn.net/course/detail/39987
方法
为了解决手内动态笔旋转的问题,研究团队构建了一个软体机器人手,使用了多指全方位末端执行器(MOE)。这个软体手由三个腱驱动的软体机器人手指组成,每个手指由两个伺服电机控制四个腱。图 2 展示了MOE未激活和被腱激活的状态。伺服电机拉动腱使手指在垂直平面上弯曲,通过组合伺服电机的运动,可以驱动每个手指尖端到达其半球形工作空间上的不同位置。两个手指(记为m1和m2)连接在手基座的一侧,最后一个手指(记为m3)连接在另一侧。MOE手被安装在一个六自由度的机器人臂上。图 2 还展示了MOE及其手指配置的更多细节。
在每次尝试旋转笔之前,首先手动将笔放置在桌子上的固定槽中(图 3 初始状态)。这个固定装置过程使得抓握动作可重复。然后机器人臂执行一系列固定动作,将MOE手移动到笔的大致中心位置。MOE手指随后闭合以抓住笔,机器人臂将笔带到预设的位置和方向,然后执行下一次旋转动作(图 3 抓握和预旋转姿势)。这个过程一致地重置了系统。轨迹使用位于机器人臂前方的RGB-深度相机捕获。相机设置使其z轴指向m3手指,当MOE手达到预旋转配置时。
笔旋转任务被分解为抓握动作、旋转动作和接住动作。而不是优化系统中的所有自由度,研究团队将笔旋转动作参数化为一组简化的变量:伺服目标,这些是每个伺服电机内部PD控制器达到旋转笔的目标角度。有三个手指,每个手指有两个伺服电机,总共有6个参数。这个组件记为s ∈ R^6。不是使用绝对的伺服目标,而是让s表示相对于当前伺服角度的伺服角度变化。
延迟时间,受到人类笔旋转的启发,只有手指m1需要向内弯曲以接住旋转的笔,而手指m2和m3可以保持静止。因此,不搜索接住动作的伺服目标角度。手指m1上的伺服电机移动到旋转动作期间使用的相反角度,即如果m1上的两个伺服电机在旋转期间执行了θ1, θ2,它们将在接住期间执行-θ1, -θ2。根据旋转动作,笔的角速度将不同,导致手指m1需要保持伸展的时间不同,以免阻挡旋转的笔。
因此,还包括一个可搜索参数,用于延迟旋转动作结束和接住动作开始之间的时间。这个参数记为d ∈ R。抓握位置,增加了一个可搜索参数来控制旋转前的抓握位置。这个单一参数控制从抓握位置到笔中心的位移。这个参数记为g ∈ R。机器人臂预先编程将手指移动到笔的中心,然后根据抓握位置参数水平调整末端执行器位置。MOE手指根据抓握位置按照固定的动作序列闭合以抓住笔。在评估中,包含旋转动作伺服目标和延迟时间的动作参数化记为**(s, d) ∈ R^7**。包含上述所有三个组件的动作参数化记为**(s, d, g) ∈ R^8**。
图 5 总结了完整的SWIFT管道。为了计算奖励,系统使用RGB图像和RGB-D相机捕获的点云观察笔的状态,每秒30帧。在每个轨迹的第一帧中,系统使用霍夫圆变换定位笔上的红色和绿色球形标记。Segment Anything v2然后使用球体中心的像素坐标作为初始关键点,在笔的轨迹的每一帧上创建密集的分割掩码。
分割掩码有助于选择属于笔的3D点。围绕MOE指尖的边界框过滤掉分割点云中的异常点,并指示笔是否靠近手指。如果过滤后的点云包含的点数少于阈值,则认为笔在某一帧中掉落。为了检索笔的旋转状态,系统随后对过滤后的点云应用PCA。笔的方向由第一主成分的方向表示。
选择PCA而不是直接使用球体中心的深度信息,是为了增加对嘈杂的RGB-D数据的鲁棒性。系统最终将第一主成分向量投影到x、y和z平面上,计算笔在相机坐标系中的欧拉角。目标函数包含一个奖励项和一个跌落惩罚项。
系统在轨迹的每帧t中计算目标,总共有T帧。旋转奖励是,其中θtz是笔在相机坐标系中围绕z轴的旋转角度。指示函数1∥pt∥>n如果笔在帧pt中的过滤点数大于阈值n,则评估为1;否则为0。深度相机的z轴指向并平行于手指m3,因此这种旋转奖励鼓励笔围绕手指m3旋转。惩罚项
,惩罚笔根据指示函数的阈值从手指上移开太远的帧。应用权重因子λ将这两项合并为最终目标函数:
SWIFT使用协方差矩阵自适应进化策略(CMA-ES)优化动作参数。CMA-ES是一种无梯度进化策略,适用于优化非凸目标函数,如方程1。在每一代中,CMA-ES从多元正态分布中采样一组动作参数,由均值和协方差矩阵参数化,这些参数使用当前一代中表现最佳的候选者进行更新。为了防止机器人臂移动到笔外的抓握位置以及MOE手执行超出其机械限制的动作,限制优化算法的输出始终在变量的允许范围内。
评估
实验环境的设置(图 4)是为了实现可重复的笔抓取和相机观测。实验还包括一个笼子,以便在需要时由人工进行重置。研究者们测试了三种不同的笔配置,以评估SWIFT系统对物体物理属性变化的鲁棒性。所有三支笔长度均为304毫米,半径为4.25毫米,在视觉上是相同的。
Pen 1是平衡笔,其中心质量直接位于笔的长度中心,总质量为38克。Pen 2质量为26克,通过移除红色球形标记附近的可拆卸重物,使质量中心偏移。Pen 3则翻转,使质量中心朝向另一侧。此外,还测试了重量为38克、长度为216毫米的螺丝刀,以及重量为42克、长度为352毫米的刷子,其最大厚度为21.3毫米,最小厚度为6.7毫米。在10代的优化过程中调整动作参数,并在10次试验中评估这些参数的重复性。根据Hansen和Ostermeier的启发式方法,由于动作参数化最多有8个维度,因此选择CMA-ES的种群大小为4 + 3 log2 8 ≈ 13。对于刷子和螺丝刀的评估,优化持续到第一代结束时观察到成功的旋转或最多10代。
结果表明,同时优化抓握位置和旋转参数可以获得最佳性能,并在具有不同几何形状和质量分布的非笔物体上展示了泛化能力。
图 6展示了优化后成功的笔旋转。在优化过程中,所使用的奖励函数仅间接捕捉旋转动作是否成功。因此,由人工观察者标记试验的成功或失败。如果笔在旋转时越过手指m3并且没有从手指上掉落,则视为成功。
表 I报告了每种基线和消融方法的成功率。CMA-ES优化以启发式手工制作的动作参数初始化。然而,直接应用固定的动作初始化在所有三种笔设置中都没有成功,每种都以0/10的成功率失败(表中的第一行)。
结果表明,为MOE手特别优化动作对于任务成功至关重要。比较了SWIFT优化与不同动作参数化的结果,并在表 I中报告了结果。在“初始化”行中,SWIFT不优化抓握动作g,始终抓握笔的中心。在“无抓握优化”中,优化了(s, d),但不是抓握点g。机器人再次始终抓握笔的中心。通过这个实验,可以看到仅优化(s, d)的效果高度依赖于物体。在中心抓握的情况下,只能对笔2成功,成功率为7/10。抓握笔长度中心对笔2有效的原因可能是,笔2的最佳抓握点最接近笔的中心,如图 6所示。
这些结果强调了为系统优化抓握点和旋转动作参数对于适应不同笔属性的重要性。在“来自Pen 1的最佳动作”行中,展示了对笔1优化动作参数的结果,然后将动作应用于笔2和笔3。这表明了为每个新物体更新动作参数的必要性。直接使用来自笔1的最佳(s, d, g)参数对笔3的成功率为7/10,而相同的参数对笔2的成功率为0/10。
可以看到,在图 6中,笔1和笔3之间的最佳抓握点都在图像框架中笔的中心左侧。这可能解释了为什么来自笔1的最佳动作对笔3有一些成功。在这些实验中,所有三支笔在视觉上是相同的,因此取决于SWIFT与物体的互动来寻找最佳的动作参数。在“完全优化(提议)”行中,发现为每个物体优化(s, d, g)的成功率为所有笔的10/10。使用完全优化对笔2的成功率高于不优化抓握的成功率,也表明有能力搜索抓握位置可以寻找更稳健的旋转动作。
最后,实验还测试了SWIFT应用于两个其他物体:刷子和螺丝刀。图 7显示了这些泛化实验的结果。SWIFT分别实现了刷子和螺丝刀的10/10和5/10的成功率。螺丝刀由于其不规则的形状特别具有挑战性。然而,SWIFT优化的动作参数实现了成功的旋转,突出了SWIFT的多功能性。
论文链接:https://arxiv.org/pdf/2411.12734
项目链接:Soft Robotic Dynamic In-Hand Pen Spinning
相关文章:
软体机器人动态手内笔旋转研究
人工智能咨询培训老师叶梓 转载标明出处 软体机器人因其在安全互动方面的优势而备受关注,但在高速动态任务中却面临挑战。最近,卡内基梅隆大学机器人研究所的研究团队提出了一种名为SWIFT的系统,旨在通过学习和试错来实现软体机器人手的动态…...
福昕PDF低代码平台
福昕PDF低代码平台简介 福昕PDF 低代码平台是一款创新的工具,旨在简化PDF处理和管理的流程。通过这个平台,用户可以通过简单的拖拽界面上的按钮,轻松完成对Cloud API的调用工作流,而无需编写复杂的代码。这使得即使没有编程经验的…...
【笔记】Linux中使用到的一些操作
1、查找指定文件并执行删除 find . -name "checkpoint_*_*.pth" -type f -exec rm -f {} \; 2、查看每个文件夹占用空间 du -h --max-depth1 3、移动文件 mv valid.zip ./xg mv 文件 目标位置 4、删除文件夹 rmdir folder rm -r folder # 递归删除文件夹下所有内容…...
深入浅出:PHP中的表单处理全解析
引言 在Web开发的世界里,表单是用户与服务器之间交互的重要桥梁。它们允许用户提交信息,并通过后端语言(如PHP)进行处理。本文将带你深入了解PHP中的表单处理,从基础的创建和提交到高级的安全措施和实用技巧ÿ…...
智已汽车x-signature 登录算法 签到
智已汽车x-signature 登录算法 签到 python代码成品...
一、测试工具LoadRunner Professional脚本编写-录制前设置
设置基于URL的脚本 原因:基于HTML的脚本会导致login接口不能正确录制 设置UTF-8 原因:不勾选此项会导致脚本中文变为乱码...
LSTM+改进的itransformer时间序列预测模型代码
代码在最后 本次设计了一个LSTM基于差分多头注意力机制的改进的iTransformer时间序列预测模型结合了LSTM(长短期记忆网络)和改进版的iTransformer(差分多头注意力机制),具备以下优势: 时序特征建模能力&am…...
linux中 Systemd 和 cgroups 的关系详解
systemd 是 Linux 的一个初始化系统和服务管理器,它依赖于 Linux 内核的 cgroups(Control Groups)功能来实现对系统资源的高效管理。以下是对两者关系的详细解读: 1. 什么是 cgroups? cgroups 是 Linux 内核提供的一种…...
发布Apache2.4** 局域网无法访问
1。 防火墙关闭 或者 设置入站规则 2,查看httpd.conf 文件 设置配置 原 Listen 80 修改成 Listen 192.168.31.127:90 3.确保 本地IP 是否正确...
【JAVA】Java高级:多数据源管理与Sharding:在Spring Boot应用中实现多数据源的管理
一个电商平台可能需要一个数据库来存储用户信息,另一个数据库来存储订单信息,甚至可能还有一个数据库用于数据分析。这种情况下,如何在Spring Boot应用中实现多数据源的管理就显得尤为重要。 1. 多数据源管理的重要性 在实际应用中…...
Android 分词的两种方式
前言: 本文分别介绍了原生和三方(Jieba)两种分词方式的使用和注意事项 1、安卓原生BreakIterator分词 比较简单,但是效果不太行 /*** 功能:原生分词* 参数:text:需要分词的语句* 返回值:return…...
【开源免费】基于SpringBoot+Vue.JS中小型医院网站(JAVA毕业设计)
博主说明:本文项目编号 T 078 ,文末自助获取源码 \color{red}{T078,文末自助获取源码} T078,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…...
数据结构代码归纳
1.线性表 线性表的顺序表示 定义与初始化 typedef struct SqList{ElemType data[MaxSize];//ElemType *data 开动态数组 int length; }Sqlist; void InitList(SqList &L){L.length0;//若静态数组//若动态数组 //L.data(ElemType*)malloc(sizeof(ElemType)*MaxSize); }…...
2024-金盾信安杯线上赛 WP
Misc 大赛宗旨 记事本打开,一眼零宽隐写 B 神工具一把梭,得到一串 base 编码 base64 解码得到 flag flag 值:flag{5d5555fa-1303-4b43-8eef-d6ea7c64c361} esab 根据题目 esab 可以发现这正是 base 的逆向,所以可以先逆向一下…...
iOS如何自定义一个类似UITextView的本文编辑View
对于IOS涉及文本输入常用的两个View是UITextView和UITextField,一个用于复杂文本输入,一个用于简单文本输入,在大多数开发中涉及文本输入的场景使用这两个View能够满足需求。但是对于富文本编辑相关的开发,这两个View就无法满足自…...
JavaWeb文件上传
文件上传总览 文件上传主要是指将本地文件(包括但不限于图片、视频、音频等)上传到服务器,提供其他用户浏览或下载的过程。在日常生活中,我们在很多情况下都需要使用文件上传功能,比如:发微博、发朋友圈等…...
C#实现1ms定时器不精准?如何实现一个高性能高精度的1ms定时器?(附完整示例Demo)
在C#日常开发中,我们经常需要使用定时器(Timer)进行周期性任务的执行。 例如,每隔1秒打印一条日志,或每隔100毫秒执行某个数据刷新逻辑。 但是,当我们尝试在C#中实现一个1毫秒(1ms)…...
LeetCode 3. 无重复字符的最长子串
题目链接:3. 无重复字符的最长子串 首先想到的就是暴力破解,直接两层循环遍历,因为它说求无重复,那就可以用 set 来存储遍历到的字符,如果遍历到了同样的字符(在 set 中存在),就直接跳出第二层循环&#x…...
深度解析 Ansible:核心组件、配置、Playbook 全流程与 YAML 奥秘(上)
文章目录 一、ansible的主要组成部分二、安装三、相关文件四、ansible配置文件五、ansible 系列 一、ansible的主要组成部分 ansible playbook:任务剧本(任务集),编排定义ansible任务集的配置文件,由ansible顺序依次执…...
记一次由docker容器使得服务器cpu占满密码和密钥无法访问bug
Bug场景: 前几天在服务器上部署了一个免费影视网站,这个应用需要四个容器,同时之前的建站软件workpress也是使用docker部署的,也使用了三个容器。在使用workpress之前,我将影视软件的容器全部停止。 再使用workpress…...
功能篇:JAVA实现记住我功能
在Java Web应用程序中实现“记住我”功能,通常涉及以下几个步骤: 1. 创建一个持久化的标识符(如一个令牌或哈希值),并将其与用户账户关联。 2. 将这个标识符保存到客户端的cookie中。 3. 在服务器端,当用户…...
实现 DataGridView 下拉列表功能(C# WinForms)
本文介绍如何在 WinForms 中使用 DataGridViewComboBoxColumn 实现下拉列表功能,并通过事件响应来处理用户的选择。以下是实现步骤和示例代码。 1. 效果展示 该程序的主要功能是展示如何在 DataGridView 中插入下拉列表,并在选择某一项时触发事件。 2.…...
2024年上半年网络工程师综合知识真题及答案解析
2024年上半年网络工程师综合知识真题及答案解析 以下不属于5G网络优点的是()A.传输过程中消耗的资源少,对设备的电池更友好B.支持大规模物联网,能够连接大量低功耗设备,提供更高效的管理C.引入了网络切片技术,允许将物理网络划分为多个虚拟网络D.更好的安全性,采用更…...
数合平台功能-管理角色
前一阵,有朋友问到,看咱们产品的功能描述很强大,但很多功能看不到。为此,基于数据建模产品最新版本,和大家一起串一下产品的功能和使用路径。本节重点说一下管理角色有哪些功能 一、功能清单 从上图中可以看到&#x…...
LVGL9 开关控件 (lv_switch) 使用指南
文章目录 前言主体1. **控件概述**2. **控件的样式和组成部分**3. **使用控件**改变开关状态 4. **事件处理**5. **按键支持**6. **示例代码** 总结 前言 lv_switch 是 LittlevGL 提供的一个开关控件,外观类似一个小型滑块,常用于实现开关功能ÿ…...
麒麟 V10 系统(arm64/aarch64)离线安装 docker 和 docker-compose
前期准备 查看操作系统版本,跟本文标题核对一下 uname -a查看操作系统架构 uname -m下载离线包 下载 docker 离线包 地址:https://download.docker.com/linux/static/stable/ 选择系统架构对应的文件目录:aarch64,我目前使用…...
独立ip服务器有什么优点?
网站的性能和安全性直接影响到用户体验和业务发,独立IP服务器作为一种主流的托管方式,因其独特的优势而受到许多企业和个人站长的青睐。与共享IP相比,独立IP服务器到底有哪些优点呢? 使用独立IP的用户不必担心与其他网站共享同一…...
oracle之用户的相关操作
(1)创建用户(sys用户下操作) 简单创建用户如下: CREATE USER username IDENTIFIED BY password; 如果需要自定义更多的信息,如用户使用的表空间等,可以使用如下: CREATE USER mall IDENTIFIED BY 12345…...
深入浅出:PHP中的数组操作全解析
文章目录 引言理解数组创建数组使用方括号使用array()函数 访问数组元素数值索引数组关联数组 遍历数组使用for循环使用foreach循环 添加和修改数组元素添加元素修改元素 删除数组元素删除单个元素删除整个数组 多维数组创建多维数组访问多维数组元素 常用数组函数获取数组长度…...
2024年12月7日历史上的今天大事件早读
1732年12月07日英国皇家大剧院在伦敦开幕 1798年12月07日清代诗人袁枚逝世 1889年12月07日第一个充气轮胎受专利保护 1916年12月07日劳合-乔治出任英国首相 1926年12月07日第一台电冰箱受美国专利保护 1937年12月07日南京保卫战正式打响 1941年12月07日日本偷袭珍珠港 1…...
pymysql模块详解
华子目录 简介安装pymysql连接对象常用方法游标对象常用方法数据库操作查改批量增加删 使用with语句总结 简介 pymysql是一个用于Python编程的第三方模块,用于连接和操作MySQL数据库。它提供了一个简单而强大的接口,使开发者能够轻松地在Python程序中执…...
计算机网络研究实训室建设方案
一、概述 本方案旨在规划并实施一个先进的计算机网络研究实训室,旨在为学生提供一个深入学习、实践和研究网络技术的平台。实训室将集教学、实验、研究于一体,覆盖网络基础、网络架构、网络安全、网络管理等多个领域,以培养具备扎实理论基础…...
WEB安全 PHP学习
PHP基础 PHP编码显示问题 header ("Content-type: text/html; charsetgb2312"); header("Content-Type: text/html;charsetutf-8"); windows需要使用gbk编码显示 源码是 <?php header ("Content-type: text/html; charsetgb2312"); sys…...
Redis高阶之容错切换
当一台主机master宕掉之后,他的从机会取代主机么? 查看集群状态 127.0.0.1:6385> cluster nodes c8ff33e8da5fd8ef821c65974dda304d2e3327f9 192.168.58.129:638216382 slave f6b1fd5e58df90782f602b484c2011d52fc3482d 0 1733220836918 1 connecte…...
构建高效OTA旅游平台的技术指南
1. 引言 在信息技术高速发展的今天,互联网深刻地改变了人们的旅行方式。传统的旅行社模式逐渐被在线旅游平台所取代,OTA(Online Travel Agency,在线旅行社)旅游平台应运而生,成为人们获取旅游信息、预订旅…...
数据结构 (25)图的存储结构
前言 数据结构中的图是一种用于表示多对多关系的结构,其存储结构主要有两种:邻接矩阵和邻接表。 一、邻接矩阵 定义:邻接矩阵是一个二维数组,用于存储图中各个顶点之间的关系。数组的行和列分别代表图中的顶点,元素的值…...
【C语言】fscanf 和 fprintf函数
【C语言】fscanf 和 fprintf函数 文章目录 [TOC](文章目录) 前言一、定义二、代码例程三、实验结果四、参考文献总结 前言 使用工具: 1.编译器:DEVC 2.C Primer Plus 第六版-1 提示:以下是本篇文章正文内容,下面案例可供参考 一…...
C#调用c++创建的动态链接库dll文件
在C#中调用外部DLL文件是一种常见的编程实践,它具有以下几个重要意义:1.代码重用;2.模块化;3.性能优化;4.安全性;5.跨平台兼容性;6.方便更新和维护;7.利用特定技术或框架;…...
【数字电路与逻辑设计】实验一 序列检测器
文章总览:YuanDaiMa2048博客文章总览 【数字电路与逻辑设计】实验一 序列检测器 一、实验内容二、设计过程(一)作出状态图或状态表(二)状态化简(三)状态编码 三、源代码(一ÿ…...
沈阳工业大学《2024年827自动控制原理真题》 (完整版)
本文内容,全部选自自动化考研联盟的:《沈阳工业大学827自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2024年真题 Part1:2024年完整版真题 2024年真题...
Javascript Clipper library, v6(介绍目录)
1.老祖宗C#版的Clipper2 Clipper2库可以对简单和复杂的多边形执行交集、并并、差分和异或布尔运算。它还执行多边形偏移 github地址:GitHub - AngusJohnson/Clipper2: Polygon Clipping and Offsetting - C, C# and Delphi 2.目前的移植版本 基于C#版的移植版本…...
uniapp+vue3+ts请求接口封装
1.安装luch-request yarn add luch-requestnpm install luch-request2.新建文件src/utils/request.ts 需要自己修改config.baseURL和token(获取存储的token) // import HttpRequest from luch-request; import type { HttpRequestConfig, HttpRespons…...
Spring Boot中的@GetMapping注解可以用于处理HTTP GET请求,并且可以接收对象参数,详细示例
下面内容来自Ai回答,经过亲自验证,正确 Spring Boot中的GetMapping注解可以用于处理HTTP GET请求,并且可以接收对象参数。 接收对象参数的基本方式 在Spring Boot中,可以通过GetMapping注解接收对象参数,这通…...
详解Vue设计模式
详解 vue 设计模式 Vue.js 作为一个流行的前端框架,拥有许多设计模式,这些设计模式帮助开发者更好地组织和管理代码,提升代码的可维护性、可扩展性和可读性。Vue 设计模式主要体现在以下几个方面: 1. 组件化设计模式 (Compon…...
webpack 题目
文章目录 webpack 中 chunkHash 和 contentHash 的区别loader和plugin的区别?webpack 处理 image 是用哪个 loader,限制 image 大小的是...;webpack 如何优化打包速度 webpack 中 chunkHash 和 contentHash 的区别 主要从四方面来讲一下区别&…...
Mysql - 存储引擎
一 MYSQL体系结构简介 MYSQL的体系结构可以分为四个层级,从上往下依次为: 1. 连接层: 最上层为客户端以及一些连接服务,包含连接操作,例如JAVA想要与MYSQL建立连接就需要用到JDBC,PHP语言与Python也可以连接到MYSQL&am…...
【实战教程】使用YOLOv8 OBB进行旋转框目标检测的数据集定义与训练【附源码】
《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...
怎么实现邮件营销自动化?
邮件营销能够出色地帮助我们与客户建立良好关系。无论是新客户还是老客户,都可以通过邮件来达成较为良好的客户关系。然而,从消费者的角度来看,每个人都有自己独特的习惯和特点,没有人希望收到千篇一律、营销意味过重的邮件。因此…...
华为服务器使用U盘重装系统
一、准备工作 下载官方系统(注意服务器CPU的架构是x86-64还是aarch64,不然可能报意想不到的错)制作启动U盘(下载rufus制作工具,注意文件系统选FAT32还是NTFS) 二、安装步骤 将U盘插入USB接口重启服务器…...
空安全编程的典范:Java 8中的安全应用指南
文章目录 一、Base64 编码解码1.1 基本的编码和解码1.2 URL 和文件名安全的编码解码器1.3 MIME Base64编码和解码 二、Optional类三、Nashorn JavaScript 一、Base64 编码解码 1.1 基本的编码和解码 Base64 编码: 使用 Base64.getEncoder().encodeToString(origin…...