- 博客(352)
- 资源 (17)
- 收藏
- 关注
原创 仓颉编程语言中的Collection类型详解
仓颉编程语言的Collection类型提供了高效的数据集合管理工具,主要包括三类核心数据结构:ArrayList(基于数组的动态列表)、HashSet(基于哈希表的无序集合)和HashMap(键值对映射)。这些集合类型具有类型安全、高性能和统一的API设计等特点,分别适用于不同场景:ArrayList适合随机访问,HashSet用于快速查找和去重,HashMap则用于键值存储。此外,Iterable接口为集合提供了标准迭代能力,Collections工具类则包含常用算法操作。开发者应根据元素唯一性、访问模式
2025-08-22 11:40:15
730
原创 仓颉编程语言中的扩展机制详解
仓颉编程语言的扩展机制允许在不修改原始类型定义的情况下为现有类型添加功能。扩展分为直接扩展和接口扩展两类:直接扩展可添加成员函数和属性,但不能访问私有成员;接口扩展则使类型实现新接口。扩展遵循严格的访问规则,包括孤儿规则(禁止定义不相关的接口扩展)和可见性规则。最佳实践建议合理使用扩展来增强第三方库功能或分离关注点,但避免滥用导致命名冲突或代码分散。扩展机制提供了灵活的类型功能增强方式,同时确保类型安全性和代码可维护性。
2025-08-22 11:39:37
213
原创 仓颉编程语言中的泛型类型系统:泛型结构体、泛型枚举、泛型类型的子类型关系
摘要:仓颉编程语言的泛型系统支持结构体、枚举等参数化类型。泛型结构体通过类型参数实现数据复用,是值类型且不支持继承。Option<T>枚举用于安全处理可能为空的值。泛型类型默认不型变,确保类型安全,仅内建类型如元组和函数具有特定型变规则。泛型约束通过where子句限制类型参数能力。该系统在保证安全性的同时提供了灵活的抽象能力。
2025-08-21 10:43:18
599
原创 仓颉语言中的泛型系统:概述、函数、接口与类
《仓颉语言泛型系统解析》摘要:仓颉语言通过参数化类型实现强大的泛型编程能力,支持在函数、类、接口、结构体和枚举中应用泛型。系统包含类型形参、变元和实参三个核心概念,通过where子句实现类型约束。特性包括:全局/局部泛型函数、泛型接口继承、类静态成员限制、枚举泛型应用等。最佳实践建议合理命名、适度约束,并利用类型推导和反射等高级特性。该系统在保证类型安全的同时提供高度抽象能力,是构建复用代码库的关键工具。
2025-08-21 10:42:32
338
原创 仓颉语言中的子类型关系与类型转换机制
仓颉语言的类型系统采用严格的子类型关系,通过继承、接口实现等方式建立类型兼容性规则。系统支持元组的协变、函数的逆变/协变,预设自反性、底类型等基础关系。泛型采用不变规则,内建类型有特殊型变处理。类型转换需显式操作,提供is/as运行时检查。C互操作通过精确类型映射实现。系统还包含This类型、单继承限制等特性,在保持类型安全的同时支持灵活编程。开发者需掌握子类型规则和转换机制,特别是泛型不变性和函数型变特性,以构建高效可靠的程序。
2025-08-20 11:45:30
833
原创 仓颉语言中的泛型系统:概述、函数、接口与类
本文概述了仓颉语言中的泛型系统,包括其核心概念和实现方式。泛型通过参数化类型实现代码复用与类型安全,支持在函数、类、接口、结构体和枚举中使用。关键特性包括类型形参/实参、类型构造器、泛型约束(where子句)以及静态成员限制等。文章详细介绍了泛型在不同场景下的应用(如容器类型、接口继承等)和最佳实践(命名规范、约束设计等),并指出泛型系统提供了强大的抽象能力,平衡了灵活性与安全性,是构建高效代码库的关键。
2025-08-20 11:42:50
907
原创 仓颉语言中的子类型关系与类型转换机制
《仓颉语言类型系统解析》摘要(150字): 仓颉语言构建了严谨的类型系统,核心基于子类型关系实现类型安全。系统通过继承/接口实现建立基本子类型,元组协变与函数型变(参数逆变、返回协变)确保复合类型安全。泛型采用不变性规则,内建类型保留特殊型变。显式转换机制(is/as操作符)和严格的C互操作类型映射保障运行时安全。高级特性包括This类型、单继承限制等,整体在静态安全与灵活性间取得平衡,特别适合系统级开发。开发者需重点掌握子类型规则、泛型不变性及显式转换规范。
2025-08-20 11:42:17
421
原创 仓颉语言中的类、接口与属性
仓颉编程语言的面向对象特性解析:文章系统介绍了仓颉语言中类(class)、接口(interface)和属性(property)三大面向对象核心概念。类作为引用类型支持继承和多态,通过构造函数和成员变量定义对象蓝图;接口定义抽象行为,支持多继承和默认实现;属性则通过getter/setter封装数据访问。文章详细阐述了各特性的定义语法、使用方法和应用场景,并提供了最佳实践建议,如遵循SOLID原则、组合优于继承等。这些特性共同构成了仓颉语言实现模块化、可复用代码的基础设施。
2025-08-19 17:37:38
854
原创 仓颉编程语言中的模式匹配与match表达式详解
模式匹配是仓颉语言中一种强大的控制流结构,它允许开发者根据数据的形状或内容来分支代码执行路径。与传统基于值的条件分支(如if-else)不同,模式匹配能够同时检查数据的类型和结构。模式匹配提供结构化数据解构能力支持多种模式类型与枚举完美配合使代码更简洁安全区分可反驳与不可反驳模式保证模式匹配的严谨性指导正确的模式使用场景match表达式替代复杂的条件逻辑支持守卫条件和嵌套模式编译器保证穷尽性检查性能经过优化优先使用模式匹配处理复杂条件合理利用编译器检查保证完整性。
2025-08-19 17:36:17
952
原创 仓颉编程语言中的枚举类型与Option类型详解
仓颉编程语言的枚举类型(enum)是一种代数数据类型,用于表示类型所有可能取值。枚举通过enum关键字定义,包含多个构造器,支持参数传递和模式匹配。Option类型是标准库中的泛型枚举,用于处理值存在(Some)或不存在(None)的情况,避免空指针异常。枚举与模式匹配结合使用能实现类型安全的错误处理、状态机等功能。设计时应遵循语义明确、变体正交等原则。枚举和Option类型构成了仓颉类型系统的核心特性,能显著提升代码的健壮性和可维护性。
2025-08-18 20:22:24
1022
原创 仓颉编程语言中的结构类型(struct)与mut函数详解
摘要:仓颉编程语言中的结构类型(struct)是值类型的复合数据类型,具有拷贝语义和栈分配特性,适用于组织相关数据。struct通过成员变量、构造函数和成员函数构建,特别强调使用mut函数显式管理状态修改。mut函数需通过可变变量调用,确保线程安全与代码清晰性。与class相比,struct无继承支持但更轻量安全。设计时应遵循最小化可变原则,结合值对象模式等优化性能。struct与mut函数的结合使仓颉在函数式安全与必要状态管理间取得平衡,适合构建高效可靠的值对象。(149字)
2025-08-18 20:21:39
883
原创 仓颉语言函数调用语法糖与操作符重载详解
本文详细介绍了仓颉语言的函数调用语法糖与操作符重载特性。主要内容包括:1)三种函数调用语法糖(尾随Lambda、Flow表达式和变长参数)的使用方法及适用场景;2)操作符重载的基本概念与实现方式,涵盖算术、比较、下标访问等常见操作符;3)操作符重载的最佳实践与注意事项。这些特性能显著提升代码表达力,支持DSL构建,但需注意语义一致性和性能影响。通过合理运用这些功能,开发者可以编写更简洁、直观且高效的仓颉代码。
2025-08-17 14:28:26
687
原创 仓颉语言中的Lambda表达式与闭包
在仓颉编程语言中,Lambda表达式是一种简洁的匿名函数表示方法,能够显著减少代码冗余并提高开发效率。。其中=>之前为参数列表,多个参数之间使用逗号分隔;=>之后为Lambda表达式体,可以包含一组表达式或声明序列。
2025-08-17 14:27:44
1109
原创 仓颉编程语言函数类型与嵌套函数深度解析
仓颉语言的函数编程特性解析 本文系统介绍了仓颉语言中作为一等公民的函数类型及其应用。主要内容包括:1)函数类型的定义与特性,支持类型安全、泛型和组合;2)函数子类型系统的逆变协变规则;3)嵌套函数的定义规则、作用域和闭包机制;4)高阶函数与嵌套函数的结合应用;5)性能优化策略与典型应用场景。文章强调通过合理使用函数类型和嵌套函数,可以实现类型安全的高阶抽象、优雅的状态封装和逻辑组织,同时需要注意避免常见陷阱如意外捕获和内存泄漏。
2025-08-16 17:15:48
820
原创 仓颉编程语言函数机制详解--函数定义和函数调用
《仓颉语言函数定义与调用详解》摘要:本文系统介绍了仓颉语言的函数机制,包括基础语法、参数处理(默认/可变/命名参数)、返回值(单/多值/隐式返回)、调用方式(标准/命名/操作符调用)等核心概念。重点分析了高阶函数、函数重载、特殊函数类型(扩展/操作符/内联)等高级特性,并提供了函数设计原则(单一职责、明确命名)和性能优化建议(尾递归、内联)。仓颉通过强类型系统和丰富的函数特性,支持函数式编程范式,同时保持代码的安全性和可维护性。
2025-08-16 17:14:53
1032
原创 仓颉编程语言复合数据类型(下)
本文介绍了仓颉编程语言中的复合数据类型:1. 元组(Tuple)是固定长度、不可变的异构数据集合,适用于多返回值、临时数据组合等场景;2. 数组(Array)是同类型元素的可变集合,支持动态扩容和高效随机访问;3. 区间(Range)表示数值序列,用于循环和切片操作;4. Unit类型表示无意义值,用于无返回值的操作;5. Nothing类型表示永远不会正常返回的计算。文章详细说明了各类型的特点、定义方式、操作方法及适用场景,并提供了类型选择指南和最佳实践建议,帮助开发者根据数据特性合理选择数据类型。
2025-08-15 09:49:49
664
原创 仓颉编程语言基础数据类型详解(上)
摘要:仓颉编程语言提供了一套完整的基础数据类型系统,包括整数(8-64位有/无符号)、浮点数(16-64位)、布尔型、字符(Unicode支持)和字符串(UTF-8编码)。各类型具有严格的操作规范,整数运算需显式类型转换,浮点数遵循IEEE754标准并提供精度控制,字符支持全Unicode集,字符串不可变且最大支持4GB。语言特性强调类型安全,操作符系统涵盖算术、关系、逻辑和位运算,并采用显式类型转换策略。
2025-08-15 09:48:49
600
原创 仓颉的基本概念:标识符、程序结构、表达式和函数
本文系统介绍了仓颉编程语言的基础概念,包括标识符系统、程序结构、表达式系统、函数定义等核心内容。仓颉的标识符支持Unicode字符,采用NFC规范化处理,并提供了原始标识符语法。程序组织采用模块化设计,基于包和导入机制。表达式系统类型安全,支持多种运算符和特殊表达式。函数作为一等公民,支持高阶函数、重载等特性。此外还介绍了控制结构、变量声明等基础语法。仓颉语言通过精巧的设计平衡了开发效率和运行性能,为开发者提供了简洁而强大的编程体验。
2025-08-14 11:51:22
1091
原创 仓颉-认识仓颉语言(开篇)
摘要: 仓颉编程语言(HarmonyOS NEXT)作为面向全场景开发的现代语言,融合高效编程、安全可靠、轻松并发和卓越性能四大特性。其多后端架构(CJNative/CJVM)兼顾性能与跨平台需求,简洁语法(插值字符串、模式匹配等)提升开发效率,静态类型系统与自动内存管理保障安全性。支持函数式、面向对象和命令式多范式编程,提供轻量级线程模型和Future/Promise简化并发。宏系统与DSL支持增强元编程能力,标准库与CJPM包管理完善工具链
2025-08-14 11:22:16
940
原创 如何申请软著,需要准备哪些材料?
中国版权保护中心软件著作权申请流程指南:需实名注册账号后,选择"计算机软件著作权登记申请",填写软件信息时需注意名称后缀必须包含"软件/系统/平台"。申请材料包括软件源程序前30页和后30页(每页50行以上)及文档材料(如用户手册)。填写开发环境、技术特点等信息有严格字数限制。提交后需打印签章页上传,审批周期约1.5-2个月,需每日查看进度及时补正。特别注意软件名称格式、材料一致性等常见驳回点。
2025-07-26 15:45:48
780
原创 鸿蒙-DevEco插件:Json字符串转ArkTS对象,并且生成解析、拷贝方法
摘要: JsonToArkTs是一款针对鸿蒙应用开发的IDEA插件,旨在简化ArkTS状态管理V2中@ObservedV2和@Trace装饰器的代码生成工作。通过解析JSON数据结构,插件自动生成包含@Trace注解的TypeScript类,支持可空属性与默认值两种模式,并可选择生成fromJSON和fromObject解析方法。该插件能处理嵌套对象和列表属性合并,但不支持混合类型的数组项。用户需手动下载JAR包安装,通过Generate菜单操作,提供JSON格式化、代码生成等功能,有效提升鸿蒙应用开发效率
2025-07-05 17:28:37
1050
原创 Android上使用无障碍服务(AccessibilityService)完成一键拨打微信视频电话
摘要:本文介绍了如何利用Android的无障碍服务(AccessibilityService)实现智能辅助功能,如简化视频通话操作。通过继承AccessibilityService并配置相应参数(如监听窗口变化、设置反馈类型等),开发者可以获取页面控件信息并模拟点击操作。文章详细讲解了服务注册、配置文件属性(包括事件类型、包名过滤、手势操作等)及代码实现要点,强调应合法使用该技术为视障用户等特殊群体开发便捷工具,而非用于违法用途。核心是通过系统回调获取界面节点,实现自动化交互功能。
2025-07-02 12:06:58
1384
原创 kotlin中的内联函数:inline,noinline,crossinline,参数内联,非局部返回
Kotlin中的inline、noinline和crossinline关键字详解: inline关键字用于函数内联,将函数体直接复制到调用处,减少函数调用开销,允许lambda参数非局部返回。适用于高阶函数以减少对象创建,但会增加代码体积。 noinline关键字标记不被内联的lambda参数,用于需要保留函数对象的情况(如作为返回值或传递给非inline函数)。当inline函数的参数需要作为对象使用时必须添加。 crossinline关键字确保lambda参数不会非局部返回,防止lambda中的retu
2025-07-02 11:45:30
730
原创 kotlin中的Unit和Nothing 关键字
Kotlin的类型系统以Any为根类型,所有非空类型都是Any的子类。可空类型(如String?)通过"?"表示,在类型层次上可视为非空类型的父类。Unit是类似Java void的返回类型,但作为真实存在的单例对象,实现了类型一致性。Nothing表示永不返回的类型,用于异常函数和泛型空白填充。类型继承关系支持多继承,并通过子类型/父类型检查确保类型安全。这些特性共同构成了Kotlin强大的类型系统,既保持了严谨性又提供了灵活性。
2025-07-01 12:03:09
1075
原创 kotlin中的 object 关键字:kotlin单例,kotlin静态方法,kotlin伴生对象,伴生对象,companion
Kotlin中的object关键字有两种主要用法:对象表达式和对象声明。对象表达式用于创建匿名类(一次性使用),支持继承类和实现接口,常用于局部作用域;对象声明则用于实现单例模式(全局唯一实例),可以嵌套在其他类或对象中。此外,data object简化了单例对象的打印和比较,而companion object(伴生对象)替代了静态成员,可通过@JvmStatic生成真正的静态方法。两者的核心区别在于作用域与生命周期:对象表达式是临时的,对象声明是持久的单例。
2025-07-01 11:55:47
737
原创 kotlin委托:,委托属性,属性委托,委托类,Delegation,Delegated properties
Kotlin中的by关键字用于实现委托模式,主要分为两类:类/接口委托和属性委托。类委托通过by将接口实现委托给另一个对象,减少模板代码。属性委托则通过by将属性的读写操作委托给其他对象,支持多种标准委托方式: 属性转发:将属性委托给另一个属性,常用于字段重命名 懒加载:使用lazy实现首次访问时才初始化的特性 可观察属性:通过Delegates.observable监听属性变化 可否决变更:使用Delegates.vetoable拦截并决定是否接受新值 相比Java的手动委托,Kotlin的委托模式更简洁
2025-06-30 18:31:45
848
原创 kotlin 泛型,逆变,Covariant,协变,Variance,使用处型变,声明处型变,星投影,Star-Projections
泛型中涉及到的概念也不少,型变(Variance)、逆变(Contravariance)、协变(Covariance)、不变(Invariant).在 kotlin 中还有三个关键字inoutwherereified等,在java中同样也有?extends?super?这些概念是啥意思嘞?引用点概念说明型变(Variance)、协变(Covariance)、逆变(Contravariance)和不变(Invariant)是相关但不同的概念.
2025-06-30 18:30:22
1012
原创 kotlin作用域函数:run、let、also、apply、with
Kotlin作用域函数指南:let、run、with、apply和also的区别与应用 Kotlin提供了五种作用域函数(let、run、with、apply、also),它们都能在对象上下文中执行代码块,但各有特点: let和also使用it引用对象,let返回lambda结果,also返回对象本身 run和with使用this引用对象,run返回lambda结果,with是非扩展函数 apply使用this引用对象并返回对象本身 适用场景: let:处理非空对象或局部变量引入 apply:对象配置(属性
2025-06-29 09:55:57
1130
原创 Kotlin中的函数类型及Lambda表达式:SAM转换,带接收者的函数类型,匿名函数
Kotlin中的高阶函数与函数类型是函数式编程的重要概念。高阶函数指接受或返回函数的函数,是Kotlin协程和框架的基础。函数类型通过参数和返回值类型描述函数,如(String)->Unit表示接受String返回Unit的函数。带接收者的函数类型(如String.()->Unit)允许直接访问接收者对象的成员,与扩展函数类似但使用场景不同。函数实例化可通过Lambda、匿名函数或函数引用实现。带与不带接收者的函数类型可以互相转换,接收者相当于第一个参数。这些概念包括高阶函数、扩展函数、Lamb
2025-06-29 09:54:16
1021
原创 Kotlin中的函数类型及扩展函数介绍:扩展函数,扩展属性,函数接收者,带有接收者的函数类型
本文介绍了Kotlin中的扩展功能,包括扩展函数和扩展属性的使用方法。通过示例代码展示了如何为String类型添加新的方法和属性,并探讨了扩展的作用域限制、Java调用方式以及扩展函数的引用问题。作者通过反编译字节码揭示了Kotlin扩展在Java层面的实现原理(静态方法),并指出扩展不能被继承类覆写的特性。最后总结了扩展的学习要点,并列出了后续待学习的内容清单(Lambda表达式、函数类型、关键字等)。文章以实践为导向,结合代码示例和底层实现分析,帮助读者深入理解Kotlin扩展机制。
2025-06-27 18:26:23
1055
原创 Retrofit流程分析:Retrofit如何创建对象,Retrofit发送请求流程
本文介绍了在Kotlin协程中使用Retrofit时如何配置自定义CallAdapter处理错误。首先需要搭建开发环境并下载Retrofit 2.11.0源码,重点关注Retrofit.Builder的配置过程,包括设置OkHttpClient、baseUrl、序列化转换器、回调执行器等。文章详细解析了build()方法的实现逻辑,包括默认值设置和工厂类添加顺序。最后通过GitHub API示例展示了如何定义网络请求接口并创建服务实例。这些配置方法为后续实现自定义CallAdapter处理协程异常奠定了基础
2025-06-27 18:22:46
653
原创 在kotlin协程中使用自定义CallAdapter处理错误
摘要 本文介绍如何在Kotlin项目中使用Retrofit 2.11.0配合协程进行网络请求。主要内容包括: 添加Retrofit和Gson转换器依赖 基础API接口声明和同步调用方式 协程支持改造:使用suspend函数直接返回数据对象 错误处理方案:通过try-catch或runCatching处理异常 针对特殊业务场景的自定义CallAdapter方案 定义NetworkResponse密封类区分成功、网络错误和其他异常状态 文章还讨论了如何处理历史遗留项目中HTTP状态码与业务逻辑混合的特殊情况,并
2025-06-26 10:20:43
1278
原创 riverpod2中的修饰符及注解:监听、观察、选择、记录、重建
Riverpod状态管理中的ref.read与ref.watch区别:watch用于监听变化并重建Widget,read仅用于读取值;select可监听对象特定属性变化;listen响应变化执行回调;autoDispose修饰符使Provider无监听时自动销毁;keepAlive可实现缓存功能。此外,ProviderObserver可用于全局日志记录。这些功能使Riverpod能灵活应对不同状态管理场景。(149字)
2025-06-26 10:16:56
1033
原创 flutter状态管理框架riverpod2.x中的各种Provider简介
Riverpod是Flutter新一代状态管理工具,由Provider重构而来,解决了Provider依赖Widget树的问题。通过全局声明Provider实现编译时安全,无需担心ProviderNotFoundException。安装简单,只需添加flutter_riverpod依赖并在入口包裹ProviderScope。使用方式多样:可继承ConsumerWidget获取WidgetRef读取数据,通过Consumer局部更新UI,或使用ConsumerStatefulWidget替代StatefulW
2025-06-24 10:01:22
972
原创 Android使用Protocol Buffer与服务端交互:编译器和 proto 文件
Protocol Buffer是一种高效的数据交换格式,相比JSON/XML具有体积小、跨平台等优势。本文介绍了其使用流程:1)安装protoc编译器;2)编写.proto文件定义数据结构;3)编译生成目标语言代码;4)项目中引入依赖库进行序列化/反序列化操作。文章还展示了Java实现示例,包括构建消息对象、网络传输,以及使用protostuff库直接处理POJO的方法。这种二进制格式虽然性能优越,但需要事先约定数据结构,且数据不可直接阅读。
2025-06-24 09:55:32
329
原创 flutter中的那些Key:GlobalKey,LocalKey,UniqueKey,ObjectKey,ValueKey,在 diff 算法中是如何起作用的。
文章摘要: 本文通过Dart代码示例演示了Flutter中Widget状态管理的差异,分析了导致界面未更新的原因。作者展示了三种解决方案:改用StatelessWidget、添加UniqueKey或将状态提升到父Widget。核心问题在于Element树的复用机制 - 当Widget交换时,对应的Element并未交换,而State却被保留。文章还引用了Flutter源码中的updateChildren方法,说明框架如何通过Widget.canUpdate和Key来决定Element的复用策略。该案例清晰地
2025-06-23 15:25:41
616
原创 flutter中的StatefulWidget 是如何创建又是如何更新的?
本文分析了Flutter中StatefulWidget的生命周期和状态更新机制。关键点包括: createState()在StatefulElement构造函数中被调用,建立State与Element的双向引用; 生命周期方法调用顺序:initState()→didChangeDependencies()→build(),通过_firstBuild()触发; 状态更新机制:setState()内部调用markNeedsBuild()标记脏元素,最终由WidgetsBinding调度重绘; 建议在setSta
2025-06-23 15:23:39
927
原创 flutter:从runApp到挂载根节点
Flutter应用启动流程分析 入口与初始化:Flutter应用通过runApp()启动,调用WidgetsFlutterBinding.ensureInitialized()初始化绑定系统,该对象混入了7个关键Binding类(如手势、渲染、调度等)。 根Widget挂载: 通过attachRootWidget()将传入的Widget绑定到渲染树 使用RenderObjectToWidgetAdapter作为桥梁连接Widget和RenderObject 在attachToRenderTree()中创建根
2025-06-22 15:51:47
913
原创 使用OkHttp拦截器进行Android慢网络及页面监控
Android应用监控方案:实现慢网络请求与页面生命周期监控 摘要:本文介绍了Android应用监控的两个核心功能实现方案。对于慢网络请求监控,通过分析OkHttp源码,在OkHttpClient构建时添加EventListener来捕获请求各阶段时间点,超过阈值时实时上报。页面打开关闭行为监控则通过在Application中注册ActivityLifecycleCallbacks实现,利用IdleHandler在UI空闲时进行本地存储。存储方案采用mmap技术实现高效文件写入,失败时降级为传统IO方式。两
2025-06-22 15:50:26
1171
jstl.jarANDstanderd.jar
2015-03-01
ajax_读取服务器文件内容.js
2014-11-19
代码格式化工具
2014-05-18
TranslatePlugin
2016-07-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人