自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hirezy

人生没有彩排,每一个细节都是现场直播。

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

原创 Android内部存储与外部存储(私有目录与公共目录)

全面解析Android内部存储与外部存储(私有目录与公共目录)

2025-03-18 00:41:33 1583

原创 轻松搞定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不同Activity之间共享同一个ViewModel

不同Activity之间实现共享同一个ViewModel

2025-03-06 22:03:03 603

原创 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

原创 深入解析Java中volatile关键字

搞懂 Java中volatile关键字,保证线程安全,解决并发问题。

2024-06-06 20:36:24 1291 4

原创 HarmonyOS(二十五)——Harmonyos通用事件之点击事件

Harmonyos 的onClick 点击事件,就是组件被点击时触发的事件。

2024-06-05 21:09:36 1162 1

原创 HarmonyOS(二十三)——HTTP请求实战一个可切换的头条列表

使用http实现一个新闻列表,具备下拉刷新,上拉加载更多功能。

2024-06-05 20:43:28 1716 1

原创 HarmonyOS(二十四)——Harmonyos通用事件之触摸事件

触摸事件就是当手指在组件上按下、滑动、抬起时触发的事件。

2024-06-05 20:40:42 923 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(十九)——初识应用拥有的四种状态管理

认识HarmonyOS应用级别的状态管理,快速管理应用级别的多种应用状态管理的能力。

2024-03-16 23:41:59 678

原创 HarmonyOS(十八)——状态管理之@Observed装饰器和@ObjectLink装饰器

@Observed/@ObjectLink装饰器(嵌套类对象属性变化)用于多层嵌套的情况,比如二维数组,或者数组项class,或者class的属性是class,他们的第二层的属性变化是无法观察到的。

2024-02-20 00:26:43 1652

原创 HarmonyOS(十三)——详解自定义组件的生命周期

全面解析Harmonyos自定义组件的生命周期。

2024-01-24 01:17:21 3859

原创 HarmonyOS(十二)——全面认识HarmonyOS三种渲染控制

带你全面掌握最全面的HarmonyOS三种渲染控制机制!

2024-01-24 01:16:01 3344

原创 Android Activity的启动流程(Android-10)

深入认识startActivity(Intent)

2024-01-16 00:21:47 2307

原创 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

java编程基础章节讲解代码

java for循环的使用;形参和实参的用法,及注意事项;数组的定义及用法,charAt的用法,和案列讲解

2014-10-17

字符串反转

熟悉java的相关操作,达到孰能生巧的境界,希望对彼此有所帮助

2014-10-15

求出用户输入的俩个数之间最大的,切能被8整除的数字

方法的定义,定义GetNum方法,用GetNum方法接收俩个整数,让GetNum方法求出俩这之间最大的,切能被8整除的数字

2014-10-17

javascript

猜猜自己所想的在随机数中有几个数是和自己的数相同

2014-11-19

空空如也

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

TA关注的人

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