自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

哈罗德Android笔记

Android 及编程相关技术学习分享

  • 博客(90)
  • 资源 (1)
  • 收藏
  • 关注

原创 ruby双向认证证书错误

工作中遇到一个问题,https双向认证请求,curl和python都能验证通过,可是ruby脚本最近验证一直是400证书错误。2)python双向认证:3)ruby双向认证:进一步实验发现,同一套ruby脚本,过去生成的证书校验是OK的,只是最近生成的新证书ruby校验有这个问题。推测和最近生成的新证书的格式有关,只影响到了ruby的校验。

2022-12-06 22:43:18 498 1

原创 Android 接口的default 方法运行时报错AbstractMethodError

记录一个Android项目中遇到的问题,我们通过exclude方式重写了一个依赖,改用本地的实现,其中一个接口的default 方法,在运行时报错:AbstractMethodError,也就是没有找到这个default的实现。

2022-12-04 22:53:37 1087

原创 WebView输入框软键盘遮挡问题(沉浸状态栏和adjustResize的冲突)

WebView为什么没有在软键盘弹出时更新布局,是由于沉浸状态栏和adjustResize的冲突。手动处理软键盘更新布局,需要考虑到底部虚拟按键的高度。

2022-11-13 11:34:13 1929

原创 Android Jacoco多模块单元测试覆盖率

使用Jacoco,统计多模块Android项目中,单元测试的覆盖率

2022-07-21 10:12:29 1047

原创 Glide如何从File中解析出Gif图片

Glide 是如何从 ByteBuffer 解析出 Gif 动图的,并如何实现 Gif 动画循环♻️。

2021-06-18 12:11:03 440 1

原创 Android基础|AIDL 中的方向标签 inout 一句话总结

代表数据流向。out 类比 `List#toArray(T[])` 来理解,inout 类比 `Arrays#sort(T[])` 来理解。

2021-06-17 16:46:39 353

原创 Glide从磁盘加载图片资源的流程

Glide 从磁盘中加载图片的过程。涉及到如何从网络加载图片,和写入 DATA 磁盘缓存、RESOURCE 磁盘缓存、ActiveResources 缓存的时机,以及如何从 ModelLoaderRegistry 中获取 ModelLoader。

2021-06-16 21:58:13 686

原创 跟着Glide学习缓存设计

Glide 是一个开源图片加载库,使用了多种缓存来优化图片加载:Bitmap缓存池、活动资源缓存、内存缓存和磁盘缓存。那么它们的需求和实现有何不同呢?

2021-06-15 11:24:15 111

原创 Java基础|JVM锁优化:偏向锁、轻量级锁、重量级锁一句话总结

- 偏向锁,用于只有 1 个线程会访问同步代码的场景;- 轻量级锁,用于可能有多线程访问,但不会同时访问,即没有竞争的场景;- 自旋锁时对重量级锁的优化,用忙循环代替阻塞,使用于锁被占用时间很短的场景

2021-06-10 15:25:35 196

原创 通过反编译字节码看懂 Kotlin suspend 函数

Idea 自带的 kotlin bytecode 反编译惨不忍睹,难以看懂。还是结合 javap 直接阅读 JVM 指令的逻辑,更容易理解魔法背后是如何实现的。本文仅提供一个 suspend 函数反编译的示例,供学习之用,不足以完全理解 Kotlin 协程。

2021-05-28 13:44:44 577

原创 笔记|macOS 上如何设置 JAVA_HOME

本文为笔记记录,英文原文介绍了各个 maxOS 版本的设置方法:How to Set $JAVA_HOME environment variable on macOS首先要知道 Mac OS X 10.5 可以直接使用 /usr/libexec/java_home 管理 JAVA_HOME。例如下面命令可以列出所有 JDK version:$ /usr/libexec/java_home -VMatching Java Virtual Machines (2): 14.0.1, x86_.

2021-05-24 22:59:26 441

原创 Java String如何保存字符串

本文基于 String 源码进行剖析,涉及到字符编码的知识参考自 Unicode Tutorials - Herong’s Tutorial Examples,英文资料讲解的非常详细,建议大家都读一下。String 真的是 Immutable 的吗Java 中的 Unicode 字符串会按照 Latin1(所有的字符都小于 0xFF 时)或者 UTF16 的编码格式保存在 String 中,保存为 byte 数组:private final byte[] value;通常所说的 Immutab.

2021-05-12 16:42:01 939

原创 LiveData 单元测试

本文参考自 Unit-testing LiveData and other common observability problems参考 Google 代码官方测试代码 here单元测试时,LiveData.value 返回 null @Test @Throws(Exception::class) fun testLiveDataFail() = runBlocking { meditationDao.insert(MeditationTrip()) .

2021-04-29 22:42:40 834 1

原创 Android Room Kotlin Test: lateinit property db has not been initialized

错误 Stackkotlin.UninitializedPropertyAccessException: lateinit property db has not been initialized at com.haroldgao.testjavaandroid.meditation.database.MeditationDatabaseTest.closeDb(MeditationDatabaseTest.kt:36)定位错误参考官方 Room CodeLab 进行测试:@RunWith(An

2021-04-21 22:51:21 702

原创 Android工程师学习资源推荐

Android新人入门第一书,郭神的公众号依然每个工作日都在更新:第一行代码(第3版)JavaJava 和 Kotlin 都是基于 JVM 虚拟机,学习 class 字节码结构,了解 Java 内存模型,了解 JVM 的锁优化,GC 算法,基于 JDK 13技术预览版(2019年中期):深入理解Java虚拟机(第3版)Java 并发最经典的书,出版了十几年,基于 JDK 1.6,由 concurrent 包作者们编写,2021 年读起来仍然非常受用:Java并发编程实战Kotlin只是跟

2021-04-12 16:22:22 105

原创 java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode

错误 Stackcom.example.composedemo E/MessageQueue-JNI: java.lang.IllegalArgumentException: Can only use lower 16 bits for requestCode at androidx.fragment.app.FragmentActivity.checkForValidRequestCode(FragmentActivity.java:715) at androidx.fr

2021-04-07 23:25:32 725

原创 Kotlin 和 Java 中的 Lambda 表达式的区别

通过阅读编译后 class 文件,分析 Kotlin 和 Java 中 Lambda 表达式的实现方式有何区别。

2021-04-04 22:38:23 820 1

原创 如何通过反编译 JVM class 文件来学习 Java 和 Kotlin

学习 JVM 指令,能看懂 class 文件,对于理解基于 JVM 的语言,如 Java 和 Kotlin 都非常有帮助,通过阅读编译后的 class 文件,我们可以看到 what is under the hook。解析首先,对于一个编译得到的 xxx.class 文件,通过 javap 指令可以进行解析。常用的解析命令是:javap -v -p xxx # javap -h 可以提示各种参数的意思# -p 是显示 private 成员,-v 是 verbose 输出附加信息阅读解析得到

2021-04-03 09:35:07 327

原创 Java中的无界通配符<?>在什么时候使用

用来读取的List变量,使用extend定义下界;能使用<Object>通配符的地方,就改用无界通配符<?>

2021-02-08 17:36:08 4551 2

原创 为什么Java泛型不支持原始类型

既然原始类型的装箱和拆箱可以自动进行,而且原始类型无法实现super和extend的泛型,所以与其定义原始类型的泛型,不如定义对应包装类型的泛型。

2021-02-08 11:31:06 379

原创 单元测试如何工作的(从Ruby Koan来学习)

Ruby Koan是一个学习Ruby语言语法的开源项目,利用测试驱动开发的方式让学习者参与其中,得到及时的学习进度反馈。本文就通过解读它的关键源码来分析一个简单的单元测试框架是如何识别测试类、测试方法,以及如何显示测试进度的。

2021-02-02 11:47:33 128

原创 Android中如何获取系统服务

context.getSystemService 如何获取系统服务?ServiceManger 如何获取系统服务?LocalServices 用在哪里?

2020-12-30 10:00:01 2210

原创 Android内存泄漏核查(2020-11-25修改)

内存泄露是指,由于调用栈中持有对象的强引用,使得垃圾回收器无法回收内存中的这个对象。文章目录一、8 种内存泄露核查二、Android 中的6种内存泄漏场景1 资源2 Handler3 Thread4 Context5 集合6 非静态内部类三、检测内存泄漏dumpsysProfile使用 LeakCamary 自动检测APP中的内存泄露P.S. 推荐阅读一、8 种内存泄露核查8 种内存泄露的 Demo:https://github.com/NimbleDroid/Memory-Leaks全局进程的

2020-11-25 10:49:33 298

原创 职场生涯经验贴(2020-11-25更新)

我的职场生涯还不长,但也有些许萃取的经验,希望能和有缘人一起分享。勤记录假如你从现在的工作中辞职了,下一份求职简历中,你准备如何展示现在的项目经历?建议大家在工作中有一些项目经验的时候,就勤做记录,像是在给面试官描述一样记录这个项目中的技术难点、方案取舍、经验教训。制定个人目标没有目标的生活可能会缺少意义感,只是按照公司目标前进又常常会觉得被动,为别人而忙忙碌碌。通过制定个人一小段时间的目标,可以让我们在滚滚流逝的时间长河中,留下一些清晰的印记。比如每天刷一道leetcode算法题,一个月时间做

2020-11-25 08:51:03 163 1

原创 TextView显示长文本

TextView中显示长文本的几种方案。包括水平跑马灯,和垂直滚动条。

2019-12-15 13:08:17 1075

原创 Android添加广播权限限制

发送广播时,除了通过 Action 筛选 Receiver,还可以限制只有具有某种权限的应用才能接收。接收广播接时,除了通过 Action 筛选广播,还可以限制只接收具有某种权限的应用发送的广播。

2019-12-08 11:25:54 2398

原创 Oracle VM VirtualBox 的一些使用经验

共享文件夹通过增强工具设置完共享文件夹路径(如 shared_folder)之后,要挂载该文件夹:mount -t vboxsf shared_folder /mnt/shared_folder/其中:shared_folder :为共享文件夹名称/mnt/shared_folder/ :为挂载点...

2019-02-15 11:12:02 308

原创 Windows集群MPICH2

https://blog.csdn.net/cjsh_123456/article/details/80285887https://jingyan.baidu.com/article/7082dc1c629264e40a89bd34.html

2019-01-20 15:08:25 608

原创 gitignore规则

仅提交个别文件fd1/* 说明:忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略;/fd1/* 说明:忽略根目录下的 /fd1/ 目录的全部内容;/* 会忽略根目录下的所有文件和文件夹,如果还想提交 /fd1/*.txt 需要先对 /fd1/ 目录使用 ! 规则,使其不被排除,再用/fd1/* 排除该目录下的...

2019-01-16 20:08:27 692

原创 在Visual Studio 2010中配置和调试MPI程序

一、配置https://blog.csdn.net/hnyzwtf/article/details/48250045二、调试https://www.xuebuyuan.com/1119303.html

2019-01-10 22:07:26 2680 1

原创 MPI_IN_PLACE的使用场景

MPI_IN_PLACE 用在 MPI_GATHER 、MPI_Reduce 等有 send_buf 和 recv_buf 的函数中,用来代替 send_buf,说明当前进程要发送的数据指针和要接收的数据指针相同。① MPI_Gather 的例子: int *array = new int[4]; memset(array, 0, sizeof(int)* 4); array[world_...

2019-01-06 18:54:37 2774

原创 MPI_Cart_shift 的学习

int MPI_Cart_shift(MPI_Comm comm, int direction, int disp, int *rank_source, int *rank_dest)direction:指定维度disp:指定通信的方向和距离,负数表示负方向rank_source:通信的源进程的等级rank_dest:通信的目的进程的等级假定我们建立两个维度,x 维度和y ...

2018-12-14 12:47:23 2292 1

原创 VirtualBox 搭建 CentOS 7 虚拟机集群运行 MPI

虚拟机网络设置首先要设置宿主机和虚拟机的静态 ip,并且要实现 3 个方向能够 ping 成功:1 宿主机 ping 虚拟机2 虚拟机1 ping 虚拟机 23 虚拟机 ping 因特网VirtualBox 的网络设置的特点(来自 VirtualBox 的帮助文档):根据我们要实现的目标我们可以使用 Bridged 方式设置一张网卡,或者使用 Host-only 和 NAT 方式设置...

2018-11-26 19:56:43 1628

原创 MPI_Scatterv 示例

参照 MPI_Scatterv 的 man 文档,做了一个示例程序。输出的效果是,将一个数组中的数组分散到 4 个进程,每个进程收到的数据长度不同,并且有重叠部分:$ mpicc MPIHelloWorld.c$ mpirun -n 4 ./a.outSum data at rank 0 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 1...

2018-11-22 11:22:46 3530

原创 MPI 常用函数概述

MPICH 的 manpages 需要在线查看,或者在 Linux 系统中用 man 查看,不方便。这里我做了一些对常用函数的总结。基本结构参考:http://mpitutorial.com/tutorials/mpi-hello-world/zh_cn/#include &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;mpi.h&amp;amp;amp;amp;amp;amp;amp;amp;

2018-11-20 11:41:26 5708

原创 Linux 修改合上笔记本盖子和按下电源按钮锁定屏幕

你需要修改的文件是 /etc/systemd/logind.conf 。在修改之前,你需要了解配置选项的含义,方法是 man logind.conf。主要选项有:HandlePowerKey:按下电源键后的动作HandleSleepKey:按下挂起键后的动作HandleHibernateKey: 按下休眠键后的动作HandleLidSwitch:合上笔记本盖后待机可以选择的值有:...

2018-11-17 13:40:05 3904 1

原创 Linux 中的 vim 的配置

和 vim 相关的文件:① ~/.viminfo如果我们在 vim 中查找过字符串,那么这个字符串就会被反白:退出后,再次以 vim 来编辑这个文件是,该查找过的字符串还是反白状态,而且第二次进入该文件时,光标就出现在上次退出的那一行。这是因为这些操作记录被保存在了 ~/.viminfo 这个文件中。② ~/.vimrcvim 的操作环境可以通过配置文件来规定,整体的 vim 设置值放...

2018-11-16 10:40:57 669

原创 iTools

Valgrind Massif: a heap profilerValgrind Massif 是一款 Linux 程序内存错误调试的堆分析器,它测量你的程序使用的堆内存大小。既包含有用空间,也包含了用于记账和对齐的额外字节。它同样可以测量你的程序的栈大小(非默认)。...

2018-11-03 16:24:35 541

翻译 Effective Java (3rd Editin) 读书笔记:4 泛型

4 泛型泛型中的术语:术语例子参数化类型(Parameterized type)List&amp;amp;lt;String&amp;amp;gt;实际类型参数(Actual type parameter)String泛型(Generic type)List&amp;amp;lt;E&amp;amp;gt;形式类型参数(Formal type parameter)E无界通配符类型(Unbounded wi...

2018-10-03 13:07:18 264

翻译 Effective Java (3rd Editin) 读书笔记:3 类和接口

3 类和接口Item 15:最小化类和成员的访问权限一个设计优秀的类应该隐藏它的所有实现细节,将它的 API 和内部实现干净地分离开。这种软件设计的基本准则被称为“封装”(encapsulation)。封装的优点:组成系统的各组件之间解耦,使得它们能够独立地开发、测试、优化、使用、理解和修改基于第一条,提高了组件的复用性基于第二条,即使整个系统开发失败,某个独立的组件仍可以非常成功...

2018-09-26 20:52:17 171

MySQL必知必会(高清带书签)

MySQL必知必会(高清晰中文书签版)+书中所用数据库 短小精悍却面面俱到,居家工作常备。4小时就能读完,但是最好边看边练习,效果更好。

2018-03-22

空空如也

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

TA关注的人

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