
读书笔记
文章平均质量分 72
爬行动物脑
学无止境。
展开
-
【读书笔记】【linux kernel development】【进程管理】
【第三章 进程管理】 13.每个进程拥有独立的程序计数器、进程栈和一组进程寄存器。内核调度的对象是线程而非进程。Linux系统不区分线程和进程。 14.内核把进程的列表存放在任务队列(tasklist)的双向循环链表中。链表中的每一项都是类型为task_struct,称为进程描述符(process descriptor )的结构。定义于中 15.Linux通原创 2013-02-17 20:42:56 · 619 阅读 · 0 评论 -
【Objective-C高级编程】iOS与OS X多线程和内存管理(二)
1.属性声明与所有权修饰符的对应关系属性声明所有权修饰符assign__unsafe_unretainedcopy __strongretain__strongstrong__strongunsafe_unretained__unsafe_unretainedweak__we原创 2014-03-19 22:21:50 · 1734 阅读 · 0 评论 -
Build Your Programming Technical Skills
Build Your Programming Technical Skills[编辑]这是一篇由新手和我这个老家伙根据我们的经历完成的文章。我的这个朋友把这篇文章取名叫Build Your Programming Technical Skills,我实在不知道用中文怎么翻译,但我在写的过程中,我觉得这很像一个打网游做任务升级的一个过程,所以取名叫“技术练级攻略”,题目有点大,呵呵,转载 2014-03-20 10:32:37 · 1441 阅读 · 0 评论 -
【Objective-C高级编程】iOS与OS X多线程和内存管理(三) Block语法
1. Block 就是带有自动变量值的匿名函数。 Block 语法的简单示例:^void ( int enent ) { printf("buttonId:%d, event=%d",i,event);}完整形式的Block语法与一般的C语言函数定义对比,仅有两点不同:① 没有函数名。② 带有"^".(caret) 使用插入记号便于搜索。2. ^ 返原创 2014-03-20 14:18:48 · 1691 阅读 · 0 评论 -
【Objective-C高级编程】iOS与OS X多线程和内存管理(四) Block的实现
使用clang 的编译选项查看blocks “clang -rewrite-objc 源代码文件名”源代码:int main (){ void (^blk)(void) = ^{ printf(“Block”); }; blk (); return 0;}转换为:struct __block_impl {原创 2014-03-22 08:42:38 · 2143 阅读 · 0 评论 -
【Objective-C高级编程】iOS与OS X多线程和内存管理(六) __block 说明符
int val = 0 ;void (^blk)(void) = ^{ val = 1; };以上代码编译会报错,因为blocks里面尝试修改val变量值。(编译的过程中,val已经超出其作用域,blocks里面保存的时截获的瞬间值)我们可以使用静态变量,这样在blocks也可以访问得到外面的变量值。例如:int global_val = 1;sta原创 2014-03-22 08:46:40 · 3011 阅读 · 0 评论 -
【Objective-C高级编程】iOS与OS X多线程和内存管理(八) __block 从栈上复制到堆 截获对象 数组
blk_t blk;{ id array = [[NSMutableArray alloc] init]; blk = [^(id obj){ [array addObject:obj]; NSLog(@“array count = %ld”, [array count]]; } copy];}blk([[NSObject原创 2014-03-22 08:52:16 · 1770 阅读 · 1 评论 -
Grand Central Dispatch (GCD) 用法详细介绍
1. Dispatch Queue执行处理有两种Dispatch Queue。一种是等待现在执行中的处理的Serial Dispatch Queue。(顺序执行)另一种是不等待现在执行中处理的Concurrent Dispatch Queue。(并行执行)Concurrent Dispatch Queue执行:线程0线程1线程2线程3原创 2014-03-22 11:33:19 · 11534 阅读 · 2 评论 -
【Objective-C高级编程】iOS与OS X多线程和内存管理(九) Block 循环引用
在Block 中使用附有 __strong 修饰符的对象类型自动变量,那么当Block从栈复制到堆时,该对象为Block 所持有。这样容易引起循环引用。typedef void (^blk_t)(void);@interface MyObject : NSObject{ blk_t blk;}@end@implementation MyObject- (id)原创 2014-03-22 08:53:29 · 1777 阅读 · 0 评论 -
iOS 安全攻防学习规划
【 基础篇 】1. ARM 汇编语言。书籍资料:《ARM体系结构与编程》杜春雷苹果官方的参考资料《ARM® Architecture Reference Manual Extracts Including instruction set descriptions.pdf》2. 嵌入式硬件相关知识。能容易地看懂附件里的iPhone4手机的原理图(iphone4原理图.转载 2014-03-22 09:07:56 · 2121 阅读 · 0 评论 -
【Objective-C高级编程】iOS与OS X多线程和内存管理(五) Blocks 截获自动变量值
int main (){ int dmy = 256; int val = 10; const char *fmt = “val = %d”; void (^blk)(void) = ^{ printf(fmt, val); }; val =2; fmt = “These values were change. val =原创 2014-03-22 08:44:06 · 1242 阅读 · 0 评论 -
【Objective-C高级编程】iOS与OS X多线程和内存管理(七) __block 从栈上复制到堆
typedef int (^blk_t)(int);blk_t func ( int rate ){ return ^(int count){ return rate*count; };}以上返回配置在栈上的Block的函数,虽然当作用域废弃后,栈上的Block也会被废弃。但是通过对应的ARC的编译器可转为如下:blk_t func (int rate)原创 2014-03-22 08:48:49 · 3934 阅读 · 0 评论 -
Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法 对象属性 property
1. Java 或 C++ 中,使用publish,private等关键字来声明变量的作用域。这种写法的问题是:对象布局在编译器(compile time)就已经固定了。碰到访问其中变量的代码,编译器就把它替换为“偏移量”(offset)。这个偏移量是硬编码(hardcode),表示该变量距离存放对象的内存区域的起始地址有多远。这样子在修改了类定义后必须重新编译。否则offset是错误的。原创 2014-03-25 17:48:59 · 3763 阅读 · 0 评论 -
Effective Objective-C 2.0 编写高质量iOS与OS X代码的52个有效方法(一)
1. 使用消息结构的语言,其运行时所应执行的代码由运行环境来决定;而使用函数调用的语言,则由编译器来决定。如果范例代码调用的函数是多态的,则运行时根据虚函数表来查出应该执行哪个函数实现。而采用消息结构的语言,不论是否多态,总是在运行时才会去查找所要执行的方法。接受消息的对象问题也要在运行时处理,其过程叫“动态绑定(dynamic binding)”。2.【在原创 2014-03-25 16:23:12 · 3538 阅读 · 0 评论 -
Effective Objective-C 2.0 编写高质量iOS与OS X代码 对象等同性
1. 若想检测对象的等同性,请提供“isEqual”与“hash”方法。- (BOOL)isEqual:(id)object{ if(self == object) return YES; if([self class] != [object class] ) return NO; ConcreteId *otherId = (ConcreteId*)objec原创 2014-03-27 11:07:05 · 1930 阅读 · 0 评论 -
Effective Objective-C 2.0 编写高质量iOS与OS X代码 在对象内部尽量直接访问实例变量
1. 建议在读取实例变量的时候采用直接访问的形式,而在设置实例变量的时候通过属性来做。直接访问和存取方法的区别:① 由于不经过OC的“方法派发”(method dispatch)步骤。所以直接访问实例变量的速度当然比较快。这种情况下,编译器所生成的代码会直接访问保存对象实例变量的那块内存。② 直接访问实例变量时,不会调用其“设置方法”;③ 直接访问实例变量时,不原创 2014-03-27 11:22:29 · 1534 阅读 · 0 评论 -
Windows下的mingw32显示中文
alias l='/bin/ls --show-control-chars --color=tty'alias la='/bin/ls -aF --show-control-chars --color=tty'alias ll='/bin/ls -alF --show-control-chars --color=tty'alias ls='/bin/ls --show-control-原创 2014-09-12 16:31:54 · 3293 阅读 · 0 评论 -
【Objective-C高级编程】iOS与OS X多线程和内存管理
1. __weak修饰符的优点,除了解决循环引用的问题,在持有某对象的弱引用时,若该对象被废弃,则此弱引用将自动失效并且处于nil被赋值的状态(空弱引用)。如:id __wark obj1 = nil;{ id _strong obj0 = [[NSObject alloc] init]; obj1 = obj0; NSLog(@"A: %@", obj1);}NSLog(@"原创 2014-03-19 19:04:57 · 5255 阅读 · 0 评论 -
Effective Objective-C 2.0 编写高质量iOS与OS X代码 在既有类中使用关联对象存放自定义数据
1. 可以通过“关联对象”机制来把两个对象连起来。2. 定义关联对象时,可指定内存管理语义,用以模仿定义属性时所采用的“拥有关系”和“非拥有关系”。3. 只有再其他做法不可行时才应选择关联对象,因为这种做法通常会引入难以查找的bug。有时候类的实例可能是某种机制所创建,而开发者无法令这种机制创建出自己所写的子类实例。可以给某对象关联许多其他对象。这些原创 2014-03-27 15:03:05 · 2334 阅读 · 0 评论 -
Effective Objective-C 2.0 编写高质量iOS与OS X代码 理解“类对象”的用意
问题:如果某类无法立即响应某个选择子,就会启动消息转发流程,然而,消息的接收者究竟是何物?是对象本身么?1. 一般情况下应该指明消息接收者的具体类型,如果向其发送无法解读的消息,编译器会产生警告消息。而类型id 的对象则不会,编译器假定它能响应所有的消息。2. “在运行期检视对象类型”这一操作也叫做“类型信息查询”(inrtospection,“内省”),这个强大而有用原创 2014-03-27 21:20:00 · 1504 阅读 · 0 评论 -
【读书笔记】【linux kernel development】【从内核出发】
【第二章 从内核出发】 7.内核开发的差异:①内核编程时既不能访问C库也不能访问标准的C头文件。②内核编译时必须使用GNUC③内核编程时缺乏像用户空间那样的内存保护机制。④内核编程时难以执行浮点运算。⑤内核给每个进程只有一个很小的定长堆栈⑥由于内核支持异步中断、抢占和smp,因此必须时刻注意同步和并发。⑦要考虑移植的重要性。 8.printk()允许通过原创 2013-02-17 18:14:25 · 687 阅读 · 0 评论 -
【读书笔记】【Linux Kernel Development】【linux内核简介】
【第一章 linux内核简介】 1.应用程序通过系统调用界面陷入内核,是完成其工作的基本方式。 2.每个处理器在任何指定时间点上的活动必然概括为:①运行于用户空间,执行用户进程。②运行于内核空间,处于进程上下文,代表某个特定的进程执行。③运行于内核空间,处于中断上下文,与任何进程无关,处理特定中断。 3.单内核:将内核从整体上作为一个单独的大过程来实现,同时原创 2013-02-17 18:00:51 · 692 阅读 · 0 评论 -
Erlang组件、工具和代码库
Erlang组件Erlang具有许多单独的组件,它们能够在开发应用时作为组建块(building blocks)使用。同时这些组件也熟知Erlang的系统消息(load、unload、start、stop、restart、change code)。◆InetsHTTP 1.0服务器和FTP客户端。◆Mnesia使用Erlang的分布式实时数据库。它支持RAM复制、磁盘存储、转载 2013-02-24 11:12:54 · 739 阅读 · 0 评论 -
Qt5 fatal error: QPushButton: No such file or directory
今天开始学Qt ,但是遇到了一些问题。真是万事开头难!! 百度和google后都无结果。 也不知道是什么问题造成的,上Q群问也没有人回复,哎!难道是Qt的开发者比较少? 环境背景:windows xp + qt-windows-opensource-5.0.1-mingw47_32-x86-offline.exe 安装后添加了环境变量,对照了原创 2013-02-28 14:36:23 · 2809 阅读 · 1 评论 -
viewDidUnload 和 viewWillUnload 被废弃之后的内存警告处理
由于iOS6以上的UIKit不会在内存警告时自动释放视图,所以viewWillUnload和viewDidUnload将不再触发。因此,在iOS6上,开发者需要负责内存警告时将不用到的视图释放。WWDC2012的视频有提到,具体代码如下: [plain] view plaincopyprint?1.- (void)didReceiveMemoryWarning { 2.转载 2013-09-05 20:18:46 · 4043 阅读 · 0 评论 -
ios ViewController 页面跳转
从一个Controller跳转到另一个Controller时,一般有以下2种:1、利用UINavigationController,调用pushViewController,进行跳转;这种采用压栈和出栈的方式,进行Controller的管理。调用popViewControllerAnimated方法可以返回。 PickImageViewController *ickIma转载 2013-09-05 20:54:11 · 3933 阅读 · 0 评论 -
【iOS知识学习】_iOS开源项目汇总
扫描wifi信息:http://code.google.com/p/uwecaugmentedrealityproject/http://code.google.com/p/iphone-wireless/条形码扫描:http://zbar.sourceforge.net/iphone/sdkdoc/install.htmltcp/ip的通讯协议:http://code.g转载 2013-09-05 21:01:37 · 953 阅读 · 0 评论 -
iOS开发:什么是Bonjour
这两天抽空做了几个Bonjour的测试,将我的理解整理了一下和大家分享,希望对大家的工作有帮助,同时,有理解错误的地方也请大家校正。1. Bonjour简介Bonjour是Apple推出的零配置网络协议,主要的目的是在缺少中心服务器的情况下解决网络设备的IP获取,名称解析和服务发现等关键问题。Bonjour这个词来源于法语,是“你好”的意思,应该是指遵从这个协议的设备可以通原创 2013-09-05 21:23:55 · 1351 阅读 · 0 评论 -
[iOS] ViewController的生命周期及其加载View的步骤
首先先阐明ViewController的职责:对内管理与之关联的View,对外跟其他ViewController通信和协调。对于与之关联的View,ViewController总是在需要的时候才加载视图,并在不需要的时候卸载视图,所以也同时担当了管理应用资源的责任。理解ViewController的LifeCycle(生命周期),能够有效地管理应用资源。ViewController的初始化转载 2013-09-05 20:13:53 · 965 阅读 · 0 评论 -
《View Controller Programming Guide for iOS》笔记
1 ViewController分两种:Content View Controller 和 Container View Controller。2 View Controller的职责:对内管理Views,对外跟其他ViewController通信和协调,Storyboards可以降低对外部分的复杂度。3 ViewControllers are brains of you转载 2013-09-05 20:21:14 · 1198 阅读 · 0 评论 -
《View Programming Guide for iOS》笔记
View and Window Architecture1 每个View的背后都有一个Layer负责渲染。Layer的渲染一般由Core Animation完成,并最终由更底层的硬件缓冲区保存屏幕上的每个点。2 从视觉上看,子视图会遮住父视图的一部分或者全部。就是说,子视图的zorder一定比父视图大。3 父视图的某些改变会影响到子视图,比如 resize,hide,alpha,t转载 2013-09-05 20:22:09 · 851 阅读 · 0 评论 -
UIView的alpha属性和hidden属性
alpha 属性为0.0时视图完全透明,为1.0时视图完全不透明。hidden属性为YES时视图隐藏,否则不隐藏。注意事项:1 当视图完全透明或者隐藏时,不能响应触摸消息。也就是alpha等于0.0或者hidden为YES的时候,但是当alpha2 视图的alpha值会影响子视图的绘制,但是子视图的alpha值不变。文档的原文:This value affects only转载 2013-09-05 20:21:53 · 4149 阅读 · 0 评论 -
Android、iOS和Windows Phone中的推送技术
推送并不是什么新技术,这种技术在互联网时代就已经很流行了。只是随着进入移动互联网时代,推送技术显得更加重要。因为在智能手机中,推送从某种程度上,可以取代使用多年的短信,而且与短信相比,还可以向用户展示更多的信息(如图像、表格、声音等)。推送技术的实现通常会使用服务端向客户端推送消息的方式。也就是说客户端通过用户名、Key等ID注册到服务端后,在服务端就可以将消息向所有活动的客户端发送。实际转载 2013-09-05 21:03:46 · 1536 阅读 · 0 评论 -
【iOS知识学习】_iOS面试题汇总
网上的面试题参差不齐,本人从网上总结了很多的面试题,供大家学习,文档免费下载:http://download.youkuaiyun.com/detail/weasleyqi/4733438,第二篇地址:http://blog.youkuaiyun.com/weasleyqi/article/details/8148234本人知识浅薄,有些问题暂时还未得到解决,高手看到请留下您宝贵的答案⋯⋯由于内容较多,所以分两篇来发表,转载 2013-09-05 21:10:25 · 1087 阅读 · 0 评论 -
第一门编程语言选谁?
Are You Ready? Go!——第一门编程语言选谁?金旭亮说明: 这篇文章是专门针对大学低年级学生(和其他软件开发初学者)写的,如果你己经是研究生或本科高年级学生,请将这篇文章转发给你的师弟或师妹,希望这篇文章能够帮助他们少走弯路,顺利地迈入软件开发的大门;如果您是一位有经验的软件开发者,或者是关注计算机教育的同行,也敬请提出宝贵意见。转载 2013-09-05 21:12:45 · 1254 阅读 · 0 评论 -
iPhone开发技巧之网络篇(4)--- 确认网络环境 3G/WIFI
开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息。如果没有处理它们,是不会通过Apple的审查的。ReachabilityApple 的 例程 Reachability 中介绍了取得/检测网络状态的方法。在你的程序中使用 Reachability 只须将该例程中的 Reachability.h 和 Reachability.m 拷贝到你的工程中。如下图:转载 2013-09-27 14:24:29 · 929 阅读 · 0 评论 -
ACM知识点
训练过ACM等程序设计竞赛的人在算法上有较大的优势,这就说明当你编程能力提高之后,主要时间是花在思考算法上,不是花在写程序与debug上。下面给个计划你练练: 第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来。 1.最短路(Floyd、Dijstra,Bellm转载 2014-10-04 10:53:43 · 3742 阅读 · 1 评论