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. Java IO流杂谈

    创建文件和删除文件(File类) import java.io.File; import java.io.IOException; public class T2 { public static vo ...

  2. django之class Meta

    通过一个内嵌类 "class Meta" 给你的 model 定义元数据, 类似下面这样: class Foo(models.Model): bar = models.CharFi ...

  3. SP14932 【LCA - Lowest Common Ancestor】

    专业跟队形 唯一一个有$\LaTeX$的 裸的$LCA$,我用的是$Tarjan~LCA$,注意两点相同特判 #include<iostream> #include<cstdio&g ...

  4. 如何在CI中写工具类,在哪个目录写

    在Libraries目录写工具类,可以参考项目中七牛的集成写法 而Helps目录写的是辅助函数(公共函数)这一类的

  5. java okhttp 发送图片

    @RequestMapping(value="/demo2", method=RequestMethod.POST) @ResponseBody public String dem ...

  6. Python3 反向传播神经网络-Min-Batch(根据吴恩达课程讲解编写)

    # -*- coding: utf-8 -*- """ Created on Sat Jan 20 13:47:54 2018 @author: markli " ...

  7. Redis创建高可用集群教程【Windows环境】

    模仿的过程中,加入自己的思考和理解,也会有进步和收获. 在这个互联网时代,在高并发和高流量可能随时爆发的情况下,单机版的系统或者单机版的应用已经无法生存,越来越多的应用开始支持集群,支持分布式部署了. ...

  8. MySQL服务器发生OOM的案例分析

    [问题] 有一台MySQL5.6.21的服务器发生OOM,分析下来与多种因素有关 [分析过程] 1.服务器物理内存相对热点数据文件偏小,62G物理内存+8G的SWAP,数据文件大小约550G 触发OO ...

  9. Redis高可用之哨兵模式Sentinel配置与启动(五)

    0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...

  10. JSP(Servlet)中从连接池获取连接

    1) 建立连接. 2) 执行SQL. 3) 处理结果. 4) 释放资源. Connection pool:连接池 DataSource: LDAP ( Light directory access p ...