自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

分享技术和日常

认识大佬,发现更大的世界

  • 博客(78)
  • 收藏
  • 关注

原创 鸿蒙系统中RCP通信模式简介

摘要:鸿蒙系统的RCP(Remote Communication Protocol)是实现分布式设备间低时延、高可靠通信的核心协议,基于分布式软总线构建分层架构(物理层、传输层、协议层、应用层)。其支持三种通信模式:同步/异步远程调用和发布-订阅,通过分布式对象、高效序列化及智能连接管理等机制,适用于跨设备任务调度、数据同步等场景。RCP具备低延迟(<10ms)、高吞吐(100MB/s)特性,并集成设备认证、数据加密等安全措施,为开发者提供透明化的分布式通信能力。

2025-07-25 09:52:13 1120

原创 鸿蒙系统中RCP与HTTP的区别

摘要: 鸿蒙系统中,RCP与HTTP协议分别针对不同场景设计。RCP是鸿蒙设备间通信的基础协议,支持低时延、高可靠的分布式交互(如跨设备调用系统服务),基于二进制传输,仅限鸿蒙生态;HTTP作为通用应用层协议,适用于Web资源请求、云端API交互等跨平台场景,但传输效率较低。开发时需根据需求选择:设备间协作优先RCP,外部服务访问使用HTTP。两者共同支撑鸿蒙分布式能力与外部连接需求。

2025-07-25 09:47:32 711

原创 鸿蒙系统中 JSON5 的应用场景、支持方式

JSON5是对标准JSON的扩展,在鸿蒙系统开发中提供更灵活的配置方式。它支持注释、单引号、末尾逗号等特性,简化了配置文件的编写和维护。鸿蒙应用可通过构建工具预处理或运行时引入第三方库(如json5)来支持JSON5解析,适合用于路由配置、主题定义等场景。但需注意系统组件仅支持标准JSON,且JSON5解析性能略低。开发中建议在构建阶段将JSON5转为标准JSON,兼顾开发效率与兼容性。团队需统一规范以避免语法错误。

2025-07-25 09:42:02 1150

原创 如何确定递归算法的时间复杂度的上界和下界?

本文系统介绍了递归算法时间复杂度的分析方法,重点阐述了上界(最坏情况)和下界(最好情况)的确定方法。通过递归树展开、Master定理等方法计算上界,用数学归纳法和信息论方法确定下界,并以快速排序、二分查找等经典算法为例,展示了如何分析不同情况下的时间复杂度。文章还指出常见误区,强调需结合算法结构和输入分布进行系统分析,才能准确评估递归算法的性能界限。

2025-07-24 11:08:59 1145

原创 怎样计算递归算法的时间复杂度?

计算递归算法的时间复杂度主要有三种方法:递推方程法、递归树法和Master定理。递推方程法通过建立递归关系式并求解,适用于大多数情况;递归树法直观展示每层复杂度,适合分治算法;Master定理能快速求解特定形式的递推方程。此外,记忆化技术可优化指数级复杂度为多项式级,而递归与循环结合时需累加每次递归的操作次数。掌握这些方法的核心在于正确拆分递归过程,将其转化为可求解的数学表达式。

2025-07-24 11:01:51 2200

原创 如何计算算法的时间复杂度?

计算算法时间复杂度的核心在于分析基本操作次数与问题规模n的关系,重点关注增长最快的部分。主要步骤包括:确定问题规模n,识别基本操作,分析循环和递归结构,建立数学表达式后取最高阶项。常见时间复杂度从O(1)到O(n!)不等,实际计算需考虑最坏情况,并忽略常数优化。掌握这一方法能有效评估算法效率,指导实际开发中的方案选择。

2025-07-24 10:59:10 498

原创 帝师翁同龢是一个怎么样的人?

摘要: 翁同龢(1830—1904)是晚清重臣与两朝帝师,兼具清流领袖与维新推动者的双重身份。作为光绪帝的核心顾问,他主张主战拒和却缺乏务实策略,早期支持变法但反对激进改革,最终因帝后党争被罢官。其矛盾性体现在:既以儒学忠君为本,又尝试吸纳西学;既有清廉风骨,又因理想主义被诟病“误国”。他是传统士大夫在新旧时代夹缝中的典型代表,其生涯折射出晚清变革的深层困境。(149字)

2025-07-23 14:09:52 1357

原创 算法的时间复杂度和空间复杂度哪个更重要?

摘要: 算法的时间复杂度和空间复杂度需根据具体场景权衡。时间效率(速度)通常更受关注,尤其在用户交互和实时系统中,但内存受限时(如嵌入式设备、大规模数据处理)空间复杂度更为关键。理想情况下需平衡两者,如快速排序(时间O(n log n),空间O(log n))。优化原则为:先确保能运行,再优先时间,极端场景下灵活采用“时间换空间”或“空间换时间”策略。核心是在约束下找到最优解。(150字)

2025-07-23 14:06:31 616

原创 如何计算算法的空间复杂度?

本文系统介绍了算法空间复杂度的计算方法和步骤。核心原则是仅计算算法运行时动态申请的额外内存,包括临时变量、递归调用栈和动态数据结构。计算步骤包括:识别临时变量、分析数据结构大小、评估递归深度、处理多维数据,并忽略常数项和低阶项。常见空间复杂度包括O(1)、O(n)、O(n²)等,不同场景如原地算法、动态数据结构和空间换时间优化需要特殊处理。通过明确问题规模、识别额外空间、分析增长关系并取最高阶项,可有效评估算法的内存效率。

2025-07-23 14:04:46 990

原创 什么是算法的空间复杂度和时间复杂度?

摘要:时间复杂度(算法执行效率)和空间复杂度(内存占用)是衡量算法性能的核心指标。时间复杂度关注基本操作与问题规模n的关系,常用O(1)、O(n)、O(n²)等表示增长趋势;空间复杂度分析额外存储空间需求,如O(1)表示固定内存。二者常需权衡取舍(如空间换时间)。分析时忽略常数项,关注最高阶项,帮助评估算法在大规模数据下的表现。

2025-07-23 13:41:35 620

原创 历史上真实的奕譞(走向共和中的七爷)是一个怎样的人?

摘要: 醇亲王奕譞是晚清政治中的矛盾人物,作为道光帝之子、光绪生父,他既是慈禧信任的宗室,又必须恪守臣子本分。他务实参与洋务运动,推动海军建设,却因谨慎妥协未能阻止经费挪用。在权力斗争中,他始终避让以求自保,以极端低调换取善终。奕譞的生存策略折射出晚清皇族的困境——清醒认知颓势却无力突破,只能以有限作为在体制内求存。其一生堪称晚清宗室在时代枷锁下“被动生存”的典型缩影。

2025-07-23 13:38:49 1782

原创 学习鸿蒙开发需要具备哪些基础知识?

摘要:学习鸿蒙开发需掌握通用基础(计算机理论、编程思维)和方向性技能。应用开发需重点学习ArkTS语言、ArkUI框架及DevEco Studio工具;设备/物联网开发需补充C/C++、嵌入式系统及硬件知识。零基础者可先学编程逻辑和ArkTS,有前端经验者能快速迁移。不同方向的核心基础优先级不同,应用开发侧重UI与工具,设备开发侧重底层硬件交互。(149字)

2025-07-23 13:31:46 897

原创 分享一些鸿蒙开发的学习资源

鸿蒙开发学习资源丰富,涵盖官方文档、在线课程、社区论坛和开发板等。华为开发者联盟官网提供详细的开发指南和文档;在线课程平台如鸿蒙生态学堂、传智教育和千锋教育提供系统化实战课程;鸿蒙开发者社区、知乎和CSDN等平台支持技术交流;《鸿蒙应用开发实战》等书籍结合实际案例讲解;开发板则帮助进行硬件实践。这些资源适合不同阶段的开发者学习鸿蒙开发技术。

2025-07-23 13:29:25 621

原创 鸿蒙开发学习路径

鸿蒙开发学习路径分为五个阶段:基础入门(环境搭建、ArkTS语言学习)、核心技术(系统架构、分布式技术)、进阶实战(多端部署、AI开发)、项目实战(电商/家居应用开发)和持续学习(跟踪新技术、参与开源)。重点包括掌握鸿蒙微内核架构、分布式能力、ArkUI框架及性能优化,通过实际项目积累经验,并持续关注生态发展。学习需结合华为开发者工具和社区资源,逐步深入系统开发与行业应用。

2025-07-23 13:27:58 728

原创 Android中如何优化RecyclerView的滑动性能?

摘要: Android开发中,优化RecyclerView滑动性能需从布局、数据绑定、图片加载、数据分页和配置五方面入手。布局优化包括减少层级(用ConstraintLayout)、避免过度绘制;数据绑定需避免主线程耗时操作,复用ViewHolder;图片加载应使用异步框架(如Glide)并合理缓存;数据分页通过分批加载和局部刷新(DiffUtil)提升效率;配置优化如设置setHasFixedSize(true)减少测量开销。综合运用这些方法可显著提升列表流畅度。

2025-07-22 20:06:25 1163

原创 Android中RecyclerView的滑动监听机制

本文介绍了RecyclerView的滑动监听机制,重点解析了OnScrollListener接口的两个核心方法:onScrolled()用于获取滚动方向和距离,onScrollStateChanged()用于监听滚动状态变化。结合LayoutManager提供的可见项位置查询方法,可实现多种实用场景:1)滑动到底部加载更多数据;2)滑动时隐藏/显示导航栏;3)判断是否滑动到顶部以显示"返回顶部"按钮。文章通过代码示例详细说明了如何实现这些功能,为开发者提供了RecyclerView滑动交

2025-07-22 20:04:21 812

原创 Android中的ReayclerView的缓存机制与原理

摘要: RecyclerView通过四级缓存机制(Scrap、CacheViews、ViewCacheExtension、RecycledViewPool)实现高性能列表渲染。核心优势在于复用ViewHolder减少创建和绑定开销,提升滚动流畅度。开发者可通过调整缓存大小、共享RecycledViewPool、使用DiffUtil等策略优化性能。相比ListView,RecyclerView提供更精细的缓存控制和内置动画支持,但需注意ViewHolder复用导致的显示异常问题。合理运用缓存机制能显著提升列表

2025-07-22 20:02:05 1118

原创 Android中广播的注册方式有哪几种?

Android广播接收器(BroadcastReceiver)的注册方式分为静态和动态两种。静态注册在AndroidManifest.xml中声明,应用未启动也能接收广播,适合监听系统事件(如开机启动);动态注册在代码中实现,需手动管理生命周期,灵活性更高,适合组件间通信。从Android 8.0开始,隐式静态广播受到限制。动态注册需注意及时注销避免内存泄漏,应用内通信推荐使用LocalBroadcastManager。根据实际需求选择合适方式:系统级事件用静态注册,UI更新等场景用动态注册。

2025-07-22 19:54:24 454

原创 Android中的广播创建与使用场景

Android广播机制是一种全局消息传递方式,支持组件间通信和系统事件监听。主要分为普通广播、有序广播和已废弃的粘性广播三种类型。广播可通过静态(AndroidManifest)或动态(代码注册)方式创建,典型应用场景包括系统事件监听、组件间通信和跨应用交互。虽然广播具有解耦优势,但存在性能开销和安全风险。建议优先使用LocalBroadcastManager、EventBus或ViewModel替代方案,仅在必要时采用全局广播,并注意内存泄漏和耗时操作问题。

2025-07-22 19:52:26 476

原创 在Activity和Fragment通信中,哪种方式的效率更高?

摘要:Activity与Fragment通信效率取决于实现方式、数据复杂度及使用场景。接口回调效率最高(0.01ms/次),适合高频简单事件;ViewModel+LiveData(0.1ms/次)适合数据共享;Bundle适用于初始化参数传递;EventBus/LocalBroadcast效率较低(1-10ms/次),仅建议低频解耦场景。优化建议:优先用接口回调/ViewModel,避免EventBus高频使用,采用Parcelable序列化,减少LiveData嵌套。选择时需平衡性能与场景需求,而非单一追

2025-07-22 19:48:04 800

原创 Android中Activity与Fragment怎么实现通信?

Android中Activity与Fragment通信的常见方式: 接口回调:Fragment定义接口,Activity实现,在onAttach()中绑定,适合Fragment向Activity单向传值; ViewModel:通过共享ViewModel实现双向通信,支持多Fragment数据同步,推荐使用LiveData观察数据变化; Activity中转:通过getActivity()获取宿主Activity实例,调用公共方法实现Fragment间通信; EventBus:通过事件总线实现松耦合通信,适合

2025-07-22 19:45:47 851

原创 Android设计模式之原型模式(Prototype)与使用场景

Android开发中的原型模式通过复制现有对象来创建新实例,避免重复初始化开销。该模式包含浅拷贝(共享引用属性)和深拷贝(完全独立对象)两种实现方式,适用于复杂对象复制、状态保存恢复等场景。典型应用包括快速创建相似UI组件、缓存数据模型和线程安全对象复制。优点在于提升性能和简化创建过程,但深拷贝实现较为复杂,需递归处理所有引用属性。通过合理使用克隆方法,开发者可以优化对象创建流程,提高应用效率。

2025-07-22 19:20:11 502

原创 Android设计模式之适配器模式(Adapter)与使用场景

Android开发中适配器模式是连接数据与视图的关键设计模式,主要分为类适配器(Java中不常用)和对象适配器(通过组合实现)。典型应用场景包括: AdapterView系列控件(ListView/GridView)通过Adapter将数据转换为View RecyclerView通过Adapter配合ViewHolder展示列表数据 示例展示了自定义适配器的实现过程,包括数据对象定义、ViewHolder优化和适配器核心方法重写。适配器模式解决了不同组件间接口不兼容的问题,是Android列表展示数据的标准

2025-07-22 19:17:20 496

原创 设计模式有多少种?

在软件工程中,设计模式是经过总结和验证的、用于解决特定场景下重复出现问题的最佳实践。最经典的设计模式分类来自**《设计模式:可复用面向对象软件的基础》**(俗称“四人帮”或“GoF”设计模式),该书定义了23种基本设计模式。随着软件开发的发展,又衍生出一些新的设计模式,但GoF的23种模式仍是基础和核心。

2025-07-22 19:13:34 574

原创 Android中自定义View的一般流程

在Android开发中,自定义View是一项重要的技能,它允许开发者创建独特的UI组件或优化现有组件的行为。通过这些步骤,你可以创建出功能丰富、交互流畅的自定义组件。如果继承自ViewGroup,需重写。计算View的宽高,需调用。

2025-07-21 12:09:43 419

原创 Android中事件分发中的冲突处理

用于事件的分发,所有的触摸事件都要经过这个方法。:用于判断是否拦截某个事件,只有ViewGroup才有这个方法。:用于处理触摸事件。,即事件从Activity开始,经过Window传递到顶级ViewGroup,然后逐层向下传递,直到找到合适的View处理该事件。通过自定义控件来处理特定的冲突场景。mLastY = y;break;// 如果横向移动距离大于纵向移动距离,则不拦截事件break;

2025-07-21 12:02:49 821

原创 什么是红黑树?

红黑树(Red-Black Tree)是一种自平衡的二叉搜索树,它在每个节点上增加了一个存储位来表示节点的颜色(红色或黑色)。通过对任何一条从根到叶子的路径上各个节点着色方式的限制,红黑树确保没有一条路径会比其他路径长出两倍,因而是接近平衡的。

2025-07-21 11:56:45 475

原创 Android中的线程池介绍及其使用

除了使用预定义的线程池类型,你还可以通过// 创建一个自定义线程池2, // 核心线程数5, // 最大线程数60, // 线程空闲时间TimeUnit.SECONDS, // 时间单位new ArrayBlockingQueue<>(10) // 任务队列// 提交任务到线程池i < 10;// 关闭线程池。

2025-07-21 11:49:24 478

原创 Android中的MVVM框架简介

Android MVVM(Model-View-ViewModel)是一种基于数据绑定和观察者模式的架构模式,用于分离视图(UI)和业务逻辑,提高代码可维护性和可测试性。MVVM是Android开发中一种高效的架构模式,通过分离视图和业务逻辑,提高了代码的可维护性和可测试性。结合LiveData、ViewModel和Data Binding等组件,MVVM能够实现数据驱动的UI更新,减少模板代码,是现代Android应用开发的首选架构之一。

2025-07-21 11:28:05 3798

原创 LeakCanary检测内存泄漏的原理

LeakCanary是Square开发的Android/Java内存泄漏检测工具,通过弱引用和引用队列机制监控对象生命周期。当Activity/Fragment销毁后,它主动触发GC并检查对象是否存活,若存活则生成堆转储文件分析引用链。其核心技术包括GC Roots追踪和Shark库分析,能精准定位如静态变量持有Activity、非静态内部类等常见泄漏场景。虽然存在性能开销和误报可能,但在Debug版本中使用能有效提升内存管理质量,建议结合其他工具使用并定期分析报告。该工具实现了内存泄漏检测的自动化与可视化

2025-07-21 11:14:19 1235

原创 Android性能分析中,如何分析Allocation Count指标来定位内存抖动?

是Memory Profiler中的关键指标,用于统计应用在运行时创建的对象数量。通过分析该指标,可以精准定位内存抖动的根源。建议结合Memory Profiler的其他指标(如内存曲线、GC频率)进行综合分析,以获得更全面的性能优化效果。Allocation Count表示。在Android性能分析中,

2025-07-21 11:07:03 635

原创 Android中内存抖动的定位及优化

建议结合Memory Profiler和Allocation Tracker进行问题定位,针对具体场景选择优化方案,最终通过性能测试验证效果。在Android开发中,内存抖动(Memory Churn)是导致应用卡顿甚至崩溃的常见性能问题。下面将详细介绍如何定位和优化内存抖动问题。,通过合理复用对象、优化数据结构和编码习惯,可以有效减少GC压力,提升应用性能。内存抖动的核心问题是。

2025-07-21 10:58:57 1070

原创 Android中ArrayLis与LinkedList有什么区别及其使用场景?

在Android开发里,ArrayList和LinkedList都继承自类且实现了List接口,不过它们的内部实现和适用场景存在明显差异。

2025-07-09 16:53:02 424

原创 谍战揭秘:吴站长发现余则成的真实身份了吗?

吴站长对余则成的态度始终介于“怀疑”与“利用”之间,他因功利心和贪念忽视了关键线索,而余则成则凭借智慧、隐忍和对时机的精准把握,成功掩盖了身份。《潜伏》的精妙之处正在于这种“敌我之间的心理博弈”,吴站长的“未发现”既是余则成潜伏能力的体现,也折射出国民党内部因腐败和内耗而导致的情报失灵。

2025-07-09 16:44:53 672

原创 历史回望:陈长捷被傅作义坑了吗?

陈长捷被傅作义坑了”的说法,更多是对历史事件的简单化解读,忽略了当时复杂的政治军事背景和历史发展的必然趋势。两人在平津战役中的不同选择,本质上是对历史潮流的不同回应:陈长捷坚守旧阵营而失败,傅作义顺应时代而走向新生。评价历史人物应置于具体的历史语境中,客观认识个人行为与历史大势的关系,而非陷入主观臆断的恩怨解读。

2025-07-09 14:47:18 810

原创 Android设计模式之工厂模式与使用场景

在Android开发中,工厂模式是一种创建型设计模式,它将对象的创建和使用分离,通过工厂类来负责创建对象。这种模式可以提高代码的可维护性和可扩展性,尤其适合复杂对象的创建过程。下面详细介绍工厂模式的类型、实现和典型应用场景。通过合理使用工厂模式,可以提高代码的可维护性、可扩展性和可测试性。在实际开发中,需根据对象复杂度和变化频率选择合适的工厂模式实现。

2025-07-07 14:55:47 772

原创 详细解释一下在Android中如何实现动态代理

创建代理对象,而不需要像静态代理那样为每个目标类手动编写代理类。下面详细解释其实现原理、步骤和典型应用场景。在Android中,动态代理是一种强大的设计模式,它允许在。通过合理使用动态代理,可以大幅提高代码的可维护性和扩展性。动态代理在Android中的核心优势是。,无需修改原有代码。动态代理基于Java的。

2025-07-07 14:53:14 509

原创 Android设计模式之代理模式与使用场景

在Android开发中,代理模式是一种常用的结构型设计模式,它允许通过代理对象控制对另一个对象(即目标对象)的访问。下面详细介绍代理模式及其在Android中的典型应用场景。通过合理使用代理模式,可以提高代码的可维护性和可扩展性,同时遵循单一职责原则。:通过代理对象间接访问目标对象,代理可以增强或控制对目标对象的访问。

2025-07-07 14:50:42 965

原创 Android设计模式之建造者模式与典型应用

摘要:Android开发中,建造者模式通过分离复杂对象的构建与表示,优化多参数对象的创建过程。核心角色包括产品、抽象建造者、具体建造者和指挥者。实现方式分为传统建造者模式(如User.Builder)和简化版(Kotlin默认参数),典型应用包括AlertDialog.Builder等。该模式提升代码可读性、支持参数校验,但会增加代码量。适用于参数复杂的场景,简单对象可能适得其反。注意事项包括Builder类的位置选择和build()时的参数校验。

2025-07-04 18:57:33 1072

原创 Android设计模式之观察者模式与典型应用

Android开发中广泛使用观察者模式实现对象间的一对多依赖关系,当被观察者状态变化时自动通知所有观察者。该模式包含被观察者、观察者、具体被观察者和具体观察者四个核心角色。Android提供了原生Observable/Observer实现,也存在于ListView适配器、广播接收等框架组件中。开发者可自定义实现,但需注意内存泄漏、线程安全和按需通知等问题。观察者模式能有效解耦对象,但过多观察者可能影响性能。Kotlin中更推荐通过自定义接口灵活实现该模式。

2025-07-04 18:54:24 998

空空如也

空空如也

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

TA关注的人

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