自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 资源 (5)
  • 收藏
  • 关注

原创 字符串实现大数相乘以及大数相加

1.大数相加:第一种思路,在短的字符串中补零:class Solution {public: string addBinary(string a, string b) { int al = a.size(); int bl = b.size(); while(al < bl) //让两个字符串等长,若不等长,在短的字符串前补零,否则之后的操作会超出索引 { a = '0' + a;

2020-09-06 21:22:12 338

原创 模板

C++除了面向对象的思想之外,还有就是用到了泛型编程,泛型编程的主要技术就是模板。1.模板的概念模板就是建立通用的模具,大大提高复用性C++有两种模板:函数模板和类模板2.函数模板 通过建立一个通用函数,其函数返回值类型和形参类型可以不具体指定,用一个虚拟的类型来代表。语法:template<typename T>函数申明或定义 ...

2019-10-20 09:54:21 219

原创 类和对象 --多态

1.基本概念 多态是C++面向对象的三大特征之一 多态分为两类:静态多态:函数重载与运算重载,复用函数名。 动态多态:派生类和虚函数实现运行时的多态静态多态与动态多态的区别静态多态的函数地址早绑定---编译阶段确定函数的地址 动态多态的函数地址晚绑定---运行阶段确定函数地址2.动态多态满足条件继承关系 子类要重写父类中的虚函数重写与重载是不一样的:重写 ...

2019-10-18 09:17:06 364

原创 继承中出现同名成员处理方式

当子类与父类出现同名的成员时,如何通过子类对象访问到父类中同名的数据了?1.非静态成员同名访问子类同名成员 直接访问即可 访问父类同名成员 需要加作用域#include<iostream>using namespace std;//继承方式class Base{public: Base() { m_A=100; } void func() ...

2019-10-14 14:41:33 514

原创 类的继承与继承方式

1.继承继承是面向对象的三大特征之一(封装、继承与多态)。使用继承可以减少重复代码,下面分别不使用继承与使用继承实现相同的功能,看下效果:#include<iostream>using namespace std;// 普通实现页面//java 页面//class Java//{//public:// void header()// {// cout...

2019-10-13 09:41:57 500

原创 Linux设备驱动-IIC总线

IIC和前面总结的platform框架是相似的,分为三层:控制器驱动层(driver层),核心层(core.c)以及设备层(device,iic里叫adapter-适配器),下面分别从这三个方面总结下,以了解IIC框架。1.adapter层以I2c-s3c2410.c为例:先看入口函数module_init(i2c_adap_s3c_init);static int __i...

2019-09-15 10:13:20 259

原创 中断和异常

1.定义中断通常定义为一个事件,该事件改变处理器执行的指令顺序。中断通常分为同步中断与异步中断。同步中断:当指令执行时由CPU控制单元产生的,只有在一条指令终止执行后CPU才会发出中断。 异步中断:由其他硬件设备依照CPU时钟信号随机产生的。异常是同步的,I/O中断是异步的。2.中断与异常中断可以分为:可屏蔽中断 I/O设备发出的中断请求(IRQ)都可以被屏...

2019-09-10 22:51:02 233 1

原创 CPU上下文切换

1.什么叫做CPU上下文CPU上下文指的就是CPU寄存器与程序计数器。加载新的任务之前,现需要把前一个任务的CPU上下文(寄存器与程序计数器)保存起来,然后加载新的任务的上下文值到寄存器与程序计数器中,然后跳转到程序计数器所指的位置,执行新的任务。CPU上下文切换分为以下三类:进程上下文切换 线程上下文切换 中断上下文切换2.进程上下文切换系统调用:从用户态到内核态的转变...

2019-09-07 22:53:30 761

原创 leetcode刷题

1.两数之和题目描述给定一个整型数组,要求返回两个数的下标,使得两数之和等于给定的目标值,要求同一个下标不能使用两次。数据保证有且仅有一组解。样例给定数组 nums = [2, 7, 11, 15],以及目标值 target = 9,由于 nums[0] + nums[1] = 2 + 7 = 9,所以 return [0, 1].#include<iostream...

2019-08-23 16:37:51 188 1

原创 利用递归实现栈与队列的转换

一般而言,用队列实现栈,需要两个队列,具体就不介绍了,可以看下面这篇:https://blog.csdn.net/qq_40927789/article/details/79955545同理,利用栈实现队列,也需要两个栈。利用递归以后,只需要一个栈就可以实现队列了,或者只需要一个队列就可以实现栈。#include<iostream>#include<algori...

2019-08-15 09:35:58 812

原创 二叉树(建立,插入,遍历,删除,由前序和中序重建树)

#include<iostream>#include<stdio.h>#include <windows.h>#include<string>#include<vector>using namespace std;typedef struct tree { int data; struct tree *left_tree...

2019-08-07 08:54:56 216

原创 链表操作(建立,插入,删除,排序,逆序)

#include<iostream>#include<stdio.h>#include <windows.h>#include<string>#include<vector>using namespace std;typedef struct list{ struct list *next; int data;}l...

2019-08-06 11:09:15 357

原创 Linux内核源码分析-kmalloc与vmalloc

1.kamllocstatic __always_inline void *kmalloc(size_t size, gfp_t flags){ struct kmem_cache *cachep; void *ret; if (__builtin_constant_p(size)) { //__builtin_constant_p 是编译器gcc内置函数,用于判断一个值是否为编...

2019-07-25 10:40:02 492

原创 内存分配-页(page)

1.页内核把物理页作为内存管理的基本单元,并用struct page结构表示系统中的每个物理页。struct page{ unsigned long flags; atomic_t _count; atomic_t _mapcount; unsigned long priva...

2019-07-22 15:35:10 2996

原创 进程创建与线程创建

1.进程创建forkasmlinkage int sys_fork(struct pt_regs *regs){#ifdef CONFIG_MMU return do_fork(SIGCHLD, regs->ARM_sp, regs, 0, NULL, NULL);#else /* can not support in nommu mode */ return(-EINVA...

2019-07-21 08:56:28 868

原创 LINUX进程调度-CFS

1.概念 进程调度可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统。 CFS(公平调度)主要就是引进了虚拟时钟vruntime的概念,每个进程的虚拟时间是实际时间相对nice(优先级)为0的权重的比值,CFS中的就绪队列是一颗以vruntime为键值的红黑树,虚拟时间越小的进程越靠近整根红黑树的最左端。进程调度时,选择下一个进程就是挑选v...

2019-07-20 10:52:37 455

原创 虚拟文件系统--register_filesystem

每个注册的文件系统都是用一个类型为file_system_type的对象来表示,file_system_type如下所示:struct file_system_type { const char *name; int fs_flags; int (*get_sb) (struct file_system_type *, int, const char *, void ...

2019-07-09 20:21:20 1359

原创 信号

信号的特点是简单、携带的信息量少,且使用在某个特定的场景中。信号有产生、未决以及递达三种状态。1.信号相关的函数:kill ---发送信号给指定的进程 raise----给自己发送信号 函数原型: int raise(int sig);abort---给自己发送异常终止信号 函数原型 :void abort(void); 没有返回值,永远不会调...

2019-05-18 21:23:28 259

原创 进程间通信--内存映射区

1.父子进程之间永远共享的东西是什么? 文件描述符 内存映射区上一节讲述了利用文件描述符进行进程间通信,如利用文件,匿名管道pipe以及有名管道fifo进行通信。本节讲述利用内存映射区进行通信。 mmap--创建内存映射,将磁盘文件的数据映射到内存,用户通过修稿内存就能修改磁盘文件。利用内存映射想比较与文件操作的好处就是,文件的操作是IO操作,要读写磁盘,效率较慢,而映...

2019-05-18 20:40:10 253

原创 进程间通信-管道通信(pipe与fifo)

1.进程间通信 IPC--interProcess Communication 进程间通信常用的4中方式:管道-简单 信号-系统开销小 共享映射区--有无血缘关系的进程间通信都可以 本地套接字-稳定 2.pipe管道 pipe管道为匿名管道,就是一个伪文件,是一个内核缓冲区,不占用磁盘空间。管道由读端与写端组成,分别对应两个文件描述符,管道的读写默认是阻塞的。管道的...

2019-05-12 09:58:27 767

原创 Matlab 常用指令整理

1.由传递函数到状态空间>> num=[10];>> den=[1 0.1 3];>> [A,B,C,D]=tf2ss(num,den)A = -0.1000 -3.0000 1.0000 0B = 1 0C = 0 10D = 0传递函...

2019-05-11 15:36:42 1175

原创 具有等式约束条件的极值

多元函数求极值:https://wenku.baidu.com/view/517514b269dc5022aaea0094.html

2019-05-04 21:23:50 1073

原创 观测器

1.观测器2.matlab 实验:利用状态方程预测: 原离散状态方程不收敛 原离散状态方程收敛 利用观测器预测: ...

2019-05-04 10:41:05 7269

原创 apollo motion planner 学习总结5

5.understand more on the MP difficulty本节主要介绍EMplanner的开发,如何抽象constraint三维空间(slt)优化问题,不仅能够避开静态障碍物,也能避开动态障碍物 M step就是maximization,E step就是expectation-期望 解决高维空间,有两种方法:一种是离散处理,从configur...

2019-04-29 10:41:48 720

原创 apollo motion planner 学习总结4

4.optimization inside motion planning 优化问题的核心,有三点:1是objective function ,objective function是通过一些平滑性等方面指标的一个定义,是一个合集2是constraint 如何抽象,包括smoothing的constraint,dynamic的constraint以及一些交通规则3,solver约束问题下的...

2019-04-29 10:24:39 483

原创 apollo motion planner 学习总结3

3.motion planning with environment 上本节主要内容:1,考将车体作为刚体考虑,而不是质点,2,考虑车辆与周围环境障碍物的关系,判断两个box是否相交,3,怎样去生成一些平滑的线。Vehicle model--车辆运动学模型前后轮在转动的过程中,是沿着同一个中心转动的。曲线坐标系(SL坐标系),实际上就是车体坐标系SL坐标...

2019-04-29 10:12:33 416

原创 apollo motion planner 学习总结2

2.motion panning with autonomous driving 上一节讲了自动驾驶一些基本的硬件框架以及软件框架,还有一些路径规划的基本概念以及需要考虑的问题,比如路径平滑、交通规则等。本节将讲述自动驾驶中常用的路径规划的方法,约束问题的抽象表达以及路径的平滑等问题。motion planning常用的方法有:上面这些方法考虑的都是质点模型,车辆是一个刚...

2019-04-29 09:34:42 491

原创 apollo motion planner 学习总结1

1.basic motion planning and overviewmotion planner的定义,机器人领域、控制领域以及人工领域来讲各不相同自动驾驶中如何做运动规划,先用一个简单的例子入手--path planning上图中要从绿色的点到达红色的点,这个问题本身就是一个path Finding problem,该如定义最有问题,或者该如何规划路径,可以选取从绿色点到...

2019-04-29 07:59:58 584

原创 open与fopen

1.在将open与fopen之前,先讲文件描述符:当一个可执行程序运行以后,就变成进程,操作系统会为每个进程分配一定的虚拟内存空间,32位操作系统就分配4G。虚拟内存空间结构如下图所示: 1G是内核空间使用,剩余3G为用户空间,虚拟内存就是当物理内存(如内存条)不够时,从磁盘上分配一块空间。为什么要虚拟空间了?因为物理内存一般都很小,当有多进程要执行时,物理内存很快就分配完了,剩余...

2019-04-25 10:14:39 6421 2

原创 HID设备发送消息

基本结构如下:1.分配usb_driver2.设置3.注册(usb_register())/* 1. 分配/设置usb_driver */static struct usb_driver myusb_driver = { .name = "usbmouse_as_key_", .probe = myusb_probe, .disconnect = myusub_dis...

2019-03-21 08:57:20 772

原创 静态库的制作与使用

静态库在程序编译时会被链接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被链接到目标代码中,而是在程序运行时才被载入,因此程序运行时还需要动态库的存在。静态库制作及使用命名规则 libxxx.a(1)制作步骤原材料:源代码 .c .cpp 将源代码.c文件生成.o文件gcc a.c b.c -c将.o文件打包ar rcs...

2019-03-20 09:01:38 285

原创 gcc编译器常用参数

1.gcc 常用参数整理:-v/--version:查看编译器版本-I:编译时指定头文件路径-c:将汇编文件生成二进制文件,得到一个.o文件-o:指定生成文件的名字-g:gdb调试的时候需要-D:在编译的时候指定一个宏一般在测试的时候使用2.重点整理 -I当文件目录结构如下所示:sum.c 为主函数,include目录中包含了头文件head.h...

2019-03-16 09:11:27 1628

原创 GCC,MAKE,CMAKE的区别

1.gcc时GNU编译套件,一种编译器,可以编译c,c++,java等语言。当只有一个文件时,使用gcc编译器就很方便,但是当有多个文件时,编译顺序以及包含关系等使用gcc很麻烦。2.make工具:make就相当于一个智能的批处理工具,通过调用makefile实现编译,在makefile规定编译以及链接的顺序,在makefile中也调用了gcc,makefile中定了规定编译以及链接顺序的语法...

2019-03-04 21:45:31 1779

原创 nand_flash

以at91_nand.c为例,分析在块设备驱动中,nand_flash 的读写过程:1.分配nand_chip结构体2.设置nand_chip3.添加分区从init开始分析:static int __init at91_nand_init(void){ return platform_driver_register(&amp;at91_nand_driver);}...

2018-09-18 16:53:54 217

原创 图像处理(matlab)

1.基本函数:iread('文件路径');idisp();2.一元操作:imd=idouble(im);  //将像素从unit8(范围在0-255的整数像素)到范围在[0,1]的双精度值grey=imono(im);    //将彩色图像转变成灰度图像。ihist();//显示每一个像素值出现的次数im=igamma(im,1/0.45); //伽马编码,一种非线性一...

2018-09-07 22:44:43 22470 3

原创 uvc_ioctl分析

1.VIDIOC_QUERYCAP:APP调用struct v4l2_capability{__u8 driver[16]; // 驱动名字__u8 card[32]; // 设备名字__u8 bus_info[32]; // 设备在系统中的位置__u32 version; // 驱动版本号__u32 capabilities; // 设备支持的操作__u32 reser...

2018-08-15 11:07:05 1025

原创 c++小练习

1.结构体与指针功能描述:做一个简单的通讯录录入,然后将其保存到文件中。#include &lt;iostream&gt;#include&lt;fstream&gt;#include&lt;string&gt;using namespace std;struct yg{ string name; string number;};int main(){ yg...

2018-08-11 21:05:14 221

原创 v4l2

一.以vivi.c为例,分析v4l2流程:a.分配video_device结构体  b.设置  c.注册: video_register_device();1.分配:vfd = video_device_alloc(); if (!vfd) goto unreg_dev;2.设置: /*************************control设置*********...

2018-07-20 22:22:48 879

原创 usb总线

1.usb的描述符及其之间的关系   usb常用的描述符设备描述符(device descriptor),配置描述符(configuration descriptor),接口描述符(interface descriptor),端点描述符(endpoint descriptor)。   一个usb设备只有一个设备描述符。设备描述符里决定了该设备有多少种配置,每种配置有一个配置描述符;在每个配置描述符...

2018-05-13 13:34:45 226

原创 platform 平台总线驱动

platform平台总线是为了将较为稳定的代码与具体的硬件 相关的会变得代码分开其下有两个部分platform_driver_register与platform_device_register1.platform.cint platform_driver_register(struct platform_driver *drv){ drv->driver.bus = &plat

2018-05-08 21:51:49 256

软开面试总结.docx

面试长问的问题,有c++,操作系统,Linux基本指令,网络通信等相关问题

2019-10-12

Optimal Control Theory.pdf

1.动态规划、贝尔曼方程、最优值函数、值与策略迭代、最短路径、马尔可夫决策过程。2. 哈密顿-雅可比-贝尔曼方程,近似方法,nite和nite hori- zon公式,随机微积分基础。3.庞特利亚金的极大原理,ODE和梯度下降法,与经典力学的关系。4. 线性二次高斯控制,黎卡提方程,非线性问题的迭代线性逼近。5. 最优递推估计,卡尔曼滤波,扎卡方程。6. 最优控制与最优估计的对偶性(含新结果)。7. 电机控制中的最优模型,是一个很有前途的研究方向。

2019-05-17

凸优化 convex optimization

讲述了凸集、凸函数、凸优化对偶等基础理论,还有凸优化算法的应用以及带约束以及不带约束的优化问题

2019-05-06

Introduction to Humanoid Robotics

介绍了人形机器人的运动学模型、动力学模型,ZMP,倒立摆模型,双足行走等相关知识

2019-05-05

Model Predictive Control System Design and Implementation Using MATLAB

Model predictive control (MPC) has a long history in the field of control engineering. It is one of the few areas that has received on-going interest from researchers in both the industrial and academic communities.

2019-05-05

空空如也

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

TA关注的人

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