张家港java培训周期_张家港JAVA培训
来源:教育联展网 编辑:佚名 发布时间:2018-08-23
培训Java与自学Java的差距
我以前也是自学Java,在一家公司跟着别人学,以前是别人眼中的菜鸟,现
在是别人眼中的大神,Java很简单的,贵在坚持和多练,没必要花那培训钱。如果真的要去学的话,
选择Java培训机构要注意这两点基本上就能避免一些坑:
1. 老师没有正经公司工作经历,或者没有已经在线上正常运转的产品。一
些所谓培训班的老师水平往往比较一般,甚至还有培训出来后又接着培训别人的。
2、是不是会承诺帮你找到工作,要找到好的工作,不是靠别人给你保证的
,还是要靠自己提升能力。
建议多自己学习加上找些好的代码主动学习。例如github,多练习网上很多
网站里真正好的代码。作为Java工程师,可以多看看spring文档,看看很多已经成熟的框架,深入去体会。另外,学软件等等**好还是自己多学,找点
视频教程之类,也省点钱。
大数据核心知识
Hadoop基础
Hadoop1介绍
hadoop1架构
hadoop2架构(对比hadoop1)
hadoop2环境搭建
HDFS操作
yarn操作
Hadoop应用
Hive数据仓库
zookeeper系统服务
HBase非关系型数据库
Sqoop数据库抽取工具
Flume日志抽取工具
Spark基础
环境搭建
Spark平台介绍
RDD弹性分布式数据集
Scala编程
Spark应用
Spark-SQL组件
DataFrame组件
课程优势
1.真实的企业项目;
2.目前企业中应用广泛的技术路线;
3.部分Spark源码剖析,从源码层面提升问题解决能力。
4.从hadoop1到hadoop2机制原理详细解说;
5.生产环境hadoop集群调优经验;
6.企业真实项目实战;
本阶段学习目标
1.了解hadoop机制原理 ;
2.了解hadoop集群搭建过程;
3.了解Hdfs API使用以及mr编程模型;
4.了解hive、hbase、sqoop、flume等组件的使用方法;
5.Spark平台的优势以及Spark集群的搭建过程;
6.Scala程序设计基础;
7.Spark-SQL和DataFrame API详解。
本阶段学习效果
1.了解hadoop集群的搭建过程;
2.能够**mr和hive来实现简单的数据清洗的业务需求;
3.能够了解数据的抽取,转换,清洗,建模,入库过程;
4.掌握Spark集群的搭建;
5.掌握函数式编程思想,能够根据业务需求编写高质量的Scala程序;
6.掌握大规模离线数据的计算、分析能力。
Cocos2d-x 3.8.1 Cocos Studio 2.3.2捉虫记之控制场景文件中的骨骼动画
>
引子
这段时间一直努力在把早期版本的拇指接龙游戏(Cocos2d-x 2.2.3 CocoStudio 1.4.0.1)升级到当前相对稳定的高大上环境——Cocos2d-x
3.8.1 Cocos Studio 2.3.2。行程中遇到不少麻烦,时间不知不觉像流水一样悄然逝去(这正是我时不时酸酸地想起“程序猿”三字的主要原因)。想之再三,还是努力记录下来,一来为自己可能逝去的记忆,二来为一些新伙伴少踏几个坑而节约些许时间。
本文讨论的是在新版本中如何从代码中控制在cocos Studio场景编辑器中加入的骨骼动画的操作。
cpp-tests中的误导
在升级之前就从网络上及部分手头图书中了解到cocos2d-x 3.x版本中的较大变动。于是,还是很小心地决定先从研读新版本发行中相伴随的**经典的示例工程cpp-tests开始。在有了一个整体思路后,结合原来版本代码开始更新,有的是代码部分,有的是studio图形数据部分,当然也包括该示例游戏涉及的有米积分墙SDK相关代码的更新与ShareSDK集成部分的更新。
网络搜索及研究示例工程cpp-tests的结果表明,**方的文档有不少已经过时。但是,值得肯定的一点是工程cpp-tests中提倡尽量使用当前**新的cocos2d-x代码操纵早期几乎是各种版本studio导出的资源文件,还包括Flash动画文件及Spine动画文件,等等。
但遗憾的是,相应的**方资料中并没有指出这一点。当然,在示例工程注释中也没有必要过于琐碎地添加这种使用说明信息。
于是,对于像我这样的新版本的发烧友来说,要使用其提供的**新技术主要有两个途径:一个是尽量全面地查看**方文档(但是**新版本有关资料少得可怜),再一个就是阅读SDK源码。
如题中所示的“误导”部分地体现在当前**新的cocos2d-x c 代码操纵studio导出的动画资源文件方面。
如果选择开发语言是c ,那么对应的studio版本(2.3.2)的资料文件只能是.csb文件(场景文件、图层文件、结点文件、骨骼动画文件、3D场景文件的扩展名都是.csb)。
个别网络资料上说是可以操纵studio版本(2.3.2)导出的json文件(如果选择语言是javascript的话),我在尝试后发现基本不可以,但不是完全不可以。源码分析发现,这种方式导出的json文件与早期studio版本导出的exportjson文件或者json文件格式上存在很多的不一致。
因此,应该明确的一点就是对于使用cocos2d-x 3.8.1 C 代码操作的studio版本(2.3.2)导出的资源文件的扩展名应当是.csb文件(二进制文件)。
但是,工程cpp-tests中的确存在大量的操作早期版本场景文件、GUI图层文件、骨骼动画文件的大量示例代码,而**方文档及这些文件注释中又缺少必要的说明,因此很容易误导初学者,而致使其浪费大量的时间进行可行性编码试验。
对于新版本环境下骨骼动画的操作我还没有全面试验,因此仅作部分试验结果说明。
来自www.cocoachina.com的启示
在上述网站的《Cocos骨骼动画功能解密》(http://www.cocoachina.com/cocos/20150907/13355.html)一文中我捕获到如下**新的参考代码。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
SkeletonNode* skeletonNode = static_cast (CSLoader::createNode( "DemoPlayer.csb" )); skeletonNode->setScale(0.2f); skeletonNode->setPosition(150, 150); this ->addChild(skeletonNode); ActionTimeline* action = CSLoader::createTimeline( "DemoPlayer.csb" ); action->setTag(100); skeletonNode->runAction(action); action->play( "animation0" , false ); const std::string weapBoneName = "Layer20" ; auto weaponHandeBone = skeletonNode->getBoneNode(weapBoneName); auto weapSkinToAdd = Sprite::create( "ArcherPeng/girl_arms.png" ); weapSkinToAdd->setName( "Knife" ); weapSkinToAdd->setPosition(Vec2(135, 23)); weapSkinToAdd->setScale(3.0f); weapSkinToAdd->setRotation(86); weaponHandeBone->addSkin(weapSkinToAdd, false ); weaponHandeBone->displaySkin(weapSkinToAdd, true ); weaponHandeBone->displaySkin( "3" , true );
|
1
|
Node *node=CSLoader::createNode( "DemoPlayer.csb" );
|
是3.8.1 c 代码加载studio
2.3.2导出的各种.csb二进制资源文件的统一方式。但是,根据本人浮浅分析:更细致的资料数据操纵示例工程中根本没有提供。
初见天日
下面以我自己创建的一个简单示例来说明如何从C 3.8.1代码中操作studio
2.3.2导出的.csb文件。
首先,看一下我的示例工程截图(我创建了一个场景文件MainScene.csd,其中加入的是一个骨骼动画文件):
骨骼动画文件是DemoPlayer.csd,如下,你一看就知道的。
接下来,问题的关键定位在:如何从cocos2d-x 3.8.1 c 代码中操作上面导出的二进制资源MainScene.csb,并进而播放其中的骨骼动画以及进行其他更细致的骨骼动画行为控制。
在分析了上面代码提示和综合cpp-tests工程代码后,我作出如下大胆尝试:
1
2
3
4
5
6
7
8
9
|
Node * rootNode = CSLoader::createNode( "MainScene.csb" ); Node* child = rootNode->getChildByName( "ProjectNode_1" ); SkeletonNode* arm = static_cast <SkeletonNode*>(child); addChild(arm); ActionTimeline* action = CSLoader::createTimeline( "MainScene.csb" ); arm->runAction(action); action->gotoFrameAndPlay(0);
|
部分缺憾
在cpp-tests中经常有如下代码:
1
|
Node* _rootNode = SceneReader::getInstance()->createNodeWithSceneFile( "res/MainScene.json" );
|
恰巧,我的机器上有一个老版本的cocoStudio 1.4.0.1,其导出的场景文件正是json格式。试验证明,使用cocos2d-x
c 3.8.1**上述代码操作场景文件非常顺利。当然,接下来,相应的进一步操作场景中对象的代码也是没有问题的,与示例工程中一致。
但是,简单地源码跟踪发现,createNodeWithSceneFile文件也可以使用.csb文件作为参数。尽管没有细致研究,但是试验证明下面的代码根本是行不通的。
1
2
|
Node* _rootNode = SceneReader::getInstance()->createNodeWithSceneFile( "res/MainScene.csb" ); Node* child = _rootNode->getChildByName( "ProjectNode_1" );
|
类似于上面的问题,示例工程中还存在不少,希望研究的同学们小心注意了。
【补充】
在示例文件SceneEditorTest.cpp 中的确存在使用上述方法,即createNodeWithSceneFile加载.csb文件的情形。例如下面所示的函数:
注意,其中相关帮助函数loadFileChangeHelper代码如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
void SceneEditorTestBase::loadFileChangeHelper(std::string& filePathName) { std::string::size_type n = filePathName.find_last_of( "." ); if (n == std::string::npos) return ; filePathName = filePathName.substr(0,n); if (_isCsbLoad) filePathName.append( ".csb" ); else filePathName.append( ".json" ); }
|
而上面的示例,即cpp-tests中的一部分在我的机器上是顺利调试**的。也就是说,createNodeWithSceneFile的确能够加载.csb文件,但却不是cocos studio 2.3.2导出的.csb文件。据我的估计,应该是早期版本studio导出的.csb文件。
怎么样?感觉有些麻烦吧。不同的.csb文件居然有的能够**createNodeWithSceneFile加载,而有的不行!遗憾的是,**方没有给出明确说明!!!
|
小结
不敢多说一些,因为我到此的结论只停留在片面。但是,有一点基本是肯定的:当前的CPP-TESTS中对于早期STUDIO资源操作提供的示例已经非常丰富了,但相比之下,对于对应**新版本的STUDIO导出的二进制.csb文件的深入操作示例提供的非常欠缺。因此,这种情况下,要想使用**新版本的studio及相应版本的cocos2d-x
3.x版本,深入研究SDK源码是必需的;但同时也要结合网络上尽可能新的示例(特别是来自于cocoachina.com网络的资源)进行。
登录乐搏学院**网http://www.learnbo.com/
或关注我们的**方微博微信,还有更多惊喜哦~
本文出自 “青峰” 博客,请务必保留此出处http://zhuxianzhong.blog.51cto.com/157061/1713250
相关推荐:
苏州JAVA培训 苏州JAVA培训班 苏州JAVA培训机构
上一篇:常熟女生零基础学java_常熟JAVA培训 下一篇:常熟哪里学java比较好_常熟JAVA培训