自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

原创 Flutter 打包APK的几种方式

Flutter打包不同于RN,Flutter可以在Android Studio里编写Flutter代码并最终打包为APK,本篇主要阐述涉及到的几种打包方式。

2025-03-31 08:32:17 832

原创 当上小组长的第3天,我裁掉了2年老员工

这周末和上上公司的小伙伴小酌一杯,获悉了两则消息,一则好消息,一则坏消息。好消息是他晋升了,当了个小组长,管了4个人。坏消息是他需要优化掉组内一个人。征得本人同意,本文以他的视角来回顾这个魔幻的一周。

2025-03-31 08:31:34 873

原创 Look My Eyes 最新IDEA快速搭建Java Web工程的两种方式

用三张图说明:我们手机上的App各式各样,他们的共同点之一是随时能够刷新内容,靠的就是每个App都接上了互联网,可以从网上获取最新内容。对应到代码术语里的是:前端<—>服务端交互。当前最常用的交互协议是TCP/IP,使用的应用层协议是HTTP协议,如下:前端作为Http Client,服务端作为Http Server,共同为用户提供服务。继续演变如下图:客户端引入Http SDK,服务端引用Http SDK,通信交由该SDK负责。

2025-03-31 08:30:42 556

原创 有点尬[特殊字符],产品、测试、开发在群里互喷、甩锅了,最后DeepSeek来裁决

有朋友分享了他们公司的瓜,有点搞笑,又有点心酸。

2025-02-20 08:07:43 633

原创 做了违背祖训的决定,开启全栈修炼之路

拧螺丝是门技术活,怎么把多个螺丝组装成产品更是个考验。。平时的学习、工作过程中你可能会关注、接触、实践一些领域。如果说每个领域是个螺丝,那么我们这个系列文章的目的就一起将螺丝装配成产品。

2025-02-17 08:20:23 314

原创 同学聚会,是我不配?

初八就回城搬砖了,有位老哥跟我吐槽了他过年期间参与同学会的事,整理如下,看读者们是否也有相似的境遇。

2025-02-07 22:20:16 505

原创 30岁的程序媛,升值加薪与我无缘

上篇讲述了一位老哥的10年搬砖历程,有位小姐姐看了之后比较有感触,希望我能将她的故事也讲讲,看看能否有共鸣的朋友。

2025-01-20 08:08:36 767

原创 不容易,35岁的我还在小公司苟且偷生

前几天和前同事闲时聚餐,约了两个月的小聚终于达成了,程序员行业聚少离多,所幸大家的发量还坚挺着。期间不可避免地聊到了自己的公司、行业状况以及对未来的看法,几杯老酒之后,大家畅所欲言,其中一位老哥侃起了他的职业生涯,既坎坷又无奈,饭后想起来挺有代表性的,征得他同意故记录在此。以下是老哥的历程。

2025-01-09 08:07:17 603

原创 2025年,给想要入行程序员的同学一些科普

如上俩图,一个是iphone的桌面,另一个是windows的桌面,他们上面有很多图标(常见的QQ、微信等),我们点击去就是打开了一个软件。通俗的叫法是软件,潮流点的称呼是应用,专业点的名称是可执行程序在说跨端之前先说说当今最常使用的操作系统有哪些。桌面端就是我们平时使用的PC(台式机、笔记本电脑):Windows:由微软公司开发,是全球使用最广泛的操作系统之一,适用于个人电脑和企业环境,拥有大量的软件支持。

2024-12-30 08:25:18 754

原创 HarmonyOS Next(纯血鸿蒙)它到底像谁

后续再也没有写关于鸿蒙的文章。没错,我确实入坑了鸿蒙,并且成功上架了几款App和元服务,虽然当前的用户量还比较少,但鸿蒙开发的整体流程已然蹚了一遍,是时候来做一些总结了。本篇从应用开发的角度聊聊鸿蒙它像谁?它有哪些不一样的特征?开发者怎么快速入门?

2024-09-25 08:19:24 7659 3

原创 少年,且听我细说 EventLoop/宏任务/微任务是咋玩的?

上篇文章分析了Promise的重要性以及使用上容易犯错的点,本篇将重点分析EventLoop/宏任务/微任务在浏览器和Node.js里的表现。

2024-06-04 08:20:29 684

原创 论Promise在前端江湖的地位及作用

上篇文章阐述了并发/并行、单线程/多线程、同步/异步等概念,这篇将会分析Promise的江湖地位。

2024-05-17 07:44:33 909

原创 先撸清楚:并发/并行、单线程/多线程、同步/异步

在编码的过程中经常会遇到并发/并行、同步/异步、单线程/多线程等术语,在分析JS setTimeout/Promise之前先把这些概念厘清。

2024-04-18 08:27:53 2026 1

原创 Android Studio Gradle Windows下隐藏的编译的坑

最近重拾了一个之前的Android项目,发现Gradle死活都无法编译成功。明明前阵子都是好的,代码都没变,Android Studio配置都没变,咋就不行了呢,百思不得其解。

2024-04-10 22:55:51 925

原创 不吹不黑,辩证看待开发者是否需要入坑鸿蒙

自打华为2019年发布鸿蒙操作系统以来,网上各种声音百家争鸣。尤其是2023年发布会公布的鸿蒙4.0宣称不再支持Android,更激烈的讨论随之而来。本文没有宏大的叙事,只有基于现实的考量。

2024-01-01 22:12:45 2336

原创 Android使用Hilt依赖注入,让人看不懂你代码

以手机为例,要组装一台手机,我们需要哪些部件呢?从宏观上分类:软件+硬件。由此我们可以说:手机依赖了软件和硬件。//打电话//软件//硬件FishPhone 依赖了两个对象:分别是Software和Hardware。Software和Hardware是FishPhone的依赖(项)。

2023-10-30 00:57:37 3140 2

原创 中秋月圆之夜,我与协程的泄漏做斗争

人有悲欢离合,月有阴晴圆缺,此事古难全——苏东坡人有悲欢离合,月有阴晴圆缺,你的协程是否泄漏了?——小鱼人。

2023-09-26 22:44:49 502

原创 Java切换到Kotlin,Crash率上升了?

最近对一个Java写的老项目进行了部分重构,测试过程中波澜不惊,顺利上线后几天通过APM平台查看发现Crash率上升了,查看堆栈定位到NPE类型的Crash,大部分发生在Java调用Kotlin的函数里,本篇将会分析具体的场景以及规避方式。

2023-09-03 18:26:03 909

原创 匿名内部类/Lambda Java和Kotlin谁会导致内存泄漏?

将函数类型当做形参或返回值的函数称为高阶函数。高阶函数在Kotlin里无处不在,是Kotlin简洁写法的一大利器。长生命周期的对象持有短生命周期的对象,导致短生命周期的对象在生命周期结束后没有被及时回收,导致内存无法复用,最终泄漏合理地释放对短生命周期对象的引用代码基本都在正文里,此处就不贴github链接了,有疑惑请评论/私信后续将会继续输出APT/AGP等全系列流程文章,敬请期待。

2023-07-18 00:19:45 665

原创 关于Jetpack DataStore(Proto)的六点疑问

fun ts() {猜猜是否能编过?答案是否定的。因为Kotlin是强类型语言,声明的str为String类型,那么就只能接收String或是子类的值。引申到SharedPreferences和DataStore存储里。sp?. edit {往SP里写入Int类型数据和String类型数据。这里编译会有问题吗?答案是否定的。运行会有问题吗?答案是肯定的。

2023-06-30 09:51:56 286

原创 关于Jetpack DataStore(Preferences)的八点疑问

DataStore是Android上一种轻量级存储方案,依据官方教程很容易就写出简易的Demo。本篇主要是分析关于DataStore(Preferences)使用过程中的一些问题,通过问题寻找本质,反过来能更好地指导我们合理使用DataStore。

2023-05-22 10:24:55 938

原创 Fragment 要你何用?2.0版本

在之前的文章里有分析过Activity、Fragment、View之间的关联,也简单分析了Fragment的原理。

2023-05-20 09:24:04 2077

原创 这一次,让Kotlin Flow 操作符真正好用起来

Kotlin Flow 如此受欢迎大部分归功于其丰富、简洁的操作符,巧妙使用Flow操作符可以大大简化我们的程序结构,提升可读性与可维护性。然而,虽然好用,但有些操作符不太好理解,可惜的是网上大部分文章只是简单介绍其使用,并没有梳理各个操作符的关系以及引入的缘由,本篇将通过关键原理与使用场景串联大部分操作符,以期达到举一反三的效果。

2023-04-28 11:55:04 988 1

原创 当,Kotlin Flow与Channel相逢

之前的文章已经分析了Flow的相关原理与简单使用,Flow之所以用起来香,Flow便捷的操作符功不可没,而想要熟练使用更复杂的操作符,那么需要厘清Flow和Channel的关系。

2023-04-21 07:56:16 678 2

原创 来吧!接受Kotlin 协程--线程池的7个灵魂拷问

当时偏重于整体原理,对于细节之处并没有过多的着墨,后来在实际的使用过程中遇到了些问题,也引发了一些思考,故记录之。

2023-03-06 08:18:24 1179

原创 狂飙吧,Lifecycle与协程、Flow的化学反应

return CoroutineScope(SupervisorJob() + Dispatchers . IO) } //使用 application . scope . launch {delay(5000) println("协程在全局状态运行1") }构造了全局的协程作用域,当在其它模块拿到Application实例时就可以访问该扩展属性。此种方式的好处:可以方便地自定义协程上下文。

2023-02-23 01:05:42 406

原创 Kotlin SharedFlow&StateFlow 热流到底有多热?

前面分析的都是冷流,冷热是对应的,有冷就有热,本篇将重点分析热流SharedFlow&StateFlow的使用及其原理,探究其"热度"。

2023-02-03 00:11:21 1031 5

原创 Kotlin Flow 背压和线程切换竟然如此相似

上篇分析了Kotlin Flow原理,大部分操作符实现比较简单,相较而言背压和线程切换比较复杂,遗憾的是,纵观网上大部分文章,关于Flow背压和协程切换这块的原理说得比较少,语焉不详,鉴于此,本篇重点分析两者的原理及使用。通过本篇文章,你将了解到:先看自然界的水流:为了充分利用水资源,人类建立了大坝,以大坝为分界点将水流分为上游和下游。而对于Kotlin里的Flow,也有上游(生产者)、下游(消费者)的概念,如:通过collect操作符触发了流,从生产者生产数据(flow闭包),到消费者接收并处理数

2022-12-04 00:04:31 1271

原创 Kotlin Flow啊,你将流向何方?

自然界的流水,从高到低,从上游到下游流动。而对于计算机世界的流:数据的传递过程构成了数据流,简称流此处对数据的处理即为找出其中的偶数。可以看出,原始数据是1~1000,我们对它进行了一些操作:过滤偶数、过滤>500的数。当然还可以进行其它操作,如映射、变换等。原始数据对数据的一系列操作最终的数据把这一系列的过程当做流:从流的方向来观察,我们称原始数据为上流,对数据进行一系列处理后,最终的数据为下流。从流的属性来观察,我们认为生产者在上流生产数据,消费者在下流消费数据。

2022-11-22 00:37:47 821

原创 Kotlin Sequence 是时候派上用场了

Java说:“我从Java8开始就支持Stream(流) API了,可以满足你的需求。”客户不解道:“什么是流?”Java:“流就是一个过程,比如说你之前的需求就可以当做一个流,可以在中途对流做一系列的处理,而后在流的末尾取出处理后的结果,这个结果就是最终的结果。”Kotlin补充道:“老大哥,你说的比较抽象,我举个例子吧。”在一个管道的入口处放入了各种鱼,如草鱼、鲤鱼、鲢鱼、金鱼等,管道允许接入不同的小管道用以筛选不同组合的鱼类。

2022-11-01 12:45:52 769

原创 Android Binder 原理换个姿势就顿悟了(图文版)

Binder机制可谓是Android 知识体系里的重中之重,作为偏底层的基础组件,平时我们很少关注它,而它却是无处不在,也是Android 面试易考察的点之一。网上很多文章,要么知识点比较陈旧,要么源码贴一堆,要么没有成体系地分析,导致读者一知半解,似是而非。本篇将从流程上将Binder通信过一遍,尽量多用图展示。

2022-10-23 22:08:13 1639 2

原创 Android 系统启动到App 界面完全展示终于明白(图文版)

之前文章有分析过Activity创建到View的显示过程,属于单应用层面的知识范畴,本篇将结合Android 系统启动部分知识将两者串联分析,以期达到融会贯通的目标。

2022-10-22 00:13:09 2101

原创 Kotlin 协程 Select:看我如何多路复用

协程通信三剑客:Channel、Select、Flow,上篇已经分析了Channel的深水区,本篇将会重点分析Select的使用及原理。

2022-09-11 19:26:17 1024

原创 继续来,同我一起撸Kotlin Channel 深水区

之前文章都是分析单个协程的原理、特性以及使用,本篇文章将着重分析协程间的通信方式。

2022-09-04 18:14:58 1157

原创 来,跟我一起撸Kotlin runBlocking/launch/join/async/delay 原理&使用

之前一些列的文章重点在于分析协程本质原理,了解了协程的内核再来看其它衍生的知识就比较容易了。接下来这边文章着重分析协程框架提供的一些重要的函数原理,通过本篇文章,你将了解到:老规矩,先上Demo:runBlocking 开启了一个新的协程,它的特点是:也就是① 执行结束后 ② 才会执行。可以看出,协程运行在当前线程,因此若是在协程里执行了耗时函数,那么协程之后的代码只能等待,基于这个特性,runBlocking 经常用于一些测试的场景。runBlocking 可以定义返回值,比如返回一个字符串:原理

2022-08-07 10:46:13 2174

原创 Kotlin 协程之取消与异常处理探索之旅(下)

上篇分析了线程异常&取消操作以及协程Job相关知识,有了这些基础知识,我们再来看协程的取消与异常处理就比较简单了。

2022-08-05 10:39:06 906

原创 Kotlin 协程之取消与异常处理探索之旅(上)

我们知道线程可以被终止,线程里可以抛出异常,类似的协程也会遇到此种情况。本篇将从线程的终止与异常处理分析开始,逐渐引入协程的取消与异常处理。

2022-08-04 15:30:45 1176

原创 Kotlin 协程之线程池探索之旅(与Java线程池PK)

上篇文章分析了协程切换到主线程执行的详细流程,本篇将分析如何切换到子线程执行。通过本篇文章,你将了解到:先看一个最常见的网络请求Demo:因为是耗时操作,因此需要切换到子线程处理,又因为是网络请求,属于I/O操作,因此使用Dispatchers.IO 分发器。若任务偏向于计算型,比较耗费CPU,可以改写如下.........

2022-06-30 17:40:36 2860

原创 Kotlin 协程调度切换线程是时候解开真相了

在前面的文章里,通过比较基础的手段演示了如何开启协程、如何挂起、恢复协程。并没有涉及到如何切换线程执行,而没有切换线程功能的协程是没有灵魂的。本篇将重点分析协程是如何切换线程执行以及如何回到原来的线程执行等知识。..................

2022-06-27 08:07:34 2883

原创 讲真,Kotlin 协程的挂起没那么神秘(原理篇)

上篇从拟物的角度阐述了协程挂起/恢复的场景,相信大家对此应该有了一个感性的的认识。上上篇分析了如何开启一个原始的协程,相信大家也知道协程内部执行原理了。本篇将重点分析协程挂起与恢复的原理,探究协程凭什么能挂起?它又为何能够在原地恢复?........................

2022-06-20 17:02:30 1663

sdfsdfsdfsdf

sdfsdfsd

2022-09-15

空空如也

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

TA关注的人

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