自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 浅析鸿蒙的GC垃圾回收

本文介绍了GC(垃圾回收)算法的基本原理和实现方式,重点分析了ArkTS运行时采用的HPP GC机制。主要内容包括:1)GC的两种基本类型(引用计数和对象追踪)及其优缺点;2)对象追踪算法的三种实现方式(标记-清扫、标记-复制、标记-整理);3)HPP GC的分代模型设计、混合算法策略和流程优化;4)Heap内存结构及各空间功能;5)HPP GC的三种类型(Young GC、Old GC、Full GC)及其触发策略。HPP GC通过分代管理、混合回收算法和并发优化,在内存回收效率和性能影响之间取得了平衡。

2025-11-26 18:18:20 946

原创 状态管理V2装饰器大合集

摘要:本文介绍了ArkUI中的状态管理V2新特性,重点分析了@ObservedV2和@Trace装饰器的功能及使用场景。这两种装饰器配合使用可实现类属性的深度观测,支持嵌套类和继承类中的属性变化监测,相比V1版本通过@ObjectLink的复杂实现,显著提升了开发效率。同时阐述了@ComponentV2装饰器和@Local装饰器的特性,前者用于定义新版自定义组件,后者替代@State实现组件内部状态管理。文章还对比了V1和V2版本在嵌套类观测、组件状态管理等方面的差异,指出了V2版本的优势和使用限制条件。

2025-11-16 22:36:43 1028

原创 ArkUI框架渲染流程

在使用ArkUI开发中,我们通过布局组件和基础组件进行界面描述,这些描述会呈现出一个组件树的结构,基础组件在其中为叶子结点,布局组件则是中间节点,可以把这棵树称之为应用组件树。当用户执行交互(滑动,点击等行为)时会触发界面修改,界面的修改本质上是通过触发这棵组件树的重新渲染,来实现应用界面更新的过程。。

2025-11-05 16:35:18 968

原创 【HarmonyOS】通知的基本操作

应用需要获取用户授权才能发送通知。在通知发布前调用requestEnableNotification()接口,弹窗让用户选择是否允许发送通知。当用户拒绝授权后,将无法通过该接口再次拉起弹窗。如果应用需要向用户再次申请通知授权,则可以使用openNotificationSettings接口拉起通知管理半模态弹窗。导入NotificationManager模块。拉起通知弹窗,向用户请求通知授权。可通过requestEnableNotification的错误码判断用户是否授权。

2025-10-29 18:40:23 771

原创 Sendable装饰器的使用

Sendable对象是符合ArkTS语言规范的可共享对象,需通过@Sendable装饰器标记,并且满足Sendable约束。@Sendable装饰器Sendable类必须继承自Sendable类非Sendable类禁止实现Sendable接口Sendable类/接口成员变量:不支持使用!断言、不支持使用计算属性名。

2025-10-19 23:08:07 691

原创 常见线程间通信场景

实现子线程需要执行的任务。${1${2${3${4${5${6使用TaskPool的execute方法执行任务,加载图片。

2025-10-15 18:18:52 266

原创 动态加载&延迟加载

可以使用动态import代替。使用少加载时并不存在,需要异步获取需要动态构建模块说明符时,应使用动态import。静态import仅支持静态说明符动态import在业务上除了能实现条件延迟加载,还可以实现部分反射功能。实例如下,HAP动态import HAR包harlibrary,并调用类Calc的静态成员函数staticAdd()、成员函数instanceAdd(),以及全局方法addHarLibrary()。

2025-09-22 22:20:23 866

原创 HMRouter基本使用

HMRouter依赖系统Navigation能力,所以必须在页面中定义一个容器@Entry@Componentbuild() {// @Entry中需要再套一层容器组件,Column或者StackColumn(){// 使用HMNavigation容器options: {})Navigation的系统属性通过modifier传递,部分modifier不支持的属性使用options设置使用标签定义拦截器,并实现接口${} }} }} }${} }} }${} }

2025-09-16 22:09:18 616

原创 经典设计模式:单例模式、工厂模式

每增加新产品,只需增加该产品以及对应的具体实现工厂类,由具体工厂类决定要实例化的产品是哪个,

2025-09-07 23:06:14 1043

原创 闭包的简单讲解

可以这样理解,通过将add函数赋值给getCount这个变量,可以看作如下代码每当调用getCount()函数的时候,首先要获取count变量,因为JavaScript中存在作用域链的关系,所以会从add函数下得到对应的count,因为闭包存在着的特性所以上次的变量会被保留下来,所以可以做到自增的实现。

2025-09-01 22:51:23 779

原创 MVVM——ArkUI的UI开发模式

(获取、存储、更新等),以及业务逻辑处理。

2025-08-02 18:04:53 1006

原创 ArkTS懒加载LazyForEach的基本使用

在 ArkTS 的开发中,如果你要渲染一个很长的列表,比如商品列表、评论列表或者朋友圈动态,用传统的循环结构(比如ForEach)很容易导致性能问题,尤其是加载慢、卡顿甚至内存暴涨。这时候就要用到。是 ArkTS 提供的一种。只有当列表项真正要被显示在屏幕上时,相关组件才会被创建和渲染,从而节省内存和提升性能。可以把它理解成 ArkTS 中的“虚拟滚动列表”。

2025-07-29 13:49:59 1163

原创 组件内的状态管理装饰器

实现更精细的状态管理。仅@Observed/@ObjectLink可以观察。

2025-07-20 08:46:15 993

原创 TCP、UDP常见方法与事件

事件的监听器,它会在每次有新客户端连接时触发。,所有数据传输完成,套接字资源已释放。:收到客户端/服务器发送的数据时。监听 Socket 状态变化。类型),接收到的数据。(无法再接收数据),但。(可继续发送数据)。如多播、广播相关事件。

2025-06-15 18:20:25 715

原创 六大设计原则:TS 代码示例详解

软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。即在不修改原有代码的基础上,通过添加新代码来实现功能扩展。所有引用基类(父类)的地方必须能透明地使用其子类的对象,且程序的行为不会发生改变。高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象。客户端不应该被迫依赖它不使用的接口,一个接口应该尽量细化,只包含客户端真正需要的方法。一个对象应该对其他对象有最少的了解,只与“直接朋友”进行通信,避免与“陌生人”产生不必要的交互。

2025-06-08 17:31:15 1004

原创 深入理解 TypeScript 中的异常处理

虽然内置异常能处理常见情况,但在复杂业务场景下,自定义异常类能更好地贴合需求,提升代码可读性和可维护性。通过继承Error类,开发者可创建专属异常类型。// 定义用户认证失败异常headers: {},});throw new AuthenticationFailedError(401, '用户名或密码错误');try {console.log(`认证失败(状态码${

2025-06-02 17:41:19 1024

原创 typescript常见内置类与方法

类型特点示例Array同类型元素,长度可变Tuple固定长度,不同类型Set唯一值集合,无序Map键值对映射,键唯一合理使用这些集合类型可以让代码更具类型安全性和可读性。注意避免元组越界、数组类型不匹配等常见错误,充分利用 TypeScript 的类型系统进行静态检查。Date是 JavaScript 中用于处理日期和时间的内置类,它可以精确到毫秒级别。通过Date类,我们可以完成日期格式化、时间计算、时区转换等操作。

2025-05-25 16:31:14 855

原创 TypeScript中的正则表达式

正则表达式是处理字符串的强大工具,在 TypeScript/JavaScript 中同样适用。本文将带你全面了解正则表达式在 TS 中的用法,包括基础语法、高级技巧和实际应用场景。

2025-05-18 18:08:02 2144

原创 抽象类与接口详解:TypeScript 和 Java

抽象类是不能被实例化的类,它用于作为其他类的基类(父类)。抽象类可以包含抽象方法(没有实现的方法)和具体方法(有实现的方法)。接口是一种完全抽象的结构,它定义了一组方法和属性的签名,但不提供实现。实现接口的类必须提供这些方法和属性的具体实现。抽象类用于代码复用和部分实现可以有具体方法和抽象方法单继承可以有构造函数和成员变量接口用于定义契约和多态只有方法签名(TypeScript)或可以有默认方法(Java)多实现/多继承更灵活,适合定义类型选择原则需要共享代码→ 抽象类需要多重继承/实现。

2025-05-11 17:18:19 860

原创 对比面向过程与面向对象

【代码】对比面向过程与面向对象。

2025-05-05 16:59:17 734

原创 常见排序算法(C语言)

桶排序是一种非比较型排序算法,它将待排序元素分到有限数量的"桶"中,然后对每个桶中的元素进行排序(可以使用其他排序算法或递归地使用桶排序),最后按顺序将各个桶中的元素依次取出。

2025-04-27 17:03:10 1728

原创 C语言学生管理系统随笔:细节优化与实践经验

20// 账号最大长度20// 密码最大长度100# define MAXSIZE_ACCOUNT 20 // 账号最大长度 # define MAXSIZE_PASSWORD 20 // 密码最大长度 # define MAX_STUDENTS 100 // 最大学生数集中管理常量,便于统一修改增强代码可读性修改时只需调整一处,降低出错风险。

2025-04-20 16:06:47 747

原创 内存管理:栈与堆

栈是一种由系统自动管理的连续内存区域,其分配和释放遵循严格的"后进先出"(LIFO)原则。存储函数调用上下文(包括返回地址、参数和局部变量)维护线程执行状态通过CPU寄存器(如x86的ESP/RSP)直接管理内存分配。

2025-04-17 14:58:17 2296

空空如也

空空如也

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

TA关注的人

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