当前位置:  编程技术>移动开发
本页文章导读:
    ▪新浪云、阿里地区云、百度云、谷歌云、亚马逊云的区别是什么?哪个更适合国内创业者        新浪云、阿里云、百度云、谷歌云、亚马逊云的区别是什么?哪个更适合国内创业者?http://www.zhihu.com/question/20292834 新浪云:http://sae.sina.com.cn/ 谷歌云:https://developers.google.com/appengine/?hl=zh.........
    ▪ What is the difference between Category and Class Extension        What is the difference between Category and Class Extension? 实现这样一种场景,当我们用我们用NSArray的时候经常会遇到要去重的操作,可是自带的NSArray并没有这个方法,想要用你第一印象是自己写个类继承.........
    ▪ HttpClient get请求在HttpResponse中无法获得Location的有关问题       HttpClient get请求在HttpResponse中无法获得Location的问题我通过httpclient的get方法访问, 通过返回的response的头部的location可以得到服务器的重定向地址(Location) 在java环境下测试都没问题 可是在安.........

[1]新浪云、阿里地区云、百度云、谷歌云、亚马逊云的区别是什么?哪个更适合国内创业者
    来源: 互联网  发布时间: 2014-02-18
新浪云、阿里云、百度云、谷歌云、亚马逊云的区别是什么?哪个更适合国内创业者?

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没
什么不能做到的,除非你想用云开发云,哈哈)。


    
[2] What is the difference between Category and Class Extension
    来源: 互联网  发布时间: 2014-02-18
What is the difference between Category and Class Extension?


细心的人会发现当我们new 一个文件的时候会发现下图的部分.

但是这个问题来了Category 和 Extension 就近又什么区别呢?

1:什么是Category?

实现这样一种场景,当我们用我们用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方法

  • 2:什么是 Extension

    扩展(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 浏览 另外也已经对移动设备做了响应是布局.



        
    [3] HttpClient get请求在HttpResponse中无法获得Location的有关问题
        来源: 互联网  发布时间: 2014-02-18
    HttpClient get请求在HttpResponse中无法获得Location的问题

    我通过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

    Server:Abloomy Http Server 1.0
    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



        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    windows iis7站长之家
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3