Android 代码混淆与压缩遇到的坑 发表于 2017-10-24 | 分类于 Android 字数统计 796 | 阅读时长 3 一、混淆基本知识 Android 开发使用 Java,为了很好的保护 Java 源代码,我们需要对编译好后的 class 文件进行混淆。 ProGuard 是一个混淆代码的开源项目,它的主要作用是混淆代码,包括以下 4 个功能。 压缩 ( Shrink ):检测并移除代码中无用的类、字段、方 ... 阅读全文 »
LinkedList源码剖析 发表于 2017-05-02 | 分类于 Java 字数统计 3,665 | 阅读时长 16 LinkedList简介LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当作链表来操作外,它还可以当作栈,队列和双端队列来使用。 LinkedList同样是非线程安全的,只在单线程下适合使用。 LinkedList实现了Serializable接口,因此它支持序列化, ... 阅读全文 »
C语言词法分析程序 发表于 2017-05-02 | 分类于 编译原理 字数统计 2,920 | 阅读时长 13 C语言词法分析程序词法分析原理:词法分析是作为相对独立的阶段来完成的(对源程序或中间结果从头到尾扫描一次,并作相应的加工处理,生成新的中间结果或目标程序)。在词法分析过程中,编译程序是通过操作系统从外部介质中读取源程序文件中的各个字符的。同时,为正确地识别单词,有时还需进行超前搜索和回退字符等操作。 ... 阅读全文 »
HashTable源码剖析 发表于 2017-04-26 | 分类于 Java 字数统计 4,421 | 阅读时长 22 Hashtable简介 HashTable同样是基于哈希表实现的,同样每个元素都是key-value对,其内部也是通过单链表解决冲突问题,容量不足(超过了阈值)时,同样会自动增长。 Hashtable也是JDK1.0引入的类,是线程安全的,能用于多线程环境中。 Hashtable同样实现了Seria ... 阅读全文 »
HashMap源码剖析 发表于 2017-04-26 | 分类于 Java 字数统计 6,601 | 阅读时长 30 HashMap简介 HashMap是基于哈希表实现的,每一个元素都是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阈值)时,同样会自动增长。 HashMap是非线程安全的,只是用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHas ... 阅读全文 »
ArrayList源码剖析 发表于 2017-04-26 | 分类于 Java 字数统计 2,690 | 阅读时长 12 ArrayList简介 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存。 ArrayList不是线程安全的,只能在单线程环境下,多线程环境下可以考虑用collections.synchronizedList(List l)函数返回一个 ... 阅读全文 »
[笔记]算法复习笔记---栈、队列、链表(下) 发表于 2017-04-26 | 分类于 Java 数据结构 字数统计 1,687 | 阅读时长 8 链表 链表的数据结构与栈和队列有所不同,栈和队列都是申请一段连续的存储空间,然后按照顺序存储。而链表是一种在物理上非连续、非顺序的存储结构,数组元素的申请是通过每个元素的指针来联系起来的。 链表分为两种:单向链表和双向链表。我们平时说的,一般是指单向链表,链表在每个节点除了存储数据之外,还额外存储两 ... 阅读全文 »
[笔记]算法复习笔记---栈、队列、链表(中) 发表于 2017-04-26 | 分类于 Java 数据结构 字数统计 492 | 阅读时长 2 一、用两个栈来实现队列 方法:入队都在Stack1中操作,出队都在Stack2中进行,入队和出队的规则如下:入队:直接把元素压入Stack1中。出队:如果Stack2不为空,直接弹出stack2的元素,如果stack2为空,将stack1中所有元素倒入stack2,然后弹出stack2栈顶元素。如果 ... 阅读全文 »
[笔记]算法复习笔记---栈、队列、链表(上) 发表于 2017-04-26 | 分类于 Java 数据结构 字数统计 1,309 | 阅读时长 6 一、什么是栈栈,又叫做堆栈(Stack),但是它和堆没有关系。实际上堆和栈是两种不同的概念,栈是一种只能在一端进行插入和删除的线性数据结构。 栈的特点:先进先出(LIFO,Last In First Out),也可以说是先进后出(FILO,First In Last Out),我们只能从一端去操作元 ... 阅读全文 »
[笔记]算法复习笔记---数组、集合、散列表(下) 发表于 2017-04-26 | 分类于 Java 数据结构 字数统计 1,506 | 阅读时长 6 散列表是一种空间换时间的数据结构,在算法中提升效率的一种常用的方法。但是,正如其特点,有时候所消耗的空间,真让人头疼,用的时候在二者之间权衡。 散列表,又叫哈希表(HashTable),是能够通过给定的关键字的值直接访问到具体对应值的数据结构。也就是说,把关键字映到一个表中的位置来直接访问记录,以加 ... 阅读全文 »