- 博客(218)
- 资源 (5)
- 收藏
- 关注
原创 13这些权限废弃,你的应用受影响了吗?
在 Android 13 上废弃了文件访问权限,提供了一种选择媒体文件的工具,代替这些废弃的 API,而不需要授予对其整个媒体库的访问权限
2022-11-08 09:51:27
709
原创 谁动了我的内存,揭秘 OOM 崩溃下降 90% 的秘密
Kotlin 和 Java 泛型局限性、泛型擦除,泛型信息被擦除了之后,泛型信息保存到哪里,迷惑的通配符和星投影区别
2022-08-29 09:46:48
295
原创 反射技巧让你的性能提升 N 倍
这个反射技巧可能让你的性能提升 N 倍,isAccessible 方法的作用,为什么将 Accessible 设置为 true 可以提升性能
2022-07-28 09:29:13
227
原创 90%人不懂的泛型局限性,泛型擦除,星投影
通过这篇文章你将学习 Kotlin 和 Java 泛型局限性、泛型擦除,泛型信息被擦除了之后,泛型信息保存到哪里,迷惑的通配符和星投影区别
2022-07-10 14:33:58
589
原创 90%的人都不懂的泛型,泛型的缺陷和应用场景
Kotlin 和 Java 的协变和逆变的区别和应用场景,数组协变的缺陷,Kotlin 和 Java 数组协变的不同之处
2022-06-23 09:41:17
460
原创 卷起来,突破35岁焦虑,动画演示CPU记录函数调用过程
通过这篇文章,能够了解到 方法如何调用 、 方法执行完之后如何返回、 内存如何记录方法调用过程。方法调用和返回过程涉及到了,虚拟机栈、程序计数器、局部变量表、操作数栈、方法返回地址、动态链接 等等内容...
2022-06-10 11:38:10
549
原创 迭代器 Iterable 这么慢吗?而它让性能提升 N 倍
Hi 大家好,我是 DHL。公众号:ByteCode ,专注分享有趣硬核原创内容,Kotlin、Jetpack、性能优化、系统源码、算法及数据结构、动画、大厂面经。视频版 bilibili地址 : https://b23.tv/cumiLVf关于 Sequence 我在之前的两篇文章都介绍过,无论在执行速度和内存方面 Sequence 的性能都比 Iterable 好,有兴趣的朋友可以去看一下:为数不多的人知道的 Kotlin 技巧及解析(一)Stack Overflow 上最热门的 10 个.
2022-05-23 16:07:59
567
原创 解析反射真的很耗时吗?射 10 万次用时多久
创建 1 个对象或者创建 10 万个对象耗时多少?单次反射或者 10 万次反射耗时多少?在我们的脑海中没有一个直观的概念,而今天这篇文章将会告诉你。
2022-05-13 13:32:05
297
原创 解密Kotlin1.6.20新功能ContextReceiver
一起来聊一下 Kotlin 1.6.20 的新功能`Context Receivers,来看看它为我们解决了什么问题,以及如何使用
2022-05-10 13:51:07
622
原创 程序员 PK 刘畊宏 | 我用代码实现刘畊宏龙拳
程序员来挑战龙拳了,我用代码实现了刘畊宏的龙拳,对比原版,来看看字符版龙拳怎么样,今天主要介绍实现字符视频的两种方式。
2022-04-26 10:00:00
4225
原创 近视手术,是福音还是噩梦,知道这些危害,你还敢做吗,眼科小知识都在这里
你想知道的,关于近视手术的后的并发症,都在这里,当你决定做手术前,请在术前充分了解术手术的原理,以及术后可能带来的症状,不要仅仅依靠眼科提供的信息。
2022-04-18 14:17:25
809
原创 Stack Overflow 上最热门的 10 个 Kotlin 问题
这是 Stack Overflow 上最热门的几个 Kotlin 问题,这篇文章每个问题,都是一个知识点, 后面我会针对每个问题,单独写一篇文章,进行更加深入的分析。
2022-04-15 11:06:03
2690
原创 这是最棒的效率工具集,打通 Notion x 云盘 x 其他笔记软件,写作、设计、开发都会用到工具
耗时120小时录制和制作,打造的最棒的效率工具集,开发、设计、写作都会用到工具和网站,同时我也开发了一个导航网站,涵盖了 前端开发、Android、设计导航、产品、运营等等工具。
2022-01-12 09:46:13
1708
原创 避免滥用 Kotlin 扩展函数
是避免滥用扩展函数, 而不是禁止,在 Kotlin 中除了为类定义扩展函数之外,还可以定义成员扩展,甚至还可以在接口中定义扩展。
2021-12-29 00:44:45
346
原创 Android 12 已来,你的 App 崩溃了吗?
在 Android 12 中包含了很多的功能和一些行为的变更,一起来分析这些行为的变更对我们的应用产生了那些影响
2021-12-21 08:48:38
2491
1
原创 Kotlin 宣布一个特性 value class
Kotlin 1.5 宣布了一个重磅特性 value class,这是一个非常实用的特性,提高代码的可读性同时,还可以提高性能,因为编译器会对它进行更深层次的优化,减少对象的创建。随着 Kotlin 不断的完善,出现了一系列的特性 inner class 、 data class 、 sealed class 、sealed interface 、inline class 、value class 等等,之前写过几篇文章专门分析 sealed class 和 sealed interface,可以点击下
2021-11-14 14:01:06
3315
2
原创 Google 宣布废弃 LiveData.observe 方法
本篇文章作为技术动态了解即可,废弃 LiveData.observe() 扩展方法,已经不是什么新的新闻了,在很久以前,Google 废弃掉这个方法的时候,第一时间我在 朋友圈 和 掘金沸点 发过一个消息,如下图所示。通过这篇文章你将学习到以下内容:为什么增加 LiveData.observe() 扩展方法?既然增加了,为什么有要废弃 LiveData.observe() 扩展方法?Kotlin 1.4 语法的特性什么是函数式(SAM)接口?什么是 SAM 转换?为什么废弃 Liv
2021-11-14 13:58:23
1712
原创 图解 ArrayDeque 比 LinkedList 快
hi 大家好,我是 DHL。公众号:ByteCode ,专注分享最新技术原创文章,涉及 Kotlin、Jetpack、算法动画、系统源码、 LeetCode / 剑指 Offer / 多线程 / 国内外大厂算法题 等等。在之前的两篇文章中主要分析了 Java 栈的缺点 ,为什么不推荐使用 Java 栈 ,以及 为什么不推荐直接使用 ArrayDeque 代替 Java Stack 。更多内容点击下方链接前去查看。算法动画图解 | 被 “废弃” 的 Java 栈,为什么还在用为什么不推荐 Arr..
2021-10-07 18:49:19
540
1
原创 为什么不推荐 ArrayDeque 代替 Stack
公众号:ByteCode,致力于分享最新技术原创文章,涉及 Kotlin、Jetpack、译文、系统源码、 LeetCode / 剑指 Offer / 多线程 / 国内外大厂算法题 等等一系列文章。这篇文章源于对 stack-vs-deque 文章的思考,也是对我上一篇文章 算法动画图解 | 被 “废弃” 的 Java 栈,为什么还在用 内容的补充。通过这篇文章你将学习到以下内容:为什么不推荐使用 Java 栈JDK 推荐使用 ArrayDeque 代替 Stack 真的合理吗如何实现一个真.
2021-10-07 18:47:42
390
原创 算法动画图解 | 被 “废弃“ 的 Java 栈,为什么还在用
公众号:ByteCode,致力于分享最新技术原创文章,涉及 Kotlin、Jetpack、译文、系统源码、 LeetCode / 剑指 Offer / 多线程 / 国内外大厂算法题 等等一系列文章。在 LeetCode 上不知不觉已经刷了 210+ 题,总提交次数 1000+ 次,从这篇文章开始,每篇算法类型的文章,将会做成动画的形式,每篇文章都会用 Java 和 kotlin 去实现,并且每道题目都有解题思路、时间复杂度、空间复杂度和源代码,更多内容点击下方链接前去查看。剑指 Offer 及国内.
2021-09-18 09:15:03
464
原创 影响性能的 Kotlin 代码(一)
要开始写新的 Kotlin 系列了 「影响性能的 Kotlin 代码」, 同时我也在写另一个系列 「为数不多的人知道的 Kotlin 技巧及解析」,没有看过的小伙伴,可以点击下方链接前去查看。为数不多的人知道的 Kotlin 技巧及解析(一)为数不多的人知道的 Kotlin 技巧及解析(二)为数不多的人知道的 Kotlin 技巧及解析(三)Kotlin 高级函数的特性不仅让代码可读性更强,更加简洁,而且还提高了生产效率,但是简洁的背后是有代价的,隐藏着不能被忽视的成本,特别是在低端机上,这种成本
2021-09-02 09:10:48
875
原创 Jetpack Splashscreen 解析 | 助力新生代 IT 农民工 事半功倍
Jetpack 家族迎来了一位新的成员 Core Splashscreen,所以我也要重新开始写 Jetpack 系列文章了,在这之前写过一系列 Jetpack 文章以及配套的实战应用,包含 App Startup 、 Paging3 、 Hilt 、 DataStore 、ViewBinding 等等实战项目,点击下方链接前去查看。AndroidX-Jetpack-Practice 系列实战项目Kotlin 插件的落幕,ViewBinding 的崛起竟然如此简单,DataBinding 和 Vie
2021-08-18 09:19:04
399
原创 为数不多的人知道的 Kotlin 技巧及解析(三)
本文没有什么奇淫技巧,都是一些在实际开发中常用的技巧Google 引入 Kotlin 的目的就是为了让 Android 开发更加方便,自从官宣 Kotlin 成为了 Android 开发的首选语言之后,已经有越来越多的团队,在项目使用 Kotlin。众所周知 xml 十分耗时,因此在 Android 10.0 上新增加 tryInflatePrecompiled 方法,这是一个在编译期运行的一个优化,因为布局文件越复杂 XmlPullParser 解析 XML 越耗时, tryInflatePrec.
2021-08-04 01:11:04
753
原创 揭秘 Kotlin 中的 == 和 ===
之前分别写了三篇文章,从原理、优化、实战、新特性(密封接口)以不同的角度分别介绍了 Sealed Classes。Kotlin 密封类进化了Kotlin 中的密封类 优于 带标签的类Kotlin Sealed 是什么?为什么 Google 都在用而这篇文章我们主要来分析 Kotlin 中的操作符 == 和 === 的区别,以及它们分别在什么场景下使用。这些操作符在实际项目和开源项目中,使用的频率非常的高。主要包含以下内容:Java 中的 == 和 equals 的区别?Kotlin .
2021-07-15 09:21:27
4524
原创 Kotlin 密封类进化了
这是 Sealed Classes(密封类)系列的第三篇文章,之前的文章从原理、优化、实战以不同的角度分别介绍了 Sealed Classes 的强大。在 Kotlin Sealed 是什么?为什么 Google 都在用 文章中主要包含以下内容:Sealed Classes 原理分析?枚举、抽象类、Sealed Classes 分别有那些优缺点?分别在什么情况下使用枚举和 Sealed Classes?为什么 Sealed Classes 用于表示受限制的类层次结构?在项目中如何使用 S.
2021-06-29 10:32:12
287
1
原创 Kotlin 中的密封类 优于 带标签的类
在之前的文章中我也分析过 Sealed Classes 原理,以及 Google 和很多开源项目为什么都在大量的使用它,如果你对 Sealed Classes 还不是很了解,可以前往查看 Kotlin Sealed 是什么?为什么 Google 都在用 主要内容如下:Sealed Classes 原理分析?枚举和抽象类都有那些局限性?为什么枚举可以作为单例?枚举作为单例有那些优点?分别在什么情况下使用枚举和 Sealed Classes?Sealed Classes 究竟是什么?为什么 .
2021-06-18 08:50:01
211
原创 LeetCode 从 0 到 200 学到了什么
LeetCode 不知不觉刷了 210 题,总提交次数 1069 次,想写一篇文章,跟大家聊聊 LeetCode 刷题感受以及经验,主要包含以下内容。LeetCode 刷题历程?为什么刷题?刷题真的能找到工作吗?如何刷题?平时除了刷 LeetCode,同时也会做 Daily Coding Problem 上面的题目,Daily Coding Problem 包含了很多国外大厂(Google、FaceBook、Uber、Amazon 等等)的算法题,我也在刷题过程中梳理了一些题目和题解,为了.
2021-05-21 08:38:27
298
原创 Android 12 行为变更,对应用产生的影响
公众号:ByteCode,致力于分享最新技术原创文章,涉及 Kotlin、Jetpack、译文、系统源码、 LeetCode / 剑指 Offer / 多线程 / 国内外大厂算法题 等等一系列文章。众所周知在春节过后 Google 发布了 「 Android 12 首个开发者预览版 」,3 月份的时候发布了 「 开发者预览版 2 」,在 Android 12 中让人眼前一亮的是系统界面做了很大改动,根据 Google 今年的发版计划,预计在今年 9 月份正式版将会发出来。在 Android 12..
2021-04-17 18:46:07
5392
1
原创 图解多平台 AndroidStudio 技巧(三)
好的 idea 能提高我们的工作效率,如果掌握一些快捷键,能帮我们从繁琐重复的工作中解放出来,写代码的效率就越高。近期在开发过程中发现了一些非常好用的快捷键分享给小伙伴们,在之前的文章中我也分享过一些常用的快捷键,可以点击下列链接前往查看。图解多平台 AndroidStudio 技巧(一)图解多平台 AndroidStudio 技巧(二)文章中没有奇淫技巧,都是一些在实际开发中、阅读源码的时候常用的快捷键,可能这些快捷键之前用过,但是在不同场景下有不同的用法,强烈建议收藏。软件环境:Ma.
2021-01-30 12:01:11
243
原创 竟然如此简单,DataBinding 和 ViewBinding
前言首先祝小伙伴们新年快乐,2020 一个不平凡的一年,2021 是你我新的起点。2021 新签名:代码不止,文章不停。2021 第一篇文章是对 2020 年末最后一篇文章 Kotlin 插件的落幕,ViewBinding 的崛起 的一个补充。在之前的文章 Kotlin 插件的落幕,ViewBinding 的崛起 中介绍了 Google 为什么不建议在项目中使用 Kotlin 合成方法(Synthetic 视图), Google 建议使用 ViewBinding 替换 Kotlin 合成方法,.
2021-01-07 08:44:24
6864
1
原创 Kotlin 插件的落幕,ViewBinding 的崛起
前言最近小伙们应该都会收到 Kotlin 1.4.20 的升级通知,在 Kotlin 1.4.20 中做了一个重要的更新 如下图所示:简单总结一下,主要有以下几点:废弃了 kotlin-android-extensions 编译插件Parcelable 相关的功能,移到了新的插件 kotlin-parcelize按照 Google 的解释,kotlin-android-extensions 插件只会保留至少一年的时间,将会在 2021 年 9 月或之后的 Kotlin 版本中将被移除.
2020-12-18 09:14:33
1463
原创 [Google] 再见 SharedPreferences 拥抱 Jetpack DataStore
Google 新增加了一个新 Jetpack 的成员 DataStore,主要用来替换 SharedPreferences, DataStore 应该是开发者期待已久的库,DataStore 是基于 Flow 实现的,一种新的数据存储方案,它提供了两种实现方式:Proto DataStore:存储类的对象(typed objects ),通过 protocol buffers 将对象序列化存储在本地,protocol buffers 现在已经应用的非常广泛,无论是微信还是阿里等等大厂都在使用,我们在.
2020-10-16 14:17:35
1982
1
原创 Kotlin StateFlow 搜索功能的实践 DB + NetWork
前言在之前分享过一篇文章 Google 推荐在 MVVM 架构中使用 Kotlin Flow ,在这篇文章中分析了如何在 MVVM 架构中使用 Kotlin Flow,以及 Kotlin Flow 为我们解决了以下问题:LiveData 是一个生命周期感知组件,最好在 View 和 ViewModel 层中使用它,如果在 Repositories 或者 DataSource 中使用会有几个问题它不支持线程切换,其次不支持背压,也就是在一段时间内发送数据的速度 > 接受数据的速度,Live.
2020-10-08 21:40:51
3070
1
原创 Google 推荐在 MVVM 架构中使用 Kotlin Flow
前言在之前分享过一篇 Jetpack 综合实战应用 神奇宝贝(PokemonGo) 眼前一亮的 Jetpack + MVVM 极简实战 ,这个项目主要包了以下功能:自定义 RemoteMediator 实现 network + db 的混合使用 ( RemoteMediator 是 Paging3 当中重要成员 )使用 Data Mapper 分离数据源 和 UIKotlin Flow 结合 Retrofit2 + Room 的混合使用Kotlin Flow 与 LiveData 的使用.
2020-08-25 09:06:21
1782
4
原创 Kotlin Sealed 是什么?为什么 Google 都用
写这篇文章之前,做了很多调研,查阅了很多资料,文章也反复推敲打磨了很多遍,为什么我要去做这么多的调研工作,因为 Sealed Classes 概念很简单,但是想要写好它很难,由于目前我对 Sealed Classes 的理解也有限,所以做了很多工作。希望这篇文章的内容不会让小伙伴们失望,如果你对 Sealed Classes 有独到的理解,也欢迎在评论区和大家一起分享。在上一篇文章 Google 推荐在项目中使用 Sealed 和 RemoteMediator 中介绍了如何使用 Sealed Class.
2020-08-25 09:04:55
3614
2
原创 Jetpack 新成员 AndroidX App Startup 实践以及原理分析
前言前几天 Google 更新了几个 Jetpack 新成员 Hilt、Paging 3、App Startup 等等,周末空闲时间实践了一下 App Startup 可以前去查看 GitHub 上的项目 AndroidX-Jetpack-Practice ,接下来一起来分析一下 AndroidX App Startup。通过这篇文章你将学习到以下内容:App Startup 是什么?App Startup 为我们解决了什么问题?为什么无论是 Google 还是第三方库,初始化时都会在 Con.
2020-08-19 08:15:39
1785
原创 Google 推荐在项目中使用 sealed 和 RemoteMediator
之前分享过一篇 Jetpack + MVVM 综合实战应用 神奇宝贝(PokemonGo) 眼前一亮的 Jetpack + MVVM 极简实战 主要包了以下功能:自定义 RemoteMediator 实现 network + db 的混合使用 ( RemoteMediator 是 Paging3 当中重要成员 )使用 Data Mapper 分离数据源 和 UIKotlin Flow 结合 Retrofit2 + Room 的混合使用Kotlin Flow 与 LiveData 的使用使.
2020-08-03 09:14:46
1928
原创 神奇宝贝 眼前一亮的 Jetpack + MVVM 极简实战
前言Jetpack 实战项目 PokemonGo(神奇宝贝)基于 MVVM 架构和 Repository 设计模式,PokemonGo 项目中用到的技术,都是之前写过的一系列文章里面涉及到的知识点:Paging3(network + db),Dagger-Hilt,App Startup,DataBinding,Room,Motionlayout,Kotlin Flow,Coil,JProgressView 等等。项目 PokemonGo 已经上传到 GitHub: https://github.c.
2020-07-27 23:21:25
13626
4
五种文件存储的方式
2014-04-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人