Wxy's Blog
  • 首页
  • 归档
  • 标签
  • 关于
  • 友链
不因虚度年华而悔恨,不因碌碌无为而羞愧

常见算法题整理 - 来自《剑指Offer》

数据结构 算法 概念 链表 广度优先搜索 位操作 树、单词查找树、图 深度优先搜索 内存(堆、栈) 栈和队列 二分查找 递归 堆 归并排序 动态规划 向量、数组列表 快排 时间、空间复杂度 散列表 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。(要求线性时间复杂度,即$O(1)$) 实例:输入:[1,2
2018-01-16
#算法

实现自定义图片加载框架

2018-12-17

数据结构-链表

数据结构-链表 链表是一种基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针(Pointer),简单来说链表并不像数组存储在一个连续的内存地址空间里,他们可以是不连续的因为他们每个节点保存着下一个节点的引用(地址),所以较之数组来说这是一个优势。 1.单链表 单链表是链表的一种,由节点组成,每个节点包含到下一个节点的指针。 单链表特点: 链表
2018-04-25
#数据结构

数据结构-红黑树

2018-12-20
#数据结构

常见名词概念

2019-12-11

组件间通信——LiveDataBus

LiveData是一个可以被观察的数据持有类,可以感知并遵循Activity、Fragment,Service等组件的生命周期。由于这种特性可以使他做到在特定生命周期执行特定的操作。 LiveData优点: UI和实时数据保持一致:可以在数据发生改变时立即响应到 避免内存泄漏:当绑定的组件被销毁时,会自动清理数据以及移除引用,避免泄漏 根据上述优点,就可以利用LiveData去实现一个组件
2019-03-21
#Android

组件化原理及实践

利用SPI机制实现组件化功能利用字节码注入配合transform api实现组件化功能组件化间通信机制参考链接AutoRegister
2019-02-27
#Android

设计模式--单例模式

单例模式 一个类只能产生一个对象。确保某一个只有一个实例,而且自行实例化并向整个系统提供这个实例且构造函数私有化。 12345678910111213//单例模式通用代码public class Singleton{ private static final Singleton singleton = new Singleton(); private Singleto
2018-12-13
#设计模式

Java-线程池

基础概念 线程:进程中负责执行的执行单元,一个进程中至少有一个线程,操作系统能够进行调度的最小单位 进程:一个执行中的程序的实例 多线程:解决多任务同时执行的需求,合理使用CPU资源。多线程的运行时根据CPU切换完成,如何切换由CPU确定,因此多线程具有不确定性 线程池: 基本思想是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理,当有线程任务
2019-09-13
#Java

Java-ReentrantLock原理及解析

一般的锁都是配合synchronized使用的,实际上在java.util.concurrent.locks还提供了其他几个锁的实现,拥有更加强大的功能和更好的性能。 锁的分类可重入锁 可重入锁:任意线程在获取该锁后能够再次获取锁时不会被阻塞。 当前线程恶可以反复加锁,但必须释放同样多次数的锁,否则会导致锁不会释放。可以避免死锁 原理通过组合自定义同步器(AQS)实现锁的获取与释放 再次进行l
2018-12-19
#Java

Jetpack-Lifecycle简析

Lifecycle简介Google官方提供的一个生命周期感知组件。可以由引用组件自己进行生命周期管理,从而减少内存泄露以及异常的可能性。 让我们自己创建的对象也可以感知到Android组件的生命周期。 核心设计模式观察者模式。 Lifecycle使用示例先构建需要监听生命周期的组件 1234567891011public class LifeCycleComponent implements L
2019-02-15
#源码解析

Jetpack-ViewModel简析

源码分析基于androidx版本 ViewModel简介 ViewModel是用来存储和管理Lifecycle创建数据的组件,在配置发生改变或者屏幕旋转时数据仍然不会丢失。ViewModel可以负责组件间的通信,可以高效解决Activity与Fragment的通信问题。 主要的功能还是在非手动关闭以及系统回收条件下进行 Activity/Fragment的数据保存。 具有以下优势:
2019-02-15
#源码解析

Kotlin-Tips

主要用来记录Kotlin的一些关键概念 Kotlin lazy关键字 lazy用在懒初始化的场景下,在参数不使用时无需进行初始化过程。 123456class Bird(var weight:Double = 0.00,var age:Int = 1,var color:String = "blue"){ val sex : String by lazy&
2020-10-06
#Kotlin

LruCache原理

LruCache 一般来说,缓存的策略主要包含缓存的添加、获取和删除。但由于缓存的大小都是有上限的。缓存慢了之后,要想继续添加 ,就需要删除一些旧的缓存以提供空间。 所以使用到了LruCache缓存算法,即最近最少使用算法,当缓存满时,会优先淘汰掉 最近最少使用的缓存对象。 LruCache的核心原理就是利用了LinkedHashMap。 LruCache的使用12345678910int ma
2018-12-14
#源码分析

Kotlin协程原理

在Kotlin-协程介绍了大部分概念,现在需要针对这些概念进行详细的说明以及分析。 协程是轻量级的线程 阅读地图(按问题定位) 1. 协程是什么:概念与术语 2. 协程怎么运行:核心组件与调度 3. 协程怎么用好:构造、启动、取消 4. 协程为什么能挂起:原理实现 5. 知识点总结(可口述) 6. 参考与延伸 展开子目录(细分知识点) 协程概念 概念介绍 协程与线程的关系(易混点)
2020-09-04
#Kotlin
1…891011

搜索

Hexo Fluid