- 博客(82)
- 资源 (13)
- 收藏
- 关注

原创 【c++】可调用对象(Callable Objects)
c++11中有一个重要的概念叫做可调用对象(Callable Objects)。总的来说,可调用对象可以是以下几种情况:普通函数函数指针仿函数,即重载了operator()运算符的类对象匿名函数,即Lambda表达式std::function文章目录1.普通函数2.函数指针3.仿函数4. 匿名函数(Lambda表达式)4.1 定义4.2 例子4.3 隐式捕获5. std::fu...
2019-12-29 16:27:29
5298

原创 [c++]几种二维数组的遍历方式
先看一个一维数组的简洁遍历方式:int a[6] ={8,2,1,3,4,5};for(auto &e:a) cout<<e<<" ";再看二维数组的遍历常用方式:int ia[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};//1for (auto &row:ia){ for (auto &co...
2019-09-14 17:08:16
4138

原创 【UDP通信】原理简介及编程实现
UDP介绍UDP — ⽤户数据报协议,是⼀个⽆连接的简单的⾯向数据报的运输层协 议。UDP不提供可靠性,它只是把应⽤程序传给IP层的数据报发送出去,但是并不能保证它们能到达⽬的地。由于UDP在传输数据报前不⽤在客户和服 务器之间建⽴⼀个连接,且没有超时重发等机制,故⽽传输速度很快。UDP是⼀种⾯向⽆连接的协议,每个数据报都是⼀个独⽴的信息,包括完整 的源地址或⽬的地址,它在⽹络上以任何可能的路...
2019-07-19 15:24:10
2440

原创 李宏毅深度学习ppt总结
Lecture 1: introduction of deep learning深度学习3步骤:1.定义神经网络2.loss 评价预测值和真实的测试数据的目标值进行比对,它们的差距就是Loss。一个好的神经网络应该使loss尽可能小。3.获取最佳的神经网络参数(学习方法)采用梯度下降算法Lecture II:Tips for Training DNNA.网络优化训练...
2019-06-21 15:18:24
3776

原创 视觉SLAM——小觅相机实测vins-mono步骤
使用的是双目深度板小觅相机,只需要使用相机左摄像头和IMU。其他相机亦可参考。step1 相机对应驱动——ubuntu SDK源码安装(1)下载与安装注:下载安装前保证opencv等已安装。git clone https://github.com/slightech/MYNT-EYE-S-SDK.gitcd <sdk> // <sdk> 是指sdk路径mak...
2019-04-17 16:32:02
6537
11

原创 ROS中的两种通信方式
ROS中的两种通信方式一、 TOPIC通信Topic是ROS里一种异步通信的模型,一般是节点间分工明确,有的只负责发送,有的只负责接收处理。对于绝大多数的机器人应用场景,比如传感器数据收发,速度控制指令的收发,Topic模型是最适合的通信方式。本文以MOOC《机器人操作系统入门》中的gps信号收发相关的代码作为例子。1.1 创建消息 (.msg文件)事先建立topic_demo包,并在m...
2019-01-05 17:29:27
7089
原创 MySQL索引-2聚集索引探讨
聚集索引不是一种索引类型,而是一种数据存储方式,表示数据以主键索引的顺序进行聚集存储。【聚集】表示数据行和主键聚簇存储在一起,数据行在磁盘的排列和索引排序保持一致。innoDB中聚集索引根据表的主键构建一个B+树来组织数据,这个树的叶子节点直接存储行数据。不同存储引擎的索引方式不同,比如MyISAM中就没有使用聚集索引。
2022-10-15 18:08:14
865
原创 strtok:This function or variable may be unsafe错误解决
strtok函数由于太老,在vs中编译的时候会警告导致无法编译成功。为此可以右键 解决方案管理器中的当前项目,选择“属性”之后在"c/c++" -> “预处理器” -> “预处理器定义”中添加“_CRT_SECURE_NO_WARNINGS”然后保存即可。举例亦可参考:百度经验...
2020-06-21 21:37:15
1360
原创 【数据结构】c++优先队列priority_queue及应用
文章目录概述应用leetcode题215:数组中的第K个最大元素leetcode题347 前k个高频元素概述c++ STL中的优先队列与普通队列相似,需要头文件#include <queue>优先队列可以看成进行按优先级排列的队列,它本质是一个堆实现的。优先队列的定义形式为:priority_queue<Type, Container, Functional>举例://大顶priority_queue <int,vector<int>,less<
2020-05-20 18:17:04
486
转载 【c++】设计模式——观察者模式
Observer 模式应该可以说是应用最多、影响最广的模式之一,因为 Observer 的一个实例 Model/View/Control( MVC) 结构在系统开发架构设计中有着很重要的地位和意义, MVC实现了业务逻辑和表示层的解耦。在GOF的《设计模式:可复用面向对象软件的基础》一书中对观察者模式是这样说的:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得...
2020-05-06 14:45:06
344
转载 【c++】设计模式——策略模式
https://www.cnblogs.com/ring1992/p/9593575.htmlhttps://blog.youkuaiyun.com/u010993820/article/details/80968933/文章目录概述单纯的策略模式策略模式结合工厂模式一个面试实例总结概述定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户...
2020-05-06 10:51:10
335
转载 【c++】设计模式——工厂模式
转载自:https://www.cnblogs.com/huiz/p/8232783.html文章目录一、简单工厂模式二、工厂方法模式三、抽象工厂工厂模式一般分为三种:简单工厂模式、工厂方法模式、抽象工厂模式。一、简单工厂模式对于不同产品的创建定义一个工厂类,将产品的类型作为参数传入到工厂的产品创建函数,根据类型分支选择不同的产品构造函数。举个例子,现在有宝马车和奔驰车两种车需要生产,但...
2020-05-04 16:22:04
244
1
转载 【c++】设计模式——单例模式
转载自: https://www.cnblogs.com/chengjundu/p/8473564.html文章目录0.概述1.懒汉单例模式1.1 非线程安全的懒汉单例模式1.2 线程安全的懒汉单例模式1.3 返回一个reference指向local static对象2.饿汉单例模式0.概述单例模式顾名思义,保证一个类仅可以有一个实例化对象,并且提供一个可以访问它的全局接口。实现单例模式必须...
2020-05-04 14:19:34
263
原创 【TCP通信】原理详解与编程实现(二)
文章目录1.套接字相关1.1 socket() 函数1.2 bind() 函数1.3 connect() 函数1.4 listen()函数1.5 accept()函数1.6 send()与recv()函数1.7 closesocket()函数关闭套接字,原型为:2 服务端c/c++代码3 客户端c/c++代码4 demo测试上一篇文章【TCP通信】原理详解与编程实现(一)总结了TCP通信的基...
2020-04-17 12:04:53
1554
原创 【TCP通信】原理详解与编程实现(一)
TCP简介TCP把连接作为最基本的抽象单元,每条TCP连接有两个端点,TCP连接的端点即套接字。套接字socket = (IP地址+端口号)TCP连接={socket1,socket2}={(IP1:port1),(IP2,port2)}TCP提供全双工通信。TCP报文首部中的重要概念序号:Seq序号,占32位。用于说明当前数据第一个字节在所有数据(整个文件)中的位置确认号:...
2020-04-16 22:50:14
31886
2
转载 【算法题解】动态规划相关典型算法题
文章目录青蛙跳台阶问题连续子数组的最大和三角形最小路径和其它例子所谓动态规划就是用之前问题的答案来推到当前问题的答案。解动态规划问题的步骤:1.问题拆解,寻找规律与联系2.状态定义3.推导递推方程4.具体实现(注意边界条件与特殊情况)下面看具体实例:青蛙跳台阶问题一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同...
2020-04-15 16:13:22
376
原创 【数据结构】最大堆/最小堆 及其在c++算法库函数
文章目录1.原理2.在c++算法库中的使用2.1介绍2.2使用案例:3.最大(小)堆实例应用参考1.原理最大最小堆的定义:它是一颗完全二叉树,它可以是空树中结点的值总是不小于(不大于)其孩子结点的值每一个结点的子树也是一个堆当父结点的键值总是大于或等于任何一个子结点的键值时为:最大堆。当父结点的键值总是小于或等于任何一子节点的键值时:最小堆.例如下图就是一个最大堆。最大堆的每一...
2020-04-14 19:47:30
4880
原创 【c语言】数组名/数组名地址/数组指针等乱七八糟东西的梳理
经常遇到老掉牙的c数组的用法,很是头疼,干脆梳理一下。0.指针与数组名的区别正文之前,先区分一下指针与数组名的区别:指针很容易理解,它就是一个存放地址的变量,与一般的变量没有本质的区别。数组名又应该如何理解呢?首先用来存放数组的区域是一块在栈中静态分配的内存(非static),而数组名是这块内存的代表,它被定义为这块内存的首地址。这就说明了数组名是一个地址,而且,还是一个不可修改的常量...
2020-04-12 00:23:07
560
原创 【算法题解】二叉树相关
1 二叉树类1.1 把二元查找树转变成排序的双向链表题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \ 4 8 12 16转换成双向链表4=6=8=10=12=14=16。首先我们定义的二元查找树节点的数据结构如...
2020-04-09 21:35:33
272
转载 指针数组与数组指针
指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针数组指针:a pointer to an array,即指向数组的指针还要注意的是他们用法的区别,下面举例说明。int* a[4] 指针数组 表示:数组a中的元素都为int型指针 元素表示:*a[i] *(a[i])是一样的,因为...
2020-04-06 19:29:21
188
转载 【操作系统】关于堆栈的那些事
堆栈是编程中很重要的概念,相信很多人也跳过坑,然后解决之后,继续跳坑。想整理堆栈的概念很久了。最近看了程序员自我修养,就一起整理一下吧。本文将从几个方面学习一下堆栈堆栈概念进程,线程概念堆栈分配1. 堆栈概念在32位系统,内存的寻址可以达到4G(2^32)。 理论上,用户可以使用一个32位的指针访问任意内存地址。int a = 3;int * p = &a; s...
2020-04-05 19:28:32
1424
原创 【算法题解】线性表相关
文章目录从尾到头打印链表排序链表的合并反转链表输出单链表倒数第 K 个节点两个链表的第一个公共节点删除链表中节点,要求时间复杂度为O(1)从尾到头打印链表来源:剑指offer 牛客网有三种思路:第一就是利用栈先入后出的特性完成;第二就是将链表元素顺序存下来,然后进行数组翻转;第三是利用递归。1.栈思路:class Solution {public: vector<i...
2020-03-29 13:25:24
318
原创 【计算机】位运算及其在算法中的应用
一、位运算概述常见的位运算包括以下几种类型:符号含义运算规则&与两个位都为1时,结果才为1I或两个位都为0时,结果才为0^异或两个位相同时为0,相异时为1~取反1取反为0,0取反为1<<左移各二进位全部左移若干位,高位丢弃,低位补0>>右移各二进位全部右移若干位。对于无符号数,高位补0;...
2020-03-26 22:47:47
1151
原创 【c++】string与int、double等的相互转换
分四种: string转int;int 转string ; string转double ; double转string1 string转int方法1:使用stoi()函数函数原型:int stoi( const string& _Str, size_t *_Idx = 0, int _Base = 10 );三个参数分别为:(字符串,起始位置,进制...
2020-03-25 22:19:01
1043
转载 【c++】 string、const char*、 char* 、char[]四种类型转化
1.string与char / char*https://blog.youkuaiyun.com/mpp_king/article/details/88758019https://www.cnblogs.com/lyf-sunicey/p/8679183.html
2020-03-25 10:57:44
808
原创 [c++] static关键字详解
静态成员函数只能访问静态数据成员和静态成员函数,普通成员函数可以访问静态成员函数和静态数据成员0.前言static与c++的内存分布有很大关系,分析static关键字之前最好先了解一下c++内存分布(可以分为五个部分):1、栈区(stack): 是那些编译器在需要时分配,在不需要时自动清除的存储区。存放局部变量、函数参数。2、堆区(heap):一般由程序员分配释放,如new、delete...
2020-02-20 13:30:09
979
原创 [c++] 常成员函数
常成员函数声明:返回类型 成员函数名(参数表) const ;例如:int function(int x) const ;常成员函数的主要特点:1)不能更新类的成员变量2)不能调用该类中没有用const修饰的成员函数,即只能调用常成员函数3)可以被类中其它的成员函数调用4)常对象只能调用常成员函数,而不能调用其他的成员函数。例子1:cla...
2020-02-19 12:42:25
15936
4
原创 校园邮箱申请JetBrains账户(用于激活clion/ pycharm)
JetBrains开发工具免费提供学生和教师使用。取得授权后只需要使用相同的 JetBrains 帐号就可以激活其他产品,不需要重复申请。申请的账户可以满足以下产品的激活:依照下方流程进行申请:(1.)到 https://www.jetbrains.com/zh/student/ 点击申请按钮开始申请。(2.)在表单上方选择申请方式填写相关信息后提交申请,使用校园邮箱或ISIC国际学生证...
2020-02-14 21:21:11
5383
4
原创 [数据结构] 时间复杂度相关问题
1已知一个数组a的长度为n,求问下面这段代码的时间复杂度:for (i=0,length=1;i<n-1;i++){ for (j = i+1;j<n && a[j-1]<=a[j];j++){ //a[j-1]<=a[j]有序 if(length<j-i+1) length=j-i+1; }}实际上是求a中有序...
2020-02-01 17:49:06
2802
转载 进制转换总结
文章目录1 二进制与十进制之间的转换1.1 十进制转二进制1.2 二进制转十进制2 二进制与八进制之间的转换2.1 二进制转八进制2.2 八进制转成二进制3 二进制与十六进制之间的转换3.1 二进制转十六进制3.2 十六进制转二进制4 十进制与(十六进制或八进制)之间的转换4.1 十进制转八进制或者十六进制4.2 八进制或者十六进制转成十进制5 十六进制与八进制之间的转换1 二进制与十进制之间的...
2020-01-30 17:30:46
1120
原创 【c++】多线程编程(四) 补充
本文是对 c++11 多线程编程(一 ~ 三)的补充1.线程管理函数API说明yield让出处理器,重新调度各执行线程get_id返回当前线程的线程 idsleep_for使当前线程暂停指定的时间段sleep_until使当前线程暂停直到指定的时间点后面三个比较容易理解,比如std::this_thread::sleep_for( chro...
2019-12-27 22:46:17
184
转载 【c++】多线程编程(三)条件变量(Condition Variable)
互斥锁std::mutex是一种最常见的线程间同步的手段,但是在有些情况下不太高效。1.消费者生产者模型假设想实现一个简单的消费者生产者模型,一个线程往队列中放入数据,一个线程往队列中取数据,取数据前需要判断一下队列中确实有数据,由于这个队列是线程间共享的,所以,需要使用互斥锁进行保护,一个线程在往队列添加数据的时候,另一个线程不能取,反之亦然。2.互斥锁实现用互斥锁实现消费者生产者模型,...
2019-12-27 15:15:16
292
转载 【c++】 多线程编程(二)竞争条件与锁
转载自 c++多线程编程文章目录1. 竞争条件2. 锁定(lock)与解锁(unlock)3. std::lock_guard 类模板4. std::unique_lock 类模板1. 竞争条件并发代码中最常见的错误之一就是竞争条件(race condition)。而其中最常见的就是数据竞争(data race),从整体上来看,所有线程之间共享数据的问题,都是修改数据导致的,如果所有的共享数...
2019-12-27 15:14:42
1091
转载 【c++】多线程编程(一)基本应用
文章目录1. 多进程并发与多线程并发2.多线程标准库3.线程的构造/初始化1. 多进程并发与多线程并发多进程并发: 将应用程序分为多个独立的、单线程的进程,他们可以同时运行.缺点:进程间通信较为复杂,速度相对线程间的通信更慢。启动进程的开销比线程大,使用的系统资源也更多。优点:进程间通信的机制相对于线程更加安全。能够很容易的将一台机器上的多进程程序部署在不同的机器上多线...
2019-12-27 15:12:50
445
十大排序算法c++实现_fish.rar
2020-05-06
Video_Codec_SDK_9.0.20 (2).zip
2019-07-24
opencv-3.3.1 + opencv_contrib-3.3.1.zip
2019-07-24
hector slam源码
2018-11-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人