技术文章

完成你的第一个智能无人机

喜欢而已 提交于 2021-02-20 11:46:44
前 言 对于大多数无人机爱好者来说,能自己从头开始组装一台无人机,之后加入AI算法,能够航拍,可以目标跟踪,是心中的梦想。并且,亲自从零开始完成复杂系统,这是掌握核心技术的必经之路。 基于此,开课吧特邀北京航空航天大学无人机专家,进行设计和指导,独家研发与真实的科学研究和工程开发接轨的课程。软硬件结合,将教你亲自研发无人机,而不是简单的购买一个无人机整机。 课程由北京航空航天大学无人机专家设计和指导,与真实的科学研究和工程开发接轨。有以下六大优势: 那么,直接购买无人机和我们的课程研发无人机的区别在哪里呢?请看下图: 我们的课程并不是简单的拼装课程,更涉及到 飞行器设计、仿真平台搭建和算法实现的整体流程。 我们课程将会 教你无人机的基本组成、飞行原理、控制理论、状态估计、同时定位与建图、运动规划、目标检测追踪与多无人机协同; 从元器件开始搭建一个具有GPS导航和人为规划路线功能的无人机,并搭建无人机仿真平台,在仿真平台上实现各类智能算法的开发与部署。 本课程分为两大板块: ❥ 课程大纲 (仿真环境下无人机SLAM) ( 真实环境下无人机VIO ) (仿真环境下的运动规划) (仿真环境下的多机协同) (仿真环境下的无人机追踪行人) (真实环境下,无人机追踪亮灯) 本课程适合以下人员的学习: 注意: 如果学员是未成年人,家长请做好保护措施和安全教育; 组装飞行无人机有一定的安全隐患

IDEA激活码

僤鯓⒐⒋嵵緔 提交于 2021-02-20 11:46:29
相信你也和我一样,很想支持正版,可是一打开官网,看下价格~ 哎!一分钱难倒英雄汉!!! 等自己学好技术赚到钱了一定买正版支持!! 博主会长期更新Jet_Brains全家桶的激活码,如果失效,欢迎留言私信或者联系文末公众号! EFM5ESULZQ-eyJsaWNlbnNlSWQiOiJFRk01RVNVTFpRIiwibGljZW5zZWVOYW1lIjoi5rC45LmF5r

Java中的基本数据类型转换

╄→гoц情女王★ 提交于 2021-02-20 11:45:59
1.自动类型转换 自动类型转换是指:数字表示范围小的数据类型可以自动转换成范围大的数据类型。 如: long l = 100;int i = 200;long ll = i; 实线表示自动转换时不会造成数据丢失,虚线则可能会出现数据丢失问题。 自动转换也要小心数据溢出问题,看下面的例子。 int count = 100000000;int price = 1999;long totalPrice = count * price; 编译没任何问题,但结果却输出的是负数,这是因为两个 int 相乘得到的结果是 int, 相乘的结果超出了 int 的代表范围。这种情况,一般把第一个数据转换成范围大的数据类型再和其他的数据进行运算。 int count = 100000000;int price = 1999;long totalPrice = (long) count * price; 另外,向下转换时可以直接将 int 常量字面量赋值给 byte、short、char 等数据类型,而不需要强制转换,只要该常量值不超过该类型的表示范围都能自动转换。 -END- 长按订阅 ,听我聊技术 本文分享自微信公众号 - Java开发者之路(javaResource)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“ OSC源创计划 ”,欢迎正在阅读的你也加入,一起分享。

linux之路——find命令学习笔记

天大地大妈咪最大 提交于 2021-02-20 11:44:57
linux 系统中查找文件的命令find,虽然linux命令入手比较困难,但linux命令功能确实很强大, find"命令查找文件只要灵活应用,丝毫不必在WINDOWS中查找能力差"。 #在根目录下查找“mysql” find / -name 'mysql' #查找home目录下大于10000000byte的文件 find ~ -size +10000000c #查找当前文件下名为“e-book”的文件夹 find . -name "e-book" -type d #查找符合条件的文件厚将其删除 find ~/temp/test -name "*.py" -type f | xargs rm -f #按条件查找到文件后,执行 -exec 命令 find ./temp/test/gbk/ -type f -exec file "{}" \; #查找符合权限的文件 find . -perm -664 #将当前目录下最近30天访问过的文件移动到上级back目录 find . -type f -atime -30 -exec mv {} ../back \; #删除当前目录中所有.svn目录 find . -name .svn -type d -exec rm -rf {} \; #删除当前目录所有以“~” 结尾的临时文件 find . -name "*~" -exec rm {} \;

快速集成华为AGC云存储服务-Web

吃可爱长大的小学妹 提交于 2021-02-20 11:44:29
华为AppGallery Connect提供了一个云存储(CloudStorage)的服务,号称提供了一个便捷的云端存储服务,应用开发者使用的时候,可以不用关注服务器的部署,直接使用就行。 这个服务近期上线了Web端的JavaScript的SDK,我抢先体验试用了一下。也可以 下载codelab 或者 demo 自行研究。 1、环境与应用信息 版本名称 集成环境-应用 测试设备 "cloudstorage": "1.0.0" Window-Node-v14.15.0 npm v6.14.8 Intellij + Vue PC-Chrome 环境: https://developer.huawei.com/consumer/rn/service/josp/agc/index.html SDK版本:"@agconnect/cloudstorage": "^1.0.0-beta3" 集成SDK命令:npm install --save @agconnect/cloudstorage 2、在AGC上开通云存储: PS: 云存储服务目前还处于beta状态,使用前应该发邮件去申请开通: https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-cloudstorage-apply

通达OA任意文件上传漏洞详细分析

谁说胖子不能爱 提交于 2021-02-20 11:39:03
影响 影响范围(但是只有V11版和2017版有包含文件的php,其余版本能上传文件.): V11版 2017版 2016版 2015版 2013增强版 2013版。 这个漏洞是几个月前的漏洞,主要是学习一下这个漏洞代码的形成原理和调式过程。 该漏洞主要是通过绕过身份验证的情况下上传文件,然后通过文件包含漏洞实现代 码执行 代码分析 源码经过zend 5.4加密,解密工具: SeayDzend,可以自行百度下载 在线解密 http://dezend.qiling.org/free.html 任意文件上传的关键文件 webroot\ispirit\im\upload.php 代码分析: 可以看到只要判断P参数是否不为空,就开启了session 没有P参数时候 有的时候 继续往下走 判断DEST_UID是否不为空,否则就会退出 判断DEST_UID=0的时候,如果UPLOAD_MODE不等于2就直接退出了 判断DEST_UID不等于0的时候直接判断$_FILES数量是否有,也就是判断有没有上传文件 这里可以是第二个情况,DEST_UID=0,UPLOAD_MODE=2进行下一步 也可以是DEST_UID不为0进入下一步 继续往下走 可以这里又if语判断上传的模式,我们来看看上传的模式有哪几种,可以看到总共有1,2,3,其中1,2,3如果成功了是有回显的 这里设置upload_mode为1

Django web-poll系统

不问归期 提交于 2021-02-20 11:38:49
通过一个调查问卷的例子来学习Django,它主要包括两部分: 一个公共站点,允许用户查看问卷并投票 一个管理员站点,允许添加、修改和删除问卷 假设你已经安装了Django,可以使用 python -m django --version 来检测 创建一个项目 通过 django-admin startproject mysite 创建一个项目 该命令会在当前目录创建一个 mysite 目录,切记不要用 django 这个关键字来给项目命名。 创建得到的目录结构如下: mysite/ manage.py mysite/ __init__.py settings.py urls.py wsgi.py 接下来一一解释这些文件的作用: 外部的 mysite/ 根目录是整个项目的容器,它的名字并不重要,你可以自行重命名; manage.py :一个命令行的组件,提供多种方式来和Django项目进行交互 内部的 mysite/ 目录是项目实际的Python包,它的名字就是将来 import 时要用的,比如 mysite.urls mysite/settings.py :当前项目的配置文件 mysite/urls.py :当前项目的 url 声明语句 mysite/wsgi.py :WSGI兼容的web服务器的entry-point 开发服务器 通过 python manage.py

仿微信语音聊天

落花浮王杯 提交于 2021-02-20 11:37:55
如上图,是常见的仿微信的聊天程序,实现的效果如上图所示,由于项目太大,本文只讲录音部分。本项目示例代码:https://github.com/xiangzhihong/weixinAudio 主要用到4个核心类: 自定义录音按钮(RecoderButton); 弹框管理类(RecorderDialog); 录音管理类(AudioManager); 录音播放类(MediaManager)。 其中 1.AudioRecordButton状态: 1.STATE_NORMAL:普通状态 2.STATE_RECORDING:录音中 3.STATE_CANCEL:取消录音 2.DialogManager状态: 1.RECORDING:录音中 2.WANT_TO_CANCEL:取消录音 3.TOO_SHORT:录音时间太短 3.AudioManager: 1.prepare():准备状态 2.cancel():取消录音 3.release():正常结束录音 4.getVoiceLevel():获取音量 代码实现 自定义Button,重写onTouchEvent()方法,用于执行长按录音操作。 class AudioRecorderButton{ onTouchEvent(){ DOWN: changeButtonState(STATE_RECORDING); | DialogManager

sizeof 计算 struct 占字节数的方法总结

痞子三分冷 提交于 2021-02-20 11:37:13
矛盾焦点: 1、结构体的内存对齐方式 字节对齐的目的: 1、提高CPU存储变量的速度 计算的核心点(默认对齐方式): 1、结构体内的每一个成员的起始地址跟结构体起始地址的偏移量要刚好是自己字节数的整数倍,不足则自动填充。 2、结构体总的字节大小要刚好是结构体的字节边界数的倍数,不足则自动填充。(字节边界数:结构体中占用最大空间的类型的字节数) 3、static修饰的结构体成员不占用结构体字节数,因为静态变量的存储地址跟结构体的实例地址无关。 4、空结构体的字节数为1,因为必须保证结构体的实例地址唯一。 计算的核心点(#pragma pack设置字节对齐大小): #pragma pack(push) #pragma pack(n) ... #pragma pack(pop) 一、结构体每个成员的地址偏移量 1、如果n大于等于当前成员的字节数,则当前成员的地址偏移量要刚好是自己字节数的整数倍,不足则自动填充。 2、如果n小于当前成员的字节数,则当前成员的地址偏移量要刚好是n的整数倍,不足则自动填充。 二、结构体总的字节数 1、如果n大于等于结构体中占用最大空间的类型的字节数,则结构体总字节数大小要刚好是结构体中占用最大空间的类型的字节数的整数倍。 2、如果n小于结构体中最大空间的类型的字节数,则结构体总字节数的大小要刚好是n的整数倍。 计算的核心(补充): 1

我在GitHub上找到了这些游戏项目,刺激!

情到浓时终转凉″ 提交于 2021-02-20 11:36:49
作者:JackTian 来源:公众号「杰哥的IT之旅」 ID:Jake_Internet 大家好,我是JackTian。 当你学习、工作累了,趁休息时间娱乐放松一下,通过用游戏的方式来学习技术,那么 GitHub 上这些好玩的开源项目小游戏是最适合不过了。 首先,我们来看一下这张图,可快速了解这篇文章中所涉及到的 23 个关于游戏方面的开源项目。 Games on GitHub 这个开源项目作者收集了托管在 GitHub 上的开源游戏以及跟游戏相关的项目列表,所含的项目类型众多,游戏种类包括教育类、浏览器类等,还包括一些开源的游戏引擎等等; 该项目的目录: 具体细节就不逐一点开给大家演示了,感兴趣的朋友去看看。 GitHub 地址:https://github.com/leereilly/games vim-game-code-break 这个项目是 Vim 插件版本的打豆豆。 将其放在您的.vimrc中: Plug 'johngrib/vim-game-code-break' 然后在Vim中运行以下命令: :source % :PlugInstall 装上这个插件输入 :VimGameCodeBreak ,即可开始游戏。 功能介绍 h、l 键是控制左右方向; space 键是发球; ` 键是作弊键; ] 键是神模式,[ 键是人工模式; q 键是结束游戏,Q 键是退出并关闭游戏;