下面小编为大家带来学习更多的云计算开发模式(共含2篇),希望大家喜欢!同时,但愿您也能像本文投稿人“不想取名字”一样,积极向本站投稿分享好文章。
文/孙立
话说云计算现在在概念上还不是特别的清晰,有很多厂商还是在炒作中,我相信云计算的确会给整个IT带来了很大的震动,但这种对行业的震动还得分国外和国内。
国外的确有很多公司把自己的IT系统部署到Amazon上,比如Netflix,节省了大量的运维人力成本。但国内来说,由于众所周知的政策原因,把IT系统托管到第三方,总会觉得不安全,所以像国外那样大量使用Amazon的情况并不常见。所以对国内的就业影响目前还不是很明显。但从长远来看,可能对某些IT外包系统会有些影响。
对于职业来说,云计算首先影响的人可能会是IT管理员和系统运维人员。但同样,云计算公司会需要大量的更加高级的IT管理员和运维人员。而那些基础管理员和运维人员需求将变少。
对于开发人员,可能需要学习更多的云计算开发模式。这跟以前用ASP开发网页,到现在都基本没市场了一样,但这些人并没有失业,只是转入到更加高级的开发中去了,
作为一名架构师,我也想谈谈架构师这个职业可能面临的风险。
费用问题。虽然大部分宣传和文章都在讲云计算如何便宜,但云计算并不能帮助架构师解决太多的问题。在云计算面前,同样需要根据云计算的特性去设计系统,以应对业务需求,用最少的资源满足最大的业务。虽然云计算能够很好地扩展,但还是要保证系统的性能,不然那笔客观的费用还不如不用云计算呢。
安全问题。云计算提供商并没有保证100%的高可用性,所以你还得准备应对高可用问题。对于数据本身的安全性,要保证不被厂商泄密。
迁移问题。当你选择一家云计算服务厂商,一旦投入使用,你是否还可以迁移到另外一家,成本又是多高?如果被一家捆死,那将是一个噩梦。我相信云计算厂商都希望把客户捆死的。国内的政策监管。云计算厂商会不会一夜之间就被关闭,让你遭受灭顶之灾。
赔偿问题。如果出现重大问题,损失的赔偿问题。
作者孙立,去哪儿网高级系统架构师
OC 中变量根据定义位置的不同,可以分为3大类:成员变量,局部变量和全局变量,
之前提到过方法是由函数演化而来的,所以不管是方法中定义的变量,还是函数中定义的变量,都是局部变量。
成员变量:指的是在类接口部分或类实现部分定义的变量。
说明:objective-c 的成员变量都是实例变量,并不支持真正的类变量。
实例变量从该类的实例被创建开始起存在,直到系统完全销毁这个实例,实例变量的作用域与对应实例的生存范围相同。实例变量可以理解为实例成员变量,它作为实例的一个成员,与实例共存亡。
只要实例存在,程序就可以访问该实例的实例变量,在程序中访问实例变量的语法:实例->实例变量;
示例程序:
#import
总结说明:成员变量无需显式初始化,只要为一个类定义了实例变量,系统会为实例变量执行默认初始化。基本类型的实例变量默认被初始化为0;指针类型的成员变量默认被初始化为 nil.
从内存存储的角度看,objective-c 的对象与C 的结构体相似。
这里用上面的代码中定义的类创建2个实例。结合示意图来说明 OC 中实例变量的初始化和内存中的运行机制。
// 创建第一个FKPerson对象FKPerson* p1 = [[FKPerson alloc] init];
// 创建第二个FKPerson对象FKPerson* p2 = [[FKPerson alloc] init];
// 分别为两个FKPerson对象的name成员变量赋值 p1->_name = @张三; p2->_name = @孙悟空;
通过内部局部变量来模拟类变量,
**注意:**static关键字不能修饰成员变量,只能修饰局部变量,全局变量和函数。
为了模拟类变量,可以在类实现部分定义个 static 修饰的全局变量,并提供一个类方法来暴露该全局变量。
示例代码:
头文件:FKUser.h
#import
实现文件:FKUser.m
#import FKUser.hstatic NSString* nation = nil;@implementation FKUser+ (NSString*) nation{ // 返回nation全局变量 return nation;}+ (void) setNation: (NSString*) newNation{ // 对nation全局变量赋值 if(![nation isEqualToString: newNation]) { nation = newNation; }}@endint main(int argc , char * argv[]) { @autoreleasepool{ // 为FKUser的类变量赋值 [FKUser setNation:@中国]; // 访问FKUser的类变量 NSLog(@FKUser的nation类变量为:%@, [FKUser nation]); }}
如果一个类始终只能创建一个实例,则这个类称为单例类。
单例类可以通过 static 全局变量来实现,程序考虑定义一个 static全局变量,该变量用于保存已经创建的 singleton 对象——每次程序需要获取该实例的时候,先判断该 static 全局变量是不是为 nil, 如果为 nil,则初始化一个实例并赋值给 static 全局变量。
示例程序:
FKSingleton.h
#import
FKSingleton.m
#import FKSingleton.hstatic id instance = nil;@implementation FKSingleton+ (id) instance{ // 如果instance为nil if(!instance) { // 创建一个Singleton实例,并将该实例赋给instance全局变量 instance = [[super alloc] init]; } return instance;}@endint main(int argc , char * argv[]) { @autoreleasepool{ // 判断两次获取的实例是否相等,程序将会返回1(代表真) NSLog(@%d , [FKSingleton instance] == [FKSingleton instance]); }}
★ 如何学习安卓开发