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

【2021集创赛】Arm杯二等奖-基于Arm核的智慧病房手势识别方案

团队介绍

参赛单位:上海交通大学
队伍名称:芯灵手巧
指导老师:王琴、景乃锋
参赛队员:林圣凯、林新源、莫志文
总决赛奖项:二等奖

1.项目概述

1.1 选题背景

我们的选题背景是考虑到很多卧床病人不便于独自向医护人员提出护理请求,因此我们想到在FPGA上部署智能SOC,实现手势识别功能,从而使病人可以使用手势来发出护理请求。
在这里插入图片描述

1.2 方案设计

我们共实现了两套方案,其中一套数据通路是从板载摄像头输入,HDMI显示图像,加速器处理后将结果上传上位机
另一套是由小程序采集图像,经服务器、上位机传至加速器,再经由原路返回小程序
在这里插入图片描述

1.3 项目工作

我们完成了赛方要求实现的所有基本功能,如表所示。
另外,我们超额完成了网口输入视频流功能、针对医疗应用场景的上位机与小程序设计,同时我们的系统支持不同权重用于不同应用,使得系统应用拓展性进一步提升。
在这里插入图片描述

1.4 性能参数

我们的项目已经在Artix-7 200T开发板上实现,在资源开销方面,我们使用了200t开发板三成以下的寄存器和DSP,大约一半的查找表,以及约六成的BRAM。我们的加速器可以每秒处理73帧左右,在测试集上的检测精度达到了约96%。我们的系统工作在50MHz的时钟频率,vivado实现之后显示其板级功耗为2.138W,可计算出能效比为34.14fps/W,经过测试,该能效比远远高于使用GPU或CPU推理时的能效比。
在这里插入图片描述

2.硬件介绍

2.1 整体架构

我们的整体系统包括图像采集与显示子系统以及加速器子系统两大部分。
在这里插入图片描述

2.2 图像输入与显示子系统

我们的图像采集与显示子系统 可以经由摄像头或网口输入图像,经过MUX选择之后送入加速器。由此我们实现了多数据通路功能。
在这里插入图片描述

特别地,我们的网口支持360Mbps的网口速率,并在板上实现了UDP、IP、MAC层的接收功能,该部分电路与板载的PHY芯片配合实现了完整以太网接收功能。
在这里插入图片描述

2.3 加速器子系统

加速器子系统包括加速器及外围缓存。
视频流由buffer输入,推理结果输出到CPU进行展示。
我们使用了Ping-pong buffer使图像输入、计算并行,提高性能。
在这里插入图片描述

2.4 加速器子系统的优化

在复赛之后,我们团队对系统进行了优化。为提高性能,加速器使用100MHz的时钟,为了解决跨时钟域与加速器通信的问题,我们使用AHB时钟转换接口控制加速器。我们利用加速器权重稀疏性,大幅减少BRAM占用。
为解决权重输入的控制问题,我们对权重按规律分组之后,降低了控制难度。
在这里插入图片描述

经过了上述优化,我们通过划分时钟域提升了推理帧率,提升幅度达94.2%,同时我们的能效比相比之前提升达68%;我们利用权重稀疏性减少了15.52%的BRAM占用。由此我们的加速器子系统在板上资源占用和性能等方面均取得了明显的改善。最终,经过我们的实际对GPU与CPU的能效比进行测试,我们的SoC系统的能效比远高于GPU和CPU的能效比,是GPU的5倍,CPU的十倍。我们SoC的优化效果显著。
在这里插入图片描述

3.软件工作介绍

3.1 加速器结构

我们的加速器是基于SqueezeNet设计,将原本的Fire模块进行了一定程度的精简,去除了原本Fire模块中的一些卷积核。
同时我们使用Dorefa方法对网络参数进行低比特量化,我们将大多数权重量化至1bit,输入和输出量化为5bit。
加速器使用HLS编写,并综合之后生成IP,挂载到了总线上。
在这里插入图片描述

3.2 数据集准备

我们设计了基于美国手语字母的一套手势,我们将原本的字母的含义映射到病房场景下的各种具体含义,如右表所示。
为了训练神经网络,我们自己制作了一套大约一万张图片的数据集,之后随机进行旋转、饱和度、对比度等调整以提升训练效果,最终效果如右下图所示。
在这里插入图片描述

3.3 加速器训练结果

之后我们使用TensorFlow框架进行训练,训练过程中,Top1错误率如右图所示,由图可见,训练过程顺利收敛。最终我们训练Top1准确率达到了约96%
在这里插入图片描述

3.4 上位机与小程序

为了提升系统的实际应用效果,我们使用C#编写了配套的上位机,编写了配套的小程序并搭建了服务器。最终我们实现了可以通过小程序、服务器、上位机与FPGA网口通信。
在这里插入图片描述

4.仿真与上板测试

我们分别对SoC、DDR、DATA_CACHE、加速器模块、SD卡、网口模块的进行了modelsim 仿真与上板测试结果或是上板之后利用 Vivado 下的集成逻辑
分析仪(ILA) 对于关键信号线的抓取与验证。在通过以下各个模块的仿真与验证之后, 我们认为相应模块的配置与运行结果都是符合预期的。

4.1 SoC基本功能仿真

在整个项目开始之初,我们在modelsim对SoC基本系统进行了RTL仿真,结果如图4-1所示,在上电复位后,系统总线有相应变化,说明SoC基本系统已正常运行。
在这里插入图片描述

4.2 DDR模块

通过使用AHBlite-AXI转接桥,我们将DDR挂载在L1总线矩阵上,并用ila对关键信号进行抓取。如图4-2所示:当总线向DDR连续写入数据时,总线的READY和READYOUT的实现正确握手,数据也正确传递到DDR的相应地址。
在这里插入图片描述

4.3 SD卡模块

SD卡在上电后自动进行初始化,在一定时间后可以抓到sd_init_done信号变为高电平,表示SD卡正常初始化完成。
在这里插入图片描述

随后,依次配置SD卡的读扇区地址并开始设置开始读取到片上BRAM。该过程总线信号如下。
在这里插入图片描述

当SD卡一个扇区读取到片上完成时,会拉高sd_sec_read_end,表示当前扇区已经读取完成,如图4-5。
在这里插入图片描述

之后CPU便可以查询到SD卡模块相应寄存器的变化为0x00010000,此即读取完成状态,如图4-6。
在这里插入图片描述

在之后,CPU就可以直接读取暂存有扇区数据的BRAM,如图4-7。这样SD卡一个读取过程已经完成,此后循环此过程即可。至此SD卡正常工作状态已经得到验证。
在这里插入图片描述

4.4 加速器模块

对于加速器模块,我们进行了从TensorFlow平台测试,HLS C仿真,HLS C/RTL协同仿真,加速器搭载在最小系统仿真等非常规范的设计流程。
首先是TensorFlow平台测试,如下图所示:
在这里插入图片描述

如上图所示,几次测试的Top1-错误率分别为4.8%, 0.8%与4.0%,平均为4.73%。
接着,我们编写了HalfSqueezeNet的HLS C代码,并对其进行了多轮C仿真验证其正确性。下图为举例说明。
送入的图像为如下所示。
在这里插入图片描述

美国标准手语如下:American Sign Language。
在这里插入图片描述

对比可知,这是手势B。将其通过matlab转化为565RGB图像,使其与实际摄像头送入的图片格式相同。
在这里插入图片描述

对其进行C仿真。(console中的红框表示是C仿真)
在这里插入图片描述

可以看出,C仿真的所得到结果为class=1,由于我们设置class=0为A,class=1为B……以此类推。对比美国标准手势图,可以得知手势的分类结果是正确的。

接下来进行C/RTL协同仿真。(console中的红框表示是协同仿真)
在这里插入图片描述

在这里插入图片描述

可以看出,分类所得的class=1,即手势B,结果正确。

最后进行最小系统仿真。在搭建完最小系统之后,我们HLS生成的AXI lite与AXI Stream规范进行配置,并将图片和权重转化为COE格式送入BRAM例化。最终所得的结果如下。
在这里插入图片描述

可以看出,最终result[6]的结果为1,即表明最终所得的分类结果为B。
以上,HalfSqueezeNet的TensorFlow测试、C仿真、C/RTL协同仿真、最小系统仿真全部完成,我们有充分的理由相信加速器是可信可靠的。

4.5 网口模块

对于网口模块,我们对网口的最小系统通过抓市面上已有的网口调试助手向FPGA发送数据时抓ILA信号验证了FPGA网口模块的正确性;接着我们自己用C#编写了带网口传输功能的上位机,并通过抓ILA来验证上位机功能的正确性。

首先在系统中将电脑的网口发送端口设置IP为与FPGA中相同的IP地址,从而使得能顺利通过FPGA中我们编写的UDP协议校验。
在这里插入图片描述

接着,我们在cmd命令行中添加新的静态表项,将FPGA的IP地址192.168.0.120设置为对应的MAC地址设置为00-AA-00-62-C6-09。
利用arp -a命令查看绑定的IP与MAC地址,可以看到对应的表项已成功添加。
在这里插入图片描述

下载并打开网口调试助手,设置发送端口与目的端口。发现可以成功打开端口。
在这里插入图片描述

点击数据发送,在wireshark上可以抓到对应的长度为22422bytes的udp数据包,其源IP地址为192.168.0.3,目的IP地址为192.168.0.120,信息与之前所设置的可以完全匹配。(下图No.5)
在这里插入图片描述

此时向FPGA烧入带有ILA的最小系统比特流,观察数据。发现可以收到电脑发出的UDP包,且数据与长度匹配。
在这里插入图片描述

至此,已经可以验证FPGA上的网口是正确无误的;接着需要编写上位机程序。我们利用Visual Studio的C#作为开发环境,编写了带有网口传输、串口打印、与服务器进行HTTP协议通信的上位机。其界面如下:
在这里插入图片描述

设置对应的源IP、端口号与目的IP、端口号,并生成需要发送的byte流。点击发送。
在这里插入图片描述

此时,在ILA中再次抓取数据。
在这里插入图片描述

可以看到,数据能够被正确读取。考虑到一个UDP包能传输的字节数有限,我们最终设置每次传输224X2个RGB565数据,即每次传输896个bytes,共计传输112次来完成一张图片传输的协议。其中,Img_start信号为FPGA中每张图片开始传输的信号。
至此,网口部分的验证已经全部完成。

4.5 整体测试结果

在这里插入图片描述

5.项目总结

目前该项目在FPGA平台上实现了基于Arm Cortex-M3 DesignStart处理器的面向无人值守的信号处理SoC,可以应用于智慧病房检测等各种无人系统的应用,非常契合赛题的要求,且由于系统的通用性,有着广大的潜在应用场景。

该目标检测SoC基于Arm处理器,采用了两级AHB总线结构,系统中挂载了图像采集与显示模块,SD卡模块,DDR模块,加速器模块等,系统使用摄像头采集图像送入加速器与HDMI模块分别进行目标检测与显示,在我们的设计之下,在系统工作过程中软硬件得以良好协同。我们的系统可以实现对视频流实时、稳定地检测与显示。

由于FPGA的资源十分有限,我们选用了伯克利&斯坦福团队提出的SqueezeNet网络,该网络专为移动或嵌入式场景开发,在保持一定精度的前提下降低了网络大小。同时,为了使该网络可以做成硬件加速器,对该网络又进一步采用了融合BN层,参数归一化和网络结构精简(删除Fire模块中的1X1卷积)等手段使得真正上板的网络进一步减小而精度的下降尚可接受。另外,由于不同网络层之间大多结构相同,我们在HLS的网络中采取了折叠结构实现,使用软硬件协同控制加速器工作时的数据流向,进一步大大节省了有限的板上资源。我们利用数据增强的 DAC SDC 数据集对网络进行了训练,并对权重进行量化。该数据集面向无人机场景,均为无人机拍摄的图片,待识别物体被分为 12 类。

在实际部署中,为进一步节省片上资源,我们对 SqueezeNet 网络进行了简化, 并采用折叠架构。SqueezeNet 主要由若干个 Fire 模块构成,我们仅设计一个简化的、参数可配置的 Fire 模块,称之为 HalfFire 模块。通过对加速器的配置来控制 HalfFire 模块的例化和数据流的走向。数据通过若干次加速器(每次的配置参数均不同)处理后,即可得到检测结果。折叠架构节省了大量的片上资源,便于目标检测与分类 SoC 系统在边缘端的部署。

通过实验测试,该加速器可实现软件平均准确率 96.27%的检测精度; 完成一帧图像的处理平均耗时 28.6 ms,系统吞吐率 34.97 FPS;系统的板级动态 功耗为 1.697 W,完成一帧图像的处理耗能 0.0468 J,能效比为 21.35 FPS/W。同时,系统性能相比于 CPU 加速比显著,相比于 GPU 能效比提升显著。综合来看,系统的性能指标优势显著,达到了2017年IEEE国际一流会议/期刊发表论文相当水平。

该项目在 FPGA 平台上实现了目标检测 SoC 的部署,结合上位机的串口与语音播报,可实现对病房实时、稳定的检测,满足患者的各项需求。该项目实际作为一套通用的加速器平台系统可部署于边缘端,除用于智慧病房检测外,还可通过在SD卡存入训练好的各套权重,最终用于智能视频监控、聋哑人友好的无接触智慧电梯等各个场景,具备较高的通用性,市场前景广阔。

6.参赛体会

参加集创赛作为一段宝贵的实践经验,我们收获颇丰。我们团队大致可以总结出如下几条参赛经验
1. 扎扎实实一步步仿真、验证每部分电路,再尝试整合。SoC设计是一个很严谨细致的工程,有任何一个地方有再小的一个bug都会导致系统整体的错误表现。就像我们在复赛前,因为给一些子系统加了新特性之后,比较急切想整合验证效果,便跳过了子系统的仿真验证,直接全都挂到总线上就开始验证,结果出现了问题。团队一起检查了一段时间之后最终还是决定先给各个子系统分别仿真验证,确定子系统没问题之后再整合。最后果然在这个过程中发现是一个子系统存在bug。这次经历让我们得到了深刻的教训:心急吃不了热豆腐,凡事还是要踏踏实实一步一步走。
2. 一切以上板结果正确为最终标准。在本次竞赛的制作过程中,同样是复赛前,我们有几个子系统通过了小系统仿真,之后我们都觉得这部分应该已经没问题了,当时觉得既然是同样的代码仿真过了上板应该也没问题。但是我们团队就遇到了一次尽管仿真正确但上板结果不对的情况,最终只能根据ILA抓信号的结果来debug,而且打乱了我们原本的项目计划。在这之后我们更深刻地理解了指导老师经常催促我们赶紧上板验证的原因。我们懂得了仿真永远只是理论验证,功能验证,而硬件即使做得再完美也有不理想的现象,就完全可能导致与仿真结果对不上的问题。
3. 多学多看多思考,多看看厂商给出的技术文档,以及留出充足的时间来对硬件进行debug。以网口的学习作为经验,首先是要学习最基础的RGMII协议以及UDP协议,然后根据开发板的说明文档查到网口的PHY芯片型号RTL8211EL,然后再根据相应的文档学习芯片的引脚配置。中间也遇到了许多问题,例如开始没有发现PHY芯片的reset需要至少1ms的时间,或是有一个引脚约束xdc文件分配错了却迟迟没有发现,这些都是需要预留充足的时间来debug的。其他模块的编写我想也大致如此,都需要首先对协议本身进行学习,然后根据开发板的不同型号对相应引脚进行配置,最后通过仿真测试以及上板抓ILA进行测试验证,通过后就可以整合进整个系统了。

7.参赛队员介绍

林圣凯
本人2018年进入上海交通大学开始大学本科学业,所学专业为微电子科学与工程。本人成绩优异,曾获何宜慈博士纪念奖学金以及多次校级B类奖学金;并且在本科期间积极参加科研工作,从事过网络系统、量子身份认证以及集成电路SoC设计等方向的科研工作。
在本次集创赛中,我自己对于SoC的基础知识与认识有了大幅度提升,真正做到了学以致用。我觉得这个过程就是一个解决问题与挑战自己的过程。我相信我会以此为起点,在未来的科研工作中继续对自己提出更高的挑战,并将其一一击破。

林新源
我是芯灵手巧组的林新源,是一枚对集成电路设计尤其是系统级设计感兴趣的大三学生。这是最坏的时代,也是最好的时代,我希望自己能够在国家需要的,且自己喜欢的集成电路设计领域做一些有意义的事情。于我而言,集创赛是个起点,在这过程中学到的知识还有完成过程中的态度心境将让我未来受益匪浅。将来,我将去清华大学电子系攻读博士,继续攀登新的高峰。

莫志文
我是CICC2883芯灵手巧组的莫志文,是一名上海交大微电子学院的大三学生,曾获国家级奖学金、校A级奖学金、三好学生等荣誉,成绩位列专业第一。我平日里课业之外喜欢音乐、足球与骑行。我对数字芯片设计颇有兴趣,并即将保研至本系直博继续攻读数字芯片设计。我期待着未来在本领域深耕并作出一些属于自己的贡献。以此次集创赛作为契机,我学到了许多知识,也在管中窥豹——可见一斑中感受到了数字IC设计智慧的博大精深。
恰逢如此的历史时机,我坚信我们这一代人可以扛起这份责任。长风破浪会有时,直挂云帆济沧海!

作品内容来源于芯灵手巧队,转载请标明出处。欢迎大家参加极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动,10月1日截止~

相关文章:

【2021集创赛】Arm杯二等奖-基于Arm核的智慧病房手势识别方案

团队介绍 参赛单位:上海交通大学 队伍名称:芯灵手巧 指导老师:王琴、景乃锋 参赛队员:林圣凯、林新源、莫志文 总决赛奖项:二等奖 1.项目概述 1.1 选题背景 我们的选题背景是考虑到很多卧床病人不便于独自向医护人…...

通过注解统计接口调用耗时

要通过注解统计接口调用耗时,可以按照以下步骤进行操作: 首先,在您的项目中引入一个AOP(面向切面编程)框架,比如Spring AOP或AspectJ。这些框架可以帮助您在方法执行前后插入额外的逻辑。 创建一个自定义的…...

Oracle-动态sql学习笔记,由易至难讲解七个例子

本文章的内容来源于对oracle课堂上讲的内容做出的笔记 静态sql和动态sql 静态sql: 静态 SQL 是在编译时写死的 SQL 语句,即在程序编写阶段,SQL 语句已经被固定下来。 特点: 1.预编译: SQL 语句在程序编译时就会被…...

Kafka 的应用场景

Kafka 是一个开源的分布式流式平台,它可以处理大量的实时数据,并提供高吞吐量,低延迟,高可靠性和高可扩展性。 Kafka 最初是为分布式系统中海量日志处理而设计的。它可以通过持久化功能将消息保存到磁盘,并让消费者按…...

保驾“双十一” 博睿数据助力电商零售迎高峰无烦忧

如果说“双十一”大战的A面是由天猫、京东、拼多多、唯品会等电商平台,以及一些MCN机构、头部主播拉动的一系列购物狂潮,那么B面则是零售、物流、制造、银行保险等全产业链面对海量流量之下,以强大的心力、脑力与体力应对流量增加和交易陡增的…...

F.binary_cross_entropy、nn.BCELoss、nn.BCEWithLogitsLoss与F.kl_div函数详细解读

提示:有关loss损失函数详细解读,并附源码!!! 文章目录 前言一、F.binary_cross_entropy()函数解读1.函数表达2.函数运用 二、nn.BCELoss()函数解读1.函数表达2.函数运用 三、nn.BCEWithLogitsLoss()函数解读1.函数表达…...

后端接口性能优化分析

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码🔥如果感觉博主的文章还不错的话,请👍三连支持&…...

【ceph】ceph集群中使用多路径(Multipath)方法

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…...

Xshell+Xftp通过代理的方式访问局域网内网服务器

最近在部署项目时遇到只有1台服务器拥有公网ip,其它服务器只有局域网ip,当然其它服务器可以正常访问网络,例如如下模型。之前访问其它几台服务器,都是先通过登录公网IP服务器,然后在Xshell里面执行ssh远程连接&#xf…...

对盒子中的材料进行计数

背景 在做AI算法分析项目的时候,有时候需要我们使用影像分析结合机器学习算法对某些材料盒中的材料进行数目计数,通过自己的分析,给出以下两种解决问题的思路。 1.图像处理方法对材料计数 要使用图像处理方式对盒子中的材料进行数目分析&a…...

科技驱动固定资产管理变革:RFID技术的前沿应用

在当今激烈竞争的商业环境中,企业固定资产管理面临挑战,而RFID技术正以其独特特性和功能性彻底改变资产管理方式。本文将深入探讨RFID技术在固定资产管理中的革命性作用,并解析其应用带来的创新和便利。 RFID技术概述: RFID系统作…...

Django路由层之有名分组和无名分组、反向解析、路由分发、伪静态的概念、名称空间、虚拟环境、Django1和Django2的区别

【1】无名分组 无名分组:就是把正则中小括号里噩匹配到的内容以位置参数的形式传递给视图函数 url(r^test/(\d)$,view.text) get请求的第一种方式: http://127.0.0.1:8000/test/?a1&b2 get请求的第二种方式: http://127.0.0.1:8000/test…...

【nlp】2.5 人名分类器实战项目(对比RNN、LSTM、GRU模型)

人名分类器实战项目 0 项目说明1 案例介绍2 案例步骤2.1 导入必备的工具包2.2 数据预处理2.2.1 获取常用的字符数量2.2.2 国家名种类数和个数2.2.3 读数据到python环境中2.2.4 构建数据源NameClassDataset2.2.5 构建迭代器遍历数据2.3 构建RNN及其变体模型2.3.1 构建RNN模型2.3…...

海康Visionmaster-环境配置:MFC 二次开发环境配置方法

1 新建 MFC 工程,拷贝 DLL:VM\VisionMaster4.0.0\Development\V4.0.0 \ComControl\bin\x64 下的所有拷贝到项目工程输出目录下,如下图所示,项目的输出路径是 Dll 文件夹。 2 通过配置 C目录和链接器的方式配置 VM 环境 2.1 C目录下添加附加…...

利用EXCEL中的VBA对同一文件夹下的多个数据文件进行特定提取

Sub CopyFilesBasedOnCriteria()Dim fso As ObjectDim sourceFolder As StringDim destinationFolder As String 设置源文件夹路径和目标文件夹路径sourceFolder "C:\\test\\全波段模拟_Nimbostratus cloud - 副本"destinationFolder "C:\\Desktop\\MOD02数据…...

FPGA时序约束(七)文献时序约束实验测试

系列文章目录 文章目录 系列文章目录前言文献1:时钟移位LogiclockDesign Partition封装用户编写的程序停掉singletap抓取单端口RAM的数据文献2:SRAM约束前言 之前学习了一些基本时序约束的类别,包括主时钟约束、虚拟时钟约束、输入输出约束、多周期约束等等,但大多都是纸上…...

【数据库开发】DataX开发环境的安装部署(Python、Java)

文章目录 1、简介1.1 DataX简介1.2 DataX功能1.3 支持的数据通道 2、DataX安装配置2.1 DataX2.2 Java2.3 Python 3、DataX Web安装配置3.1 mysql3.2 DataX Web3.2.1 简介3.2.2 架构图3.2.3 依赖环境3.2.4 安装 4、入门使用4.1 DataX自带打印示例测试4.2 DataX生成任务模板文件4…...

Flutter实践一:package组织

1.架构概览 为了降低Flutter工程里lib的复杂度,应尽量拆分一些代码成为独立的package。如图: 我们将通用的组件、领域模型、API、features、存储、repository等抽取成了单独的package。这时lib只剩下多国语言、基本的页面、路由等代码了: 这…...

SpringCloud微服务:Ribbon负载均衡

目录 负载均衡策略: 负载均衡的两种方式: 饥饿加载 1. Ribbon负载均衡规则 规则接口是IRule 默认实现是ZoneAvoidanceRule,根据zone选择服务列表,然后轮询 2.负载均衡自定义方式 代码方式:配置灵活,但修…...

【教程】大气化学在线耦合模式WRF/Chem

查看原文>>>区域气象-大气化学在线耦合模式(WRF/Chem)在大气环境领域实践 随着我国经济快速发展,我国面临着日益严重的大气污染问题。近年来,严重的大气污染问题已经明显影响国计民生,引起政府、学界和人们越…...

GDS 命令的使用 srvctl service TAF application continuity

文档中prim and stdy在同一台机器上,不同机器需要添加address list TAF ENABLED GLOBAL SERVICE in GDS ENVIRONMNET 12C. (Doc ID 2283193.1)​编辑To Bottom In this Document Goal Solution APPLIES TO: Oracle Database - Enterprise Edition - Version 12.1.…...

go 语言之 select

在 Go 语言中&#xff0c;select 是一种用于处理多个通道操作的控制结构。它可以用于在多个通道之间进行非阻塞的选择操作&#xff0c;从而实现并发控制和通信。 select 语句的基本语法如下&#xff1a; go select { case <-channel1:// 当 channel1 可读时执行的代码 cas…...

23款奔驰GLC260L升级小柏林音响 全新15个扬声器

2023年款奔驰GLC260 GLC300升级小柏林之声 3D音效系统 升级小柏林之声音响之后&#xff0c;全车一共有15个喇叭&#xff0c;1台功放&#xff0c;每一首音乐都能在车内掀起激情的音浪&#xff0c;感受纯粹的音乐享受&#xff0c;低频震撼澎湃&#xff0c;让你的心跳与音乐完美契…...

ssh 免密码登录

ssh 免密码登录 1. 原理 1.1 密码登录的通俗解释 把服务器当作一个凤凰社&#xff0c;每次进社公干都需要拿特别的门票入场&#xff0c;门票便是服务器上的账户密码&#xff1b; 1.2 免密登录 对于凤凰社的高级会员&#xff0c;会在社内存储一张高级会员身份&#xff08;id_rsa…...

小程序使用腾讯位置插件获取当前位置

1.小程序后台 设置-第三方设置-插件管理-添加插件 2.进入网站 腾讯位置服务 设置对应的额度 mapPickerPlugin(res) {const key ""; //使用在腾讯位置服务申请的keyconst referer "铅锂运营"; //调用插件的app的名称const category "生活服务,娱…...

零基础学Python怎么学习?我来告诉你

对于IT新手来说&#xff0c;零基础学Python的话&#xff0c;之后可选择的职业方向非常多。Python全栈和爬虫一直以来都是市场的最火的就业岗位之一&#xff0c;它们的薪资回报也算是开发岗里面的顶级了。而且随着大数据和人工智能时代的到来&#xff0c;数据处理和人工智能行业…...

开源软件 FFmpeg 生成模型使用图片数据集

本篇文章聊聊&#xff0c;成就了无数视频软件公司、无数在线视频网站、无数 CDN 云服务厂商的开源软件 ffmpeg。 分享下如何使用它将各种视频或电影文件&#xff0c;转换成上万张图片数据集、壁纸集合&#xff0c;来让下一篇文章中的模型程序“有米下锅”&#xff0c;这个方法…...

Linux Shell 通配符 / glob 模式

1、概念 glob 模式&#xff08;globbing&#xff09;也被称之为 shell 通配符&#xff0c;名字的起源来自于 Unix V6 中的 /etc/glob &#xff08;详见 man 文档&#xff09;。glob 是一种特殊的模式匹配&#xff0c;最常见的是通配符拓展&#xff0c;也可以将 glob 模式设为精…...

深入了解域名与SSL证书的关系

在如今数字化的世界里&#xff0c;网络安全成为我们关注的重要议题之一。为了确保数据在网络上传输的安全性&#xff0c;我们通常会采取各种安全措施&#xff0c;其中最常用的就是SSL证书。然而&#xff0c;很多人并不了解SSL证书是如何与域名相互关联的。 首先&#xff0c;我…...

计算属性与watch的区别,fetch与axios在vue中的异步请求,单文本组件使用,使用vite创建vue项目,组件的使用方法

7.计算属性 7-1计算属性-有缓存 模板中的表达式虽然很方便,但是只能做简单的逻辑操作,如果在模版中写太多的js逻辑,会使得模板过于臃肿,不利于维护,因此我们推荐使用计算属性来解决复杂的逻辑 <!DOCTYPE html> <html lang"en"> <head><meta …...