自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Steve Sun的专栏

撸呀么撸代码~

  • 博客(22)
  • 资源 (8)
  • 收藏
  • 关注

转载 malloc与new的区别

1.malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存2.对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于

2015-05-04 23:43:53 433

转载 计算机网络各层协议

计算机各层网络协议 应用层: (典型设备:应用程序,如FTP,SMTP ,HTTP) DHCP(Dynamic Host Configuration Protocol)动态主机分配协议,使用 UDP 协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配 IP 地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。实 现即插即用连网。 BOOTP (

2015-05-27 00:17:55 750

转载 关于C++中的虚拟继承的一些总结

1.为什么要引入虚拟继承虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下:class Aclass B1:public virtual A;class B2:p

2015-05-26 23:18:29 403

转载 内存字节对齐

怎么判断内存对齐规则,sizeof的结果怎么来的,请牢记以下3条原则:(在没有#pragma pack宏的情况下,务必看完最后一行) 1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如i

2015-05-26 22:55:31 298

转载 类的sizeof总结

by CSDN hairetz第一部分:先看一个空的类占多少空间? [cpp] view plaincopyclass Base  {  public:      Base();      ~Base();    };       注意到我这里显示声明了构造跟析构,但是s

2015-05-26 20:45:51 382

转载 深拷贝和浅拷贝的区别

拷贝构造函数是类中的一个特殊的成员函数,同时拷贝构造函数也是构造函数的一种,其函数名与类名相同,无返回类型,其作用也是为类的成员初始化以及为对象的构造分配存储空间,不同的是,拷贝构造函数的参数只有一个,且必须为该类对象的引用。        拷贝构造函数只有在使用一个对象初始化另外一个对象时才会使用,让我们从简单的说起:int a = 10;int b = a;co

2015-05-21 12:10:03 409

转载 如何限制对象只能建立在堆上或者栈上

在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;这两种方式是有区别的。        静态建立一个类对象,是由编译器为对象在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法,直接调用类的构造函数。        动态建立类对象,是使用new运算符将对象建立

2015-05-20 14:45:32 380

转载 c++ 智能指针及 循环引用问题

c++智能指针介绍由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete,比如流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见,并造成内存泄露。如此c++引入智能指针 ,智能指针即是C++ RAII的一种应用,可用于动态资源管理,资源即对象的管理策略。 智能指针在  标头文件的 std 命名空间中

2015-05-20 11:46:25 2498

转载 100亿个整数,内存足够,如何找到中位数?内存不足,如何找到中位数?

内存足够的情况: 可以使用类似quick sort的思想进行,均摊复杂度为O(n),算法思想如下: • 随机选取一个元素,将比它小的元素放在它左边,比它大的元素放在右边 • 如果它恰好在中位数的位置,那么它就是中位数,可以直接返回 • 如果小于它的数超过一半,那么中位数一定在左半边,递归到左边处理 • 否则,中位数一定在右半边,根据左半边的元素个数计算出中位数是右半边的第几大,然后

2015-05-19 21:19:16 2119

原创 给定N张扑克牌和一个随机函数,设计一个洗牌算法

#include #include using namespace std;void swap(int &a, int &b){ int t = a; a = b; b = t;}void randomShuffle(int a[], int n){ for(int i = 0; i < n; ++i){ int j = rand() % (n - i) + i; s

2015-05-19 20:32:00 1911

原创 求二叉树的节点总数及树的高度

struct BinaryTreeNode{ int data; BinaryTreeNode *pLeft; BinaryTreeNode *pRight;};//获取树中的节点数int CountNode(BinaryTreeNode *pRoot){ if(pRoot == NULL) return 0; else if(pRoot->pLeft == NULL &&

2015-05-19 16:33:45 667

原创 实现memcpy函数

编程要点: 1、接口设计的通用性 2、考虑内存重叠和不重叠两种情况下的拷贝顺序void myMemcpy(void *dst, const void *src, size_t num){ assert((dst != NULL) && (src != NULL)); const char *psrc = (const char*)src; char *pdst = (char*)dst;

2015-05-19 13:12:15 393

转载 HBase 系统架构

HBase是Apache Hadoop的数据库,能够对大型数据提供随机、实时的读写访问。HBase的目标是存储并处理大型的数据。HBase是一个开源的,分布式的,多版本的,面向列的存储模型。它存储的是松散型数据。HBase特性:1 高可靠性2 高效性3 面向列4 可伸缩5 可在廉价PC Server搭建大规模结构化存储集群HBase是Goog

2015-05-17 17:57:48 352

原创 返回第n个丑数

把只包含质因子2、3和5的数称作丑数(Ugly Number),例如:2,3,4,5,6,8,9,10,12,15,等,习惯上我们把1当做是第一个丑数。写一个高效算法,返回第n个丑数。解法1: 判断某个数是否为丑数,连续找到第n个丑数#include using namespace std;bool isUgly(int num){ while(num % 2 == 0)

2015-05-14 18:38:45 649

原创 点评笔试题

1。用算法实现一个正整数的分解质因数。如90=2*3*3*5。5分#include using namespace std;int main(){ int n, i = 2; cin >> n; cout << n << "="; while(n != 1){ while(n % i == 0){ if(n / i != 1) cout << i <<

2015-05-13 14:23:40 316

转载 软件构架设计的6大原则

1.“开-闭”原则(OCP)     Software entities should be open for extension, but closed for modification.     对扩展开放,对修改封闭。2.里氏代换原则(LSP)     凡是基类适用的地方,子类一定适用。3.依赖倒转原则(DIP)     要依赖抽象,不要依赖具体。4.

2015-05-06 16:10:03 396

转载 MySQL数据库引擎

MySQL数 据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。如果技术高超,还可以使用MySQL++ API自己做一个引擎。下面介绍几种数据库引擎:    ISAM:ISAM是一个定义明确且历经时间考验

2015-05-05 22:14:07 398

转载 SQL中char、varchar、nvarchar的区别

char    char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值。当你输入的字符大于指定的数时,它会截取超出的字符。   nvarchar(n)    包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。   

2015-05-05 20:37:43 354

转载 临界区(Critical section)与互斥体(Mutex)的区别

1、临界区只能用于对象在同一进程里线程间的互斥访问;互斥体可以用于对象进程间或线程间的互斥访问。2、临界区是非内核对象,只在用户态进行锁操作,速度快;互斥体是内核对象,在核心态进行锁操作,速度慢。3、临界区和互斥体在Windows平台都下可用;Linux下只有互斥体可用。1、临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。2、互斥量:为协调共同对

2015-05-04 14:11:18 653

转载 两个有序数组求合并后,求其中位数?

第一步:假设两个有序数组(已经各自排序完成了)长度相等,试写函数找出两个数组合并后的中位数?第二步:假设两个有序数组长度不等,一样的求出中位数?思想是二分查找。。。解析: 这个题目看起来非常简单。第一题的话: 假设数组长度为n, 那么我就把数组1和数组2直接合并,然后再直接找到中间元素。对于这样的方案,第一题和第二题就没有什么区别了。这样的话时间复杂度就是O(n)。通常在这

2015-05-04 13:49:16 959

转载 C++构造函数/析构函数 设置成private的原因

将构造函数,析构函数声明为私有和保护的,那么对象如何创建?已经不能从外部调用构造函数了,但是对象必须被构造,应该如何解决,麻烦大家帮忙说明,关于构造,析构函数声明为私有和保护时的用法???提出这个问题,说明你已经对c++有所思考了。从语法上来讲,一个函数被声明为protected或者private,那么这个函数就不能从“外部”直接被调用了。对于protected的函数,子类

2015-05-04 13:07:59 454

转载 C++程序编译过程简介

编译过程主要分为4个过程  1) 编译预处理  预编译程序完成的工作,可以说成是对源程序的“替换”工作。经过这个过程,生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。宏定义命令;例如#define条件编译指令;例如#ifdef头文件包含指令;例如#include特殊符号;例如__LINE__,__FILE__预处理模块;例如#pragma2) 编译、优

2015-05-04 13:00:23 383

leetcode C++题解

leetcode 最新C++题解

2015-07-22

C和linux书籍

C和linux书籍

2015-06-11

购票软件源代码2

购票软件源代码2

2013-12-18

购票软件源代码1

购票软件源代码1

2013-12-18

计算机统考真题解析

计算机统考真题解析

2013-11-24

C++实现多线程通信

C++实现多线程通信

2013-11-17

火车票抢票软件

火车票抢票软件

2013-11-14

MFC编写的淘宝抢拍软件

MFC编写的淘宝抢拍软件,用于自动抢拍秒杀淘宝商品。直接多任务多线程,付上了使用文档和软件运行日志

2013-08-30

空空如也

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

TA关注的人

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