自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 问答 (1)
  • 收藏
  • 关注

原创 离职了,离开了一个待了6年的公司,我为什么想离开,离开我做了什么准备,未来会怎么样,Ai给我的梳理。

在进来新公司以后,我压力也很大,其实我是一个蛮焦虑的人,害怕做不好别人交代的事情,害怕过不了试用期,都会有紧张的心理,不知道大家是怎么样的,但我知道,时间会让我逐渐适应,我也安慰自己,做不到又如何,能进来,已经是赚到了,只要能接触到我想达到的事情,我已经得到了许多,我开始放下了很多,放下不代表不继续努力,而是心态的调整。4月30号那天,我从一家待了6年的公司,离职了,其实我在3月清明节的那天,就已经提了离职,本来计划4月初就离职,但由于交接原因,延迟了一个月。你已在创造未来的路途之中,每一步都在重塑自己。

2025-06-02 20:46:44 583

原创 Android RxJava框架分析:它的执行流程是如何的?它的线程是如何切换的?如何自定义RxJava操作符?

RxJava 就像是一个​​“流水线工厂”​​,专门处理需要等待的任务(比如网络请求、数据库查询、复杂计算等)。它能把这些任务串成一条流水线,每个环节处理完数据后,自动传给下一个环节,还能灵活控制任务在哪个线程执行(比如后台线程干活,主线程更新UI)。

2025-05-09 10:13:37 778

原创 Android Retrofit框架分析(三):自动切换回主线程;bulid的过程;create方法+ServiceMethod源码了解

Okhttp有什么不好?bulid的过程create方法+ServiceMethodcall + enqueue的过程为什么要学习源码呢?

2025-05-06 17:37:53 1120

原创 Android ViewBinding:源码如何看,底层是如何的?为什么有DataBindin还需要它?

Android ViewBinding:源码如何看,底层是如何的?为什么有DataBindin还需要它?

2025-05-03 20:00:00 277

原创 Android DataBinding源码分析:系统不认识layout标签如何绘制?底层实现;双向绑定是如何执行的?

Android DataBinding源码分析:系统不认识layout标签如何绘制?底层实现;双向绑定是如何执行的?

2025-05-02 14:30:00 869

原创 Android JetPack ViewModel源码分析:为什么横竖屏切换数据还可以保存?他是如何保存?为什么activity销毁的时候他是如何跟着销毁?

Android JetPack ViewModel源码分析:为什么横竖屏切换数据还可以保存?他是如何保存?为什么activity销毁的时候他是如何跟着销毁?

2025-05-01 12:00:00 885

原创 Android LiveData源码分析(二):为什么他刷新数据比Handler好,能更节省资源,解决内存泄漏的隐患;

Android LiveData代码分析:为什么他刷新数据比Handler好,能更节省资源,解决内存泄漏的隐患;

2025-04-30 06:58:35 789

原创 Android Lifecycle代码分析:源码分析;为什么使用;注解的方式为什么过期?状态与事件

我们想象一种场景,假如说你读取数据,开启了一个任务,那么结束的要关掉,那么就要写到onStop里面,但如果一个页面的任务多了,结束的代码都写到了onStop里面,那么就会冗余,一大堆的结束任务。但前面我们会看到,有一个Lifecycle.Event.ON_CREATE,这是一个事件,前面我们用来注解的表标识,我们进去里面看,为什么会有一个State呢?把LifecycleObserver 传递进来以后要做什么,没错,要做反射,反射,才能拿到里面的方法,可以看到,他都取出了getClass。

2025-04-29 18:00:00 911

原创 Android 消息队列之MQTT的使用(二):会话+消息过期机制,设备远程控制,批量控制实现

一、实际应用场景二、会话管理、消息过期设置4.1 会话管理4.2 消息过期设置。

2025-04-28 21:30:00 515

原创 Android 使用支付接口,需要进行的加密逻辑:MD5、HMAC-SHA256以及RSA

在对接第三方支付的时候,最麻烦的问题是什么???没错,就是加密,每个第三方的,可能都还不一样,导致我们开发时间变长,这里我们就来梳理一下最常见的三种加密方式。

2025-04-25 18:00:00 1041

原创 Android 智能家居开发:串口是什么,为什么android版本都比较低?粘包半包的原因以及处理思路,缓冲区处理,以及超时清空缓冲区....

串口是什么?只知道拿来进行使用,只能使用别人封装好的,导致如果下位机更换了,就不知道如何去对接了,出现拆包,粘包,就不知道如何去使用了。所以这篇文章,就来认识一下串口究竟是什么。

2025-04-24 18:00:00 811

原创 Retrofit框架分析(二):注解、反射以及动态代理,Retrofit框架动态代理的源码分析

Retrofit框架分析(二):反射、泛型以及动态代理,手写Retrofit框架注解是什么,为什么出现反射是什么,为什么出现2.1. 使用反射实现ButterKnife的一个小功能:为TextView赋值动态代理,和Retrofit有什么关系?Retrofit框架动态代理的源码分析。

2025-04-23 18:00:00 861

原创 MMKV框架分析:为什么他的性能更高,为什么他比SP好,为什么他的数据更加的精简,比传统IO更高效的文件操作方式;

为什么使用MMKV,而不是用SP,SP的缺点1.1 对比MMKV、SP写入数据的速度1.2 我们可以看看SP的源码,存储大量数据的时候,他的问题在哪里MMKV是什么,MMKV为什么性能更高2.1. 高效的文件操作:FileChannel2.2. 更精简的数据格式:二进制2.3. 数据更新方式:增量写入。

2025-04-19 18:00:00 1393

原创 Leakcanary框架分析:他是如何检测内存泄漏的?四大引用;Heap Dump的实现,设计原则

LEAKCANARY框架分析:他是如何检测内存泄漏的?四大引用;HEAP DUMP的实现,设计原则

2025-04-19 18:00:00 926

原创 设计模式:为什么使用模板设计模式(不相同的步骤进行抽取,使用不同的子类实现)减少重复代码,让代码更好维护。

目录 问题是什么,为什么使用模板方法 模板设计模式是什么 实际的应用场景 一、问题 问题分析: ❌ 重复代码:boilWater() 和 pourInCup() 重复 ❌ 维护困难:修改流程需要改动所

2025-04-05 08:13:17 385

原创 Android 从传统的XML转到Compose的变化:mutableStateOf、MutableStateFlow;有的使用by,有是用=,有的使用by remember是为什么?

总是被mutableStateOf、MutableStateFlow以及LiveData这些给搞混乱,这里我们就理清一下。如果大家学过传统的XML方式编写界面,然后又学习了Compose,就会发现,他们观察数据变化的对象用的不同了,以前我们用的是LiveData,但换成Compose以后,变成mutableStateOf,但又发现,有些用的是MutableStateFlow,并且,有时候他们赋值的时候,使用by,或者使用by remember,赋值的时候,有时候用=,有时候用value。

2025-04-04 09:53:27 945 2

原创 Android:如何看Github、Gitee上的项目提升自己的能力?一条龙服务,尤其是有了DeepSeek以后。

但,现在是AI时代,不仅支持输入的文字越来越多,并且还可以给你的代码增加注释,甚至你可以让他介绍里面为什么用到一些技术等等。比如:https://github.com/RicardoJiang/wanandroid-compose项目,教会你企业级项目应该如何写,MVI如何使用等等。比如:https://github.com/hegaojian/JetpackMvvm,整合了各种框架,你可以学习到如何做一个项目架构等。比如:https://github.com/caiyonglong/MusicLake。

2025-03-30 18:54:14 342

原创 Kotlin的扩展函数:给任何类添加你想要的功能,即使是自带类,第三方类。

• 扩展函数是 Kotlin 的“魔法工具”,用于无侵入性地增强类的功能。• 适用场景:工具函数、第三方类扩展、语义化封装。• 慎用场景:避免与类原有成员函数冲突,优先使用成员函数。一句话:给任何类添加你想要的功能。

2025-03-30 12:26:51 437

原创 Kotlin的委托(by,by lazy)是什么?在看源码的时候不知道他的作用是什么,为什么使用,那么你看看这篇文章。

想象你要出国旅游,但不会说英语,于是你找了个翻译帮你沟通。翻译就是你的“委托对象”,你“委托”翻译帮你处理语言问题。在 Kotlin 中,委托(Delegation) 就是这个道理:让一个对象(委托对象)代替另一个对象(被委托对象)完成某些任务。// 定义接口fun play()fun stop()// 普通播放器实现接口override fun play() { println("播放音乐") }override fun stop() { println("停止播放") }

2025-03-30 12:01:11 930

原创 为什么有些领导,智商非常的高,他总会看到一些我们看不到的东西;为什么明明是和你一起起步的人,现在却已经混到了管理层呢?而我们一直在基层不挪窝呢?

第一点是观察。第二点是不把事情想的很简单。

2025-03-28 21:56:37 116

原创 Android Compose是如何使用什么架构,多个Activity?还是Fragment?compose的ui又是如何卸载和挂载的呢?

最近在学习compose,先是找文章来学习,然后看github上面的源码来学习,最后再找视频来学习,然后再上github的项目学习,接着在根据项目的源码,自己删除再重新写一遍。一波三折。在学习的过程,我就有一个疑问,只有一个Activity,也没有看到Fragment呢,也没有看到更多的Fragment,我好奇,compose的生命周期是如何的,他的页面又是如何加载的,没看到onstart方法,或者页面停止的时候onstop方法。接下来,我们来解答一下这些疑惑。

2025-03-11 23:33:26 1411

原创 Android :实现登录功能的思路

Android 如何实现登录功能?思路讲解~~~

2025-03-11 22:31:17 362

原创 Android 使用设计模式:装饰者设计模式,对功能进行封装升级,学会可以让我们的代码更加的简洁。

我遇到什么问题要使用装饰者设计模式?

2025-02-28 20:17:45 347

原创 MotionLayout(二):MotionLayout是什么?MotionLayout调试技巧、KeyFrame关键帧等等

将ConstraintLayout布局转换为MotionLayout布局后,Android Studio会自动在xml文件夹生成一个对应的MotionScene文件,在该文件中我们可以定义动画的状态、过渡形式、关键帧的属性、和用户的交互方式等。

2025-02-26 22:52:05 726

原创 Android UI:为什么别人的UI看起来很有科技感,并且动画,交互非常的丝滑和顺畅,为什么呢?因为我们没有了解MotionLayout

为什么别人的UI看起来很有科技感,并且动画,交互非常的丝滑和顺畅,为什么呢?因为我们没有了解MotionLayout。MotionLayout 是 Android 中基于 ConstraintLayout 的高级布局容器,在 ConstraintLayout 2.0 版本中引入的。专门用于管理复杂的视图动画和过渡效果。它通过声明式 XML 或代码定义视图的运动路径、关键帧动画和交互行为,适用于实现高度动态的 UI 交互(如折叠效果、滑动抽屉、复杂转场动画等)。1、继承自 ConstraintLayout:完

2025-02-24 17:22:54 678

原创 RecyclerView(快速滚动版本):为什么别人的列表可以滚动的很远,而我们的不能呢?FastScrollRecyclerView

我们在使用应用的时候会发现,为什么别人的RecyclerView滑动可以滚动如此之快呢?而我们的确不行,听很多网友,群友,列表都是使用RecyclerView,这究竟是为什么呢?直到最近在Github上面找项目,看别人源码的时候,才发现,原来有一个这样的控件:FastScrollRecyclerView。

2025-02-23 20:36:24 351

原创 达到知行合一,要摒弃所有的欲望,会不会是个骗局呢?

那么什么叫知易行难呢?也就是知道一个道理很容易,但真正付诸实践却很难。其实在写这篇文章的时候,我就在想,我真能够把这个写好?写好的前提,也就是得我真的已经改变了知易行难,达到了知行合一。

2025-02-20 08:32:06 849

原创 App接入图表:MPAndroidChart,如何创建柱状图、双柱状图以及折线图

(3)BarData 是用于管理和组织柱状图(Bar Chart)中所有数据集(BarDataSet)的核心类。它负责将多个数据集整合在一起,并将其应用到图表中进行显示,可以设置柱子的宽度和间距。(2)BarDataSet 是什么:表示一组 BarEntry 的集合,代表柱状图中的一组柱子。(1)BarEntry是什么:表示柱状图中单个柱子的数据点。(2)配置X轴,也就是下方的轴,day1 day2 day3这些。(3)配置Y轴,注意,Y轴是有两个的,分左右两侧。整体的流程是差不多的,只不过控件换了。

2025-02-18 23:19:08 868

原创 App应用混淆:防止反编译、将App包体积降小。

App应用混淆是一种保护代码的技术,旨在增加反编译和逆向工程的难度,防止他人轻易理解或篡改代码逻辑。简单来说,就是把代码替换成a、b、c基本字母组成的代码,比如一个方法名为:test(),混淆后可能会被替换成a()。

2025-02-15 20:06:58 825

原创 Android小疑问记录:为什么androidstudio已经不建议在switch代码块里用R.id.xx作为判断条件了,为什么if可以?

在 Android Studio 中,不建议在switch代码块中使用R.id.xx作为判断条件,但允许在if-else中使用,原因主要与 Java 的语法规则和R.id.xx的特性有关。

2025-02-13 08:38:21 448

原创 别人的成功,让我们变得很焦虑,为什么呢?

明明什么都没做,却感觉到很累;出门在外,总是担心自己的缺点被别人发现;很多事情,不敢做,不敢说,不行动,改变不了;别人的成功,让我们变得很焦虑。如果你也遇到上述的问题,那么你可能要关注一下你的心理问题了,因为我也一样,在接近半年到一年的时间里,我都是这样的状态,直到逐个逐个问题解决以后,才得到了解脱。接下来这篇文章,会为你分享我在这个过程中的经历和解决方法。这篇文章会按照一下框架进行分享:我遇到了什么问题?本质是什么吗,为什么我们会遇到这些问题?

2025-01-27 17:34:50 915

原创 知行合一:解决有心无力的问题,解决知易行难的问题,知行合一并不意味着事事都要合一,而是....

沉溺于各种各样的享乐之中,最终一事无成,虚度了宝贵的时光。如果你也遇到了这些问题,那么这个视频的内容,能够给到你一些帮助。因为我也在这上面花了几年的时间,沉淀总结出来的一些提升认知和解决的方法。

2025-01-21 23:36:59 1102

原创 程序员修炼指南(一):学习基础原理;软件工程;设计模式;数据结构与算法;

当然,要学习的东西远远不止这些,虽然看起来过于基础,原理,但实际不是,只有这些才能支撑着我们走到更远。好了,这篇文章就到这里,我是前期后期,我们下一篇文章见。

2024-12-13 21:53:17 406

原创 数据结构与算法(一):如何在项目当中使用数据结构与算法?它是如何解决我们的一些问题的?

数据结构与算法:如何在项目当中使用数据结构与算法?它是如何解决我们的一些问题的?

2024-12-08 15:02:38 811

原创 HTTP 网络技术学习:缓存;为什么有时候出现问题要清除浏览器缓存?客户端缓存和服务端缓存是什么。

有时候网站出现问题,或者数据没有改变,通常客服或者售后会让我们刷新一下网页,或者关掉浏览器,或者清掉缓存再试试,然后就可以了,这是为什么呢?

2024-12-08 09:58:42 1321

原创 HTTP 网络技术学习:CDN,为什么我们使用第三方服务的时候需要购买CDN呢?为什么网络速度会慢呢?

首先,我们必须认识到光速虽然在真空中接近每秒30万公里,但在实际应用的电缆或光缆中,这一速度会降至大约三分之二,即20万公里每秒。这意味着,随着地理距离的增加,数据传输的延迟也会变得愈发显著。

2024-12-07 17:15:47 756

原创 Android 消息队列之MQTT的使用:物联网通讯,HTTP太重了,使用MQTT;断网重连、注册、订阅、发送数据和接受数据,实现双向通讯。

目录:问题MQTT是什么以及为什么使用如何使用:第一阶段、基础功能如何使用:第二阶段、增加断网重连如何使用:第三阶段、封装一、问题在开发的时候,我们一般都使用Http和后台进行通讯,比如我们是开发物联网的,设备会有很多数据需要频繁发给后台,使用Http来做这件事情,就感觉很重,比如会遇到如下这些问题:开发成本:需要后台创建接口,前台去请求。连接数过多:在HTTP协议中,每次请求都需要建立一个新的连接,这可能导致连接数过多,特别是在高并发场景下。对于自动售卖机来说,如果同时有大量的

2024-12-04 11:51:08 1781

原创 Android 还在使用LogCat打日志?XLog框架;日志打印到控制台,打印到文件中。

首先,System.out.println 是一个同步方法,每次调用都会导致 I/O 操作,比较耗时,频繁使用甚至会严重影响应用程序的性能,所以不建议在生产环境使用。日志是我们系统出现错误时,最快速有效的定位工具,没有日志给出的错误信息,遇到报错你就会一脸懵逼;而且日志还可以用来记录业务信息,比如记录用户执行的每个操作,不仅可以用于分析改进系统,同时在遇到非法操作时,也能很快找到凶手。好了,这篇文章就介绍到这里~,我是前期后期,如果你也有日志相关的经验分享,也可以在评论区讨论哦,我们下一篇文章再见。

2024-12-03 20:59:49 761

原创 Android 串口SerialPort:数据不连续的问题

比如本来数据是02 03 06 00 01 00 00 00 FF,02是头,FF是尾,所以我们只需要判断,如果收到了02,那么直到我收到FF,才算是完整的数据,不然的话,我就会使用StringBuild一直拼接,如果拼接到了一定的数据量,还是没有,那么就要报错清空了。在跟下位机通讯的时候,我发现有时候会出现数据没有回来的情况,打log发现是下位机返回的数据量太大了,导致还没有完全放到流里面,我们就取走了,这样,上位机获取的数据就是不完整的。

2024-12-01 20:31:08 323

原创 Android 工厂设计模式的使用:咖啡机,可以做拿铁,可以做美式等等。

上述,我们使用的是一种简单工厂设计模式。如果将来需要支持更多种类的纸币器或者需要对纸币器进行更复杂的配置,可以考虑使用工厂方法模式或抽象工厂模式。不过,对于当前的需求来说,简单工厂模式已经提供了足够的灵活性和可扩展性。产品具有明显的继承关系,且产品的类型不宜太多。所以的产品具有相同的方法和类似的属性,使用者不关心具体的类型,只希望传入合适的参数能返回合适的对象。

2024-11-20 23:12:09 1020

空空如也

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

TA关注的人

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