- 博客(78)
- 资源 (15)
- 收藏
- 关注
原创 kotlin协程硬核解读(6. 协程调度器实现原理)
版权声明:本文为openXu原创文章【openXu的博客】,未经博主允许不得以任何形式转载文章目录1. 相关类介绍1.1 ContinuationInterceptor续体拦截器1.2 Dispatchers调度器2. 协程的3次线程调度2.1 第一次线程调度:切换到指定线程开始执行协程代码2.2 第二次线程调度:切换线程执行异步挂起函数2.3第三次线程调度:异步挂起函数执行完毕后将函数执行结果切回协程所在线程并恢复协程执行2.4 小结3. 调度器实现线程切换的原理3.1 调度器的平台实现3.2 An.
2021-05-27 19:45:50
3430
6
原创 kotlin协程硬核解读(5. Java异常本质&协程异常传播取消和异常处理机制)
版权声明:本文为openXu原创文章【openXu的博客】,未经博主允许不得以任何形式转载文章目录1. 异常的本质1.1 操作系统、程序、JVM、进程、线程1.2 异常方法调用栈1.3 java异常处理机制1.4 小结2. Android异常处理机制3. 协程异常3.1 挂起函数的异常3.2 throw & resumeWithException(e)3.3 协程异常导致传递取消3.4 协程异常传递取消原理3.4.1 协程异常传递取消3.4.2 父协程等待所有子协程取消3.5 协程异常传递和.
2021-05-23 20:37:33
1671
10
原创 kotlin协程硬核解读(4. 协程的创建和启动流程分析)
上一篇文章我们学习了挂起函数,了解了协程return式挂起和resumeWith()恢复的原理,梳理了协程代码块的执行流程,文章末尾我们遗留了两个问题:启动协程时SuspendLambda的匿名子类对象被创建了2次,第一次是launch()函数中为构造函数传递null创建的对象被强转为Function2类型,第二次是什么时候创建的?第一次invokeSuspend()是怎么触发的?协程启动、挂起、恢复涉及的线程调度这篇文章我们讲解第一个问题,打通协程执行的前半程(协程的创建和启动),为下一
2021-05-18 20:24:44
1738
2
原创 kotlin协程硬核解读(3. suspend挂起函数&挂起和恢复的实现原理)
版权声明:本文为openXu原创文章【openXu的博客】,未经博主允许不得以任何形式转载文章目录1. 自定义挂起函数1.1 为什么需要自定义挂起函数1.2 suspend到底有什么用?1.3 不完全挂起函数(组合挂起函数)1.4 真正的、完全的挂起函数1.5 异步挂起函数1.6 withContext()1.7 withContext()和suspendCancellableCoroutine()怎么选?2. 挂起、恢复的实现细节2.1 Continuation续体2.2 续体传递风格CPS★★★2.
2021-05-18 20:22:20
4954
11
原创 kotlin协程硬核解读(2. 协程基础使用&源码浅析)
版权声明:本文为openXu原创文章【openXu的博客】,未经博主允许不得以任何形式转载文章目录1. 依赖2. 相关概念及术语3. 协程构建器3.1 runBlocking{}3.2 launch{}3.3 async{}3.4 怎样获取CoroutineScope的实例对象?3.5 其他构建器(构建子协程)3.6 总结4. CoroutineScope协程作用域4.1 怎样选择合适的CoroutineScope4.2 CoroutineScope有什么作用4.3 自定义CoroutineScope.
2021-05-18 20:13:52
2405
5
原创 Retrofit+协程使用填坑和优化
本文章主要记录在项目中使用Retrofit+协程时遇到的问题,当然有关问题不局限于使用协程,可能使用RxJava或者原始Call也会遇到,所以算是对Retrofit相关问题的解决和优化。文章第一个问题讲的比较啰嗦,主要介绍了当我们遇到问题时应该怎样去分析,并学会使用相关工具定位问题产生的根本原因,这样才能更好的解决问题,而后面的就直接简单的描述问题、阐述原因和解决办法。1. (优化)Retrofit+协程第一次请求时卡顿现象1.1 背景/**1. 接口定义*/@POST("jeecg-boot/..
2021-05-07 15:23:11
2101
7
原创 kotlin协程硬核解读(1. 协程初体验)
版权声明:本文为openXu原创文章【openXu的博客】,未经博主允许不得以任何形式转载文章目录1. 什么是协程2. 协程有什么作用2.1 回调地狱2.2 Rx解决回调地狱2.3 同步调用2.4 协程--用同步的方式编写异步代码2.5 协程只是为了消灭回调?公司项目中使用协程已经有一段时间了,刚开始接触协程的时候也和其他做Android的小伙伴有相同的心理活动:Google爸爸,球球你不要再出新东西了,学不动了。不管当初我是怎样拒绝它的,但是现在我只能说:嗯 协程真香!接触协程的时候在网上搜索了.
2021-04-22 15:42:36
1898
7
原创 Retrofit流程及设计模式全解析
版权声明:本文为openXu原创文章【openXu的博客】,未经博主允许不得以任何形式转载本文基于Retrofit 2.9.0版本源码分析,根据Retrofit源码窥探请求流程及框架设计中使用到的设计模式1. 代理模式在文章开始之前先介绍一下代理模式,因为这是Retrofit的入口,其他设计模式参考文章末尾的概括代理模式:为对象提供一种代理以控制这个对象的访问。某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。组成:抽象角色:通过接口.
2021-04-12 19:17:32
1215
6
原创 记录ViewPager+Fragment懒加载+LiveEventBus的Sticky事件在Fragment中只能收到一次的问题
问题背景项目中使用LiveEventBus时遇到一个非常隐蔽的问题,花了很多时间才定位到原因,我觉得这个场景使用情况还是很多的,在此记录该过程。首先介绍一下使用场景,app主页面采用TabHost+Fragment构成下方的4个Tab,其中第一个Tab的Fragment中采用了TabLayout+ViewPager+Fragment,可以看到首页中有综合、电、水等Fragment。首页的每个子Fragment在请求统计数据之前,需要先选择上方的Spinner作为参数,而Spinner的数据也是从服务
2021-02-23 18:30:47
1175
原创 DataBinding为null?模块化开发中的DataBinding你需要注意了
这几天在新的项目开发中使用DataBinding遇到了一个DataBindingUtil.setContentView()返回null的问题,在解决问题的过程中顺便将DataBinding源码分析了一下,这篇文章中的示例可能有些人看不天明白,因为你没有遇到相同的问题,所以感觉很绕,如果有人遇到相同的问题,希望能帮助到你。如果你只是想了解DataBinding的原理,可以直接看中间的两个内容,分别讲解了DataBinding的使用和源码分析。1. 使用DataBinding遇到的问题公司项目在18年就全部
2020-11-30 17:30:11
7538
2
原创 关于https你了解的还不够多
文章目录1. HTTPS1.1 密码学1.2 HTTP安全问题1.3 CA机构(Catificate Authority)1.4 HTTPS工作流程2. 网站支持https2.1 SpringBoot2.2 开启SSL2.3 自签名证书2.4 获取网站的数字证书3. Android 9.0强制使用https3.1 usesCleartextTraffic允许使用明文通信3.2 代码配置网站证书3.3 android:networkSecurityConfig网络安全性配置4. 双向证书验证4.1 Sprin
2020-11-19 13:42:53
891
1
原创 Android源码解析--EventBus原理
版权声明:本文为openXu原创文章【openXu的博客】,未经博主允许不得以任何形式转载目录1. EventBus使用2. @Subscribe3. register()注册订阅者3.1 查找订阅方法3.2 subscribe()注册4. unregister()注销订阅5. post()发布事件6. 事件分发HandlerPosterBackgroundPoster && AsyncPoster7. 粘性事件Subscriber Index9. 总结EventBus是greenr.
2020-08-21 19:02:02
926
原创 Android源码解析--深入Handler机制
目录1. Looper1.1 prepare()创建Looper1.2 loop()轮询1.3 主线程的Looper1.4 主线程looper死循环为什么不会导致ANR2. Handler2.1 发送消息2.2 分发消息3. MessageQueue★ 3.1 数据结构3.2 插入消息到队列enqueueMessage()3.3 从队列轮询取出消息next()4. Message5. ThreadLocal5.1 ThreadLocal、synchronized的区别5.2 ThreadLocal源码分析6
2020-08-20 10:59:30
533
原创 AndroidX全解析
目录一.Android Jetpack二.AndroidX2.1 在项目中使用androidx库2.2 老项目迁移到AndroidX开发模式三. MVCModelViewController四. MVP五. MVVM5.1 Android架构组件5.2 appcompat5.3 ViewModel5.3.1 ViewModle的使用5.3.2 ViewModel的优势5.3.3 ViewModel的生命周期5.4 LiveDate5.4.1 LiveData的优势5.4.2 LiveData的使用5.4.3
2020-08-17 17:38:47
4591
2
原创 Android源码解析--Context详解
目录Context的作用Context类的实现ContextWrapper与ContextImpl关联ApplicationServiceActivityContext数量Application ContextContext中的ResourcesContext的使用Android程序和一个Java程序最大的区别是Android的系统组件不能像普通Java程序通过new创建对象,而是通过系统提供的特殊方式,这是因为new出来的组件没有携带上下文环境Context。为什么要设计Context?其实说起来跟An
2020-08-12 17:41:37
745
3
原创 通过Velocity模板引擎对Mysql表自动生成JavaBean实体类的Gradle插件
版权声明:本文为openXu原创文章【openXu的博客】,未经博主允许不得以任何形式转载文章目录1. 需求2. 插件编写2.1 gradle配置2.2 JDBC2.3 Velocity模板引擎2.4 定义Gradle插件2.5 插件发布到Maven3. 插件使用4. 源码1. 需求最近遇到一个需求,需要写一段程序,监听Mysql数据库数据变化,对Cassandra的数据进行同步。但是现在Mysql里面是有数据的,Cassandra中没有数据,如果要保持同步,就需要程序跑起来的时候首先将Mysql.
2020-05-20 10:56:25
1145
原创 Kafka-快速入门
一. windows下环境配置必须提前安装好jdkkafka官方文档下面步骤按照官方文档操作下载2.3.0版本解压目录不应该有空格。\kafka_2.12-2.3.0\bin目录下的.sh文件就是kafka的shell脚本,我们会发现,bin目录下还有一个windows文件夹,里面包含很多.bat文件,这些是windows批处理命令,也就是说我们下载的这个包可以在Linux和win...
2019-11-26 10:55:38
478
原创 Redis命令
Redis服务器安装Redis项目本身不支持windows,但是Microsoft开放技术小组开发和维护这个windows端口(针对Win64),所以我们可以在网络上下载Redis的windows版本。Redis官网1. 下载安装Redis for Windows,点击release,可看到很多版本的安装包,选择最新正式版Redis-x64-3.0.504.zip。下载完成后解压,打...
2019-11-26 10:53:31
403
原创 SpringBoot快速入门
SpringBoot简介Spring通过IoC(控制反转:通过依赖注入实现)和AOP(面向切面编程)等技术,方便我们管理和整合众多优秀的框架,让我们将更多的精力放在业务开放上。但是Spring的配置还是有些繁琐的,在Spring特性配置和我们业务问题之间需要进行思维切换,配置占据了我们的不少开发时间。除此之外,项目的依赖管理也是吃力不讨好的事,决定项目里需要那些库就已经够头痛了,你还要知...
2019-11-26 10:51:49
350
原创 Spring-JdbcTemplate
JdbcTemplate初体验基本使用配置依赖<!--Spring jdbc--><!-- 数据库连接 https://mvnrepository.com/artifact/org.springframework/spring-jdbc --><dependency> <groupId>org.springframework</gr...
2019-11-26 10:49:46
360
原创 Spring-AOP
动态代理动态代理:在不改变源码的基础上对已有方法增强,它是AOP思想实现的基础两种动态代理实现方式1、基于接口的动态代理public interface IActor { void basicAct(float money); void dangerAct(float money);}public class Actor implements IActor { ...
2019-11-26 10:47:57
265
原创 Spring-IOC
IOC的概念和实现原理控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫依赖查找(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引...
2019-11-26 10:45:46
217
原创 数据结构 -- 栈和队列的实现及应用
转载请标明出处: https://blog.youkuaiyun.com/xmxkf/article/details/81084010 本文出自:【openXu的博客】1、栈1.1 栈的定义1.2 栈的顺序存储结构实现顺序栈的操作示意图如下:顺序栈的实现如下:1.3 栈的链式存储结构实现链栈的操作示意图如下:链栈的实现如下:1.4 两种栈的效率分析1.5 栈的应用破...
2018-09-06 18:04:39
14228
原创 数据结构一线性表 (顺序表、单链表、双链表)
转载请标明出处: https://blog.youkuaiyun.com/xmxkf/article/details/81019110 本文出自:【openXu的博客】1、线性表及其逻辑结构 线性表是最简单也是最常用的一种数据结构。英文字母表(A、B、…、Z)是一个线性表,表中每个英文字母是一个数据元素;成绩单是一个线性表,表中每一行是一个数据元素,每个数据元素又由学号、姓名、成绩等数据项...
2018-07-17 16:38:57
16127
原创 数据结构一 (简介)
转载请标明出处: http://blog.youkuaiyun.com/xmxkf/article/details/51658445 本文出自:【openXu的博客】1、什么是数据结构 数据结构主要学习用计算机实现数据组织和数据处理的方法;随着计算机应用领域的不断扩大,无论设计系统软件还是应用软件都会用到各种复杂的数据结构。 一个好的程序无非是选择一个合理的数据结构和好的算法,而好的算法...
2018-07-12 17:09:00
10534
原创 开源一个Android自定义图表库
转载请标明出处: https://blog.youkuaiyun.com/xmxkf/article/details/80674232 本文出自:【openXu的博客】 项目中有一些图表需求,一开始尝试使用一些开源的图表库,这些图表库功能很强大,图表种类应有尽有,是不错的选择。但是这些类库使用起来通常需要大量的设置,对于项目风格不能很好的贴合。于是自己尝试写了一个图表库,使用起来非常方便...
2018-06-14 12:04:42
6024
23
原创 Android Studio将项目发布到Maven仓库(3种方式最新最全)
转载请标明出处: https://blog.youkuaiyun.com/xmxkf/article/details/80669218 本文出自:【openXu的博客】目录:1、Maven是什么?2、Maven仓库在哪里?3、本地仓库3.1 . uploadArchives3.2 . 执行uploadArchives3.3 . 使用本地仓库中的类库4、局域网私有...
2018-06-13 09:30:10
35194
8
原创 DOM
转载请标明出处: https://blog.youkuaiyun.com/xmxkf/article/details/79995020 本文出自:【openXu的博客】1. 节点 节点Node是构成网页最基本的组成部分,网页中的每个部分都可以称为节点。比如html标签、属性、文本、注释、整个文档等都是节点,他们的具体类型不同。文档节点:整个HTML文档元素节点:HTM...
2018-04-18 18:46:36
1409
原创 JavaScript基础知识快速预览
转载请标明出处: https://blog.youkuaiyun.com/xmxkf/article/details/79994336 本文出自:【openXu的博客】 本文适用于已掌握其他语言的前提下,快速了解JavaScript语法,仅仅概括一些快速入门知识点,做为个人学习使用。若希望详细学习请参考js文档。1. JS代码编写位置 可以将js代码编写到标签的o...
2018-04-18 17:55:09
1091
原创 RecyclerView使用全解析
转载请标明出处: http://blog.youkuaiyun.com/xmxkf/article/details/79488089 本文出自:【openXu的博客】目录:简介:1、快速上手2、通用Adapter && 点击事件3、间隔样式ItemDecoration3.1.getItemOffsets()3.2.onDraw() & onDrawOver...
2018-03-08 18:22:56
1882
原创 Android事件分发机制
转载请标明出处: http://blog.youkuaiyun.com/xmxkf/article/details/79481243 本文出自:【openXu的博客】 在平时的工作中,事件分发机制是非常重要的,之前虽然说比较了解,出现问题也能得到解决,但是一直没有系统的总结一下,有些地方也不能一句话说死,今天得空简单的总结记录如下:相关类及方法 重要方法的...
2018-03-08 10:47:38
993
原创 Android自定义View精品(CustomCalendar-定制日历控件)
转载请标明出处: http://blog.youkuaiyun.com/xmxkf/article/details/53420889 本文出自:【openXu的博客】目录:1分析2自定义属性3onMeasure4onDraw绘制月份绘制星期绘制日期及任务5事件处理源码下载 应项目需求,需要做一个日历控件,效果图如下: 接到需求后,没有立即查找是否有相关开源
2017-01-04 16:03:33
30374
18
原创 Android自定义View精品(RollWeekView-炫酷的星期日期选择控件)
转载请标明出处: http://blog.youkuaiyun.com/xmxkf/article/details/53420889 本文出自:【openXu的博客】目录:1分析2定义控件布局3定义CustomWeekView4重写onMeasure5点击后执行动画7重置预备控件源码下载 最近收到一个自定义控件的需求,需要做一个日期选择控件,实现图如下: 一次展示一个
2016-12-01 14:14:04
8739
原创 Android自定义View精品(LimitScrollerView-仿天猫广告栏上下滚动效果)
1分析2定义组合控件布局3继承最外层控件4自定义属性5重写onMeasure6数据适配器7动态添加子条目8滚动动画9条目点击事件源码下载转载请标明出处: http://blog.youkuaiyun.com/xmxkf/article/details/53303872 本文出自:【openXu的博客】 最近项目中需要在首页做一个跑马灯类型的广告栏,最后上面决定仿照天猫的广告栏效果做(
2016-11-23 12:51:09
8385
2
原创 Activtiy完全解析(三、View的显示过程measure、layout、draw)
转载请标明出处: http://blog.youkuaiyun.com/xmxkf/article/details/52178553 本文出自:【openXu的博客】 在Activity完全解析的第一篇文章 Activtiy完全解析(一、Activity的创建过程)中,我们分析了从调用startActivtiy()到Activtiy创建完成的整个过程。其中step20:ActivtiyThread.h
2016-10-17 17:06:09
5164
原创 Activtiy完全解析(二、layout的inflate过程)
在上一篇文章《 Activtiy完全解析(一、Activity的创建过程)》中,我们探讨了Activity的启动,从startActivity()到进程创建,再到activity的创建,最后调用onCreate()方法。本篇博客我们接着onCreate()方法继续研究Activity加载layout的过程。我们写好layout布局后,在onCreate()方法中调用setContentView(la
2016-09-07 11:24:24
4685
原创 Activtiy完全解析(一、Activity的创建过程)
在Android系统中,我们比较熟悉的打开Activity通常有两种方式,第一种是点击应用程序图标,Launcher会启动应用程序的主Activity,我们知道Launcher其实也是一个应用程序,他是怎样打开我们的主Activity的呢?在应用程序被安装的时候,系统会找到AndroidManifest.xml中activity的配置信息,并将action=android.intent.action.MAIN&cat
2016-09-06 17:51:52
7343
原创 Android自定义View精品(LineBreakLayout-自动换行的标签容器)
最近一段时间比较忙,都没有时间更新博客,今天公司的事情忙完得空,继续为我的自定义控件系列博客添砖加瓦。本篇博客讲解的是标签自动换行的布局容器,正好前一阵子有个项目中需要,想了想没什么难度就自己弄了。而自定义控件系列文章中对于自定义ViewGroup上次只是讲解了一些基础和步骤 Android自定义ViewGroup(四、打造自己的布局容器),这次就着这个例子我们来完成一个能在项目中使用的自定义...
2016-08-27 17:28:07
10225
原创 Android自定义View精品(SlideTab-可滑动的选择器)
转载请标明出处: http://blog.youkuaiyun.com/xmxkf/article/details/52178553 本文出自:【openXu的博客】目录:初步分析重写onDraw绘制重写onMeasure计算宽高重写onTouch加入滑动效果自定义属性源码下载 这篇博客我们来一发自定义控件的实战,恰好前些天有一个小需求,效果图如下: 根据效果图,我们可以确定,用自
2016-08-11 03:50:24
7204
原创 RxJava(11-线程调度Scheduler)
转载请标明出处: http://blog.youkuaiyun.com/xmxkf/article/details/51791120 本文出自:【openXu的博客】目录:使用示例subscribeOn原理多次subscribeOn的情况observeOn原理调度器的种类各种操作符的默认调度器源码下载 RxJava中 使用observeOn和subscribeOn操作符,你可以让Obser
2016-07-04 16:39:33
14015
4
gradle-4.1-all.zip下载
2017-08-11
gradle-3.4-all.zip下载
2017-08-11
gradle-3.3-all.zip 下载
2017-08-11
gradle-4.0-all.zip
2017-08-11
gradle-3.5-all.zip
2017-08-11
gradle-3.4-all.zip
2017-08-11
gradle-3.3-all.zip
2017-08-11
Android自定义可滑动的选择器SlidingTab
2016-12-01
Android自动换行标签控件LineBreakLayout
2016-12-01
高仿天猫轮转广告条跑马灯效果LimitScrollerView
2016-11-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人