- 博客(90)
- 资源 (1)
- 收藏
- 关注

原创 HarmonyOS鸿蒙多线程并发之TaskPool快速上手
对于刚接触多线程编程的新手来说,理解进程、线程、并发和并行等基础概念是至关重要的。在深入探讨多线程并发之前,让我们先统一这些基础概念的认识,为后续学习打下坚实的基础。
2025-07-28 13:34:02
970
2

原创 ArkUI 容器组件之线性布局Column、Row 秒懂
线性布局是开发中最常用的布局,通过线性容器Row和Column构建。其子元素在线性方向上(水平方向和垂直方向)依次排列。Column:容器内子元素按照垂直方向排列。Row:容器内子元素按照水平方向排列。线性布局在布局方向上的轴线称为主轴,Column主轴为垂直方向,Row主轴为水平方向。垂直于主轴方向的轴线称为交叉轴,Column交叉轴为水平方向,Row交叉轴为垂直方向。
2025-07-22 17:58:13
994
原创 ArkUI 基础布局之层叠布局Stack
层叠布局(Stack)是一种垂直叠加的布局方式,后添加的组件会覆盖在先前的组件上。通过alignContent参数可设置九种对齐方式,控制子组件相对位置。子组件默认按添加顺序堆叠,但可通过zIndex属性调整显示层级,数值越大显示越靠前。当后续子元素尺寸大于前面元素时,前面元素会被完全遮挡。代码示例展示了如何通过调整zIndex使被遮挡元素重新显示。
2025-08-03 20:58:59
159
原创 ArkUI 基础布局之弹性布局Flex
Flex弹性布局详解:支持Row/Column方向布局,可通过direction参数设置布局方向(Row/RowReverse/Column/ColumnReverse)。默认不折行,设置wrap:FlexWrap.Wrap可启用折行效果,并支持配置主轴/交叉轴间距。提供主轴(justifyContent)和交叉轴(alignContent)对齐方式设置,类似Row/Column布局。当子元素总宽度超过容器时,默认会挤压子元素,启用折行后可实现自动换行布局。适用于需要灵活控制子元素排列的场景。
2025-08-02 23:36:40
224
原创 ArkUI 相对布局全面解析
相对布局(RelativeContainer)允许子组件基于父组件或兄弟组件进行相对定位。子组件通过alignRules设置对齐规则,指定参考边线(6条边界线)、锚点(父容器__container__或兄弟组件id)和对齐方式。示例展示了在父容器四个角和中心放置组件,以及相对于兄弟组件定位的方法。当相对定位不精确时,可用offset设置偏移量进行微调。相对布局通过灵活的对齐规则实现精确的组件定位。
2025-08-01 20:48:14
307
原创 ArkUI 基础容器之线性布局Column和Row,图文并貌秒懂
本文介绍了线性布局的两种主要形式:水平布局(Row)和垂直布局(Column)。Row组件默认从左到右排列子元素,可通过direction属性设置方向;Column组件默认从上到下排列,支持reverse反转。两种布局都支持通过space参数设置子元素间距,并提供主轴(justifyContent)和交叉轴(alignItems)的对齐方式控制,分别支持6种和3种对齐选项。Row的主轴对齐控制水平方向,Column的主轴对齐控制垂直方向,交叉轴则相反。文章通过代码示例和效果图展示了不同参数设置下的布局效果。
2025-08-01 10:30:10
295
原创 ArkUI 通用属性之渐变、透明度、模糊、高亮、对比度、饱和度一网打尽
本文介绍了ArkUI框架中的视觉效果设置方法,主要包括透明度、颜色渐变和图像效果三类。透明度可通过opacity()方法设置,支持0-1范围值,子组件会继承并叠加父组件的透明度。颜色渐变分为线性渐变(linearGradient)、径向渐变(radialGradient)和角度渐变(sweepGradient),可自定义角度、方向、颜色和位置参数实现多种渐变效果。图像效果包含阴影(shadow)和模糊处理,背景模糊(backgroundBlurStyle)和前景模糊(foregroundBlurStyle)
2025-08-01 00:44:38
797
原创 ArkUI 通用属性之视觉效果透明度、渐变效等
本文介绍了两种UI视觉效果实现方法:透明度设置和颜色渐变。透明度可通过opacity()方法设置(0-1范围),子组件会继承父组件透明度并叠加计算。颜色渐变包含三种方式:线性渐变(linearGradient)支持角度/方向设置,径向渐变(radialGradient)支持中心点和半径配置,角度渐变(sweepGradient)可定义起止角度。每种渐变方式都需通过colors参数指定[颜色,位置]数组,并提供了具体代码示例和效果图示说明。
2025-07-30 17:16:38
387
原创 ArkUI 通用属性之位置设置
设置当前组件在父组件中的位置,参照点为父容器顶点位置。在布局容器中,设置该属性不影响父容器布局,仅在绘制时进行位置调整。如图所示,虚线处为Row()组件原本的位置,当设置后会脱离原来父组件的约束,采用决定定位参照父容器左顶点重新定位。10vp10vp。
2025-07-30 00:57:41
165
1
原创 ArkUI 通用属性之背景设置
背景设置包括背景颜色、背景图片、背景图片位置、背景图片大小相关设置。warning]当背景颜色、背景图片同时设置时,背景颜色位于底层。
2025-07-30 00:52:56
358
原创 ArkTS 线程通信共享对象
Transferable对象,也称为NativeBinding对象,是指绑定C++对象的JS对象,其主要功能由C++提供,JS对象壳则分配在虚拟机的本地堆(LocalHeap)中。普通对象跨线程时通过拷贝形式传递,两个线程的对象内容一致,但指向各自线程的隔离内存区间,被分配在各自线程的虚拟机本地堆(对象跨线程传输后,重新创建JS壳可桥接到C++对象上,但需移除原JS壳与C++对象的绑定关系。对象跨线程传输后,只需重新创建JS壳即可桥接到同一个C++对象上,实现C++对象的共享。
2025-07-28 17:07:49
676
原创 ArkTS 创建Worker线程与主线程通信
创建Worker的线程称为宿主线程(不局限于主线程,Worker线程也支持创建Worker子线程)。Worker子线程(或Actor线程、工作线程)是Worker自身运行的线程。每个Worker子线程和宿主线程拥有独立的实例,包含独立执行环境、对象、代码段等。因此,启动每个Worker存在一定的内存开销,需要限制Worker子线程的数量。Worker子线程和宿主线程通过消息传递机制通信,利用序列化机制完成命令和数据的交互。的主要作用是为应用程序提供一个多线程的运行环境,实现应用程序执行过程与宿主线程分离。
2025-07-28 16:57:46
229
原创 从 Promise 到 async/await 的终极指南、ArkTS、TS、JS异步任务全面解析
任务是完成某项操作要执行的一段代码,一个任务可以执行任何特定操作的代码,可能是简单的打印语句、复杂的算法处理、网络请求或 I/O 操作等。这些任务的执行时间各不相同,打印语句执行时间通常很短,而网络请求和 I/O 操作可能耗时较长。如果所有的任务按照顺序执行,耗时较长的任务可能会阻塞线程,导致整体性能下降,进而影响用户体验。为了更高效地管理和执行这些任务,JavaScript将要执行的任务分为同步任务和异步任务使得JavaScript能够在单线程环境中有效地处理耗时操作,而不阻塞主线程。
2025-07-28 00:06:58
768
1
原创 ArkTS 模块与命名空间
每个文件都是一个独立的模块,变量和类型默认私有,需显式导出才能被其他文件使用。都是用于代码组织的机制,但它们的用途和适用场景有所不同。,让它们通过一个共同的“调用者”(即命名空间名称)来访问。恭喜你,模块和命名空间学完了,手动撒花🎉🎉🎉。到另一个文件中,倒入命名空间。,基于 ES6 模块系统(
2025-07-27 02:40:17
331
原创 ArkTS 可选链?、强制非空断言??、空值合并运算??
null是一个特殊的字面量值,用于表示一个变量没有指向任何对象。当变量值为null时,使用这个变量是没有意义,甚至会引发程序异常,所以默认情况下ArkTS中的所有类型的值都是不可为null值;要想变量的值为null,必须明确指定null类型。在开发中经常存在这么一种情况:一个变量的值可能为null、也可能是一个具体对象,但是在执行之前不能明确该变量的值是null还是一个对象。此时使用该对象调用其方法时,就必须使用非空判断。
2025-07-27 02:09:04
169
原创 ArkTS 面向对象编程,继承、抽象、接口、封装、多态
的行为,用于实现特定于子类的功能。既能保留父类功能不变,也能有子类的特有实现。warning]
2025-07-27 01:51:59
361
原创 ArkTS 函数、箭头函数、函数类型全面解析
函数是可以被重复使用的代码块,它可以接受输入参数,执行一系列操作,然后返回输出结果。使用函数可以提高代码的复用性,也可以将大问题拆解成小模块,同时提高代码的可维护行;
2025-07-26 21:32:57
359
原创 ArkTS 变量、常量、数据类型、流程控制、运算符、数组
掌握 ArkTS 语言的声明、类型、运算符和语句是构建高效、稳定 HarmonyOS 应用的基础。这些基本概念不仅为编写清晰、可维护的代码提供了框架,还为你在开发过程中进行错误检查和性能优化奠定了基础,从而确保应用的可靠性和用户体验。
2025-07-26 17:22:17
993
原创 HarmonyOS开发准备,创建第一个HarmonyOS应用
若首次打开,请单击创建工程。如果已经打开了一个工程,请在菜单栏选择来创建一个新工程。选择应用开发,选择模板,单击进行下一步配置。进入配置工程界面,表示兼容的最低API Version,其他参数保持默认设置即可。单击,工具会自动生成示例代码和相关资源,等待工程创建完成。
2025-07-25 19:44:54
396
原创 HarmonyOS开发准备,DevEco Studio 集成开发环境
DevEdo Studio是开发 HarmonyOS 应用及元服务的集成开发环境(Integrated Development Environment,简称IDE);提供 AI 辅助编程、编译构建、UI 实时预览、代码调试、性能调优、模拟器等功能,帮助你高效开发鸿蒙应用及元服务。
2025-07-25 19:41:22
940
原创 ArkUI-X跨平台开发之环境搭建
ArkUI是一套构建分布式应用的声明式UI开发框架。它具备简洁自然的UI信息语法、丰富的UI组件、多维的状态管理,以及实时界面预览等相关能力,帮助您提升应用开发效率,并能在多种设备上实现生动而流畅的用户体验ArkUI-X进一步将ArkUI扩展到了多个OS平台:目前支持OpenHarmony、HarmonyOS、Android、 iOS,后续会逐步增加更多平台支持。开发者基于一套主代码,就可以构建支持多平台的精美、高性能应用。
2025-07-22 17:53:28
593
原创 ArkUI 响应式布局
HarmonyOS系统面向多终端提供了“一次开发,多端部署”(后文中简称为“一多”)的能力,让开发者可以基于一种设计,高效构建多端(手机、电脑、平板、手表、车机等)可运行的应用。响应式布局是实现一多效果提供了布局能力,响应式布局最重要的特征是可以将窗口宽度划分为不同的断点,当窗口宽度从一个断点变化到另一个断点时,改变页面布局以获得更好的显示效果。
2025-06-13 12:32:21
923
原创 Ark 异步任务,Promise,async/await
一个任务可能是简单的打印语句,也可以是复杂的算法处理、网络请求或 I/O 操作等。这些任务的执行时间各不相同:打印语句执行时间通常很短,而网络请求和 I/O 操作可能耗时较长。由于 JavaScript 执行引擎是单线程的,如果按照顺序执行所有任务,耗时较长的任务可能会阻塞线程,导致整体性能下降,进而影响用户体验。
2025-06-04 14:43:37
675
原创 协程新手到高手:彻底搞懂 Kotlin 协程作用域&协程调度器
由于传统线程池在 I/O 密集型场景下存在性能瓶颈,无法通过增加线程数量来进一步提高任务吞吐量,因此 Kotlin 引入了一种更加高效的并发模型——Kotlin 协程。Kotlin 协程(Coroutine)是一种轻量级并发编程机制,它允许在少量线程上执行大量异步任务,提高程序的并发能力,同时避免传统多线程编程中的线程切换开销和资源浪费。
2025-03-08 01:51:08
737
原创 Mac系统 安装MySQL压缩版
MySQL在mac系统上安装有两个版本,一个是安装版(.dmg),一个是压缩版(.zip)。 安装版的安装步骤将在下一篇文章进行描述,这里只介绍压缩版的安装步骤1.下载到官方网站上下载就可以了 https://downloads.mysql.com/archives/community/- 操作系统:Windows/MacOS- 版本号:/5.7.24下载下来的是一个mysql-5.7.24-macos10.14-x86_64.tar.gz的压缩包2.安装第一步: 将mysql-5.
2021-09-16 14:40:04
1599
3
原创 gitbook安装使用看完这一篇就够了
Gitbook使用教程GitBook安装GitBook是一个能将使用 Markdown 语法,快速制作成各种格式电子书的工具。它是一个基于 Node.js 的命令行工具,可以用来制作精美的电子书。首先我们得下载Nodejs并安装注意: 截止到目前的 Gitbook V3.2.3版本,需要使用NodeJs的v10+版本,否则会产生各种报错。这里建议下载v10.23.1版本,官网最新版本我试了也是不行的。先安装Nodejsnodejs历史版本下载连接 https://nodejs.org/zh-
2021-09-09 11:37:17
13788
原创 Redis安装和使用,看完这篇文章就够了
Redis概述redis是以【键-值】形式存储数据的非型数据库,相较于关系型数据库性能更高。可以用于缓存、消息中间件等。Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Redis支持数据的备份,即master-slave模式的数据备份。Windows安装Redi
2020-06-12 15:05:32
417
原创 10分钟学会NIO技术
NIO的概述NIO是New I/O的简称,与旧式基于流的I/O相对,从名字上来看,它表示新的一套I/O标准。它是从JDK1.4中被纳入到JDK中的。与旧式的IO流相比,NIO是基于Block的,它以块为单位来处理数据,最为重要的两个组件是缓冲区Buffer和通道Channel。缓冲区是一块连续的内存块,是NIO读写数据的载体;通道表示缓冲数据的源头和目的地,它用于向缓冲区读取或者写入数据,是访问缓冲区的接口。Buffer的基本原理Buffer中最重要的3个参数:位置(position)、容量(ca
2020-06-10 17:07:53
766
原创 Java线程状态和线程池
线程的状态线程池的基本概念线程是稀缺资源,如果被无限制的创建和销毁,不仅会消耗系统资源,还会降低系统性能能。合理的使用线程池可以更好的利用CPU的空闲时间,对线程进行统一分配,具体有以下几个好处。1.降低资源消耗2.提高响应速度3.提高线程的可管理性线程池是从JDK1.5之后引入的,线程池中有若干个线程对象,当有任务需要执行时就从池子中拿一个线程过来执行任务,执行完任务之后线程不会被销毁,而是归还到池子给其他要执行的任务复用。这样就避免了频繁的创建线程和销毁线程浪费系统资源,同时也提高了系
2020-06-08 16:04:02
294
原创 最常用的Linux操作命令
Linux目录结构Linux操作系统中没有盘符的划分,所有文件都是存储在根目录上。/root: 该目录为系统管理员,也称作超级权限者的用户主目录。/home: 用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。/etc: 这个目录用来存放所有的系统管理所需要的配置文件和子目录。/usr: 这是一个非常重要的目录,存放系统用户共享资源目录操作列出文件及目录ls //列出当前文件和目录ls -a //列出文件和目录(包含隐藏文件)l
2020-06-06 14:41:56
412
2
原创 Linux用户和文件的权限管理
权限管理资源类型普通文件(-)目录(d)符号链接(l)字符设备文件(c)块设备文件(s)套接字(s)命名管道(p)普通文件: 包括文本文件、数据文件、可执行的二进制程序文件等。目录文件: Linux系统把目录看成是一种特殊的文件,利用它构成文件系统的树型结构。修改权限chmod 变更文件或目录的权限。格式: chmod [参数] <文件>参数: -R 以递归方式更改所有的文件及子目录常用: chmod 755 install.log c
2020-06-06 14:37:00
425
原创 手把手教你MyBatis注解开发
MyBatis注解式单表查询准备测试用的数据库和表-- 创建用户表CREATE TABLE USER( uid INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(20), PASSWORD VARCHAR(20));-- 添加数据INSERT INTO USER(username,PASSWORD) VALUES('zhangsan','123');INSERT INTO USER(username,PASSWORD) VALUES('l
2020-06-06 11:04:32
301
原创 轻松搞定MyBatis多表查询
MyBatis多表查询一对一查询身份证和人员就是一对一的关系,一个人有一张身份证,一张身份证也只属于一个人。准备测试用的数据库和表-- 创建数据库CREATE DATABASE mybatistest3;-- 使用数据库USE mybatistest3;-- 身份证表CREATE TABLE idcard( id INT PRIMARY KEY AUTO_INCREMENT, icode VARCHAR(18));-- 人员表CREATE TABLE person( pid
2020-06-06 11:01:01
280
原创 教你配置MyBatis核心配置文件
MyBatis核心配置文件typeHandlers标签由于Java的数据类型和数据库中的数据类型不太一样,所以有些特定情况下需要类型转换器,用于把Java的数据类型转换为数据库兼容的数据类型,或者把数据库兼容的数据类型转换为Java的数据类型。准备测试数据-- 创建数据库表CREATE TABLE student( id INT PRIMARY KEY AUTO_INCREMENT, uname VARCHAR(20), uage INT, birthday BIGINT);定义St
2020-06-06 10:58:04
566
原创 手动拼接SQL太麻烦,看看MyBatis动态SQL
动态SQL开发人员通常根据需求手动拼接SQL语句,这是一个极其麻烦的事情,而且很容易出错。MyBatis提供了动态组装的功能,允许在SQL语句中加入 <if>、<where>、<when>、<foreach>用于逻辑控制的元素,达到SQL语句根据需要动态变化的效果。我们重新创建一个UserMapperDanmic接口和UserMapperDanmic.xml文件,专门讲解动态SQL语句UserMapperDanmic接口public interfa
2020-06-06 10:54:53
827
原创 MyBatis映射文件深入
MyBatis映射文件深入在实际开发中执行查询SQL语句,经常需要多个参数。那么parameterType属性值的数据类型是什么呢?可以使用是用Map集合的键值对来传递多个参数; 也可以使用JavaBean对象封装多个参数使用Map传递多个参数先写一个在UserMapper接口中添加下面的抽象方法/*查询姓张的男性用户信息*/public List<User> selectAllUserByCondition(Map<String,Object> map);在UserM
2020-06-06 10:53:03
309
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人