自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 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 382

转载 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 5383 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 628

原创 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 2577

原创 #,##,...

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

2016-08-29 17:25:47 470

原创 如何防止类被继承

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

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

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

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

2016-08-29 16:22:47 3723

转载 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 11299 6

转载 delete和delete[]的区别

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

2016-08-29 14:58:23 437

转载 class字节计算

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

2016-08-28 11:27:08 1016

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

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

2016-08-28 10:55:18 421

转载 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 3308

原创 单词统计问题

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

2016-08-18 09:16:25 286

原创 字符串截取

代码:#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 346

转载 寻找最近点对

具体分析见编程之美解法三,代码如下:#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

原创 给定一个十进制n,从1开始,到n的所有整数,求出现1的个数

使用数学归纳法,代码如下:/统计出现1的个数,使用数学归纳法,得出的规律如下://分别计算每一位可能出现的1的次数,然后把每一位的次数相加//思想:1、若当前位为0,则出现的次数仅由其更高位的数字决定,值为:更高位数字*当前位所在的位数//2、若当前位为1,则出现的次数有更高位和其低位决定,值为:更高位数字*当前位所在的位数+更低位数字+1;//3、若当前位>1,则出现的次数由更高位决定,值

2016-08-15 22:19:03 1823

转载 找零钱问题

人民币有1、2、5、10、20、50、100这几种面值。 现在给你n(1≤n≤250)元,让你计算换成用上面这些面额表示且总数不超过100张,共有几种。 比如4元,能用4张1元、2张1元和1张2元、2张2元,三种表示方法。 输入有多组,每组一行,为一个整合n。 输入以0结束。 输出该面额有几种表示方法。 使用动态规划解决:#include <iostream>#include

2016-08-14 16:50:13 635

原创 火车进站问题

华为OJ【问题描述】 给定一个正整数N代表火车数量,0#include <iostream>#include<string>#include<vector>#include<algorithm>#include <fstream>using namespace std;void PrintNum(vector<int>);void Perm(vector<int> &data,int

2016-08-14 11:58:47 1363

原创 剑指offer相关代码

全是纯手工编写,方便自己查看#include<iostream>#include<vector>#include<stack>#include<queue>using namespace std;//使用递归时,函数进去的第一步就是判断退出递归的边界条件,因为递归都是要返回值的,所以第二步就是定义返回值的变量,此变量的初始值与第一步边界条件返回值要相反或不同//(因为只返回一个值,一般只

2016-08-14 09:50:42 299

原创 TCP拥塞避免

首先,TCP能提供流量控制。TCP使用的流量控制协议是可变大小的滑动窗口协议。TCP双方在发送数据时,都会告诉对方自己所能接收的数据窗口大小。这将防止较快主机致使较慢主机的缓冲区溢出。(TCP可以进行流量控制,防止较快主机致使较慢主机的缓冲区溢出) TCP连接的每一方都有固定大小的缓冲空间。有发送缓存和接收缓存。 发送缓存存放: 1.发送应用程序传送给发送方TCP**准备发送的数据*

2016-08-11 21:50:30 546

转载 B树和B+树

B树:多路查找树,B树定义如下: 1、每个结点x有以下属性: (a)x.n,当前存储在结点x中的关键字个数为n; (b)x.n个关键字本身x.key1,x.key2…x.keyn,以非降序排列,即x.key1≤x.key2≤…≤x.keyn; (c)x.leaf,bool值,为true表示是叶子节点,false为非叶子节点 2、每个内部节点x含有x.n+1个孩子指针x.c1…x.c

2016-08-08 09:40:42 238

转载 C#使用HTTP协议

HTTP的工作过程大体上分连接、请求、响应和断开连接四个步骤。C#语言对HTTP协议提供了良好的支持,在.NET类库中提供了WebRequest和WebResponse类,这两个类都包含在System.Net命名空间中,利用这两个类可以实现很多高级的网络功能,本文中多线程文件下载就是利用这两个类实现的。 WebRequest和WebResponse都是抽象基类,因此在程序中不能直接作为对象使用,必须

2016-08-04 22:13:20 2986

转载 HTTP协议文件下载

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

2016-08-04 17:24:05 9149

转载 最长公共子序列

最长公共子序列,英文缩写为LCS(Longest Common Subsequence)。其定义是,一个序列 S ,如果分别是两个或多个已知序列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列。而最长公共子串(要求连续)和最长公共子序列是不同的。 动态规划的一个计算两个序列的最长公共子序列的方法如下: 以两个序列 X、Y 为例子: 设有二维数组f[i,j] 表示

2016-08-02 17:28:39 289

原创 TCP协议如何来保证传输的可靠性和数据的顺序性

TCP提供一种面向连接的、可靠的字节流服务。   面向连接:意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP。 TCP通过下列方式来提供可靠性和顺序性: 1、应用数据被分割成TCP认为最适合发送的数据块。这和UDP完全不同,应用程序产生的数据报长度将保持不变。

2016-08-02 09:16:47 12227 2

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关注的人

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