自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不很正派的专栏

每一次敲击都是对它的热爱

  • 博客(17)
  • 资源 (6)
  • 收藏
  • 关注

原创 C++ String 类的简单实现

String类里面主要包含构造,拷贝构造,析构,赋值,比较,字符串相加,获取长度及子串等方法。#include <iostream>#include <cstring>using namespace std;class String{public: // 默认构造函数 String(char *str = NULL); // 复制构造函数 String(Stri

2018-01-31 00:06:12 3759 3

转载 必须使用【初始化列表】初始化数据成员的情况

类对象的构造顺序是这样的: 1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员; 2.进入构造函数后在构造函数中执行一般赋值与计算。使用初始化列表有两个原因: 原因1.必须这样做:《C++ Primer》中提到在以下三种情况下需要使用初始化成员列表: 情况一、需要初始化的数据成员是对象的情况(这里包含了继承情况下,通过显示调用父类的构造函数对父类数据成员进行初始化);

2018-01-29 22:31:17 4713

转载 STL中vector,Map,Set的实现原理

vectorvector的数据安排以及操作方式,与array非常类似,两者唯一的区别是空间运用的灵活性,array是静态空间,一旦配置了就不能改变,如果你想要大一点的空间,就必须首先配置一块新空间,然后将原来的元素一一复制进来,再把原来的空间释放给系统。但是vector是动态空间,随着元素的增加,它的内部机制会自行扩充空间以容纳新元素,因此vector的运用对于内存的合理利用与运用的灵活性有很大的帮

2018-01-29 00:01:42 5745

转载 SGI-STL内存池实现原理

STL之父Alexander Stepanov离开HP之后就去了SGI(Silicon Graphics Computer System, Inc),然后和Matt Austern这些STL大牛一起搞了SGI STL。它也是HP STL的一个继承版本。它属于开放源码,因此你可以修改和销售它。SGI STL被GCC(linux下的C++编译器)所采用,你可以在GCC的Include子目录下找到所有头文

2018-01-28 16:40:59 1187

转载 TCP相关技术:重发机制

重发机制TCP协议是一个可靠的协议。它通过重新发送(retransmission)来实现TCP片段传输的可靠性。简单的说,TCP会不断重复发送TCP片段,直到片段被正确接收。接收方(receiver)可以通过校验TCP片段头部中checksum区域来检验TCP片段是否出错。我们已经接触过了IP协议详解的checksum算法。TCP片段的checksum算法与之类似。IP协议的checksum只校验头

2018-01-28 14:37:08 3824

转载 TCP三次握手四次挥手详解

TCP三次握手所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。第一次握手: 客户端发送一个TCP的SYN标志位置1的包指明客户打算连接的服务器的端口,

2018-01-27 10:44:17 507

转载 以太网帧,IP,TCP,UDP首部结构

1.以太网帧的格式2.IP报头格式IP是TCP/IP协议簇中最为重要的协议。所有的TCP,UDP, ICMP和IGMP数据都以IP数据报格式传输。IP提供的是不可靠、无连接的协议。普通的IP首部长为20个字节,除非含有选项字段。4位版本:目前协议版本号是4,因此IP有时也称作IPV4.4位首部长度:首部长度指的是首部占32bit字的数目,包括任何选项。由于它是一个4比特字段,因此首部长度最长为60个

2018-01-24 22:03:57 4726

转载 TCP与UDP之间的区别

TCP和UDP区别 / TCP UDP 是否连接 面向连接 面向非连接 传输可靠性 可靠的 不可靠的 应用场合 传输大量的数据 少量数据 速度 慢 快OSI 和 TCP/IP 模型在传输层定义两种传输协议:TCP(或传输控制协议)和 UDP(或用户数据报协议)。UDPUDP 与 TCP 的主要区别在于 UDP 不一定提供可靠的数据传输。事实

2018-01-24 21:33:46 480

原创 C11 标准新特性

C11标准是C语言标准的第三版(2011年由ISO/IEC发布),前一个标准版本是C99标准。相比C99,C11有哪些变化呢1、 对齐处理alignof(T)返回T的对齐方式,aligned_alloc()以指定字节和对齐方式分配内存,头文件定义了这些内容。alignof( 类型标识 ) 返回 std::size_t 类型值。 返回由类型标识所指示的类型的任何实例所要求的对齐字

2018-01-21 18:08:08 25741 1

转载 二叉查找树(BST)

什么是二叉查找树二叉查找树(Binary Search Tree)又叫二叉排序树(Binary Sort Tree),它是一种数据结构,支持多种动态集合操作,如 Search、Insert、Delete、Minimum 和 Maximum 等。二叉查找树要么是一棵空树,要么是一棵具有如下性质的非空二叉树:若左子树非空,则左子树上的所有结点的关键字值均小于根结点的关键字值。若右子树非

2018-01-13 18:44:02 877

转载 C/C++内存管理详解

内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了更好的性能,更大的自由,C++菜鸟的收获则是一遍一遍的检查代码和对C++的痛恨,但内存管理在C++中无处不在,内存泄漏几乎在每个C++程序中都会发生,因此要想成为C++高手,内存管理一关是必须要过的,除非放弃C++,转到Java或者.NET,他们的内存管理基本是自动的,当然你也放弃了自由和对内存的支配权,还放弃了C+

2018-01-08 23:42:59 318

转载 C++中宏与内联函数的优缺点

宏为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移操作要求在转去执行前要保存现场并记忆执行的地址,转回后要恢复现场,并按原来保存地址继续执行。因此,函数调用要有一定的时间和空间方面的开销,于是将影响其效率。 而宏只是在预处理的地方把代码展开,不需要额外的空间和时间方面的开销,所以调用一个宏比

2018-01-07 18:38:37 2095

转载 C++ 中内存对齐原理及作用

struct/class/union内存对齐原则有四个:1).数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如int在32位机为4字节, 则要从4的整数倍地址开始存储),基本类型不包括struct/clas

2018-01-07 16:54:46 5669

转载 C++中的类型转换(static_cast、const_cast、dynamic_cast、reinterpret_cast)

1. c强制转换与c++强制转换c语言强制类型转换主要用于基础的数据类型间的转换,语法为:(type-id)expression//转换格式1type-id(expression)//转换格式2c++除了能使用c语言的强制类型转换外,还新增了四种强制类型转换:static_cast、dynamic_cast、const_cast、reinterpret_cast,主要运用于继承关系类间的强制转化,语

2018-01-06 22:30:26 3075

转载 C++不要在构造函数和析构函数中调用虚函数

这里先运行个示例代码:#include<iostream> using namespace std;class Base {public: Base() { cout << "Base::Base()" << endl; fun(); //fun_();//编译错误 } virtual void fun() {

2018-01-02 22:03:09 2226

转载 C++中垃圾回收机制中几种经典的垃圾回收算法

前言垃圾收集器是一种动态存储分配器,它自动释放程序不再需要的已分配的块,这些块也称为 垃圾 。在程序员看来,垃圾就是不再被引用的对象。自动回收垃圾的过程则称为 垃圾收集(garbage collection) 。在一个支持垃圾收集的语言中,程序显式地申请内存,但从不需要显式的释放它们。垃圾收集器会定期识别垃圾块,并将垃圾块放回空闲链表中。显然,C语言的malloc包不是一个带GC功能的分配器,程序员

2018-01-01 20:46:23 13342

转载 C++中构造函数和析构函数抛出异常问题

一. 抛出异常1.1 抛出异常(也称为抛弃异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为: throw 表达式;如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,且抛弃了该异常,则这个异常就可以被try语句块后的某个catch语句所捕获并处理,捕获和处理的条件是被抛弃的异常的类型与catch语句的异常类型相匹配。由于C+

2018-01-01 14:45:44 9488 1

sourceinsight 破解版

破解版sourceinsight,阅读源码的必备工具。

2017-08-23

Base64 编解码工具

Base64编码解码实用工具,提供相关接口,测试无误。

2016-12-20

QRCode二维码编码解码工具(C++)

完整的能够实现将文本文件编码为二维码图片或将二维码图片解码为文本的小工具。 基于zxing的解码库,libqrcode的编码库,开源可根据需求修改。 vs工程、c++编写,命令行下输入参数即可实现转化,移植性强。 支持中文,生成的结果文本中显示无误。

2016-12-07

stanley博士的家小游戏源码

stanley博士的家 1、2 swf格式,拖到浏览器就可以玩,解密类小游戏,有兴趣的可以试试。

2016-11-27

QR码标准文件2006

qr_code-iso-iec_18004_2006 想研究QR码的标准文件,能够详细了解其生成原理及特点

2016-11-19

android 2048 游戏源代码

经测试无bug,代码结构清晰,注释详细,同时用SQLite编写了回退按钮,界面简单,风格统一。欢迎批评指正。

2014-10-24

空空如也

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

TA关注的人

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