- 博客(14)
- 资源 (12)
- 收藏
- 关注
原创 数据结构(三), 弄懂红黑树(多图警告!!!)
个人博客传送门红黑树 && BST红黑树就是在 BST 的基础上加入了一些自己的特征一、特征符合 BST 所有特征节点有两色, 红, 黑根是黑所有叶子节点是黑 (叶子是NIL节点)每个红色节点必须有两个黑节点任意节点到每个叶子节点的路径都包含相同数量的黑节点这些特征保证了, 根到叶子节点的最长路径, 最长不会超过最短路径的 2 倍因为操作比如插入、删除和查找某个值的最坏情况时间都要求与树的高度成比例,这个在高度上的理论上限允许红黑树在最坏情况下都是高效的, 而不同
2021-04-11 18:27:23 233
原创 数据结构(二), AVL平衡二叉树
个人博客传送门一、须知须会平衡因子: 二叉树的 左子树 - 右子树 = 高度的差值,在平衡树中可能的值(-1 ,0 ,1)平衡: 平衡因子 的绝对值小于 2 (下图第一张为平衡树, 第二张为不平衡树)平衡树且平衡因子==0非平衡树且平衡因子==-2树的旋转: 参考维基百科 树的旋转转轴的移动方向来决定它是左旋还是右旋, 本文中称转轴右移为右旋反之则是左旋右旋: (Q为树的根节点, P为转轴, 转轴最终被右移) 右旋时, 转轴的右孩子 = 树的根节点;
2021-04-11 18:19:51 144
原创 数据结构(一), 二叉查找树BST
个人博客传送门一、别名二叉搜索树, 有序二叉树, 排序二叉树, Binary Search Tree二、特征左子树的所有节点的值均小于根节点右子树下所有节点的值均大于更节点所有节点的值都不相同任意节点的左子树和右子树也都是BST三、节点结构 public static class Node { // 数据区 private int data; // 左节点 private Node left; //
2021-04-11 18:15:32 129
原创 Android Glide 3.7.0 源码解析(九) , gif 的加载实现
个人博客传送门一、涉及类目GlideDrawableImageViewTarget.javaGifDrawable.javaGifFrameLoader.javaGifDecoder.java二、原理概述老规矩先介绍原理的框架,免得看源代码迷路GlideDrawableImageViewTarget 会调用加载的 GifDrawable 来启动动画GifDrawable 会在 draw() 中绘制当前帧, 并委托 GifFrameLoader 去加载下一帧GifFrameLoader
2021-04-05 20:32:13 439
原创 Android Glide 3.7.0 源码解析(八) , RecyclableBufferedInputStream 的 mark/reset 实现
个人博客传送门一、mark / reset 的作用Android Glide 3.7.0 源码解析(七) , 细说图形变换和解码有提到过RecyclableBufferedInputStream 对于 mark(int marklimit) 和 reset() 方法的作用, 本文则是探讨具体的实现思路mark(int marklimit) 的作用是在流中创建一段起点是 markPos 长度是 markLimit 的可被重复读取区域, 当调用 reset() 方法时流的读取位置会回到 markPos
2021-04-01 14:59:36 470
原创 Android Glide 3.7.0 源码解析(七) , 细说图形变换和解码
概览Glide 3.7.0 里面涉及的图形变换主要是 大小缩放, CenterCrop , FitCenter, 其中大小缩放是基于Downsampler(解码工具) 实现的, 而剩余两个则是 Transformation(图形变换) 接口的两个实现类.所以本文主要介绍3点:CenterCropFitCenter大小缩放Android Glide 3.7.0 源码解析 (二) , 从一次图片加载流程看源码文中的流程可以看出是在 DecodeJob 里面进行 解码 --> 图形变换
2021-03-31 17:47:23 417
原创 Android Bitmap(一), 资源重用
一、为什么Bitmap需要资源重用Android 中图片显示的实体其实是一个 Bitmap 对象, 每次图片显示时, 都会构建一个 Bitmap 对象, 不用时再销毁, 假设, 在一个长列表且列表的每项都有一个图片显示, 持续滑动这个列表, 内存中的行为就是, 持续的创建 Bitmap 对象和产生不用的 Bitmap 对象, 当量级到达一定程度, 会触发 GC, 这样持续滑动界面, 势必会频繁触发 GC, 导致界面卡顿二、Bitmap 内存管理的演变以下内容参考官文: 管理位图内存Androi
2021-03-30 17:21:29 391
原创 Android Glide 3.7.0 源码解析(六) , 缓存结构详述
结构总览内存缓存是由 LruResourceCache 和 activeResources 组成, 缓存的是 EngineResource 类型第一级缓存: LruResourceCache 是一个最终是一个 LinkedHashMap 来实现 Lru , 存储的是没有被界面使用的缓存资源, 并由LRU控制缓存大小第二级缓存: activeResources 是由一个 Map<Key, WeakReference<EngineResource<?>>> 构成, 存
2021-03-27 19:48:51 258
原创 Android Glide 3.7.0 源码解析(五) , 如何获得ImageView的宽高
前言通过前面的 Android Glide 3.7.0 源码解析 (二) , 从一次图片加载流程看源码 我们知道Request(真实) 只有在图片组件的大小准备好了才会开始真正的加载// GenericRequest public void begin() { startTime = LogTime.getLogTime(); if (model == null) { onException(null); return;
2021-03-20 15:13:30 268
原创 Android Glide 3.7.0 源码解析(四), BitmapPool作用及原理
Android 中图片显示的实体其实是一个 Bitmap 对象, 每次图片显示时, 都会构建一个 Bitmap 对象, 不用时再销毁假设: 一个长列表每项都有个图片需要显示, 我们在快速滑动长列表的时候, 会产生什么?Bitmap 对象被频繁的创建和释放, 导致 GC 频繁如何解决上述问题?BitmapPool , 一个 Bitmap 的对象池, 让一个新的图片资源复用在旧的 Bitmap对象上, 假设, 长列表一页有 20 个图片资源, BitmapPool 大小也刚好是 20 , 那么当滑动列表
2021-03-17 22:20:58 660
原创 Android Glide 3.7.0 源码解析(三), 生命周期绑定
Android Glide 3.7.0 源码解析(三), 生命周期绑定如果是主线程就注册创建一个无界面的 Fragment 加到 Fragment / Activity , 依赖这个Fragment 来监听生命周期如果是非主线程 , 就创建一个 Application 级别的 Lifecycle , 模拟生命周期在 1. 中创建的 Fragment 可以反馈 内存 和 界面 的 生命周期 , 这就完成了对内存和界面的监听可以根据 1. 中 Fragment , 来决定是否监控 网络状态 ( 如果界面
2021-03-15 11:24:34 232
原创 Android Glide 3.7.0 源码解析(二), 从一次图片加载流程看源码
Glide.with(activity).load(url).into(imageView);Glide.with 方法, 创建 RequestManager 实例RequestManager.load 方法, 创建 GenericRequestBuilder 实例, 并打包编/解码, 转码, 图形转换, 下载等工具解码: File, InputStream 转换成 Bitmap, Drawable编码: 将数据写入缓存区
2021-03-10 21:41:16 266
原创 github 提速方案, 亲测有效!
一、正常下载 Glide 源代码 git clone https://github.com/bumptech/glide.git二、提速方案下载 Glide1. 下载我们将原本的网站中的 github.com 进行替换为 github.com.cnpmjs.org git clone https://github.com.cnpmjs.org/bumptech/glide.git2. 查看 origin 配置 git config --list发现:remote.origin.url
2021-03-08 22:56:31 1037
原创 Android Glide 3.7.0 源码解析(一), 准备工作
Android Glide 3.7.0 源码详解 (一) , 准备工作Android Glide 3.7.0 源码解析 (二) , 从一次图片加载流程看源码Android Glide 3.7.0 源码解析(三) , 生命周期绑定Android Glide 3.7.0 源码解析(四) , BitmapPool作用及原理Android Glide 3.7.0 源码解析(五) , 如何获得ImageView的宽高
2021-03-08 22:40:30 149
jdk_1_8_linux_x64_.zip
2019-07-21
MarkDown编辑器
2019-04-27
Notepad++(32位+64位)
2019-04-27
XMind(破解版)
2019-04-27
Listary for windows
2019-04-27
viewpagerTouchNone
2016-08-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人