自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(132)
  • 收藏
  • 关注

转载 腾讯后台开发三面面试题

三面是总监面,本人不幸被拒了,这次面试没有问项目相关的问题,项目的问题是放在二面问的。三面给人的 感觉要求很严,有些问题看似基础,但问得很细,稍有闪失就被pass,绝不能有模棱两可那种回答,以下是面试题:1)tcp三次握手的过程,accept发生在三次握手哪个阶段?2)Tcp流, udp的数据报,之间有什么区别,为什么TCP要叫做数据流?3)const的含义及实

2015-04-16 19:28:23 2244

原创 位图法浅析

1、原理位图是通过将数组下标与应用中的一些值关联映射,数组中该下标所指定的位置上的元素可以用来标识应用中值的情况(是否存在或者数目 或者计数等),位图数组中每个元素在内存中占用1位,所以可以节省存储空间。位图是一种非常简洁快速的数据结构,它能同时使存储空间和速度最优化。如可用一个10位长的字符串来表示一个所有元素都小于10的简单的非负整数集合,例如,可以用如下字符串表示集合{1,2,4,5

2015-04-14 21:34:40 6606

原创 位图法

一、定义位图法就是bitmap的缩写。所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。在STL中有一个bitset容器,引用bitset介绍:A bitset is a special container class that is designed to store bits (elements with

2015-04-14 21:01:55 343

原创 位图法应用

位图法是《编程珠玑》第一章中出现的磁盘排序算法。 题目:一个最多包含n个正整数的文件,每个数都小于n,其中n=10^7,且所有正整数都不重复。求如何将这n个正整数升序排列。约束:最多有1MB的内存空间可用,有充足的磁盘存储空间。 分析:这个题目的最大亮点是只有1MB的内存空间,我们可以通过计算得出,内存只有1MB可以储存的int(4byte)有10^3*10

2015-04-14 20:29:18 350

原创 C++虚函数表

C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过

2015-04-12 21:52:36 313

原创 辨别系统是大端or小端字节序---通过联合体

字节序有两种表示方法:大端字节序(big ending),小端字节序(little  ending)。网络字节序:采用的是大端字节序。主机字节序:不同的CPU采用的方法不一样,可以通过代码来查看自己主机的字节序。大端字节序:高位字节排放在内存低地址端,低位字节排放在内存的高地址端。小端字节序:低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。看一个

2015-04-12 21:14:13 1385

原创 寄存器变量

变量一般情况下都存在于内存中。如果程序需要使用某个变量,CPU的控制器将从内存中取得变量值后会将其暂存在寄存器中。寄存器就是CPU自己的"小内存",它的特点是"容量小、速度快"。正常情况下,编程语言本身无法直接操作寄存器。但某些时候,一些变量可能会被频繁地使用,这时,频繁地对内存进行存取操作就会耗费较多的时间;如果我们能够有效地利用CPU的寄存器,就会显著提升程序的运行效率。     C语言中

2015-04-12 20:38:22 520

原创 exit()和_exit()的区别

在linux的标准库函数中,有一套称作高级I/O的函数,我们熟知的printf 、fopen 、fread 、fwrite都在此列,他们也被称作缓冲I/O。其特征是对应每一个打开的文件,都存在一个缓冲区, 在内存中都有一片缓冲区,每次读文件会多读若干条记录,这样下次读文件时就可以直接从内存的缓存中取出,每次写文件时也仅仅是写入到内存的缓冲区,等待满足一定的条件(达到一定的数量,或者遇到特定字符,如

2015-04-12 20:24:15 259

原创 Linux 信号signal处理机制

信号是Linux编程中非常重要的部分,本文将详细介绍信号机制的基本概念、Linux对信号机制的大致实现方法、如何使用信号,以及有关信号的几个系统调用。 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断。从它的命名可以看出,它的实质和使用很象中断。所以,信号可以说是进程控制的一部分。 一、信号的基本概念 本节先介绍信号的一些基本概念,然后给出一

2015-04-12 17:15:54 368

原创 多进程与多线程的深度比较

关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”。这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有那么简单了,选的不好,会让你深受其害。经常在网络上看到有XDJM问“多进程好还是多线程好?”、"Linux下用多进程还是多线程?"等等期望一劳永逸的问题,只能说:没有最好,只有更好,根据实际情况来判断,哪个更加合适就是哪个

2015-04-12 15:37:24 856

原创 多进程和多线程的优缺点

在Linux下编程多用多进程编程少用多线程编程。         IBM有个家伙做了个测试,发现切换线程context的时候,windows比linux快一倍多。进出最快的锁(windows2k的 critical section和linux的pthread_mutex),windows比linux的要快五倍左右。当然这并不是说linux不好,而且在经过实际编程之后,综合来看我觉得linu

2015-04-12 15:17:04 600

原创 多进程和多线程的比较

1、首先要明确进程和线程的含义:进程(Process)是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位。与程序相比,程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体。进程是程序在某个数据集上的执行,是一个动态实体。它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任务而被撤消,反映了一个程序在一定的数据集

2015-04-12 15:09:58 596

原创 Linux内存点滴:用户进程内存空间

经常使用top命令了解进程信息,其中包括内存方面的信息。命令top帮助文档是这么解释各个字段的。VIRT , Virtual Image (kb)RES, Resident size (kb)SHR, Shared Mem size (kb)%MEM, Memory usage(kb)SWAP, Swapped size (kb)CODE, Code size (kb)

2015-04-12 14:51:28 373

原创 Linux内存管理

Linux内存管理摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解内核内存管理与用户内存管理之间的关系,希望大家最终能驾驭Linux内存管理。前言内存管理一向是所有操作系统书籍不惜笔墨

2015-04-12 14:33:27 456

转载 linux 进程内存解析

之前我所了解的linux下进程的地址空间的布局的知识,是从APUE第2版的P430得来的,之后上网查了一些资料,大概弄了明白。一个linux进程分为几个部分(从一个进程的地址空间的低地址向高地址增长):1.text段,就是存放代码,可读可执行不可写,也称为正文段,代码段。2.data段,存放已初始化的全局变量和已初始化的static变量(不管是局部static变量还是全局static变量)

2015-04-12 14:31:37 347

转载 【cocos2d-x 3.0之四】CC_CALLBACK原理及应用

c++ 11 基础 :    std::function        类模版 std::function是一种通用、多态的函数封装。std::function的实例可以对任何可以调用的目标进行存储、复制、和调用操作,这些目标包括函数、lambda表达式、绑定表达式、以及其它函数对象等。用法示例:①保存自由函数?12

2015-03-15 21:00:34 455

转载 总结Cocos2d-x 3.x版本的一些变化

【Cocos2d-x v3.0 亮点】使用 C++(C++11) 的特性取代了 Objective-C 的特性优化了 Labels优化了渲染器(比 v2.2 更快)新的事件分发机制物理引擎集成新的 UI 对象模板容器    * 使用 cocos2d::Map    * 使用 cocos2d:

2015-03-15 20:22:44 487

转载 Cocos2d-x 3.x -- 总结数学类Vec2/Size/Rect

数学类Vec2、Size、Rect,是Cocos2d-x中比较常用的类。比如设置图片位置,设置图片大小,两图片的碰撞检测等等。比起2.x版本,在3.2版本中本质上其实没有太大的变化,主要的变化就是将全局宏定义相关的操作封装到各自的类中而已。比如:Vec2的向量运算宏定义ccp***(),现在都已经封装到Vec2类里面去了。【Vec2】Vec2原名Point,它既

2015-03-15 20:20:02 1202

原创 【C++11】新特性——常量表达式constexpr

C++语言一直具有常量表达式的概念。这些诸如3+4之类的表达式总是产生相同的结果且不具备副作用。常量表达式给编译器带来了优化的可能,而编译器也经常在编译期执行此类表达式并将结果存放在程序中。此外,C++语言规范中有一些地方需要使用常量表达式。定义数组需要常量表达式,而枚举值也必须是常量表达式。然而,每当碰到函数调用或对象构造,常量表达式便不再有效。所以简单如下例便不合法:int G

2015-03-15 19:40:29 2777

原创 【C++11】新特性——decltype

在C++中,decltype作为操作符,用于查询表达式的数据类型。decltype在C++11标准制定时引入,主要是为泛型编程而设计,以解决泛型编程中,由于有些类型由模板参数决定,而难以(甚至不可能)表示之的问题。泛型编程在整个1990年代越发流行,对实现类型推导机制的需求也应运而生。为此,许多编译器厂商都基于程序语言现有的功能,自行实现了这类操作符,其实现如typeof,以及一些功能有限

2015-03-15 19:33:51 481

转载 【C++11】新特性——weak_ptr

weak_ptr弱指针(weak pointer)经常被解释为用来打破使用shared_ptr管理的数据结构中循环(?)。但是我认为,将weak_ptr看成是指向具有下列特征的对象的指针更好一些。只有当对象存在的时候,你才需要对其进行访问并且它可能被其他人删除释放并且在最后一次使用之后调用其析构函数(通常用于释放那些不具名的内存(anon-memory)资源(译注:weak

2015-03-15 19:28:53 542

转载 【C++11】新特性——unique_ptr

unique_ptrunique_ptr(定义在中)提供了一种严格的语义上的所有权o 拥有它所指向的对象o 无法进行复制构造,也无法进行复制赋值操作(译注:也就是对其无法进行复制,我们无法得到指向同一个对象的两个unique_ptr),但是可以进行移动构造和移动赋值操作o 保存指向某个对象的指针,当它本身被删除释放的时候(例如,离开某个作用域),会使用给定的删除器(delete

2015-03-15 19:26:06 400

转载 【C++11】新特性——共享资源的智能指针shared_ptr

shared_ptr被用来表示共享的拥有权。也就是说,当两段代码都需要访问一些数据,而它们又都没有独占该数据的所有权(从某种意义上来说就是该段代码负责销毁该对象)。这时我们就需要shared_ptr。shared_ptr是一种计数指针。当引用计数变为0时,shared_ptr所指向的对象就会被删除。下面我们用一段代码来说明这点。 void test() { sha

2015-03-15 19:21:20 407

转载 【C++11】新特性——function、bind以及lamda表达式

本文主要内容是C++0x中新增的function对象、bind机制和lambda表达式。之所以把这三块放在一起讲,是因为这三块之间有着非常密切的关系,通过对比学习,加深对这部分内容的理解。在开始之间,首先要讲一个概念,closure(闭包),这个概念是理解lambda的基础。下面我们来看看wikipedia上对于计算机领域的closure的定义:A closure (als

2015-03-15 19:13:21 415

转载 【C++11】新特性——std::function

用过C#的人,一般都知道委托和事件。如果没有用过C#,我在这里简单解释一下委托,如果用过了,下面可以skip。委托是一个方法声明,我们知道,在C语言中,可以通过函数指针表示一个地址的CALL方法,委托在C#中也差不多是干这样的工作。但是委托有一些不同,主要的地方就是,在C++中,函数指针并不是“面向对象”的,比如,我们有一个类CTest,类中有一个成员方法foo,此时如果我们要通过

2015-03-15 19:11:52 3318

转载 【C++11】新特性——std::function 和 std::bind

标准库函数bind()和function()定义于头文件中(该头文件还包括许多其他函数对象),用于处理函数及函数参数。bind()接受一个函数(或者函数对象,或者任何你可以通过”(…)”符号调用的事物),生成一个其有某一个或多个函数参数被“绑定”或重新组织的函数对象。(译注:顾名思义,bind()函数的意义就像它的函数名一样,是用来绑定函数调用的某些参数的。)例如: int f(

2015-03-15 18:48:04 338

转载 Sprite 3D用法和相关特性详解

转载自:http://cn.cocos2d-x.org/tutorial/show?id=1188一直以来Cocos2d-x游戏引擎留给大家的印象是一款纯2D游戏引擎,它在2D手机游戏开发方面有很出色的表现,不过现在我要告诉大家,今天的Cocos2d-x已经不再是一款只能开发2D游戏的游戏引擎了,从v3.1版本开始,Cocos2d-x已经支持obj格式的3D静态模型的显示,在v3.2 版本

2015-03-14 22:36:50 451

原创 Windows7上搭建cocos2d-x 3.4开发环境

在windows7上搭建COCOS2D-X开发环境并不难, 但是由于框架更新过快,很多用户都有困难。我希望你们认为这个教程有用。建议:为了避免安全相关的问题,请以管理员权限执行所有的操作,当运行命令的时候,也要确保之前是以管理员权限打开了命令行窗口.工具准备搭建开发环境需要安装工具包括Visual Studiopython ———(本教程以python2.7.3版本

2015-03-14 21:02:38 1211

转载 GitHub for Windows使用图文教程

Git已经变得非常流行,连Codeplex现在也已经主推Git。Github上更是充斥着各种高质量的开源项目,比如ruby on rails,cocos2d等等。对于习惯Windows图形界面的程序员来讲,Github的使用是需要点时间和耐心的,然而最近Github发布了Github for Windows 则大大降低了学习成本和使用难度,他甚至比SVN都简单,好吧,你不信,我们来一步一步

2015-03-07 22:41:45 339

转载 GitHub是什么?GitHub如何使用?

GitHub有个未知安全检测,当访问比较频繁的时候,会直接返回403错误。作者就加了一条规则:如果返回的是403,就每5秒重试一次,并且是永久重试。结果GitHub认为用户访问更频繁了,于是一直返回403,最后成了死循环,再加上作者显然低估了抢票插件的用户数,就正好构成了DDOS(Distributed Denial of Service,分布式拒绝服务)的定义。在github之前,S

2015-03-07 22:38:07 814

转载 完成端口(Completion Port)详解

完成端口(Completion Port)详解                                                            ----- By PiggyXP(小猪)前 言        本系列里完成端口的代码在两年前就已经写好了,但是由于许久没有写东西了,不知该如何提笔,所以这篇文档总是在酝酿之中……酝酿了两年之后,

2015-03-07 21:34:29 434

转载 cocos2d-x之CREATE_FUNC宏

阅读cocos2d-x demo的代码,我们会看到有些头文件中使用CREATE_FUNC这个宏,那么它是做什么的呢?在cocos2d-x 又是起什么作用呢?下面我们就一起来看看CREATE_FUNC宏的源代码:[cpp] view plaincopy/**  * define a create function for a specifi

2015-03-05 19:52:28 373

转载 【cocos2d-x 3.0之三】新触摸机制的前奏——Lambda

在介绍3.0新的触摸机制之前,我们有必要先介绍一下3.0新引进的C++ 11的Lambda表达式。1. Lambda表达式首先,什么是Lambda表达式呢?Lambda表达式是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的Lambda抽象,是一个匿名函数,即没有函数名的函数。相信有数学背景的孩子,现在是不是感觉到Lambda这个读音很耳熟呢?嘿嘿

2015-03-05 19:45:20 317

转载 【cocos2d-x 3.0之二】事件回调函数的变化

从3.0开始,事件回调函数由原来的schedule_selector和menu_selector等变成CC_CALLBACK_0、CC_CALLBACK_1、CC_CALLBACK_2、CC_CALLBACK_3。下面先来介绍几个1. CC_CALLBACK_1[cpp] view plaincopyv2.2  MenuIte

2015-03-05 19:44:08 521

转载 【cocos2d-x 3.0之一】一些小变化

用了cocos2d-x 3.0版本,发现有一些小变化,用此篇来记录一下小变化,不断更新中。1. 从此不再见到以CC开头的类,因为CC被去掉了,并且定义的时候用auto:[cpp] view plaincopyv2.2            v3.0  CCDirector      Director          CCLaye

2015-03-05 19:42:12 318

转载 【C++11】新特性——引入nullptr

1. 引入nullptr的原因引入nullptr的原因,这个要从NULL说起。对于C和C++程序员来说,一定不会对NULL感到陌生。但是C和C++中的NULL却不等价。NULL表示指针不指向任何对象,但是问题在于,NULL不是关键字,而只是一个宏定义(macro)。1.1 NULL在C中的定义在C中,习惯将NULL定义为void*指针值0:[cpp] view

2015-03-05 19:35:10 301

转载 【C++11】新特性——auto的使用

C++11中引入的auto主要有两种用途:自动类型推断和返回值占位。auto在C++98中的标识临时变量的语义,由于使用极少且多余,在C++11中已被删除。前后两个标准的auto,完全是两个概念。1. 自动类型推断    auto自动类型推断,用于从初始化表达式中推断出变量的数据类型。通过auto的自动类型推断,可以大大简化我们的编程工作。下面是一些使用auto的例子。

2015-03-05 19:32:46 336

转载 C++之STL

STL就是Standard Template Library,标准模板库。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有list, vector,set,map等,STL也是算法和其它一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。是C++标准库的一个重要组成部分,它由Stepanov and Lee等人最

2015-03-05 19:21:38 316

转载 cocos2d-x 2.2.3 创建项目的方法

coco2d-x 2.2.3 创建工程不再有专门的批处理文件,而是改用了python脚本,这样修改的其中一个好处是:可以方便的一次性创建各个平台下的工程,不需要像以前一样分平台创建。但是使用起来感觉没有以前方便了,至少我刚开始用的时候是这么感觉的,于是网上查了下,参考了点资料,然后自己写了个批处理文件,感觉这样就方便多了。放在这里跟大家分享下。准备工作首先,你得下载pyth

2015-03-04 20:13:01 253

原创 cocos2d-x的实现类

下面,我们首先逐一介绍cocos2d-x对应上述基本概念的对象,以及他们之间的程序关联。CCDirector(导演类)CCDirector对象的作用类似于Windows编程中的主窗口对象(不同之处在于该对象并不可见),它负责创建、管理应用程序/游戏的主窗口,在特定的条件下显示某个场景。针对CCDirector的调用代码(下面这段代码是主程序启动时的标准步骤,在AppDelegate的a

2015-03-03 22:11:56 398

空空如也

空空如也

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

TA关注的人

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