当前位置:  编程技术>移动开发
本页文章导读:
    ▪Objective C中的字符串及聚合        Objective C中的字符串及集合Objective C中的字符串及集合 一.     NSString字符串 1.    基本概念: 1)  Cocoa中提供NSString和NSMutableString两种字符串,前者用于处理内容不变、固定的字符串,而N.........
    ▪ anroid正题更换详解        anroid主题更换详解项目需要进行主题更换,防Go桌面那样以apk形式进行主题更换,到网上找了下资料,资料不多,所以把自己学习的东西整理一下,以便以后查阅,同时也希望能帮到有需要的.........
    ▪ 淘宝技术发展 —— 题词       淘宝技术发展 —— 前言 光棍节的狂欢 “时间到,开抢!”坐在电脑前早已等待多时的小美一看时间已到2011年11月11日零时,便迫不及待地投身于淘宝商城一年一度的大型网购促销活动—— .........

[1]Objective C中的字符串及聚合
    来源: 互联网  发布时间: 2014-02-18
Objective C中的字符串及集合

Objective C中的字符串及集合

一.     NSString字符串

1.    基本概念:

1)  Cocoa中提供NSString和NSMutableString两种字符串,前者用于处理内容不变、固定的字符串,而NSMutableString类用于处理内容可变的字符串;

继承关系:NSObjectàNSStringàNSMutableString

2)  NSString的字符编码格式为Unicode编码;

NSStringEncoding:定义的常量

NSASCIIStringEncoding:  ASCII

NSUTF8StringEncoding;  UTF-8

NSUnicodeStringEncoding; utf-8

2.    字符串的生成

1)  使用@””标识NSString字符串,如:

NSString  str =@”yang”;

2)  但使用上述方式只能生成含有英文和数字的NSString实例,要生成含有汉子等双字节的字符串实例,必须使用:

+ (id)stringWithCString:(const char *)cString encoding:(NSStringEncoding)enc

 

-   (id)initWithCString:(const char *)nullTerminatedCString encoding:(NSStringEncoding)encoding

第一个方法创建自动释放型的实例。后一个方法是执行alloc方法后进行初始化的;

3)  使用格式创建字符串:

+ (id)stringWithFormat:(NSString *)format, ...

-   (id)initWithFormat:(NSString *)format ...

 格式本身是NSString串,因此加上@,如果里面有NSString字符串实例,用%@标识;

NSString str =[NSString stringWithFormat:@“%@pro”,str1];

4)  NSRange用于定义一个数据的范围

NSRangerange = NSMakeRange(0,5);

3.    字符串处理

1)  字符串长度:- (NSUInteger)length

2)  取字符串某个位置的字符

- (unichar)characterAtIndex:(NSUInteger)index

3)  拼接字符串:

-(NSString *)stringByAppendingString: (NSString*)aString

-(NSString *)stringByAppendingFormat: (NSString*)format...

例:str2 = [str stringByAppendingString:@”%@%@”,str3,str4];

4)  求子字符串:

-   (NSString *)substringFromIndex:(NSUInteger)anIndex

-   (NSString *)substringToIndex:(NSUInteger)anIndex

-   (NSString *)substringWithRange:(NSRange)aRange

5)  比较字符串大小:

- (BOOL)isEqualToString:(NSString *)aString

6)  比较前置和后置串:

-   (BOOL)hasPrefix:(NSString *)aString

-   (BOOL)hasSuffix:(NSString *)aString

7)  字符串检索:

- (NSRange)rangeOfString:(NSString*)aString

8)   

二.     NSMutableString字符串

1.    生成

生成方法与NSString相同,但是不能使用@的方法生成NSMutable字符串;

NSString:

+(id)string;//生成一个空字符串

2.    追加字符串

-   (void)appendString:(NSString*)aString

-   (void)appendFormat:(NSString*)format ...

3.    插入字符串

- (void)insertString:(NSString*)aString atIndex:(NSUInteger)anIndex

4.    删除字符串

-   (void)deleteCharactersInRange:(NSRange)aRange

5.字符串可以进行文件的读写;

集合部分

            cocoa中,数组、字典以及 集合部分都分可变和不可变两种;

      可变的可以增加、删除和修改里面的数据,不可变的则不能;

三.     NSObject àNSArray àNSMutableArray

在Objective C中也可以使用C语言的数组,如:NSString* names[6];

但是不方便,要使用NSArray数组,数组必须是Cocoa的对象。因此int,char这些数据类型不能直接包括在内(包装类可以实现)

1)  初始化:

指定一个对象初始化:

+ (id)arrayWithObject:(id)anObject

 

NSArray*array = [NSArray arrayWithObject:string];

2)  多个对象进行初始化

-   (id)initWithObjects:(id)firstObj, ...

+(id)arrayWithObjects:(id)firstObj, ...

array= [NSArrayarrayWithObjects:@”tom”,@”yang”,@”blacks”,nil];

指定了多个对象后,最后一个参数必须指定为nil,否则出错;

3) 数组长度: - (NSUInteger)count

4)  通过索引获得对象:

-   (id)objectAtIndex:(NSUInteger)index

在NSArray中,也可以通过索引来获取元素,但是不能使用C语言中括号中指定索引的方法,必须使用上面的方法;

5) 获取某个元素的索引位置:

- (NSUInteger)indexOfObject:(id)anObject

四.     NSMutableArray

NSMutableArray是NSArray的子类,父类的所有方法子类都可以用。

1)  其他的初始化方法:

-(id) initWithCapacity:(NSUInteger) numItems

+(id) arrayWithCapacity:(NSUInteger) numItems

+ (id)array;//创建内容为空的数组;

2)  添加对象

-   (void)addObject:(id)anObject

//

-   (void)addObjectsFromArray:(NSArray*)otherArray

//

-   (void)setArray:(NSArray*)otherArray

//

-   (void)insertObject:(id)anObject atIndex:(NSUInteger)index

3)  对象的删除

-   (void)removeObject:(id)anObject

4)  更改某个位置的对象:

-(void) replaceObjectAtIndex:(NSUInteger) indexwithObject:(id) object

五.     字典

用key-value形式存储数据;

1)  初始化

1.    指定一个键值对初始化NSDictionary

+ (id)dictionaryWithObject:(id)anObject forKey:(id < NSCopying>)aKey

dic= [NSDictionary dictionaryWithObject:@”Inter i5” forKey:@”CPU”];

2.    指定多个键值对初始化NSDictionary,两个数组或多个键值对

+ (id)dictionaryWithObjects:(NSArray*)objects forKeys:(NSArray*)keys

+ (id)dictionaryWithObjectsAndKeys:(id)firstObject ,...

2)  获取字典中键值对的个数

-(NSUInteger) count;

3)  获取所有的key和值

-(NSArray*)allvalues;

-(NSArray*) allkeys;

4)  从key值得到value值

-(id) objectForkey: (id)key

六.     NSMutableDictionary

1)  生成空字典

NSDictionary +(id)dictionary;

2)  追加键值对

NSMutableDictionary

-(void)setObject:(id)key forKey: (id)key;

3)  删除键值对

-(void)removeObjectForkey: (id)key;

七.     NSSet,NSMutableSet

Set是无序集合,其他跟array和dictionary类似;

1)  向Array,Dictionary,Set中添加元素,会主动持有他的所有权;

2)  删除元素时,会释放其所有权;

八.     快速枚举

for …in语法

for(Type variable in expression){

statements }

数组的快速枚举

for(NSString *element in array){

NSLog(@”%@”,element);

}

字典的快速枚举

for(NSString *key in dictionary){

NSLog(@”english:%@ number:%@”, [dictionaryobjectForKey:key],key);

}

 


    
[2] anroid正题更换详解
    来源: 互联网  发布时间: 2014-02-18
anroid主题更换详解

项目需要进行主题更换,防Go桌面那样以apk形式进行主题更换,到网上找了下资料,资料不多,所以把自己学习的东西整理一下,以便以后查阅,同时也希望能帮到有需要的人:

一、网上找到的

网址:http://edison-cool911.iteye.com/blog/991048

这个方法要求主题apk中的资源id和应用资源id完全相同,如果应用资源多的话,会出现主题包偏大的情况。

二、我的方法

首先跟上面的一样,用context = createPackageContext(packageName,

CONTEXT_IGNORE_SECURITY);创建一个主题apk的context,再用context得到resources,用Resources类的getIdentifier(name, defType, defPackage)方法,该方法是得到对应名称的资源的id如果资源不存在则返回0:

Name:对应的资源名称(如资源R.drawable.ic_launcher--->name为“ic_launcher”)

defType:对应资源的类型(如资源R.drawable.ic_launcher--->defType为“drawable”)

defPackage:主题apk的包名

有了这个方法就可以用下面的代码取得主题包中的资源:

if (resId == 0) {
			// 图片不存在,使用默认图片
			Resources res = skinContext.getResources();
			int id = res.getIdentifier(drawableName, "drawable",
					skinInfo.context.getPackageName());
			drawable = res.getDrawable(id);
		} else {
			// 图片存在
			Resources res = skinInfo.skinContext.getResources();
			drawable = res.getDrawable(R.drawable.xxx);
		}


还有一个会用到的selector,所以要用程序实现selector,这就要用到StateListDrawable这个类

通过上面的方法得到selector中对应的资源,再通过下面的方法得到selector:

public static StateListDrawable newSelector(Drawable pressed,
			Drawable focused, Drawable normal) {
		StateListDrawable states = new StateListDrawable();
		states.addState(new int[] { android.R.attr.state_pressed }, pressed);
		states.addState(new int[] { android.R.attr.state_focused }, focused);
		states.addState(new int[] { -android.R.attr.state_pressed }, normal);


		return states;
	}


用view的setBackgroundDrawable()把上面方法的返回设置进去就可以了。。。

三、关于列出已安装的主题

我的方法:主题包取一个特定前缀的包名,通过遍历安装包得到特定前缀的包,再检查一下包的签名(关于签名检查,我的代码收藏里面有,百度一下也好多)




    
[3] 淘宝技术发展 —— 题词
    来源: 互联网  发布时间: 2014-02-18
淘宝技术发展 —— 前言

光棍节的狂欢

“时间到,开抢!”坐在电脑前早已等待多时的小美一看时间已到2011年11月11日零时,便迫不及待地投身于淘宝商城一年一度的大型网购促销活动—— “淘宝双11购物狂欢节”。小美打开早已收藏好的宝贝——某品牌的雪地靴,飞快的点击购买,付款,一回头发现3000双靴子已被抢购一空。

小美跳起来,大叫一声“欧耶!”

小美不知道,就在11日零点过后的这一分钟内,全国有342万人和她一起涌入淘宝商城。当然,她更不知道,此时此刻,在淘宝杭州的一间办公室里,灯火通 明,这里是“战时指挥部”,淘宝技术部的一群工程师,正在紧盯着网站的流量和交易数据。白板上是他们刚刚下的注,赌谁能最准确地猜中流量峰值和全天的交易 总额。他们的手边放着充足的食物和各类提神的饮料。

一阵急促的电话声响起来,是前线部门询问数据的,工程师大声报着:“第1分钟,进入淘宝商城的会员有342万”。过一会工程师主动拿起电话:“交易额超过 1亿了,现在是第8分钟。”接下来,“第21分钟,刚突破2亿”。“第32分钟,3亿了”。“第1个小时,4.39亿”。这些数据随后出现在微博上,引起 一片惊呼。

“完蛋了!”突然有人大喝一声,所有的眼睛都紧张的盯着他,只见他挠挠头,嘿嘿的笑道“我赌的少了,20亿轻松就能过了,我再加5亿”,他跑去白板边上把 自己的赌注擦去,写上25,接下来有人写上28,有人写上30,有人跑到微博上开下盘口,同事们纷纷转载下注。接下来的这24个小时,战时指挥部的工程师 们都不能休息,他们盯着网站的各种监控指标,适时的调整机器和增减功能。顶住第一波高峰之后,这些人开始忙里偷闲的给自己买东西,大家互相交流着哪家买的 移动硬盘靠谱,哪家衣服适合自己的女朋友,不时的有人哀嚎宝贝被人抢了、信用卡额度不够了。同时,旁边白板上的赌注越下越大。

11月11日,这个棍子最多的日子被网民自我调侃的变成了一个节日——“光棍节”。而淘宝网又用疯狂的折扣促销给它赋予了另外一个意义——“购物狂欢 节”。2011年11月11日这一天,淘宝商城与淘宝网交易额之和突破52亿,这个数字是“购物天堂”香港一天零售总额8.5亿的6倍。

网民感受到的是疯抢的喜悦,而网站的技术人员感受到的却是“压力山大”。就如同你家办酒席,宴请左邻右舍,这个办起来容易。倘若宴请十里八乡所有的人,吃 饭的人自然开心,但却不是一般人家能够办得起来的。能办得起来如此盛宴者,需要强大的财力物力、组织能力、技术实力(例如做这么多菜,你的炒锅一定要是 “分布式的”、“可复制的”、“可扩展的”,洗菜切菜要有“工作流引擎”,上菜的路径要用图论来计算出来,甚至连厨房的下水道都要重新设计)。

淘宝能够举办如此盛宴,网站的技术实力可见一斑。淘宝网拥有全国最大的hadoop分布式计算集群之一,日新增数据50TB,有40PB海量数据存储。分 布在全国各地80多个节点的CDN网络,支持的流量超过800Gbps。淘宝的搜索引擎能够对数十亿的商品数据进行实时搜索,另外还拥有自主研发的文件存 储系统和缓存系统,以及java中间件和消息中间件系统,这一切组成了一个庞大的电子商务操作系统。另外从商业数据上来看,AMAZON的财报显示 2011年完成了大约 480亿美金的交易额,EBAY2011年财报全年完成了大约600亿美金的交易额(不包括其独立的汽车交易平台)。不管从交易额、商品数量、同比增速等 指标上看,淘宝网均远超于此,是目前全球最大的电子商务平台。(由于淘宝非上市公司,未公布2011年业绩,以上内容来自淘宝网技术副总裁 @_行癫 的微博)

以上这些技术数据可能已经让一些同学产生不适的感觉,为了让更多的人读懂这本书,我们从技术的角度来看,小美访问淘宝网的时候,网站上发生了什么事情。下参考资料:《你刚才在淘宝上买了一件东西【技术普及帖】》,来自南京邮电大学孙放同学

为了有个更直观的对比,我们说一个同行,他在2011年光棍节之前做促销,流量上去之后,达到12Gbps(他们有这么大的流量,老板很高兴,在微博上面 说了这个数据),这时候流量达到了极限,网站几乎挂掉,用户无法下订单。而淘宝网光棍节当天网络的流量最高达到800多Gbps,带给各家银行和快递公司 的流量也让他们压力山大,如临大敌(后来,他们以能够撑住淘宝带来的流量为荣而到处宣传)。另外如果你在网上购买过火车票的话,更能体会到网站能支持多大 的流量有多重要。但这不是一朝一夕做出来的,也不是有钱就能办到的。

以上对比的这些网站,也许读者很容易就猜到是哪一家,这里拿出来作对比,绝对没有嘲笑人家的意思,采用通常的网站技术方案,能做到这种程度已经不错了。任 何网站的发展都不是一蹴而就的,在什么样的阶段采用什么样的技术。在发展的过程中网站会遇到各种各样的问题和业务带来的压力,正是这些原因才推动着技术的 进步和发展,而技术的发展又会反过来促进业务的更大提升。二者互为因果,相互促进。如今淘宝网的流量已经是全球排名第12、国内排名第3(美国的ebay 全球排名23,国内前两名是百度和腾讯)。淘宝网的系统也从使用一台服务器,到采用万台以上的服务器。本书就为大家描述淘宝网在整个发展过程中,所有的主 动和被动的技术变革的前因后果,这由很多有趣的故事组成。

正如同很多人或组织成功了以后,就会为自己的出身编造一个美丽的传说。淘宝网的出身,网上也有非常多的传说,下面我们就从它的出生开始讲起。

继续阅读:

二、个人网站

三、Oracle/支付宝/旺旺

四、淘宝技术发展(Java时代:脱胎换骨)

五、淘宝技术发展(Java时代:坚若磐石)

六、淘宝技术发展(Java时代:创造技术-TFS)

七、淘宝技术发展(Java时代:创造技术-Tair)

八、淘宝技术发展(分布式时代:服务化)

原文出处: http://blog.sina.com.cn/s/blog_633219970100x9cc.html


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪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