转自:http://blog.csdn.net/mapboo/article/details/49536297

CSDN博主Mapboo原创,感谢博主!

==============================

前言:

纵观国内的广告平台,比如多盟,万普,百度,腾讯,或者别的一些广告平台,真是应接不暇,但是具体接入那就自己判断了,经过一番折腾,最终还是选择了谷歌平台,理应是稳定,可靠,安全,收入颇高,但是登录网络有点问题,应该大家都懂吧,这里就不再赘述了,各自想办法吧;

准备工作:

1,首先你是Android开发者,或者至少会点Java编程基础;

2,熟悉使用Android Studio(以下简称:AS),即官方Android应用开发工具;

3,注册了http://www.google.cn/admob/ 应用,并且有个banner_ad_unit_id吧;

4,待加入横幅广告条的app;

5,可参考官方接入指南:https://developers.google.com/mobile-ads-sdk/docs/admob/android/quick-start

开发过程:

1,创建或打开AS 工程,本示例是新建工程;

2,打开Android SDK Manager安装Google Repository;

3,关联我们的广告SDK,这里有两种方式:

A  点击Project Structure 直接选取,如下图:

com.google.android.gms:play-services:7.8.0;

B 打开build-gradle 加入一行代码,如下图:

compile 'com.google.android.gms:play-services:6.+'

4,程序会开始自动编译,然后打开AndroidManifest.xml 文件,添加如下代码:

[java] view plain copy

print?

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3.     package="com.mapboo.adviewdemo" >
  4.    <span style="color:#ff0000;"> <uses-permission android:name="android.permission.INTERNET" />
  5.     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/></span>
  6.     <application
  7.         android:allowBackup="true"
  8.         android:icon="@mipmap/ic_launcher"
  9.         android:label="@string/app_name"
  10.         android:theme="@style/AppTheme" >
  11.        <span style="color:#ff0000;"> <meta-data android:name="com.google.android.gms.version"
  12.             android:value="@integer/google_play_services_version" /></span>
  13.         <activity
  14.             android:name=".MainActivity"
  15.             android:label="@string/app_name" >
  16.             <intent-filter>
  17.                 <action android:name="android.intent.action.MAIN" />
  18.                 <category android:name="android.intent.category.LAUNCHER" />
  19.             </intent-filter>
  20.         </activity>
  21.        <span style="color:#ff0000;"> <activity
  22.             android:name="com.google.android.gms.ads.AdActivity"
  23.             android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
  24.             android:theme="@android:style/Theme.Translucent" /></span>
  25.     </application>
  26. </manifest>

 

5,打开activity_main.xml 文件,输入如下代码:

[java] view plain copy

print?

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2.     xmlns:tools="http://schemas.android.com/tools"
  3.     xmlns:ads="http://schemas.android.com/apk/res-auto"
  4.     android:layout_width="match_parent"
  5.     android:layout_height="match_parent"
  6.     android:paddingBottom="@dimen/activity_vertical_margin"
  7.     android:paddingLeft="@dimen/activity_horizontal_margin"
  8.     android:paddingRight="@dimen/activity_horizontal_margin"
  9.     android:paddingTop="@dimen/activity_vertical_margin"
  10.     tools:context=".MainActivity"
  11.     android:gravity="center_vertical">
  12.     <TextView
  13.         android:layout_width="match_parent"
  14.         android:layout_height="wrap_content"
  15.         android:text="@string/demoName"
  16.         android:gravity="center"
  17.         android:textSize="30dp"
  18.         android:layout_marginTop="150dp"
  19.         />
  20.     <com.google.android.gms.ads.AdView
  21.         android:id="@+id/adView_bottom"
  22.         android:layout_width="match_parent"
  23.         android:layout_height="wrap_content"
  24.         android:layout_alignParentBottom="true"
  25.         android:layout_centerHorizontal="true"
  26.         android:layout_gravity="bottom"
  27.         ads:adSize="BANNER"
  28.         ads:adUnitId="@string/banner_ad_unit_id" />
  29. </RelativeLayout>

 

[java] view plain copy

print?

  1. <resources>
  2.     <string name="app_name">AdViewDemo</string>
  3.     <string name="demoName">谷歌Admob广告条示例</string>
  4.     <string name="banner_ad_unit_id">ca-app-pub-8514769117499822/6386262194</string>
  5. </resources>

 

6,打开MainActivity文件,输入如下代码:

[java] view plain copy

print?

  1. package com.mapboo.adviewdemo;
  2. import android.support.v7.app.ActionBarActivity;
  3. import android.os.Bundle;
  4. import android.util.Log;
  5. import android.view.Menu;
  6. import android.view.MenuItem;
  7. import com.google.android.gms.ads.AdListener;
  8. import com.google.android.gms.ads.AdRequest;
  9. import com.google.android.gms.ads.AdView;
  10. public class MainActivity extends ActionBarActivity {
  11.     @Override
  12.     protected void onCreate(Bundle savedInstanceState) {
  13.         super.onCreate(savedInstanceState);
  14.         setContentView(R.layout.activity_main);
  15.         /**
  16.          * 创建广告条对象
  17.          */
  18.         AdView mAdView = (AdView) findViewById(R.id.adView_bottom);
  19.         AdRequest adRequest = new AdRequest.Builder().build();
  20.         /**
  21.          * 创建一个监听,比如判断用户是不是已经点击了广告条,以此来给用户增加积分等操作;
  22.          */
  23.         AdListener listener = new AdListener() {
  24.             @Override
  25.             public void onAdClosed() {
  26.                 super.onAdClosed();
  27.                 Log.i("TAG""onAdClosed");
  28.             }
  29.             @Override
  30.             public void onAdFailedToLoad(int errorCode) {
  31.                 super.onAdFailedToLoad(errorCode);
  32.                 Log.i("TAG""onAdFailedToLoad");
  33.             }
  34.             @Override
  35.             public void onAdLeftApplication() {
  36.                 super.onAdLeftApplication();
  37.                 Log.i("TAG""onAdLeftApplication");
  38.             }
  39.             @Override
  40.             public void onAdLoaded() {
  41.                 super.onAdLoaded();
  42.                 Log.i("TAG""onAdLoaded");
  43.             }
  44.             @Override
  45.             public void onAdOpened() {
  46.                 super.onAdOpened();
  47.                 Log.i("TAG""onAdOpened");
  48.             }
  49.         };
  50.         /**
  51.          * 设置监听
  52.          */
  53.         mAdView.setAdListener(listener);
  54.         /**
  55.          * 开始载入广告条
  56.          */
  57.         mAdView.loadAd(adRequest);
  58.     }
  59.     /**
  60.      *
  61.      官方示例:https://developers.google.com/mobile-ads-sdk/docs/admob/android/quick-start
  62.      
  63.      分享:安卓发布平台 http://blog.csdn.net/mapboo/article/details/49531043
  64.      应用汇:http://www.appchina.com/
  65.      安智市场:http://www.anzhi.com/
  66.      华为市场:http://appstore.huawei.com/
  67.      百度市场:http://app.baidu.com/pass/center
  68.      蒲公英:http://www.pgyer.com
  69.      N多网 :http://www.nduoa.com/developer
  70.      豌豆荚:http://developer.wandoujia.com/
  71.      360:http://dev.360.cn
  72.      QQ:http://op.open.qq.com
  73.      FIR:http://fir.im
  74.      Android中国开发者 交流QQ群:361871827 欢迎加入一起讨论技术...
  75.      */
  76. }

 

编译运行:

运行代码,就会出现Admob广告条,只要替换自己的banner_ad_unit_id就能开始赚钱了;

效果图:

本实例源代码下载地址:http://pan.baidu.com/s/1pJ3UEcr

Android中国开发者 QQ群:361871827 欢迎一起讨论技术..

优化博客网页内容时,将js和css指定到static.151051.cn域名下,没想到其中css使用的字体文件无法加载,提示错误信息如下:

Font from origin 'http://static.151051.cn' has been blocked from loading by Cross-Origin Resource Sharing policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.151051.cn' is therefore not allowed access.

好吧,字面上的意思是,字体被禁止调用,原因头信息中并不包含Access-Control-Allow-Origin,没有授权给www.151051.cn使用,原谅我蹩脚的英文。随手百度了一下Access-Control-Allow-Origin这货,原来这货是用来定义允许哪个域使用资源,可以有效解决字体远程调用的问题。一不做二不休,开搞。

如果是php文件,可以在php文件中定义<?php header("Access-Control-Allow-Origin: http://www.151051.cn");?> 注意,这里网上有很多文章是用*代替域名,这样做比较"呵呵",所以还是指定域名比较好,安全性高一些。

像我现在这种需求,在static.151051.cn授权给www.151051.cn使用,而且static并不想支持php,那肿么办呢?

呵呵,好办,直接在nginx里加入到头信息中,一劳永逸。如下:
location ~ .*\.(js|css|woff|ttf|svg|eot|oft)?$
{
add_header Access-Control-Allow-Origin http://www.151051.cn;
expires 2h;
}

好了,解决!

转:http://blog.chinaunix.net/uid-9395696-id-3432841.html
modprobe ip_conntrack
echo "modprobe ip_conntrack" >> /etc/rc.local
sysctl.conf修改
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.ip_conntrack_max =655360
net.core.netdev_max_backlog = 8192
net.core.somaxconn = 4096
php.ini修改
default_socket_timeout = 120
memory_limit = 4096M
php-fpm修改
listen.backlog = 3072
pm.max_requests = 102400

参数根据自己服务器的性能调整

转自:http://haibo600.blog.51cto.com/blog/1951311/874603

1.worker_processes 越大越好(一定数量后性能增加不明显)
2.worker_cpu_affinity 所有cpu平分worker_processes 要比每个worker_processes 都跨cpu分配性能要好;不考虑php的执行,测试结果worker_processes数量是cpu核数的2倍性能最优
3.unix domain socket(共享内存的方式)要比tcp网络端口配置性能要好
不考虑backlog,请求速度有量级的飞跃,但错误率超过50%
加上backlog,性能有10%左右提升
4.调整nginx、php-fpm和内核的backlog(积压),connect() to unix:/tmp/php-fpm.socket failed (11: Resource temporarily unavailable) while connecting to upstream错误的返回会减少
nginx:
配置文件的server块
listen 80 default backlog=1024;
php-fpm:
配置文件的
listen.backlog = 2048
kernel参数:
/etc/sysctl.conf,不能低于上面的配置
net.ipv4.tcp_max_syn_backlog = 4096
net.core.netdev_max_backlog = 4096
5.增加单台服务器上的php-fpm的master实例,会增加fpm的处理能力,也能减少报错返回的几率
多实例启动方法,使用多个配置文件:
/usr/local/php/sbin/php-fpm -y /usr/local/php/etc/php-fpm.conf &
/usr/local/php/sbin/php-fpm -y /usr/local/php/etc/php-fpm1.conf &
nginx的fastcgi配置
    upstream phpbackend {
#      server   127.0.0.1:9000 weight=100 max_fails=10 fail_timeout=30;
#      server   127.0.0.1:9001 weight=100 max_fails=10 fail_timeout=30;
#      server   127.0.0.1:9002 weight=100 max_fails=10 fail_timeout=30;
#      server   127.0.0.1:9003 weight=100 max_fails=10 fail_timeout=30;
      server   unix:/var/www/php-fpm.sock weight=100 max_fails=10 fail_timeout=30;
      server   unix:/var/www/php-fpm1.sock weight=100 max_fails=10 fail_timeout=30;
      server   unix:/var/www/php-fpm2.sock weight=100 max_fails=10 fail_timeout=30;
      server   unix:/var/www/php-fpm3.sock weight=100 max_fails=10 fail_timeout=30;
#      server   unix:/var/www/php-fpm4.sock weight=100 max_fails=10 fail_timeout=30;
#      server   unix:/var/www/php-fpm5.sock weight=100 max_fails=10 fail_timeout=30;
#      server   unix:/var/www/php-fpm6.sock weight=100 max_fails=10 fail_timeout=30;
#      server   unix:/var/www/php-fpm7.sock weight=100 max_fails=10 fail_timeout=30;
    }
        location ~ \.php* {
            fastcgi_pass   phpbackend;
#           fastcgi_pass   unix:/var/www/php-fpm.sock;
            fastcgi_index index.php;
       ..........
       }
6.测试环境和结果
内存2G
swap2G
cpu 2核 Intel(R) Xeon(R) CPU E5405  @ 2.00GHz
采用ab远程访问测试,测试程序为php的字符串处理程序
1)在开4个php-fpm实例,nginx 8个worker_processes 每个cpu4个worker_processes ,backlog为1024,php的backlog为2048,内核backlog为4096,采用unix domain socket连接的情况下,其他保持参数不变
性能和错误率较为平衡,可接受,超过4个fpm实例,性能开始下降,错误率并没有明显下降
结论是fpm实例数,worker_processes数和cpu保持倍数关系,性能较高
影响性能和报错的参数为
php-fpm实例,nginx worker_processes数量,fpm的max_request,php的backlog,unix domain socket
10W请求,500并发无报错,1000并发报错率为0.9%
500并发:
Time taken for tests:   25 seconds avg.
Complete requests:      100000
Failed requests:        0
Write errors:           0
Requests per second:    4000 [#/sec] (mean) avg.
Time per request:       122.313 [ms] (mean)
Time per request:       0.245 [ms] (mean, across all concurrent requests)
Transfer rate:          800 [Kbytes/sec] received avg.
1000并发:
Time taken for tests:   25 seconds avg.
Complete requests:      100000
Failed requests:        524
   (Connect: 0, Length: 524, Exceptions: 0)
Write errors:           0
Non-2xx responses:      524
Requests per second:    3903.25 [#/sec] (mean)
Time per request:       256.197 [ms] (mean)
Time per request:       0.256 [ms] (mean, across all concurrent requests)
Transfer rate:          772.37 [Kbytes/sec] received
2)在其他参数不变,unix domain socket换为tcp网络端口连接,结果如下
500并发:
Concurrency Level:      500
Time taken for tests:   26.934431 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Requests per second:    3712.72 [#/sec] (mean)
Time per request:       134.672 [ms] (mean)
Time per request:       0.269 [ms] (mean, across all concurrent requests)
Transfer rate:          732.37 [Kbytes/sec] received
1000并发:
Concurrency Level:      1000
Time taken for tests:   28.385349 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Requests per second:    3522.94 [#/sec] (mean)
Time per request:       283.853 [ms] (mean)
Time per request:       0.284 [ms] (mean, across all concurrent requests)
Transfer rate:          694.94 [Kbytes/sec] received
与1)比较,有大约10%的性能下降
7. 5.16调整fpm的max_request参数为1000,并发1000报错返回降到200个以下,
Transfer rate在800左右

#!/bin/sh

# Uncomment the following two lines for normal desktop:

# unset SESSION_MANAGER

# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup

[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources

xsetroot -solid grey

vncconfig -iconic &

xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &

#twm &

gnome-session &

~