from://http://blog.linguofeng.com/pages/language/c/Cocos2dx.html

Cocos2d-x

开源、跨平台的游戏引擎


一、下载

http://cocos2d-x.org/projects/cocos2d-x/wiki/Download

二、安装 环境:Ubuntu 12.04.1 32bit

$ mkdir /path/to/cocos2d-x
$ mv cocos2d-2.0-rc2-x-2.0.1.zip /path/to/cocos2d-x
$ cd /path/to/cocos2d-x
$ unzip cocos2d-2.0-rc2-x-2.0.1.zip
$ subl ~/.bashrc
export COCOS2DX_ROOT=/path/to/cocos2d-x
export NDK_ROOT=/path/to/android-ndk-r8b // 需要Android Ndk环境

三、HelloWorld 需要有Android SDK环境与Ant,点击查看

$ cd $COCOS2DX_ROOT/HelloWorld/proj.android
$ chmod u+x build_native.sh
$ ./build_native.sh // 编译库
$ android update project -p . -t android-10 // 生成Ant需要的build.xml文件
$ ant debug install // 安装到机器上

四、Cocds2d-x基础

主要类介绍

说明 作用 关系
CCDirector 导演(单例) 负责场景的切换以及场景的信息。如宽度,高度,旋转场景内容。 包含多个 CCScene
CCScene 场景 场景包含有布景,精灵,每场戏的不同,要切换场景。游戏中可分为主界面, 游戏, 分数榜,结束界面等。 包含多个 CCLayer
CCLayer 布景 类似是层的概念,也可来源于PS的层的概念。每一层都带有众多精灵等 包含多个 CCSprite
CCSprite 精灵 就是演员的,演员就需要加入到层里面去的。有相应的动作。 包含多个 CCAction
CCAction 动作 精灵的动作。  
CCMenu 菜单    

场景的转换

CCScene* scene =CCScene::node();// 创建sceneCCLayer* layer =CCLayer::node();// 创建layer
scene->addChild(layer);// 添加layer到sceneCCScene* preScene =CCDirector::ShareDirector()->getRunningScene();// 获取当前正在显示的场景if(preScene ==null){// 如果当前没有正在显示的场景CCDirecotr::ShareDirector()->runWithScene(scene);// 显示myScene场景}else{// 否则CCDirecotr::ShareDirector()->replaceScene(scene);// 替换成myScene场景}

常见宏

NS_CC_BEGIN
// cocos2d命名空间开始
NS_CC_END
// cocos2d命名空间结束
USING_NS_CC;// 声明cocos2d命名空间
CC_SYNTHESIZE_READONLY(varType, varName, funName)// 声明一个成员变量以及getfunName函数,没有set函数。getfunName已经实现,其实现就是返回这个值。
CC_SYNTHESIZE_READONLY_PASS_BY_REF(varType, varName, funName)// 类似CC_SYNTHESIZE_READONLY,不过getfunName返回的是引用。
CC_SYNTHESIZE(varType, varName, funName)// 声明一个成员变量以及getfunName,setfunName函数.函数声明和实现都有
CC_SYNTHESIZE_PASS_BY_REF(varType, varName, funName)// 类似CC_SYNTHESIZE,不过getfunName返回的是引用。
CC_PROPERTY_READONLY(varType, varName, funName)// 声明一个成员变量以及getfunName函数,没有set函数。getfunName函数的实现要自己做
CC_PROPERTY_READONLY_PASS_BY_REF(varType, varName, funName)// 类似CC_PROPERTY_READONLY,不过getfunName返回的是引用。getfunName函数的实现要自己做
CC_PROPERTY(varType, varName, funName)// 声明一个成员变量以及getfunName,setfunName函数.函数实现要自己做
CC_PROPERTY_PASS_BY_REF(varType, varName, funName)// 类似CC_PROPERTY,,不过getfunName返回的是引用

4.1 动作

CCAction :动作,分为瞬时动作 CCActionInstanse ,延时动作 CCActionInterval

动作 说明 构造 CCActionInterval 参数说明
CCMoveTo 移动到目标位置 CCMoveTo::actionWithDuration(2, ccp(100, 100)) 时间,位置
CCMoveBy 从目标位置移动 CCMoveBy::actionWithDuration(2, ccp(100, 100)) 时间,位置
CCScaleTo 缩放至多少倍 CCScaleTo::actionWithDuration(2, 0.5f) 时间,倍数(x、Y柚同时缩放)
CCScaleBy 放大至多少倍 CCScaleBy::actionWithDuration(2, 2f, 3f) 时间,x柚放大倍数,Y柚放大倍数
CCRotateTo 旋转多少角度 CCRotateTo::actionWithDuration(2, 45f) 时间,角度(正数顺时间,负数逆时针)
CCRotateBy 旋转多少角度 CCRotateBy::actionWithDuration(2, 360f) 时间,角度(正数顺时间,负数逆时针)
CCSkewTo 倾斜 CCSkewTo::actionWithDuration(2, 37.2f, -37.2f) 时间,X柚倾斜角度,Y柚倾斜角度
CCSkewBy 倾斜 CCSkewBy::actionWithDuration(2, 37.2f, -37.2f) 时间,X柚倾斜角度,Y柚倾斜角度
CCJumpTo 跳跃 CCJumpTo::actionWithDuration(2, ccp(300,300), 50, 4) 时间,目标坐标,跳的高度,跳的次数
CCJumpBy 跳跃 CCJumpBy::actionWithDuration(2, ccp(300,300), 50, 4) 时间,目标坐标,跳的高度,跳的次数
CCBezierTo 贝塞尔曲线运行 CCBezierTo::actionWithDuration(3, bezier) 时间,ccBezierConfig结构体
CCBezierBy 贝塞尔曲线运行 CCBezierBy::actionWithDuration(3, bezier) 时间,ccBezierConfig结构体
CCBlink CCBlink::actionWithDuration(2, 10) 时间,次数
CCFadeIn 淡入 CCFadeIn::actionWithDuration(1.0f) 时间
CCFadeOut 淡出 CCFadeOut::actionWithDuration(1.0f) 时间
CCTintTo 颜色变化 CCTintTo::actionWithDuration(2, 255, 0, 255) 时间,红,绿,蓝
CCTintBy 颜色变化 CCTintBy::actionWithDuration(2, 255, 0, 255) 时间,红,绿,蓝
CCAnimate 动画 CCAnimate::actionWithDuration(3, animation, false) 时间,CCAnimation,是否恢复原始帧
动作组合方式 说明 构造 CCAction 参数
CCSequence 动作序列,有序地一个一个执行动作 CCSequence::actions(actionTo, actionToBack, NULL) 动作1、运作2、…、后面必须加NULL表示没有了
CCRepeatForever 重复执行动作 CCRepeatForever::actionWithAction(actionTo) 动作
CCSpawn 同时执行动作 CCSpawn::actions(actionTo, actionToBack, NULL) 动作1、运作2、…、后面必须加NULL表示没有了
动作回调 说明 构造 参数
CCCallFunc 不带参数的回调 CCCallFunc::actionWithTarget(this, callfunc_selector(Class::callback1)) 当前动作,回调函数
CCCallFuncN 不带参数但带调用本身 CCCallFuncN::actionWithTarget(this, callfuncN_selector(Class::callback2)) 当前动作,回调函数
CCCallFuncND 带参数的回调 CCCallFuncND::actionWithTarget(this, callfuncND_selector(Class::callback3), (void*)0xbebabeba) 当前动作,回调函数
CCSize size =CCDirector::sharedDirector()->getWinSize();// 获取屏幕大小CCSprite* pSprite =CCSprite::spriteWithFile("HelloWorld.png");// 创建精灵CCActionInterval* actionTo =CCMoveTo::actionWithDuration(2,CCPointMake(size.width-40, size.height-40));
pSprite->runAction(actionTo);// 运行动作

4.2 菜单

CCMenu :菜单,参考: http://www.cocos2d-x.org/reference/native-cpp/d1/da0/classcocos2d_1_1_c_c_menu.html

// 创建菜单ItemCCMenuItem* m1 =CCMenuItemFont::itemFromString("新游戏",this, menu_selector(MainLayer::onNewGame));// menu_selector为全局常量CCLabelBMFont* label =CCLabelBMFont::labelWithString("Enable AtlasItem","fonts/bitmapFontTest3.fnt");CCMenuItem* m2 =CCMenuItemLabel::itemWithLabel(label,this, menu_selector(MainLayer::onNewGame));// 通过Label创建ItemCCMenuItem* m3 =CCMenuItemAtlasFont// 通过CCSprite*spriteNormal   =CCSprite::spriteWithFile("image.png",CCRectMake(0,23*2,115,23));CCSprite*spriteSelected =CCSprite::spriteWithFile("image.png",CCRectMake(0,23*1,115,23));CCSprite*spriteDisabled =CCSprite::spriteWithFile("image.png",CCRectMake(0,23*0,115,23));CCMenuItem* m4 =CCMenuItemSprite::itemFromNormalSprite(spriteNormal, spriteSelected, spriteDisabled,this,
menu_selector(MainLayer::onNewGame));CCMenuItem* m5 =CCMenuItemImage::itemFromNormalImage("image.png","imagep.png",this, menu_selector(MainLayer::onNewGame));CCMenuItem* m6 =CCMenuItemToggle::itemWithTarget(this, menu_selector(MainLayer::onNewGame),CCMenuItemFont::itemFromString("High"),CCMenuItemFont::itemFromString("Low"),...,
NULL);
m6->getSubItems()->addObject(CCMenuItemFont::itemFromString("33%"));
m6->setSelectedIndex(2);// 添加菜单Item到菜单中CCMenu* menu =CCMenu::menuWithItems(m1, m2, m3, m4, m5, m6, NULL);// 最后必须加NULLvoidMainLayer::onNewGame(CCObject* pSender){// 回调}

4.3 多层

CCLayerMultiplex :多个层,参考: http://www.cocos2d-x.org/reference/native-cpp/d3/d7e/classcocos2d_1_1_c_c_layer_multiplex.html

CCLayer* pLayer1 =newMenuLayer1();CCLayer* pLayer2 =newMenuLayer2();CCLayer* pLayer3 =newMenuLayer3();CCLayer* pLayer4 =newMenuLayer4();CCLayerMultiplex* layer =CCLayerMultiplex::layerWithLayers(pLayer1, pLayer2, pLayer3, pLayer4, NULL);
addChild(layer,0); pLayer1->release();
pLayer2->release();
pLayer3->release();
pLayer4->release();CCDirector::sharedDirector()->replaceScene(this);// 切换((CCLayerMultiplex*)m_pParent)->switchTo(0);

4.4 进度条

CCProgressTimer :进度条

type 说明
kCCProgressTimerTypeRadialCCW 径向逆时针旋转
kCCProgressTimerTypeRadialCW 径向顺时针旋转
kCCProgressTimerTypeHorizontalBarLR 水平从左往右
kCCProgressTimerTypeHorizontalBarRL 水平从右往左
kCCProgressTimerTypeVerticalBarBT 垂直从下往上
kCCProgressTimerTypeVerticalBarTB 垂直从上往下
CCProgressTimer* pt =CCProgressTimer::progressWithFile("image.png");
pt->setType(kCCProgressTimerTypeRadialCCW);
pt->setType(kCCProgressTimerTypeRadialCW);
pt->setType(kCCProgressTimerTypeHorizontalBarLR);
pt->setType(kCCProgressTimerTypeHorizontalBarRL);
pt->setType(kCCProgressTimerTypeVerticalBarBT);
pt->setType(kCCProgressTimerTypeVerticalBarTB);CCProgressTo* to =CCProgressTo::actionWithDuration(2,100);// 时间,百分比
pt->runAction(CCRepeatForever::actionWithAction(to));

4.5 场景转换

CCTransitionScene :场景转换效果

效果 说明 方法 参数
CCTransitionFade 以颜色淡出淡入 transitionWithDuration(时间, 场景, ccBLACK) ccc3(255,0,0) :三原色
CCTransitionFlipX 水平翻转屏幕 transitionWithDuration(时间, 场景, kOrientationRightOver) kOrientationLeftOver:从左往右 
kOrientationRightOver:从右往左
CCTransitionFlipY 垂直翻转屏幕 transitionWithDuration(时间, 场景, kOrientationUpOver) kOrientationUpOver :从上往下 
kOrientationDownOver:从下往上
CCTransitionFlipAngular 角度翻转屏幕 transitionWithDuration(时间, 场景, kOrientationRightOver) kOrientationLeftOver:从左下角往上 
kOrientationRightOver:从右上角往下
CCTransitionZoomFlipX 水平翻转并缩小/放大 transitionWithDuration(时间, 场景, kOrientationRightOver) kOrientationLeftOver:从左(放大)往右 
kOrientationRightOver:从右(放大)往左
CCTransitionZoomFlipY 垂直翻转并缩小/放大 transitionWithDuration(时间, 场景, kOrientationUpOver) kOrientationUpOver :从上(放大)往下 
kOrientationDownOver:从下(放大)往上
CCTransitionZoomFlipAngular 角度翻转并缩小/放大 transitionWithDuration(时间, 场景, kOrientationRightOver) kOrientationLeftOver:从左下角(放大)往上 
kOrientationRightOver:从右上角(放大)往下
CCTransitionShrinkGrow 收缩出放大入 transitionWithDuration(时间, 场景)  
CCTransitionRotoZoom 转收缩出转放大入 transitionWithDuration(时间, 场景)  
CCTransitionMoveInL 从左移动入 transitionWithDuration(时间, 场景)  
CCTransitionMoveInR 从右移动入 transitionWithDuration(时间, 场景)  
CCTransitionMoveInT 从上移动入 transitionWithDuration(时间, 场景)  
CCTransitionMoveInB 从下移动入 transitionWithDuration(时间, 场景)  
CCTransitionSlideInL 从左平滑移入 transitionWithDuration(时间, 场景)  
CCTransitionSlideInR 从右平滑移入 transitionWithDuration(时间, 场景)  
CCTransitionSlideInT 从上平滑移入 transitionWithDuration(时间, 场景)  
CCTransitionSlideInB 从下平滑移入 transitionWithDuration(时间, 场景)  
CCTransitionCrossFade 交叉淡入两个场景 transitionWithDuration(时间, 场景)  
CCTransitionPageTurn 翻页 transitionWithDuration(时间, 场景, 参数) true :合上 
false :翻开
CCTransitionFadeTR 往右上角马赛克退出 transitionWithDuration(时间, 场景)  
CCTransitionFadeBL 往左下角马赛克退出 transitionWithDuration(时间, 场景)  
CCTransitionFadeUp 往上角马赛克退出 transitionWithDuration(时间, 场景)  
CCTransitionFadeDown 往下角马赛克退出 transitionWithDuration(时间, 场景)  
CCTransitionTurnOffTiles 随机马赛克退出 transitionWithDuration(时间, 场景)  
CCTransitionSplitRows 基数行左,偶数行右退出 transitionWithDuration(时间, 场景)  
CCTransitionSplitCols 基数行上,偶数行下退出 transitionWithDuration(时间, 场景)  
CCTransitionFade* tfScene =CCTransitionFade::transitionWithDuration(2,newCCScene(), ccBLACK);if(tfScene){CCDirector::sharedDirector()->replaceScene(pScene);}

4.6 效果

说明 静态函数
CCShaky3D 摇动的3D CCShaky3D::actionWithRange(5, true, ccg(15,10), t) // 范围 是否摇动 网格大小 时间
CCWaves3D 波浪3D CCWaves3D::actionWithWaves(5, 40, ccg(15,10), t)
CCFlipX3D 水平翻转3D CCFlipX3D::actionWithDuration(t)
CCFlipY3D 垂直翻转3D CCFlipY3D::actionWithDuration(t)
CCLens3D 镜面3D CCLens3D::actionWithPosition(CCPointMake(size.width/2,size.height/2), 240, ccg(15,10), t)
CCRipple3D 波纹3D CCRipple3D::actionWithPosition(CCPointMake(size.width/2,size.height/2), 240, 4, 160, ccg(32,24), t)
CCLiquid 液体效果 CCLiquid::actionWithWaves(4, 20, ccg(16,12), t)
CCWaves 波浪效果 CCWaves::actionWithWaves(4, 20, true, true, ccg(16,12), t)
CCTwirl 晃动效果 CCTwirl::actionWithPosition(CCPointMake(size.width/2, size.height/2), 1, 2.5f, ccg(12,8), t)
CCShakyTiles3D 摇动马赛克 CCShakyTiles3D::actionWithRange(5, true, ccg(16,12), t)
CCShatteredTiles3D 破碎马赛克 CCShatteredTiles3D::actionWithRange(5, true, ccg(16,12), t)
CCShuffleTiles 随机马赛克 CCShuffleTiles::actionWithSeed(25, ccg(16,12), t)
CCFadeOutTRTiles 往右上角马赛克淡出 CCFadeOutTRTiles::actionWithSize(ccg(16,12), t)
CCFadeOutBLTiles 往左下角马赛克淡出 CCFadeOutBLTiles::actionWithSize(ccg(16,12), t)
CCFadeOutUpTiles 往上马赛克淡出 CCFadeOutUpTiles::actionWithSize(ccg(16,12), t)
CCFadeOutDownTiles 往下马赛克淡出 CCFadeOutDownTiles::actionWithSize(ccg(16,12), t)
CCTurnOffTiles 马赛克随机消失 CCTurnOffTiles::actionWithSeed(25, ccg(48,32) , t)
CCWavesTiles3D 波浪马赛克 CCWavesTiles3D::actionWithWaves(4, 120, ccg(15,10), t)
CCJumpTiles3D 跳动的3D马赛克 CCJumpTiles3D::actionWithJumps(2, 30, ccg(15,10), t)
CCSplitRows 基数往左,偶数往下 CCSplitRows::actionWithRows(9, t)
CCSplitCols 基数往上,偶数往下 CCSplitCols::actionWithCols(9, t)
CCPageTurn3D 3D翻页效果 CCPageTurn3D::actionWithSize(ccg(15,10), t)

4.7 节点

节点嵌套节点

CCSprite* pSprite1 =newCCSprite();// 一个精灵相当于一个节点CCSprite* pSprite2 =newCCSprite();

pSprite1->addChild(pSprite2);// 一个节点嵌套另一个节点

pSprite1->runAction(action);// 如果父节点执行动作,那此时所有子节点都会执行该动作。

节点删除与清除

prettyprint(node, false/true);          // 节点,false不清理正在运行的动作、true清理正在运行的动作

4.8 精灵

说明 静态函数 参数
CCSprite 精灵 CCSprite::spriteWithTexture(CCTexture2D*) 质地
CCSprite::spriteWithTexture(CCTexture2D*, CCRect&) 质地, CCRect 矩形
CCSprite::spriteWithTexture(CCTexture2D*, CCRect&, CCPoint&) 质地,矩形,CCPoint 点
CCSprite::spriteWithSpriteFrame(CCSpriteFrame*) CCSpriteFrame 精灵框架
CCSprite::spriteWithSpriteFrameName(char*) CCSpriteFrame名称
CCSprite::spriteWithFile(char*) 文件名
CCSprite::spriteWithFile(char*, CCRect&) 文件名,矩形
CCSprite::spriteWithBatchNode(CCSpriteBatchNode*, CCRect&) CCSpriteBatchNode批量节点,矩形
CCSpriteBatchNode 精灵批量节点 CCSpriteBatchNode->addChild(CCSprite) 添加多个精灵到节点上

4.9 定时器

schedule(schedule_selector(Class::callback),1);// 回调,时间;每隔1秒执行一次voidClass::callback(ccTime dt){}

unschedule(schedule_selector(Class::callback));// 取消定时器

4.10 内存管理 原则:每个自定义类必须继承 cocos2d::CCObject 对象

CCObject对象的内存管理相关接口

// 引用次数+1 virtualvoidCCObject::retain(void);// 引用次数-1;若引用计数器=0,则delete this; virtualvoidCCObject::release(void);// helper方法,快速判断当前对象只有唯一引用 boolCCObject::isSingleRefrence(void);// 返回引用次数 unsignedintCCObject::retainCount(void);// 自动释放(自动管理)CCObject*CCObject::autorelease(void);

手动管理内存

classMyClass:public cocos2d::CCObject{public:MyClass();~MyClass();}MyClass* obj =newMyClass();...
obj->release();// 谁生成(new、copy)谁负责release// 谁retain,谁负责release。
obj->retain();...
obj->release();// 传递赋值时,需要先retain形参,后release原指针,最后赋值。(注意,因为这里没有使用自赋值检查,所以这组顺序不能错。)voidCCNode::setGrid(CCGridBase* pGrid){
CC_SAFE_RETAIN(pGrid);
CC_SAFE_RELEASE(m_pGrid);
m_pGrid = pGrid;}

自动管理内存

MyClass* obj =newMyClass();
obj->autorelease();// 每帧绘制结束,就自动release池中的对象。

Cocos2d-x开源、跨平台的游戏引擎的更多相关文章

  1. RPG JS:免费开源的跨平台RPG游戏引擎

    RPG JS是一个2D RPG游戏制作引擎,目前版本基于Ease|JS游戏引擎,基于Canvas Engine的新版本即将发布. RPG JS是免费且开源的. RPG JS有着完善的文档支持. RPG ...

  2. Unity3D游戏开发初探—1.跨平台的游戏引擎让.NET程序员新生

    一.Unity3D平台简介 Unity是由Unity Technologies开发的一个让轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的 ...

  3. 开源项目OEIP 游戏引擎与音视频多媒体(UE4/Unity3D)

    现开源一个项目 OEIP 项目实现的功能Demo展示 这个项目演示了在UE4中,接入摄像机通过OEIP直接输出到UE4纹理上,并直接把UE4里的RenderTarget当做输入源通过OEIP里GPU管 ...

  4. Genesis-3D开源游戏引擎简介!

    Genesis-3D由搜狐畅游公司超百人引擎研发团队历时数年耗费巨资自主研发,是国内外首款商业开源的3D游戏引擎平台.它包括跨平台渲染引擎.2D引擎.物理引擎.音效系统.粒子系统.动画系统.服务器引擎 ...

  5. 记录一下八款开源 Android 游戏引擎

    记录一下八款开源 Android 游戏引擎 虽然android学了点点,然后现在又没学了(我为啥这么没有恒心呢大哭).以后有时间还是要继续学android的,一定要啊!虽然现在没学android游戏编 ...

  6. 八款开源 Android 游戏引擎[转]

    记录一下,以备不时之需~~~~~ 虽然android学了点点,然后现在又没学了(我为啥这么没有恒心呢大哭).以后有时间还是要继续学android的,一定要啊!虽然现在没学android游戏编程,不过还 ...

  7. 《Genesis-3D开源游戏引擎-FQA常见问题解答》2014年01月10号版本

    1.Genesis-3D开源游戏引擎主要面向哪些用户人群?有限制吗? 1.我们的引擎没有限制,只要您想了解和使用我们的引擎,就可以加入Genesis-3D的大家庭.2.我们的主要用户群是各个相关的企业 ...

  8. 开源HTML5游戏引擎Kiwi.js 1.0正式发布

    Kiwi.js是由GameLab开发的一款全新的开源HTML5 JavaScript游戏引擎.在经过一年多的开发和测试之后,终于在日前正式发布了Kiwi.js 1.0版本. 其创始人Dan Milwa ...

  9. 2016年 最火的 15 款 HTML5 游戏引擎

    HTML5游戏从2014年Egret引擎开发的神经猫引爆朋友圈之后,就开始一发不可收拾,今年<传奇世界>更是突破流水2000万!从两年多的发展来看,游戏开发变得越来越复杂,需要制作各种炫丽 ...

随机推荐

  1. 小白学习安全测试(二)——httrack的安装和使用

    httrack是一款免费的网站镜像程序,简单理解就是可以在网站结构(网页及一些主要信息文件),下载到本地,可离线浏览,我是按照搭建成功后的console直译过来的 下面说下安装: 我都是在Linux环 ...

  2. Windows安装pycrypto失败记录

    Windows 10家庭中文版,Python 3.6.4, 180824测试前端加密文本在后台揭秘,查询后发现,可以使用pycrypto模块实现,那么,安装它(pip),结果安装失败了. 本文暂时记录 ...

  3. TinyHttpd代码解析

    十一假期,闲来无事.看了几个C语言开源代码.http://www.cnblogs.com/TinyHttpd 这里本来想解析一下TinyHttpd的代码,但是在网上一搜,发现前辈们已经做的很好了.这里 ...

  4. linux操作系统语言更改

    有时候我们的服务器在安装时安装的默认语言不支持中文,导致程序.文档中的汉子显示乱码,从而使系统报一些莫名其妙的错误,这是可以更改操作系统的默认语言 1.echo  $LANG   查看当前操作系统的语 ...

  5. nginx静态资源缓存策略配置

    1. 问题-背景 以前也经常用nginx,但用的不深,通常是简单的设置个location用来做反向代理.直到今天给客户做项目碰到缓存问题:客户有个app,只是用原生做了个壳,里面的内容都是用h5写的, ...

  6. 【Java】 大话数据结构(16) 排序算法(3) (堆排序)

    本文根据<大话数据结构>一书,实现了Java版的堆排序. 更多:数据结构与算法合集 基本概念 堆排序种的堆指的是数据结构中的堆,而不是内存模型中的堆. 堆:可以看成一棵完全二叉树,每个结点 ...

  7. 016 jquery中html与val得到使用

    1.属性操作 2.设置html . 3.程序(关于html) <!DOCTYPE html> <html> <head> <meta charset=&quo ...

  8. 使用Ajax方式POST JSON数据包(转)

    add by zhj: 用ajax发送json数据时注意两点, 第一,使用JSON.stringify()函数将data转为json格式的字符串,如下 data: JSON.stringify({   ...

  9. Javascript数组Array的方法总结!

    1.join() 将数组的元素组成一个字符串,以分隔符连接,如果省略则默认逗号为分隔符,该方法只接收一个参数:分隔符.此方法不会改变原数组. let arr = [1,2,3,4] let arr1 ...

  10. C/C++的64为长整型数的表示

    在C/C++中,64为整型一直是一种没有确定规范的数据类型.现今主流的编译器中,对64为整型的支持也是标准不一,形态各异.一般来说,64位整型的定义方式有long long和__int64两种(VC还 ...