自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (1)
  • 收藏
  • 关注

转载 linux gdb的详细用法 运行与断点

gdb是调试程序,跟踪问题的一个非常好的手段,下面将详细的进行介绍它的具体用法下面以gdb_test.c程序为例介绍#include <stdio.h> int func(){ int p = 0; int q = 0; for(p = 0; p < 5; p++) { q++; printf("p ...

2018-07-31 21:47:45 29013

转载 RTTI

RTTI,即 Run-Time Type Identification 在C++ 中,也称为 运行时类型识别 RTTI 的体现方式: 看如下实例: 定义一个Flyable 类,其中有两个纯虚函数:takeoff() 和 land()再定义一个Bird 类,它 public 的继承了 Flyable 类,并实现了 takeoff() 和 land(),并拥有自己独有的...

2018-07-31 19:59:07 7048

转载 C++中四种强制类型转换区别详解

C中的类型转换:  事情要从头说起,这个头就是C语言.我们已经习惯了使用C-like类型转换,因为它强大而且简单.主要有一下两种形式:(new-type) expressionnew-type (expression)C风格的转换格式很简单,但是有不少缺点:  1.转换太过随意,可以在任意类型之间转换。你可以把一个指向const对象的指针转换成指向非const对象的指针,...

2018-07-31 15:55:18 1423

转载 C/C++中变量的存储位置

一个由 c/c++编译过的程序占用的内存分为如下几个部分 :栈区(stack) :由编译器自动分配释放 ,存放为运行函数而分配的局部变量、函数参数、返回数据、返回地址等。 堆区(heap) : 一般由程序员分配释放, new, malloc之类的,若程序员不释放,程序结束时可能由OS回收 。 全局区(静态区)(static) :存放全局变量、静态数据、常量。程序结束后由系统释放...

2018-07-31 12:27:37 647

转载 费雪耶兹(Fisher–Yates) 也被称作高纳德( Knuth)随机置乱算法

Fisher–Yates随机置乱算法也被称做高纳德置乱算法,通俗说就是生成一个有限集合的随机排列。Fisher-Yates随机置乱算法是无偏的,所以每个排列都是等可能的,当前使用的Fisher-Yates随机置乱算法是相当有效的,需要的时间正比于要随机置乱的数,不需要额为的存储空间开销。一、算法流程: 需要随机置乱的n个元素的数组a: for i 从n-1到1j <—随机整数(0...

2018-07-30 10:58:26 1754

转载 memmove 和 memcpy的区别以及处理内存重叠问题

memmove 和 memcpy的区别以及处理内存重叠问题区别:memcpy和memmove()都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下:void *memcpy(void *dst, const void *src, size_t count);void *memmove(void *dst, const void *src...

2018-07-30 10:25:29 634

转载 linux清除cache的方法

此文章转载自:https://blog.csdn.net/weixin_35815578/article/details/64444259今天去面试,被问到linux下如何清除cache,一脸懵逼,因为是真的不知道,但记得用sync命令可以把内存中的数据写入硬盘,就这样说了,面试的技术好像不满意,下来之后查了查,原来还有/proc/sys/vm/drop_caches这个文件可以。网上查了...

2018-07-28 20:10:14 3526

转载 malloc (0)详解

问题: char* ptr = (char*)malloc(0 * sizeof(char));if (NULL == ptr) printf("got a NULL pointer");else printf("got a Valid pointer");请问:上面的程序输出为什么?在C99的标准里面解释到,如果给malloc传递0参数,其返回值是依赖于编译器的...

2018-07-27 20:37:03 3369

转载 面试题:随机数生成、蓄水池抽样、海量数据、设计秒杀系统

等概率生成rand5生成rand3现在有一个Rand5函数,可以生成等概率的[0, 5)范围内的随机整数,要求利用此函数写一个Rand3函数(除此之外,不能再使用任何能产生随机数的函数或数据源),生成等概率的[0, 3)范围内的随机整数。 思路是: 生成0-4的概率是相同的,进一步,生成0-2的概率也是相同的,这就满足了等概率的条件了。int Rand3() { ...

2018-07-27 15:47:14 334

转载 C++虚函数底层机制

C++虚函数底层机制C++的虚函数(Virtual Function)是通过一张虚函数表(Virtual Table)来实现的。简称为V-Table。 在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了 这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就...

2018-07-26 17:18:50 434

原创 析构函数何时被调用

析构函数何时被调用析构函数在下边3种情况时被调用: 对象生命周期结束,被销毁时; 主动调用delete ; 对象i是对象o的成员,o的析构函数被调用时,对象i的析构函数也被调用。 第一种情况#include <iostream>using namespace std;class A{public: A() { co...

2018-07-26 15:42:45 47347 2

转载 如何判断一个点在矩形内

最近在做游戏服务器中技能模块,往往要扫描一个区域,判断npc是不是在我这个区域内,在的话就发伤害。  就需要实现一下,对于一个点是否在矩形内的判断。 只需要判断该点是否在上下两条边和左右两条边之间就行,判断一个点是否在两条线段之间夹着,就转化成,判断一个点是否在某条线段的一边上,就可以利用叉乘的方向性,来判断夹角是否超过了180度 如下图: 只要判断(p1 p2 X p1 p )...

2018-07-24 21:05:11 2636 2

转载 栈和堆的具体区别

栈(stack)和堆(heap)具体的区别1、在申请方式上栈(stack): 现在很多人都称之为堆栈,这个时候实际上还是指的栈。它由编译器自动管理,无需我们手工控制。 例如,声明函数中的一个局部变量 int b 系统自动在栈中为b开辟空间;在调用一个函数时,系统自动的给函数的形参变量在栈中开辟空间。 堆(heap): 申请和释放由程序员控制,并指明大小。容易产生memory lea...

2018-07-24 20:17:57 3465

转载 数组名和指针的区别

此文章转载自:https://blog.csdn.net/findgeneralgirl/article/details/78501734数组名和指针之间,经常会交替使用这两个变量,比如,把一个指针当成数组来使用,或者是把数组名赋值给指针,通过指针来访问数组成员变量,但是,数组名和指针之间到底有什么样的联系与区别,以及什么情况下该使用指针,什么情况下该使用数组名,我对这个做一个小小的解读。。 ...

2018-07-24 19:32:11 203

转载 C++中overload,override,overwrite的区别详细解析

此文章转载自:https://www.jb51.net/article/41358.htmOverload(重载):在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数或返回值不同(包括类型、顺序不同),即函数重载。(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual 关键字可有可无。Override(覆盖):是指派生类函数覆...

2018-07-24 17:10:15 2361

原创 输入字符串中的坑

例1:#include <iostream>using namespace std;int main(){ char ch[52]; int i = 0; for(; i < 5; ++i) scanf("%c", &ch[i]) ch[j] = '\0'; st

2018-07-23 11:27:26 326

原创 大端和小端

int checkCPU(){ union w { int a; char b; }c; c.a = 1; return (c.b == 1);//小端返回1,大端返回0}采用Little-endian模式的CPU对操作数的存放方式是从低字节到高字节,而Big-endian模式对操作数的存放方式是从高字节到低字节。例如...

2018-07-20 14:42:15 1092

原创 设计模式C++实现——单例模式

单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单例的一般实现比较简单,代码如下:class Singleton { public: static Singleton* GetInstance(); //此方法时获得本类实例的唯一全局访问点private: Singleton() {} //构造函数让其private,这样就可...

2018-07-20 12:23:36 611

转载 关于C++中的友元函数的总结

此文章转载自:http://www.cnblogs.com/BeyondAnyTime/p/2535305.html1.友元函数的简单介绍C++中引入友元函数,是为在该类中提供一个对外(除了他自己意外)访问的窗口; 这个友元函数他不属于该类的成员函数,他是定义在类外的普通函数,只是在类中声明该函数可以直接访问类中的private或者protected成员。 类中通过使用关键字frien...

2018-07-20 09:16:30 161

转载 浅谈AVL树,红黑树,B树,B+树原理及应用

此文章转载自:https://blog.csdn.net/whoamiyang/article/details/51926985背景:这几天在看《高性能Mysql》,在看到创建高性能的索引,书上说mysql的存储引擎InnoDB采用的索引类型是B+Tree,那么,大家有没有产生这样一个疑问,对于数据索引,为什么要使用B+Tree这种数据结构,和其它树相比,它能体现的优点在哪里? 看完这篇文章你...

2018-07-19 15:30:17 1262

转载 初探STL:vector中resize和reverse的区别

首先,两个函数的功能是有区别的:     reserve是容器预留空间,但并不真正创建元素对象,在创建对象之前,不能引用容器内的元素,因此当加入新的元素时,需要用push_back()/insert()函数。    resize是改变容器的大小,并且创建对象,因此,调用这个函数之后,就可以引用容器内的对象了,因此当加入新的元素时,用operator[]操作符,或者用迭代器来引用元素对象。其次...

2018-07-19 13:39:24 4848

转载 C++模板

此文章转载自:https://www.cnblogs.com/eleclsc/p/5918114.html模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。  模板是一种对类型进行参数化的工具;  通常有两种形式:函数模板和类模板;  函数模板针对仅参数类型不同的函数;  类模板针对仅...

2018-07-18 21:02:10 264

转载 map中[]运算符和find的区别

此文章转载自:https://blog.csdn.net/weixin_39831546/article/details/78314476map的下标运算符[]的作用是:将关键码作为下标去执行查找,并返回对应的值;如果不存在这个关键码,就将一个具有该关键码和值类型的默认值的项插入这个map。map<string,string> m;m["first"] = "hello";...

2018-07-18 20:22:29 3021

转载 为什么构造函数不能声明为虚函数,析构函数可以

构造函数不能声明为虚函数,析构函数可以声明为虚函数,而且有时是必须声明为虚函数。不建议在构造函数和析构函数里面调用虚函数。构造函数不能声明为虚函数的原因是:1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。编译器无法知道对象 的实际类型,是该类本身,还是该类的一个派生类,或是更深层次的派生类。无法确定。。。2 ...

2018-07-17 11:09:24 515

转载 printf()详解之终极无惑

此文章转载自:https://blog.csdn.net/k346k346/article/details/522526261.printf()简介printf()是C语言标准库函数,用于将格式化后的字符串输出到标准输出。标准输出,即标准输出文件,对应终端的屏幕。printf()申明于头文件stdio.h。函数原型:int printf ( const char * format, ... );1...

2018-07-15 10:55:35 570

原创 腾讯2018秋招笔试真题——安排机器

题目描述:小Q的公司最近接到m个任务,第i个任务需要Xi的时间去完成,难度等级为yi。                小Q拥有n台机器,每台机器最长工作时间zi,机器等级wi。               对于一个任务,它只能交由一台机器来完成,如果安排给它的机器的最长工作时间小于任务需要的时间,则不能完成,                如果完成这个任务将获得200*xi + 3*yi收益。  ...

2018-07-14 21:46:20 4642 5

转载 C语言scanf函数详细解释

此文章转载自:https://blog.csdn.net/21aspnet/article/details/174326函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]);scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式...

2018-07-14 15:28:29 16681

转载 在浏览器中输入一个网址后,发生了什么?

此文章转载自:https://www.cnblogs.com/SarahLiu/p/5954832.html这是面试中一道非常经典的问题。当你在浏览器中输入一个网址,浏览器的处理过程如下:第一步 浏览器查找该域名的 IP 地址第二步 浏览器根据解析得到的IP地址向 web 服务器发送一个 HTTP 请求第三步 服务器收到请求并进行处理第四步 服务器返回一个响应第五步 浏览器对该响应...

2018-07-11 16:54:39 60696

转载 哈夫曼树算法及C++实现

此文章转载自:https://www.cnblogs.com/smile233/p/8184492.html一、相关概念  1、叶子结点的权值(weight)是对叶子结点赋予的一个有意义的数值量。  2、设二叉树有n个带权值的叶子结点,从根节点到各个叶子结点的路径长度与相应叶子结点权值的乘积之和叫做二叉树的带权路径长度。  3、给定一组具有确定权值的叶子结点,可以构造出不同的二叉树,将其中带权路径...

2018-07-11 16:05:22 1908

转载 C++11常用新特性快速一览

此文章转载自:https://blog.csdn.net/jiange_zh/article/details/79356417最近工作中,遇到一些问题,使用C++11实现起来会更加方便,而线上的生产环境还不支持C++11,于是决定新年开工后,在组内把C++11推广开来,整理以下文档,方便自己查阅,也方便同事快速上手。(对于异步编程十分实用的Future/Promise以及智能指针等,将不做整理介绍...

2018-07-09 20:19:04 1211

转载 C++ 源代码到可执行代码的详细过程

编译,编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。源代码-->预处理-->编译-->优化-->汇编-->链接-->可执行文件Source--(编译)--> Assembly--(汇编)-->Obj--(链接)...

2018-07-09 19:43:19 8709 1

转载 彻底理解数字图像处理中的卷积-以Sobel算子为例

此文章转载自:https://www.cnblogs.com/freeblues/p/5738987.html概述卷积在信号处理领域有极其广泛的应用, 也有严格的物理和数学定义. 本文只讨论卷积在数字图像处理中的应用.在数字图像处理中, 有一种基本的处理方法:线性滤波. 待处理的平面数字图像可被看做一个大矩阵, 图像的每个像素对应着矩阵的每个元素, 假设我们平面的分辨率是 1024*768, 那么...

2018-07-04 10:49:48 665 1

转载 OpenCV——两幅相同与不同尺寸图像融合

相同尺寸图像融合:#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream> using namespace cv; usin...

2018-07-03 16:48:31 9433

原创 OpenCV 中boundingRect、minAreaRect、minEnclosingCircle用法

当我们得到对象轮廓后,可用boundingRect()得到包覆此轮廓的最小正矩形,minAreaRect()得到包覆轮廓的最小斜矩形,minEnclosingCircle()得到包覆此轮廓的最小圆形,这些函式协助我们填补空隙,或者作进一步的对象辨识,boundingRect()函式返回的是正矩形,所以如果对象有倾斜的情形,返回的可能不是我们想要的结果。Rect boundingRect(Input...

2018-07-03 15:49:37 12041 1

转载 数字图像处理:形态学操作、腐蚀、膨胀、开运算、闭运算

在图像处理技术中,有一些的操作会对图像的形态发生改变,这些操作一般称之为形态学操作(phology)。数学形态学是基于集合论的图像处理方法,最早出现在生物学的形态与结构中,图像处理中的形态学操作用于图像与处理操作(去噪,形状简化)图像增强(骨架提取,细化,凸包及物体标记)、物体背景分割及物体形态量化等场景中,形态学操作的对象是二值化图像。有名的形态学操作中包括腐蚀,膨胀,开操作,闭操作等。其中腐蚀...

2018-07-01 15:11:10 16885 4

用Qt编写的具有人机对战的五子棋

此五子棋代码,实现了人机对战,开始界面可以选择棋子颜色和自动搜索的深度(即难度),搜索的游戏状态数目随着博弈的进行呈指数级增长,指数增长无法消除,不过我们使用了alpha-beta剪枝有效地将其减半,加快了搜索的速度!

2017-12-02

空空如也

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

TA关注的人

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