自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(123)
  • 资源 (9)
  • 收藏
  • 关注

原创 vscode配置c++代码提示补全

vscode配置c++代码提示补全在网上找了大半天,说的方式都试过了,都没有适合我的,还是自己找stackoverflow靠谱点{ "editor.rulers": [ 80 //一行限制80字符 ], "editor.tabSize": 2,//默认tab是2个字符 "editor.detectIndentation": false,//取消自动缩进 "editor.fontFamily": "monospace",//设置为等宽字体,保证代码字体显示大小 "C_Cpp

2022-04-22 16:59:27 4026 2

原创 vector中emplace_back和push_back详解,源码解读

C++11之前:通常使用push_back()向容器中加入一个右值元素(临时对象)的时候,首先会调用构造函数构造这个临时对象,然后需要调用拷贝构造函数将这个临时对象放入容器中。原来的临时变量释放。这样造成的问题是临时变量申请的资源就浪费。C++11之后:引入了右值引用,转移构造函数(请看这里)后,push_back()右值时就会调用构造函数和转移构造函数。emplace_back:源码:主要看有注释的地方,通过完美转发,最终到构造对象,找到对应的构造函数进行构造 template<clas

2022-03-08 11:38:57 2065

原创 git 合并练习

用于git merge练习常规步骤克隆仓库git clone xxxxgit checkout -b dev-xxx-test,xxx为自己标识的id,例如本例dev-xxx-test命令描述git clone克隆仓库git checkout -b在本地创建并切换到新命名的分支内容修改并提交在test.md末尾追加想添加的的内容,例如增加一行:“test9.txt”git add test.mdgit commit -m"feat: Add tes

2021-12-14 21:01:38 316

原创 dll库直接使用 lib载入和LoadLibrary载入的区别

lib 是dll的导入库,在vs工程中添加对应lib和头文件就可以这个方法很简单,但是有2个缺点:1 程序一开始运行就需要载入整个dll,无法载入程序就不能开始运行;2 由于载入的是整个dll,需要耗费资源较多LoadLibrary载入,是对应的 “动态加载”方式,它不在程序运行时候载入dll,不需要lib导入,使用程序函数 LoadLibrary 载入库,并使用 API 获得...

2019-12-18 14:54:43 1764

转载 UML类图之间的关系

UML图中类之间的关系:依赖,泛化,关联,聚合,组合,实现类与类图类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能,要承担什么样的义务。一个类可以有多种职责,设计得好的类一般只有一种职责,在定义类的时候,将类的职责分解成为类的属性和操作(即方法)。类的...

2019-09-29 10:24:31 550

原创 chromium 68的智能指针实现原理

Chromium的智能指针由类scoped_refptr实现。由于它要求被引用对象具有计数功能,因此就提供了一个具有计数功能的基类RefCounted。当一个对象可以被类scoped_refptr描述的对象引用时,它就必须要从基类RefCounted继承下来。非线程安全版本:template <typename T>struct DefaultRefCountedTraits {...

2019-09-18 17:28:26 510

原创 加载含有依赖其他dll库的dll

当编写的dll依赖其他dll库时,exe在加载这个dll时,exe会去找这个dll所依赖的其他dll,而查找目录只是其exe所在的目录或指定的那几个系统目录。不会在你放置的dll目录中找。 例如: A.dll依赖B.dll,把A.dll和B.dll放置在d:\load_dll目录下,当E:\debug\C.exe执行::LoadLibraryA("d:\\load_dll\\A.dll")

2018-02-03 18:42:26 5788

原创 cef3 js和C++交互

参考出处:https://github.com/fanfeilong/cefutil/blob/master/doc/CEF_JavaScript_Cpp.mdJavaScript和Cpp交互示例(Custom Implementation),交互分为js函数中带有callback和没有callback的实例一个CEF应用程序也可以提供自己的异步JavaScript绑定。此处演示(js在html中使

2017-12-09 18:34:46 3857

原创 win10 svn图标不显示

在升级win10 操作系统后,svn的图标不能显示了 解决办法(失效):按照网上所说,修改注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers\下的tortoise相关的文件进行重命名使之排在最前面,然后重启电脑,亲测不成功。解决办法:卸载tort

2017-07-16 16:06:27 1074

原创 QT5.5 VS2010编程入门

环境安装 1:安装qt-opensource-windows-x86-msvc2010-5.5.0 2:安装vs2010 3:安装vs2010 sp1补丁 4:设置qt的环境变量,并在vs2010的qt选项中选择qt option,添加版本和安装路径。 控件变量获取篇

2017-06-25 22:54:24 1130

原创 LINK:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏

在安装了VS2013的情况下,后又安装了VS2010,出现此类错误。解决办法如下: 第一步: 打开该项目——项目属性——配置属性——连接器——清单文件——输出输出——嵌入清单 “是”改为“否”。 第二步:若为64位的操作系统,则失效的根本原因是cvtres.exe版本冲突,将新安装的VS2010的安装目录下的cvtres.exe用VS2013中的cvtres.exe进行替换。注意,这里指的

2017-04-03 13:15:00 300

原创 opencv3.0 findContours出现错误,内存泄漏问题

前提是环境变量配置没有错误。在网上百度了多个办法,均不行。问题的根本在于用了错误版本的dll。例如本人使用的是opencv里面的x64版本,则在VS2013也是用的x64进行编译,配置时需如下: 执行目录最好包含x86的路径,库目录包含的是x64的库目录,因为用的是VS2013的x64进行,此处千万不要包含x86的目录。解决方案: 最后,使用不同版本的opencv,就将对应版本的dll拷贝进

2017-04-01 17:05:13 3203

原创 android studio解决无法添加远程依赖问题

在导入远程依赖时,有时候会遇到Failed to resolve:com.squareup.okhttp3:okhttp:3.6.0之类的问题,出现这类问题有两种情况: 1、设置了代理,代理处问题导致AS不能上网下载; 2、AS设置成为了gradle的离线工作模式。 解决办法如下: 1、取消代理,单击File->Settings->Appearance&Behavior->system se

2017-03-29 17:38:13 5261 6

原创 android studio无法安装Genymotion插件

如图所示: 在android studio中找不到此插件的处理方法: 1、按照此http://www.open-open.com/lib/view/open1468118887690.html链接的方法安装Virtual Box和Genymontion; 2、启动Genymontion,并下载添加一个虚拟设备,我的如下: 3、先启动Virtual Box,再启动Genymotion,

2016-12-14 20:34:31 2925

原创 vtk 体绘制

#include "vtkProperty.h"#include "vtkPolyDataNormals.h"#include "vtkContourFilter.h"#include "vtkMarchingCubes.h"#include "vtkDICOMImageReader.h"#include "vtkImageCast.h"#include "vtkDecimatePro.

2016-12-12 22:35:41 1055

原创 VS2013 编译live555

平台: win7与Visual Studio 2013 Ultimate直接编译生成lib和exe文件1、下载live555最新源码 http://www.live555.com/, 2、解压至文件夹live。3、修改win32config。打开live\win32config文件,修改如下: 注意,此TOOL32的路径为vs2013的安装路径,不一定非是C盘的路径,例如,我的路径为:D:\

2016-10-19 14:55:09 434

原创 父进程,子进程,线程之间的关系

1、父子进程之间的关系 关于资源:子进程得到的是除了代码段是与父进程共享的意外,其他所有的都是得到父进程的一个副本,子进程的所有资源都继承父进程,得到父进程资源的副本,既然为副本,也就是说,二者并不共享地址空间。,两个是单独的进程,继承了以后二者就没有什么关联了,子进程单独运行。(采用写时复制技术) 关于文件描述符:继承父进程的文件描述符时,相当于调用了dup函数,父

2016-09-13 09:57:07 21525

原创 字符与数字之间的转换

#include <iostream>#include<vector>#include <string>#include <algorithm>#include<sstream>using namespace std;int StoI(const string &s){ istringstream is(s); int tmp = 0; is >> tmp;

2016-09-12 09:48:53 625

转载 HTTP文件下载原理

于HTTP协议,向服务器请求某个文件时,只要发送类似如下的请求即可: GET /Path/FileName HTTP/1.0Host: www.server.com:80Accept: * / *User-Agent: GeneralDownloadApplicationConnection: close 每行用一个“回车换行”分隔,末尾再追加一个“回车换行”作为整个请求的结束。第一行

2016-09-05 16:56:08 19621 1

转载 HTTP协议详解

请求数据即为实体主体,通常是在POST方法中使用。HTTP编码篇:一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据(实体主体Body)4个部分组成。 (1)请求行 请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。 HTTP协议的请求方法有GET、POST

2016-09-05 16:44:34 689

转载 EPOLL模型

什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。同步I/O:导致请求进程阻塞,直到I

2016-08-31 22:39:39 381

转载 C++虚函数表

转载一篇大牛文章 作者:陈皓 地址:http://blog.csdn.net/haoel/article/details/1948051前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算

2016-08-30 22:04:21 279

原创 类和函数模板特例化

引入原因:编写单一的模板,它能适应大众化,使每种类型都具有相同的功能,但对于某种特定类型,如果要实现其特有的功能,单一模板就无法做到,这时就需要模板特例化。 定义:是对单一模板提供的一个特殊实例,它将一个或多个模板参数绑定到特定的类型或值上。函数模板特例化:必须为原函数模板的每个模板参数都提供实参,且使用关键字template后跟一个空尖括号对<>,表明将原模板的所有模板参数提供实参。templa

2016-08-30 20:37:07 5382 1

转载 typedef 和define的区别

1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。2)typedef是在编译时处理的。它在自己的作用域内给一个已经存在的类型一个别名#define int_ptr int * //没有分号,若有,则会连分号一起替换int_ptr a, b; //相当于int * a, b; 只是

2016-08-29 21:49:30 305

转载 IP地址几个小问题

1、IP地址中的全0,即0.0.0.0,表示“ 这个”,网络地址字段全为0的IP地址是一个保留地址,表示“本网络” 2、主机号字段全为0的IP地址表示“本主机”所连接到的网络,即网络地址,主机号字段全为1的IP地址表示该网络上的所有主机,一般用于广播。

2016-08-29 21:00:21 620

原创 struct在C和C++中的区别

在C中: 1、struct用户自定义数据类型,只能是一些变量的集合体,可以封装数据却不可以隐藏数据,而且成员不可以是函数。 2、struct是没有权限设置的。 3、必须在结构标记前加上struct才能作为结构类型名进行定义变量。在C++中: 1、struct抽象数据类型,支持成员函数的定义。 2、struct的默认权限是pulic。 3、结构标记可以直接作为结构类型名

2016-08-29 20:38:17 451

原创 智能指针auto_ptr、内存泄漏解决

在C++11中,已经不使用auto_ptr,而用 unique_ptr进行替代,不过二者原理都差不多。头文件:memory智能指针:实质上是一个类,在创建智能指针的时候,本质上是在栈上创建了一个对象,而析构函数总是会在出栈时被调用,清理会自动进行。unique_ptr(auto_ptr)通过在栈上构建一个对象a,对象a中动态分配内存指针p,所有对指针p的操作都转为对对象a的操作。而在a的析构函数中

2016-08-29 20:02:14 2576

原创 #,##,...

C/C++中,#,##,二者用在宏定义中# 表示:将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后变成一个字符串##表示:为连接符,把宏参数名与宏定义代码序列中的标识符连接在一起,形成一个新的标识符例如:#define PRINT( n ) printf( "token" #n " = %d", token##n )//##为连接符,tok

2016-08-29 17:25:47 469

原创 如何防止类被继承

方法有一下两种: 1、将类后面加一个final关键字,最简单; 2、利用私有构造函数,然后提供public的方法创建对象或者设定友元。 重点说说方法2: (1)将构造函数设为私有,提供public方法进行对象的创建,利用的是单例模式。 (2) 将构造函数设为私有,通过设定友元来进行创建对象,代码如下:class A;class Usable_lock{friend class A;p

2016-08-29 16:54:35 1129 1

转载 函数式宏定义和普通函数的区别

在C及C++语言中允许用一个标识符来表示一个字符串,称为宏,该字符串可以是常数、表达式、格式串等。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。若字符串是表达式,我们称之为函数式宏定义。 我们以下面两行代码为例,展开描述: 函数式宏定义:#define MAX(a,b)

2016-08-29 16:22:47 3722

转载 strcpy与memcpy的区别

原型声明:extern char *strcpy(char *dest, const char *src); 头文件:#include

2016-08-29 16:02:12 999

原创 如何重载前置++和后置++

前置++:即++运算符位于操作数的前面,例如:++i; 后置++:即++运算符位于操作数后面,例如:i++; 注意一下几点: 1、前置++重载时没有参数,而后置++重载时有参数。不会使用其参数,仅仅是区分用。可以理解为前置++后面有参数了,所以不需要参数 2、前置++需要返回引用,因为重载自加运算符后可以返回对象的引用, 以方便在表达式中连续使用。而后置++返回的不是引用,所以不能进行连续使

2016-08-29 15:53:25 11294 6

转载 delete和delete[]的区别

转载地址:http://blog.csdn.net/hazir/article/details/21413833 C++中,类型分为两种:内置类型和自定义的类类型。在释放内存时分为释放内置类型和自定义类型的数组。 1、对于单个对象,释放内置类型和类类型的方法一样,使用delete.对于类对象而言,delete做两件事: (1)调用类的析构函数; (2)释放对象的内存;

2016-08-29 14:58:23 436

转载 class字节计算

1、类的大小类的sizeof()大小一般是类中的所有成员的sizeof()大小之和,这个就不用多说。确切的说,用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小。注意:类只是一个类型定义,它本身是没有大小可言的。对象大小= vptr(类中定义了多个virtual函数,仍然为占用4个字节) + 所有非静态数据成员大小 + Aligin字节大小(依赖于不同的编译器)。

2016-08-28 11:27:08 1014

转载 5分钟搞定内存字节对齐

写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧./********************分割线如果体系结构是不对齐的,A中的成员将会一个挨一个存储,从而sizeof(a)为11。显然对齐更浪费了空间。那么为什么要使用对齐呢? 体系结构的对齐和不对齐,是在时间和空间上的一个权衡。对齐节省了时间。假

2016-08-28 10:55:18 420

转载 struct字节计算

若结构体为空,其大小为1; 若不为空,结构体的存储比较复杂,并不是简单的字节相加,比如:struct student { char name; int id; double score; }; 按照我们一般的想法结构体的字节数sizeof(student)=1+4+8=13,然而我们在代码中验证后就会发现sizeof(student)=16;这是为什

2016-08-28 10:37:58 3307

原创 单词统计问题

华为OJ 输入一行英文文本,要求输出出现频率最高和最低的单词,中间以,.和空格进行分割,大小不同的单词视为同一个,如果单词数目相同,则输出第一次出现的那个。输出均为小写形式。如”Hello world, i said hello world to the world.”输出world,i 代码如下:#include <iostream>#include<vector>#incl

2016-08-18 09:16:25 285

原创 字符串截取

代码:#include <iostream>#include<vector>#include<string>#include<algorithm>using namespace std;int main(){ string patter =", ."; string source ="Hello world, i said hello world to the wo

2016-08-17 22:19:15 231

原创 数组中最长递增子序列

数组是乱序的,如1,-1,2,-3,4,-5,6,-7 根据无后效性定义,数组中当前元素所形成的子序列与其前面元素形成的子序列没有关系,所以: LIS[i+1] = max(1,LIS[k]+1),其中,array[i+1] > arry[k],且任意k<=i LIS[i]存储对于当前数组arry[i]形成的最长子序列的长度值,若arry[i+1]>arry[k],那么第i+1个元素可以接在L

2016-08-17 11:06:25 345

转载 寻找最近点对

具体分析见编程之美解法三,代码如下:#include <stdio.h> #include <algorithm> #include <vector> #include <math.h> class Point { public: Point(int x, int y) : x_(x), y_(y) {} Point() : x_(0), y_(0) {}

2016-08-16 11:23:37 281

gdi+ 9图类

在win32下利用gdi+绘制的9图类,纯手工制作,内含使用方式,只需要在9图类初始化时传入9图路径,在事件处理函数的WM_SIZE事件中调用draw函数即可,且支持阴影,亲测可用,便于集成

2018-08-06

boost API 中文库

中文的boost库开发手册,对于刚开始使用boost库的新手,英语不怎么好的,具有较好的指南

2017-12-29

C++标准程序库 侯捷版

侯捷版的C++标准程序库,适合STL的入门学习者

2017-03-05

vtk之体绘制

利用vtk实现的体绘制代码,绝对能跑,且代码解释详细,流程清楚,亲册

2016-12-12

vtk文件转obj文件

本程序可以将.vtk文件格式转化为.obj文件格式。

2016-11-01

ADO,ORACLE

实现对ORACLE数据的连接和操作,值得入门学习

2015-05-30

C/C++代码学习

此代码能实现BMP基本操作,读取、缩放、任意角度旋转,值得学习图像处理的基本入门

2015-05-30

空空如也

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

TA关注的人

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