dylanin1999

导航

2022年8月13日 #

spinlock、mutex的使用与休眠

摘要: 最近在工作中遇到了一些关于锁的问题,遇到了一些困扰,记录一下 spinlock 自旋锁,会一直阻塞,直到能够获取到锁位置。 mutex 互斥量,如果拿不到锁,就会进行休眠,引起进程调度。 但是我们在做内核驱动的时候,总会遇到在某些场景下,不能使用某些锁的情况... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(206) 评论(0) 推荐(0)

Linux文件系统与设备文件

摘要: 打开 int open(const char *pathname, int flags);int open(const char *pathname, int flags, mode_t mode); 读写 int read(int fd, const ... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(37) 评论(0) 推荐(0)

Linux内核模块

摘要: 目录 模块(Module) 加载模块 卸载模块 查看模块信息 Linux内核模块程序结构 1、模块加载函数 2、模块卸载函数 3、模块许可证声明 4、模块参数(可选) 5、模块导出符号(可选) 6、模块作者等信息声明(可选) 模块使用计数 7、模块的编译 模块... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(129) 评论(0) 推荐(0)

Linux异步通知

摘要: 异步通知 作用:一旦设备就绪, 则主动通知应用程序, 这样应用程序根本就不需要查询设备状态, 这一点非常类似于硬件上“中断”的概念, 比较准确的称谓是“信号驱动的异步I/O”。 阻塞I/O意味着一直等待设备可访问后再访问, 非阻塞I/O中使用poll() ... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(107) 评论(0) 推荐(0)

Linux 内存与I/O访问

摘要: 目录 内存空间与I/O空间 内存管理单元(MMU) TLB(Translation Lookaside Buffer) TTW(Translation Table walk) Linux内存管理 内存存取 内核空间内存动态申请 内存池 I/O 访问 I/O 内... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(540) 评论(0) 推荐(0)

Linux定时器

摘要: 目录 timer_list结构体: 初始化定时器以及初始化绑定参数 增加定时器 删除定时器 修改定时器 内核延时 短延迟 长延迟 睡着延迟 ​​​​​​​ 在Linux设备驱动编程中, 可以利用Linux内核中提供的一组函数和数据结构来完成定时触发工作或者完成... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(371) 评论(0) 推荐(0)

Linux中断

摘要: 目录 中断 根据中断来源 内部中断 外部中断 根据中断是否可屏蔽 可屏蔽中断 不可屏蔽中断 中断入口跳转方法 向量中断 非向量中断 GIC(Generic Interrupt Controller) SGI(Software Generated Interru... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(442) 评论(0) 推荐(0)

Linux的并发控制

摘要: 目录 中断屏蔽 原子操作 自旋锁 信号量 互斥体(Mutex) 访问共享资源的代码区域称为临界区(Critical Sections) 解决编译乱序问题, 需要通过barrier() 编译屏障进行 #define barrier() __asm__ __vol... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(150) 评论(0) 推荐(0)

Android笔记:《第一行代码》DataSupport被弃用问题

摘要: 在学习《第一行代码》第二版的时候,发现DataSupport类不再支持了,找了一些资料,发现可以替代的方案 解决途径 先附上LitePal项目的使用文档:https://github.com/LitePalFramework/LitePal ,现在学习的资料一... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(85) 评论(0) 推荐(0)

解决conda install时出现 failed with initial frozen solve. Retrying with flexible solve 的问题

摘要: 现象:使用conda install命令安装python包时,一直出现如下的报错信息 failed with initial frozen solve. Retrying with flexible solve. 原因分析:其实我并没有找到确切原因,但是结果资... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(2224) 评论(0) 推荐(0)

ISP--Black Level Correction(黑电平矫正)

摘要: 在上一篇文章中,我们已经知道了Sensor的构造,Sensor的成像原理。但是从光信号转换为图像,其中还有许多的工作,OBC就是其中之一。 在之前的文章中,我们已经知道了,每一个像素点都是由一个光电二极管控制的,由二极管将电信号,转换为数字信号。 那么,我们知... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(1183) 评论(0) 推荐(0)

Android 应用权限问题 -- 路径正确,bitmap无法读取文件

摘要: 在调用文件管理器获取文件的时候,已经解析出了文件的路径,但是用bitmap来读取的时候,死活都读不出来,一直返回null对象。 于是进行了检查, 1、返回路径是正确的 2、加入了读写的权限 但是还是无法正常读取文件并显示 搞了很久,最终看了一下手机上,APP... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(118) 评论(0) 推荐(0)

Camera CMOS Sensor成像原理

摘要: 时至今日,手机相机已经是我们几乎无法离开的最重要工具之一。 而且每次手机发布,手机的相机也是我们除了处理器之外最为关键的卖点之一。但是你真的知道它是怎么运转的吗? 看到这里,就有人要问了,大哥,我用相机,我还需要知道它的原理吗?我不知道怎么造汽车,这影... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(641) 评论(0) 推荐(0)

BM3D 算法原理详细解析 按过程步骤讲解(附C++实现代码)

摘要: BM3D是2007年提出的算法了,至今已经有一些年头了,但是仍然不妨碍它基本上还是最强的去噪算法。 在初步了解了BM3D的算法后,会发现,BM3D有种堆叠怪的嫌疑。有很多不同的算法的影子在里面,比如Non-Local Means、Wavelet shrinka... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(1087) 评论(0) 推荐(1)

HEAP CORRUPTION DETECTED:after Normal block错误的方法解决与分析

摘要: 先说现象,这个问题的表现现象主要是:在malloc(new(new[]))之后,内存使用正常,但是在free(delete(delete[]))时,就会出错了。 结论:出现这个问题的主要原因是:分配的内存少于实际使用的内测。 比如:char* data = m... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(359) 评论(0) 推荐(0)

gerrit 将代码从一个分支合并到另外一个分支 Cherry Pick的使用

摘要: 最近公司项目里从项目主线分支master拉了一个量产的分支,搞得在修完bug之后,必须得两个分支都提交修改代码。 第一天拉完分支后,我给整忘了,只提交了主线的代码。 然后挨批了。 但是我发现我也不是很熟悉想另外一个分支提交代码的流程。 研究了一下,这里记录一下... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(1614) 评论(0) 推荐(0)

git在工程中的操作 - patch stash status checkout reset log

摘要: 最近接触了大量的git操作并且遇到了很多的问题,这里记录一下,并且方便以后查阅。也希望能够帮到其他的人。 1、删除文件及其上传 在工作空间手动删除文件 会显示 $ git status On branch master Changes not staged... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(70) 评论(0) 推荐(0)

git提交错误 [remote rejected] HEAD -> refs/xxx 原因以及解决方法

摘要: 今天向gerrit提交代码时,发生了一下的错误: error: unpack failed: error Missing tree be99d2d528be3ef6b4354fb88dd72059ee7f71ee fatal: Unpack error, ch... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(1946) 评论(0) 推荐(0)

LeetCode解题总结--双指针

摘要: 双指针解题多用于链表、数组等问题当中。 双指针的难度在于: 1、一开始可能很难想到 2、变式很多 3、指针并不是具体指的函数中的“指针”,而是一种思想。例如设置两个不同的可动标志位,也是”双指针“ 下面以具体... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(95) 评论(0) 推荐(0)

C++ istream_iterator的源码与使用方法分析

摘要: 最近在看C++ STL的源码,看的主要是gnu2.9版本的源码。 其中看到了istream_iterator的实现源码,源码如下: template class istream_iterator { friend bool operator== __ST... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(129) 评论(0) 推荐(0)

手机root后无法向system写入文件,提示/system is read-only的解决方法

摘要: 今天在用ADB操作手机时,使用adb push 命令想将文件写入到/system 和 /vendor文件夹中,但是提示了这两个文件夹是read-only的。 在遇到这个问题之后我第一时间查看了我adb的权限,使用 adb root 但是得到的提示是: 说明... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(2317) 评论(0) 推荐(0)

NML(Non-Local Mean)非局部平均算法 完全解析与积分图加速 (附代码)

摘要: 最近开始学习在Denoise方面的内容,在这方面比较重要的传统算法当然是BM3D这种到目前比较fancy的,效果也是目前最好的算法。但是BM3D的一个致命缺点就是速度很慢,所以BM3D我们以后再说吧,我们先讲一下BM3D算法中的基础,Non Local Mea... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(1321) 评论(0) 推荐(1)

camera tuning的常用缩写

摘要: CC, color conversion,色彩转换 CC, color correction,色彩矫正 CE, chroma enhancement,色度增强 SNR,signal-to-noise ratio,信噪比 SNR, skin noise redu... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(330) 评论(0) 推荐(0)

Android NDK学习笔记(一)

摘要: 一、构建系统 (一)Android.mk LOCAL_PATH: Android.mk文档必须以LOCAL_PATH变量的定义开头 ... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(345) 评论(0) 推荐(0)

设计模式之三:单例模式 Singleton

摘要: 在实际工作中,我们很多时候在对类对象的管理和使用上,希望自己定义的类只有一个实例化对象,这样才能保证,在整个流程中使用的都是同一个实例对象,从而保证流程的正确性,那么,我们要怎么样才能,让自己定义的对象只被声明一次呢? 我们不能简单地说,那我告诉,类的使用者,... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(34) 评论(0) 推荐(0)

Linux 下 C++ 遍历文件夹下的文件名

摘要: 在C++中,我们一般学的时候都很少学到相关的文件夹方面的操作,相对来说,C++的文件夹操作也比较麻烦。而不像Python有OS模块,在操作文件夹方面简单易于上手。 下面我们直接看一下,C++遍历文件夹的代码吧: #include #include #in... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(1297) 评论(0) 推荐(0)

Fseek()与Ftell()函数的作用

摘要: Fseek() fseek函数功能是将文件指针移动到指定的地方,因此可以通过fseek重置文件指针的位置。 函数原型: int fseek(FILE *stream, long offset, int origin); 参数说明: stream : 待移动的... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(438) 评论(0) 推荐(0)

C++ 多线程--STL库 总结版 (详细)

摘要: 最近在看C++ STL库的多线程部分,基本上看完了,现在就来做一下总结吧。 目录 一、高级接口 二、低级接口 三、互斥量与锁(Mutex & Lock) 1、互斥量(Mutex): 2、锁(Lock): 四、条件变量(Con... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(847) 评论(0) 推荐(0)

图像解析力算法—SFR(Spatial Frequency Response)源码分析(二)--完

摘要: 在上一篇图像解析力算法—SFR(Spatial Frequency Response)源码分析(一)中介绍了SFR的几个重要函数,接下来我们看一下主流程和其他函数。 4、sfrProc作用:计算SFR数值的主流程函数 short sfrProc (double... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(529) 评论(1) 推荐(1)

图像解析力算法—SFR(Spatial Frequency Response)源码分析(一)

摘要: 在前面的文章中,我们已经分析了SFR的算法原理与步骤,下面我们直接来分析源码,源码中主要的函数主要分为一下几个: 1、locate_centroids作用:定位每一行像素的矩心位置 unsigned short locate_centroids(double ... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(559) 评论(0) 推荐(0)

图像处理之细化算法(Thinning Algorithm)C++实现

摘要: 最近在实验室里遇到了一个问题,就是在有一张轮廓二值图的情况下,如何才能将轮廓进行细化,得到轮廓的骨架。 效果如图: 可以看到,右边图中的数字变瘦了,这就是细化算法的作用 下面我们来讲一下,Thining-Algorithm的算法原理。 一、八领域 我们先来介... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(559) 评论(0) 推荐(0)

图像解析力算法—SFR(Spatial Frequency Response)原理分析(二)

摘要: 在图像解析力算法—SFR(Spatial Frequency Response)原理分析(一)中,我们已经分析了SFR的前四个步骤,接下来,我们继续讨论以下的五个步骤 4、重新定位ROI,获得ESF 5、对获得的ESF进行四倍超采样 6、通过差分运算获得LSF... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(553) 评论(0) 推荐(0)

图像解析力算法—SFR(Spatial Frequency Response)原理分析(一)

摘要: 在图像解析力算法—SFR(Spatial Frequency Response)概念理解一文中,我们已经讲解了在阅读SFR源码前必须了解的概念,下面我们来讲解一下,SFR算法的计算具体流程,然后结合源码进行分析, 获取计算公式。 先来看图,直观感受一下吧: ... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(1266) 评论(0) 推荐(0)

图像解析力算法—SFR(Spatial Frequency Response)概念理解

摘要: 最近这一个月在搞SFR算法--(空间频域响应),终于也算是搞出来了,网上关于SFR计算MTF的资料和博客也是比较少,现在就是总结一下,也算是方便后人,篇幅估计会比较长,会分篇慢慢写。 讲到SFR和MTF,刚入门的小伙伴,肯定会觉得一脸懵逼,我们先来解释一下... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(1076) 评论(0) 推荐(0)

RGB转换NV21(YUV的一种储存格式)(代码实现)

摘要: 实习的第二个任务是,将RGB图片转换成NV21(YUV的一种储存格式,也是在Android手机中最常见的图片 raw储存格式) 我们先来看看NV21 以及其他相似的存储格式吧~ NV21(YUV420)介绍 NV12和NV21属于YUV420格式(每2x2... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(588) 评论(0) 推荐(0)

黑鲨科技图像处理实习生---面试题目总结

摘要: 今天去黑鲨科技面试图像处理实习生,本来是说不用做题的,但是还是拿了一份校招的题目来给我做。。。 这里记录一下我不会的题目。。 1、RAW图像数据 和 MIPI图像数据的转换 大概题目意思就是:RAW的数据通常为10bit,存储RAW需要两个Byte,其中有4个... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(83) 评论(0) 推荐(0)

TX2安装caffe(从头开始,最全教程)

摘要: (大二时记录在有道云笔记的记录,现在开始搬运) 准备工作: 1. 刷机。第一次使用TX2,那是需要刷机的。由于TX2自带的ubuntu系统比较老,不适合我们接下来的工作,所以我们需要升级TX2的系统。笔者使用的是ubuntu16.04。简单地说,就是用网线将T... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(80) 评论(0) 推荐(0)

使用YOLO(You only look once) 对灰度图(单通道)进行训练和识别

摘要: 最近,实验室的比赛在识别上用到了灰度图,因为官方对颜色进行了修改,我们在没有官方数据的情况下,只能使用灰度图进行训练识别,以期望可以排除颜色的影响。但是在使用yolo训练单通道灰度图的时候出现了一些问题,在修改cfg配置文件后进行训练,一直出现,segment... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(945) 评论(0) 推荐(0)

Tensorflow导入训练模型进行识别(附代码)

摘要: 最近在做李宏毅的深度学习的作业,导入模型的时候,发现,我在导入模型进行预测时,需要重新手动构建网络进行检测,这样显得十分不“智能”。之前在比赛中一直是使用这种方法,但是由于当初比较忙,并没有深究这个问题。现在,学习了一下,发现使用Tensorflow 可以用两... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(209) 评论(0) 推荐(0)

ImportError: libcudnn.so.7: cannot open shared object file: No such file or directory

摘要: 在安装cudnn的时候,安装完成之后,importTensorFlow会出现如题中的错误, 这个报错要么是环境变量配置问题,要么是CUDNN连接建立问题。 1.环境变量 在~/.bashrc 的最后添加 export PATH=/usr/local/cuda/... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(353) 评论(0) 推荐(0)

TensorFlow-GPU与Python、CUDA的版本对应问题

摘要: 最近在学校的服务器上安装TensorFlow-GPU遇到了一些问题,都是一些版本对应的问题,总结了一下 以上是版本的对应 详细的可以看一下连接: https://tensorflow.google.cn/install/source ... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(43) 评论(0) 推荐(0)

error: (-215:Assertion failed) src_depth != CV_16F && src_depth != CV_32S in function 'convertToShow

摘要: 最近在处理数据时,使用OpenCV将其转换图片时,出现了一个错误: error: (-215:Assertion failed) src_depth != CV_16F && src_depth != CV_32S in functio... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(0) 评论(0) 推荐(0)

K-Nearest Neighbor理解笔记(KNN原理及代码实现)

摘要: 目录 邻近算法(Nearest Neighbor) 概念原理 算法分析 代码实现 K近邻算法(K-Nearest Neighbor) 概念原理 算法分析 代码实现 优缺点分析: 邻近算法(Nearest Neighbor) 概念原理 ... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(177) 评论(0) 推荐(0)

Tensorflow中的dynamic_rnn和rnn有什么区别

摘要: 在每一个train_step中,传入model的是一个batch的数据,在这一个batch内的数据一定是padding成相同的长度的。 那么,如果可以只在一个batch内部进行padding,例如一个batch中数据长度均在6-10这个范围内,就可以让这个... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(45) 评论(0) 推荐(0)

Docker学习笔记03:容器的基本操作&守护式容器

摘要: 查看容器: docker ps [-a] [-l] 查看使用过的容器信息 docker inspect [name/ID] 查看容器的配置信息 自定义容器名: docker ru... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(42) 评论(0) 推荐(0)

Dockers学习笔记02:Docker的基本组成

摘要: Docker的基本组成 Docker Client 客户端 Docker Daemon 守护进程 Docker Image 镜像 Docker Container 容器 ... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(33) 评论(0) 推荐(0)

Docker学习笔记01:Docker的简介

摘要: 什么是容器: 一种虚拟化的方案 只能运行相同或相似内核的操作系统 依赖于Linux内核特性:Namespace和Cgroups(Control Group) 大大... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(18) 评论(0) 推荐(0)

如何在Github 的README.md文件中添加图片

摘要: 最近在写GitHub的README.md的时候想放图片,查了一下,应该是做法如下: 1、在GitHub上的仓库建立一个存放图片的文件夹,文件夹名字随意。如:img-storage 2、将需要在READNE.md中显示的图片,上传到img-storage文件夹中... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(1185) 评论(0) 推荐(0)

Effective C++条款21:必须返回对象时,别妄想返回其reference

摘要: 当我们在返回对象的时候,如果return by value就会造成析构函数和构造函数的构建成本。 返回reference时,会有以下几个需要注意的问题。 1、在这里既是一开始就返回引用,也会创建出一个对象,因为一开始就期待它存在一个Rational对象在调用o... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(41) 评论(0) 推荐(0)

在一台电脑上创建多个GitHub仓库的连接方式

摘要: 之前一直对于如何创建多个GitHub仓库有所疑惑,这次整理了一下创建的步骤,作为记录,也希望可以帮到有需要的朋友。 环境:Windows10 步骤: 1、在GitHub上创建一个远程仓库,这一步,大家都很熟悉,不必赘述 2、创建一个新的公钥,对应新的仓库 ... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(125) 评论(0) 推荐(0)

Effective C++条款20:宁以pass-by-reference-to-const替换pass-by-value

摘要: 条款20:宁以pass-by-reference-to-const替换pass-by-value 以下考虑类对象: class Person{public: Person(); virtual ~Person(); //...private:... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(36) 评论(0) 推荐(0)

设计模式之二:策略模式 Strategy

摘要: 动机(Motivation): 在软件构建过程中,某些对象使用的算法可能多种多样,经常改 变,如果将这些算法都编码到对象中,将会使对象变得异常复杂; 而且有时候支持不使用的算法也是一个性能负担。 如何在运行时根据需要透明地更改对象的算法?将算法与对象本身解耦,... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(25) 评论(0) 推荐(0)

Github README.md 添加分割线、换行

摘要: 1、分割线 在需要进行分割的两行之间添加单独的一行内容: **** 2、文本换行 今天在README.md写好内容时,发现它缩到一起了,不是我想要的格式,怎么办呢? 发现只要直接在要换行的语句最后打上2个空格,就是换行了。 ... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(726) 评论(0) 推荐(0)

Effective C++条款18~19

摘要: 条款18:让接口容易被正确使用,不易被误用 请记住: 1、好的接口很容易被正确使用,不容易被误用。应该在所有的接口中努力达成这些性质 2、“促进正确使用”的办法包括接口的一致性,以及与内置类型的行为兼容。 3、”阻止误用“的方法包括建立新类型、限制类型上的操作... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(25) 评论(0) 推荐(0)

Github上编辑Readme.md的格式

摘要: https://blog.csdn.net/jdsjlzx/article/details/51772006 让你的README.md更加好看! 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(13) 评论(0) 推荐(0)

设计模式之一:模板方法 Template Method

摘要: 在软件构建过程中,对于某一项任务,它常常有稳定的整体操作结构,但各个子步骤却有很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整体结构同时实现。 如何在确定稳定操作结构的前提下,来灵活应对各个子步骤的变化或者晚期的实现需求? ... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(24) 评论(0) 推荐(0)

Effective C++条款16~17

摘要: 条款16:成对使用new和delete时要使用相同形式 其实这一条款十分简单,只需要记住即可,没啥特别的点需要说的。 在我们使用 new 创建对象时,就应该使用 delete 删除对象;在使用 new[] 创建对象时,应该对于地使用 delete... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(31) 评论(0) 推荐(0)

Effective C++条款14:在资源管理类中小心copying行为

摘要: 在条款13中,我们有了“资源获得的时机便是初始化时机”的RAII概念,在实现上,我们很多时候会选择使用auto_ptr和tr1::sharec_ptr指针,但是很多时候我们会发现,这两个指针也不是万能的,很多时候我们应该构建自己的——“资源管理类”。 所以... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(43) 评论(0) 推荐(0)

设计模式 序章(C++)

摘要: 面向对象的设计模式的最大作用: 抵御变化! 重新认识面向对象: 理解隔离变化: 从宏观层面来看,面向对象的构建方式更能适应软件的变化,能够将变化带来的影响减为最小 各施其职: 一、从微观层面来看,面向对象的方式更加强... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(37) 评论(0) 推荐(0)

error C1041: 无法打开程序数据库“xxx\vc140.pdb”;如果要将多个 CL.EXE 写入同一个 .PDB 文件,请使用/FS

摘要: 今天在visual studio2015 community上写代码的时候遇到了这样一个error: error C1041: 无法打开程序数据库“xxx\vc140.pdb”;如果要将多个 CL.EXE 写入同一个 .PDB 文件,请使用/FS 网络上找到的... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(740) 评论(0) 推荐(0)

Rplidar A2 屏蔽固定角度

摘要: Rplidar A2 的扫描角度图: 最近在使用Rplidar进行AMCL导航的时候,发现一个问题。由于雷达是固定在车的前面,雷达后面一部分位置被云台给遮挡住了。如图所示: 我们都知道,在ros的AMCL里,扫描得到的障碍区域都是对应一个膨胀系数的。这时为... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(133) 评论(0) 推荐(0)

线性表:顺序表和链表存储的优缺点

摘要: 顺序表和链表存储的优缺点 1.顺序表存储 原理:顺序表存储是将数据元素放到一块连续的内存存储空间,存取效率高,速度快。但是不可以动态增加长度 优点:存取速度高效,通过下标来直接存储 缺点:1.插入和删除比较慢,2.不可以增长长度 ... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(659) 评论(0) 推荐(0)

Effective C++条款13:以对象管理资源

摘要: 通常来讲,我们会使用new、delete来直接进行内存的管理。但是,由于很多原因,我们在这样使用的时候会造成内存的泄露。比如: 1、程序员在编程的时候new了一个内存,但是在后面编程的时候忘了进行delete,这样就会造成内存泄漏。 2、例如下列实例代码: v... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(51) 评论(0) 推荐(0)

Effective C++条款10~12

摘要: 条款10:令operator=返回一个reference to *this 这里的原因其实很好理解,一般来讲,我们都是通过重载‘=’来构建拷贝赋值函数。那没为什么一定要返回*this 的reference呢?因为我们可能赋值一般都会使用 obj1=obj2的... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(28) 评论(0) 推荐(0)

Ubuntu vim 插件配置

摘要: 最近在学习使用vim,想要改善一下vim的工作环境,所以配置了一下vim的插件,感觉还是很nice的。 (1)配置过程 安装ctags,其他插件依赖该插件sudo apt-get install ctags#vim插件apt-vim管理:) curl -sL ... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(133) 评论(0) 推荐(0)

Nvidia Tx2 + RpLidar A2 + ROS Kinetic 配置Google Cartographer

摘要: 最近在利用Gmapping 在进行建图的时候发现效果并不是特别好,可能是因为Gmapping 只时候建小地图以及没有回环检测的原因,所以建出来的图并不是很好,效果如下图。所以决定使用一下google的Cartographer。 配置环境: ROS版本:... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(98) 评论(0) 推荐(0)

删除GitHub仓库中的文件夹

摘要: 今天在push文件到GitHub上的时候,发现多上传了一个之前的版本。在GitHub上只能删除repository而不能单独删除文件夹,要在git上使用命令删除。 一、pull repository git pull origin master //先将re... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(118) 评论(0) 推荐(0)

大学实验室生活感悟

摘要: 明天就开学了,我也正式要进入大三的下学期了。时间过的真的是很快,一转眼就已经是我进入深圳大学RoboPilots战队(以下简称RP)的第二年了,今年也是我参加robomaster全国机器人大赛的第二年了。大二的一年进入实验室,作为一个小萌新,也是不断学习了很多... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(69) 评论(0) 推荐(0)

Effective C++条款07:为多态基类声明virtual析构函数

摘要: 显而易见,这个条款和多态的这个特性息息相关。多态的其中一个重要是通过我们在基类中的声明虚函数,子类进行重写(override)。那么在基类中,我们声明了虚函数或者纯虚函数,那么我们应该对应地就要有虚析构函数,但是往往我们会忽略这个问题,这就会导致严重的内存泄漏... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(30) 评论(0) 推荐(0)

Tx2上运行rplidar A2

摘要: 首先,有一个比较坑的地方,Tx2默认情况下是没有rplidar A2的这个驱动的,需要我们自己进行内核编译安装。具体安装方法可以看我的Tx2 通过内核编译来获取ttyUSB* 以及ttyACM*的设备名 的这一片文章。但是要注意的一点是: 1、输入 lsu... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(43) 评论(0) 推荐(0)

Tx2 通过内核编译来获取ttyUSB* 以及ttyACM*的设备名

摘要: 最近由于学校实验室准备参加ICRA的DJI AI Challenge ,所以我在使用TX2跑ROS。我用的是ubuntu 16.04, ros kinetic版本。然后遇到了一些问题。再插上通信串口之后usb并没有反应。 通过lsusb命令可以看到对应的us... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(244) 评论(0) 推荐(0)

Effective C++条款05~06

摘要: 条款05:了解C++默默编写并调用了哪些函数 big three: 拷贝构造函数拷贝赋值函数operator=析构函数当我们像下面编写一个类的时候: class Empty{public:private:}; 我们可能会觉得,这个类是空的,没有任何内容。但是,... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(27) 评论(0) 推荐(0)

C++类转换函数

摘要: 用转换构造函数可以将一个指定类型的数据转换为类的对象。但是不能反过来将一个类的对象转换为一个其他类型的数据(例如将一个Complex类对象转换成double类型数据)。 C++提供类型转换函数(type conversion function)来解决这个问题。... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(92) 评论(0) 推荐(0)

Effective C++条款04:确定对象被使用前已先被初始化

摘要: 条款04:确定对象被使用前已先被初始化 在这一条款中,我们学到的最重要的一点就是,一定要在定义变量时进行初始化。因为读取未初始化的值会导致不明确的行为。 其实,在这一条款中,我们应该注意到的是,初始化和赋值的区别。在对象的成员函数中,我们常常将赋值和初始化的行... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(29) 评论(0) 推荐(0)

C++面向对象编程《2》--类和类之间的三大关系

摘要: 复合(Composition)、委托(Delegation)、继承(Inheritance) 一、复合的形式:在A类中定义了一个B类的对象,然后A类的所有实现都通过B类的函数实现,类似于对B类成员函数的再次封装。具体的实例代码如下: 两者之间的关系:... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(90) 评论(0) 推荐(0)

Effective C++条款03:尽可能地使用const

摘要: 条款三:尽可能地使用const 首先,我们需要知道const的作用:const是C++中的关键字,它允许我们指定一个语义的约束。 const分为两种: 1、顶层const: 顶层const的语法位置处于指针的右边,其作... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(30) 评论(0) 推荐(0)

侯捷--C++面向对象编程《1》--操作符重载

摘要: 最近在通过侯捷的C++视频重新温习C++的基本语法,由此,记下一些自己认为比较重要的笔记。 重载的限制: 1、重载后的运算符必须至少有一个操作数类型是由用户定义的,这将防止用户为标准类型重载运算符。 2、使用运算符时不能违反原来的语法规则。 3、不能创建新... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(42) 评论(0) 推荐(0)

bash和shell的区别

摘要: Linux 中的 shell 有很多类型,其中最常用的几种是: Bourne shell (sh)、C shell (csh) 和 Korn shell (ksh), 各有优缺点。Bourne shell 是 UNIX 最初使用的 shell,并且在每种 UN... 阅读全文

posted @ 2022-08-13 16:15 DylanYeung 阅读(308) 评论(0) 推荐(0)