OC源码剖析对象的本质】的更多相关文章

1. 类的底层实现 先写一个 Person 类: @interface Person : NSObject @property (nonatomic, copy) NSString *p_name; @property (nonatomic, assign) int p_age; - (void)p_instanceMethod1; @end @implementation Person - (void)p_instanceMethod1{ NSLog(@"%s",__func__);…
一.目录 1.启蒙知识预热:CAS原理+JVM对象头内存存储结构 2.JVM中锁优化:锁粗化.锁消除.偏向锁.轻量级锁.自旋锁. 3.总结:偏向锁.轻量级锁,重量级锁的优缺点. 二.启蒙知识预热 开启本文之前先介绍2个概念 2.1.cas操作 为了提高性能,JVM很多操作都依赖CAS实现,一种乐观锁的实现.本文锁优化中用到了CAS,故有必要先分析一下CAS的实现. CAS:Compare and Swap. JNI来完成CPU指令的操作: unsafe.compareAndSwapInt(thi…
<Python源码剖析>笔记 第一章:对象初识 对象是Python中的核心概念,面向对象中的"类"和"对象"在Python中的概念都为对象,具体分为类型对象和实例化对象. Python实现方式为ANSI C,其所有内建类型对象加载方式为静态初始化. 在Python中,对象一旦被创建其内存大小不可变,故可变对象其中会维护指向其他内存的指针.这是因为运行期间对象内存大小改变会影响其他内存的分布,造成很多不必要的麻烦. 1.PyObject和PyVarObje…
老李推荐:第2章4节<MonkeyRunner源码剖析>了解你的测试对象: NotePad窗口Activity之菜单简介   NotePad窗口Activity之菜单简介 这里我们总共用到两种类型的菜单,一种叫做Context Menu,就是上下文菜单:一种叫做Option Menu,就是我们按下系统菜单按键后会弹出来的系统菜单选项. NotePad的上下文菜单是当用户在NotesList界面长按一个日记的时候弹出来的,主要内容有一下几个菜单选项: Open: 打开该日记进入到NoteEdit…
老李推荐:第2章3节<MonkeyRunner源码剖析>了解你的测试对象: NotePad窗口Activity之NoteEditor简介   我们在增加和编辑一个日记的时候会从NotesList这个Activity进入到NoteEditor这个Activity.增加和编辑的时候的控件都是一样的,只是他们的标题内容会有区别. 下面我们先来通过hierarchyviewer来看下NoteEditor这个Activity的component名称: 图2-3-1 NoteEditor的Componen…
老李推荐:第2章2节<MonkeyRunner源码剖析>了解你的测试对象: NotePad窗口Activity之NotesList简介   NotePad窗口Activity之NotesList简介 上一节我们简要描述了测试对象NotePad的主要功能模块,那么这一节开始我们就会对每个模块进行相应的阐述,这样读者就算没有真正去安装和玩过这个应用也不会影响大家对本书的阅读理解了. 我们首先看的就是NotesList这个Activity窗口.在你的安卓手机上找到NotePad这个应用的图标之后,就…
老李推荐:第2章1节<MonkeyRunner源码剖析>了解你的测试对象: NotePad应用简介   本书脚本相关的示例常会用到Android SDK自带的NotePad这个应用,所以这里很有必要去描述下这个应用.其实去熟悉这个应用最好的办法是自己去把它安装上去你的目标安卓系统,然后亲自去玩一下它的各种功能.因为它只是一个示例应用,所以功能并不复杂. NotePad源码的位置可以在你SDK目录中找到,比如在我的机器中就是”/Users/apple/Develop/sdk/samples/an…
处于研究python内存释放问题,在阅读部分python源码,顺便记录下所得.(基于<python源码剖析>(v2.4.1)与 python源码(v2.7.6)) 先列下总结:        python 中一切皆为对象,所以会先讲明白python中的对象,然后开始整理最简单的两个类型,整形和字符串:然后会进一步探索容器类型,会讲 List 和 Dict,以及内存管理机制.有时间精力会总结下<python源码剖析>作者的 python模拟程序.编译的code对象与pyc文件.pyt…
前言 本文探讨的Python版本为2.7.16,可从官网上下载,把压缩包Python-2.7.16.tgz解压到本地即可 需要基本C语言的知识(要看的懂) PyListObject对象 PyListObject对象可以有效地支持对元素的插入.添加.删除等操作,在Python的列表中,无一例外地存放的都是PyObject*指针 [PyObject*,PyObject*,PyObject*] 很显然,PyListObject一定是一个变长对象,因为不同的list中存储的元素个数会是不同的.但是,和P…
本文摘录自个人总结<Nodejs学习笔记>,更多章节及更新,请访问 github主页地址.欢迎加群交流,群号 197339705. 章节概览 morgan是express默认的日志中间件,也可以脱离express,作为node.js的日志组件单独使用.本文由浅入深,内容主要包括: morgan使用入门例子 如何将日志保存到本地文件 核心API使用说明及例子 进阶使用:1.日志分割 2.将日志写入数据库 源码剖析:morgan的日志格式以及预编译 入门例子 首先,初始化项目. npm insta…