http://www.zhihu.com/question/20292834
新浪云:http://sae.sina.com.cn/
阿里云:http://www.aliyun.com/
百度云:http://yun.baidu.com/
谷歌云:https://developers.google.com/appengine/?hl=zh-cn
亚马逊云:http://aws.amazon.com/
阿里云主要是iaas,服务器,数据库,云存储,手机咱不评价了。
盛大云,iaas,完全模仿amazon。
sina是paas。
在国内,不推荐用国外的云,我以前就用过GAE,后来的事,大家就知道了,到现在仍然无法访问,心都凉了。
国内的云相对成熟一点的(仅仅是相对)要算阿里和新浪了。
百度的BAE还在测试阶段,计费方式还不明了,如果是现阶段创业就先不要用了,不管他有多好,毕竟存在很多无法预料的风险(计费方式、系统BUG、API的开
放性)。其实个人还是有点看好百度的,毕竟实力在那里,只是现阶段不推荐。
对于阿里和SAE,就像楼上说的,sina是paas,你无法部署你自己的应用软件,自由的管理服务器,你拥有的仅仅是一个虚拟空间。但好处就是,刚开始无需支
付费用就可以开始你的网站,注册实名制后你会得到2500云豆,在流量没那么大的情况下,你基本可以撑几个月。如果你申请到中级开发者认证,每月还有1W
云豆的补充,级别越高补充的越多。理想情况下,你甚至可以0成本(硬件投入)创业。但有一点比较遗憾的是,sina还没有域名和备案相关业务,你无法给你的
域名用sae备案,甚至有网站在迁移到SAE后,原域名备案被取消的情况,所以对此要慎重。sina给出的解决方法是,通过海外的域名解析合作商,相当做了一次
映射,那么,这样做的后果就是:1.影响浏览速度。2.费用将是原先的两倍。因为数据是出国了再回来的,打了一转,价格也就翻倍了。
阿里是我比较推荐的,好像我也说不出什么明显的缺点来,近期还有一个域名备案的优惠(200元)。不过对比新浪和GAE,阿里的计费方式就没有那么灵活,
当然也不存在什么免费的配额,要使用就得掏银子(也有试用期,就5天而已,忽略不计)。优点就是,产品较全,涵盖了绝大多数互联网应用的需求(iaas没
什么不能做到的,除非你想用云开发云,哈哈)。
细心的人会发现当我们new 一个文件的时候会发现下图的部分.
但是这个问题来了Category 和 Extension 就近又什么区别呢?
实现这样一种场景,当我们用我们用NSArray的时候经常会遇到要去重的操作,可是自带的NSArray并没有这个方法,想要用你第一印象是自己写个类继承他,OC 给我们提供了一个方法可以直接在原有的基础上进行扩展.这就Category.分类能够做到的事情主要是:即使在你不知道一个类的源码情况下,向这个类添加扩展的方法。一个类可以有n+个分类,这些分类的实现可以在不同的文件中.
下面是我写的一个分类
NSArray+Unique.h
@interface NSArray (Unique) - (NSArray *) uniqueMembers; - (NSArray *) unionWithArray: (NSArray *) array; @end
NSArray+Unique.m
@implementation NSArray (Unique) - (NSArray *) uniqueMembers { NSMutableArray *copy = [self mutableCopy]; for (id object in self) { [copy removeObjectIdenticalTo:object]; [copy addObject:object]; } return [copy autorelease]; } - (NSArray *) unionWithArray: (NSArray *) anArray { if (!anArray) return self; return [[self arrayByAddingObjectsFromArray:anArray] uniqueMembers]; } @end
是不是很简单.但是应用Category还有如下
需要注意的问题:Category可以访问原始类的实例变量,但不能添加实例变量,如果想添加变量,那就通过继承创建子类来实现。
Category的优先级要高,当类中的方法跟原使类中的方法重名的时候是会重载原始类的方法.
和普通接口有所区别的是,在Category的实现文件中的实例方法只要你不去调用它你可以不用实现所有声明的所有方法。
不要在Category 调用 Super方法
扩展(Extension)人们往往以为就是匿名分类,因为他的语法看起来很像
下面是一个Extension
@interface ExtensionClass : NSObject @property (retain, readonly) float value; @end @interface ExtensionClass () { //注意此处:扩展 } @property (retain, readwrite) float value; - (void)setValue:(float)newValue; @end @implementation ExtensionClass - (float)value { return value; } - (void)setValue:(float)newValue { value = newValue; } @end
虽然它们的语法的确很相似。虽然都可以用来为一个现有的类添加方法和属性,但它们的目的和行为却是不同的。
Class extensions注意事项:可以定义属性(实例变量)
在公共接口(类的声明中)中,开发者可以声明一个属性(实例变量)是只读的,随后在类扩展中声明为可写。这样,对外部代码而言,该属性(实例变量)将是只读的,而内部代码却可以使用它setter方法。
分类必须在第一个@interface中声明方法,并且在@implementation中提供实现,不然运行时出错。而类扩展的声明可以不在第一个@interface中去声明
另外 本人打算十一后离职换份工作,哪位仁兄公司有意向 站内信联系,帮忙内推下哈.
再打下广告哈 我搭建的个人博客 也已经上线了 引用的是hexo , 地址是hufeng825.github.com ui配色再微调中,对ie10 以下支持不太好 建议用chrome Firefox 或者safrari 浏览 另外也已经对移动设备做了响应是布局.
我通过httpclient的get方法访问,
通过返回的response的头部的location可以得到服务器的重定向地址(Location)
在java环境下测试都没问题
可是在安卓SDK环境下 却得不到response的location
通过抓包分析,发现在android下,
httpclient的实例执行get请求后,一起连重定向的get方法都执行了
所以最后得到的response是重定向之后地址的get请求的response,所以得不到locatioon,而且responseCode==200,而不是在java测试环境下的302,说明这个时候的response是重定向之后的response
这个时候需要阻止HttpClient的自动重定向,方法如下:
public static String getLocationMethod(String reqUrl, Context context) {
DefaultHttpClient httpclient = new DefaultHttpClient();
String location = null;
int responseCode = 0;
try {
final HttpGet request = new HttpGet(reqUrl);
HttpParams params = new BasicHttpParams();
params.setParameter("http.protocol.handle-redirects", false); // 默认不让重定向
// 这样就能拿到Location头了
request.setParams(params);
HttpResponse response = httpclient.execute(request);
responseCode = response.getStatusLine().getStatusCode();
Header[] headers = response.getAllHeaders();
if(responseCode==302){
Header locationHeader = response.getFirstHeader("Location");
if (locationHeader != null) {
location = locationHeader.getValue();
}
}
} catch (Exception e) {
e.printStackTrace();
MyLog.d("exception=", e.toString());
}
return location;
}
添加 params.setParameter("http.protocol.handle-redirects", false);之后返回结果如下:
ResponseCode= 302
Date:Sun, 04 Jan 1970 18:38:36 GMT
Connection:Close
Cache-Control:no-store
Pragma:no-caches
Last-Modified:Sun, 04 Jan 1970 18:38:36 GMT
Content-Typ:text/html; charset=iso-8859-1
Content-Length:1016
Expires:Mon, 01 Jan 1980 08:00:00 GM
Location:http://124.205.91.178/i8cn/index.php?wlanacip=124.205.91.178&wlanacname=124.205.91.180&wlanuserip=224.48.0.1&vslanusermac=f05a0965503c&vslanessid=ABLOOMY-WK&ssid=ABLOOMY-WK&vslanuserip=172.16.1.120&vslanurl=http%3A%2F%2Fwww.hao123.com%2F&c=1