自动驾驶技术栈
自动驾驶技术是复杂科学,在学习阶段能够精通其中一小部分内容就已经非常厉害了。
总结了相关的技术,根据这个思维图,能帮助自己更好理解自动实现自动驾驶需要什么。
点击以下的图片进行下载。
自动驾驶技术栈
做一个一直努力的人,青年向上走--cty
开始了新的研究生涯,但是每次知网下载文献看了,都存放得乱七八糟,很难做管理。
于是乎寻找文献管理软件,做研究和做工程有很多的差距,还是要多看新的思维,多看新的论文。
这里贴出一个很好用的文献管理软件ENDNOTE
这个软件是收费的,学校是购买了这个软件的,但是手续很麻烦,要拿着校园卡去图书馆申请,鉴于疫情期间学校很多事情办的流程长,还是有其他办法的!
!!!好在国内有很多方法可以使用到免费的正版endnote20
https://www.nais.net.cn/publish/default//fwgg/content/2020110217273217370.html
感谢国家农业图书馆,感谢!!
点击这个链接,获取正版。记住安装的时候专门建一个文件夹,许可证和安装包放在一起。
此外关于endnote如何使用,参考这个博文。
https://study.zwjjiaozhu.top/posts/EndNote.html
作者一直在更新。
这个概念就顾名思义:是用来装饰一个东西的作用
例如一个函数fun想在它函数外面实现一些额外的功能,就可以用装饰器
1 | def fun1(): |
1 | def DP_print(fun1): |
装饰器说简单一点就是在不改变原来的函数的结构的情况下,去给函数的前面和后面增添一些功能,例如说我想知道某个函数的使用时间,那么就可以写一个装饰器,对于其他的函数我也同样可以使用。
1 | import time |
编译程序时需要加上-g,之后才能用gdb进行调试:gcc -g main.c -o main
gdb中命令:
回车键:重复上一命令
(gdb)help:查看命令帮助,具体命令查询在gdb中输入help + 命令,简写h
(gdb)run:重新开始运行文件(run-text:加载文本文件,run-bin:加载二进制文件),简写r
(gdb)start:单步执行,运行程序,停在第一执行语句
(gdb)list:查看原代码(list-n,从第n行开始查看代码。list+ 函数名:查看具体函数),简写l
(gdb)set:设置变量的值
(gdb)next:单步调试(逐过程,函数直接执行),简写n
(gdb)step:单步调试(逐语句:跳入自定义函数内部执行),简写s
(gdb)backtrace:查看函数的调用的栈帧和层级关系,简写bt
(gdb)frame:切换函数的栈帧,简写f
(gdb)info:查看函数内部局部变量的数值,简写i
(gdb)finish:结束当前函数,返回到函数调用点
(gdb)continue:继续运行,简写c
(gdb)print:打印值及地址,简写p
(gdb)quit:退出gdb,简写q
(gdb)break+num:在第num行设置断点,简写b
(gdb)info breakpoints:查看当前设置的所有断点
(gdb)delete breakpoints num:删除第num个断点,简写d
(gdb)display:追踪查看具体变量值
(gdb)undisplay:取消追踪观察变量
(gdb)watch:被设置观察点的变量发生修改时,打印显示
(gdb)i watch:显示观察点
(gdb)enable breakpoints:启用断点
(gdb)disable breakpoints:禁用断点
(gdb)x:查看内存x/20xw 显示20个单元,16进制,4字节每单元
(gdb)run argv[1] argv[2]:调试时命令行传参
(gdb)set follow-fork-mode child#Makefile项目管理:选择跟踪父子进程(fork())
core文件:先用$ ulimit -c 1024 开启core,当程序出错会自动生成core文件。调试时 gdb a.out core
微控制器,MCU。本质上还是微型计算机,广泛应用在各个行业。
MCU,又称微控制器或单片机,是把CPU的频率与规格做适当缩减,
并将内存(Memory)、计数器(Timer)、USB、A/D转换、UART、PLC、DMA等周边接口,甚至LCD驱动电路都整合在单一芯片上,形成芯片级计算机。
从而实现终端控制的功能,具有性能高、功耗低、可编程、灵活度高等优点。MCU一般分为8位、16位、32位和64位。
无论是DIY还是专业产品,任何嵌入式电子设备的核心都是微控制器。微控制器通过运行代码/固件,帮助开发人员从传感器获得输入,并输出给执行器以实现对设备的控制。
以下总结了单片机、FPGA、DSP的知识,用于备忘。可以点击下载
微控制器总结
Micro control unit
微型控制单元
软连接是Linux中一个常用命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接。
具体用法是:ln -s 源文件 目标文件。
当 我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在其它的 目录下用ln命令链接(link)就可以,不必重复的占用磁盘空间。
例如:
1 | ln` `-s ``/usr/local/mysql/bin/mysql` `/usr/binL |
这样我们就对/usr/bin目录下的mysql命令创建了软连接 L
【硬连接】
硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。
【软连接】
另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
使用方式
创建软链接
ln -s [源文件或目录] [目标文件或目录]
例:
当前路径创建test 引向/var/www/test 文件夹
1 | ln` `–s ``/var/www/test` `test |
创建/var/test 引向/var/www/test 文件夹
1 | ln` `–s ``/var/www/test` `/var/test |
删除软链接
和删除普通的文件是一样的,删除都是使用rm来进行操作
例:
删除test
1 | rm` `–rf ``test |
修改软链接
ln –snf [新的源文件或目录] [目标文件或目录]
这将会修改原有的链接地址为新的地址
例如:
创建一个软链接
1 | ln` `–s ``/var/www/test` `/var/test |
修改指向的新路径
1 | ln` `–snf ``/var/www/test1` `/var/test |
常用参数:
1 | -f : 链结时先将与 dist 同档名的档案删除 |
构造器,或者说构造函数,是一个很基础的概念,在Java和C++中,它们的存在形式和类的名称相同,通过改变参数列表来定义一些需要初始化的量
在创建对象的同时为成员变量赋值
1.构造器,也称构造方法、构造函数。作用是构造出来一个类的实例,确保对象得到初始化。
2.构造器的格式: 权限修饰符 类名(无参/有参){}。
3.根据有无参数,可分为无参构造 和有参构造。
构造器最大的用处就是在创建对象时执行初始化,当创建一个对象时,系统会为这个对象的实例进行默认的初始化。如果想改变这种默认的初始化,就可以通过自定义构造器来实现。
构造器可以用来在初始化对象时初始化数据成员,一个类可以有多个构造器。一个类的构造器的名称必须与该类的名称一致。
##构造器的特性
1.与一般方法名不同的是,构造方法名必须和类名保持一致,并且没有返回值,甚至连void都没有。
2.Java编译器会自动创建无参构造函数,因此在类中,无参构造即使没有,我们也可省略不写。实例化对象时无需赋值在。
而c++中类的构造函数不会自动初始化类的变量,它们的值将取决于内存中读取的值,所以,在构造函数中,建议对成员变量赋上初值.
当为一个类设定了有参数的constructor之后,编译器将不会为类提供默认的构造函数
3.倘若类中已存在有参构造函数,则编译器不再提供默认无参构造。实例化对象时需赋值,不然报错。
4.当类实例化一个对象时会自动调用构造方法。
5.不能被static、final、synchronized、abstract和native修饰。构造方法不能被子类继承
6.每个类可以有零个或多个构造方法.
在python中其实也有构造器这个概念,至少它被定义为了一种魔法方法。
1 | self.p1 = p1 |
其中self这个很有意思,它指代的是实例化之后的数据体本身,代表“我有这种属性”
在本类中调用某一个属性的时候,用self.xxx来使用,这样可以和类外的同名方法区分开来
这里厘清一个重要的概念,静态方法,在Java中,在实例化之前就能使用静态方法
@staticmethod
静态方法只是名义上归属类管理,但是不能使用类变量和实例变量,是类的工具包
放在函数前(该函数不传入self或者cls),所以不能访问类属性和实例属性
电脑端用不了缓存的功能,很多视频怕被和谐以后看不了。
推荐一个小工具,可以下载。
现在很多教程都可以通过b站学到,推荐当成一个学习网站来使用。
bilibili下载小工具
1、下载node.js因为hexo依赖node来运行
2、下载完成后直接安装,在cmd里node -v一下看看版本,如果有就是安装好了
3、因为国内下载很慢,执行npm install -g cnpm –registry=https://registry.npm.taobao.org安装cnpm
4、利用cnpm来安装cnpm install -g hexo-cli 可以hexo -v看一下版本 cnpm -v看一下版本
5、建一个新的空目录,切换到这个根目录下面
hexo init 这个命令在国内是没办法用的因github是被墙了的,只能说xxxxx
解决办法:
C:\Users\TaoYang Chen\AppData\Roaming\npm\node_modules\hexo-cli\lib\console这个下面有个init.js
参考https://blog.csdn.net/qq_43580193/article/details/117341489
将const GIT_REPO_URL = ‘https://github.com/hexojs/hexo-starter.git';
更改为:const GIT_REPO_URL = ‘https://github.com.cnpmjs.org/hexojs/hexo-starter.git';
仍然不行,真是操蛋
只能上加速器了
还好,最后找到了一个可以用的镜像网站https://kgithub.com/当然这个是有时效性的,以后不一定好用
在本地的git bash里面看看自己的邮箱和名字是否是github上对应的邮箱和名字
如果不是,设置一下
``git config user.name git config user.email
接着需要给本机搞一个ssh的公钥和私钥,键入ssh-keygen -t rsa -C “email”
结果是:
Your identification has been saved in /c/Users/TaoYang Chen/.ssh/id_rsa
Your public key has been saved in /c/Users/TaoYang Chen/.ssh/id_rsa.pub
连续回车,生成密钥,在指定的位置找到两个文件
然后打开github自己的网站,去setting里面找到ssh设置,新建一个ssh链接,把公钥文件给打开,全部复制粘贴到框里,点击完成。
然后试一试是否能ssh上仓库
$ ssh -T git@github.com
Hi CTYsimple! You’ve successfully authenticated, but GitHub does not provide shell access.
显示已经链接
则当前仓库已经可以ssh
接着,hexo init之后,会在相应的目录下产生初始的一些文件和目录,当然,我们不用再重复搭一遍
由于博客里有pdf,需要在博客的主目录下安装这个插件陈cnpm install –save hexo-pdf 否则在生成静态网页文件的时候会报错
我们在原本的博客源文件夹下面,把一些重要的东西复制过来。1、public2、scaffolds3、source4、themes5、_config.yml6、package.json
当然这个不一定是准确的,先复制粘贴过去再说,覆盖掉。
不行就百度查一下
然后进到cmd
hexo clean
hexo g
hexo s看一下效果
如果能成功生成静态网页,就可以直接部署
直接hexo d
如果没问题的话就是没问题了
这个就是hexo博客在两台电脑上转移的方法
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent:
meta: false
pages: false
posts:
title: true
date: true
path: true
text: false
raw: false
content: false
slug: false
updated: false
comments: false
link: false
permalink: false
excerpt: false
categories: false
tags: true