文档章节

cocos2d-x 3.X 如何在android里添加广告

piggybear
 piggybear
发布于 2015/02/16 10:32
字数 1761
阅读 4
收藏 0
点赞 0
评论 0

1,使用的是谷歌的AdMob的广告

先去注册个账号吧http://www.google.com/ads/admob/ 

怎么注册就不说了,注册需要翻墙,如何翻墙,自己解决,注册太长了,就那么回事,不说了。注册好后,登陆界面如下




按顺序点击,填写好相关内容后,你会得到这个界面


为什么是中文,google自动帮我翻译了,有时候翻译有时候不翻译,这里就不说了,看到广告单元ID没,把他记下来,


2,现在,新建一个的cocos2d-X 3.0的工程,你环境是不是按照上一篇的环境搭建篇搭建的呢,不是的话还不快去

茯苓新admobTest-P com.test.admobTest-L CPP-D D:\工作

先用日食导入工程,你看的很清楚,不是对,是Eclispe的

1)先导入libcocos2dx库

有关Eclispe中,文件 - >导入 - >现有的Andr​​oid代码放入工作区

然后点击浏览...找到如下图路径


然后导入,库导入完了再导入admobTest工程

还是按照刚才的方法,不过赵路径的时候是下面这个



当你导入以后,工程会自动运行 “的Python build_native.py”,如下图



就直接连接手机运行就OK了,


3,下面,开始添加广告,

1)关闭Eclispe的,

2)打开翻墙软件,

3)打开SDK 的manager.exe选择工具- >选项...,如下配置


然后,关闭SDK 的manager.exe重新打开,更新以下项目



更新完毕后,将下图中的文件夹


复制到你的工程目录下




打开Eclipse中,按照导入库方式导入谷歌播放services_lib

导入后,右键点击admobTest工程,选择属性属性,然后如图设置


将谷歌 - 播放services_lib加到工程中


修改 的AndroidManifest.xml文件,如图

文本在此

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1.       <meta-data android:name="com.google.android.gms.version"  
  2.                    android:value="@integer/google_play_services_version"/>  
  3. <activity android:name="com.google.android.gms.ads.AdActivity"  
  4.               android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>  

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>  


打开工程中的AppActivity.java文件,修改如下


[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. /**************************************************************************** 
  2. Copyright (c) 2008-2010 Ricardo Quesada 
  3. Copyright (c) 2010-2012 cocos2d-x.org 
  4. Copyright (c) 2011      Zynga Inc. 
  5. Copyright (c) 2013-2014 Chukong Technologies Inc. 
  6.   
  7. http://www.cocos2d-x.org 
  8.  
  9. Permission is hereby granted, free of charge, to any person obtaining a copy 
  10. of this software and associated documentation files (the "Software"), to deal 
  11. in the Software without restriction, including without limitation the rights 
  12. to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
  13. copies of the Software, and to permit persons to whom the Software is 
  14. furnished to do so, subject to the following conditions: 
  15.  
  16. The above copyright notice and this permission notice shall be included in 
  17. all copies or substantial portions of the Software. 
  18.  
  19. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
  20. IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
  21. FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
  22. AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
  23. LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 
  24. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 
  25. THE SOFTWARE. 
  26.  ****************************************************************************/  
  27. package org.cocos2dx.cpp;  
  28.   
  29. import java.lang.reflect.InvocationTargetException;  
  30. import java.lang.reflect.Method;  
  31.   
  32. import org.cocos2dx.lib.Cocos2dxActivity;  
  33.   
  34. import android.annotation.TargetApi;  
  35. import android.graphics.Color;  
  36. import android.graphics.Point;  
  37. import android.os.Build;  
  38. import android.os.Bundle;  
  39. import android.view.Display;  
  40. import android.view.View;  
  41. import android.view.WindowManager;  
  42. import android.widget.LinearLayout;  
  43. import android.widget.RelativeLayout;  
  44.   
  45. import com.google.android.gms.ads.AdSize;  
  46. import com.google.android.gms.ads.AdRequest;  
  47. import com.google.android.gms.ads.AdView;  
  48.   
  49. public class AppActivity extends Cocos2dxActivity {  
  50.     private static AppActivity _appActiviy;  
  51.     private AdView adView;  
  52.     private static final String AD_UNIT_ID = "ca-app-pub-4321574338161624/7981547992";//填写你的广告单元ID  
  53.   
  54.     // Helper get display screen to avoid deprecated function use  
  55.     private Point getDisplaySize(Display d) {  
  56.         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {  
  57.             return getDisplaySizeGE11(d);  
  58.         }  
  59.         return getDisplaySizeLT11(d);  
  60.     }  
  61.   
  62.     @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2)  
  63.     private Point getDisplaySizeGE11(Display d) {  
  64.         Point p = new Point(00);  
  65.         d.getSize(p);  
  66.         return p;  
  67.     }  
  68.   
  69.     private Point getDisplaySizeLT11(Display d) {  
  70.         try {  
  71.             Method getWidth = Display.class.getMethod("getWidth",  
  72.                     new Class[] {});  
  73.             Method getHeight = Display.class.getMethod("getHeight",  
  74.                     new Class[] {});  
  75.             return new Point(  
  76.                     ((Integer) getWidth.invoke(d, (Object[]) null)).intValue(),  
  77.                     ((Integer) getHeight.invoke(d, (Object[]) null)).intValue());  
  78.         } catch (NoSuchMethodException e2) // None of these exceptions should  
  79.                                             // ever occur.  
  80.         {  
  81.             return new Point(-1, -1);  
  82.         } catch (IllegalArgumentException e2) {  
  83.             return new Point(-2, -2);  
  84.         } catch (IllegalAccessException e2) {  
  85.             return new Point(-3, -3);  
  86.         } catch (InvocationTargetException e2) {  
  87.             return new Point(-4, -4);  
  88.         }  
  89.     }  
  90.   
  91.     @Override  
  92.     protected void onCreate(Bundle savedInstanceState) {  
  93.         super.onCreate(savedInstanceState);  
  94.   
  95.         getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);  
  96.         //获取显示宽度  
  97.         int width = getDisplaySize(getWindowManager().getDefaultDisplay()).x;  
  98.         //顶部显示1,如果想在顶部显示广告请将顶部显示1和顶部显示2注释去掉,然后注释掉底部显示1,底部显示2,底部显示3  
  99. //      LinearLayout.LayoutParams adParams = new LinearLayout.LayoutParams(  
  100. //              width, LinearLayout.LayoutParams.WRAP_CONTENT);  
  101.           
  102.         //底部显示1  
  103.         RelativeLayout relativeLayout = new RelativeLayout(this);//  
  104.         this.frameLayout.addView(relativeLayout);//3.0 中,先打开Cocos2dxActivity.java文件,在52行,就是private static Context sContext = null;之后添加public static FrameLayout framelayout;然后在public void init() 函数中,将FrameLayout framelayout = new FrameLayout(this);改成framelayout = new FrameLayout(this);就可以了使用这句代码了,3.1.1之后什么都不要动,直接写成this.mFrameLayout.add(relativeLayout)就可以了  
  105.   
  106.         //底部显示2  
  107.         RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(width,  
  108.                 AdView.LayoutParams.WRAP_CONTENT);//  
  109.         adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);//  
  110.           
  111.                 //广告  
  112.         adView = new AdView(this);  
  113.         adView.setAdSize(AdSize.BANNER);  
  114.         adView.setAdUnitId(AD_UNIT_ID);  
  115.   
  116.         AdRequest adRequest = new AdRequest.Builder()  
  117.                 .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)  
  118.                 .addTestDevice("HASH_DEVICE_ID").build();  
  119.         //底部显示3  
  120.         relativeLayout.addView(adView,adParams);//  
  121.         //广告请求  
  122.                 adView.loadAd(adRequest);  
  123.         adView.setBackgroundColor(Color.BLACK);  
  124.         adView.setBackgroundColor(0);  
  125.         //顶部显示2  
  126.         //addContentView(adView, adParams);  
  127.         //赋值  
  128.         _appActiviy = this;  
  129.   
  130.     }  
  131.   
  132.     public static void hideAd() {  
  133.         _appActiviy.runOnUiThread(new Runnable() {  
  134.   
  135.             @Override  
  136.             public void run() {  
  137.                 if (_appActiviy.adView.isEnabled())  
  138.                     _appActiviy.adView.setEnabled(false);  
  139.                 if (_appActiviy.adView.getVisibility() != 4)  
  140.                     _appActiviy.adView.setVisibility(View.INVISIBLE);  
  141.             }  
  142.         });  
  143.   
  144.     }  
  145.   
  146.     public static void showAd() {  
  147.         _appActiviy.runOnUiThread(new Runnable() {  
  148.   
  149.             @Override  
  150.             public void run() {  
  151.                 if (!_appActiviy.adView.isEnabled())  
  152.                     _appActiviy.adView.setEnabled(true);  
  153.                 if (_appActiviy.adView.getVisibility() == 4)  
  154.                     _appActiviy.adView.setVisibility(View.VISIBLE);  
  155.             }  
  156.         });  
  157.   
  158.     }  
  159.   
  160.     @Override  
  161.     protected void onResume() {  
  162.         super.onResume();  
  163.         if (adView != null) {  
  164.             adView.resume();  
  165.         }  
  166.     }  
  167.   
  168.     @Override  
  169.     protected void onPause() {  
  170.         if (adView != null) {  
  171.             adView.pause();  
  172.         }  
  173.         super.onPause();  
  174.     }  
  175.   
  176.     @Override  
  177.     protected void onDestroy() {  
  178.         adView.destroy();  
  179.         super.onDestroy();  
  180.     }  
  181. }  


记住要改成你的广告标识

JAVA的完成了,下面就是C + +的了

新建一个AdmobHelper.h文件,内容如下

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #pragma once  
  2.   
  3. class AdmobHelper{  
  4. public:  
  5.     static void hideAd();  
  6.     static void showAd();  
  7.     static bool isAdShowing;  
  8. };  


新建一个 AdmobHelper.cpp文件,内容如下

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #include "AdmobHelper.h"  
  2. #include "cocos2d.h"  
  3.   
  4. USING_NS_CC;  
  5.   
  6. bool AdmobHelper::isAdShowing = true;  
  7.   
  8. #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)  
  9. #include "platform/android/jni/JniHelper.h"  
  10. #include <jni.h>  
  11.   
  12. const char* AppActivityCalssName = "org/cocos2dx/cpp/AppActivity";  
  13.   
  14. void AdmobHelper::hideAd(){  
  15.     cocos2d::JniMethodInfo t;  
  16.     if(cocos2d::JniHelper::getStaticMethodInfo(t,AppActivityCalssName,"hideAd","()V")){  
  17.         t.env->CallStaticVoidMethod(t.classID,t.methodID);  
  18.         t.env->DeleteLocalRef(t.classID);  
  19.         isAdShowing = false;  
  20.     }  
  21. }  
  22.   
  23. void AdmobHelper::showAd(){  
  24.     cocos2d::JniMethodInfo t;  
  25.     if(cocos2d::JniHelper::getStaticMethodInfo(t,AppActivityCalssName,"showAd","()V")){  
  26.         t.env->CallStaticVoidMethod(t.classID,t.methodID);  
  27.         t.env->DeleteLocalRef(t.classID);  
  28.         isAdShowing = true;  
  29.     }  
  30. }  
  31.   
  32. #else  
  33.   
  34. void AdmobHelper::hideAd(){  
  35.     log("hideAd() called");  
  36.     isAdShowing = false;  
  37.     return;  
  38. }  
  39.   
  40. void AdmobHelper::showAd(){  
  41.     log("showAd() called");  
  42.     isAdShowing = true;  
  43.     return;  
  44. }  
  45.   
  46. #endif  


然后,在 HelloWorldScene.cpp中调用它

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. #include "HelloWorldScene.h"  
  2. #include "AdmobHelper.h"  
  3.   
  4. USING_NS_CC;  
  5.   
  6. Scene* HelloWorld::createScene()  
  7. {  
  8.     // 'scene' is an autorelease object  
  9.     auto scene = Scene::create();  
  10.       
  11.     // 'layer' is an autorelease object  
  12.     auto layer = HelloWorld::create();  
  13.   
  14.     // add layer as a child to scene  
  15.     scene->addChild(layer);  
  16.   
  17.     // return the scene  
  18.     return scene;  
  19. }  
  20.   
  21. // on "init" you need to initialize your instance  
  22. bool HelloWorld::init()  
  23. {  
  24.     //////////////////////////////  
  25.     // 1. super init first  
  26.     if ( !Layer::init() )  
  27.     {  
  28.         return false;  
  29.     }  
  30.       
  31.     Size visibleSize = Director::getInstance()->getVisibleSize();  
  32.     Vec2 origin = Director::getInstance()->getVisibleOrigin();  
  33.   
  34.     /////////////////////////////  
  35.     // 2. add a menu item with "X" image, which is clicked to quit the program  
  36.     //    you may modify it.  
  37.   
  38.     // add a "close" icon to exit the progress. it's an autorelease object  
  39.     auto closeItem = MenuItemImage::create(  
  40.                                            "CloseNormal.png",  
  41.                                            "CloseSelected.png",  
  42.                                            CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));  
  43.       
  44.     closeItem->setPosition(Vec2(origin.x + visibleSize.width - closeItem->getContentSize().width/2 ,  
  45.                                 origin.y + closeItem->getContentSize().height/2));  
  46.   
  47.     // create menu, it's an autorelease object  
  48.     auto menu = Menu::create(closeItem, NULL);  
  49.     menu->setPosition(Vec2::ZERO);  
  50.     this->addChild(menu, 1);  
  51.   
  52.     /////////////////////////////  
  53.     // 3. add your codes below...  
  54.   
  55.     // add a label shows "Hello World"  
  56.     // create and initialize a label  
  57.       
  58.     auto label = LabelTTF::create("Hello World""Arial", 24);  
  59.       
  60.     // position the label on the center of the screen  
  61.     label->setPosition(Vec2(origin.x + visibleSize.width/2,  
  62.                             origin.y + visibleSize.height - label->getContentSize().height));  
  63.   
  64.     // add the label as a child to this layer  
  65.     this->addChild(label, 1);  
  66.   
  67.     // add "HelloWorld" splash screen"  
  68.     auto sprite = Sprite::create("HelloWorld.png");  
  69.   
  70.     // position the sprite on the center of the screen  
  71.     sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));  
  72.   
  73.     // add the sprite as a child to this layer  
  74.     this->addChild(sprite, 0);  
  75.   
  76.     //Ad  
  77.     auto listener = EventListenerTouchOneByOne::create();  
  78.     listener->setSwallowTouches(true);//如果不加入此句消息依旧会向下传递    
  79.     listener->onTouchBegan = [](Touch* touch,Event* event){  
  80.         if(AdmobHelper::isAdShowing)  
  81.             AdmobHelper::hideAd();  
  82.         else  
  83.             AdmobHelper::showAd();  
  84.         return true;  
  85.     };  
  86.     this->_eventDispatcher->addEventListenerWithSceneGraphPriority(listener,this);  
  87.       
  88.     return true;  
  89. }  
  90.   
  91.   
  92. void HelloWorld::menuCloseCallback(Ref* pSender)  
  93. {  
  94. #if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)  
  95.     MessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");  
  96.     return;  
  97. #endif  
  98.   
  99.     Director::getInstance()->end();  
  100.   
  101. #if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)  
  102.     exit(0);  
  103. #endif  
  104. }  


别忘了   Adnroid.mk文件

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. LOCAL_PATH := $(call my-dir)  
  2.   
  3. include $(CLEAR_VARS)  
  4.   
  5. LOCAL_MODULE := cocos2dcpp_shared  
  6.   
  7. LOCAL_MODULE_FILENAME := libcocos2dcpp  
  8.   
  9. LOCAL_SRC_FILES := hellocpp/main.cpp \  
  10.                    ../../Classes/AppDelegate.cpp \  
  11.                    ../../Classes/HelloWorldScene.cpp \  
  12.                    ../../Classes/AdmobHelper.cpp  
  13.   
  14. LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes  
  15.   
  16. LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static  
  17. LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static  
  18.   
  19. # LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static  
  20. # LOCAL_WHOLE_STATIC_LIBRARIES += cocosbuilder_static  
  21. # LOCAL_WHOLE_STATIC_LIBRARIES += spine_static  
  22. # LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static  
  23. # LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static  
  24. # LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static  
  25.   
  26.   
  27. include $(BUILD_SHARED_LIBRARY)  
  28.   
  29. $(call import-module,.)  
  30. $(call import-module,audio/android)  
  31.   
  32. # $(call import-module,Box2D)  
  33. # $(call import-module,editor-support/cocosbuilder)  
  34. # $(call import-module,editor-support/spine)  
  35. # $(call import-module,editor-support/cocostudio)  
  36. # $(call import-module,network)  
  37. # $(call import-module,extensions)  


最后,运行吧


转自:http://blog.csdn.net/leelyn/article/details/32712315

本文转载自:http://blog.csdn.net/aa294194253/article/details/38514195

共有 人打赏支持
piggybear
粉丝 3
博文 237
码字总数 37552
作品 0
西安
技术主管
Cocos2d-x 2.2.3 使用NDK配置编译环境

https://blog.csdn.net/wwj_748/article/details/30072379 2014年6月11日 Cocos2d-x 3.0以下的开发环境的配置恐怕折磨了很多人,使用cygwin配置编译环境足够让初学者蛋疼一阵子了。本篇博客就...

tropicofcancer9 ⋅ 04/19 ⋅ 0

谷歌I/O大会8大看点:有Android系统全面更新

谷歌I/O大会8大看点:有Android系统全面更新 2018-05-08 10:27编辑: 枣泥布丁分类:业界动态来源:cnBate Android谷歌I/O大会 招聘信息: C++工程师 Cocos2d-x游戏客户端开发 iOS开发工程师...

枣泥布丁 ⋅ 05/08 ⋅ 0

Android HookActivity一行代码实现开屏广告

需求背景 多个产品线都需要实现开屏广告,我们产品广告都是接的我们自家广告SDK,而只是几行代码请求我们广告,广告SDK会把View封装好返回来,要做的事情只是获取响应结果,并且出来. 如何实...

xwdz ⋅ 05/09 ⋅ 0

移动应用和游戏开发两个阶段在线视频培训的未来计划

在51CTO学院开线上视频课程已经3个多月了,也上了不少课。不过发现还有很多课没有开。现在就将未来的开课计划公布一下。计划分为两个阶段。第一阶段主要是Cocos2d-x和Cocos2d-js的游戏开发培...

androidguy ⋅ 2014/08/12 ⋅ 0

盘点最干净简洁的手机浏览器,到底哪个最好用?

X浏览器 用过的都说X浏览器的广告拦截很强悍 大小:0.8M,无开屏页,只有安卓版本。 用过 Chrome 的 都说X浏览器是好的备胎。 无新闻,无推送,无后台,不足1M却小而强大,给你淋漓尽致的浏览...

一个敲代码的前端妹子 ⋅ 05/31 ⋅ 0

不满微软收购GitHub 网友纷纷晒出表情包

不满微软收购GitHub 网友纷纷晒出表情包 2018-06-07 12:42编辑: yyuuzhu分类:程序人生来源:程序师 微软Github 招聘信息: C++工程师 Cocos2d-x游戏客户端开发 iOS开发工程师 京东招聘iOS...

yyuuzhu ⋅ 06/07 ⋅ 0

Cocos2d-x 3.0rc0 的Win32工程添加CocoStudio库

在新建Cocos 3.0rc0的Win32的工程中添加CocoStudio的支持. 一 软件及其下载 1. Cocos2d-x 3.0rc http://cdn.cocos2d-x.org/cocos2d-x-3.0rc0.zip 2. CocoStudio 1.3 在CocoStudio 1.3中可以直......

千山万水 ⋅ 2014/06/10 ⋅ 0

2018互联网女皇报告中文精华版来了!

2018互联网女皇报告中文精华版来了! 2018-05-31 14:30编辑: 枣泥布丁分类:业界动态来源:凤凰科技 趋势报告互联网女皇 招聘信息: C++工程师 Cocos2d-x游戏客户端开发 iOS开发工程师 京东...

枣泥布丁 ⋅ 05/31 ⋅ 0

微信小游戏会不会走上手游的老路?

微信小游戏会不会走上手游的老路? 2018-05-07 09:54编辑: 游星啊分类:业界动态来源:新语·蜜蜂观察 小游戏微信手游 招聘信息: C++工程师 Cocos2d-x游戏客户端开发 iOS开发工程师 京东招...

游星啊 ⋅ 05/07 ⋅ 0

Android Support V4、V7、V13介绍

一、Android Support v4、v7、v13 介绍 Google提供了 系列的包来保证 高版本sdk开发的向下兼容性 (即我们用 4.x 开发时,在 1.6 等版本上,可以使用高版本的有些特性,如Fragement,ViewPag...

Agnes2017 ⋅ 05/30 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

存储,对比私有云和公有云的不同

导读 说起公共存储,很难不与后网络公司时代的选择性外包联系起来,但尽管如此,它还是具备着简单和固有的可用性。公共存储的名字听起来也缺乏专有性,很像是把东西直接堆放在那里而不会得到...

问题终结者 ⋅ 昨天 ⋅ 0

C++难点解析之const修饰符

C++难点解析之const修饰符 c++ 相比于其他编程语言,可能是最为难掌握,概念最为复杂的。结合自己平时的C++使用经验,这里将会列举出一些常见的难点并给出相应的解释。 const修饰符 const在c...

jackie8tao ⋅ 昨天 ⋅ 0

聊聊spring cloud netflix的HystrixCommands

序 本文主要研究一下spring cloud netflix的HystrixCommands。 maven <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-clo......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部