
C++
文章平均质量分 72
大宅小涛
这个作者很懒,什么都没留下…
展开
-
VS2010辅助工具
Visual Assist X 是个不错的工具,习惯了Eclipse类型IDE之后,用VS还是有点原创 2014-04-22 17:21:23 · 826 阅读 · 0 评论 -
简单的 C++ SOCKET编程 ---基于TCP/IP协议
server端: #include #include #pragma comment(lib,"ws2_32.lib")void main(){ //创建套接字 WORD myVersionRequest; WSADATA wsaData; myVersionRequest=MAKEWORD(1,1); int err; err=WSAStartup(myVersionR转载 2015-04-02 10:56:18 · 927 阅读 · 0 评论 -
C++ socket编程基础一(概念和常用API)
SOCKET一种进程通讯的方式,简言之就是调用这个网络库的一些API函数就能实现分布在不同主机的相关进程之间的数据交换. SOCKET几个定义概念: 一、是IP地址:IP Address我想很容易理解,就是依照TCP/IP协议分配给本地主机的网络地址,就向两个进程要通讯,任一进程要知道通讯对方的位置,位置如何来确定,就用对方的IP二、是端口号:用来标识本地通讯进程,方便原创 2015-04-02 15:19:30 · 4041 阅读 · 1 评论 -
C++ socket编程基础二(三种Socket:TCP,UDP,原始Socket)
一、基于TCP(面向连接)的的Socket 1、服务器端 创建套接字SOCKET socket( int af, //参数af指定通信发生的区域:AF_UNIX、AF_INET、AF_NS等,而DOS、 WINDOWS中仅支持AF_INET,它是网际网区域。因此,地址族与协议族相同。 int type, //参数type 描述要建立的套接字的类型。这里分三种:TCP原创 2015-04-02 15:46:30 · 5527 阅读 · 0 评论 -
C++ socket编程基础三(Windows异步套接字)
异步套接字:如果使用阻塞的套接字的话,在控制台下还好!如果是WIN32程序的话,那么就容易造成界面的假死,因为接收函数一直等待有消息进来之后才会被返回!所以此时界面一直属于假死的状态,如果你乱动的话,那么就容易真死了。解决办法如下:第一:使用多线程技术,多线程和SOCKET结合的话,可以使用单独一个线程来接收消息。这样即使接收函数阻塞了也不会影响其他线程,例如界面线程。但是如果使用多线程的原创 2015-04-03 10:48:44 · 6788 阅读 · 0 评论 -
C++ socket编程基础五(I/O - 同步,异步,阻塞,非阻塞 )
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不转载 2015-04-03 15:59:00 · 7638 阅读 · 1 评论 -
C++ socket编程基础四(I/O多路复用)
除了可以采用多进程和多线程方法实现并发服务器之外,还可以采用I/O多路复用技术。通过该技术,系统内核缓冲I/O数据,当某个I/O准备好后,系统通知应用程序该I/O可读或可写,这样应用程序可以马上完成相应的I/O操作,而不需要等待系统完成相应I/O操作,从而应用程序不必因等待I/O操作而阻塞。与多进程和多线程技术相比,I/O多路复用技术的最大优势是系统开销小,系统不必创建进程/线程,也不必维原创 2015-04-03 11:00:11 · 5198 阅读 · 0 评论 -
OpenGLES着色器和编程
【着色器和项目】 使用着色器渲染有两个基本的对象类型你需要去创建:着色器对象和项目对象。着色器对象是包含单个着色器的物体。源码输入着色器对象,着色器对象被编辑为目标格式(.obj文件)。完成后着色器对象能链接到项目对象上,一个项目可有多个着色器。opengles一个项目中有一个顶点着色器和一个片段着色器(不能多不能少),然后链接成可执行文件,最后能用来渲染。 为转载 2015-05-25 18:02:33 · 1171 阅读 · 0 评论 -
OpenGL模板缓冲区与模板测试
原文地址:http://www.blogjava.net/qileilove/archive/2014/01/23/409269.html帧缓冲区有许多缓冲区构成,这些缓冲区大致分为: 颜色缓冲区:用于绘图的缓冲区,它包含了颜色索引或者RGBA颜色数据。 深度缓冲区:存储每个像素的深度值,当启动深度测试时,片段像素深度值和深度缓冲区深度值进行比较,决定片段哪些像素点数据可转载 2015-07-10 16:01:31 · 403 阅读 · 0 评论 -
C++回顾之static与单例模式
单例模式是应用最多的一种设计模式,它要求每个类有且只能有一个实例对象,所以用C++设计一个单例模式的方法如下: 1 构造函数声明为私有; 这样就保证了不能随意构造一个对象 2 将拷贝构造函数与等号运算符声明为私有,并不提供他们的实现; 即禁止对象被拷贝。 3 在类中声明一个静态的全局访问接口; 4 声明一个转载 2015-09-15 14:23:37 · 1410 阅读 · 2 评论 -
std::function与std::bind 函数指针
function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类 的非静态成员函数时。std::function可以绑定到全局函数/类静态成员函数(类静态成员函数与全局函数没有区别),如果要绑定到类的非静态成员函数,则需要使用std::bind。[cpp] view plaincopy转载 2015-09-15 16:16:39 · 708 阅读 · 0 评论 -
vector中erase用法注意事项
以前就发现了vector中的erase方法有些诡异(^_^),稍不注意,就会出错。今天又一次遇到了,就索性总结一下,尤其是在循环体中用erase时,由于vector.begin() 和vector.end()是变化的,因此就引入了错误的可能性。erase的函数原型有两种形式:iterator erase(iterator position);iterator erase(i转载 2015-10-23 18:04:15 · 580 阅读 · 0 评论 -
std::list主要函数
list是一个双向链表,因此它的函数也都要从链表的角度来进行理解。 迭代器返回迭代器,和listbegin()end()返回反向迭代器,和listrbegin()rend() 返回第一个、最后一个元素front()back() 插入数据向链表头、尾插入元素push_fro转载 2015-10-23 19:35:34 · 1014 阅读 · 0 评论 -
C++对象模型-笔记三
构造函数,析构函数,复制构造函数1、何时被调用1、构造函数:a.对于栈上的对象:在编译器遇到这样的定义时Point p;会调用Point的默认构造函数(如果定义了,或者合成了)b.对于堆上的对象:new 之后如果成功申请空间,会调用默认构造函数c.对于静态数据区的对象:程序装载的时候会调用默认构造函数,并且对于没有初始化的数据会初始化为02、析构函数:a.对于栈上的对象原创 2015-03-13 16:31:53 · 495 阅读 · 0 评论 -
C++Primer第二章(变量和基本类型)笔记
int main(int argc, _TCHAR* argv[]){ //T t; //cout<<t.i<<endl; error:未初始化的变量是不能访问的 //int i; //cout<<i<<endl; error:函数体内的内置变量不会默认初始化 //extern int i = 1; error:只是声明不能初始化,在函数体外部则可以 //extern原创 2015-03-02 16:57:18 · 400 阅读 · 0 评论 -
二段构造->REF引用计数管理->PoolManager自动释放池
二段构造:是什么->先构造,再初始化,初始化成功则返回引用,失败则销毁为什么->cocos中结合引用计数,将内存交给poolManager管理避免使用try catch异常处理C++构造没有返回值,不能运行virsual函数为每一个类提供一个静态工厂方法来代替构造函数REF:是什么->cocos中使用引用计数内存管理的类的基类为什么->普通C++的new d原创 2015-01-29 15:23:25 · 825 阅读 · 0 评论 -
c++ vector各种函数介绍及其用法
构造函数语法:C++ Vectors可以使用以下任意一种参数方式构造:vector(); //无参数 - 构造一个空的vectorvector( size_type num, const TYPE &val ); //数量(num)和值(val) - 构造一个初始放入num个值为val的元素的Vectorvector( const vector &转载 2015-01-29 15:24:42 · 2043 阅读 · 0 评论 -
C++11 lambda表达式
原文地址:http://www.cnblogs.com/zhuyp1015/archive/2012/04/08/2438176.html总结:1、[=]值传递访问x,y所以中间不修改x,y的值int x = 10;int y = 3;int z;z = [=]()mutable throw() -> int{int n = x + y;x = y;y = n;转载 2015-02-03 15:20:52 · 395 阅读 · 0 评论 -
32位机与64位机数据类型
32位下和64位下数据大小的不同 最近在Linux下移植程序时遇到了一个问题,将32位机下的程序移植到64位上,在用long型读入文件时发生了错误,读出来的是0,后经测试原来是在32位机下和64机下某些数据类型表示的不一样。测试程序如下: #include in转载 2015-02-06 16:25:41 · 662 阅读 · 0 评论 -
C++对象模型
何为C++对象模型?C++对象模型可以概括为以下2部分:1. 语言中直接支持面向对象程序设计的部分2. 对于各种支持的底层实现机制语言中直接支持面向对象程序设计的部分,如构造函数、析构函数、虚函数、继承(单继承、多继承、虚继承)、多态等等,这也是组里其他同学之前分享过的内容。第一部分这里我简单过一下,重点在底层实现机制。在c语言中,“数据”和“处转载 2015-02-06 17:53:51 · 408 阅读 · 0 评论 -
C++对象模型-笔记一
关于对象:C-Struct,一个数据的封装体,不包含数据操作,不包含读取权限C-Class,简单的ADT模型,基于继承的对象模型,基于模版的对象模型封装后的布局成本:C+=在布局以及存取时间上的主要额外负担是由virtual引起的(virtual function机制和virtual base class)继承..C++对象模式对象成员数据的分类(data:st原创 2015-02-08 22:36:15 · 468 阅读 · 0 评论 -
程序员的自我修养-笔记一
1、以一个简单的问题开始,HelloWorld运行的过程:包括编译器对程序的处理生成可执行文件是怎么组织的语言库操作系统负责的事情程序运行时候的内存分配2、了解计算机:硬件和软件硬件核心为CPU,内存和IO 硬件结构的发展:早期的单总线模式,每个设备对应一个对应的IO控制器(CPU与其他设备的速度差异大,需要中间层,CPU频率和内存还差不多)系统总线模式,频原创 2015-02-14 16:57:23 · 644 阅读 · 0 评论 -
VC内存对齐准则
本文所有内容在建立在一个前提下:使用VC编译器。着重点在于:VC的内存对齐准则;同样的数据, 不同的排列有不同的大小,另外在有虚函数或虚拟继承情况下又有如何影响?内存对齐?!What?Why?对于一台32位的机器来说如何才能发挥它的最佳存取效率呢?当然是每次都读4字节(32bit), 这样才可以让它的bus处于最高效率。实际上它也是这么做的,即使你只需要一个字节,它也是 读一个机器转载 2015-02-28 17:02:19 · 1284 阅读 · 0 评论 -
struct/class/union内存对齐原则
struct/class以及union内存对齐四个原则:1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如int在32位机为4字节, 则要从4的整数倍地址开始存储),基本类型不包括struct/转载 2015-03-01 22:19:59 · 415 阅读 · 0 评论 -
C++中的函数指针和函数对象总结
篇一、函数指针函数指针:是指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址。函数指针的用途是很大的,主要有两个作用:用作调用函数和做函数的参数。函数指针的声明方法:数据类型标志符 (指针变量名) (形参列表);一般函数的声明为: int func ( int x );而一个函数指针的声明方法为:int (*转载 2015-03-02 16:53:42 · 299 阅读 · 0 评论 -
C语言register关键字
register:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率。注意是尽可能,不是绝对。你想想,一个CPU 的寄存器也就那么几个或几十个,你要是定义了很多很多register 变量,它累死也可能不能全部把这些变量放入寄存器吧,轮也可能轮不到你。一、皇帝身边的小太监----寄存器 不知道什么是寄存器?那见过太监没有?没有?转载 2015-03-02 10:54:40 · 535 阅读 · 0 评论 -
C++对象模型-笔记二
书中解决的疑问总结:问题1:各种类的占用空间大小问题2:类的各种成员存放的形式(P9)问题3:加了继承之后的类成员存放方式(博文)问题4:对象模型为我们悄悄的添加了什么其他的代码(P13)问题5:三种编程模型的区别(程序模型,ADT模型,OO模型(运行时多态)):封装-》继承》多态(P24)问题6:指针的大小(32位则为4字节原创 2015-02-26 17:17:52 · 436 阅读 · 0 评论 -
C++中rand()函数的用法
一、C++中不能使用random()函数 random函数不是ANSI C标准,不能在gcc,vc等编译器下编译通过。但在C语言中int random(num)可以这样使用,它返回的是0至num-1的一个随机数。 可改用C++下的rand函数来实现。 1、C++标准函数库提供一随机数生成器rand,返回0-RAND_MAX之间均匀分布的伪随机整数。 RAND_MAX转载 2015-10-23 19:34:38 · 3267 阅读 · 0 评论