Zhoujie Blog

数据结构(四), 完美二叉树, 完全二叉树和完满二叉树

完美二叉树 (Perfect Binary Tree) A Perfect Binary Tree(PBT) is a tree with all leaf nodes at the same depth. All internal nodes have degree 2. 所有节点的度都是 2 所有叶子节点都在同一个层级 度: 一个节点有几个孩子 完全二叉树...

数据结构(三), RBTree红黑树(多图警告!!!)

红黑树 && BST 红黑树就是在 BST 的基础上加入了一些自己的特征 一、特征 符合 BST 所有特征 节点有两色, 红, 黑 根是黑 所有叶子节点是黑 (叶子是NIL节点) 每个红色节点必须有两个黑节点 任意节点到每个叶子节点的路径都包含相同数量的黑节点 这些特征保证了, 根到叶子节点的最长路径, 最长不会超过最短路径的 2 倍 因...

数据结构(二), AVL平衡二叉树

一、须知须会 平衡因子: 二叉树的 左子树 - 右子树 = 高度的差值,在平衡树中可能的值(-1 ,0 ,1) 平衡: 平衡因子 的绝对值小于 2 (下图第一张为平衡树, 第二张为不平衡树) 平衡树且平衡因子==0 非平衡树且平衡因子==-2 树的旋转: 参考维基百科 树的旋转 转轴的移动方向来决定它是...

数据结构(一), 二叉查找树BST

一、别名 二叉搜索树, 有序二叉树, 排序二叉树, Binary Search Tree 二、特征 左子树的所有节点的值均小于根节点 右子树下所有节点的值均大于更节点 所有节点的值都不相同 任意节点的左子树和右子树也都是BST 三、节点结构 1 2 3 4 5 6 7 8 public static class Node { // 数据区...

Android Glide 3.7.0 源码解析(九) , gif 的加载实现

一、涉及类目 GlideDrawableImageViewTarget.java GifDrawable.java GifFrameLoader.java GifDecoder.java 二、原理概述 老规矩先介绍原理的框架,免得看源代码迷路 GlideDrawableImageViewTarget 会调用加载的 GifDrawable 来启动动画 GifDrawable...

Android Glide 3.7.0 源码解析(八) , RecyclableBufferedInputStream 的 mark/reset 实现

一、mark / reset 的作用 Android Glide 3.7.0 源码解析(七) , 细说图形变换和解码有提到过RecyclableBufferedInputStream 对于 mark(int marklimit) 和 reset() 方法的作用, 本文则是探讨具体的实现思路 mark(int marklimit) 的作用是在流中创建一段起点是 markPos 长度是 ma...

Android Glide 3.7.0 源码解析(七) , 细说图形变换和解码

一、概览 Glide 3.7.0 里面涉及的解码/图形变换主要是 大小缩放, CenterCrop , FitCenter, 其中大小缩放是基于Downsampler(解码工具) 实现的, 而剩余两个则是 Transformation(图形变换) 接口的两个实现类. 所以本文主要介绍3点: CenterCrop FitCenter 大小缩放 Android Gli...

Android Bitmap(一), 资源重用

一、为什么Bitmap需要资源重用 Android 中图片显示的实体其实是一个 Bitmap 对象, 每次图片显示时, 都会构建一个 Bitmap 对象, 不用时再销毁, 假设, 在一个长列表且列表的每项都有一个图片显示, 持续滑动这个列表, 内存中的行为就是, 持续的创建 Bitmap 对象和产生不用的 Bitmap 对象, 当量级到达一定程度, 会触发 GC, 这样持续滑动界面, 势必会...

Android Glide 3.7.0 源码解析(六) , 缓存结构详述

结构总览 内存缓存是由 LruResourceCache 和 activeResources 组成, 缓存的是 EngineResource 类型 第一级缓存: LruResourceCache 是一个最终是一个 LinkedHashMap 来实现 Lru , 存储的是没有被界面使用的缓存资源, 并由LRU控制缓存大小 第二级缓存: activeResources 是由一个 Map...

github clone 提速

github clone 准备搭载火箭~

1. 修改 Hosts 文件 利用 https://www.ipaddress.com/ 链接查询以下三个链接的DNS解析地址 github.com assets-cdn.github.com github.global.ssl.fastly.net 打开系统的 Hosts 文件进行修改 windows 修改C:\Windows\System32\drivers\e...