- 博客(216)
- 资源 (4)
- 收藏
- 关注

原创 轻松搞定DeepSeek本地部署
到了这里,我们就在本地成功安装和部署了DeepSeek R1模型了,但是看到这里,我想对大多数非IT 行业的小伙伴来说,脑海会有无数的小问号,能否像豆包之类的AI, 有一个可视化的桌面或者APP, 毕竟他们可能不知道何为终端,怎么打开终端, 别急,接下来,带你实现DeepSeek的可视化使用。大家相信都知道算力的概念,既然是本地部署,就要更具自己电脑的配置情况,选择适合自己电脑配置的模型,这里小小科普一下,算法模型,参数越多,往往覆盖场景更多,更全,也更精准,随之而来,对硬件的算力要求也是越来越高的。
2025-03-11 23:37:01
1431

原创 Dagger 2 系列(六)——进阶之Component 依赖、@SubComponent 与多 Component 下的 Scope 使用限制
在日常的项目开发过程中,我们需要认真的考虑 Component 间的依赖关系,一般的,这些依赖关系的建立是根据具体的业务。在多 Component 下 Scope 的使用是有限制的, 其最终的标准都是不可以导致 Scope 被破坏。自此我们对依赖注入的思想相比也有了一定的了解,了解了Dagger2各个注解的作用,后续我会讲解Android常用的另外俩个依赖注入框架Hilt和Koin,对比三个依赖注入框架各自的不同和使用场景。如果你是新手可以从头看Dagger 2 系列。
2025-03-11 08:30:00
1768

原创 Dagger 2 系列(五)——进阶之@Scope 和 @Singleton
在上一篇Dagger 2 系列(四)——@Named 和 @Qualifier注解介绍,了@Named 和 @Qualifier注解,这篇文章,我们将会了解另外俩个注解:@Scope 和 @Singleton。@Scope 是什么@Singleton 是什么@Scope和 @Component 如何协同作战。Dagger2 的学习曲线确实是比较陡的,个人认为陡的点一是对依赖注入(控制反转)概念的理解,所以有了Dagger 2 系列(一)——基础篇之依赖注入。
2025-03-10 22:36:46
884

原创 Dagger 2 系列(四)——@Named 和 @Qualifier注解介绍
在上一篇Dagger 2 系列(三)——@Module 和 @Provides注解介绍,了@Module 和 @Provides注解,这篇文章,我们将会了解另外俩个注解:@Named 和 @Qualifier。
2025-03-10 21:57:15
637

原创 Dagger 2 系列(三)——@Module 和 @Provides注解介绍
在上一篇Dagger 2 系列(二)——@Inject、@Component 注解介绍一文,了@Inject、@Component 注解,这篇文章,我们将会了解另外俩个注解:@Module 和 @Provides。@Module 是什么@Provides 是什么@Module 、@Provides 和@Component 如何协同作战。1. 什么是 Module既然在Dagger 2 系列(二)——@Inject、@Component 注解介绍。
2025-03-09 22:20:02
916

原创 Dagger 2 系列(二)——@Inject、@Component 注解介绍
到此为止,我们已经实现了基本的基于 Dagger2 的依赖注入。用 @Inject 注解标注目标类中依赖类的实例对象用 @Inject 注解标注依赖类的构造函数若其他类还依赖于其他的类,则重复进行上面2个步骤调用 Component(注入器)的 injectXXX(Object)方法开始注入(injectXXX方法名字是官方推荐的名字,以inject开始)Component 就像 目标类 和自己的 依赖类 的媒介,把目标类依赖的实例注入到目标类中,来初始化目标类中的依赖实例变量。
2025-03-09 21:53:25
1155

原创 Dagger 2 系列(一)——基础篇之依赖注入
上面例子面临着一个问题,一旦Person的创建方式(如构造参数)发生改变,那么你不但需要修改 MainClass 中创建Person的代码,还要修改其他所有地方创建Person的代码。Dagger2 的原理是在编译期生成相应的依赖注入代码。依赖注入就是调用者需要的另一个对象实例不在调用者内部实现,而是通过一定的方式从外部传入实例,解决了各个类之间的耦合。,该容器在需要的时候通过它自己的方式创建该类的实例,即:创建类实例权利的移交。的方式创建相关类的实例的权利,交给具体的业务(所谓的 IOC 容器)
2025-03-09 21:25:07
502

原创 Android AudioFlinger(五)—— 揭开AudioMixer面纱
这个函数首先使用while循环来遍历每一个track,然后通过 NEEDS_RESAMPLE、NEEDS_AUX、NEEDS_CHANNEL_1、NEEDS_MUTE等判断,最终得到resampling、all16BitsStereoNoResample、volumeRamp的值,然后基于这几个值来决定调用,mHook来指向哪一个函数。这里主要就是调用mHook,mHook是一个函数指针,他会根据不同的场景分别调用不同的函数。mHook初始化的时候指向的是process__nop。
2025-03-07 21:47:13
1253

原创 Android AudioFlinger(四)—— 揭开PlaybackThread面纱
继上一篇Android AudioFlinger(三)—— AndroidAudio Flinger 之设备管理...接下来我们进一步研究下PlaybackThread的循环主题具体做了什么?
2025-03-07 21:25:15
1305

原创 Android AudioFlinger(二)——AndroidAudio Flinger的启动流程
audioflinger是整个Android音频系统的核心,起到了承上启下的作用,乘上就是为上层应用提供了各种访问和管理的接口,启下就是通过HAL来管理各种音频设备。
2025-03-07 18:11:07
585

原创 Android AudioFlinger(三)—— AndroidAudio Flinger 之设备管理
AndroidAudio Flinger 之设备管理
2025-03-07 18:07:36
1327

原创 Android AudioFlinger(一)——初识AndroidAudio Flinger
AudioFlinger 是 Android 系统中的音频中间层(audio HAL, Audio Hardware Abstraction Layer)的一部分,负责管理音频的混音、播放和音量控制等功能。它充当 Android 应用程序和音频硬件之间的桥梁。
2025-03-07 17:34:49
1169

原创 Android中AIDL和HIDL的区别
在Android中,AIDL(Android Interface Definition Language) 和 HIDL(HAL Interface Definition Language) 是两种用于定义跨进程通信接口的语言。AIDL 是 Android 系统最早支持的 IPC(进程间通信)机制,而 HIDL 是从 Android 8.0 开始引入,用于 HAL(Hardware Abstraction Layer)模块的接口定义。
2025-03-07 17:18:47
1736

原创 Android进程间通信方式之AIDL
Binder 机制:AIDL 基于 Binder 进行 IPC,高效且安全。Stub & Proxy:AIDL 自动生成 Stub(服务端实现)和 Proxy(客户端代理)。多进程通信:使用 bindService() 连接远程 Service,返回接口实例。线程安全:AIDL 默认方法在 Binder 线程池中执行,避免 UI 线程阻塞。AIDL 是 Android 进程间通信的核心方式之一,适用于 高效、多进程数据共享和方法调用。
2025-03-06 22:40:50
1963

原创 推荐一个基于Koin, Ktor & Paging等组件的KMM Compose Multiplatform项目
KMM是一个在多个平台上无缝共享代码的能力的框架。已成为跨平台开发领域的改变者。
2025-03-06 22:24:49
751

原创 Android之深入NFC通信
NFC技术作为一种新兴技术在世界范围内受到了广泛关注,尤其是手机的广泛应用,为NFC技术的长足发展提供了前提。NFC技术原理简单,因此成本相对低廉,除此之外NFC通信的带宽高、能耗低等特点也是促进NFC技术发展的一大优势。
2024-07-22 00:13:20
1966
2

原创 Framework源码面试之Handler面试集合
Handler主线程和子线程通过handler交互,交互的载体是通过Message这个对象,实际上我们在子线程发送的所有消息,都会加入到主线程的消息队列中,然后主线程分发这些消息,这个就很容易做到俩个线程信息的交互。看到这里,你可能有疑问了,我从子线程发送的消息,怎么就加到了主线程的消息队列里呢???大家可以看看你自己的代码,你的handler对象是不是在主线程初始的?子线程发送消息,是不是通过这个handler发送的?这就很简单了,handler只需要把发送的消息,加到自身持有的Looper对象的。
2024-07-21 23:59:38
902
2

原创 Java深入理解equals()与hashCode()方法
Object类是类继承结构的基础,所以是每一个类的父类。所有的对象,包括数组,都实现了在Object类中定义的方法。equals()方法详解equals()方法是用来判断其他的对象是否和该对象相等. equals()方法在object类中定义如下:很明显是对两个对象的地址值进行的比较(即比较引用是否相同)。但是我们知道,String 、Math、Integer、Double等这些封装类在使用equals()方法时,已经覆盖了object类的equals()方法。while (n–!
2024-07-21 23:51:29
812

原创 Android全面解析Window机制
先假设如果没有window,会发生什么:我们看到的界面ui是view,如我们的应用布局,更简单是一个button。假如屏幕上现在有一个Button,如图1,现在往屏幕中间添加一个TextView,那么最终的结果是图2,还是图3:在上图的图2中,如果我要实现点击textView执行他的监听事件逻辑,点击不是textView的区域让textView消失,需要怎么实现呢?
2024-07-21 23:37:27
1318

原创 深入解析Hashtable、LinkHashMap、TreeMap
在深入解析HashMap文章中我从散列表的角度解析了HashMap,在深入解析ConcurrentHashMap解析了ConcurrentHashMap的底层实现原理。本文是HashMap系列文章的第三篇,主要内容是讲解与HashMap相关的集合类。HashMap本身功能已经相对完善,但在某些特殊的情景下,他就显得无能为力,如高并发、需要记住key插入顺序、给key排序等。实现这些功能往往需要付出一定的代价,在没有必然的需求情景下,增添这些功能是没必要的。
2024-07-17 21:10:56
750

原创 深入解析ConcurrentHashMap
ConcurrentHashMap优秀的CAS+自旋锁+synchronize并发设计,是整个框架的重点所在。从而保证了ConcurrentHashMap的线程安全。
2024-07-17 20:46:25
1339

原创 深入剖析HashMap实现原理
HashMap本质上是一个散列表,那么就离不开散列表的三大问题:散列函数、哈希冲突、扩容方案;同时作为一个数据结构,必须考虑多线程并发访问的问题,也就是线程安全。这四大重点则为学习HashMap的重点,也是HashMap设计的重点。
2024-07-16 20:54:06
1290

原创 认识散列表和哈希表
散列表(Hash Table)和哈希表(Hash Map)是计算机科学中常用的数据结构,用于将一组键值映射到一个位置,以便快速查找和访问数据。
2024-07-16 19:54:04
773

原创 HarmonyOS(二十五)——Harmonyos通用事件之点击事件
Harmonyos 的onClick 点击事件,就是组件被点击时触发的事件。
2024-06-05 21:09:36
1162
1

原创 HarmonyOS(二十一)——基础动画之属性动画的使用
属性动画,是最为基础的动画,其功能强大、使用场景多,应用范围广。可以让我们的应用更丝滑。
2024-06-05 00:45:00
1810

原创 HarmonyOS(二十二)——认识HTTP请求之从网络获取数据
HarmonyOS 如何创建一个http,包括发起请求、中断请求、订阅/取消订阅HTTP Response Header 事件。
2024-06-05 00:41:03
1533
1

原创 HarmonyOS(二十)——管理应用拥有的状态之LocalStorage(页面级UI状态存储)
LocalStorage是页面级的UI状态存储,通过@Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。LocalStorage也可以在UIAbility实例内,在页面间共享状态。
2024-03-16 23:42:14
1774
1

原创 HarmonyOS(十八)——状态管理之@Observed装饰器和@ObjectLink装饰器
@Observed/@ObjectLink装饰器(嵌套类对象属性变化)用于多层嵌套的情况,比如二维数组,或者数组项class,或者class的属性是class,他们的第二层的属性变化是无法观察到的。
2024-02-20 00:26:43
1652

原创 Android 系统启动过程纪要(基于Android 10)
认识Android的系统启动的三个进程 init ->zygote -> system_server
2024-01-16 00:20:42
1591

原创 HarmonyOS(十六)——状态管理之@Link装饰器(父子双向同步)
HarmonyOS状态管理之Link装饰器。Link装饰的变量与其父组件中的数据源共享相同的值。
2023-12-21 00:37:14
2109

原创 HarmonyOS(十七)——状态管理之@Provide装饰器和@Consume装饰器(与后代组件双向同步)
HarmonyOS状态管理之@Provide和@Consume,应用于与后代组件的双向数据同步,应用于状态数据在多个层级之间传递的场景。
2023-12-21 00:35:36
1347
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人