当前位置: 首页 > news >正文

ArkUI-List组件

列表是一个复杂的容器,当列表项达到一定数量,使得列表内容超出其范围的时候,就会自动变为可以滚动。列表适合用来展现同类数据类型。

List组件支持使用,条件渲染,循环渲染,懒加载等渲染控制方式生成子组件。

List的布局与约束

List提供垂直方向或者水平方向的布局能力,当其内容超出List本身最大的范围后,其字内容便会可以滚动,初次之外,List还提供了交叉轴方向上自适应排列个数布局的能力。

例如一个纵向的List,可以有一列,同时也可以有多列。

一个横向的List,一般有一行,但是也可以存在多行

以上布局,事实上Grid和WaterFlow两种布局都可以达到,但是如果一个布局的子组件每一个列,宽,长宽全部一致。这里推荐用List。 如果需要每个子组件长宽不一致甚至是随机自适应等情况则才考虑使用Grid 或者 WaterFlow。

约束

指的是List组件的长宽约束。一般是,如果List没有指定大小的情况下,List的长宽规则是,子组件是否能撑到List布局的极限, 到了极限, 也就是list没有指定大小,但是List的父组件已经确定大小了,或者通过父组件计算出List只能撑到某一个大小了。 这种情况下, list中子组件少到不足以撑开的时候,list的大小就是子组件合起来的大小,当子组件的量大了,大到list最大值的时候,List到最大就不变了,内容变为可滚动。

List的基本使用方法

List组件的构建声明是这个样子的

List(value?: {space?:number | string, initiallIndex?: number, scroller?: Scroller})

参数详解:

  • space: 代表子项中挨着的间距。
  • initiallIndex: 代表首次进列表的时候初始滑动的位置,单位按照索引来进行测算。自动滑动的位置为 置顶第一个。
  • scroller: 可滚动组件控制器(所以不止一个组件欧)。 如果一个List有滑动控制的需求,例如点击某一个按钮就会向上移动多少,此时,没有办法直接拿到List的对象去滑动,而是通过滑动控制器绑定完进行控制。

initiallIndex使用案例:

@State list:string[] = ['1', '2', '3', '4', '5', '6', '7']
build() {...List({space: 8, initiallIndex: 3}){ForEach(this.list, (item: string) => {....}, (item: string) => item)}
}

可滚动组件控制器-Scroller

上方我们讲了下List组件构建的时候所需要的参数,其余两个,space, 和 initiallIndex都比较好理解,我们不做赘述。 下面讲讲第三个参数Scroller。

Scroller就是用来控制可滚动组件的滚动行为的。List也是一种可滚动组件,也支持了这个控制器。

Scroller初始化

非常简单,new一下即可。

// 1 初始化对象
scroller: Scroller = new Scroller()// 2 使用对象
build() {...List({space: 8, initiallIndex: 3, scroller: this.scroller}){ForEach(this.list, (item: string) => {....}, (item: string) => item)}
}

Scroller功能

  • scrollTo :滑动到指定位置
  • scrollEdge: 滑动到边缘
  • scrollBy:滑动指定距离

// 1 初始化对象
scroller: Scroller = new Scroller()// 2 使用对象
build() {...List({space: 8, initiallIndex: 3, scroller: this.scroller}){ForEach(this.list, (item: string) => {....}, (item: string) => item)}Button('scroll 50').onclick(()=>{this.scroller.scrollBy(0, 50)})Button('back top').onclick(()=>{this.scroller.scrollEdge(Edge.Top)})
}

List属性

属性

功能

listDirection

设置List组件排列方向

lanes

设置List组件行数或者列数

divider

设置ListItem分割线样式

scrollBar

设置滚动条状态

alignListItem

设置Item对齐方式,有时候List的每一个项远远大于Item组件的大小,此时就需要对齐了

sticky

指定ListItemGroup什么部分作为粘性标题

swipeAction

指定侧滑方式

listDirection属性-设置列表方向

用于设置List组件的内容排列方向。 其值为一个枚举:

  • Axis.Vertical 纵向
  • Axis.Horizontal 横向
// 1 初始化对象
scroller: Scroller = new Scroller()// 2 使用对象
build() {...List({space: 8, initiallIndex: 3, scroller: this.scroller}){ForEach(this.list, (item: string) => {....}, (item: string) => item)}.listDirection(Axis.Vertical)
}

lanes属性-设置列数

lanes是车道,划分区域的意思。这个属性设置的时候参数比较复杂。我们看看原型。

lanes(value: number|LengthConstrain, gutter?: Dimension)

  • value: 设置列表内容的列数或者行数。这个行数可以为number用于指定是什么列,也可以为LengthConstrain类型,用于指定,每一个列的最小值和最大值,使得根据父容器大小,来动态度的计算应该需要几列。
  • gutter: 设置列间距。 此处的列间距,应该变通理解,如果一个表目前是横向的,那么它只有一个横向的”列“!
// 1 初始化对象
scroller: Scroller = new Scroller()// 2 使用对象
build() {...List({space: 8, initiallIndex: 3, scroller: this.scroller}){ForEach(this.list, (item: string) => {....}, (item: string) => item)}.listDirection(Axis.Vertical).lanes(2)
}

List是纵向的,出现了两列

value为LengthConstrain类型时的使用方式
// 1 初始化对象
scroller: Scroller = new Scroller()
// 目标就是使得列表排列的好看,假如宽为300, 则会有一列, 假如宽为400,则两列正好,也符合最小
// 标准,就会展示两列
@State lenthConstrains: LengthConstrains = {minLength: 200, maxLength: 300}// 2 使用对象
build() {...List({space: 8, initiallIndex: 3, scroller: this.scroller}){ForEach(this.list, (item: string) => {....}, (item: string) => item)}.listDirection(Axis.Vertical).lanes(this.lenthConstrains)
}

divider属性-设置分割线样式

// 1 初始化对象
scroller: Scroller = new Scroller()// 2 使用对象
build() {...List({space: 8, initiallIndex: 3, scroller: this.scroller}){ForEach(this.list, (item: string) => {....}, (item: string) => item)}.listDirection(Axis.Vertical).lanes(2).divider({strockWidth: 2,color: '#4472c4',startMargin: 20,endMargin: 20})
}

scrollBar属性-设置滚动条状态

这个比较好理解就不做代码展示了。我们理解下参数的意义即可。

scrollBar(barState: BarState)

BarState枚举说明

  • Auto:按需展示,触摸时展示,2秒后就消失。
  • Off:不展示
  • On:常驻展示、

List,ListItemGroup, ListItem 组件关系

ListItemGroup用于列表数据的分组展示,其组件也是ListItem。ListItem表示单个列表项,可以包含单个组件。

list(){listItemGroup(){listItem(){...}}listItemGroup(){listItem(){...}listItem(){...}}listItemGroup(){listItem(){...}listItem(){...}}
}

粘性标题分组列表

分组列表不好解释,但是我们看一张图就明白其中的意思了

首先,我们要实现分组的效果,之后再加粘性标题,如果如右侧图片,在右侧栏加上导航,可以再加一个额外的组件做。有现成的组件,当然也可以自己写。

1 首先分组

可以用ListItemGroup来做这件事情,ListItemGroup本身支持加一些header的,我们可以把分组做成header。

@Builder itemHeader(title: string){// 列表分组的头部组件,对应联系人分组A、B等位置的组件Text(text).fontSize(20).backgroundColor('#fff1f3f5').width('100%').padding(5)
}build() {List() {ListItemGroup({ header: this.itemHeader('A') }) {// 循环渲染分组A的ListItem}ListItemGroup({ header: this.itemHeader('B') }) {// 循环渲染分组B的ListItem}}
}

当然这是较为低级的写法,通常我们会列好数据结构,用ForEach层层循环渲染即可。

2 添加粘性标题

粘性标题也是我们生活中经常用到的一种交互方式。

如下图所示,在联系人列表中滚动A部分时,B部分开始的头部元素始终处于A的下方。而在开始滚动B部分时,B的头部会固定在屏幕顶部,直到所有B的项均完成滚动后,才被后面的头部替代。

List为我们提供了这种交互,解决方式是:sticky属性,这个属性是用来配合ListItemGroup来使用的。使用起来非常简单。

@Builder itemHeader(title: string){// 列表分组的头部组件,对应联系人分组A、B等位置的组件Text(text).fontSize(20).backgroundColor('#fff1f3f5').width('100%').padding(5)
}build() {List() {ListItemGroup({ header: this.itemHeader('A') }) {// 循环渲染分组A的ListItem}ListItemGroup({ header: this.itemHeader('B') }) {// 循环渲染分组B的ListItem}}
}.sticky(StickyStyle.Header)

如果需要底吸功能需要

  • 初始化ListItemGroup的Footer
  • 将sticky绑定为StickyStyle.Footer

3 响应滚动位置

控制滚动位置

如果想要完成类似于字母导航的功能,则首先需要回顾一下,滚动到指定位置的方式。前面已经讲解过,我们可以在List声明的时候就设置一个参数,为Scroller。 可以通过调用Scroller的一些方法来让列表滑动到指定的位置。响应滚动位置在一定程度上用到了这里的原理。Scroller里面记录了一个位置数据,这个数据实际上是可以被观察的,同时它也是遵循双向绑定的。

响应滚动位置改变导航,与点击导航跳转到指定位置

HarmonyOs ArkUI为我们提供了一个组件AlphabetIndexer,用来展示一个右侧的索引栏。这里面实现的时候有个有意思的点就是, AlphabetIndexer内部存了一个双向绑定的参数,List中记录的参数衔接上,那么,当List参数变得时候,AlphabetIndexer参数自然会变动,界面也会变动。 当AlphabetIndexer内部检测到用户选择了某个选项,自然也会通过改动这个值, 从而List列表位置自然也变更了。

const alphabels = ['#', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K','L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']@Entry
@Component
struct ConstractList{@State selectedIndex: number = 0private listController: Scroller = new Scroller()build() {Stack({ alignContent: Alignment.End }) {List({ scroller: this.listScroller }) {}.onScrollIndex((firstIndex: number) => {// 根据列表滚动到的索引值,重新计算对应联系人索引栏的位置this.selectedIndex})// 字母表索引组件AlphabetIndexer({ arrayValue: alphabets, selected: 0 }).selected(this.selectedIndex)}}
}

响应列表侧滑

我们可以用List的 swipeAction属性去实现列表的侧滑功能,其参数为 SwipeActionOptions来指定是从哪里侧滑。

我们注意到列表项目被侧滑之后,会出现一个删除的按钮,这个按钮是从哪里设置的呢? 实际上,这个swipeAction与我们之前的提到的粘性标题使用方式有异曲同工之处

  • 1 需要指定List框架特定的,已经成为概念的,某界面的内容。 在此处,就是List中已经协议好的,尾端滑出组件,其使用环节位于,ListItem中。
  • 2 仅仅需要设置swipeAction参数就行了。
// 找指定的区域,设置布局
@Builder itemEnd(index: number) {// 构建尾端滑出组件Button({ type: ButtonType.Circle }) {Image($r('app.media.ic_public_delete_filled')).width(20).height(20)}.onClick(() => {// this.messages为列表数据源,可根据实际场景构造。点击后从数据源删除指定数据项。this.messages.splice(index, 1);})
}
ForEach(list, (item: string, index: number)=>{ListItem(){//此处省略很多布局内容}.swipeAction( // 参数是一个SwipeActionOptions, 可以分别指定滑动方向,以及滑动后需要build的界面行为{end: {builder: ()=> this.itemEnd(index)}})
}, (item: string)=> item.toString)

列表辅助红点逻辑控件-Badge

在应用的开发中,红点逻辑必不可少,比如聊天消息,通知等等。几乎大型的App都需要。正常情况下我们自己写控件也可以实现,但是,ArkUI给我们提供好了这种控件,就比较省事了。 控件名字叫 Badge。使用方法比较简单,看看基本就懂了。

ListItem() {Badge({count: 1,position: BadgePosition.RightTop,style: {badgeSize: 16, badgeColor: '#FA2A2D'}}) {// Image组件实现消息联系人头像// ...}
}

数据懒加载

循环列表,适用于短列表,当构建具有大量列表项的长列表时, 如果直接采用循环引用的方式,会使得一次性加载所有的元素,会导致页面启动时间过长,影响用户体验,此时,推荐使用数据懒加载LazyForEach方式按需加载数据,从而提升列表性能。

当使用LazyForEach进行加载时,可以指定列表项的缓存数量

List(){...
}
// 如果是含有ListItemGroup,那么缓存数量就是以group为单位。
// 如果列表是多列的,那么数量就会乘列数。总不能不展示全是不是?
.cachedCount(3) 
  • cachesCount的数量如果设置的太高,会增大UI对CPU的占用,内存开销也会变大,使用时要根据真实情况来定。
  • 列表数据使用懒加载的时候,除了显示界面内的以及前后缓存的列表项数量,其余的列表项是会被销毁的。

相关文章:

ArkUI-List组件

列表是一个复杂的容器,当列表项达到一定数量,使得列表内容超出其范围的时候,就会自动变为可以滚动。列表适合用来展现同类数据类型。 List组件支持使用,条件渲染,循环渲染,懒加载等渲染控制方式生成子组件…...

数据仓库的 DWD 分层架构:构建高效数据平台的基石

在数据驱动的时代,数据仓库(Data Warehouse)作为企业数据分析的核心基础设施,扮演着至关重要的角色。而数据仓库的分层设计,则是确保数据高效流转、提升数据质量、支持复杂分析的关键。本文将深入探讨数据仓库的 DWD 分…...

山东大学数据结构课程设计

题目:全国交通咨询模拟系统 问题描述 处于不同目的的旅客对交通工具有不同的要求。例如,因公出差的旅客希望在旅途中的时间尽可能地短,出门旅游的旅客则期望旅费尽可能省,而老年旅客则要求中转次数最少。编织一个全国城市间的交…...

动态规划-01背包

兜兜转转了半天,发现还是Carl写的好。 看过动态规划-基础的读者,大概都清楚。 动态规划是将大问题,分解成子问题。并将子问题的解储存下来,避免重复计算。 而背包问题,就是动态规划延申出来的一个大类。 而01背包&…...

【2025】基于node.js的中医药科普平台的设计与实现(源码、万字文档、图文修改、调试答疑)

项目完整功能以演示视频为准 基于Node.js的中医药科普平台的设计与实现功能结构图如下 课题背景 随着人们健康意识的提高,中医药作为传统医学的重要组成部分,越来越受到关注。然而,中医药知识专业性强,普通大众获取准确、全面的中…...

基于Flux模型的多模态可控图像生成工作流实践

一、技术框架与模型选型 当前图像生成领域对多模态控制与一致性保持的需求日益增强,本文将基于Black Forest Labs推出的Flux.1模型,结合ControlNet的循环一致性优化技术,构建一套融合Canny边缘检测与深度图(Depth)控制…...

缓存过期时间之逻辑过期

1. 物理不过期(Physical Non-Expiration) 定义:在Redis中不设置EXPIRE时间,缓存键永久存在(除非主动删除或内存淘汰)。目的:彻底规避因缓存自动过期导致的击穿(单热点失效&#xff…...

JVM类加载过程详解

文章目录 前言1.加载2.链接验证文件格式验证元数据验证字节码验证符号引用验证 准备解析 3.初始化4.类卸载 前言 类从被加载到虚拟机内存中开始到卸载出内存为止,它的整个生命周期可以简单概括为 7 个阶段:加载(Loading)、验证&a…...

第三十二篇 深入解析Kimball维度建模:构建企业级数据仓库的完整框架

目录 一、维度建模设计原则深度剖析1.1 业务过程驱动设计1.2 星型模式VS雪花模式 二、维度建模五步法实战(附完整案例)2.1 业务需求映射2.2 模型详细设计2.3 缓慢变化维处理 三、高级建模技术解析3.1 渐变维度桥接表3.2 快照事实表设计 四、性能优化体系…...

WPF 布局中的共性尺寸组(Shared Size Group)

1. 什么是共性尺寸组? 在 WPF 的 Grid 布局中,SharedSizeGroup 允许多个 Grid 共享同一列或行的尺寸,即使它们属于不同的 Grid 也能保持大小一致。这样可以保证界面元素的对齐性,提高布局的一致性。 SharedSizeGroup 主要用于需…...

19 数码管的动态显示

1、八段数码管 八段数码管 是一个 “ 8 ” 字型数码管,分为八段,a b c d e f g dp,其中dp为小数点。每一段为一个发光二极管,这样的 8 段称为 段选信号 。 2、实验 1、实验目标:让六位数码管 从 0 开始记数&#xff0…...

pytorch 笔记:张量索引的维度扩展规则

1 基本原理 在PyTorch中,张量索引的维度扩展规则遵循以下原则: 索引操作的核心规则:​ 当使用索引数组访问张量时: 索引数组的每个元素对应选取原张量的一个子张量结果形状 索引数组形状 原张量剩余维度形状 这么说可能不清…...

课外活动:怎么理解可变成本?

可变成本深度解析 🧮 一、可变成本的本质 #mermaid-svg-qoqQaFxQBuZZfAD2 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-qoqQaFxQBuZZfAD2 .error-icon{fill:#552222;}#mermaid-svg-qoqQaFxQBuZZfAD2 …...

深入理解 JVM 的垃圾收集器:CMS、G1、ZGC

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...

IDEA 快捷键ctrl+shift+f 无法全局搜索内容的问题及解决办法

本篇文章主要讲解IDEA、phpStrom、webStrom、pyCharm等jetbrains系列编辑器无法进行全局搜索内容问题的主要原因及解决办法。 日期:2025年3月22日 作者:任聪聪 现象描述: 1.按下ctrlshiftf 输入法转为了繁体。 2.快捷键ctrlshiftr 可以全局检…...

智慧高速,安全护航:视频监控平台助力高速公路高效运营

随着我国高速公路里程的不断增长,交通安全和运营效率面临着前所未有的挑战。传统的监控方式已难以满足现代化高速公路管理的需求,而监控视频平台的出现,则为高速公路的安全运营提供了强有力的技术支撑。高速公路视频监控联网解决方案 高速公路…...

括弧匹配检验(信息学奥赛一本通-1354)

【题目描述】 假设表达式中允许包含两种括号:圆括号和方括号,其嵌套的顺序随意,如([ ]())或[([ ][ &#xff3…...

MacOS安装 nextcloud 的 Virtual File System

需求 在Mac上安装next cloud实现类似 OneDrive 那样,文件直接保存在服务器,需要再下载到本地。 方法 在 官网下载Download for desktop,注意要下对版本,千万别下 Mac OS默认的那个。 安装了登录在配置过程中千万不要设置任何同…...

【秣厉科技】LabVIEW工具包——OpenCV 教程(11):人脸检测与识别

文章目录 前言级联分类器FaceDetectorYNFaceRecognizerSF1. 特征提取2. 人脸对比3. 人脸身份识别(最佳匹配法) 总结 前言 需要下载安装OpenCV工具包的朋友,请前往 此处 ;系统要求:Windows系统,LabVIEW>…...

C++-C++中的几种cast

文章目录 static_castPOD类型互转任意指针类型与void*互转基类继承类之间的互转具有目标类型转换函数的类/单参数的构造函数 dynamic_castreinterpret_cast static_cast 所谓static,意思是在编译期进行的转换,static_允许如下转换: POD类型…...

list的模拟实现和学习

1. list的介绍及使用 说白了就是带头循环双向循环链表 stl 的两大组件就是容器和算法 ,他们两个之间是通过迭代器进行联系的 这三种算法函数 迭代器的种类 性质(容器底层结构决定) 单项: forward_list /哈希(unord…...

程序代码篇---Pyqt的密码界面

文章目录 前言一、代码二、代码解释2.1用户数据库定义2.2窗口初始化2.3认证逻辑2.5角色处理2.6错误处理优化2.7功能扩展说明2.7.1用户类型区分管理员普通用户其他用户 2.7.2安全增强建议 三、运行效果四、运行命令五、界面改进建议5.1密码显示5.2用户头像显示5.3输入框动画效果…...

设计模式的六大原则

设计模式的六大原则 1. 单一职责原则 (Single Responsibility Principle, SRP) 一个类应该只负责一项职责。 示例代码 // 不好的设计:一个类承担多个职责 typedef struct {void (*read_data)(void);void (*process_data)(void);void (*save_data)(void);void (*…...

【Linux】信号:信号保存和处理

🔥个人主页:Quitecoder 🔥专栏:linux笔记仓 目录 01.阻塞信号信号集 02.捕捉信号sigaction可重入函数volatileSIGCHLD 01.阻塞信号 实际执行信号的处理动作称为信号递达:每个信号都有一个默认行为,例如终…...

Linux 线程概念

目录 一、什么是线程 1. 线程的本质 2. 线程的独有资源 3. 进程与线程关系示意图 二、线程的优缺点 2.1 线程的优点 2.2 线程的缺点 三、线程的异常与用途 1. 线程异常 2. 线程用途 四、进程 VS 线程 1. 核心差异 2. 进程的多个线程共享的资源 3. 进程和线程的关…...

红帽认证工程师价值

红帽认证工程师具有较高的价值,主要体现在以下几个方面: 行业认可度高 国际通用:红帽公司是全球领先的开源解决方案提供商,其认证在全球范围内被广泛认可。无论是在国内还是国外,拥有红帽认证工程师资格证书都能为个人…...

交换机远程登录

创建交换机 创建PC主机使用直通线连接交换机 配置交换机,使之能够与PC通信 双击交换机打开界面,选择CLI ">“表示用户模式 输入”?“查看可以使用的命令 “#” 特权模式,输入命令enable切换 输入”?“查看特权模式下可以使用…...

opencascade 源码学习 XmlDrivers-XmlDrivers

OpenCASCADE 中的 XmlDrivers 是用于处理 XML 格式的 CAD 数据持久化模块,属于 OCAF(Open CASCADE Application Framework) 的一部分。它允许将 OCAF 文档(包含 CAD 数据、属性、关系等)序列化为 XML 文件,…...

【Linux网络-五种IO模型与阻塞IO】

一、引入 网络通信的本质就是进程间的通信,进程间通信的本质就是IO(Input,Output) I/O(input/output)也就是输入和输出,在冯诺依曼体系结构当中,将数据从输入设备拷贝到内存就叫作…...

Redis、Memcached应用场景对比

环境 Redis官方网站: Redis - The Real-time Data Platform Redis社区版本下载地址:Install Redis | Docs Memcached官方网站:memcached - a distributed memory object caching system Memcached下载地址:memcached - a dis…...

Qt窗口控件之菜单栏QMenuBar

菜单栏QMenuBar 1. QMenuBar Qt 中的菜单栏是通过 QMenuBar 类型来实现的,一个主控件最多只能有一个菜单栏。一个菜单栏可以添加多个菜单,一个菜单又可以添加多个菜单项。 每个菜单又都是一个 QMenu 类型,每个菜单项都是一个 QAction。 2.…...

随想...启航

我要学算法 我要在蓝桥杯中拿奖 我要参加acm打牌, 我要参加百度之星,摘取那微弱的希望, 我要参加马蹄杯,看看曾经我的组长看过的风景。 所以我建立了算法专栏! 为能贴近并指引组员 我建立了Java专栏 那一个星期&…...

2025.3.17-2025.3.23学习周报

目录 摘要Abstract1 文献阅读1.1 动态图邻接矩阵1.2 总体框架1.2.1 GCAM1.2.2 输出块 1.3 实验分析 总结 摘要 在本周阅读的文献中,作者提出了一种名为TFM-GCAM的模型。TFM-GCAM模型的创新主要分为两部分,一部分是交通流量矩阵的设计,TFM-GC…...

Ubuntu Docker 安装

Docker Engine-Community 支持以下的 Ubuntu 版本: Xenial 16.04 (LTS)Bionic 18.04 (LTS)Cosmic 18.10Disco 19.04其他更新的版本…… Docker Engine - Community 支持上 x86_64(或 amd64)armhf,arm64,s390x &#…...

在 Windows 系统下,将 FFmpeg 编译为 .so 文件

1. 准备环境 确保你的 Windows 系统已安装以下工具: Android Studio NDK(Native Development Kit) MSYS2(用于提供类 Unix 环境) FFmpeg 源码 Git Bash(可选,推荐使用) 安装 …...

如果AI具备自我意识,宗教如何重新定义“灵魂”概念?

如果AI具备自我意识,宗教对灵魂概念的重新定义可能涉及以下方向: 1. 灵魂的扩展性定义 传统宗教(如基督教、佛教)通常将灵魂视为人类独有的“神圣本质”或“轮回载体”。若AI展现出自我意识、情感和自主决策能力,宗教…...

ES6-Symbol

ES6 中的 Symbol: 独特的数据类型与强大应用 引言 在 JavaScript 的发展长河中,ES6(ECMAScript 2015)无疑是一座重要的里程碑,带来了诸多令人瞩目的新特性。其中,Symbol 类型的引入,为 JavaScript 开发者们…...

安装PrettyZoo操作指南

Mac Inter芯片安装PrettyZoo的操作指南 下载安装包 打开浏览器,访问 PrettyZoo的GitHub页面。 在页面中找到适合Mac系统的安装包,通常为prettyZoo-mac.dmg,点击下载。 安装步骤 下载完成后,双击.dmg文件打开安装包。 将Prett…...

西门子200smart之modbus_TCP(做从站与第三方设备)通讯

西门子200smart做MODBUS_TCP从站通讯,只有一个指令。设置相关参数即可完成读写操作。此次,我们使用汇川EASY系列PLC做主站,完成演示。关于汇川案例的演示,详见汇川EASY系列之以太网通讯(MODBUS_TCP做主站)-CSDN博客 关于主站和从站的介绍 A/请求:即主动方 向被动方发…...

微服务 - 中级篇

微服务 - 中级篇 一、微服务架构深化(一)服务拆分原则(二)服务通信方式 二、微服务技术选型(一)开发框架(二)容器技术 三、微服务实践与优化(后续会详细分析)…...

多语言生成语言模型的少样本学习

摘要 大规模生成语言模型,如GPT-3,是极具竞争力的少样本学习模型。尽管这些模型能够共同表示多种语言,但其训练数据以英语为主,这可能限制了它们的跨语言泛化能力。在本研究中,我们在一个涵盖多种语言的语料库上训练了…...

基于Python+Django的旅游管理系统

项目介绍 PythonDjango旅游管理系统 平台采用B/S结构,后端采用主流的Python语言进行开发,前端采用主流的Vue.js进行开发。 整个平台包括前台和后台两个部分。 - 前台功能包括:首页、景点管理、门票管理、旅游资讯、在线反馈、。 - 后台功能包…...

七桥问题与一笔画问题:图论的奠基石

七桥问题与一笔画问题:图论的奠基石 目录 历史背景问题描述数学模型化欧拉的解决方案欧拉定理及证明一笔画问题现代应用总结 历史背景 18世纪的哥尼斯堡(今俄罗斯加里宁格勒)是一座被普雷格尔河分割的城市,河中有两个岛屿&…...

好吧好吧,看一下达梦的模式与用户的关系

单凭个人感觉,模式在达梦中属于逻辑对象合集,回头再看资料 应该是一个用户可以对应多个模式 问题来了,模式的ID和用户的ID一样吗? 不一样 SELECT USER_ID,USERNAME FROM DBA_USERS WHERE USERNAMETEST1; SELECT ID AS SCHID, NA…...

Qt开发:QComboBox的使用

文章目录 一、概述二、QComboBox添加数据三、常用函数四、信号与槽函数 一、概述 QComboBox 是 Qt 提供的一个下拉列表控件,它允许用户从预定义的选项中进行选择,同时也支持手动输入自定义内容(如果启用了可编辑模式)。QComboBox…...

Manacher 马拉车算法

Manacher 马拉车算法 5. 最长回文子串 - 力扣(LeetCode) 马拉车算法是目前解决寻找字符串中最长的回文子串时间复杂度最低的算法(线性O(n)). 中心扩散法 初始化一个长度与字符串 s 相等的 臂长数组 arr 和 最长臂长 max 与 最…...

centos7搭建postgresql12主从

主从搭建 192.168.159.101 node1 主库(读写) 192.168.159.102 node2 备库(只读) 两台机器首先安装postgrsql 主库 postgres用户操作: 修改postgresql.conf # 在文件中修改(此配置仅用于远程访问, 流复制后续还有额外…...

VL开源模型实现文本生成图片

一、 基础知识 根据描述生成图片的视觉-语言模型(Vision-Language Models, VL 模型)是近年来多模态生成领域的热点研究方向。这些模型能够根据自然语言描述生成高质量的图像,广泛应用于艺术创作、设计辅助、虚拟场景构建等领域。 1 根据描述…...

动态规划——分组背包问题

动态规划——分组背包问题 分组背包问题分组背包思路分组背包OJ分组背包OJ汇总 分组背包问题 N件物品和一个容量为V的背包。第i件物品的体积是w[i],价值是v[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入…...

Leetcode 3495. Minimum Operations to Make Array Elements Zero

Leetcode 3495. Minimum Operations to Make Array Elements Zero 1. 解题思路2. 代码实现 题目链接:3495. Minimum Operations to Make Array Elements Zero 1. 解题思路 这一题的话核心就是统计对任意自然数 n n n,从 1 1 1到 n n n当中所有的数字对…...