2013年6月14日

Python元组、列表、字典、文件

摘要: python的元组、列表、字典数据类型是很python(there python is a adjective)的数据结构。这些结构都是经过足够优化后的,所以如果使用好的话,在某些area会有很大的益处。元组 个人认为就像java的数组,python中的元组有以下特性:任意对象的有序集合,这条没啥说的,数组的同性;通过偏移读取;一旦生成,不可改变;固定长度,支持嵌套 来例子吧:python 代码 >>> (0, 'haha', (4j, 'y')) (0, 'haha', (4j, 'y')) >>& 阅读全文

posted @ 2013-06-14 17:16 残月下章台 阅读(167) 评论(0) 推荐(0) 编辑

2013年6月10日

Why should a self-implemented getter retain and autorelease the returned object

摘要: -(id)getMyInstance {return myInstanceVar ;}or-(id)getMyInstance{return[[myInstanceVar retain] autorelease];}What's the difference ? The second one allows the caller to get an instance variable of a container object, dispose of the container and continue to play with the instance variable until t 阅读全文

posted @ 2013-06-10 23:09 残月下章台 阅读(172) 评论(0) 推荐(0) 编辑

2013年5月20日

再见,viewDidUnload方法

摘要: 分析在iOS4和iOS5系统中,当内存不足,应用收到Memory warning时,系统会自动调用当前没在界面上的ViewController的viewDidUnload方法。通常情况下,这些未显示在界面上的ViewController是UINavigationController Push栈中未在栈顶的ViewController,以及UITabBarViewController中未显示的子ViewController。这些View Controller都会在Memory Warning事件发生时,被系统自动调用viewDidUnload方法。在iOS6中,由于viewDidUnload事件 阅读全文

posted @ 2013-05-20 12:52 残月下章台 阅读(233) 评论(0) 推荐(0) 编辑

2013年5月16日

IOS Tricks

摘要: Add shadow to UIScrollViewscroll1.layer.shadowColor = [UIColor blackColor].CGColor; scroll1.layer.shadowRadius = slider.value; scroll1.layer.shadowOpacity = slider.value; scroll1.layer.masksToBounds = NO; // This is importantscroll1.layer.masksToBounds = NO; // This is importantUIScrollView... 阅读全文

posted @ 2013-05-16 13:44 残月下章台 阅读(329) 评论(0) 推荐(0) 编辑

2013年5月14日

Linux 2.6内核中新的锁机制--RCU

摘要: 一、 引言众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁(rwlock),它们使用起来非常简单,而且是一种很有效 的同步机制,在UNIX系统和Linux系统中得到了广泛的使用。但是随着计算机硬件的快速发展,获得这种锁的开销相对于CPU的速度在成倍地增加,原因 很简单,CPU的速度与访问内存的速度差距越来越大,而这种锁使用了原子操作指令,它需要原子地访问内存,也就说获得锁的开销与访存速度相关,另外在大部 分非x86架构上获取锁使用了内存栅(Memory Barrier),这会导致处理器流水线停滞或刷新,因此它的开销相对于CPU速度而言就越来越大。表1数据证明了 阅读全文

posted @ 2013-05-14 14:42 残月下章台 阅读(164) 评论(0) 推荐(0) 编辑

2013年5月13日

GCD介绍(四): 完结

摘要: Dispatch Queue挂起dispatch queue可以被挂起和恢复。使用dispatch_suspend函数来挂起,使用 dispatch_resume函数来恢复。这两个函数的行为是如你所愿的。另外,这两个函数也可以用于dispatch source。一个要注意的地方是,dispatch queue的挂起是block粒度的。换句话说,挂起一个queue并不会将当前正在执行的block挂起。它会允许当前执行的block执行完毕,然后后续的block不再会被执行,直至queue被恢复。还有一个注意点:从man页上得来的:如果你挂起了一个queue或者source,那么销毁它之前,必须先对 阅读全文

posted @ 2013-05-13 19:10 残月下章台 阅读(133) 评论(0) 推荐(0) 编辑

GCD介绍(三): Dispatch Sources

摘要: 何为Dispatch Sources简单来说,dispatch source是一个监视某些类型事件的对象。当这些事件发生时,它自动将一个block放入一个dispatch queue的执行例程中。说的貌似有点不清不楚。我们到底讨论哪些事件类型?下面是GCD 10.6.0版本支持的事件:Mach port send right state changes.Mach port receive right state changes.External process state change.File descriptor ready for read.File descriptor ready f 阅读全文

posted @ 2013-05-13 19:09 残月下章台 阅读(181) 评论(0) 推荐(0) 编辑

GCD介绍(二): 多核心的性能

摘要: 概念为了在单一进程中充分发挥多核的优势,我们有必要使用多线程技术(我们没必要去提多进程,这玩意儿和GCD没关系)。在低层,GCD全局 dispatch queue仅仅是工作线程池的抽象。这些队列中的Block一旦可用,就会被dispatch到工作线程中。提交至用户队列的Block最终也会通过全局 队列进入相同的工作线程池(除非你的用户队列的目标是主线程,但是为了提高运行速度,我们绝不会这么干)。有两种途径来通过GCD“榨取”多核心系统的性能:将单一任务或者一组相关任务并发至全局队列中运算;将多个不相关的任务或者关联不紧密的任务并发至用户队列中运算;全局队列设想下面的循环:for(id obj 阅读全文

posted @ 2013-05-13 19:07 残月下章台 阅读(162) 评论(0) 推荐(0) 编辑

GCD介绍(一): 基本概念和Dispatch Queue

摘要: 什么是GCD?Grand Central Dispatch或者GCD,是一套低层API,提供了一种新的方法来进行并发程序编写。从基本功能上讲,GCD有点像 NSOperationQueue,他们都允许程序将任务切分为多个单一任务然后提交至工作队列来并发地或者串行地执行。GCD比之 NSOpertionQueue更底层更高效,并且它不是Cocoa框架的一部分。除了代码的平行执行能力,GCD还提供高度集成的事件控制系统。可以设置句柄来响应文件描述符、mach ports(Mach port用于 OS X上的进程间通讯)、进程、计时器、信号、用户生成事件。这些句柄通过GCD来并发执行。GCD的API 阅读全文

posted @ 2013-05-13 19:04 残月下章台 阅读(182) 评论(0) 推荐(0) 编辑

Mechanical Sympathy

摘要: Memory Barriers/FencesIn this article I'll discuss the most fundamental technique in concurrent programming known as memory barriers, or fences, that make the memory state within a processor visible to other processors.CPUs have employed many techniques to try and accommodate the fact that CPU e 阅读全文

posted @ 2013-05-13 17:38 残月下章台 阅读(185) 评论(0) 推荐(0) 编辑

导航