- 博客(68)
- 资源 (4)
- 收藏
- 关注
原创 Unable to select a master clock domain because no path can be found from “SYSTRACE“ to “LINUX_FTRACE
打开systrace文件报错:Unable to select a master clock domain because no path can be found from “SYSTRACE” to “LINUX_FTRACE_GLOBAL”.使用systrace生成的trace.html文件无法打开,或者报上面的错误,可以选择下面这个方式:① 打开谷歌浏览器② 地址栏输入:chrome://tracing/③ 点击load按钮,选择要打开的trace.html文件...
2022-03-07 15:39:04
1125
1
原创 Leakcanary原理解析以及换肤框架skin的原理分析
一、错误现场 java.lang.ClassCastException: androidx.appcompat.widget.TintContextWrapper cannot be cast to android.app.Activity at leakcanary.internal.navigation.ViewsKt.getActivity(Views.kt:16) at leakcanary.internal.activity.screen.LeaksScreen.onGroupsRe
2021-11-18 18:34:18
1003
原创 通俗易懂的HashMap源码分析
据说给我点关注的都成了大佬,点关注的我都会私发一份好东西前言HashMap是我们最常用、最常见的一种数据结构。使用起来也非常的方便,主要是通过键值对的方式进行存储,简单明了。本文将基于Java1.8版本的HashMap源码进行分析,适合Java、Android等初学者以及想了解源码的中高级工程师阅读交流。① 数据结构1.1 图示上图即可简单示意HashMap的整体数据结构,主要是通过数组+链表(满足一定条件时,链表会切换成树)数组定义为Node类型的数组:transient Node&.
2021-10-24 17:55:25
6715
原创 Android dp转px不要再用这么low的方式写了!
网上一般的答案是这么写的:public static int dip2px(Context context, float dpValue) { final float scale = context.getResources().getDisplayMetrics().density; return (int) (dpValue * scale + 0.5f);}其实我们仔细想想,我们实际指向对DP的数据做个转换而已,为啥一定要传Context对象,所以其实我们完
2021-10-01 20:53:30
2062
原创 Java多线程编程(2)之线程同步
volatile 先看个例子 class Test { // 定义一个全局变量 private boolean isRun = true; // 从主线程调用发起 public void process() { test(); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStack..
2021-05-03 19:29:17
340
6
原创 Java多线程应用(1)
目标:掌握多线程的使用及应用场景 怎么使用多线程 // 尽量不要如此使用new Thread(new Runnable() { @Override public void run() { }}).start();// 通过线程池方便管理Executor executor = Executors.newCachedThreadPool();executor.execute(runnable); 进程和线程的区别 其实没有可比.
2021-05-02 17:55:52
487
原创 史上最通俗易懂的HTTPS小故事
序言在绝大部分人的印象中,技术知识都是很枯燥无味的,读起技术文章来,感觉脑细胞都要死一片。今天我们就尝试换一种新的方式,目的是可以让大家在轻松愉快的氛围中还能把技术学了。记得关注我哦,让...
2020-12-23 08:13:07
62
原创 通俗易懂的带你了解HTTPS的原理
序言在绝大部分人的印象中,技术知识都是很枯燥无味的,读起技术文章来,感觉脑细胞都要死一片。今天我们就尝试换一种新的方式,目的是可以让大家在轻松愉快的氛围中还能把技术学了。记得关注我哦,让我们一起将技术变的有趣起来。《新编二战回忆录》之HTTPS不讲武德二战前二战前夕,德国励精图治,军备急速扩张,收到情报的丘桑立马联系了远在东边的斯大林同志:由于HTTP协议是明文传输,丘桑和大林同志的微信聊天被元首轻而易举的截获并篡改,以此迷惑住大林同志,元首更加大胆的筹划着下一步动作:闪击波兰友情提示:看出
2020-12-22 23:08:04
6819
13
原创 绝对干货 | Kotlin内联类工作原理及使用案例,看完你会回来谢我的
初看内联类内联类非常的简单,您只需要在类的前面加上inline关键字就可以:inlineclassWrappedInt(valvalue:Int)内联类有一些或多或少明显的限制...
2020-12-12 20:30:03
65
原创 Kotlin内联类-它是如何工作的以及我们该在什么场景使用它
初看内联类内联类非常的简单,您只需要在类的前面加上inline关键字就可以:inline class WrappedInt(val value: Int)内联类有一些或多或少明显的限制:需要在主构造函数中精确指定一个属性,如value所示。 您不能在一个内联类中包装多个值。 内联类中也禁止包含init块,并且不能具有带有幕后字段的属性。 内联类可以具有简单的可计算属性,但是我们将在本文后面看到。在运行时,将尽可能使用内联类的包装类型而不使用其包装。 这类似于Java的框式类型,例如Integer或
2020-12-12 20:18:48
750
原创 最强总结 | Java-Kotlin双译手册,收藏必备
这篇文章梳理了我们平时开发中,最常用的Java代码对应的Kotlin实现,初学者可以当做实践手册,查找和阅读都非常方便,一眼就能看出来。打印日志JavaSystem.out.print(...
2020-12-08 22:35:18
324
原创 最强总结 | 带你快速搞定kotlin开发(下篇)
关注我,你的眼睛会怀孕Kotlin必知必会(下)①前言通过前面两篇文章的介绍,我们对kotlin有了初步的了解(没看的同学可以通过点击话题跳转回去阅读),现在去动手写kotlin代码或者...
2020-11-28 19:58:29
267
原创 最强总结 | 带你快速搞定kotlin开发(中篇)
关注我,你的眼睛会怀孕Kotlin必知必会(中)1.1 再讲构造器主构造器、次构造器、初始化代码块、构造属性//在类名后面直接写的构造器称为主构造器,age直接在构造器里声明的,称为构...
2020-11-23 23:02:09
299
原创 最强总结 | 带你快速搞定kotlin开发(上篇)
关注我,你的眼睛会怀孕Kotlin必知必会(上)1.1 函数:funsum(a:Int,b:Int):Int{returna+b}//对于只有一行...
2020-11-20 22:27:14
815
2
原创 java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/client/methods/HttpPost
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/client/methods/HttpPostCaused by: java.lang.ClassNotFoundException: Didn’t find class “org.apache.http.client.methods.HttpPost”.在高版本的Android 设备上(Android 9.0),http.client相关类不再用了,为了解决这个
2020-10-09 19:46:29
1095
2
原创 【深度揭秘】为什么很多语言的数组下标是从0开始的?
首先,恭喜你,能够点进来看的,已经领先60%的开发者了。因为很多人看到标题可能觉得数组从0开始这不本来就这样吗?有什么看头,索性看都不会看,但是你点进来了,说明你还是保持了好奇心的,是具...
2020-09-07 08:30:00
2414
1
原创 内存占用用手就能算出来
当我们看完本篇文章,你应该可以知道:占用的内存,不是说的图片的文件大小我们可以在运行时去获取要掌握图片内存大小的计算方法一、如何在运行时获取Bitmap的大小?获取图片实际需要的内存大小...
2020-08-26 22:06:05
292
原创 com.android.tools.r8.errors.CompilationError: Program type already present: androidx错误解决方法
当通过AndroidStudio运行或者打包的时候报: com.android.tools.r8.errors.CompilationError: Program type already present: androidx…错误的时候,一般是你的依赖中有同一个东西的不同版本造成的。举个例子:我这边报的是androidx.versionedparcelable.NonParcelField,我们需要做的是定位出引用上面这个包的地方即可,由于项目比较大可以使用命令行: ./gradlew app:depe
2020-08-13 15:11:32
5206
原创 Android中如何计算图片占用的实际内存大小?
当我们看完本篇文章,你应该可以知道:占用的内存,不是说的图片的文件大小 我们可以在运行时去获取 要掌握图片内存大小的计算方法一、如何在运行时获取Bitmap的大小?获取图片实际需要的内存大小public final int getByteCount() { if(mRecycled) { return 0; } return getRowBytes() * getHeight();}图片实际占用的内存大小因为存在一个复用的场景,比如.
2020-06-07 17:38:06
1399
原创 阿里的专家说不能,当我这么做的时候竟然让他羞红了脸
点击上方“IT烂笔头”,选择“置顶公众号”第一时间获取 IT 技术干货!阅读文本大概需要 6 分钟。1UI 线 程 的 定 义作为一名机智的安卓开发者,似乎每个人心里都有些公认的约定规则...
2020-05-02 13:28:02
377
原创 高工做CPU架构适配的心得体会
点击上方“IT烂笔头”,选择“置顶公众号”第一时间获取 IT 技术干货!阅读文本大概需要 5 分钟。1有 哪 些 CPU 架 构我们在日常开发中接触比较多的就两类:X86、arm如上图所...
2020-01-05 08:00:00
422
原创 通俗易懂的讲解:Java 泛型优点、原理、限制和实现
点击上方“IT烂笔头”,选择“置顶公众号”第一时间获取 IT 技术干货!阅读文本大概需要 6 分钟。1类 型 擦 除Java是怎么实现泛型的?不错,类型擦除。Java编译器将源码编译成字...
2019-12-14 18:35:27
729
1
原创 通俗易懂的Java方法分派策略
点击上方“IT烂笔头”,选择“置顶公众号”第一时间获取 IT 技术干货!阅读文本大概需要 4 分钟。1基础我们知道Java有一大特性就是多态。讲到多态不得不想再深层次的研究下多态中的方法...
2019-12-11 23:14:20
447
原创 通俗易懂的匿名内部类深度解析
点击上方“IT烂笔头”,选择“置顶公众号”第一时间获取 IT 技术干货!阅读文本大概需要 5 分钟。1基础知识匿名内部类大家肯定都很熟悉,如果你是做Android开发的一定再熟悉不过了,...
2019-12-08 23:08:37
417
原创 通俗易懂的讲解String到底能有多长
点击上方“IT烂笔头”,选择“置顶公众号”第一时间获取 IT 技术干货!阅读文本大概需要 5 分钟。1String基础public final class StringString类是由...
2019-12-07 14:20:42
304
原创 通俗易懂的搞清楚Java char类型
点击上方“IT烂笔头”,选择“置顶公众号”第一时间获取 IT 技术干货!阅读文本大概需要 5 分钟。1场 景可能很多人对Java中最简单的Char类型根本不屑一顾,不就是一个字符吗?能玩...
2019-12-04 22:39:06
271
原创 别胡扯!我就去了!【兄弟答应我,别再去东南亚写代码了好么?】
前段时间网上有爆料东南亚那边(主要是菲律宾、柬埔寨)程序员被黑产公司(菠菜行业)软禁殴打的新闻。真扯淡!这都9012年了,还相信这玩意?你们不要再传谣了,我们的同胞在东南...
2019-09-01 21:27:20
654
3
原创 【漫画】程序员怼产品高清图鉴《三十六计》
《Tonyの日常逗比乐》第一话:怼产品上篇蜜汁点评:更改需求被夸大时间周期?那是你的福报!上一个这么做的还躺在医院。蜜汁点评:程序员中有句名言叫“Talk is cheap, show...
2019-08-18 13:50:14
315
原创 『AndroidStudio』从新认识IDE之-整体概述
壹·简述在读这篇文章之前,相信很多同学已经和Android Studio接触的比较多了。那当然也有不了解的或者没有认真静下心来研究过的同学。那么从这篇文章开始,在接下来会写关于Andro...
2019-07-03 20:26:26
293
原创 ExoPlayer官方中文使用文档
① 前言在这之前笔者使用原生的MediaPlayer、B站开源的IJKVideoView等播放器。知道发现ExoPlayer,这款由YouTube开发的播放器真的是非常强大。对于自定义播放器非常友好,里面讲很多模块抽象成独立的组件可供使用者自行定制,当然官方也提供了一些默认的实现。如果你正在开发视频类功能,强烈推荐你尝试一下ExoPlayer。预备知识DRM:Digital Rights...
2019-06-19 19:47:10
9402
1
原创 我是如何从零到一开发TV应用
我是如何从零到一开发TV应用背景在这之前,本人一直从事Android手机应用层的开发。从没有接触过Android TV端的开发工作。当领导问能否在一周内做出一个TV端Demo时,自己心里还很是比较虚的。但是实际上,从开始调研到动手做到最后将Demo给领导演示出来,花了不超过3天的时间。当然这三天,每天都是做到晚上11点以后的(大部分时间是解决一些细节问题)。功能相当于是KEEP训练跟练的TV版...
2019-06-09 15:53:04
7010
原创 Http知道这些,开发Android才算合格!
前言说起HTTP大家再熟悉不过了,无论是大学的课本上还是平时的工作中,几乎每天都要和HTTP打交道。但是,就是这么熟悉的老朋友,你真的是非常了解吗?你能轻而易举就回答出我下面的几个问题吗?① OSI模型分为哪几层?分别是什么作用?② Http协议属于哪一层?与HTTP同一层的协议你还能列举哪些协议?③ 说出5种以上的HTTP请求方法④ HTTPS比HTTP多做了哪些事?是不是看起来非常...
2019-04-17 20:02:55
246
原创 Android高级工程师规划
IT烂笔头互联网/移动开发/创业/职场关注1阳光明媚,春光无限。从去年底到最近在工作和家庭上的事情特别多,一直没有抽出时间写文章了。现在趁着小长假的时间好好的写写文章了。一年之计在于...
2019-04-07 15:48:39
400
原创 聊一聊onMeasure
微信公众号:南京Android部落1今天呢,我们一起来研究下怎么盖房子。(what!?) 同学们,房价这么贵,该自己学学怎么盖房子了。 大家是不是觉得楼主今天跑题啦,咱先别急,接着往下看。有时候我常想,很多技术的实现方式可能都来源于生活,但又高于生活。拿今天要讲的自定义View来说,其实我们在写自定义View的时候,需要去重写系统为我们设计好的一系列方法(如下所示):on...
2018-12-03 23:44:07
412
原创 谈一谈Android内存
Android内存及其优化或许,因为开发周期的原因;因为自身知识水平的原因;因为经验的原因;又或者是你接了个烂摊子。我们写出了并不太理想的代码,这都是可以接受的,只要你会去持续优化,这些问题都会得到改善。而有些人是心有余而力不足,“我也想优化,可是怎么去优化呢?”。本篇文章将给你带来一点启示,让你从力不从心到知道怎么去入手优化。一、 为什么需要做内存优化?尽管现在的手机硬件越来越好,手机的R...
2018-11-25 13:54:12
632
3
原创 Android性能优化之布局优化
为什么需要优化布局优化布局不是说优化界面的显示效果更好看、更美观。是指让界面的交互体验更好、更流程。因为手机性能有限,而绘制UI布局是很吃资源的(CPU,GPU)。所以,需要我们写出优美简洁的布局,尽可能的少占资源。我们平时玩游戏的时候,会看到游戏中会显示fps。当fps的值越大游戏越是流畅,当fps接近60的时候再往上也无法感知了。fps是指每秒钟显示的帧数,人眼感觉的平滑的帧数就是在60帧...
2018-10-23 22:34:16
361
原创 Mac配置Adb环境变量
① 打开终端,输入:cd Users/wuyanbao/Library/Android/sdk/进入sdk所在的目录。② 输入:ls -an查看当前文件夹有是否有**.bash_profile**文件③ 如果文件已存在,跳过本步骤。否则输入:touch .bash_profile创建**.bash_profile**文件④ 打开.bash_profile文件:open ....
2018-10-23 18:28:13
2518
原创 Android热修复原理简述
本文为《2018夯实基础》系列之热修复原理简述作者:Bob一、背景① 为什么会出现热修复技术?大家都是开发,所以应该都知道有一个东西我们永远也避免不了。不错,**Bug!**我们在开发阶段碰到bug那还好,直接解决就是了,大不了让测试多测一轮。可是,如果我们发出去的版本出现线上Bug,那可怎么办?大多数小的公司可能会选择,重新发新的版本去覆盖安装。这种方式成本较高,而且用户一般都比较讨...
2018-10-21 21:11:20
471
原创 进阶必备-Android Click事件是如何触发的?
一、背景阅读本篇文章前,假设你已经阅读前一篇文章。由于有同学问到onClick和touch事件的关系,这里就从源码的角度分析下onClick和onLongClick与onTouchEvent事件是怎么关联的。本文将通过View.java、TextView.java、Button.java的源码作为例子分析。二、源码解读首先我们知道View、TextView、Button三者的关系,即:Bu...
2018-10-15 19:58:38
3343
原创 ConstraintLayout的基本用法及优点
为什么推荐使用ConstraintLayoutConstraintLayout(约束布局)在2016年的Google I/O大会上就推出来了,经历这两年的迭代,功能已经非常的成熟了。一次偶然的机会,在项目中尝试了使用约束布局,从此被它的功能所深深折服。它能很轻易的将你从使用层层的嵌套去实现复杂的布局中解放出来。使用ConstraintLayout后基本可以抛弃LinearLayout和Relat...
2018-10-14 14:58:17
2393
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人