2016-12-22 JustWe
EventBus 是人们在日常开发中经常会用到的开源库,即使是不直接用的人,也多少借鉴过事件总线的用法。而且EventBus的代码其实是非常简单的,可以试着阅读一下。 源码阅读系列不采用对功能进行归类的方法进行阅读,而是采用一个刚开始阅读源码的视角,从我们平时的API调用,一步步的去理解设计意图和实现原理。 从这里开始 从这里开始吧,我们最常用的地方就是给一个函数添加上注解,我们先抛开apt生成的table,只看这个运行时版本的订阅设定。 ``` java // eventbus/Subscribe @Documented @Retention(RetentionPolicy.RUNT 继续阅读 »
2016-09-06 JustWe
ArrayList 和 LinkedList 是在开发过程中 常用的数据结构 分别代表了数组和链表,其实本身的实现都非常简单,所以Source Code Read 就先从这两个开始。 ArrayList ArrayList 从名字上就可以看出这个容器的本质,是用一个数组反复的进行自增实现的,ArrayList几乎是最经常被使用的List的实现了,平时可以使用线性数据结构的时候,通常都会选择ArrayList。但是容器的选取也要考虑到实现的方式和你需要的应用。比如说数组长于索引,弱于扩容和删除,但是链表长于扩容和删除,但是寻找某个具体节点的时候,没办法靠基址寻址来实现,而是要用指针不断的 继续阅读 »
2018-07-20 jude
一点前端源码阅读经验 继续阅读 »
2020-08-28 jude
没想到吧?读源码能有 Excel 什么事? 继续阅读 »
2018-11-02 Mithrilwoodrat
之前看了 a-python-interpreter-written-in-python 和 byterun,就想试试用 JAVA 解析 Python 生成的 pyc 文件,读取 bytecode 后在 JAVA 中实现解释执行。 继续阅读 »
2017-07-30 Mithrilwoodrat
PyObject CPython 中基本的数据结构是 Object,所有的 Python 对象都可以用PyObject *来访问,CPython 中通过 Object 手动实现了对象系统。 PyObject 定义于 include/object.h 中,可以看到,结构体里只是一个简单的 PyObject_HEAD 宏。 继续阅读 »
2017-06-21 Mithrilwoodrat
准备调试环境 目前 CPython 的开发已经迁移到了 Github 上,可以直接去 Github clone 对应的分支。 我们将基于 Python 2.7.13 版本, Linux x86_64 环境进行接下来的工作。 下载好代码以后以 继续阅读 »
2017-08-28 Mithrilwoodrat
PyLongObject PyLongObject 定义在 include/longobject.h 中,实际的 longobject 对象定义在 include/longintrepr.h 中。 ~~~C // include/longobject.h typedef struct _longobject PyLongObject; /* Revealed in longintrepr.h */ ~~~ 继续阅读 »
2014-05-11 码农明明桑
一直使用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文件,我 继续阅读 »
2016-08-07 Kevin
php
PHP 源码阅读array_combine() PHP 源码阅读之array_combine() array_combine() 在 ext/standard/array.c 中 array_combine(array $keys , array $values) — 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值 继续阅读 »