自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(373)
  • 资源 (31)
  • 收藏
  • 关注

转载 gitlab进行协作以及issue的使用说明

GitLab 是一个类似于 GitHub 的开源源码托管服务,它除了提供基于 git 的基本代码托管服务外。还具备很多与软件开发协作相关的其他功能。比如 issues、Merge Requests 等。利用 GitLab 提供的这些功能,我们可以实践一些简单的项目管理和协作流程。这套流程借鉴于很多成功的开源项目,非常适合在小型开发团队里面使用。使用 issues 来管理需求与缺陷GitLab issues 类似于“工单系统”,是一个发布项目相关信息的地方。项目的所有成员都可以创建新的 issue

2021-01-26 10:34:14 2

转载 深度学习用于交通标志识别

前言在上两期的《无人驾驶技术入门》中,我以车道线检测为例,介绍了计算机视觉领域一些基本的算法。应用图像处理算法和调试算法阈值,就能实现车道线的检测和跟踪。车道线检测、跟踪的项目,主要是通过设置ROI(感兴趣区域)、调试算法阈值,通过人为设定规则的方式实现车道线检测。随着人工智能技术的发展,近几年在图像处理领域越来越多地采用深度学习的方式进行图像中物体的识别。使用深度学习的方法识别图像,不仅性能更为鲁棒,而且相比于设定规则的方式,识别率更高。在本次分享中,我将以优达学城(Udacity)无人驾驶工

2021-01-23 11:15:07 43

转载 初级车道线检测

前言上一期的无人驾驶技术入门,我们以障碍物的跟踪为例,介绍了卡尔曼滤波器的原理、公式和代码的编写。接下来的几期无人驾驶技术入门,我会带大家接触无人驾驶技术的另一个重要的领域——计算机视觉。在无人驾驶技术入门(五)| 没有视觉传感器,还谈什么无人驾驶?中,我介绍了车载视觉传感器能够实现车道线、障碍物、交通标志牌、可通行空间、交通信号灯的检测等。这些检测结果都离不开计算机视觉技术。本次分享,我将以优达学城(Udacity)无人驾驶工程师学位中提供的初级车道线检测项目为例,对课程中使用到的计算机视觉技

2021-01-21 21:41:36 28

转载 自动驾驶ADAS系统

前言随着越来越多新势力造车势力的崛起、以及BAT等互联网公司对汽车行业的渗透,使得传统车企也不得不加入了汽车智能化的大潮中。越来越多的新技术被应用到了汽车上,使得汽车不仅越来越智能,也越来越安全。ADAS作为汽车智能化的典型功能,越来越受到业界的重视。高级驾驶辅助系统ADSA(Advanced Driver-Assistance Systems)字面翻译过来是“先进驾驶员辅助系统”,实际上它是一种“辅助驾驶员更便捷更安全使用汽车”的系统。ADAS的研发历史可以追溯到上个世纪50年代,工.

2021-01-21 21:29:47 43

转载 卡尔曼滤波

前言无人驾驶技术入门软件篇已经介绍了传感器数据的解析和传感器信息的坐标转换,这两步完成后,我们就会获得某一时刻,自车坐标系下的各种传感器数据,这些数据包括障碍物的位置、速度;车道线的曲线方程、车道线的类型和有效长度;自车的GPS坐标等等。这些信号的组合,表示了无人车当前时刻的环境信息。由于传感器本身的特性,任何测量结果都是有误差的。以障碍物检测为例,如果直接使用传感器的测量结果,在车辆颠簸时,可能会造成障碍物测量结果的突变,这对无人车的感知来说是不可接受的。因此需要在传感器测量结果的基础上,进行跟踪

2021-01-21 17:32:29 28

转载 为什么在传统的超声波雷达基础之上无法实现自动驾驶而一定需要激光雷达呢?

超声波雷达的检测距离只有3~5米,常见的泊车雷达就是超声波雷达,做自动驾驶,超声波雷达只能用来低速跟车。毫米波雷达可以检测百米外的类金属物体,但是它返回的信息很单薄,只有一个目标点及这个目标的距离、速度等信息,那就意味着我只知道前面有一个块金属(车的后背),具体这块金属有多宽,多高,无法得知。当然也有一些基于毫米波雷达返回的点云做目标检测的,但是准确度依然较低。这样自动驾驶策略就只能十分保守。做不了太复杂的自动驾驶功能。激光雷达是发一或多条激光线出去,得到的信息是一条或多条线,有了线状信息,就可以知

2021-01-21 16:57:38 10

转载 无人驾驶中的坐标转换

前言在第十一期的分享中,我以CAN总线的解析为例,介绍了如何通过解析CAN总线的消息,获取传感器的数据。这一期的分享将会集中在如何将传感器坐标系下的数据转换到自车坐标系下。无人车上拥有各种各样的传感器,每个传感器的安装位置和角度又不尽相同。对于传感器的提供商,开始并不知道传感器会以什么角度,安装在什么位置,因此只能根据传感器自身建立坐标系。无人驾驶系统是一个多传感器整合的系统,需要将不同位置的传感器数据统一到一个固定的坐标系——自车坐标系下,才能分析当前无人车所在的道路场景。正文无人车的自车

2021-01-21 16:48:37 19

转载 CAN总线消息解析

前言到目前为止,无人驾驶技术入门硬件篇的分享已经介绍完了。接下来我将会分享更多和软件相关的内容。这一期的主要内容是——无人驾驶中的CAN(Controller Area Network )总线。CAN总线在整个无人驾驶系统中有着十分重要的作用。除了在《无人驾驶技术入门(九)——与生俱来的VCU信号》中提到的VCU信号需要通过CAN总线进行传输外,无人车上的某些传感器(如雷达、Mobileye)的信号传递也是通过CAN实现的。我在无人驾驶,个人如何研究?中提到过实现一个无人驾驶系统,会有几个层

2021-01-21 16:28:32 15

转载 个人学习无人驾驶的路线

前言先看看无人驾驶基本的硬件构造及其成本图片出处:https://www.wired.com/2015/04/cost-of-sensors-autonomous-cars/看完图,就会发现一个十分尴尬的问题——除了超声波雷达以外,剩下的设备都买不起。所以个人做无人驾驶研究,在没有大资金支持的情况下,就不要考虑基于实车做研究了。断了从硬件方面着手做研究的念头,我们直接看看软件方面。软件方面可以做的工作就很多了,掌握其中某一项或多项技能,对你在该领域的发展都大有裨益。操作系统安装...

2021-01-21 15:31:14 18

转载 看不到的传感器--高精度地图HD Map

前言前九次的分享,我将无人车上所用到的主流传感器都做了介绍。这些传感器都是看得到,摸不着的实物。在无人车自动驾驶的过程中,还有一种看不见、摸不到的“传感器”也在发挥着巨大作用,它就是高精度电子地图。高精度电子地图也称为高分辨率地图(HD Map,High Definition Map),是一种专门为无人驾驶服务的地图。与传统导航地图不同的是,高精度地图除了能提供的道路(Road)级别的导航信息外,还能够提供车道(Lane)级别的导航信息。无论是在信息的丰富度还是信息的精度方面,都是远远高于传统导航地

2021-01-21 14:26:37 25

转载 汽车控制单元VCU

前言在之前的技术分享中,传感器都是安装在汽车外或车内的。而这次要介绍的是汽车生来就具备的传感器信号,即从汽车控制单元(Vehicle Control Unit,简称VCU)中获取的信号。VCU的另外一个名字是“行车电脑”,它通过CAN总线与汽车的发动机、变速器、油门踏板、制动踏板、车身控制器等各种电子设备通信,读取各个控制单元的工作状态,并在需要时对它们进行控制。如下图所示。图片出处:http://www.hirain.com/sts/136如果把汽车比做人,那么VCU就是人..

2021-01-21 10:43:48 33

转载 民用GPS精度不够的情况下是如何用于无人驾驶的

在无人驾驶中,定位是指通过GPS、惯导、SLAM等技术,得到本车的位置信息。其中,GPS是最常用的一种定位传感器,但它存在着以下几种问题: GPS开放的民用精度不能满足无人驾驶的要求,通常在10~100m(军用精度可到厘米级); 更新频率较低,通常只有10Hz,当车辆在快速行驶时,不能提供实时的准确位置信息; 受建筑物、树木的遮挡,如在天桥、隧道、地下车库等场景下,GPS定位精度严重降低,甚至无法提供定位信息。 为解决上述问题,在实际应用中,有如下应对方案。 采用差分GP

2021-01-21 09:38:39 13

转载 超声波雷达

前言在上一次分享中,我介绍了毫米波雷达的原理、数据特性及优缺点。毫米波雷达的低环境敏感和低成本的特性使得其在ADAS和自动驾驶领域得到了广泛的应用。今天要介绍的是一款极其常见的传感器——超声波雷达。如果你觉得超声波雷达有些陌生,那么它还有一个更通俗的名字——倒车雷达。在倒车入库,慢慢挪动车子的过程中,在驾驶室内能听到”滴滴滴“的声音,这些声音就是根据超声波雷达的检测距离给司机的反馈信息。车载的超声波雷达一般安装在汽车的保险杠上方,隐藏在保险杠的某个位置。在车上外观如下图黄色箭头处的圆点所示。

2021-01-20 17:13:21 33

转载 毫米波雷达与激光雷达探秘

激光雷达是以发射激光束探测目标的位置、速度等特征量的雷达系统,计算时是按照光的特性来计算。而毫米波雷达是指工作在毫米波波段探测的雷达。毫米波实质上就是电磁波,利用多普勒效应计算。毫米波的频段比较特殊,其频率高于无线电,低于可见光和红外线,频率大致范围是10GHz—200GHz。从工作原理上来讲,激光雷达和毫米波雷达基本类似,都是利用回波成像来构显被探测物体的,就相当于人类用双眼探知而蝙蝠是依靠超声波探知的区别。不过激光雷达发射的电磁波是一条直线,主要以光粒子发射为主要方法,而毫米波雷达发射出去的电磁

2021-01-20 16:54:19 40

原创 毫米波雷达

在上一次分享中,我对无人驾驶汽车上的激光雷达的原理、数据及功能做了介绍。激光雷达的普及所遇到的最大挑战是:成本过高。单独一个雷达的价格可能就超过了普通小汽车的价格,因此现阶段还没有大规模量产的可能性。为了推进自动驾驶技术的发展,同时要解决摄像机测距、测速不够精确的问题。工程师们选择了性价比更高的毫米波雷达作为测距和测速的传感器。毫米波雷达不仅拥有成本适中的有点,而且能够完美处理激光雷达所处理不了的沙尘天气。下图为百度Apollo 2.0中所使用的毫米波雷达——Continental的ARS-40

2021-01-20 16:28:20 47

原创 激光雷达工作原理

正文激光雷达的原理如下图所示,激光雷达的发射器发射出一束激光,激光光束遇到物体后,经过漫反射,返回至激光接收器,雷达模块根据发送和接收信号的时间间隔乘以光速,再除以2,即可计算出发射器与物体的距离。图片出处:http://slideplayer.com/slide/7103535/自动驾驶用的LiDAR通过测量激光束在空中的飞行时间(从发射窗口发射,照射到目标,再反射回接收窗口所需要的时间),乘以光速,得到测距仪到目标的距离。因此,激光探测属于既需要发射又需要接受的主动探测。这种模.

2021-01-20 11:34:36 85

转载 无人驾驶中的视觉传感器

前言上一次的分享里,我介绍了GPS+IMU这组黄金搭档,这两个传感器的组合能够实现城区道路自动驾驶的稳定定位功能,解决了第一个大问题“我”在哪的问题。为了能让无人车能像人一样,遇到障碍物或红灯就减速,直到停止;遇到绿灯或前方无障碍物的情况,进行加速等操作。这就需要车载传感器去周围的环境进行感知。应用于无人车上的传感器目前有四大类,分别是摄像机,激光雷达、毫米波雷达和超声波雷达。不同的传感器根据其传感特性,布置在车身的不同位置。今天我以百度Apollo 2.0开放的摄像头及其模块作为引子,对无

2021-01-19 21:52:07 48

转载 双目测距原理

通过对两幅图像视差的计算,直接对前方景物(图像所拍摄到的范围)进行距离测量,而无需判断前方出现的是什么类型的障碍物。所以对于任何类型的障碍物,都能根据距离信息的变化,进行必要的预警或制动。双目摄像头的原理与人眼相似。人眼能够感知物体的远近,是由于两只眼睛对同一个物体呈现的图像存在差异,也称“视差”。物体距离越远,视差越小;反之,视差越大。视差的大小对应着物体与眼睛之间距离的远近,这也是3D电影能够使人有立体层次感知的原因。上图中的人和椰子树,人在前,椰子树在后,最下方是双目相机中的成像。其中,右侧相

2021-01-19 21:19:33 28

转载 GPS在无人驾驶中的定位作用与不足

前言上一次的分享里,我对百度 Apollo 计划的技术框架做了介绍,如图。Apollo1.0 封闭场地循迹自动驾驶如果要完成 Apollo 1.0 的“封闭场地寻迹自动驾驶”功能,需要解决一个重要的问题:我(无人车)在哪?“我在哪”这个问题,在 Apollo 1.0 的架构中完全依赖 GPS(全球定位系统) 和 IMU(惯性测量单元)。今天的分享,我会用尽可能简单的语言,介绍GPS的原理及特性,并谈一谈,为什么无人车的定位不仅要依赖GPS,还依赖IMU。我会在下次的分享中,着重地介绍

2021-01-19 19:52:43 16

转载 无人车传感器 IMU与GPS数据融合进行定位机制

前言上一次的分享里,我介绍了GPS的原理(三角定位)及特性(精度、频率),同时也从无人车控制的角度,讨论了为什么仅有GPS无法满足无人车的定位要求。为了能让无人驾驶系统更高频率地获取定位信息,就必须引入频率更高的传感器。这就是这一次内容的主角——IMU(Inertial Measurement Unit)惯性测量单元。下图就是百度Apollo计划推荐使用的IMU——NovAtel SPAN-IGM-A1。图片出处:https://github.com/ApolloAuto/apol.

2021-01-19 16:38:20 19

原创 ROS中的message_filter中的时间同步

#ifndef MESSAGE_FILTERS_TIME_SYNCHRONIZER_H#define MESSAGE_FILTERS_TIME_SYNCHRONIZER_H#include <memory>#include "message_filters/message_event.h"#include "message_filters/synchronizer.h"#include "message_filters/sync_policies/exact_time.h"n.

2021-01-19 09:12:10 18

转载 linux对已经存在的文件中间修改或者删掉几个字节后磁盘上数据的变化情况

问题:如果一个4G的文件,删除开始几个字节,底层磁盘会发生什么变化?猜想:在团队的分享讨论中,有人认为会有高效的方式,优化文件修改。让我们用实验测试一下,ext2文件系统具体是怎么执行的。实践:1.采用 linux loop设备作为虚拟磁盘,并mount到一个文件。 磁盘一共1000个block,每个block大小是512。(实践上创建完成之后,发现是500个block,每个block大小是1024,总容量没有变化。)dd if=/dev/zero of=~/file.img ..

2021-01-14 17:29:43 28

原创 条件变量中的唤醒丢失问题分析

本文是在其他作者博文的基础上进行了部分补充。原文:https://zhuanlan.zhihu.com/p/551238620. 前言条件变量(condition variable)和互斥锁(mutex)为什么总是搭配着使用 ?互斥锁的作用是什么?非加互斥锁不可吗 ?1. 错误写法初始变量:bool ready = false;pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZERpthread_cond_t cond = PTHREAD

2021-01-12 21:21:58 22

转载 System  V中的进程间通信机制

1.System V引入了三种高级进程间的通信机制:消息队列、共享内寸和信号量 IPC对象(消息队列、共享内存和信号量)存在于内核中而不是文件系统中,由用户控制释放,不像管道的释放由内核控制 IPC对象通过其标识符来引用和访问,所有IPC对象在内核空间有唯一性标志ID,在用户空间的唯一性标识符称为key LINUX IPC 继承自System IPC2. System V IPC对象的访问 IPC对象时全局对象,可用ipcs,ipcrm等命令查看或删除ipcs...

2021-01-12 19:36:32 9

转载 ROS进行多传感器融合时的时间对齐和时间同步解决方法

文章目录1.引言 2.方法一:利用全局变量TimeSynchronizer 3. CMakeLists.txt 和 packages.xml添加ROS包 4.方法二: 利用类成员message_filters::Synchronizer1.引言本小节针对在ROS节点中需要订阅两个及两个以上的话题时,需要保持对这两个话题数据的同步,且需要同时接收数据一起处理然后当做参数传入到另一个函数中。研究背景:realsenseT265 和 realsense D435 都有IMU数据,但是这两个.

2021-01-12 17:26:03 70

转载 多源传感器融合时的时间对齐或者时间同步问题

本文章配套源代码地址:https://github.com/Little-Potato-1990/localization_in_auto_driving测试数据:https://pan.baidu.com/s/1TyXbifoTHubu3zt4jZ90Wg提取码: n9ys本篇文章对应的代码Tag为 6.0代码在后续可能会有调整,如和文章有出入,以实际代码为准========================================一、概述只要牵扯到多个传感器,那么时间同步就

2021-01-12 14:37:36 80

原创 在linux中的shell执行命令与进程创建

shell是什么?维基百科:Unix shell也叫做命令行界面,它是Unix操作系统下传统的用户和计算机的交互界面。用户直接输入命令来执行各种各样的任务。现在的shell不止这些功能,不过,这些与本文无关。shell中命令的执行过程?启动shell,本身就是创建一个进程。在shell中运行命令的时候,shell进程会以自己为模板,创建(fork)一个新的进程。这个新建的进程对shell中输入的命令进行处理,处理完之后新进程结束自己的生命,等待shell进程进行回收。具体来说,就是:

2021-01-08 15:53:04 57

原创 linux C语言fork进程学习

#include <fcntl.h>#include <stdio.h>#include <sys/stat.h>#include <sys/types.h>#include <unistd.h>char str[11]={0};int main(int argc, char ** argv){int fd = open("test.txt",O_RDWR);if(fork() == 0){ ssize_t cnt = r.

2021-01-08 10:54:56 11

转载 依据官网教程步步为营学习CmakeLists文件编写

1. 最简单的一个Cmake工程下面的CMakeLists.txt文件描述了一个最简单的工程,一共就这么3行。 cmake_minimum_required (VERSION 2.6) project (Tutorial) add_executable (Tutorial tutorial.cxx)注意到这里都是用的小写的命令,在cmake文件里面大小写不严格区分,都可以用。上面的工程名Tutorial和下面的可执行程序的Tutorial没有什么关系,可以完全不同。add_e

2021-01-06 17:23:17 15

转载 H.264基本原理与编码流程

H264视频压缩算法现在无疑是所有视频压缩技术中使用最广泛,最流行的。随着 x264/openh264以及ffmpeg等开源库的推出,大多数使用者无需再对H264的细节做过多的研究,这大降低了人们使用H264的成本。但为了用好H264,我们还是要对H264的基本原理弄清楚才行。今天我们就来看看H264的基本原理。H264概述H264压缩技术主要采用了以下几种方法对视频数据进行压缩。包括:帧内预测压缩,解决的是空域数据冗余问题。 帧间预测压缩(运动估计与补偿),解决的是时域数据冗徐问题。

2021-01-06 11:58:08 28

转载 Posix共享内存区与mmap内存映射

共享内存是一种IPC形式,与其它IPC机制如管道、消息队列等相比,数据不必在进程与内核间多次交换,进程间通信的速度更快。当共享内存区映射到共享它的进程的地址空间时,再加以一些同步控制,这些进程就可以进行数据传送了。mmap函数提供了内存映射功能,可以把一个文件或一个Posix共享内存区对象映射到调用进程的地址空间,下面首先介绍mmap的用法。这里需要说明的是mmap是一种机制,它提供了内存映射的功能,它并不是共享内存,而是可以把posix的共享内存对象映射到进程的地址空间,供进程直接使用。1、mmap

2021-01-05 16:27:02 10

转载 C语言pthread读写锁

Pthread是 POSIX threads 的简称,是POSIX的线程标准。pthread读写锁把对共享资源的访问者分为读者和写者,读者只对共享资源进行读访问,写者只对共享资源进行写操作。在互斥机制,读者和写者都需要独立独占互斥量以独占共享资源,在读写锁机制下,允许同时有多个读者读访问共享资源,只有写者才需要独占资源。相比互斥机制,读写机制由于允许多个读者同时读访问共享资源,进一步提高了多线程的并发度。1.读写锁机制:写者:写者使用写锁,如果当前没有读者,也没有其他写者,写者立即获得写锁;否...

2021-01-05 14:23:22 30

原创 Linux下的动态库和静态库

什么是库?在 Linux 开发时,我们经常会看到一些形如 xxx.so 的名称出现,其中 so 是 Shared Object 的缩写,即可以共享的目标文件,也就是我们所称为的动态链接库,和在 Windows 下大家玩游戏时遇到的 xxx.dll 错误中的文件是一个类型的。所谓“库”,就是稳定成熟的可以复用的代码;库从本质上来说是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a(linux)、.lib(windows))和动态库(.so(linux)、..

2021-01-04 22:04:24 26

原创 C++ 多线程中使用条件变量示例

#include <iostream>#include <unistd.h>#include <thread>#include <mutex>#include <condition_variable>std::mutex mtx;std::condition_variable cv;bool ready = false;void printID(int id){ int flag = 5; //std::unique_l.

2021-01-04 20:21:52 13

转载 C语言的条件变量用法

条件变量(Condtion Variable)是在多线程程序中用来实现“等待->唤醒”逻辑常用的方法。举个简单的例子,应用程序A中包含两个线程t1和t2。t1需要在bool变量test_cond为true时才能继续执行,而test_cond的值是由t2来改变的,这种情况下,如何来写程序呢?可供选择的方案有两种:第一种是t1定时的去轮询变量test_cond,如果test_cond为false,则继续休眠;如果test_cond为true,则开始执行。 第二种就是上面提到的条件变量,t1在test

2021-01-04 16:34:59 15

原创 boost::shared_ptr指针设置NULL的方法

在使用boost::shared_ptr的时候,有时候想将指针置为NULL。一般地,我们可以向传统指针那样,直接将NULL赋值给指针,也可以调用boos::shared_ptr的reset()方法,将指针重置,也就是设置为NULL,下面是具体的测试代码:/* * @,@Author: ,: your name * @,@Date: ,: 2020-12-09 09:25:03 * @,@LastEditTime: ,: 2020-12-29 10:28:01 * @,@LastEditors.

2020-12-29 10:32:54 51

原创 软件配置管理基础

软件配置管理软件配置管理 (Software Configuration Management, SCM)问题引出IEEE 定义A discipline applying technical and administrative direction and surveillance to identify and document the functional and physical characteristics of a configuration item, control cha

2020-12-25 09:22:10 61

转载 C++ 中的线程、锁和条件变量

线程类std::thread代表一个可执行线程,使用时必须包含头文件<thread>。std::thread可以和普通函数,匿名函数和仿函数(一个实现了operator()函数的类)一同使用。另外,它允许向线程函数传递任意数量的参数。#include <thread> void func(){ // do some work} int main(){ std::thread t(func); t.join(); return 0;

2020-12-25 00:53:00 13

转载 Linux中的进程、线程和文件描述符

说到进程,恐怕面试中最常见的问题就是线程和进程的关系了,那么先说一下答案:在 Linux 系统中,进程和线程几乎没有区别。Linux 中的进程就是一个数据结构,看明白就可以理解文件描述符、重定向、管道命令的底层工作原理,最后我们从操作系统的角度看看为什么说线程和进程基本没有区别。一、进程是什么首先,抽象地来说,我们的计算机就是这个东西:这个大的矩形表示计算机的内存空间,其中的小矩形代表进程,左下角的圆形表示磁盘,右下角的图形表示一些输入输出设备,比如鼠标键盘显示器等等...

2020-12-24 23:29:34 75

原创 内存中为什么分堆和栈,能否只用一种模型呢?为什么每个线程都有单独的栈

其实我们都知道,计算机内存本来就是一块内存,没有堆栈之分。在学编程的时候,我们应该都听过一句话 “如果程序结束之后仍然想要访问那一段数据就要用堆(不释放的话,程序修改后的数据仍存在)”,我想这个其实就是本题目的关键了,堆和栈都有其自己的独特性,可能你了解这两个东西,但是我还是解释下,以免别的小伙伴在看答案的时候,不知道。linux下一个进程中的所有线程共享该进程的地址空间,但它们有各自独立的(私有的)栈(stack)。堆(heap)的分配与栈有所不同,一般是一个进程有一个C运行时堆,这个堆为本进程中

2020-12-24 23:23:38 23

动手学深度学习源代码

《动手学深度学习》图书对应的源代码,很详细。手把手教你学会DeepLearning。

2018-12-06

ROS的插件库pluginLIB机制讲解

pluginlib是一个使用C++实现的库, 用于在ROS包里面动态的加载或卸载plugin. plugin满足一些条件的, 可以从运行库(例如共享对象, 动态链接库)中动态加载的类. Plugin在扩展或修改应用的行为上很有优势, 并不需要知道原始类的源码, 也许你在编写代码时, 也并不知道你将会用到哪个plugin, 而是在运行时通过参数载入才确定具体的plugin, 在后面有一点相关的示例, 可以体会一下使用plugin的feeling

2018-04-11

sensorPluginTest0916.zip

本程序是在ubuntu20.04下基于class_loader开发的一个插件,里面使用了基类、子类,在测试程序中,将子类对象赋给父类指针,然后使用父类的成员函数作为线程函数启动线程。并可以从外部传入参数到线程函数中。最后还可以生成插件以供别人使用。 需要注意的是,这个是基于c++ 11/14开发的,如果libclass_loader.so无法使用,请自行下载并编译成.so放到lib目录下。具体可以参考https://blog.csdn.net/jinking01/article/details/108615952

2020-09-16

hadoop 源码分析

作为目前对Hadoop开源系统的代码级的分析,这篇文档可谓详之又详,但是还是需要各位花费点时间和经历来研究,可以对照官方给出的框架,去查找自己关心的部分。

2010-05-20

数据库存储树结构ClosureTableCateogryStore-master.zip

参考本人csdn上的文章,配合看代码,会简单些。这里给出了用数据库怎么存储一棵树。采用java实现。一般来说对于树结构,使用结构化数据库存储是一个麻烦的事情。

2020-02-27

storage_ws_jin0906.tar.gz

这里是我在ros开发过程中使用sqlite3存储ros中各种消息的过程中使用json扩展的示例,storage包中的test目录下的sqlite3Test文件介绍了如何使用json扩展,具体流程看我的博客。

2019-09-06

开源内存数据库的调研与分析.doc

内存数据库的优劣对比,主要包括fastdb,memcachedb,mangodb等,也涉及到了数据库的设计思路,已经性能比较。对于选择合适的内存数据库有一定的帮助吧。

2019-08-30

fastdb-arm.tar.gz

fastdb的代码无法在tx2或者说arm架构的开发板上直接使用,编译也无法通过,我这里是在tx2上编译通过的版本,生成的libfastdb.so在fastdb的src/下的隐藏目录.libs下,生成的4个可执行文件就在src下。请参考我的csdn文章,看怎么在非x86_64环境下编译fastdb。

2019-08-23

FastDB 高效率的内存数据库系统.doc

FastDB详细介绍,涉及思想,架构,用例,以及相关用法和函数的解释。

2019-08-02

ubuntu 16.04 opencv auto installation

ubuntu 16.04 auto install the opencv 3.4.2. just run " bash install_opencv.sh", then wait for a moment.

2019-03-27

自然语言处理实践者指南Practitioner's guide to NLP part I

自然语言处理实践者指南Practitioner's guide to NLP part I:Processing & understanding text

2019-01-15

Python code for Artificial Intelligence: Foundations of Computational Agents

2019年1月3日,David L. Poole和Alan K. Mackworth更新了人工智能python实战代码,配套《人工智能:计算代理的基础》第二版。是面向众多学习人工智能的同学在理论和实战方面提供指导的图书

2019-01-15

百页教程学机器学习the hundred page machine learning book pdf原版

目前机器学习相关图书一般都很厚, Andriy Burkov写了一本百十页的机器学习教程,近期非常火爆。这里给出了最新修订版的pdf合成版(来自dropbox),供大家使用。The Hundred-Page Machine Learning Book" by Andriy Burkov.

2019-01-02

冰点下载器--百度文库豆丁网免费下载

豆丁网和百度文库等存储大量非技术性文档,当下载的时候总是需要积分。对于没有积分的筒子们,就比较麻烦,到处找人借账号。这里给出冰点下载器,可以免积分下载。

2018-12-26

动手学深度学习中文电子pdf版

《动手学深度学习》图书的pdf版,纸质版还没有出版。这是pdf预览版。18年9月写完的。手把手教大家学deeplearning。全书近600页。

2018-12-06

动手学深度学习中文电子版

《动手学深度学习》图书电子版,2018年9月才写完,纸质版还没有上市哦。介于纯理论和纯实践之间,让你手把手学会深度学习。

2018-12-06

ROS 课程讲义

ROS 机器人操作系统的教学讲义,适用于ROS入门。对ROS的框架以及各模块进行了相对详细的讲解,帮助读者解惑。

2018-11-19

vcForPython27解决安装pycrypto报错vcvarsall.bat找不到问题

vcForPython27解决安装pycrypto报错vcvarsall.bat找不到问题。先安装里面的msi文件,然后再用pip安装pycrypto

2018-06-01

安卓app反编译及看源码用到的工具包

安卓app反编译破解所需要用到的包,包括查壳,反编译,class转java,dex2oat等等。

2018-06-01

手机app脱壳虚拟机镜像

这是我破解一个360加固的app所用到的虚拟机的镜像。使用方式可以参见我的文章https://blog.csdn.net/jinking01/article/details/80533522

2018-06-01

jd-gui1.4+dex2jar2.0+apkdb+apktool apk反编译套装

最新的jd-gui版本和最新的dex2jar,apkdb最新版和apktool 反编译apk必备工具

2018-05-31

win7 基于spring boot+elasticsearch+Redis+mysql+mybatis进行搜索引擎web开发--爬取IThome热评

win7 基于spring boot+elasticsearch+Redis+mysql+mybatis进行搜索引擎web开发实例。内容是爬取IThome热评存储到mysql,然后在redis建立索引。这个是可以正常运行的,但是还有一部分功能没有完善。具体参考https://blog.csdn.net/jinking01/article/details/80066683

2018-04-27

windows下redis管理工具treeNMS

Redis的数据不太好管理,也不容易查看,青格软件提供了一个windows下redis管理工具treeNMS,这里就是这个,可以直接下载,解压缩后看里面的说明文档,比较简单。基于web来查看管理redis

2018-04-24

《C和指针》pdf高清版和《C陷阱和缺陷》以及源代码

学习C语言,最烦人的就是指针,《C和指针》这本书我买了纸质版,个人觉得写的非常好,把指针解释的非常透彻,经过短时间轰炸,基本把指针摸透了。所以又弄了电子版和代码,希望对后面学习C语言的人员提供帮助,让他们早点摆脱指针的困扰。资源中包括《C和指针》pdf高清版和《C陷阱和缺陷》pdf以及源代码。

2018-04-12

51CTO 机器人操作系统ROS精品课程PPT

99元购买的51CTO的ROS精品课程的PPT,共13讲,对于ROS入门者来说,非常难得。按照这个顺序去学,比看官网的两套流程简单的多,不至于凌乱

2018-03-06

Navigation Illumination ROS中的导航包的介绍by David V. Lu

ROS的开发者 David V. Lu在ROS Conference 2014上的ppt,介绍了ROS中导航包的内容。

2018-03-06

SSM框架——使用MyBatis Generator自动创建代码

SSM框架——使用MyBatis Generator自动化构建代码所需要的两个jar包,同时附了mysql的连接器,如果需要SqlServer对应的jdbc连接器,请到微软官网自行下载。

2017-09-21

metronic 4.7.5 最完整版,共318M,文件中有链接

metronic 4.7.5 最完整版,共318M,非常漂亮的模板,官方售价28美元。通过框架,可以快速构建web平台。解放手工劳工部分,提高效率

2017-09-06

quick4j IDEA进行javaweb开发的快速框架 maven+Spring+SpringMVC+shiro +myhatis

使用idea进行的java web开发。本项目为一个java web框架。可以在此基础之上进行复杂开发。压缩包中有全部代码和编译后的文件(war文件过大,删掉了)。 采用maven+Spring+SpringMVC+shiro +myhatis+mysql进行开发,需要根据个人的mysql情况修改database配置文件,包括口令,用户名,数据库名等。

2017-09-05

java项目做成exe的工具

这里给出了两个将jar文件生成exe的工具,希望能帮助一些新手

2008-11-20

局域网组建一本通,组建局域网

这是一本描述局域网技术,从局域网概念,发展历程,局域网技术,软件及硬件等全方位介绍了局域网组建方法,并给出了具体的实例.

2008-10-21

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除