自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

寒风的技术博客

记录开发,分享技术

  • 博客(395)
  • 资源 (15)
  • 收藏
  • 关注

原创 python常用随机函数及带权重随机实例

# -*- coding: utf-8 -*-import randoma = 1b = 10step = 3seq = [-1, -2, -3, -4, -5, -6, -7, -8, -9, 0]k = 2# 0 <= n < 1.0print 'random', random.random() # b <= n(float) <= aprint 'uniform',

2016-01-12 15:36:07 7026

原创 自己动手写cocos2dx游戏引擎(八)——Node节点

UI都是树状形式组织。每一个小的控件就是一个小的节点。同时,为了表示父子节点的关系需要保存一个父节点。最简单的形式是这样的: #include &lt;vector&gt;class Node { Node *_parent;// 父节点指针 std::vector&lt;Node*&gt; _children;// 子节点指针};因为子节点的个数是不确定的,因...

2015-12-22 13:24:23 1346

转载 编程的智慧

编程是一种创造性的工作,是一门艺术。精通任何一门艺术,都需要很多的练习和领悟,所以这里提出的“智慧”,并不是号称一天瘦十斤的减肥药,它并不能代替你自己的勤奋。然而由于软件行业喜欢标新立异,喜欢把简单的事情搞复杂,我希望这些文字能给迷惑中的人们指出一些正确的方向,让他们少走一些弯路,基本做到一分耕耘一分收获。反复推敲代码既然“天才是百分之一的灵感,百分之九十九的汗水”,那我先来谈谈这

2015-12-22 08:40:41 850

原创 python内存管理

一 与C语言的对比先来看看C语言的一段函数:#include int main() { int a = 1; int b = 1; int c = b; printf("&a = %p\n", &a); printf("&b = %p\n", &b); printf("&c = %p\n", &c); return 0;}

2015-12-18 15:58:02 933

原创 23种设计模式C++实例之享元模式

为了避免产生过多的临时对象,创建一个对象,需要需要不同对象的时候设置不同的参数。#include #include using namespace std;/* * 享元模式 * 享元:共享元素 * 以共享的方式来避免大量拥有相同内容对象的开销 * 理解: * 对于经常使用且仅参数不同的对象,不是每次都重新创建一个不同的对象, * 而是创建一个对象之后,每次使用时

2015-12-16 11:16:23 1129

原创 23种设计模式C++实例之组合模式

为不同继承层次和组合层次的类,提供统一的接口。#include #include /* * 组合模式 * 让单个对象和组合对象具有一致的接口 * */using namespace std;class IFile { public: virtual ~IFile() {} virtual void display() = 0; virtual int

2015-12-16 11:12:29 1499

原创 23种设计模式C++实例之桥接模式

桥接模式是为了解决类与类之间多对多的关系,使类与类直接的组合更加灵活。#include using namespace std;/* * 桥接模式 * 解决类与类之间多对多的关系 * */class Engine { public: virtual ~Engine() {} virtual void install() = 0;};class Engi

2015-12-16 11:03:08 1239

原创 23种设计模式C++实例之装饰模式

装饰模式就是在不改变原有的类的情况下,给它添加功能。#include using namespace std;/* * 装饰模式:在不改变原类和使用继承的情况下,对类进行功能的增强 * 对类a功能的增强 * */class Car { public: virtual ~Car() {} virtual void go() = 0;};class Run

2015-12-16 10:58:40 1129

原创 23种设计模式C++实例之代理模式

代理的目的是一般是为了防止直接访问某一个类,提供一种类似授权的机制。最典型的类中set和get方法实际上就是一种代理。#include using namespace std;/* * 代理模式:为其他对象提供一种代理,并以控制对这个对象的访问 * a类中b类,a类和b类中都实现协议类protocol * */class Shop{ public: virt

2015-12-16 10:54:08 1143

原创 23种设计模式C++实例之适配器模式

适配器模式目的为了向客户提供他们所需要的接口,在适配器内部再调用我们自己已经实现的接口。#include using namespace std;/* * 电压适配器 * 将220v适配到18v * */class Cur18v { public: virtual void useCur18v() = 0;};class Cur220

2015-12-16 10:48:32 1129

原创 23种设计模式C++实例之外观模式

为各个不同的类提供统一的接口,然后通过外观模式将其组合起来,对外提供一个统一的接口。#include using namespace std;/* * 外观模式:将子系统中的一组接口提供一个一致的界面 * 外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 * */class SubsysA { public: void dothing() {

2015-12-16 10:25:19 1107

原创 自己动手写cocos2dx游戏引擎(七)——自动释放池

上一节说到的Ref的引用计数时,没有说自动释放。自动释放功能相对来说比较复杂。首先有一个自动释放池。 #ifndef __AUTORELEASEPOOL_H__#define __AUTORELEASEPOOL_H__#include &lt;string&gt;#include &lt;vector&gt;#include "Ref.h"class Autorel...

2015-12-15 22:07:51 1089

原创 自己动手写cocos2dx游戏引擎(六)——引用计数机制

这一节开始看看cocos2dx的内存管理。cocos2dx的内存管理使用的是引用计数机制,当对象创建的时候引用计数为1,retian一次引用计数+1,release一次-1,为了是delete。// Ref.h#ifndef __REF_H__#define __REF_H__class Ref { public: void retain();

2015-12-15 20:27:53 1300

原创 自己动手写cocos2dx游戏引擎(五)——渲染对象

上一节中,获取到了OpenGL的视图窗口,但是还没有办法渲染,现在我们把渲染对象加进来。// Renderer.h #ifndef __RENDERER_H__#define __RENDERER_H__#include &lt;iostream&gt;class Renderer { public: void render();};void ...

2015-12-15 19:04:15 837

原创 自己动手写cocos2dx游戏引擎(四)——窗体GLView

上一节中我们获取到了Director对象。通过这个对象我们可以获取到一个OpenGL的一个视图。在定义GLview之前,我们需要定义一个常用几何头文件。// Geometry.h #ifndef __GEMMETRY_H__#define __GEMMETRY_H__class Size { public: Size() {} S...

2015-12-14 23:06:05 2386

原创 自己动手写cocos2dx游戏引擎(三)——Director对象

上一节中,最后调用到了APPDelegate中的applicationDidFinishLaunching方法,在applicationDidFinishLaunching方法中,获取到了Director的一个实例。Director返回的是其子类DisplayLinkDirector的对象,其实现如下: class Director { public: v...

2015-12-14 21:50:34 1387

原创 自己动手写cocos2dx游戏引擎(二)——applicationDidFinishLaunching

上一节中,我们最终调用了Application的run方法。在run方法中,调用了applicationDidFinishLaunching方法,这个方法在哪里呢?可以看到在Application中并没有实现这个方法,这个方法来自Application的基类ApplicationProtocol。ApplicationProtocol中,将applicationDidFinishLau...

2015-12-14 21:07:39 3046

原创 自己动手写cocos2dx游戏引擎(一)——引擎入口

在网易的第二个项目已经上线快两个月了,已经在着手做第三个项目了。第一个项目是原生的app,使用的是cocos2dx2.2.4做的;第二个项目是一个html5游戏,在预研的时间同时用了cocos2dx和egret在做,最终选择了egret。第三个项目计划原生app和html5并重,鉴于egret的原生app才能跑十多帧,又换回了cocos2dx。之前一直在用cocos,现在打算重新研...

2015-12-14 20:31:10 3289

原创 23种设计模式C++实例之单例模式

单例模式就是让一个类智能创建一个对象。单例模式分为两种:懒汉式和饿汉式。// 懒汉式class Singleton { private: Singleton() { cout << "Singleton()" << endl; } public: ~Singleton() { cout << "~Singleton()" << endl; }

2015-12-11 19:44:46 1277

原创 23种设计模式C++实例之原型模式

原型模式就是让对象拥有自我拷贝的功能,方便备份对象数据或者创建对象时设置过多的参数。#include using namespace std;/* * 原型模式:让对象拥有自我复制的功能 * 注意深拷贝和浅拷贝 * */class Programmer{ public: virtual ~Programmer() {} virtual Programmer*

2015-12-11 19:34:37 3585

原创 23种设计模式C++实例之创建者模式

把建造不同类型房子的过程与客户端调用分类#include using namespace std;/* * 建造者模式 * 对象的创建和对象的表示分离 * */class House { public: void setFloor(string floor) { m_floor = floor; } void setWall(string wall

2015-12-11 19:32:13 1268

原创 23种设计模式C++实例之抽象工厂模式

抽象工厂模式在每一个系列的子系列中符合开闭原则,系列不符合。#include using namespace std;class Fruit { public: virtual ~Fruit() {} virtual void sayName() = 0;};class LocalApple: public Fruit { public: virtual void

2015-12-11 19:26:04 1339

原创 23种设计模式C++实例之工厂方法模式

工厂模式有三种:简单工厂模式,工厂方法模式,抽象工厂模式,其中简单工厂模式属于23种设计模式,实例如下:#include using namespace std;/* * 不符合开闭原则,不是23种标准的设计模式 * */class Fruit { public: virtual ~Fruit() {} virtual void sayName() = 0;};

2015-12-11 19:23:40 1871

原创 23种设计模式C++实例之概述和设计原则

一 分类1 创建型工厂方法模式(Factory Method)抽象工厂模式(Abstract Factory)创建者模式(Builder)原型模式(Prototype)单例模式(Singleton)2 结构型外观模式(Facade)适配器模式(Adapter)代理模式(Proxy)装饰模式(Decorator)桥接模式(Bridge)组合模式

2015-12-11 19:19:05 3467 1

原创 一步一步学写makefile

在做服务器开发的时候,需要用到gcc编译各种文件,如果文件多了,要做大量的重复工作。这时候你需要make工具,写上一个makefile文件,就能轻松解决问题。一 规则makefile的编写规则如下:target:components    commandtarget目标名components 依赖的文件或者目标command 编译命令,前面必须有1个tab键

2015-12-10 14:28:09 942

原创 VIM多行注释/反注释

注:c/c++注释/反注释为例方法一:v模式多行编辑注释1 Ctrl+v进入v模式2 上下方向键选中要注释的行3 shift+i(即大写的I)行首插入4 输入注释符//5 按esc返回反注释1 Ctrl+v进入v模式2 上下方向键选中要注释的行,左右键选择要删除的字符//3 按d删除方法二:查找替换注释命令格式:起

2015-12-07 07:57:33 15544 2

原创 程序员的VIM配置

后端神器:VIM让手速跟上思维!" $Author: xulidong $" $Mail: xu.lidong@qq.com $" $Date: 2015-12-04 $" $URL: http://blog.csdn.net/xufeng0991/article/details/50178493 $" 特殊键" Esc" Ctrl+a" 上方向键"

2015-12-04 18:57:11 923

原创 C++类的实现方式

假设有一个简单类如下:class Test{private: int m;public: Test(int i) { m = i; } int getM(){ return m; } static void print() { cout << "static func" << endl; }};调用如下:Test t(1);a.getM();Test

2015-11-25 00:37:05 1192

原创 标准输入流stdin

FILE结构体:struct _iobuf { char *_ptr; int _cnt; char *_base; int _flag; int _file; int _charbuf; int _bufsiz; char *_tmpfname;};typedef struct _iobuf FILE

2015-11-16 20:42:29 1744

原创 你不知道的scanf和fscanf

#include #include int main(){ int num = 0; //scanf("%d", &num);// 输入:4 scanf("num = %d", &num);// 输入:num = 4,需要跟前面的字符串匹配(可以有多余的空格),否则无法读取 printf("num = %d\n", num);// 输出:num = 4

2015-11-16 20:15:51 772

原创 类型对指针运算的影响

同一个指针值,不同类型运算的结果不同。

2015-11-11 19:05:34 744

原创 C语言五个常用的调试宏

__FILE__: 所在文件名__FUNCTION__:所在函数名__LINE__:所在行数__DATE__:执行日期__TIME__:执行时间#include int main() { printf("%s\n", __FILE__); printf("%s\n", __FUNCTION__); printf("%d\n", __LINE

2015-11-06 14:15:13 2711

原创 Nodejs中常用加密方式使用实例

/* * Crypto库提供各种加密算法 */var crypto = require('crypto');var content = 'password';// 需要被加密的内容/* * 函数说明 * var hash = crypto.createHash(algorithm); // algorithm: 'md5', 'sha1', 'sha256', 'sha512'

2015-10-10 15:37:38 2843

原创 兼容C++的C头文件书写方式

最近在阅读libevent的源码,学到了不少东西,兼容C++的C头文件书写方式就是其中之一。一 书写方式下面是event.h文件的源码:#ifndef _EVENT_H_#define _EVENT_H_#ifdef __cplusplusextern "C" {#endif#include #ifdef _EVENT_HAVE_SYS_TYPES_H#inclu

2015-09-25 19:28:06 3867

原创 C++11之lambda表达式

C++11中引入了lambda表达式,允许使用匿名函数。其语法如下:1 函数对象参数,必须,标志lambda表达式的开始,有三种参数可选:a 空,不能使用lambda表达式所在作用域中的变量。b =,可以使用lambda表达式所在作用域中的变量,值传递。c &,使用lambda表达式所在作用域中的变量,引用传递。2 函数参数列表,非必需,无参数时可省略,la

2015-09-17 00:42:00 836

原创 直接插入排序的两种实现方式

定义:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。时间复杂度:O(n^2)#include void printArray(int arr[], int n) { int i = 0; for (i = 0; i < n; ++i) { printf("%d ", arr[i]); } print

2015-09-03 16:48:26 1063

原创 大型手游登录流程详解

游戏登录过程在玩家的眼里是非常简单的,只需要点一下登陆按钮即可;实际上这个过程没有想象的那么简单,特别是在手游中,一般会加入第三方渠道之后;下面就把这个登录的整个过程写下来。一 登录渠道(客户端)流程:1 客户端输入渠道账号user_name和密码password;2 登录,登录SDK成功之后,会返回一个token;3 保存token;传入:app_id、a

2015-08-31 19:36:43 7867 1

原创 冒泡排序及两种优化方式

定义:每一趟依次比较相邻的两个数,将小数放在前面,大数放在后面,直到一趟只剩下一个元素。时间复杂度:O(n^2)。冒泡排序是最常用的小型数据排序方式,下面是用C语言实现的,及其两种优化方式。第一种优化方式是设置一个标记位来标记是否发生了交换,如果没有发生交换就提前结束;第二种优化方式是记录最后发生交换的位置,作为下一趟比较结束的位置。#include

2015-08-21 22:51:01 14224 2

原创 《数据结构与算法分析》引论:选择问题实现

在《数据结构与算法分析——C语言描述》的引论中有提到一个问题:设有一组N个数而要确定其中第k个最大者。被称为选择问题(selection problem)。后面有提到两种算法,下面是我根据描述,写的代码:/* * 来源:《数据结构与算法分析》引论 * 题目:选择性问题,从N个数中找出第k大者 * * */#include #include /** 输出数组*

2015-08-21 20:48:41 1400

原创 《代码大全》拾遗

需要重构的代码:1 重复2 冗长的子程序3 内聚性差的类4 循环过长或嵌套过深5 过长的参数列表(7个参数左右)swict case优化:1 多态2 表驱动函数命名:1 函数命令要描述其返回值2 过程命名要使用动宾短语函数参数:1 传入参数不能修改2 参数排序:输出-修改-输出布尔变量命名:使用肯定的变

2015-08-21 12:26:44 1151

Lua for Windows 5.1.4-45

Lua在Windows下面的继承开发环境

2014-07-03

web开发Demo

CSS+Div JavaScript jQuery jQuery UI jqGrid

2013-08-28

java单例模式

java实现的单例模式,包含懒汉式和饿汉式,适合java入口

2013-06-07

数组的基本操作

java数组的基本操作 查找最大元素 选择排序 优化选择排序 冒泡排序 交换数组元素

2013-06-06

java猜拳游戏

这是一个用Java语言写的猜拳游戏,是一个java的入门程序,适合初学者参考

2013-06-04

动态多态性和静态多态性

C++中的多态性实例,包括静态多态性和动态多态性(运算符的重载和虚函数)

2013-06-02

含类对象子类的构造函数

含有类对象的派生类的构造函数的书写,输出运算符的重载

2013-06-02

C++ 操作符重载

C++操作符的重载 包含了双目运算符 单目运输符 以及前自增 后自增

2013-05-30

观察者模式

用C++写的,完整观察者模式实例,包换类和其使用

2013-05-25

三种工厂模式

包含三个完整的工厂模式类:简单工厂模式,工厂方法模式,抽象工厂模式

2013-05-25

C++单例模式

一个完整的单例的书写例子,用C++编写的,包括单例类及其使用

2013-05-25

socket发送http请求

在linux环境下,使用socket发送和接收http请求的例子

2013-05-25

C++友元成员函数使用实例

C++友元函数的使用,这个友元函数是另一个类的成员函数

2013-05-25

C++类的基本知识实例

C++类的创建和使用的基本知识,各种类型的数据成员

2013-05-25

设计模式之禅

设计模式

2012-05-14

空空如也

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

TA关注的人

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