- 博客(37)
- 资源 (2)
- 收藏
- 关注
翻译 Partial Specialization of function template
1. function specialization vs overload考虑一下,template specialization 归结为为给定类型选择正确的实现。并且解析发生在编译时。现在将其与函数重载进行比较:它包括为给定类型的参数选择正确的函数。并且解析也发生在编译时。从这个角度来看,这两个功能看起来非常相似。因此,通过函数重载可以达到与函数模板(部分或全部)专业化等效的功能,这是正常的。让我们用一个例子来说明。考虑以下模板函数f:template <typename T>v
2020-10-21 14:39:30
704
原创 C++ 并发学习_2_future
本文将介绍 C++11 标准中 <future> 头文件里面的类和相关函数。<future> 头文件中包含了以下几个类和函数:Providers 类:std::promise, std::package_taskFutures 类:std::future, shared_future.Providers 函数:std::async()其他类型:std::future_error, std::future_errc, std::future_status, std::lau
2020-10-12 13:39:12
1087
1
转载 C++ 并发学习_1_thread和mutex
文章目录1 与 C++11 多线程相关的头文件2. `std::thread`2.1 `std::thread` 构造2.2 move 赋值操作2.3 其他成员函数1 与 C++11 多线程相关的头文件C++11 新标准中引入了五个头文件来支持多线程编程,他们分别是<atomic> ,<thread>,<mutex>,<condition_variable>和<future>。<atomic>:该头文主要声明了两个类, std:
2020-09-04 10:26:30
571
转载 设计模式学习 - 简介
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石
2020-08-28 15:50:11
165
原创 关于<functional>
<functional>是函数对象库的一部分,并提供标准的哈希函数。详见cppreferencestd::reference_wrapper (c++11)template< class T >class reference_wrapper;std :: reference_wrapper是一个类模板,它将引用包装在可复制的可分配对象中。它通常用作一种将引用存储在标准容器(例如std :: vector)中的机制,这些容器通常无法保存引用。具体来说,std :: ref
2020-08-28 10:48:32
639
转载 C++ I/O库学习
IO库C++不直接处理输入输出,而是通过一族定义在标准库中的类型来处理IO。这些类型支持从设备读取数据、向设备写入数据的IO操作,设备可以是文件、控制台窗口等。还有一些类型允许内存IO,从string读取数据,向string写入数据。IO库定义了读写内置类型值得操作。此外,一些类,如string,通常也会定义类似的IO操作,来读写自己的对象。初学C++时,为了控制台的交互,往往会接触到IO的内容,现在可以对以下的设施进行说明了:istream类型,提供输入操作ostream类型,提供输出操作c
2020-08-27 15:59:30
314
原创 C及C++的回调函数概念及应用
1.概念在计算机程序设计中,回调函数,或简称回调(Callback 即call then back 被主函数调用运算后会返回主函数),是指通过参数将函数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。...
2020-08-26 17:03:41
1181
原创 算法学习 --递归算法学习
文章目录1 .简介2.从递归的经典示例开始计算阶乘斐波纳契数列3.递归程序的基本步骤4.使用归纳定义链表求和示例汉诺塔问题5.将循环转化为递归6.尾递归介绍7.递归算法转换成非递归算法reference计算机科学的新学生通常难以理解递归程序设计的概念。递归思想之所以困难,原因在于它非常像是循环推理(circular reasoning)。它也不是一个直观的过程;当我们指挥别人做事的时候,我们极少会递归地指挥他们。1 .简介递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法的实质是把问题
2020-08-25 14:59:18
671
原创 C/C++基础数据类型所占的字节数
C标准中并没有具体给出规定那个基本类型应该是多少字节数,而且这个也与机器、OS、编译器有关,比如同样是在32bits的操作系统系,VC++的编译器下int类型为占4个字节;而tuborC下则是2个字节。所以int,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的):sizeof(short int)<=sizeof(int)sizeof(int)<=sizeof(long int)short int 至少应为16位(2字节)lo
2020-08-18 10:32:50
546
转载 TCP/IP数据报及三次握手四次挥手
文章目录1.TCP数据报结构2. 连接的建立 (三次握手)3 TCP数据的传输4. 断开连接 (四次挥手)关于 TIME_WAIT 状态的说明5 shutdown函数 优雅地断开TCP连接close()/closesocket()和shutdown()的区别1.TCP数据报结构客户端在收发数据前要使用 connect() 函数和服务器建立连接。建立连接的目的是保证IP地址、端口、物理链路等正确无误,为数据的传输开辟通道。TCP建立连接时要传输三个数据包,俗称三次握手(Three-way Handsha
2020-08-10 10:56:54
211
原创 cURLpp使用及学习
1.Global Preparation该程序必须全局初始化某些cURLpp功能。那意味着无论您打算使用多少次,都应该只完成一次初始化。在您的程序的整个生命周期中一次。这是通过使用cURLpp :: initialize(long flags= cURLpp :: CURL_GLOBAL_ALL)它采用一个参数,该参数是一种位模式,可以告诉cURLpp初始化。有关更多详细信息,请参见curl_global_init的手册页。当程序不再使用cURLpp时,应调用cURLpp :: terminat
2020-08-10 10:13:06
2694
转载 TCP粘包/拆包问题的分析与解决
文章目录1.TCP粘包/拆包问题1.1 TCP粘包/拆包问题说明1.2 TCP粘包/拆包发生的原因2.未考虑TCP粘包导致功能异常案例2.1 示例2.2 TCP粘包处理无论是服务端还是客户端,当我们读取或者发送消息的时候,都需要考虑TCP底层的粘包/拆包机制。1.TCP粘包/拆包问题TCP是个“流”协议,所谓流,就是没有界限的一串数据。大家可以想想河里的流水,是连成一片的,其间并没有分界线。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完
2020-08-07 15:54:20
528
原创 C++_异常处理的基础用法与拓展
异常处理基础用法throw表达式throw runtime_error("xxxxx");其中,runtime_error是标准库异常类型的一种,定义在stdexcept.h。try blocktry{ program-statements}catch(exception-declaration){ hadler-statements}catch(exception-declaration){ hadler-statements}...示例try {...}c
2020-07-06 22:15:10
246
原创 CMAKE查找库:find_package和pkg_check_moduls的区别
本文介绍 CMake 中两种查找库的方式:find_package 以及 pkg_check_modules 的用法与区别。find_package如果编译软件使用了外部库,事先并不知道它的头文件和链接库的位置,得在编译和链接命令中加上包含它们的查找路径,CMake 使用 find_package 命令来解决这个问题。FIND_PACKAGE( <name> [version] [EXACT] [QUIET] [NO_MODULE] [ [ REQUIRED | COMPONENTS ]
2020-07-06 17:51:26
4698
原创 Linux下core dump及valgrind学习
在linux下开发时,如果程序突然崩溃了,也没有任何日志。这时可以查看core文件。从core文件中分析原因,通过gdb看出程序挂在哪里,分析前后的变量,找出问题的原因。
2020-07-01 20:19:41
1813
1
原创 Linux_文件系统_VFS
1 引言Linux 中允许众多不同的文件系统共存,如 ext2, ext3, vfat 等。通过使用同一套文件 I/O 系统调用即可对 Linux 中的任意文件进行操作而无需考虑其所在的具体文件系统格式;更进一步,对文件的操作可以跨文件系统而执行。如图 1 所示,我们可以使用 cp 命令从 vfat 文件系统格式的硬盘拷贝数据到 ext3 文件系统格式的硬盘;而这样的操作涉及到两个不同的文件系统。图 1. 跨文件系统的文件操作“一切皆是文件”是 Unix/Linux 的基本哲学之一。不仅普通的文件,
2020-06-17 15:23:31
263
原创 HTTP协议学习
1 URL详解URL(Uniform Resource Locator) 地址用于描述一个网络上的资源, 基本格式如下schema://host[:port#]/path/.../[;url-params][?query-string][#anchor]scheme 指定底层使用的协议(例如:http, https, ftp)host HTTP 服务器的 IP 地址或...
2020-06-17 13:57:53
207
原创 类知识补充
目录1. 定义抽象数据类型2. 访问控制与封装2.1 struct与class的区别2.2 友元 ==friend==3. 类的其他特性3.1 定义一个类型成员3.2 可变数据成员3.3 委托构造函数1. 定义抽象数据类型定义在类内部的函数是隐式的inline函数。成员函数通过名为this的额外的隐式参数来访问调用它的那个对象。this形参是隐式定义的,实际上,任何自定义名为this的参...
2020-06-17 13:57:20
158
原创 pandas使用
1. IO toolspandas I/O API是一组顶级读写函数,访问方式如下:pandas.read_csv通常返回pandas对象的。相应的writer函数是对象方法,类似于DataFrame.to_csv(). 下面是一个包含可用读写器的表。:text_files1.1 read_csv()pd.read_csv(input_asc_file,skiprows=lambda x:x in range(7),encoding="gbk",engine='python',sep=' ',de
2020-06-17 13:56:44
474
原创 libcurl API 常用函数
libcurl详参libcurl1 curl_easy_getinfoCURLcode curl_easy_getinfo(CURL *curl, CURLINFO info, ... );使用此函数从curl会话请求内部信息。第三个参数必须是指向long的指针、指向char*的指针、指向struct curl_slist*的指针或指向double的指针(本文档将进一步介绍)。指向的数...
2020-03-24 20:43:34
1698
原创 C++_强制类型转换
cast-name<type>(expression);cast-name : static_cast 、dynamic_cast 、 const_cast 、 reinterpret_cast。dynamic_cast 支持运行时的类型识别。static_cast任何具有明确定义的类型转换,只要不包含底层const,都可以使用static_cast。当需要把一个较大的算术...
2020-03-23 11:00:30
313
原创 传值与传引用(传址)的区别
C++为了保持和c语言的兼容,一般的简单数据传递还是使用值传递,但对于大块的数据(数组、字符串、结构、类等),基本上是引用形式传递的。值传递的缺点:每次调用函数时,需要把数据拷贝一份,耗损内存资源。传引用的缺点:节省了内存和复制数据的时间,但安全性较差,难以保证线程安全。用传引用给const取代传值。典型情况下更高效而且可以避免切断问题(实现不了多态?)这条规则不适用于内...
2020-03-19 17:26:19
823
原创 ubuntu18.04 openssh客户端和服务端 安装及配置
openssl客户端和服务器SSH分客户端openssh-client和openssh-server如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudoapt-get install openssh-client),如果要使本机开放SSH服务就需要安装openssh-server。1 openSSH客户端的安装与配置Ubun...
2020-03-16 13:00:30
6247
1
转载 Socket通信原理学习
1TCP/IP 与UDPTCP/IP(Transmission Control Protocol /Internet protocol) ,传输控制协议与网间协议,是一个工业标准的协议集,是为广域网(WANs)设计的。UDP(User Data Protocol)是与TCP相对应的协议。socket?2 SocketSocket是应用层与TCP/IP协议族通信的中间软件抽象层,是一组...
2020-03-05 18:45:43
442
转载 protobuf 2学习手册
1 关于protobuf及安装protocol buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种...
2019-11-18 15:42:47
601
转载 ubuntu18.04 systemd配置学习手册(2) --具体使用
转载:http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-part-two.html1 开机启动对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件。如果你想让该软件开机启动,就执行下面的命令(以httpd.service为例)。sudo systemctl ...
2019-11-13 16:46:55
1806
转载 ubuntu18.04 systemd配置学习手册(1) --相关概念
1 从init系统说起Linux 操作系统的启动首先从 BIOS 开始,接下来进入 boot loader,由 bootloader 载入内核,进行内核初始化。内核初始化的最后一步就是启动 PID 为 1 的 init 进程。这个进程是系统的第一个进程。它负责产生其他所有的用户进程。init 进程以守护进程(也就是服务)的方式存在,是所有其他进程的祖先。init 进程非常独特,能够完成其他进程无...
2019-11-13 16:08:30
1977
转载 shell脚本的写法(1)
1.shell脚本头,#!/bin/sh与#!/bin/bash的区别.参考:https://www.cnblogs.com/jonnyan/p/8798364.html#!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面跟的是此解释此脚本的shell的路径。$ cat /etc/shells可以查看系统支持的shell格式其实第一句的#!是对脚本的解释...
2019-11-08 15:17:11
1402
原创 MPC- LS中LS1043以太网配置及通信
1 .网络配置需要进行的操作:1 . 重置锁相环 PLL1devmem 0x1ea0000 32 0xE8454786 devmem 0x1ea0020 32 0xc7454726ifconfig eth2 192.168.1.102.把配置写入ramdisk_fs
2019-11-08 15:08:52
938
原创 vector BLF 文件读写
BLF文件文件头部包含内容TYPE变量说明FileStatisticssignatureDWORD , 信号量statisticsSizeDWORD , sizeof(FileStatistics)applicationIdBYTE, applicat ion ID(usually CANoe)applicationMajorBYTE ...
2019-11-08 10:27:27
8354
3
原创 MPC- LS中LS1043 内核编译---1 默认版本
1.LSDK的构造设备要求: ubuntu 14/16/181.1源代码源代码获取地址:https://lsdk.github.io/在LS1043中 ,共有五个image需要刷写:RCW: reset配置字U-boot:boot loaderPPA: 优先保护程序Fman: Frame manager hardware acceleratorLinux:linux image...
2019-11-08 10:26:49
1826
原创 Ibeo LUX 开发学习手册(1)ubuntu 16.04
一、概念IbeoDevice/DataBlock/DataListener IBEODevice会从雷达/ECU接收信息(scan、object list、vehicle data、images)并转换成Datablock数据块格式。接收后为已注册到ibeodevice的数据库的各个特定类型提供所有的datalistener。因此,设备接收数据块,它将调用所有已注册的DataListen...
2018-04-10 15:27:34
2843
原创 TX2 ubuntu16.04下 camke 多版本opencv管理
一、编译zed-ros-wrapper ,由于TX2通过Jetpack 已经安装了opencv2.4 之后参照https://blog.youkuaiyun.com/keith_bb/article/details/52685231 安装了opencv3.1 所以在catkin_make zed-ros-wrapper时出现错误。二、首先修改ZED-ROS-WRAPPER的CMakeList.txt文件 C...
2018-03-29 13:46:01
459
原创 ubuntu 16.04 配置ibeo SDK boost1_59_0 without mongodb
参考ibeoSDk README 手册 无MONGODB版 ubuntu 16.04 boost 1_59_0 1. 生成ibeoSDK library打开SHELL窗口 进入SDK所在文件夹 make static 生成 static liberary 或者 make shared 生成shared library make 可用选项 shared ...
2017-12-14 15:12:03
813
转载 VS2012 配置boost1.59
配置环境: VS2012+boost1.59 (VS2012配置boost建议选择1.60以下版本 不然会在配置中报错 errorC1001 编译器内部错误 ,VS2013可选择1.60以上版本,但需要更新到update5 )1、Boost编译 解压源代码找到booststrap.bat 文件。2、生成编译工具 进入VS2012 ——X64 cross tools ...
2017-10-30 19:02:56
633
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人