自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(79)
  • 收藏
  • 关注

原创 [Android Studio]android studio missing essential plugin

解决 android studio missing essential plugin

2023-03-02 09:05:22 263

原创 Tealium 分析

源码在: https://github.com/Tealium/tealium-kotlin官方文档:https://docs.tealium.com/platforms/getting-started/说明:① new 一个 TealiumConfig, 进行 Tealium 的一些配置② 将一个 TealiumConfig 配置传入,创建一个 Tealium,可以有多个 Tealium, 内部使用 map 存储起来,同时还可以传入 onReady, 在 Tealium 初始化可以的时候进行回调③

2022-12-05 22:54:45 1004

原创 Espresso Test 8: Test Rule

这是 Espresso UI 测试系列的第八篇文章。这篇主要是讲述 idling resources 在 debug 和 release 中设置,TestRule 的设置 的测试。

2022-11-04 11:38:39 412

原创 Espresso Test 7: Idling resource

这是 Espresso UI 测试系列的第七篇文章。这篇主要是讲述 idling resources 的测试。

2022-11-04 11:37:06 369

原创 Espresso Test 6: RecyclerView

这是 Espresso UI 测试系列的第六篇文章。这篇主要是讲述 RecyclerView 的测试.

2022-11-04 11:35:31 296

原创 Espresso Test 5: Toast

这是 Espresso UI 测试系列的第五篇文章。这篇主要是讲述 toast 的测试.

2022-11-04 11:34:12 263

原创 Espresso Test 4: Intent

Espresso

2022-11-04 11:33:03 691

原创 Espresso Test 3: Fragment Test

这是 Espresso 的第二篇,Fragment 的 UI 测试。它包括两部分内容, 一是测试 fragment 的 UI 测试,另外一部分是 fragment 的跳转测试。页面是一个电影介绍页。

2022-11-04 11:31:38 559

原创 Espresso Test 2: Espresso_simple

Espresso

2022-11-04 11:28:47 383

原创 Espresso Test 1: 前言

Espresso

2022-11-04 11:27:17 205

原创 Kotlin|Kotlin反射

文章目录1. Kotlin 反射1.1 Kotlin 反射类图2.创建实例无参构造有参构造说明例子3.通过反射调用方法 KFunction4. 通过反射获取属性5.获取实例的 companion6. 获取注解7.获取内部类8.完整的代码1. Kotlin 反射Kotlin 的反射需要集成 org.jetbrains.kotlin:kotlin-reflect 仓库,版本保持与 kotlin 一致。implementation "org.jetbrains.kotlin:kotlin-reflect:

2021-08-01 09:42:12 1743 1

原创 软件工程|如何写设计文档

文章目录1. 文档的大体内容1.1 现状1.2 需求1.3 需求满足方式1.3.1 交付物规格1.3.2 实现原理1.3.3 使用界面(接口)1.4 多个设计方案对比2.参考这是极客时间《许式伟的结构课》中的 <70|怎样写设计文档> 的笔记产品经理和架构师是一体两面,对人的能力要求比较像,但是分工不同,关注的维度不一样产品经理关注的维度,关键词是:用户需求、技术赋能、商业成功架构师的关注维度是,关键词是:用户需求、技术实现、业务迭代设计是软件工程中的头等大事,我们应该在这里“多浪费点

2021-07-11 20:38:30 2344 1

原创 读书笔记|《程序员的自我修养》- 04 可执行文件的装载与进程

文章目录一.装载的方式二.装载的过程2.1 创建一个独立的虚拟地址空间2.2 读取可执行文件头,并且建立虚拟空间与可执行文件的映射关系2.3 将 CPU 的指令寄存器设置成可执行文件的入口地址,启动运行三.堆和栈四. Linux 内核装载 ELF 过程这一章讲述了操作系统入口将 ELF 文件装载到内存的过程。一.装载的方式程序在运行时有局部性原理,可以将程序最常用的部分驻留在内存中,将不常用的数据存放在磁盘里。加载的时候采用页映射的方式,也映射就是把部分程序的数据和指令按“页(page)” 为单位划

2021-05-06 22:35:56 142

原创 读书笔记|《程序员的自我修养》- 03 静态链接

读书笔记|《程序员的自我修养》- 03 静态链接这是《程序员自我修养–链接、装载与库》读书笔记的第三篇,静态链接。简单来说静态链接将多个目标文件性质相同部分,合并写入到输出目标文件中,然后将符号解析并且对外部引用符号重新定位。目标文件的链接分为静态链接和动态链接。静态链接是以多个重定位目标文件和命令参数作为输入,生成一个完全链接的可以加载和运行的可执行目标文件的过程。这个过程由链接器完成,链接器主要的任务就是符号解析(sysbol resolution) 和重定位(relocation)动态链接

2021-05-06 22:32:25 168

原创 读书笔记|《程序员的自我修养》- 02 目标文件

文章目录一、目标文件的格式二、目标文件的文件类型三、目标文件的内容3.1 可执行文件的内容3.2 文件头 HEADER3.3 代码段 .text3.3 数据段和只读数据段 .data3.4 BSS 段四、ELF 文件结构描述4.1 重新定位表 .rel.text4.2 符号五、其他示例代码Mac 使用 readelfMac otool替代readelf命令一、目标文件的格式目标文件是源代码编译后但为进行链接的那些中间文件(Window 的 .obj 和 Linux 下的 .o)动态链接库(DLL,

2021-03-28 22:28:32 234 1

原创 读书笔记|《程序员的自我修养》- 01 前言

图片来自极客时间深入浅出计算机原理学习链接知识的意义理解链接将帮助你构建大型程序构建大型程序的程序员经常会遇到由于缺少模块、缺少库或者不兼容的库版本引起的连接器错误。除非你理解连接器是如何解析引用、什么是库以及链接器是如何使用库来解析引用的,否则这类错误将令你感到迷惑或挫折。理解链接器将帮助你避免一些危险的编译错误理解链接将帮助你理解语言的作用域是如何实现的例如,全局和局部变量之间的区别是什么?当你定义一个具有 static 属性的变量或者函数时,到底意味着什么理解链接将帮助.

2021-03-28 22:07:50 209

原创 读书笔记|《修改软件的艺术》

最近读了《修改软件的艺术》一书,这本书讲述了作者对关于如何写比较容易维护代码的的经验,并把他们整理成了 9 条实践方式。它们分别是实践1:在问如何做之前先问做什么、为什么做、给谁做实践2:小批次构建实践3:持续集成实践4:协作实践5:编写整洁的代码实践6:测试先行实践7:用测试描述行为实践8:最后实现设计实践9:重构遗留代码这9条实践可以随意跳着看,虽然它们有前后顺序,但是不按顺序看,不影响对他们的理解。总的来说,这本书对有几年编程经验的人有一定的启发。里面有的有些实践可以在日.

2021-03-13 18:19:26 163

原创 Firebase 上无 NDK 符号表的解决

记 Firebase 上无 NDK 符号表解决的过程背景在 项目上线之后,Firebase 的后台收到音视频上报的崩溃。在项目中音视频以 so 文件的形式集成近项目。在后台上报页面,看不到符号表的匹配。而这个 bug 占据了我们 bug 的 Top 1 位置。解决过程第一步 重新检查集成 Firebase 的过程出现问题的时候,我们第一步是去官网重新看集成 Firebase 的过程检查了发现没有问题。第二步 重新查看官网文档经过第一步的检查,集成的步骤是没有问题的, 我们再次看看官网文档

2020-12-21 12:55:27 2224

原创 Java 虚拟机(一):Java 字节码

Java 字节码是 JVM 里面指令的型式, Java 的源码经过 Java 编译器会形成 Java 字节码,这的字节码才能在 Java 虚拟机中运行。一、栈基架构一个虚拟机有基于栈虚拟机(Stack based Virtual Machine)和 基于寄存器虚拟机(Register based Virtual Machine)之法, 它们的差别可以看这里。Java 的虚拟机是基于栈的, ...

2020-04-14 06:59:41 325

原创 Android 动态链接库 So 的加载

前言最近在做 Android 项目的时候,需要在 NativeActivity 中动态加载 so 。运行的时候,抛出了异常Caused by: java.lang.IllegalArgumentException: Unable to find native library using classloader: dalvik.system.PathClassLoader在 Nativ...

2020-03-28 12:48:27 1966

原创 软件设计原则(一): 依赖倒置原则

如何不依赖代码却可以复用它的功能在软件设计中为了建立清晰的软件分层关系,引入了软件分层设计,也是便于高层业务模块依赖低层模块。在一般的应用软件中,策略层会依赖方法层,业务逻辑层会依赖数据存储层。图1这是我们正常的软件设计。但是这样的设计会带来一些问题。策略层对方程层和工具层是传递依赖的,如果下面两层的改动,都会对策略层产生影响,这样导致的级联改动非常不利用软件的维护。出现了上述问...

2020-02-23 09:48:31 656

原创 设计模式总结

设计模式总结以前学设计模式的时候,学地云里雾里的。最近把书本《设计模式-可复用面向对象软件的基础》重新学了一遍,收获良多,对设计模式有了更深的理解。设计模式是软件工程中一种通用的,可复用的一种解决方案,它是一种解决问题的通用模板。根据《设计模式》这本书的分类,设计模式分为三种创建型它是与对象的创建有关,包含 Abstract Factory, Builder, Factory Me...

2019-10-02 11:07:19 237

原创 State 状态模式在 Android 多弹窗的应用

序言最近项目的首页弹窗进行调整,要加几个弹窗,而且还是要按顺序弹出的。原来的只有悬浮窗权限弹窗和存储权限弹窗,用一两个标志位就可以解决了。现在加了隐私协议弹窗和青少年模式弹窗,变成了四个弹窗,如果还是按照原来的方法,即加标志位解决,逻辑机会变得非常复杂,也很容易出 Bug.经过调研,发现可以用 state 转态模式去解决这个问题。下面我们先看看 state 转态模式State 状态态模式...

2019-08-25 14:55:40 190

原创 极客时间《软件工程之美》学完感

最近花了将进两个多月的时间,把极客时间上的专栏《软件工程之美》专栏学完了,同时也把相应的配套书本,邹欣的《构建之法》,读完了。学完这个专栏,让我获益良多。专栏《软件工程之美》和配套的书本《构建之法》,适合已经有编码经验工作了三四年的程序员,如果是刚毕业的程序员可能比较无感。专栏里提到的很多内容,都是要经历了才会有比较深的感悟。整个专栏的内容比较多,有 54 讲,涉及到软...

2019-07-28 15:57:58 2902

原创 Android 中使用 APT

APT(Annotation Processing Tool)注解处理器,是一种处理注解的工具。APT 在编译时期扫描源代码中的注解,开发中根据注解,利用 APT 自动生成 Java 代码,减少冗余代码和手动的代码输入,提高编码效率。APT 中的数据类型和概念1. ProcessingEnvironment在复写 AbstractProcessor 的 init 方法时,参数就是一个 Pr...

2019-07-24 09:13:57 1187

原创 Android 中使用 Aspectj 限制快速点击

Android 中使用 Aspectj 限制快速点击在AspectJ 在 Android 中的使用中,介绍了 Aspectj 的基本知识及其在 Android 中的基本使用,在这篇将会介绍如何使用 Aspectj 在 Android 中限制快速点击1. 配置依赖建立 clicklimt 的 lib,添加对 Aspect 的依赖,之前我们要做很多的配置工作,沪江的开源库 gradle_plug...

2019-07-06 16:36:43 1289 1

原创 AspectJ 在 Android 中的使用

AspectJ 在 Android 中的使用在介绍 AspectJ 之前,我们先看看常见的几种编程架构思想。面向对象编程 Object Oriented Programming面向过程编程 Procedure Oriented Programming面向切面编程 Aspect Oriented Programming面向对象、面向过程、面向切面, 这三种是我们常见的三种编程架构思想,...

2019-06-29 19:14:14 4480

原创 Glide 源码简要分析

一、前言Glide 是 Android 比较好的图片加载库,最近的项目中使用到了,所以有必要去了解一下 Glide 的源码。Glide 的源码非常多,不可能所有的东西都去了解,所以结合 郭霖的博客 对 Glide 的源码做了简要的分析。对 Glide 的了解,主要想解决一下的几个问题:Glide 加载图片的流程Glide 加载图片流程的监听回调Glide 是如何感知...

2019-02-23 17:55:20 328

原创 ReentrantLock、synchronized 与 ReadWriteLock

ReentrantLock、synchronized 与 ReadWriteLock一. ReentrantLockReentrantLock 并不是内置锁 synchronized 的替代方式,而是当 synchronized 加锁机制不适用时,作为一种可选择的高级功能。ReentrantLock 是 Lock 的实现类,Lock 提供无条件的、可轮询的、定时的以及可中断的锁获取操作,所有...

2019-01-07 22:31:39 204

原创 Java 的反射

Java 反射Java 反射是在 java.lang.reflect 包类,包含 Constructor、Method、Field 的反射。域涉及的方法说明创建类 ConstructorClass.getConstructor( ) Constructor.newInstance(args)newInstance( ) 方法可以为无参调用方法 MethodCl...

2018-11-24 17:13:07 190

原创 Java 注解

Java 注解了解 Java 注解,对于我们了解 JavaPoet, ARouter, Butterknife 这些开源库是必须的。 同时也可以结合 Android 中独有的注解,一起看,会加深理解。我之前写过 Android 中的注解 一文。以下是正题:注解是那些插入到源码中使用其他工具可以对其进行处理的便签。这些工具可以在源码层次上进线操作,或者可以出来编译在其中放置了注解的类...

2018-09-12 23:25:49 157

原创 JavaPoet 和 Java 注解在 Android 中的应用

JavaPoet 结合 Java 注解在很多知名的开源库中都应用,例如 Butterknife 和 ARouter. JavaPoet 是用来生成 .java 文件的,它的使用比较简单,按照官方的示例代码套用就可以了。 Java 的注解,有时间会整理,这里先略过。我做了一个 Dome 说明它们的应用。 先看一下项目的结构。 整个项目包含三个部分: - app : 主项目,使用我们...

2018-09-10 07:31:51 719

原创 [编译原理] 词法分析

根据龙书《编译原理》和 网易云课堂华保健的《编译原理》整理而成的。  下面是思维导图的笔记主要工作 识别词素 过滤注释和空白 将编译器生成的错误消息与源程序的位置联系起来 技术过程 1. 正则表达式 2. NFA 3. DFA 4. 词法分析器 词法分析的整体流程 1. 源代码输入 预读 输入缓存,使用双缓冲区方案; ...

2018-07-21 08:34:02 735

原创 Tinker 的接入

Tinker 的接入本文是基于 Tinker1.7.11 版本接入Tinker 项目地址:https://github.com/Tencent/tinker Tinker 是微信团队开源的热修复框架,最近了解了一下, 参考例子:https://github.com/TinkerPatch/tinkerpatch-sample; 接入文档:http://tinkerpatch.com/Docs/

2017-07-17 16:51:32 482

原创 【拆轮子系列】RxJava2 源码简要分析

RxJava1 已经在项目中用来一年多了,最近准备转换成 RxJava2, 除了去了解 2.0版本的不同 ,还简单的去了解了一下源码,顺便做个记录。 对源码的分析,

2017-06-20 22:45:38 1317

原创 Jenkins Android 集成

在 window7 本机环境下用 Jenkins 对 Android 集成打包。本文综合 Android Jenkins+Git+Gradle持续集成-实在太详细 和 利用Jenkins玩转Android自动打包发包 这两篇文章而成。

2017-06-03 21:26:41 957

原创 Gradle for Android 简要记录

Gradle 有约定优于配置的原则,即为设置和属性提供默认值。Gradle 是基于 Groovy 领域专用语言 DSL.在 Gradle 中,最重要的两个概念是项目和任务。每一次构建都包括至少一个项目,每一个项目又包括多个任务。每个 build.gradle 文件都代表着一个项目,任务定义在构建脚步里。

2017-05-30 11:36:33 598

原创 【设计模式】Chain of Responsibility 责任链式模式

责任链行为模式是行为模式的一种。行为模式涉及到算法和对象间职责的分配,行为模式不仅描述对象或类的模式,还描述它们之间的通信模式。行为模式分为 :Template Method 模板方法 和 Interpreter 解析器行为模式

2017-05-19 23:38:29 3279

原创 android 中的注解

Android 中的注解在项目中挺实用的,很多时候可以替换枚举型的数据。

2017-05-07 15:04:15 498

原创 利用 ItemTouchHelper 实现 RecyclerView 的侧滑删除

利用 ItemTouchHelper 可以实现 RecyclerView 的侧滑删除和滑动。

2017-03-26 23:04:04 570

空空如也

空空如也

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

TA关注的人

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