- 博客(70)
- 收藏
- 关注
原创 函数式编程
1 简介github函数式编程是一种编程范式,在函数式编程中,函数为一等公民,可以作为另一个函数的参数或者作为返回值。在 Android 中 我们常用的就是 RxJava,目前的版本的就是 RxJava3。Android 编程中 使用 RxJava 主要为解决异步操作越来越复杂的问题,虽然 Android 提供了 AsyncTask、Handler 等来进行异步操作,但是面对复杂逻辑操作,可能节就力不从心。2 基本用法RxJava 原理就是通过扩展的观察者模式来实现,Observable [əbˈ
2021-04-03 19:41:51
131
原创 理解红黑树
1 二叉查找树红黑树是面试中一个非常重要的考点,在了解红黑树,我们需要知道为啥需要红黑树,红黑树主要为了解决二叉查找树出现瘸腿问题。二叉查找树,Binary Search Tree(BST),下图就是标准的二叉查找树,具有以下特征(左小右大):若左子树不空,则左子树上所有结点的值均小于它的根结点)的值;若右子树不空,则右子树上所有结点的值均大于它的根结点的值;左、右子树也分别为二叉排序树;没有键值相等的结点。红黑树主要为了解决二叉查找树出现瘸腿问题,所谓瘸腿问题如下图所示:明显可以看
2021-04-01 21:23:37
157
原创 Android知识点复习(持续更新中)
1 总览作为开发者,基础知识非常重要的,尤其一些大厂非常注重基础,基础是一切的根本,在面试时候,如果没有事先准备,很容易被淘汰。笔者整理这套知识点,大大小小的一共几百多条,方便大家查漏补缺。参考答案点击这里分为以下几个部分Java 知识点Android 知识点计算机基础知识点算法2 Java 知识点2.1 Java 基础Java 语言有什么特点?面向对象三大特征Java 和 C++ 的区别?import java 和 javax 有什么区别?JVM、JDK、JRE 区别?
2021-04-01 09:31:41
688
1
原创 RxJava订阅过程
文章目录1 简介2 原理3 基本使用4 原理4.1 被观察者创建Observable#create()ObservableCreateRxJavaPlugins.onAssembly4.2 线程切换subscribeOn(Schedulers.io())Schedulers#ioObservable#subscribeOn()ObservableSubscribeOnObservableSubscribeOn#SubscribeTaskScheduler#scheduleDirect()代码一:IOSche
2021-02-23 23:40:56
473
原创 AMS 家族
文章目录1 AMS 家族2 AMS 启动2.1 SystemServer#main ()2.2 SystemServer#startBootstrapServices()2.3 SystemServiceManager#startService()3 Activity 栈4 Launch Mode5 Intent 的 Flag6 taskAffinity1 AMS 家族在 Android 系统启动、应用程序进程启动过程以及四大组件工作过程都设计到一个非常重要的概念 AMS。AMS是Android中最核心
2021-02-04 00:33:47
229
原创 HTTP 和 HTTPS 浅析
1 HTTP1.1 简介HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)缩写。基于 TCP/IP 通信协议来传输数据。属于应用层协议。基于客户端-服务端架构(B/C)。1.2 特点简单快速:只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。由于简单,因而通信速度很快。灵活:HTTP 允许传输任意类型的数据对象,传输的类型由 Content-Type 标记。无连接:限制每次连接只处理一个请求。服务器处理
2021-02-03 19:27:54
265
原创 Java异常处理
1 分类Error: JVM 无法处理的错误Exception:受检异常 :需要用 try…catch… 语句捕获并进行处理,并且可以从异常中恢复非受检异常 :是程序运行时错误,例如空指针异常。2 异常处理Error(错误):一般表示代码运行时 JVM 出现问题。比如 NoClassDefFoundError 等。比如说当jvm耗完可用内存时,将出现 OutOfMemoryError。此类错误发生时,JVM将终止线程。非受检异常:将由系统自动抛出,应用本身可以选择处理或者忽略该异
2021-02-02 20:37:30
85
原创 Java内存区域
文章目录1 Java 内存区域(运行时数据区域)1.1 JDK8 及之后JVM 内存区域1.2 JDK8 之前JVM 内存区域2 概述2.1 方法区(Method Ara)2.2 JVM 堆(Java Heap)2.3 虚拟机栈(VM Stack)2.3.1 局部变量表2.3.2 操作数栈2.3.3 动态链接2.3.4 方法返回地址2.4 本地方法栈(Native Method Stack)2.5 程序计数器(Program Counter Register)1 Java 内存区域(运行时数据区域)JV
2020-05-18 23:19:23
243
原创 Android View体系(五)--View 动画
文章目录1 前言1 前言动画也是 Android 知识体系中一块非常重要的内容,我们要想在界面中实现一些炫酷的效果,那么离不开动画。
2020-02-19 00:34:02
216
原创 Flutter(一)--Dart语言基础
文章目录1 前言2 Dart语言基础语法3 标识符4 Dart注释5 面向对象编程6 数据类型6.1 数字类型6.2 字符串6.3 布尔类型6.4 列表类型6.5 集合6.6 映射6.7 符文6.8 符号7 变量7.1 变量语法7.2 默认值7.3 dynamic 关键字7.4 final 和 const8 运算符9 条件语句10 循环11 Dart 数字12 字符串13 布尔类型14 列表14 ...
2020-02-18 22:17:42
807
原创 Android View体系(三)--实现 View 的滑动七种方式
文章目录1 前言2 方式2.1 layout()2.2 动画2.2.1 View 动画2.2.2 属性动画2.3 scollTo与scollBy2.4 offsetTopAndBottom/offsetLeftAndRight2.5 LayoutParams 改变布局参数2.6 Scroller2.6.1 Scroller 原理2.7 ViewDragHelper3 参考文章1 前言View ...
2020-02-17 23:28:04
373
原创 Android View体系(二)理解 MeasureSpec
文章目录1 前言2 组成2.1 测量模式1 前言MeasureSpec 翻译成中文就是测量规格,在 View 的测量过程中要使用到 MeasureSpec。2 组成MeasureSpec 是由 32 位的 int 值来表示,高 2 位 表示测量模式(mode),低 30 位 表示测量大小(size),所以我们可以得出结论:测量规格(MeasureSpec)= 测量模式(mode) + 测量...
2020-02-17 20:20:32
238
原创 Android View体系(一)坐标系
文章目录1 前言2 View 简介3 坐标系3.1 Android 坐标系3.2 视图坐标系3.2.1 View 获取自身宽高3.2.2 View 自身坐标3.2.3 MotionEvent 提供方法1 前言Android 的 View 体系是 Android 中非常重要的一块内容,包括自定义控件、事件的分发等都属于 View 体系。2 View 简介View 是 Android 中所有控...
2020-02-17 13:44:06
322
原创 《Android进阶解密》读书笔记--第3章 应用程序进程启动过程
文章目录3.1 应用程序进程简介3.1 应用程序进程简介1.AMS 判断应用程序进程是否存在2.不存在,AMS 通过 Socket(Server 端) 请求 Zygote 创建新的应用程序进程3.Zygote 通过 fock 自身创建应用程序进程(1.创建虚拟机实例 2.Binder 线程池和消息循环)...
2020-02-16 22:16:57
209
原创 Android View体系(四)--GestureDetector手势识别
文章目录1 简介2 使用2.1 onGestureListener2.2 OnDoubleTapListener2.3 SimpleOnGestureListener1 简介手势识别在 Android 开发中也是非常常见,我们通过设置监听 View.onTouchListener 接口,重写 onTouch(View v, MotionEvent event) 可以处理一些触摸事件,但是在处理...
2020-02-16 20:36:22
377
原创 《Android自定义控件入门与实战》读书笔记--第9章 Android 画布
文章目录10.1 ShapeDrawable获取画布onDraw、dispatchDrawBitmapSurfaceView 的 SurfaceHolder.lockCanvas10.1 ShapeDrawable通过 shape 标签实例要转成 GradientDrawable
2020-02-16 17:42:37
210
原创 锁的概述(一)--乐观锁与悲观锁
文章目录1. 乐观锁与悲观锁1.1.简介1.2.乐观锁1.3.悲观锁2.公平锁与非公平锁3. 独占锁与共享锁4.可重入锁与非可重入锁5.自旋锁与适应性自旋锁6.无锁与偏向锁与轻量级锁与重量级锁1. 乐观锁与悲观锁1.1.简介乐观锁和悲观锁是数据库中引入名词,可以理解是一种思想,在 Java 并发编程中也有所体现,例如 synchronized 关键字和 ReentrantLock 等都是采用...
2020-02-15 21:48:12
303
原创 《Android自定义控件入门与实战》读书笔记--第9章 Canvas与图层
文章目录9.1 获取 Canvas 对象的方法9.2 图层与画布9.2.2 画布与图层9.3 Flag的具体含义9.4 恢复画布9.1 获取 Canvas 对象的方法1.重写 onDraw()、dispatchDraw()1.1.onDraw():绘制自身1.2.dispatchDraw():绘制子视图,ViewGroup 需要重写2.使用 Bitmap 创建2.1.Canvas c...
2020-02-15 21:01:51
167
原创 《Android自定义控件入门与实战》读书笔记--第8章 混合模式
文章目录8.1 混合模式之 AoidXfermode8.1.2 AoidXfermode8.4.3 模式总结8.1 混合模式之 AoidXfermode准备1.禁用硬件加速setLayerType(View.LAYER_TYPE_SOFTWARE,null)2.使用离屏绘制int layerid = canvas.saveLayer(O, 0, getWidth( ), getHe...
2020-02-15 15:53:44
173
原创 混合模式之PorterDuffXfermode
文章目录1.简介2.使用2.1.颜色叠加的模式1.简介在自定义控件或者对图片进行特殊处理的时候,常常需要使用到图像混合操作,这就需要 Xfermode,实现 Xfermode 的子类主要有三个类 :AvoidXfermodePixelXorXfermodePorterDufferXfermode其中 PixelXorXfermode 在 API 16 中已经过时了,基本用不到。Av...
2020-02-15 15:52:05
318
原创 《Android自定义控件入门与实战》读书笔记--第6章 Paint基本使用
文章目录6.1 硬件加速6.1.1 概述6.1.2 软件绘制与硬件加速区别6.1.3 禁用 GPU 硬件加速的方法6.2 文字6.2.1 概述6.2.2 绘图四线格与 FontMetrics6.2.3 常用函数6.3 Paint 常用函数6.1 硬件加速6.1.1 概述GPU:图形处理器API 11 之前没有 GPU 概念,API 14 硬件加速功能默认开启,API 11 - 13 默认...
2020-02-13 22:38:20
120
原创 第三方源码分析(四)--ARouter源码分析
文章目录一、简介二、入门2.1.添加依赖2.2.初始化2.3.添加注解2.4.发起路由三、原理解析3.1 分析四、总结一、简介这是 Android 进阶笔记第四篇,ARouter 的源码分析,众所周知,在日常开发中,随着项目业务越来越复杂,项目中的代码量也越来越多,如果维护、扩展、解耦等成了一个非常头疼问题,随之孕育而生的诸如插件化、组件化、模块化等热门技术。而其中组件化中一项的难点,就是实...
2020-02-13 00:56:41
230
原创 《Android自定义控件入门与实战》读书笔记--第5章 动画进阶
文章目录5.1 利用 PathMeasure 实现路径动画5.1 利用 PathMeasure 实现路径动画
2020-02-12 21:33:42
137
原创 《Android自定义控件入门与实战》读书笔记--第4章 属性动画进阶
文章目录4.1 PropertyValuesHolder 和 Keyframe4.1.1 PropertyValuesHolder4.1.2 Keyframe4.2 ViewPropertyAnimator4.2.3 性能考量4.3 为 ViewGroup 内的组件添加动画4.3.2 LayoutTransition4.4 开源动画库 NIneOldAndroids4.4.2 NineOldAnd...
2020-02-12 13:50:22
216
原创 《Android自定义控件入门与实战》读书笔记--第3章 属性动画
文章目录3.1 ValueAnimator 的基本使用3.1.1 概述3.1.2 ValueAnimator 的简单使用3.1.3 常用函数3.2 自定义插值器与 Evaluator3.2.2 Evaluator3.3 ValueAnimator 进阶-ofObject3.1 ValueAnimator 的基本使用3.1.1 概述1.视图动画:补间动画、逐帧动画2.属性动画:ValueAn...
2020-02-12 12:16:06
178
原创 《Android自定义控件入门与实战》读书笔记--第1章 绘图基础
1.1 基本图形绘制1.1.1 概述Paint、Canvas1.1.2 画笔的基本设置1.setAntiAlias() 抗锯齿2.setColor() 颜色3.setStyle() 填充样式 Paint.Style.FILL Paint.Style.FILL_AND_STROKE Paint.Style.STROKE4.setStrokeWidth() 描边宽度值...
2020-02-11 22:52:51
374
原创 《Android自定义控件入门与实战》读书笔记--第2章 视图动画
文章目录2.1 视图动画标签2.1.1 概述动画分类1.视图动画:补间动画、逐帧动画2.属性动画2.1 视图动画标签2.1.1 概述配置 XML 动画1.alpha2.scale3.translate4.rotate5.set...
2020-02-11 22:52:32
161
原创 《大话数据结构》读书笔记--第6章 树
文章目录6.2 树的定义6.2.1 结点分类6.2.2 结点间关系6.3 数的抽象数据结构6.4 树的存储结构6.4.1 双亲表示法6.4.2 孩子表示法6.4.3 孩子兄弟表示法6.5 二叉树6.5.1 二叉树特点6.5.2 特殊二叉树6.6 二叉树的性质6.7 二叉树的存储结构6.7.2.二叉链表6.8. 遍历二叉树6.8.2 二叉树遍历方法6.9 二叉树的建立6.10 线索二叉树6.11 树...
2020-02-06 19:52:26
539
原创 C语言中 "." 和 "->"区别
“.”1.声明一个结构体,格式为 结构体类型名+结构体名,结构体名加“.”加域名就可以引用域 了,自动分配了结构体的内存。2.一般情况下读作“的”。“->”1.声明一个结构体,格式为 结构体类型名+结构体名,并且声明一个结构体的指针,需要开辟一个该结构体的内存,返回的指针给声明的结构体指针,才能用“->”正确引用,否则内存中只分配了指针的内存,没有分配结构体的内存,导致想要的...
2020-02-06 18:39:32
446
原创 《大话数据结构》读书笔记--第1章 数据结构绪论
文章目录1.4 基本概念和术语1.5 逻辑结构和物理结构1.5.1 逻辑结构1.5.2 物理结构1.6 抽象数据类型数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。程序设计=数据结构+算法1.4 基本概念和术语数据:描述客观事物的符号,计算机中的可操作对象。(可输入到计算机+能被计算机处理)数据元素:组成数据、有一定意义的基本单位,...
2020-02-05 00:16:50
259
原创 《大话数据结构》读书笔记--第2章 算法
文章目录2.4 算法定义2.5 算法的特性2.6 算法设计的要求2.7 算法效率的度量方法2.8 函数的渐近增长2.9 算法时间复杂度2.9.2 推导大 O 阶方法2.11 最坏情况与平均情况2.12 算法空间复杂度2.4 算法定义算法:是解决特定问题步骤的描述,在计算机中表现为指令的有限序列,并且每一条指令表示一个或多个操作。2.5 算法的特性输入、输出、有穷性、确定性、可行性。...
2020-02-05 00:16:22
196
原创 《大话数据结构》读书笔记--第3章 线性表
文章目录3.2 线性表的定义3.3 线性表的抽象数据类型3.4 线性表的顺序存储结构3.4.1 顺序存储的定义3.4.2 顺序存储方式3.4.3 数组长度和线性表长度区别3.4.4 地址计算方法3.5 顺序存储结构的插入与删除3.5.1 获取元素操作3.5.2 插入操作3.5.3 删除操作线性表顺序存储结构的优缺点3.6 线性表的链式存储结构3.6.1 顺序存储结构不足的解决办法3.6.2 线性表...
2020-02-05 00:15:39
491
原创 《Android开发艺术探索》读书笔记--第8章 理解Window和WindowManager
文章目录8.1 Window和WindowManager8.2 Window 的内部机制8.2.1 Window 的添加过程8.3 Window 创建过程8.3.1 Activity 的 Window 创建过程8.3.2 Dialog 的 Window 创建过程8.3.3 Toast 的 Window 创建过程Window 表示一个窗口的概念,是一个抽象类,具体实现是 PhoneWindow,...
2020-02-04 18:12:53
1450
原创 C语言复习笔记
文章目录一、前言二、开始2.1 简介一、前言关于C/C++这两个玩意,自从大学毕业之后,接触到的地方也比较少了,抽空把以前零散笔记整理下,不过以前也是整理菜鸟教程。虽然业务中涉及到的 C/C++ 部分,有专门 C大佬搞。但是 Android 底层涉及到 C/C++,看一些源码 C/C++ 还是非常重要的。二、开始2.1 简介...
2020-02-04 00:09:32
738
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人