- 探索仓颉语言中的泛型与类型关系在许多编程语言中,泛型是一项强大的功能,允许创建灵活且可重用的代码组件。在仓颉语言(Cangjie)中,泛型扮演着重要角色,使开发者能够定义类型安全的抽象。本文将深入探讨仓颉语言中的泛型概念,特别是泛型类型的子类型关系,以及如何利用这些关系来编写更为安全且高效的代码。 1. 泛型类型的子类型关系在仓颉语言中,泛型类型间也存在子类型关系。这意味着如果我们定义了一... 探索仓颉语言中的泛型与类型关系在许多编程语言中,泛型是一项强大的功能,允许创建灵活且可重用的代码组件。在仓颉语言(Cangjie)中,泛型扮演着重要角色,使开发者能够定义类型安全的抽象。本文将深入探讨仓颉语言中的泛型概念,特别是泛型类型的子类型关系,以及如何利用这些关系来编写更为安全且高效的代码。 1. 泛型类型的子类型关系在仓颉语言中,泛型类型间也存在子类型关系。这意味着如果我们定义了一...
- 仓颉语言扩展机制详解在现代编程语言中,扩展(Extensions)是一个强大且灵活的工具,允许我们在不破坏原有类型封装性的前提下,为其添加新功能。仓颉语言通过扩展提供了一种优雅的方式来实现这一目标。本文将详细介绍仓颉语言的扩展机制,包括其语法、使用方法及注意事项。 什么是扩展?扩展是为现有类型(如类、结构体等)添加新功能的方法,而无需修改类型的定义。扩展可以添加成员函数、操作符重载函数、成... 仓颉语言扩展机制详解在现代编程语言中,扩展(Extensions)是一个强大且灵活的工具,允许我们在不破坏原有类型封装性的前提下,为其添加新功能。仓颉语言通过扩展提供了一种优雅的方式来实现这一目标。本文将详细介绍仓颉语言的扩展机制,包括其语法、使用方法及注意事项。 什么是扩展?扩展是为现有类型(如类、结构体等)添加新功能的方法,而无需修改类型的定义。扩展可以添加成员函数、操作符重载函数、成...
- 实战鸿蒙:实现一款权限请求框架 介绍在移动应用开发中,权限管理是一个关键部分。用户隐私和数据安全的重要性使得开发者需要谨慎处理应用对系统权限的请求。本文将介绍如何在华为鸿蒙操作系统(HarmonyOS)上实现一款简易的权限请求框架。 应用使用场景动态权限请求:在应用运行时根据需要动态请求权限,而不是在安装时一次性请求所有权限。统一权限管理:通过框架提供统一的接口来进行权限请求和检查,提升代... 实战鸿蒙:实现一款权限请求框架 介绍在移动应用开发中,权限管理是一个关键部分。用户隐私和数据安全的重要性使得开发者需要谨慎处理应用对系统权限的请求。本文将介绍如何在华为鸿蒙操作系统(HarmonyOS)上实现一款简易的权限请求框架。 应用使用场景动态权限请求:在应用运行时根据需要动态请求权限,而不是在安装时一次性请求所有权限。统一权限管理:通过框架提供统一的接口来进行权限请求和检查,提升代...
- 在现代编程中,泛型是一个非常重要的概念。它允许我们编写更具通用性和可重用性的代码,而不必在编写代码时确定具体的数据类型。本文将介绍仓颉编程语言中泛型类、泛型结构体与泛型枚举的定义和使用。 泛型类在仓颉编程语言中,泛型类可以使代码更具灵活性和可重用性。我们来看一个使用泛型类定义键值对的例子:public open class Node<K, V> where K <: Hashable & E... 在现代编程中,泛型是一个非常重要的概念。它允许我们编写更具通用性和可重用性的代码,而不必在编写代码时确定具体的数据类型。本文将介绍仓颉编程语言中泛型类、泛型结构体与泛型枚举的定义和使用。 泛型类在仓颉编程语言中,泛型类可以使代码更具灵活性和可重用性。我们来看一个使用泛型类定义键值对的例子:public open class Node<K, V> where K <: Hashable & E...
- 仓颉(Cangjie)语言是一种面向对象编程语言,提供了丰富的语法和特性来简化代码开发。今天我们将深入探讨仓颉语言中的属性(Properties)以及子类型关系(Subtyping)。理解这些概念将有助于你在实际项目中更加高效地编写和维护代码。 属性(Properties)属性提供了一个 getter 和一个可选的 setter 来间接获取和设置值。通过属性,我们可以实现访问控制、数据监控、... 仓颉(Cangjie)语言是一种面向对象编程语言,提供了丰富的语法和特性来简化代码开发。今天我们将深入探讨仓颉语言中的属性(Properties)以及子类型关系(Subtyping)。理解这些概念将有助于你在实际项目中更加高效地编写和维护代码。 属性(Properties)属性提供了一个 getter 和一个可选的 setter 来间接获取和设置值。通过属性,我们可以实现访问控制、数据监控、...
- 仓颉编程语言是一种面向全场景应用开发的通用编程语言,可以兼顾开发效率和运行性能,并提供良好的编程体验,主要具有如下特点:语法简明高效:仓颉编程语言提供了一系列简明高效的语法,旨在减少冗余书写、提升开发效率,例如插值字符串、主构造函数、Flow 表达式、match、if-let、while-let 和重导出等语法,让开发者可以用较少编码表达相关逻辑。多范式编程:仓颉编程语言支持函数式、命令式和... 仓颉编程语言是一种面向全场景应用开发的通用编程语言,可以兼顾开发效率和运行性能,并提供良好的编程体验,主要具有如下特点:语法简明高效:仓颉编程语言提供了一系列简明高效的语法,旨在减少冗余书写、提升开发效率,例如插值字符串、主构造函数、Flow 表达式、match、if-let、while-let 和重导出等语法,让开发者可以用较少编码表达相关逻辑。多范式编程:仓颉编程语言支持函数式、命令式和...
- 下载IDE华为鸿蒙开发官方推荐的IDE是: HUAWEI DevEco Studio在华为官网进行下载:https://developer.huawei.com/consumer/cn/deveco-studio/目前最新的版本是:DevEco Studio NEXT Developer Beta1发布日期:2024/06/21 创建应用下载后进行安装,安装完毕后需要重启系统方可生效。打开... 下载IDE华为鸿蒙开发官方推荐的IDE是: HUAWEI DevEco Studio在华为官网进行下载:https://developer.huawei.com/consumer/cn/deveco-studio/目前最新的版本是:DevEco Studio NEXT Developer Beta1发布日期:2024/06/21 创建应用下载后进行安装,安装完毕后需要重启系统方可生效。打开...
- 在前述文章鸿蒙网络编程系列11-使用HttpRequest上传文件到服务端示例中,使用基础的HttpRequest模块演示了如何上传文件到服务器,在鸿蒙网络编程系列12-使用Request部件下载文件到本地示例中,介绍了request部件,该部件提供了上传下载的方法,并且演示了如何使用该部件下载文件,本文将继续介绍该部件,同时演示如何使用该部件上传文件到服务器。 在前述文章鸿蒙网络编程系列11-使用HttpRequest上传文件到服务端示例中,使用基础的HttpRequest模块演示了如何上传文件到服务器,在鸿蒙网络编程系列12-使用Request部件下载文件到本地示例中,介绍了request部件,该部件提供了上传下载的方法,并且演示了如何使用该部件下载文件,本文将继续介绍该部件,同时演示如何使用该部件上传文件到服务器。
- 在前述文章中,使用基础的HttpRequest模块演示了如何下载文件到本地,整个下载过程看起来好像不太复杂,但是,如果考虑到可靠性、网络问题以及文件类型和大小的差异,开发难度还是相当大的,幸运的是,鸿蒙提供了专门用来进行上传下载的API,把这些复杂性都封装了起来,这就是本示例要使用的request部件。 在前述文章中,使用基础的HttpRequest模块演示了如何下载文件到本地,整个下载过程看起来好像不太复杂,但是,如果考虑到可靠性、网络问题以及文件类型和大小的差异,开发难度还是相当大的,幸运的是,鸿蒙提供了专门用来进行上传下载的API,把这些复杂性都封装了起来,这就是本示例要使用的request部件。
- 本文将模拟文件上传的功能,开发鸿蒙应用客户端把文件上传到服务端,为减少复杂性,假设上传的是文本类型的小文件,其他类型的或者更大的文件,也可以参考本文修改。 本文将模拟文件上传的功能,开发鸿蒙应用客户端把文件上传到服务端,为减少复杂性,假设上传的是文本类型的小文件,其他类型的或者更大的文件,也可以参考本文修改。
- 为演示HTTP模拟登录,假设我们有这样一个网站,访问该网站时如果没有登录,会被重定向到登录页面,如果成功登录后,会重定向到首页。 为演示HTTP模拟登录,假设我们有这样一个网站,访问该网站时如果没有登录,会被重定向到登录页面,如果成功登录后,会重定向到首页。
- 要实现双向的认证,就需要服务端在握手时提出客户端的数字证书认证需求,以ECDHE算法的握手过程为例,在第二次握手时,需要服务端发送Certificate Request消息给客户端,表明是双向认证的,在第三次握手时,客户端发送Certificate消息给服务端,其中就包含证书信息。 要实现双向的认证,就需要服务端在握手时提出客户端的数字证书认证需求,以ECDHE算法的握手过程为例,在第二次握手时,需要服务端发送Certificate Request消息给客户端,表明是双向认证的,在第三次握手时,客户端发送Certificate消息给服务端,其中就包含证书信息。
- 为演示TLS安全通讯单向认证的方式(即客户端认证服务端,客户端本身不提供证书),本示例实现了使用TLS协议发送、接收消息的功能。 为演示TLS安全通讯单向认证的方式(即客户端认证服务端,客户端本身不提供证书),本示例实现了使用TLS协议发送、接收消息的功能。
- 知道了数据粘包的原因,解决起来就有方向了,大体可以分为两种方案,一种是指定数据包结束标志,另外一种是通过固定包头指定包的长度,不过这两种方案都需要服务端配合才行,因为API 9版本的鸿蒙尚未支持TCP服务端,虽然更高的10、11支持了,但是我还没有这些版本的使用权限,暂时无法编写服务端程序,等以后开放了权限再补充编写粘包问题的解决方案示例吧。 知道了数据粘包的原因,解决起来就有方向了,大体可以分为两种方案,一种是指定数据包结束标志,另外一种是通过固定包头指定包的长度,不过这两种方案都需要服务端配合才行,因为API 9版本的鸿蒙尚未支持TCP服务端,虽然更高的10、11支持了,但是我还没有这些版本的使用权限,暂时无法编写服务端程序,等以后开放了权限再补充编写粘包问题的解决方案示例吧。
- 实际上,TCP连接重试时执行等待时间翻倍的规则,也就是连接失败后等待1秒钟重试,再失败等待2秒钟,然后依次是4秒钟、8秒钟、16秒钟、32秒钟,linux默认重试5次,也就是1+2+4+8+16+32=63秒钟,再加上其他耗费的时间,所以表现出来最大超时时间是65秒左右。 实际上,TCP连接重试时执行等待时间翻倍的规则,也就是连接失败后等待1秒钟重试,再失败等待2秒钟,然后依次是4秒钟、8秒钟、16秒钟、32秒钟,linux默认重试5次,也就是1+2+4+8+16+32=63秒钟,再加上其他耗费的时间,所以表现出来最大超时时间是65秒左右。
上滑加载中
推荐直播
-
GaussDB数据库介绍
2025/01/07 周二 16:00-18:00
Steven 华为云学堂技术讲师
本期直播将介绍GaussDB数据库的发展历程、优势、架构、关键特性和部署模式等,旨在帮助开发者了解GaussDB数据库,并通过手把手实验教大家如何在华为云部署GaussDB数据库和使用gsql连接GaussDB数据库。
去报名 -
DTT年度收官盛典:华为开发者空间大咖汇,共探云端开发创新
2025/01/08 周三 16:30-18:00
Yawei 华为云开发工具和效率首席专家 Edwin 华为开发者空间产品总监
数字化转型进程持续加速,驱动着技术革新发展,华为开发者空间如何巧妙整合鸿蒙、昇腾、鲲鹏等核心资源,打破平台间的壁垒,实现跨平台协同?在科技迅猛发展的今天,开发者们如何迅速把握机遇,实现高效、创新的技术突破?DTT 年度收官盛典,将与大家共同探索华为开发者空间的创新奥秘。
去报名
热门标签