自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

赵彦军

做一只快乐的程序猿!

  • 博客(432)
  • 资源 (2)
  • 收藏
  • 关注

原创 Android 跨进程通信大总结

文章目录1、Android进程2、修改Android默认进程3、指定activity、Service进程1、Android进程android { compileSdkVersion 29 buildToolsVersion "29.0.3" defaultConfig { applicationId "com.zhaoyanjun" minSdkVersion 16 targetSdkVersion 29 vers

2020-12-22 16:04:55 4472 1

原创 Android RecyclerView ItemDecoration 分割线

文章目录如何设置分割线DividerItemDecoration使用如何设置分割线RecycleView 没有像ListView一样可以直接在 xml 中或者通过 setDivider()方法设置分割线的方法。它是通过 RecycleView 的 addItemDecoration(ItemDecoration decor) 方法来设置的。很显然,我们需要传入一个 ItemDecoration 对象,这个对象是一个抽象类,官方已经提供了一种常用分割线类:DividerItemDecoration。来看一

2020-12-16 21:23:00 2067 3

原创 Android RecyclerView 性能优化总结

目录相关文章recyclerView.setHasFixedSize(true);LinearLayoutManager.setInitialItemPrefetchCount()局部刷新DiffUtilAsyncListDiffgetExtraLayoutSpace避免创建过多 OnClickListener 对象复用RecycledViewPool减少过度绘制相关文章https://blog.csdn.net/smileiam/article/details/88396546https://zhu

2020-12-15 21:14:26 644

原创 Android Bitmap 研究与思考(上篇)

做Android 6年来,一直都没有对 Bitmap 做过深入研究。最近的工作需要,我认真的研究了一下Bitmap , 了却了多年的心愿。本次研究的东西比较多,建议先收藏,再看。一:Bitmap 是什么?从字面的意思上可以理解为 位图 。在Android中是一种存储像素的数据结构,通过这个对象可以得到一系列的图像属性。还可以对图像进行旋转,切割,放大,缩小等操作。我画了一张像素图,大家理解一下。我们一般说说的手机分辨率 1080 * 1920 , 就代表手机屏幕横向是 1080 个像素点,竖向

2020-08-12 21:09:21 666 3

原创 Android RxJava 3.x 使用总结

依赖接入implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'implementation "io.reactivex.rxjava3:rxjava:3.0.4"Flowable//java 方式Flowable.just(1) .subscribe(new Consumer<Integer>() { @Override public void accept(Integ

2020-06-12 20:50:18 5215 1

原创 Kotlin实战指南十五:协程泄漏

coroutines 引用GlobalScopeMainScopelifecycleScopelifecycleScope 是 KTX 下面的扩展包,Android 帮我们提供了一个扩展引用使用注意: 不需要我们手动 , 系统已经帮我们做好了是ViewModel的KTX扩展库,可以让我们在ViewModel中方便的使用Coroutine。如果想要在 ViewModel 中使用作用域,我们需要添加依稀:使用:lifecycleScope 原理个人微信号:zhaoyanjun125 ,

2020-05-28 21:22:28 3086 2

原创 Java 8 Stream 使用

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/106197857本文出自【赵彦军的博客】目录1、基础概念filter 过滤findFirst 查找第一个sorted 从小到大排序map 方法用于映射每个元素到对应的结果limit 获取指定数量的流collect 将流转换成集合和聚合元素average 求平均值1、基础概念Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream 使.

2020-05-27 20:20:07 422

原创 Android GooglePay 填坑录

这里写自定义目录标题1、发版坑欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入最近我接了一个大活,领导要求 app接入google支付,来应对商业化变现困局。说干就干,经过2周的洗礼,我也算

2020-05-21 20:30:40 1684 1

原创 Android Google Play app signing 最终完美解决方式

在 GooglePlay 创建 App 的时候,一不小心勾选了 谷歌签名保护计划,就非常坑,为什么非常坑,因为这个一旦加入,就无法退出,后面的坑就后患无穷。这里普及一下 谷歌签名保护计划:简单来说,就是apk上传到 GooglePlay 后,GooglePlay 会替换你的签名,实际上用户下载的 APK 的签名并不是你最初上传的签名,而是 GooglePlay 自己的签名,这个签名存放在 Go...

2020-04-16 19:22:53 11816 12

原创 Android Facebook登陆获取 Key Hashes值

方式一: 代码生成import android.content.Context;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;import android.content.pm.Signature;import android.util.Base64;import java....

2020-04-06 15:34:04 2030

原创 Android输出签名的 SHA1 值

方式一:使用 gradle 命令./gradlew app:signingReport或者输出:方式二:使用命令行方式keytool -printcert -jarfile app-enjoyReader-daily-20200402110708.apk输出:

2020-04-06 12:51:55 1631

原创 Android LiveData组件详解以及LiveDataBus

LiveData是一个可以被观察的数据持有类,它可以感知 Activity、Fragment或 Service 等组件的生命周期。简单来说,他主要有一下优点。它可以做到在组件处于激活状态的时候才会回调相应的方法,从而刷新相应的 UI,不用担心发生内存泄漏当 config 导致 activity 重新创建的时候,不需要手动取处理数据的储存和恢复。它已经帮我们封装好了。

2019-08-19 19:20:38 7168

原创 Android Lifecycle 生命周期组件详解

dsd一、Lifecycle简介为什么要引进Lifecycle?我们在处理Activity或者Fragment组件的生命周期相关时,不可避免会遇到这样的问题:我们在Activity的onCreate()中初始化某些成员(比如MVP架构中的Presenter,或者AudioManager、MediaPlayer等),然后在onStop中对这些成员进行对应处理,在onDestroy中释放这些资...

2019-08-17 18:10:37 1329

原创 Kotlin实战指南十四:协程启动模式

转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/95626034本文出自【赵彦军的博客】文章目录协程启动DEFAULTLAZYATOMICUNDISPATCHED附录参考资料协程启动说了这么多线程,原因嘛,毕竟大家对它是最熟悉的。协程的 API 设计其实也与之一脉相承,我们来看一段最简单的启动协程的方式:Globa...

2019-07-15 20:12:32 1733

原创 Kotlin实战指南十三:协程

转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/95626034本文出自【赵彦军的博客】文章目录前言-协程介绍主流语言对协程的支持Android 项目引用创建一个协程前言-协程介绍协程又称微线程,从名字可以看出,协程的粒度比线程更小,并且是用户管理和控制的,多个协程可以运行在一个线程上面。那么协程出现的背景又是什么呢...

2019-07-12 16:44:24 3580 1

原创 Kotlin实战指南十二:data class

转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/94649274本文出自【赵彦军的博客】文章目录前言正文toString()copy()前言在 kotlin 中我们定义一个模型类,比如 User 类 ,如下class User (var id:Int,var name:String)如果我们要打印输出 User...

2019-07-04 20:32:52 28391 1

原创 Kotlin实战指南十一:扩展函数

转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/94640013本文出自【赵彦军的博客】高阶函数filterfilterNot例子1:操作List例子2:操作Map更多操作 filterKeys、filterValuestake、takeLastsortedBy 排序map 数据结构变化filter过滤list,符合...

2019-07-04 18:17:40 1092

原创 Kotlin实战指南十:let、apply、with、run

转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details//94402604本文出自【赵彦军的博客】高阶函数let示例1:基础用法示例2:返回值letlet可以配合可空性 “?”来使用,如果data=null 则不执行let内部代码,如果有返回值则直接返回null在let中,用it表示引用对象,并可调用其方法,it不可省略。...

2019-07-01 18:34:39 6633

原创 Kotlin实战指南九:延迟初始化

转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/93764289本文出自【赵彦军的博客】高阶函数lateinit 延迟初始化lazy 延迟初始化Koltin中属性在声明的同时也要求要被初始化,否则会报错。例如以下代码:private var name0: String //报错private var name1: ...

2019-06-26 18:55:04 2584

原创 Kotlin实战指南八:高阶函数

转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/87969098本文出自【赵彦军的博客】高阶函数filterfilterNot例子1:操作List例子2:操作Map更多操作take、takeLastfilter过滤list,符合过滤条件的就是过滤结果var list = mutableListOf(1, 2, 3,...

2019-03-31 23:25:25 887 2

原创 Kotlin实战指南七:单例模式

转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/87877529本文出自【赵彦军的博客】单例模式单例模式单例模式在 Java 中单例模式有很多种写法,比如懒汉模式,恶汉模式。但是在 Kotlin 种的单例模式就简单很多,用 object 修饰的类就是单例。object User { var name: St...

2019-02-26 18:43:45 1033

原创 Kotlin实战指南六:可空类型、非可空类型

转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/87877529本文出自【赵彦军的博客】可空类型、非可空类型变量可空类型方法可空处理变量可空类型对于变量来说,我们是可以对其再次赋值的,在赋值的时候,这个值是有可能是空类型,也可能是非空类型。如果是空类型,就有可能在后续的操作的过程中,出现类似 java 的空指针异常,...

2019-02-22 14:45:28 1556

原创 Kotlin实战指南五:继承、接口

转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/87874895本文出自【赵彦军的博客】继承、接口继承子类有主构造函数子类没有主构造函数子类重写父类的方法属性重写接口实现接口接口中的属性接口继承解决覆盖冲突继承在 Kotlin 中所有类都有一个共同的超类 Any,这对于没有超类型声明的类是默认超类:class Ex...

2019-02-22 14:06:32 795

原创 Kotlin实战指南四:区间

转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/87866868本文出自【赵彦军的博客】Kotlin初体验四:区间区间实用函数区间区间表达式由具有操作符形式 … 的 rangeTo 函数辅以 in 和 !in 形成。 区间是为任何可比较类型定义的,但对于整型原生类型,它有一个优化的实现。以下是使用区间的一些示例:i...

2019-02-21 19:50:05 722

原创 Kotlin实战指南三:流程控制

转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/87855797本文出自【赵彦军的博客】Kotlin初体验三:流程控制if 表达式1、普通用法2、作为表达式,可以直接赋值给变量,其值为为true的分支的值3、分支的内容除了是简单的结果,也可以是代码块。值为true的分支的最后一行为结果if 表达式1、普通用法var...

2019-02-21 10:29:32 573

原创 Kotlin实战指南二:变量、常量、静态常量

转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/87811333本文出自【赵彦军的博客】Kotlin初体验二:变量、常量、静态常量变量常量静态常量变量Java中的变量public class App { private String name; //定义一个变量 }Kotlin中的变量,用 var...

2019-02-20 18:52:20 5873 2

原创 Kotlin实战指南一:集合

Kotlin初体验一:集合集合一、listOf()函数二、mutableListOf()函数三、arrayListOf()函数四、listOfNotNull()函数五、binarySearch()函数集合List是有顺序的数据结构,在Kotlin中提供了类似数组的访问方式:创建集合//创建一个空的list集合,相当于 new ArrayList()var list = mutableLi...

2019-02-20 14:13:07 1069

原创 江湖已去,作品长存

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/80762922本文出自 【赵彦军的博客】有句话说的好,每个人都是在通往死亡的路上翩翩起舞,你有没有想过,走到生命尽头能留下什么,怎么才能证明你来过这个世界?能不能证明你来过这个世界,其实就是看活着的人有没有人能够记得你。有人记得你,就说明你来过这个世界。没人记得你,也就没了...

2018-10-31 16:31:51 672 2

原创 SpringBoot 2.x 监控中心:Admin

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/80762234 本文出自【赵彦军的博客】 简介Spring Boot Admin 是一个管理和监控你的 Spring Boot 应用程序的应用程序。 这些应用程序通过 Spring Boot Admin Client(通过 HTTP)注册或者使用 Sprin...

2018-06-22 18:03:42 13938 3

原创 SpringBoot 2.x 监控中心:Actuator

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/80743302 本文出自【赵彦军的博客】 简介Actuator是spring boot项目中非常强大一个功能,有助于对应用程序进行监视和管理,通过 restful api请求来监管、审计、收集应用的运行情况,针对微服务而言它是必不可少的一个环节。依赖...

2018-06-21 16:26:53 1914

原创 SpringBoot 2.x 整合Lombok

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/80734057 本文出自【赵彦军的博客】 简介lombok是一个编译级别的插件,它可以在项目编译的时候生成一些代码。比如日常开发过程中需要生产大量的JavaBean文件,每个JavaBean都需要提供大量的get和set方法,如果字段较多且发生变动的话修改起...

2018-06-20 14:37:53 10523

原创 SpringBoot 2.x 整合Mybatis三:tk.mybatis

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/75647437 本文出自【赵彦军的博客】 简介地址:https://github.com/abel533/Mapper/wiki/1.3-spring-boot具体版本号:http://mvnrepository.com/artifact/tk.myba...

2018-06-19 17:17:36 7982

原创 SpringBoot 2.x 整合Mybatis二:PageHelper分页

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/75647437 本文出自【赵彦军的博客】 Mybatis-PageHelper 简介PageHelper 最方便使用的分页插件,支持多种数据库:OracleMysqlMariaDBSQLiteHsqldbPostgreSQLDB2SqlSe...

2018-06-15 15:54:19 10184 1

原创 SpringBoot 2.x 整合Mybatis一:基础

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/75647437 本文出自【赵彦军的博客】 什么是 MyBatis ?MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 ...

2018-06-14 16:16:55 6204

原创 SpringBoot 统一异常处理 ControllerAdvice

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/75647437 本文出自【赵彦军的博客】 在用spring Boot做web后台时,经常会出现异常,如果每个异常都自己去处理很麻烦,所以我们创建一个全局异常处理类来统一处理异常。通过使用@ControllerAdvice定义统一的异常处理类,而不是在每个Contro...

2018-06-13 14:14:22 6853

原创 SpringBoot AOP完全讲解二:统一处理请求日志

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/75647437 本文出自【赵彦军的博客】 前言不了解 AOP 概念的同学,请先看 AOP 基础文章。SpringBoot AOP完全讲解一:基础概念添加依赖maven &amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;groupId...

2018-06-12 18:37:48 2850

原创 SpringBoot AOP完全讲解一:基础概念

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/75647437 本文出自【赵彦军的博客】 Aop 切面编程aop 全称 Aspect Oriented Programming ,面向切面,AOP主要实现的目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间...

2018-06-12 17:58:46 9163

原创 SpringBoot Quartz 定时任务详解

Quartz 简介在 JavaEE系统中,我们会经常用到定时任务,比如每天凌晨生成前天报表,每一小时生成汇总数据等等。我们可以使用java.util.Timer结合java.util.TimerTask来完成这项工作,但时调度控制非常不方便,并且我们需要大量的代码。使用Quartz框架无疑是非常好的选择,并且与Spring可以非常方便的集成,下面介绍它们集成方法和Cron表达式的详细介...

2018-06-11 20:25:38 4921 4

原创 Centos 7 查看内存占用情况相关命令

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/75647437 本文出自【赵彦军的博客】 1、 top命令top命令经常用来监控linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令。 按 q 退出2、free -m:看内存占用主要看第一行Mem 总共 15710 M ...

2018-06-11 15:13:56 60950 3

原创 Java 时间总结

时区整个地球分为二十四时区,每个时区都有自己的本地时间。为了统一起见,使用一个统一的时间,称为通用协调时(UTC, Universal Time Coordinated,也翻译为:全球标准时间)。UTC与格林尼治平均时(GMT, Greenwich Mean Time,也翻译成:格林威治标准时间)一样,都与英国伦敦的本地时相同。UTC 与 GMT 基本相同。UTC(世界标准时间)协调世...

2018-06-07 17:54:51 845

Pepk 签名压缩工具

Android app 签名生成工,执行完命令,会生成 output.zip , 然后把 output.zip 上传即可,非常好用

2020-04-16

XShell+XFtp

灵活、轻便的SFTP/FTP客户端 通过Xftp 5在网络中安全传输文件,实现多窗口 编辑,进行文件同步。

2018-02-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除