EventBus 是人们在日常开发中经常会用到的开源库,即使是不直接用的人,也多少借鉴过事件总线的用法。而且EventBus的代码其实是非常简单的,可以试着阅读一下。
源码阅读系列不采用对功能进行归类的方法进行阅读,而是采用一个刚开始阅读源码的视角,从我们平时的API调用,一步步的去理解设计意图和实现原理。
从这里开始
从这里开始吧,我们最常用的地方就是给一个函数添加上注解,我们先抛开apt生成的table,只看这个运行时版本的订阅设定。
``` java
// eventbus/Subscribe
@Documented
@Retention(RetentionPolicy.RUNT
继续阅读 »
ArrayList 和 LinkedList 是在开发过程中 常用的数据结构
分别代表了数组和链表,其实本身的实现都非常简单,所以Source Code
Read 就先从这两个开始。
ArrayList
ArrayList 从名字上就可以看出这个容器的本质,是用一个数组反复的进行自增实现的,ArrayList几乎是最经常被使用的List的实现了,平时可以使用线性数据结构的时候,通常都会选择ArrayList。但是容器的选取也要考虑到实现的方式和你需要的应用。比如说数组长于索引,弱于扩容和删除,但是链表长于扩容和删除,但是寻找某个具体节点的时候,没办法靠基址寻址来实现,而是要用指针不断的
继续阅读 »
之前看了 a-python-interpreter-written-in-python 和
byterun,就想试试用 JAVA 解析
Python 生成的 pyc 文件,读取 bytecode 后在 JAVA 中实现解释执行。
继续阅读 »
PyObject
CPython 中基本的数据结构是 Object,所有的 Python 对象都可以用PyObject *来访问,CPython 中通过 Object 手动实现了对象系统。
PyObject 定义于 include/object.h 中,可以看到,结构体里只是一个简单的 PyObject_HEAD 宏。
继续阅读 »
准备调试环境
目前 CPython 的开发已经迁移到了 Github 上,可以直接去 Github clone 对应的分支。
我们将基于 Python 2.7.13 版本, Linux x86_64 环境进行接下来的工作。
下载好代码以后以
继续阅读 »
PyLongObject
PyLongObject 定义在 include/longobject.h 中,实际的 longobject 对象定义在 include/longintrepr.h 中。
~~~C
// include/longobject.h
typedef struct _longobject PyLongObject; /* Revealed in longintrepr.h */
~~~
继续阅读 »
一直使用Ubuntu+Intellig IDEA进行android开发,并且android源码已经花了两三个星期下载回来了,但是linux平台,没有好用的source insight,所以一直阅读都是需要看哪个了才去搜索那一个。原来发现,原来android提供了eclipse,idea等工具进行阅读的方法。
在android源码目录有一个目录development/tools/idegen,这个就是用来生成idea的project文件的。
那么就开始生成吧!
more
首先在源码根目录执行这个文件
bash
sh ./development/tools/idegen/idegen.sh
发现需要idegen.jar文件,我
继续阅读 »
PHP 源码阅读array_combine()
PHP 源码阅读之array_combine()
array_combine() 在 ext/standard/array.c 中
array_combine(array $keys , array $values) — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值
继续阅读 »