【大数据技术Hadoop+Spark】Hive数据仓库架构、优缺点、数据模型介绍(图文解释 超详细)

一、Hive简介 Hive起源于Facebook,Facebook公司有着大量的日志数据,而Hadoop是实现了MapReduce模式开源的分布式并行计算的框架,可轻松处理大规模数据。然而MapReduce程序对熟悉Java语言的工程师来说容易开发,但对于其他语言使用者则难度较大。因此Facebook开发团队想设计一种使用SQL语言对日志数据查询分析的工具,而Hive就诞生于此,只要懂SQL语言,就能够胜任大数据分析方面的工作,还节省了开发人员的学习成本。 Hive是建立在Hadoop文件系统上的数据仓库,它提供了一系列工具,能够对存储在HDFS中的数据进行数据提取、转换和加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的工具。Hive定义简单的类SQL查询语言(即HQL),可以将结构化的数据文件映射为一张数据表,允许熟悉SQL的用户查询数据,允许熟悉MapReduce的开发者开发mapper和reducer来处理复杂的分析工作,与MapReduce相比较,Hive更具有优势。 Hive采用了SQL的查询语言HQL,因此很容易将Hive理解为数据库。其实从结构上来看,Hive和数据库除了拥有类似的查询语言,再无类似之处,MySQL与Hive对比如下所示。 对比项 Hive MySQL 查询语言 Hive QL SQL 数据存储位置 HDFS 块设备、本地文件系统 数据格式 用户定义 系统决定 数据更新 不支持 支持 事务 不支持 支持 执行延迟 高 低 可扩展性 高 低 数据规模 大 小 二、Hive架构 包括以下几个部分 1:用户结构:主要包括CLI、JDBC/ODBC客户端和Web接口,其中CLI为Shell命令行,JDBC/ODBC是Hive的Java接口实现,与传统数据库JDBC类似,Web接口通过浏览器访问Hive 2:元数据库:Hive将元数据存储在数据库中(MYSQL或者Derby)Hive中的元数据包括表的名字,表的列和分区及其属性,表的数据所在目录等等 3:Thrift服务器:允许客户端使用包括Java或其他很多种语言,通过编程的方式远程Hive 4:解释器,编译器,优化器,执行器:完成HQL查询语言语句从词法分析,语法分析,编译,优化以及查询计划的生成,生成的查询计划存储在HDFS中,并在随后调用执行MapReduce 三、Hive的优缺点 1:Hive的优点 适合大数据的批量处理,解决了传统关系数据库在大数据处理上的瓶颈 Hive构建在Hadoop之上,充分利用了集群的存储资源,计算资源,最终实现并行计算 Hive学习使用成本低,Hive支持标准的SQL语法,免去了编写MapReduce的过程,减少了开发成本 具有良好的扩展性,且能够实现和其他组件的结合使用 2:Hive的缺点 HQL表达能力依然有限,由于本身SQL的不足,不支持迭代计算,有些复杂的运算用HQL不易表达,还需要单独编写MapReduce来实现 Hive的运行效率低,延迟高,Hive是转换成MapReduce任务来进行数据分析,MapReduce是离线计算,所以Hive的运行效率也很低,而且是高延迟 Hive调优比较困难,由于Hive是构建在Hadoop之上的,Hive的调优还要考虑MapReduce层面,因此Hive的整体调优比较困难 四、Hive数据模型 Hive中所有的数据都存储在HDFS中,它包含数据库(Database)、表(Table)、分区表(Partition)和桶表(Bucket)四种数据类型。 Hive的内置数据类型可以分为两大类,分别是基础数据类型和复杂数据类型,Hive基础数据类型如下所示。 Hive复杂数据类型,具体如下所示。 创作不易 觉得有帮助请点赞关注收藏~~~

一次搞懂数据大屏适配方案 (vw vh、rem、scale)

大厂技术 高级前端 Node进阶 点击上方 程序员成长指北,关注公众号 回复1,加入高级Node交流群 前言 当接到可视化大屏需求时,你是否会有以下疑问👇如何做一款定制化的数据大屏? 开发可视化数据大屏如何做自适应? vm vh、rem、scale 到底哪种比较好? 时间不够,有没有偷懒的方法? 最近在公司开发了一个可视化大屏,开发定制化大屏,大家可能都一个感受,开发大屏主要是两方面的工作: 大屏之关键-前期的自适应适配 根据 ui 稿绘制图表,调细节 而解决了适配问题后,后面就只是一个慢工出细活,耗时间的事情了。 适配方案分析 看了网上的各种方案,目前大家采用的大概有 3 种👇 方案实现方式优点缺点vm vh1.按照设计稿的尺寸,将px按比例计算转为vw和vh1.可以动态计算图表的宽高,字体等,灵活性较高 2.当屏幕比例跟 ui 稿不一致时,不会出现两边留白情况1.每个图表都需要单独做字体、间距、位移的适配,比较麻烦scale1.通过 scale 属性,根据屏幕大小,对图表进行整体的等比缩放1.代码量少,适配简单 2.一次处理后不需要在各个图表中再去单独适配1.因为是根据 ui 稿等比缩放,当大屏跟 ui 稿的比例不一样时,会出现周边留白情况 2.当缩放比例过大时候,字体会有一点点模糊,就一点点 3.当缩放比例过大时候,事件热区会偏移。rem + vm vh1.获得 rem 的基准值 2.动态的计算html根元素的font-size 3.图表中通过 vm vh 动态计算字体、间距、位移等1.布局的自适应代码量少,适配简单1.因为是根据 ui 稿等比缩放,当大屏跟 ui 稿的比例不一样时,会出现周边留白情况 2.图表需要单个做字体、间距、位移的适配 以上 3 种方案在实际应用中该怎么选择视具体情况而定,也有看到大家说自适应在地图的适配中会有一些兼容问题,我这边还没有实践过。 如果想简单,客户能同意留白,选用 scale 即可 如果需要兼容不同比例的大屏,并且想在不同比例中都有比较好的效果,图表占满屏幕,类似于移动端的响应式,可以采用 vm vh 的方案 至于 rem,个人觉得就是 scale 和 vm vh 的综合,最终的效果跟 scale 差不多

Erlang - 入门之一日志系统如何打印输出使用lager框架

在合适的地方插入一句代码即可: lager:error("Some Message"), 就这样,谢谢阅读 。。。。。。。 。。。。。。。。。 。。。。。。。。。。。 。。。。。。。。。。。。。。 。。。。。。。。。。。。。。。。。 没有什么比从直接“”拷贝“”代码的方法,能更快“”掌握“”代码 下面都只是很无聊的“”程序开发“”,要是你懂ErLang可不必往下看;要是你不懂往下看了也不会懂 问题零:字串的拼接 这里没有lager的原理,也没有errlang的原理,因为毕竟哥不懂服务器 但是如果你和哥的情况一样:有一个项目,能编译,能运行,但就是想改亿点点逻辑,那么你确实需要打印输出 %一开始我参考了这段代码 ?ERROR("node_kf start ~p port=~p",[Ip,Port]), 所以写上 "~p" 相当于 format 字串了 %% 所以把一段打印代码改成。。。。。。 %% 当然,前面你需要先引入lager:-include("xxxxx.hrl"). start([NodeId]) -> Ip = config:get_server_ip(), Port = config:get_server_port(), % lager:error("node_kf Start() ip===="), lager:error("node_kf Start() ip====nodeid=~p",[NodeId]), 打印最终输出 [error] <0.112.0>@node_kf:start:21 node_kf Start() ip====nodeid=100 又因为另外一段代码,我们知道了 SqlFmt = <<"REPLACE INTO `base_node_kf` (`node_id`, `node`, `cookie`, `ip`, `time`) VALUES (~p, '~s', '~s', '~s', ~p)">>, ~s字串~p数字 问题一:Lager未定义 一开始在 preload() 插入这句代码

排查 Edge WebView2 在某个设备上不出图像的问题

我们在 Windows 应用内嵌入 Edge WebView2,来展示部分用网页实现的界面。总得来说还是不错的,比如: 渲染很快,基本上内置网页100毫秒以内控件样式很清爽,没有多余界面开发需要调用的 API 也不多 但是最近在某个用户那边出现了问题,整个界面都是空白的,没有内容,导致应用无法使用了。 下面整理了一下问题排查的步骤及思路 确认安装 Edge 运行时 首先怀疑用户那边安装 Edge 运行时失败了,之前内部也遇到过。所有让用户从官网下载安装。 WebView2 - Microsoft Edge Developer 用户安装一切正常,启动应用现象如故。 怀疑与其他应用冲突 之前我们调试时,如果打开两个进程,一个是 Debug 版本的、一个是 Release 版本的,就会有一个 Web 不能正常显示。 所有让用户看看有没有其他的 WebView2 进程。从任务管理器里面查看,应该有这些进程。 用户恢复没有。 后来我们也进一步确认,应用间冲突是不存在的。应该只有使用同一个浏览器 cache 目录的应用,启动 WebView 的参数不同会冲突。 怀疑内置Web页面损坏 有没有可能应用安装时没有安装成功Web页面资源,或者内置的Web页面资源有问题?所有让用户帮忙直接用其他浏览器打开内置 file URL。 file:C:/Program%20Files/Bambu%20Studio/resources/web/homepage/index.html?lang=en_GB 用户回复可以打开,除了点击无动作,其他都正常。 加日志排查 将 WebView2 加载相关的事件回调,都加上日志,看看那一步失败了。 重新构建了一个临时调试版本, 发给用户运行。正常应该有这些回调。 2022-11-30 04:21:09.617248[Thread 0x00002dd0]:WebViewPanel::OnDocumentLoaded: 2022-11-30 04:21:09.617248[Thread 0x00002dd0]:WebViewPanel::OnTitleChanged: homepage 2022-11-30 04:21:09.617248[Thread 0x00002dd0]:WebViewPanel::OnNavigationComplete: 2022-11-30 04:21:09.619870[Thread 0x00002dd0]:WebViewPanel::OnScriptMessage: 从用户那儿收集的日志,显示一切正常,甚至 script 回调都有,也说明网页里面的 JavaScript 代码已经执行了。

【ElementUI】Vue+ElementUI多文件上传,一次请求上传多个文件!

Element UI Upload ⭐今天教大家使用ElementUI的自定义上传 ⭐请求一次上传多张图片 最近写项目的时候需要一次上传多张图片,使用ElementUI Upload的时候发现 如果是默认方案,上传多张图片并不是真正的一次上传多张,而是发送多次请求,一次请求携带一张图片 接下来分享一下我的解决思路 ElementUI版本:2.15.9Vue版本:2.7.10 Html部分 <!-- 需要携带以下参数 --> <!-- ref 用于获取组件触发API --> <!-- auto-upload 关闭自动上传 --> <!-- http-request 设置自定义上传的函数 --> <!-- on-change 图片列表改变时触发的函数 --> <!-- multiple 允许上传多个文件 --> <el-upload ref="upload" :auto-upload="false" :http-request="uploadFile" :on-change="changeFileLength" multiple> <i class="el-icon-upload"></i> <div class="el-upload__text">点击上传文件</div> </el-upload> <!-- 上传时点击的按钮 --> <el-button @click="upload" type="success">上传文件</el-button> JS部分 export default { name: "uploadCT", data(){ return{ // 上传文件的列表 uploadFiles: [], // 上传文件的个数 filesLength: 0, // 上传需要附带的信息 info:{ id:"

方源答:按泰勒级数公式e = 1 + 1/1! + 1/2! +1/3! + ... + 1/n!求e的值。其中n的值由键盘输入,计算并输出结果(保留5位小数)。(含两种方法---用递归与不用递归)

【题目描述】 按泰勒级数公式e = 1 + 1/1! + 1/2! +1/3! + ... + 1/n!求e的值。 其中n的值由键盘输入,计算并输出结果(保留5位小数)。 【输入格式】 4 【输出格式】 2.70833 【题目分析】 问题实则为求e = (1/0!) + (1 / 1!)+ (1 / 2!)+ (1 / 3!)+ ... + (1 / n!) 可以知道分子始终为1,分母从0!开始每次要阶乘的数加1 【代码1---用递归(推荐)】 #include<stdio.h> int factorial(int n) { if (n > 1) { return n * factorial(n - 1);//---用递归求n! } else//0!=1!=1 return 1; } int main() { int n = 0; int i = 0; double e = 0.

通过 ffmpeg 串流对接 OBS 等直播软件

我们要将设备通过私有通道输出到 H264 流,传给 OBS 等直播软件使用。为此,设计了上图所示的串流工具。 设计思路 私有通道通过 API 接口提供 H264 流,要传给 ffmpeg ,最简单的方法是通过进程间管道传输数据。这里 Dump 工具直接输出一帧帧符合 H264 ES(Annex B)格式的数据。 然后 ffmpeg 要输出标准协议的视频流给 OBS,最简单的协议是 RTP 组播,这样不需要安排服务器。比如 RTSP、RTMP 都需要配置 ffserver ,增加了系统的复杂性。用流文件格式,比如 FLV、TS,也需要 HTTP 服务器。 串流的工作(从裸的 H264 转换为 RTP/UDP)就交给 ffmpeg 完成了。下面来看看如何配置 ffmpeg。 串流配置 -fflags nobuffer 不缓冲数据减少延迟 -flags low_delay 低延迟编码减少延迟 -analyzeduration 10 分析输入最大时长减少延迟 -probesize 3200 分析输入最大字节减少延迟 -f h264 输入格式h264 裸流 -i pipe: 输入源从管道输入 -vcodec copy 视频格式仅拷贝输入,不转换格式 -f rtp 输出格式RTP 协议封装rtp://127.0.0.1:1234输出目标本地 udp 1234 端口 RTP 协议一般使用组播地址(224.

管理用户和用户组

实验报告10.2管理用户和用户组 实验1管理用户和用户组 实验目的:掌握管理用户和用户组操作命令 实验要求: 1. 新增与删除用户组 添加一个新的用户组tester;GID为5401;添加一个新的用户user999,用户id为505,描述信息为User999,登录shell为/bin/bash,登录主目录为/home/user999,并将其设为Tester组;修改user999的主目录为/home/test;删除user999和tester用户组;用图形界面完成上述操作 2. gpasswd用法 建立一个新群组,名称为 testgroup 且群组交由 vbird1 管理。(如果vbird1用户不存在就先创建该用户并设置密码)以 vbird1 登入系统,并且让他加入 vbird1, vbird3 成为 testgroup 成员。

BUUCTF-Web-题目详解(持续更新……)

目录 0x01 [SUCTF 2019]EasySQL1(介绍2种解法) 0x02 [GXYCTF2019]Ping Ping Ping 1 0x03 [极客大挑战 2019]Secret File 1 0x04 [极客大挑战 2019]LoveSQL 1 0x05 [极客大挑战 2019]Http 1 说明:本文持续更新BUUCTF平台上web的题解WP,请持续关注…… 0x01 [SUCTF 2019]EasySQL1(介绍2种解法) 1、审题 打开靶场后,是一个POST表单,变量名为query(可查看源代码或BurpSuite抓包获取变量名),如下: 2、解法一 常规办法判断注入点及注入类型,发现回显是Nonono,猜测单双引号、union select、报错注入均被过滤 接下来,尝试一下堆叠注入,果然存在堆叠注入漏洞,利用堆叠注入查看数据库和数据表,如下: 在上面步骤中我们知道有一个名为Flag的数据表,尝试查看一下该数据表的字段名都有哪些,如下图所示,然而并没有得到我们想要的结果,web界面回显Nonono,造成这个的原因应该是from关键字被过滤了。 回到表单本身,通过POST表单提交的变量肯定会被拼接到SQL语句里面,形成诸如select $_POST['query'] from Flag之类的SQL语句。因此,我们尝试构造select * from Flag这样的语句,其中星号(*)用来代替其他字段,SELECT语句会返回数据表的所有字段值,然而当我们直接传递*的时候却没有任何回显,如下: 构造select * from Flag语句 此时,没有输出Nonono,大致可判断:星号(*)没有被过滤掉,只是被某种方式暂时屏蔽 了 (记下这个,涉及后面第二种解法) 我们知道Select查询数据时可以指定表的字段名或者将数字作为字段名,如下所示: 综上,我们构造(*,6,9)来尝试绕过对星号(*)的屏蔽,果然成功得到flag,如下: 3、解法二 在解法一中,我们知道“星号(*)没有被过滤,只是被某种方式暂时屏蔽了”,那到底是如何屏蔽的呢? 这里首先介绍一下Mysql的一个逻辑运算符:逻辑或(||、OR),逻辑运算符用来判断表达式的真假。如果表达式是真,结果返回 1。如果表达式是假,结果返回 0。 来看下面这个例子感受一下逻辑或的作用: 回到题目中,我们输入任何非0的数字,其返回值均为1,因此在构建SQL语句的时候大概率使用了逻辑或运算符,形成诸如select $_POST['query'] || flag_value from Flag的SQL语句,这样: 当我们POST传递非0数字时,逻辑运算结果为真,返回1当我们POST传递数字0时,逻辑运算结果为假,返回0(此时前端无回显) select 1 || flag_value from Flag 综上,我们解题的思路变得清晰:绕过逻辑或运算符。在Mysql数据库中我们可以把逻辑运算符(||)的作用转换成连接符,达到类似concat()函数的效果:

需求评审要点

背景: 某功能需要发起需求评审,会议参与人有:产品经理、产品线负责人、前后端开发、架构师、测试、ui等; 作为该需求的产品经理主持评审会议,需要注意以下的点: 1、需求得理清楚想清楚,若有多个方案,可列出多个方案,且列出自己决定的方案;若未想清楚,想清楚再发起评审; 2、hold场:①问题预设、预答;②借助流程图等图形,场景说明;③发散问题讨论控制时间,如果遇到突发之前没预想到的问题,复杂的问题可先记录;后续再解答同步;如果需要其他会议讨论解决则后续发起专题会议讨论; 3、需求评审的结构: ①、需求背景(为什么有这个需求,什么样的需求) ②、需求价值(为什么要做,做了会怎么样) ③、流程、用户(场景) ④、系统现状 ⑤、需求方案(临时方案、最佳方案) ⑥、需求说明(涉及到的范围)

C++ 如何判断两个矩形框有交集

矩形框是否有交集的判断 本人也查找了一些方法,发现直接套用公式,无法满足需求,主要是自己没有花一点时间去思考; 矩形框的判断,主要方法是判断两个矩形没有交集,然后再取反,就能判断出矩形框是否存在交集; 但是其中重要的一点是需要结合坐标系,主要是y轴数据的变化 坐标系一(普通坐标系) 蓝色刻度是x轴,红色刻度是y轴; (x11, y11)和 (x12, y12)是红色矩形框的坐标 (x21, y21)和 (x22, y22)是蓝色矩形框的坐标 存在以下情况说明矩形框无交集 x12 < x21 || x22 < x11 || y12 > y21 || y22 > y11 接口如下 bool cal(int32_t x11,int32_t y11,int32_t x12,int32_t y12,int32_t x21,int32_t y21,int32_t x22,int32_t y22) { if(!(x12 > x21 || x22 > x11 || y12 > y21 || y22 > y11)) { return true; //有交集 }else{ return false; //无交集 } } 坐标系二(针对图像中的矩形数据) 蓝色刻度是x轴,红色刻度是y轴;

【毕设选题】最新STM32毕业设计项目合集 - 350例

文章目录 1前言2 STM32 毕设课题3 如何选题3.1 不要给自己挖坑3.2 难度把控3.3 如何命名题目 4 最后 1前言 🥇 更新单片机嵌入式选题后,不少学弟学妹催学长更新STM32和C51选题系列,感谢大家的认可,来啦! 以下是学长亲手整理的STM32相关的毕业设计选题,都是经过学长精心审核的题目,适合作为毕设,难度不高,工作量达标,对毕设有任何疑问都可以问学长哦! 学长整理的题目标准: 相对容易工作量达标题目新颖,含创新点 2 STM32 毕设课题 基于stm32的智能衣柜系统设计 基于stm32的智慧家庭健康医疗系统设计 基于stm32的智能饮水机系统设计 基于STM32的寻迹小车设计 基于STM32的快递箱的设计 基于STM32的智能节能风扇的设计 基于STM32的个人健康助手的设计 基于STM32的快递箱的设计 基于STM32的智能节能风扇的设计 基于STM32的个人健康助手的设计 基于STM32的病房监控系统的设计 基于STM32的智能书房系统的设计 基于stm32的香薰灯的设计 基于stm32的智能药盒的设计 基于stm32的伸缩晒衣架的设计 物联网技术在智能校园中的应用和设计 智能换气系统的设计与实现 基于stm32的智能体重秤设计与实现 物联网智能家居的远程视频监控系统设计 高校智慧教室物联网系统设计与实现 基于RFID物联网技术下物流智能仓储系统的研究 物联网虛拟仿真实验教学中心平台建设 基于语音控制的智能家居系统的设计 基于stm32技术的智慧超市系统的研究 新型物联网创新实践教学体系建设 基于stm32的智能家居控制系统设计与实现 基于stm32的仓库环境监测系统 基于云计算的物联网数据网关的建设研究 物联网智能仓储系统的设计 物联网工程专业实验室建设方案研究 基于stm32的农业大棚环境监测系统设计 基于stm32的智能家居系统研究 厨房安全监控系统的设计与实现 基于RFID的农产品质量追溯系统设计 基于RFID技术的小区门禁系统设计 基于stm32的血压监护系统设计 基于stm32的公司考勤系统设计 基于stm32的智能LED照明集中控制系统 基于stm32的仓储管控一体化系统实现路径 基于stm32的日温室远程监控系统设计 物联网社区信息化管理系统设计 物联网中基于WIFI的室内温度检测系统设计 基于stm32架构的温室环境温湿度传感器节点设计 可燃气体远程报警装置的设计 生理体征无线检测系统设计 家居远程安防报警系统设计 基于stm32的路灯监控系统设计 基于stm32的楼道照明系统设计 基于stm32的智能交通灯控制系统设计 基于stm32的城市低洼地段水深报警系统设计

android studio导入mysql jar包

mysql jar包直接地址,网上好多推荐的地址都已经失效,这个刚测试ok https://downloads.mysql.com/archives/c-j/ 在里面选择自己需要的版本,注意选择zip或gz压缩包,下载后解压该文件,找到需要jar文件。 比如下载mysql-connector-java-5.1.38.zip解压后,mysql-connector-java-5.1.38-bin.jar 就是AS需要的文件。 AS 添加jar包 打开AS后找到app/libs,将上面的文件复制到libs里,鼠标放在复制后文件上点击右键,弹出一个菜单,找到Add As Library,点OK就完成添加了。

Gateway限流的使用

目录 1. 限流的使用场景 2. gateway限流实现 2.1 前提: 2.2 导入依赖包 2.3 在项目配置文件中配置redis​编辑 2.4 开发限流需要的Bean​编辑 2.5 为服务配置限流参数 2.6 压力测试 3. 熔断 3.1 熔断的使用场景 1. 限流的使用场景 为什么限流 限流就是限制流量,因为服务器能处理的请求数有限,如果请求量特别大,我们需要做限流(要么就让请求等待,要么就把请求给扔了), 限流可以保障我们的 API 服务对所有用户的可用性,也可以防止网络攻击。在高并发的应用中,限流是一个绕不开的话题。 2)常见限流方式 一般开发高并发系统常见的限流有:限制总并发数(比如数据库连接池、线程池)、限制瞬时并发数(如 nginx 的 limit_conn 模块,用来限制瞬时并发连接数)、限制时间窗口内的平均速率(如 Guava 的 RateLimiter、nginx 的 limit_req 模块,限制每秒的平均速率);其他还有如限制远程接口调用速率、限制 MQ 的消费速率。另外还可以根据网络连接数、网络流量、CPU 或内存负载等来限流。 本文讨论在gateway集成的实现 3)限流算法: 漏桶算法(Leaky Bucket) 思路: 水(请求)先进入到漏桶里,漏桶以一定的速度出水(接口有响应速率),当水流入速度过大会直接溢出(访问频率超过接口响应速率),然后就拒绝请求,可以看出漏桶算法能强行限制数据的传输速率.示意图如下: 令牌桶算法(Token Bucket) 随着时间流逝,系统会按恒定 1/QPS 时间间隔(如果 QPS=100,则间隔是 10ms)往桶里加入 Token(想象和漏洞漏水相反,有个水龙头在不断的加水),如果桶已经满了就不再加了。新请求来临时,会各自拿走一个 Token,如果没有 Token 可拿了就阻塞或者拒绝服务. 2. gateway限流实现 2.1 前提: 先装好redis服务 次要-- 网关需要配置好 (10条消息) SpringCloud Gateway网关的使用与介绍_嘴强程序员的博客-CSDN博客

npm ERR! Error while executing: npm ERR! C:\Program Files\Git\cmd\git.EXE ls-remote -h -t https://gi

报错信息:npm ERR! Error while executing: npm ERR! C:\Program Files\Git\cmd\git.EXE ls-remote -h -t https://github.com/nhn/raphael.git npm ERR! npm ERR! fatal: unable to access ‘https://github.com/nhn/raphael.git/’: OpenSSL SSL_read: Connection was reset, errno 100 npm ERR! npm WARN using --force Recommended protections disabled. npm ERR! npm ERR! code 128 npm ERR! npm ERR! An unknown git error occurred npm ERR! npm ERR! command git --no-replace-objects ls-remote ssh://git@github.com/adobe-webplatform/eve.git 可能npm版本过低,使用命令修改版本: npm install -g npm@8.7.0

style属性绑定(样式较少时) + 随机颜色生成+class属性绑定(样式较多时)

1.style属性绑定 通过v-bind进行属性绑定,引号里面是js语法,因为style属性值是 键值对的形式,所以我们这里用对象的形式来表示。(Vue2中) <template> <view> <view class="box" :style="{backgroundColor:randomcolor}" @click="randomColor">点击一下颜色随机变化</view> </view> </template> <script> export default { data() { return { randomcolor:'pink', } }, methods:{ randomColor(){ let arr = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F']; let randomStrArr = []; for(let i=0;i<=5;i++){ randomStrArr[i] = arr[Math.floor(Math.random()*arr.length)]; } this.randomcolor = `#${randomStrArr.join("")}`; } // randomColor(){ // let r = Math.floor(Math.random()*256); // let g = Math.floor(Math.random()*256); // let b = Math.floor(Math.random()*256); // this.randomcolor = `rgb(${r},${g},${b})` // } } } </script> <style lang="

unity webgl开发踩坑——从开发、发布到优化

目录 前言环境unity webgl的一些注意点videoplayer修改——》Video Player WebGL插件text修改——解决不能显示汉字问题制作、读取ab包unity audioclip减小建议减小包体 全过程记录webgl的buildwebgl部署到本地、云(IIS)webgl部署云如何提升加载速度 webgl的一些其他需求webgl改模板webgl在移动端横屏webgl全屏 webgl性能分析webgl优化总结参考 前言 又是一个阳光明媚的早上,突然老板召集开会说要将一个android项目适配webgl,没办法赶紧用unity改一下踩踩坑;这里记录一下这些天的踩坑过程。 环境 使用unity2021.3.4f1c1,visual studio2019,visual studio code unity webgl的一些注意点 videoplayer修改——》Video Player WebGL插件 videoplayer仅适用于安卓和PC,如果有苹果适配的需求的话,那就要用到这个插件:unity商店——Video Player WebGL 不过,还有一些点要注意,这些在Video Player WebGL的说明文档最后也有说,我这里省流一部分: (1)safari不支持有声视频自动播放,必须用户点击,使用pointerDown事件 (2)safari同时只能1个有声视频播放 所以,我这边的方案是:使用静音自动播放;播放结束后调用VideoPlayerWebGL.CreateVideo重新生成新video来播放下一个视频,从而实现切换。 public void MYchange(VideoPlayerWebGL newone) { if (nowIndex >= videoData.clips.Length) nowIndex = 0; newone.CreateVideo(VideoPlayerWebGL.srcs.StreamingAssets, $"{videoData.clips[nowIndex++]}.mp4", newone.crossOrigin, newone.autoplay, newone.loop, newone.muted, newone.volume, newone.pan, newone.forceMono, newone.playbackSpeed, newone.targetTexture, newone.events); } 另外,videoplayer需要注意下面这些点: (1)使用url读取播放,不能直接引用,否则播放不了 (2)将视频打包成AB再读取为clip也是不行的,必须使用url,而且url还必须是可以直接访问的视频! text修改——解决不能显示汉字问题 不能使用默认字体,要下载个TTF字体来使用 制作、读取ab包 (1)这里有个坑,因为楼主使用的是URP,所以在编辑器中读取AB包时会变成粉色,需要调用脚本,脚本来源自文章最下面的参考部分: #if UNITY_EDITOR public static class AssetBundleEditorUtil { public static void FixShadersForEditor(GameObject prefab) { var renderers = prefab.

如何解决网站提示“不安全”?

1)网站使用HTTP协议 为了推动更安全的HTTPS加密协议普及全网,谷歌Chrome从2017年开始逐步对HTTP网站标记“不安全”警告,并提示“你与此网站之间建立的连接不安全”。最终在Chrome 68版本中,对所有HTTP网站标记“不安全”,帮助用户了解与网站之间的连接何时不安全,同时激励网站所有者提高其网站的安全性。Chrome 68正式版本(68.0.3440.75)已经在2018年7月24日发布,随着Chrome用户端不断升级,Chrome 68版本的覆盖范围会越来越大,HTTP网站上的“不安全”警告将被越来越多的Chrome用户看到。 解决办法:用户遇到“不安全”警告应谨慎访问,避免在网站上输入敏感信息。网站所有者应及时申请SSL证书,部署到网站服务器上,为网站升级HTTPS加密,提升网站安全性。 2)网站SSL证书过期 为了确保私钥安全,SSL/TLS证书都设置了有效期限,最新的国际标准中SSL证书最长有效期为2年(825天)。如果SSL/TLS证书过了有效期,还没有及时替换新证书,网站会出现红色“不安全”警告。 解决办法:网站所有者应尽快撤下已过期SSL证书,并申请新证书,重新安装SSL证书到网站服务器上。 3)网站使用SHA-1证书 SHA-1算法已经被证实非常不安全,谷歌从Chrome 48开始阻止新签发的SHA-1算法SSL证书,从Chrome 56开始阻止所有SHA-1算法SSL证书。因此,使用SHA-1证书的网站,浏览器会标记红色“不安全”警告。 解决办法:SHA-1算法已经非常不安全,用户遇到此类网站应停止访问。网站所有者应该立即申请替换更安全的SHA-2算法SSL证书,并确保SSL证书符合其他国际标准要求,比如RSA公钥算法不低于2048位等。沃通SSL证书由全球信任顶级根签发,遵循最新国际标准,采用SHA256 以上的签名算法和2048位以上RSA算法,解除浏览器“不安全”提示。 4)网页存在不安全因素 一些网站已经部署了HTTPS证书,但是网页中调用了非HTTPS的外部资源(图片或js)时,网站会存在不安全因素,对这类网站浏览器也会标记“你与此网站之间建立的连接不安全”,如果用户选择加载不安全内容,浏览器就会升级为红色“不安全”警告。 解决办法:可以把该外链复制到URL中,并通过在http后添加个”s“访问,测试此外链是否支持https协议的链接。 如果可以访问,直接在代码中修改http为https的链接。 如果不可以访问,则可以下载该资源到本地服务器上,并修改资源路径指向到服务器上,并使用相对路径或者完整的 https 路径。

vue+elementUI实现表格滚动加载

el-table-loadmore/index.js文件 const vueClearIndex = {} /* * element 表格实现滚动加载 */ vueClearIndex.install = Vue => { Vue.directive('loadmore', { bind(el, binding) { const selectWrap = el.querySelector('.el-table__body-wrapper') selectWrap.addEventListener('scroll', function () { let sign = 0 const scrollDistance = this.scrollHeight - this.scrollTop - this.clientHeight if (scrollDistance <= sign) { binding.value() } }) } }) } export default vueClearIndex main.js注册 import loadmore from '@/directive/el-table-loadmore' // 表格滚动加载 loadmore.install(Vue) 组件中使用 v-loadmore <el-table ref="multipleTable" :data="detailList" style="width: 100%;" :max-height="

一个帖子教你实现 商品下单、获取商品订单信息、商品送货时发送通知 一体化功能

1、介绍 总览 通过无缝数据库结构,在保证数据的可用性、一致性、安全性外,云数据库能够实现数据在客户端和云端之间的无缝同步。云函数提供serverless环境,AppGallery Connect的其他服务为云函数提供事件源。监听事件源可以触发相关函数。 您将建立什么 在本次codelab中,您将建立一个示例项目用于体验云数据库和云函数。云数据库中数据发生变化时,云函数HTTP触发器触发函数发送通知。流程如下: 商品下单。 获取商品订单信息。 商品送货时,发送通知。 您将学会什么 在本次codelab中,您将学习: 如何在AppGallery Connect中创建项目和新建应用。 如何集成云数据库和云函数。 如何使用云函数并且使用HTTP触发器发送通知。 2、您需要什么 硬件需求 一台笔记本或台式电脑。 一部装有EMUI 8.0或以上版本的华为手机,运行HMS Core (APK) 5.0.1.301或以上版本;或一部装有安卓7.0或以上版本的非华为手机,运行HMS Core (APK) 5.0.1.301或以上版本。该手机用于demo的运行和调测。 软件需求 JDK版本:1.8或以上 Android Studio版本:3.X或以上 SDK平台版本:24或以上 targetSdkVersion:29 compileSdkVersion:29 Gradle版本:4.6或以上 必备知识 安卓应用开发基础知识 3、能力接入准备 集成前,需要完成以下准备工作: 在进行准备前,请先注册开发者帐号。 在AppGallery Connect中创建项目和应用。 创建Android Studio项目。 生成签名证书。 生成签名证书指纹。 在AppGallery Connect中将签名指纹添加到应用中。 添加必要配置。 配置项目签名。 同步项目。 详情请参见HUAWEI HMS Core集成准备。 4、集成HMS Core SDK 添加您应用的AppGallery Connect配置文件 登录AppGallery Connect,点击“我的项目”,在项目列表中找到并点击您的项目。 在“项目设置”页面选择“常规”页签。 在“项目”区域下点击“数据处理位置”后的“启用”。 点击“应用”区域的“agconnect-services.json”下载配置文件。 把agconnect-services.json文件拷贝到项目的应用级根目录下。 添加编译依赖 打开应用级的“build.gradle”文件。 在dependencies中添加如下编译依赖。 dependencies { //添加云函数和云数据库依赖。 implementation 'com.

使用Docker实现容器之间的互通

目录 怎样实现容器之间的相互通信? 情况1:两个容器在同一网段上 情况2:两个容器在不同网段上 怎样实现容器之间的相互通信? 情况1:两个容器在同一网段上 命令拓展: 删除所有容器:docker rm -f $(docker ps -aq) 查看所有的网络模式:docker network ls 清空控制台:clear 删除自定义网络:docker network rm mynetwork【公式:docker network rm 网络名称】 为了接下里的演示,我把原有的自定义网络mynetwork都删干净了。 ①创建一个自定义网络 docker network create --driver bridge --subnet 192.168.0.1/16 --gateway 192.168.0.1 mynet 【 参数说明: --driver bridge 设置网络模式 --subnet 192.168.0.1/16 设置子网 --gateway 192.168.0.1 设置网关 mynet 自定义网络的名称 】 ②在刚才创建的mynet中创建两个容器 docker run -di --name c1 --net=mynet centos:7 docker run -di --name c2 --net=mynet centos:7 【-di不是守护进程方式所以不会进入容器,-it才是守护进程方式】 创建成功! ③测试 ping

IDEA(下载、安装、激活详细图文)

能够帮助你们解决问题是博主的荣幸,你们的支持是我创作的最大动力!:)欢迎关注点赞 文章目录 一、IDEA下载二、IDEA工具总结 一、IDEA下载 提示:安装之前需要先确认好自己需要哪个版本的Idea,避免浪费时间。 官网下载 https://www.jetbrains.com/idea/ 百度云盘下载: 链接:https://pan.baidu.com/s/1cXb8n6Ay4vJg4uTwPoXfbw 提取码:bwai 为避免安装有别的出错,最好选择网盘~ 官网下载教程 1.先打开 https://www.jetbrains.com/idea/,找到download。 2.找到Other versions并点击。 3.自己选择想要的版本,这里我选择2020.3.3版本的。 4.按照自己的需求选择版本。 5.完成后根据自己需要最好放在自定义目录,然后双击.exe文件。 6.如果电脑有用户账户控制,就选择是。 7.开始装idea,选择Next。 8.点击Browse可选择自定义目录,最好自定义目录,默认安装目录C:\Program Files\JetBrains\IntelliJ IDEA 2020.3.3,博主自定义了一个IDEA文件夹。 9.选择好安装目录后选择Next。 10.默认什么都不选,点击Next下一步。 11.也是默认就好了,直接Install安装,等待安装。 12.安装后之后选择Run IntelliJ IDEA打勾,然后Finish就好。 13.默认选择OK就好,接下来就看下面的教程。 二、IDEA工具 1.接着上面的选择Evaluate for free,然后选择Evaluate。 2.之后就随便创建一个项目,点击New Project。 3.这里我就选择建个maven项目,然后选择Next。 4.直接Finish就好。 5.然后直接解压下载的工具。 6.选择解压后文件里面的jar包,拖进Idea中。 7.这里显示安装成功。 8.接下来选择Help -> Eval Reset -> 勾选Auto reset before per restart -> Reset,最后选择Exit,等待重启Idea。 9.最后检查一下到期时间Help -> Register,查看到期时间,等到下次即将到期的时候,需要重新进行上一个步骤中点击Reload刷新一下,点击Reset等待重启就可以了。 总结 1.安装过程中尽量按照博主操作过的步骤去执行,如果有其他安装出错或者其他问题欢迎讨论,谢谢大家支持~

dao、dto、do、vo、ao、Bo、pojo、po、entity、model、view各个模型的理解

文章目录 1. DAO (Data Access Object) 数据访问对象2. DTO (Data Transfer Object) 数据传输对象3. DO (Domain Object) 领域对象4. VO(View Object) 视图模型5. AO (Application Object) 应用对象6. BO (Business Object) 业务对象7. POJO (Plain Ordinary Java Object) 纯普通Java对象8. PO (Persistent Object) 持久化对象9. Entity 实体10. Model (概念实体模型) 实体类和模型11. View (概念视图模型) 视图模型 1. DAO (Data Access Object) 数据访问对象 DAO: 数据访问接口 一般在**业务逻辑层(Service)对数据库(SQL)**的访问时使用 2. DTO (Data Transfer Object) 数据传输对象 数据传输对象 DTO (Data Transfer Object),是一种设计模式之间传输数据的软件应用系统。数据传输目标往往是数据访问对象从数据库中检索数据。数据传输对象与数据交互对象或数据访问对象之间的差异是一个以不具有任何行为除了存储和检索的数据(访问和存取器)。 可理解为:多张表部分字段的集合 一般在 前端(Web) 对 控制层(Controller)**进行**数据传输时使用,说白了就是前端向后台提交数据。

Kindle使用calibre导入电子书(解决封面不显示问题)

Kindle机器本身只支持azw格式,Kindle可以对mobi进行转换,成为azw格式 通过邮件传书,无论是mobi还是epub格式都是先通过线上转换,变成azw格式之后发送到kindle去的,而mobi格式通过邮箱传输可以保留原来的封面,epub格式则会失去封面,用邮箱传书的话要带封面只能用mobi格式 亚马逊以后将停止kindle邮箱传书,只能选择数据线传书 数据线传书方法: 1.将下载到PC的电子书资源添加到calibre 2.Kindle开启飞行模式,USB连接PC 3.mobi或者azw3格式的电子书可直接点击发送 4.epub格式的电子书则需要先转换格式,然后再发送 5.Kindle断开USB连接后,关闭飞行模式,然后再次用USB连接PC 6.calibre将正常恢复封面,断开USB后,Kindle中将显示封面

vxe-table表格中使用vxe-select选择器遇到的问题

遇到的问题: vxe-table表格中使用vxe-select选择器遇到的问题,编辑最后一行时选择弹框会撑开表格,使用体验比较差,要往上滚动或者有时候根本选择不到选项。 解决方法: 1、transfer 官方文档提示使用transfer属性 <vxe-select v-model="row.isUploadStr" :transfer="true"> <vxe-option v-for="item of ['是', '否']" :key="item" :value="item" :label="item" ></vxe-option> </vxe-select> 2.样式修改 这个方法使用会有一个条件,就是在没有固定表格表头的情况下可用,没有啥问题。但是如果在固定表格的表头情况下使用选择下拉框会显示在原本表格高度的底部那个位置(可能不是我们想要的位置)。 在页面上修改以下样式即可。 // 不使用transfer, 可以修改以下样式即可 .vxe-select--panel { position: fixed !important; min-width: 10% !important; left: auto !important; }

关于H3C模拟器设备启动失败的问题

如果你的H3C设备启动失败,而又已经安装了Oracle VM VirtualBox 的情况下,检查自己的Oracle VM VirtualBox版本是否和模拟器相匹配,如果在匹配的情况下忽然启动不了,关机卸载Oracle VM VirtualBox并重装而且再次重启,这种情况可能和系统兼容性有关,右键属性,选择兼容模式下运行模拟器,就能打开了。

微信小程序+esp8266NodeMcu(cp2102)+onenet物联平台(一)

使用esp8266NodeMcu(cp2102)开发板,连接onenet物联平台,然后使用微信小程序控制esp8266开发板上的led灯,同时在开发板中模拟温度值,小程序通过onenet物联平台,读取温度值。 Onenet物联平台 登录Onenet物联平台,完成注册。 1、创建产品 控制台 —>MQTT物联网套件–>添加产品 2、添加设备 添加商品后,点击新添加的商品 —>点击左侧“设备列表” —>“添加设备” 。 我填加了一个设备名为d1的设备, 3、添加数据流 在设备d1的右侧,点击“数据流”—>点击“数据流模板管理”—>“添加数据流模板”,可以自定义添加数据流,这里我使用的是“temperatrue"数据流,esp8266开发板上的温度数据,会上传至此数据流模板。如不了解数据流概念,可查看官方文档OneNET - 中国移动物联网开放平台 4、测试连接设备 使用mqttfx连接d1设备。参考【OneNET - 中国移动物联网开放平台】,如果官网的mqttfx无法下载,可通过百度云下载 百度网盘 请输入提取码 提取码:r9f7 打开mqttfx,进行如下设置,(点击 【OneNET - 中国移动物联网开放平台】查看服务网址) token生成: 下载token工具:OneNET - 中国移动物联网开放平台 按照如下设置生成token 设备连接后,就可以测试数据点上传、设备命令、设备镜像,跟着官方文档做。OneNET - 中国移动物联网开放平台

Orangepi 5 Unixbench基准测试结果

Orangepi 5 介绍 Orange Pi 5采用了瑞芯微RK3588S新一代八核64位处理器,具体为四核A76+四核A55,采用了8nm工艺设计,主频最高可达2.4GHz,集成ARM Mali-G610 MP4 GPU,内嵌高性能3D和2D图像加速模块,内置高达6 Tops算力的AI加速器NPU,拥有4GB/8GB/16GB/32GB(LPDDR4/4x),具有高达8K显示处理能力。 Orange Pi 5引用了相当丰富的接口,包括HDMI输出、GPIO接口、Type-C、M.2 PCIe2.0、千兆网口、2个USB2.0,1个USB3.0等;可广泛适用于高端平板、边缘计算、人工智能、云计算、AR/VR、智能安防、智能家居等领域,覆盖 AIoT各个行业。 Orange Pi 5支持Orange Pi 官方研发的操作系统Orange Pi OS,同时,支持Android12 、Debian11等操作系统。 测试工具:Unixbench 工具的安装参考了下面的博客 unixbench性能测试跑分工具 - 酒红色 - 博客园 cd /usr/local wget http://soft.vpser.net/test/unixbench/unixbench-5.1.2.tar.gz tar zxvf unixbench-5.1.2.tar.gz cd unixbench-5.1.2 make ./Run 测试结果 OPI5,使用SD卡作为存储载体

MOSFET 和 IGBT 栅极驱动器电路的基本原理学习笔记(六)变压器耦合栅极驱动

变压器耦合栅极驱动 1.单端变压器耦合栅极驱动电路 2.双端变压器耦合栅极驱动 在高电压栅极驱动 IC 出现以前,使用栅极驱动变压器是唯一一种在离线或类似高电压电路中驱动高侧开关的可行解决方案。 现在,两种解决方案同时存在并且各有利弊,可用于不同的 应用非常重要。集成高侧驱动器非常方便,使用的电路板更小,但开通和关断延时比较长。设计合理的变压器耦合解决方案具有可忽略的延时,可跨更高的电势差运行。 通常,它使用更多元件,需要设计变压器,或者至少了解其运行和规格。 在集中精力设计栅极驱动电路前,应检查一些与所有变压器设计有关的常见问题及其与栅极驱动变压器的关联。 • 变压器至少有两个绕组。使用独立的一次和二次绕组便于实现隔离。一次绕组和二次绕组之间的匝数比可实现电压调节。在栅极驱动变压器中,通常不需要电压调节,但隔离是一个重要功能。 • 理想情况下,无一例外,变压器不存储能源。所谓的反激式“变压器”实际上是耦合电感器。然而,实际变压器中绕组之间的非磁性区域以及两个半芯结合处的小气隙中会存储少量能源。这种能源存储由泄漏和磁化电感表示。在电源变压器中,减小泄漏电感对于最大程度地减少能源存储进而确保高效率来说非常重要。栅极驱动变压器所需的平均功耗非常小,但它在开通和关断时会产生高峰值电流。为了避免栅极驱动路径中的延时,低泄漏电感仍然必不可少。 • 法拉第定律要求变压器绕组上的平均电压在一段时间内必须为零。即使较小的直流分量也可导致通量“漂移”,最终导致磁芯饱和。此法则会对由单端 PWM 电路控制的变压器耦合栅极驱动的设计产生重大影响。 • 磁芯饱和限制了绕组上施加的伏秒数。变压器设计必须预测所有运行条件下的最大伏秒数,这必须同时包含最差情况下的瞬变和最大占空比以及最大输入电压。栅极驱动变压器设计中唯一一个放宽情况是稳压电源。 • 必须保留开关周期中很大一部分,以便重置单端应用(只工作在 B-H 平面的第一象限,例如正向转换器)中主电源 变压器的磁芯。复位时间间隔可限制变压器的工作占空比。即使在单端栅极驱动变压器设计中,这基本上也不是问题,因为必须采用交流耦合,所以会使用双向磁化。 1.单端变压器耦合栅极驱动电路 这些栅极驱动电路与单输出 PWM 控制器结合使用,以驱动高侧开关。图 33 显示了基本电路。 耦合电容器必须与栅极驱动变压器的一次绕组串联,以便为磁化电感提供复位电压。如果没有电容器,绕组 上就会形成一个取决于占空比的直流电压,并且变压器会饱和。 CC 的直流电压 (VC) 的形成与交流耦合直接驱动中所示的方法相同。公式 40 中还显示了耦合电容器电压的 稳态值。 与交流耦合直接驱动相似,实际的栅极驱动电压 VC 会随占空比变化。此外,占空比的突然变化会激发由栅 极驱动变压器和耦合电容器的磁化电感形成的 L-C 谐振环路。在大多数情况下,可通过插入一个与 CC 串联 的低阻值电阻器 (RC) 来减小此 L-C 谐振。RC 的值由谐振电路的特性阻抗决定,并按 公式 41 中指定。 请记住,公式 41 中定义的 RC 值是包含 PWM 驱动器的输出阻抗的等效串联电阻。而且,还应考虑耦合电 容器电压的临界阻尼响应可能需要不合理的高电阻值。这会限制栅极电流,最终限制主开关的开关速度。另 一方面,欠阻尼响应可能导致谐振过程中在栅源极端子上出现不可接受的电压应力。 形成 VC 的电流有两个分量:变压器的磁化电流以及主 MOSFET 栅极和源极之间连接的下拉电阻器中流动

get For Entity 和 post For Entity 简单示例

RestTemplate restTemplate = new RestTemplate(); Map<String, Object> param = new HashMap<>(); param.put("param1", "参数1"); param.put("param2", "参数2"); JSONObject result = restTemplate.postForEntity(url,param,JSONObject.class).getBody(); RestTemplate restTemplate = new RestTemplate(); Map<String, String> param = new HashMap<>(); param.put("param1", "参数1"); ResponseEntity<String> result = restTemplate.getForEntity(url+"param1={param1}",String.class, param); JSONObject json = JSONObject.parseObject(result.getBody()); 方法示例中 三个参数 URI:请求路径 类型.class : 代表返回值类型 param :请求入参

CPU到达100%的排查

一、先进服务器,⽤top -c 命令找出当前进程的运⾏列表,如下: 二、然后我们需要根据PID 查出CPU⾥⾯消耗最⾼的进程 使⽤命令 top -Hp 2609 找出这个进程下⾯的线程,继续按P排序 可以看到 2854 CPU消耗最⾼ 2854是⼗进制的,我们需要转换为⼗六进制,转换结果:b26 温馨提醒:进制转换在线工具很多,如: 进制转换地址 三、接下来就需要导出我们的进程快照了,看看这个线程干了什么动作, jstack -l 2609 > ./2609.stack 备注:2609是上面的进程PID 四、再⽤grep查看⼀下线程在⽂件⾥做了啥 我这⾥就随便定位⼀个,基本上这样查都可以定位到你死循环的那个类,具体情况具体分析,一般知道所在类和对应的行,去分析就好了,小问题。

HTML的导航栏的代码@沁宁

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>导航栏</title> <style> .box{ height:40px; border-top: 3px solid red; border-bottom: 1px solid lightpink; text-align: center; } .box a{ width: 80px; height: 40px; display: inline-block; text-align: center; line-height: 40px; font-size: 12px; color: #999999; text-decoration: none; } .box a:hover{ background-color: seagreen; color: black; } .mod_copyright { text-align: center; padding-top: 20px; } .links { margin-bottom: 15px; } .links a { margin: 0 3px; } .copyright { line-height: 20px; } </style> </head> <body> <div class="

多组输入(C语言)

多组输入 在平时写题的过程中,常常会有多组输入的要求,所以这里将对我常使用的多组输入方法总结一下。 当已知要多组输入的数据组数时: 方法一: #include <stdio.h> int main() { int t,a; scanf("%d\n",&t);//这里t为要输入数据的组数 while(t--) { scanf("%d",&a); printf("%d ",a); } return 0; } 未知要输入数据的组数: 方法二: #include <stdio.h> int main() { int a; while(scanf("%d",&a)!=EOF) { printf("输出:%d\n",a); } return 0; } //输入ctrl+z,结束输入 方法三: #include <stdio.h> int main() { int a; while(~scanf("%d",&a)) { printf("输出:%d\n",a); } return 0; } //输入ctrl+z,结束输入 原理: 方法一: 开始所输入的 t 的值为要输入的组数,在进入 while 循环时会先对 t 的值进行判断,判断是否为真(非 0 ),显然开始输入的 t 的不会为 0 ,然后 t 再进行自减,直至 t = 0 时结束。如此即可实现对已知组数的多组输入。

实战讲解Spring定时任务:@Scheduled(图+文+源码)

1 缘起 最近看到有些定时任务的项目, 使用了Spring自带的定时任务系统,通过添加@Scheduled注解的方式实现, 并且,使用了不只cron表达式的方式实现定时执行, 恍然大悟,原来@Scheduled还有其他的方式实现定时任务, 于是,看了下@Scheduled的源码,发现有三类参数供开发者使用,cron、fixedDelay和fixedRate,同时,复习了一下cron表达式, 分享如下,帮助读者进一步了解@Scheduled的使用,轻松应对知识交流与知识考核。 版本:Spring-Context:5.2.7.RELEASE 2 注解:@Scheduled 2.1 是什么 先看下注解的注释,如下图所示。 位置:org.springframework.scheduling.annotation.Scheduled 由注释可知, (1)注解@Scheduled标注在方法上实现定时功能; (2)使用注解时必须指定任意一个参数(属性):cron、fixedDelay或fixedRate; (3)注解标识的方法必须时无参方法且无返回值。如果有返回值,返回值会被忽略; (4)有两种方式生效该注解:XML中配置:task:annotaion-driven,或者使用注解:@EnableScheduling; (5)定时任务的相关逻辑在:ScheduledAnnotationBeanPostProcessor(org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor)。 2.2 功能 (1)定时执行任务:指定执行的星期、月、天、时、分、秒,定时执行任务,cron参数; (2)固定周期执行任务:间隔x毫秒周期性指定任务,fixRate参数; (3)固定间隔延迟执行任务:延迟x毫秒执行指定任务,fixDelay参数。 2.3 参数分析 2.3.1 CRON_DISABLED 常量参数CRON_DISABLED,用于配置未生效定时任务, 值为:-,如果已经配置了定时任务,但是,不想启用定时任务,则配置cron为-。 在ScheduledAnnotationBeanPostProcessor中使用该参数,用于判断cron表达式是否生效。 具体的方法为processScheduled,处理逻辑如下图所示, 由图可知,检查cron表达式,如果cron表达式为-,则该定时任务,不会被添加到任务池。 位置:org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor#processScheduled 2.3.2 cron CRON类型的表达式,配置定时任务,共有6个时间粒度, 参数样式:a b c d e f 从左到右分别表示: 秒、分、小时、天、月、星期。 序号参数取值范围特殊字符1秒[0, 59]* , - /2分钟[0, 59]* , - /3小时[0, 23]* , - /4日期[1, 31]* , - / ? L W5月[1, 12]或[JAN, DEC]* , - /6星期[1,7]或[MON, SUN]* , - / ?

云原生事件驱动框架(KnativeEventing)

事件驱动是指事件在持续事务管理过程中,进行决策的一种策略。可以通过调动可用资源执行相关任务,从而解决不断出现的问题。通俗地说是当用户触发使用行为时对用户行为的响应。在 Serverless 场景下,事件驱动完美符合其设计初衷之一:按需付费。 1. Knative 模型 图:Knative 模型 Knative 主要包括两大部分:一是用于工作负载的 Serving,包括版本管理、灰度流量、自动弹性;二是 Eventing(事件驱动框架)。 核心玩家 Google;IBM;Pivotal;RedHat;SAP。 友商相关产品 Google CloudRun;IBM;Pivotal Function Service(PFC);OpenShift。 2. 事件驱动框架:Eventing Knative 的 Eventing 提供了一个完整的事件模型,方便接入各个外部系统的事件。事件接入以后,通过 Cloud Event 标准在内部流转,结合 Broker-Trigger 模型进行事件处理。 从上图可以看到,Eventing 中包含三部分内容: 事件源**Broker-Trigger:**事件驱动模型,这个模型在早期 16 年的版本开始出现,其原理是 Trigger 订阅 Broker 信息并过滤,最后将事件发送到对应的服务进行消费。**消息系统:**在 Eventing 中每个 Broker 下面对应一个消息的系统,来承载对事件的整个流转。目前社区支持的消息系统包括 Kafka、NATS、Rocket MQ、Rabbit MQ 等。 3. 关键特性:事件规则 事件规则的核心是 Broker-Trigger 模型,它包含以下特性: Trigger 的 filter 的作用是对 Event 进行内容过滤;支持对 Event 的 Attribute 以及 Data 的内容进行过滤;支持 Common Expression Language(CEL)表达式过滤;支持通过 SourceAndType(事件源类型)进行过滤。 二、事件驱动引擎-事件源 1.

Windows10 java环境变量的配置详细教程(Windows10 和Windows11)

java环境变量的配置详细教程 1.首先要区分一下Windows10 2021年之前的版本和Windows10 2021年之后的版本,Windows10 2021年之后的版本和Windows11 系统在配置java上差不多,故不作区分。 (1)Windows10 2021年之前的版本打开 高级系统设置。 首先,右击 此电脑,选择 属性。 选择 高级系统设置。 (2)Windows10 2021年之后的版本和Windows11 打开 高级系统设置。 首先,右键,点击个性化。 搜索 环境,选择 编辑系统环境变量。 2.选择 环境变量。 3.在系统变量,选择 新建,变量名是JAVA_HOME,变量值必须是自己装jdk时的路径,比如我的安装路径是C:\Program Files\Java\jdk-12.0.1,然后点击 确定。 4.添加Path,选中Path,点击 编辑,点击 新建(如果是用编辑文本那种方式配置的,想改成这种可以联系我), 变量值是%JAVA_HOME%\bin, 然后点击 确定。 ​​​​​​​​​​​​​​ 5.然后点击 确定, ​​​​​​​​​​​​​​ ​​​​​​​再点击确定。 6.最后,就是测试自己配置的是否成功了,打开dos命令,有两种方式打开。 (1)按住WIN(那个Windows标志的键)+ R,输入cmd。 (2)点击 搜索, 搜索 命令,点击 命令提示符。 7.进入dos命令,输入java -version,点击 Enter, 出来版本信息; 然后再输入javac,点击 Enter, 出来这些用法信息就行了。这时,Windows 10/Windows 11的java环境变量就配置好了。 如对此有疑问,请联系qq1164688204。 推荐Android开源项目 项目功能介绍:RxJava2和Retrofit2项目,添加自动管理token功能,添加RxJava2生命周期管理,使用App架构设计是MVP模式和MVVM模式,同时使用组件化,部分代码使用Kotlin,此项目持续维护中。 项目地址:https://gitee.com/urasaki/RxJava2AndRetrofit2

SpringCloud Gateway网关的使用与介绍

目录 1. gateway简介 1.1 是什么 1.2 作用 1.3 主要特征 1.4 与zuul的主要区别 1.5 主要组件 1.6 架构图 2. 开发示例 2.1 创建一个gateway模块 2.2 与nacos结合使用 2.2.1 默认规则 2.2.2 通过配置文件配置路由 2.2.3 动态路由 1. gateway简介 1.1 是什么 SpringCloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Zuul,在Spring Cloud 2.0以上版本中,没有对新版本的Zuul 2.0以上最新高性能版本进行集成,仍然还是使用的Zuul 2.0之前的非Reactor模式的老版本。而为了提升网关的性能,SpringCloud Gateway是基于WebFlux框架实现的,而WebFlux框架底层则使用了高性能的Reactor模式通信框架Netty。 1.2 作用 Spring Cloud Gateway 的目标,不仅提供统一的路由方式,并且基于 Filter 链的方式提供了网关基本的功能,例如:安全,监控/指标,和限流。 1.3 主要特征 基于 Spring Framework 5,Project Reactor 和 Spring Boot 2.0集成 Hystrix 断路器集成 Spring Cloud DiscoveryClientPredicates 和 Filters 作用于特定路由,易于编写的 Predicates 和 Filters具备一些网关的高级功能:动态路由、限流、路径重写 1.

video标签不能自动播放的原因

复习一下video标签重要的属性吧~ src 要播放的视频的 URL。autoplay 如果出现该属性,则视频在就绪后马上播放。controls 如果出现该属性,则向用户显示控件,比如播放按钮,进度条等。height 设置视频播放器的高度。width 设置视频播放器的宽度。autoplay 如果出现该属性,则视频在就绪后马上播放。 controls 如果出现该属性,则向用户显示控件,比如播放按钮,进度条等。loop 如果出现该属性,视频播放结束会再次播放,即循环播放。muted 静音播放。poster 视频的封面图。preload 如果出现该属性,则视频在页面加载时进行加载,并预备播放。如果使用 “autoplay”,该属性无效。 video不能自动播放的原因: 未加autoplay属性,或者autoplay属性为false 有的浏览器不允许非静音自动播放,如谷歌浏览器,所以要加上muted属性,才会自动播放

OPC读写Kepware(C++)

OPC读写Kepware(C++opc同步读写) ”rw“ 是kepserver6.5的OPF文件,需要kepserver6.5及以上版本才能打开OPF文件,打开后如下图。 将各种接口封装成类… OpcClient.h #include "opcda.h" #include "OpcError.h" #include "iostream" #include "opccomn.h" #define LOCALE_ID 0x409 using namespace std; class OpcClient { public: OpcClient(); ~OpcClient(); IOPCServer *m_IOPCServer; IOPCItemMgt *m_IOPCItemMgt; IOPCSyncIO *m_IOPCSyncIO; OPCITEMDEF m_Items[1]; OPCITEMRESULT *m_ItemResult; OPCHANDLE m_GrpSrvHandle; HRESULT *m_pErrors; bool OpcClientBusy; int connectToServer(LPWSTR ProgID, LPWSTR GrpID); int addItemtoGrp(LPWSTR szItemID, VARTYPE vt_ItemType); int readShort(LPWSTR OPCServerProgID, LPWSTR groupID,LPWSTR szItemID, VARTYPE vt_ItemType); int writeShort(LPWSTR OPCServerProgID, LPWSTR groupID, LPWSTR szItemID, int value); float readFloat(LPWSTR OPCServerProgID, LPWSTR groupID, LPWSTR szItemID, VARTYPE vt_ItemType); int writeFloat(LPWSTR OPCServerProgID, LPWSTR groupID, LPWSTR szItemID, float value); bool readBool(LPWSTR OPCServerProgID, LPWSTR groupID, LPWSTR szItemID, VARTYPE vt_ItemType); int writeBool(LPWSTR OPCServerProgID, LPWSTR groupID, LPWSTR szItemID, bool value); int setBool(LPWSTR OPCServerProgID, LPWSTR groupID, LPWSTR szItemID, VARTYPE vt_ItemType); int resetBool(LPWSTR OPCServerProgID, LPWSTR groupID, LPWSTR szItemID, VARTYPE vt_ItemType); int invertBool(LPWSTR OPCServerProgID, LPWSTR groupID, LPWSTR szItemID, VARTYPE vt_ItemType); int Stop(); private: }; OpcClient.

关于uniapp小程序压缩视频后上传云点播视频损坏这件事

问题起因 公司自研项目 技术栈是 uniapp 开发微信小程序 小程序内有个需要用户录制视频并上传的功能 项目内使用的是 uni.createCameraContext 相机组件进行录制视频的 一开始并没有出现什么问题 可以正常录制及上传 直到需求上多了一个 《视频直接上传过大 需要进行压缩处理再上传》 之后 问题就来了!本以为只是个简单的压缩罢了。想着直接使用uniapp提供的 uni.compressVideo api就好了 接下来就是一顿操作 简单测试一遍 自信提交!下班! uni.compressVideo({ src, quality: 'low', // bitrate:60000, // fps: 30, // resolution:1, success: (res) => { //压缩后处理 }, fail: (err) => { //错误处理 }, }); 问题初现 第二天到公司后 昨天测试测出问题了 发现压缩后上传的视频 在云点播上是损坏的 基本上播放到十秒左右 就会突然跳到结束 不压缩上传的话 就没有问题 然后就是不停的测,改,测,改,测… 整了一下午还是没搞好。 后来翻 uniapp 文档的时候 看到了在暂停录像api上 还有个属性 compressed:启动视频压缩,压缩效果同 chooseVideo 抱着死马当活马医的态度换上了 然后一测 居然好了 那么新的问题又来了 既然文档上说压缩效果同 chooseVideo 为什么一个行一个不行呢。不过现在没时间想这个了 还有个问题就是 视频录制超时的话 是没有这个压缩的 而如果在超时之前自动暂停的话 又会导致录制时间可能不准确。后来经过讨论 还是决定先使用这个方法 只不过要把录制时间多加一两秒 尽量的保持准确。

C#使用 Async 和 Await 的异步编程

总目录 文章目录 总目录前言一、概述二、命名规范三、await/async的作用四、基本使用五、使用Async和Await实现多任务顺序执行且不阻塞1.同步执行2.并行执行3.并行且可指定顺序执行 总结 前言 C# 中的 Async 和 Await 关键字是异步编程的核心。 通过这两个关键字,可以使用 .NET Framework、.NET Core 或 Windows 运行时中的资源,轻松创建异步方法(几乎与创建同步方法一样轻松)。 一、概述 使用 async 修饰符可将方法、lambda 表达式或匿名方法指定为异步。 如果对方法或表达式使用此修饰符,则其称为异步方法。async 关键字修饰的方法一般包含一个或多个await 表达式或语句,如果不包含 await 表达式或语句,则该方法将同步执行。 编译器警告将通知你不包含 await 语句的任何异步方法。async 关键字是上下文关键字,原因在于只有当它修饰方法、lambda 表达式或匿名方法时,它才是关键字。 在所有其他上下文中,都会将其解释为标识符。只能在通过 async 关键字修饰的方法、lambda 表达式或匿名方法中使用 await 运算符异步方法既不能声明任何 in、ref 或 out 参数,也不能具有引用返回(ref 返回)值,但它可以调用具有此类参数的方法。使用async修饰的方法,async需位于返回类型前,如:public async void CountAsync()异步方法的返回类型必须是 void 或任务类型。 任务类型是 System.Threading.Tasks.Task 和构造自的类型 System.Threading.Tasks.Task<T>。对于除事件处理程序以外的代码,通常不鼓励使用 async void 方法,因为调用方不能 await 那些方法,并且必须实现不同的机制来报告成功完成或错误条件。await 运算符的操作数通常是以下其中一个 .NET 类型:Task、Task<TResult>、ValueTask 或 ValueTask。 但是,任何可等待表达式都可以是 await 运算符的操作数。 二、命名规范 按照约定,返回常规可等待类型的方法(例如 Task、Task<T>、ValueTask 和 ValueTask<T>)应具有以“Async”结束的名称。启动异步操作但不返回可等待类型的方法不得具有以“Async”结尾的名称,但其开头可以为“Begin”、“Start”或其他表明此方法不返回或引发操作结果的动词。 三、await/async的作用 await/async可以简化我们异步编程的代码,也让我们可以以一种类似同步编程的方式来进行异步编程,另外当我们需要不阻塞主线程异步执行,又要有顺序的执行相关代码的时候,await/async就可以排上用场。

Windows CMD常用命令大全

1.常用命令 1.1cd命令 D: //进入D盘 F: //进入F盘 cd /? //获取使用帮助 cd \ //跳转到硬盘的根目录 cd C:WINDOWS //跳转到当前硬盘的其他文件 d: //跳转到其他硬盘 cd /d e:software //跳转到其他硬盘的其他文件夹,注意此处必须加/d参数 cd.. //跳转到上一层目录 1.2查看文件目录 dir //查看当前目录下的文件,类似于linux下的ls dir /? //查看隐藏文件或更多操作 1.3创建目录和删除目录 md 目录名(文件夹) //创建目录 rd 目录名(文件夹) //删除目录 1.4查看本级IP ipconfig //IPv4地址就是本级IP 1.5清除屏幕 cls //清楚cmd屏幕 1.6复制文件 copy 路径\文件名 路径\文件名 :把一个文件拷贝到另一个地方 1.7移动文件 move 路径\文件名 路径\文件名 :把一个文件移动(就是剪切+复制)到另外一个地方 1.8删除文件 del 文件名 //这个是专门删除文件的,不能删除文件夹 1.9ping ping ip(主机名) //用来测试网络是否畅通 1.10列出所有任务进程号,杀进程 一、查看端口占用、相应进程、杀死进程 查看端口占用 netstat –ano 可以查看所有进程 二、查看占用指定端口的程序 当你在用IIS发布程序时,经常会遇到端口80被占用的情况,我们想知道是哪个程序或进程占用了端口,可以用该命令 netstat –ano|findstr [指定端口号]

关于mmdetection、mmrotate如何计算参数量、计算量和速度FPS

近几天跑完实验后,发现效果还是不错,于是开始进行模型的参数量、计算量和速度指标的计算对比,话不多说,直接上干货。 -------------------------------------------------------------------------------------------------------------------------- 首先记住一句话:模型的参数量越小,这个模型的计算量不一定小,速度也不一定快。 关于参数量和计算量: 找到mmdetection或mmrotate的 tools/analysis_tools/get_flops.py文件,可以看到: config表示你的模型配置文件、 shape表示输入图片的长宽 测试如下: python tools/analysis_tools/get_flops.py work_dirs/s2anet_r50_fpn_3x_hrsc_le135/s2anet_r50_fpn_3x_hrsc_le135.py 结果如下: 一目了然! 而有人会问Flops与GFLOPs的区别,简单来说, GFLOPs是与你的硬件配置有关,可以理解为日常生活中常用的单位:kg、m等单位,这里不必关心。而Flops就是你的模型计算量了,这里数字越大代表计算量越大。 参数量我这里就不细说了。 ------------------------------------------------------------------------------------------------------------------------ 关于FPS的计算 找到tools/analysis_tools/benchmark.py文件 config意义同上 checkpoint表示权重文件,演示如下: python -m torch.distributed.launch --nproc_per_node=1 --master_port=29500 tools/analysis_tools/benchmark.py runs/rotated_fcos_r50_fpn_1x_hrsc_le90_reg.py runs/latest.pth --launcher pytorch 前面这一串 -m torch.distributed.launch --nproc_per_node=1 --master_port=29500 代表分布式的参数,不必深究。 记得最后要带上--launcher pytorch 运行后,结果如下: 一目了然! ----------------------------------------------------------------------------------------------------------------------- 最后,我还需要i强调一点的是:不同模型的FPS必须要在相同的输入图片大小的基础下才具有可比性! 以上,希望能让大家少踩坑!有问题可以评论留言!

AtomicInteger详解

提示:想快速解决问题,建议直接点标题中的AtomicInteger对原子操作的常用方法。 文章目录 一、AtomicInteger定义二、AtomicInteger使用场景三、AtomicInteger作用四、AtomicInteger对原子操作的常用方法五、AtomicInteger底层原理(源码解析)总结 一、AtomicInteger定义 1.AtomicInteger类是系统底层保护的int类型,通过对int类型的数据进行封装,提供执行方法的控制进行值的原子操作,但AtomicInteger ≠ Integer。 2.AtomicInteger是一个提供原子操作的Integer类,通过线程安全的方式操作加减。 从JAVA 1.5开始,AtomicInteger 属于java.util.concurrent.atomic 包下的一个类。 二、AtomicInteger使用场景 1.AtomicInteger提供原子操作来进行Integer的使用,适合高并发情况下的使用。 2.foreach作循环的时候需要对应参数进行自增或者自减操作。 三、AtomicInteger作用 分析普通Java的运算操作: Java中的运算操作在多线程是线程不安全的。比如i++解析为i=i+1,Java程序会把算式分为3个操作,获取值,计算值,赋予值,i++这个操作不具备原子性,多线程并发共享变量时必然会出现问题。 原子性:指的就是一个操作是不可中断,即使有多个线程执行,一个操作开始也不会受其他线程影响,即可以理解为线程的最小执行单元,不可被分割。 一个线程计算出值后,还未重新给变量赋值,另一个线程来读取到这个值,就会造成线程不安全的问题,有时候需要通过加锁的方式去保证线程安全,但是加锁对性能会有很大的影响。 AtomicInteger的作用:就是让程序在不加锁的时候也能保障线程安全,场景一案例: package com.example.test; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import java.util.concurrent.atomic.AtomicInteger; @SpringBootApplication public class TestApplication { static int b =0; public static void main(String[] args) throws InterruptedException{ SpringApplication.run(TestApplication.class, args); AtomicInteger a = new AtomicInteger(0); Thread t1 = new Thread(() -> { for (int i = 0; i < 10000; i++) { a.

Hexo中Buttefly最新教程总览

总览 原文地址:Hexo中Buttefly最新教程总览 | 偷掉月亮 (moonshuo.cn) 本人使用Hexo博客已经将近一年,并且使用的是Next主题,网址为moonshuo.cn,现在想要更换为Butterfly主题,现在从0开始进行相关的配置作为教程介绍。 工具准备 Node.js(必要工具)Git(必要工具)腾讯云存储桶(图床使用,其他的存储桶也可以,但是为了访问速度建议使用国内的存储桶,大概一个月0.3元,如果访问量比较高也就1元左右)自定义域名(腾讯云或者阿里云自行购买,建议所有的服务在同一家,这样配置简单好多)腾讯云静态页面托管服务(一年大概9.9元,这里为了访问速度不部署在GitHub上)腾讯云CDN加速服务(一年3元左右,如果流量很大的的话,也会贵一点,这个是可选的,但是如果启用文章与图片访问速度都会加快) 流程 环境配置—Hexo中Buttefly之基础环境配置(一) | 偷掉月亮 (moonshuo.cn)Butterfly配置—Hexo中Buttefly主题配置(二) | 偷掉月亮 (moonshuo.cn)腾讯云部署与加速—Hexo中Buttefly腾讯云部署(三) | 偷掉月亮 (moonshuo.cn)文章标签与图床的选择—Hexo中Buttefly文章标签与图床的选择(四) | 偷掉月亮 (moonshuo.cn)搜索殷勤收录—Hexo中Buttefly被百度,Bing等搜索引擎收录(五) | 偷掉月亮 (moonshuo.cn)主题美化—Hexo中Buttefly主题配置美化(六) | 偷掉月亮 (moonshuo.cn)评论系统设置与美化—Hexo中Buttefly主题Waline评论系统配置以及美化(七) | 偷掉月亮 (moonshuo.cn)主题美化进阶—Hexo中Buttefly主题美化进阶(八) | 偷掉月亮 (moonshuo.cn)主题功能增强—Hexo中Buttefly主题功能增强(九) | 偷掉月亮 (moonshuo.cn)主题美化进阶续篇—Hexo中Buttefly主题美化进阶续篇(十) | 偷掉月亮 (moonshuo.cn)主题美化续篇—Hexo中Buttefly主题美化进阶续篇(十一) | 偷掉月亮 (moonshuo.cn) 总结 在美化的过程中见过了参考了很多大佬的博客,自己也做出了一些修改,还有一些功能与自己预期的不相符合,博主自己也没有找到关键的更改代码,暂时不向大家展示,后续会继续更新的,大家如果有问题,可以去博客底下评论,有邮件通知,回复消息更加快速!!! 感谢Hexo官方提供的这么简便的搭建方法,一句牛批( ఠൠఠ )ノ

【开源数据集】无人机室内室外,视觉-惯性-激光雷达-UWB

以下内容来自从零开始机器人SLAM知识星球 每日更新内容 点击领取学习资料 → 机器人SLAM学习资料大礼包 #论文# #开源数据集# NTU VIRAL: A visual-inertial-ranging-lidar dataset, from an aerial vehicle viewpoint 论文地址:https://arxiv.org/pdf/2202.00379.pdf 作者单位:南洋理工大学 数据集地址:https://ntu-aris.github.io/ntu_viral_dataset/ 近年来,自主机器人在研究和日常生活中已经无处不在。公共数据集在这一领域的进展中扮演着重要的角色,因为它们避免硬件和人力的初始投资。然而,对于自主飞行系统的研究,似乎相对缺乏与自动驾驶和地面机器人相同的公共数据集。因此,为了填补这一空白,我们在一个装有大量传感器的空中平台上进行了数据收集工作:两个3D激光雷达,两个硬件同步全局快门相机,多个惯性测量单元(imu),特别是多个超宽带(UWB)测距单元。综合传感器套件类似于自动驾驶汽车,但具有鲜明和具有挑战性的空中特征。我们在多个具有挑战性的室内和室外条件下记录了多个数据集。来自高精度激光跟踪仪的校准结果和地面真值也包括在每个包中。 以上内容来自从零开始机器人SLAM知识星球 每日更新内容 本文由博客一文多发平台 OpenWrite 发布!