摘要:
百度网盘地址:https://pan.baidu.com/s/1jI4xZgE 我给起的书名叫做《深入理解Android虚拟机内存管理》。本书分为两个部分,前半部分主要是我对Linux0.11版内核的内存管理模块的深入分析;后半部分主要是对Android虚拟机Dalvik的垃圾回收机制的分析和内存管 阅读全文
摘要:
对于一个算法,它可能会出现最佳情况比如O(n),也有可能出现最坏情况O(n^2),但更多的可能是出现一般情况O(nlgn)。那么是否采用这个算法取决于它的平均情况,也就是它的期望值,这是一种概率分析手段。 下面就来具体介绍这种分析手段,前提假设您已经了解了离散数学的概率论的随机变量和期望值的相关内容 阅读全文
摘要:
【版权所有,转载请注明出处。出处:http://www.cnblogs.com/joey-hua/p/5402599.html 】 此方案的目的是隐藏源码防止直接性的反编译查看源码,原理是加密编译好的最终源码文件(dex),然后在一个新项目中用新项目的application启动来解密原项目代码并加载 阅读全文
摘要:
很久很久没有更新博客了,因为发生太多太多猝不及防的事情,再加上自己本身也特别忙,这里补上一直想发的自己觉得很有意义的一次探索过程。 就是很多java开发人员都曾被误导的一个点——“如果一个变量是引用,则它会被存放在栈上”,其实这个证明早在2017.5月就完成了,时间有点久远,细节也许稍有遗忘。 这里 阅读全文
摘要:
1.tokens "int" "int" <SPACES> " " <IDENTIFIER> "global_a" <SPACES> " " "=" "=" <SPACES> " " <INTEGER> "5" ";" ";" <SPACES> "\r\n" "long&quo 阅读全文
摘要:
Ocelot的中间代码是仿照国外编译器相关图书Modern Compiler Implementation 中所使用的名为Tree 的中间代码设计的。顾名思义,Tree 是一种树形结构,其特征是简单,而且方便转换为机器语言。 例如以下代码: 会被转换成如下的中间代码: 组成中间代码的类如表11.1 阅读全文
摘要:
关于“静态类型检查”,想必使用C 或Java 的各位应该非常熟悉了。在此过程中将检查表达式的类型,发现类型不正确的操作时就会报错。例如结构体之间无法用+ 进行加法运算,指针和数值之间无法用* 进行乘法运算,将数组传递给参数类型为int 型的函数会出现莫名其妙的结果。在编译过程中检查是否符合这样的限制 阅读全文
摘要:
本篇将对“1=3”“&5”这样无法求值的不正确的表达式进行检查。 将检查如下这些问题。●为无法赋值的表达式赋值(例:1 = 2 + 2)●使用非法的函数名调用函数(例:"string"("%d\n", i))●操作数非法的数组引用(例:1[0])●操作数非法的成员引用(例:1.memb)●操作数非法 阅读全文
摘要:
这里主要介绍一下检查循环定义的结构体、联合体。是对成员中包含自己本身的结构体、联合体进行检查。所谓“成员中包含自己本身”,举例来说,就是指下面这样的定义。 这里所说的“成员中包含自己本身”是指直接包含自己本身,通过指针来应用自己本身是没有问题的。例如刚才的例子,如果是下面这样的话就没有问题了。 刚才 阅读全文
摘要:
广度优先搜索 在给定图G=(V,E)和一个特定的源顶点s的情况下,广度优先搜索系统地探索G中的边,以期“发现”可从s 到达的所有顶点,并计算s 到所有这些可达顶点之间的距离(即最少的边数)。该搜索算法同时还能生成一棵根为s、且包括所有s 的可达顶点的广度优先树。对从s 可达的任意顶点v,广度优先树中 阅读全文
摘要:
在平摊分析中,执行一系列数据结构操作所需要的时间是通过对执行的所有操作求平均而得出的。 平摊分析可以用来证明在一系列操作中,通过对所有操作求平均之后,即使其中单一的操作具有较大的代价,平均代价还是很小的。平摊分析与平均情况分析的不同之处在于它不牵涉到概率;平摊分析保证在最坏情况下,每个操作具有平均性 阅读全文
摘要:
“类型名称的消解”即类型的消解。类型名称由TypeRef 对象表示,类型由Type 对象表示。类型名称的消解就是将TypeRef 对象转换为Type 对象。 TypeResolver 类的处理仅仅是遍历抽象语法树,发现TypeRef 的话就从叶子节点开始将其转换为Type 类型。类型和变量的不同之处 阅读全文
摘要:
“变量引用的消解”是指确定具体指向哪个变量。例如变量“i”可能是全局变量i,也可能是静态变量i,还可能是局部变量i。通过这个过程来消除这样的不确定性,确定所引用的到底是哪个变量。 为了消除这样的不确定性,我们需要将所有的变量和它们的定义关联起来,这样的处理称为“变量引用的消解”。具体来说,就是为抽象 阅读全文
摘要:
从今天开始研究开发自己的编程语言Ocelot,从《自制编译器》出发,然后再自己不断完善功能并优化。 编译器前端简单,就不深入研究了,直接用现成的一款工具叫JavaCC,它可以生成抽象语法树,抽象语法树是生成中间代码的关键,而中间代码又是生成后端代码的关键。 整个编译器代码采用java语言编写,主要功 阅读全文
摘要:
散列表的具体实现就不多做介绍了,就是一个数组,每个下标存储的是碰撞的元素的链表头指针,如下图所示:: 下面直接研究对用链接法散列的分析: 给定一个能存放n个元素的、具有m个槽位的散列表T,定义T的装载因子α为n/m,即一个链中平均存储的元素数。 用链接法散列的最坏情况性能很差:所有的n个关键字都散列 阅读全文
摘要:
1.排队机制 接收输入TCP报文时,有三个队列: ● 待处理队列 ● 预排队队列 ● 接收队列 接收队列包含了处理过的TCP数据段,也就是说,去除了全部的协议头,正准备将数据复制到用户应用程序。接收队列包含了所有按顺序接收的数据段,在其他两个队列中的TCP数据段则需要进一步处理。 TCP报文首先由t 阅读全文