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

鸿蒙语言基础类库:【@ohos.util.Vector (线性容器Vector)】

线性容器Vector

说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。

Vector是一种线性数据结构,底层基于数组实现。当Vector的内存用尽时,会自动分配更大的连续内存区,将原先的元素复制到新的内存区,并释放旧的内存区。使用Vector能够高效快速地访问元素。

Vector和[ArrayList]相似,都是基于数组实现,但Vector提供了更多操作数组的接口。它们都可以动态调整容量,但Vector每次扩容增加1倍,ArrayList只扩容0.5倍。

推荐使用场景: 当数据量大时,一般使用Vector来存取数据。

导入模块

import Vector from '@ohos.util.Vector';  

Vector

属性

系统能力: SystemCapability.Utils.Lang

名称参数类型可读可写说明
lengthnumberVector的元素个数。

constructor

constructor()

Vector的构造函数。

系统能力: SystemCapability.Utils.Lang

示例:

let vector = new Vector();

add

add(element: T): boolean

在Vector中尾部插入元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT添加进去的元素。

返回值:

类型说明
boolean插入成功返回true,失败返回false。

示例:

let vector = new Vector();
let result = vector.add("a");
let result1 = vector.add(1);
let b = [1, 2, 3];
vector.add(b);
let c = {name : "lala", age : "13"};
let result3 = vector.add(c);

insert

insert(element: T, index: number): void

在长度范围内任意插入指定元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT被插入的元素。
indexnumber被插入的位置索引。

示例:

let vector = new Vector();
vector.insert("A", 0);
vector.insert(0, 1);
vector.insert(true, 2);

has

has(element: T): boolean

判断此Vector中是否含有该指定元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT指定的元素。

返回值:

类型说明
boolean是否包含指定元素。

示例:

let vector = new Vector();
let result = vector.has("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
vector.add("Ahfbrgrbgnutfodgorrogorgrogofdfdf");
let result1 = vector.has("Ahfbrgrbgnutfodgorrogorgrogofdfdf");

getIndexOf

getIndexOf(element: T): number

返回指定元素第一次出现时的下标值,查找失败返回-1。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT指定的元素。

返回值:

类型说明
number返回指定元素第一次出现时的下标值,查找失败返回-1。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(2);
vector.add(1);
vector.add(2);
vector.add(4);
let result = vector.getIndexOf(2);

getLastIndexOf

getLastIndexOf(element: T): number

返回指定元素最后一次出现时的下标值,查找失败返回-1。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT指定元素。

返回值:

类型说明
number返回指定元素最后一次出现时的下标值,查找失败返回-1。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(2);
vector.add(1);
vector.add(2);
vector.add(4);
let result = vector.getLastIndexOf(2);

removeByIndex

removeByIndex(index: number): T

根据元素的下标值查找元素,返回元素后将其删除。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
indexnumber指定元素的下标值。

返回值:

类型说明
T返回删除的元素。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(2);
vector.add(4);
let result = vector.removeByIndex(2);

remove

remove(element: T): boolean

删除查找到的第一个指定的元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT指定元素。

返回值:

类型说明
boolean删除成功返回true,否则返回false。

返回值:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.remove(2);

removeByRange

removeByRange(fromIndex: number, toIndex: number): void

从一段范围内删除元素,包括起始值但不包括终止值。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
fromIndexnumber起始下标。
toIndexnumber终止下标。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.removeByRange(2,4);
vector.removeByRange(4,3);
vector.removeByRange(2,6);

replaceAllElements

replaceAllElements(callbackfn: (value: T, index?: number, vector?: Vector) => T, thisArg?: Object): void

用户操作Vector中的元素,用操作后的元素替换原元素并返回操作后的元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
callbackfnfunction回调函数。
thisArgObjectcallbackfn被调用时用作this值。

callbackfn的参数说明:

参数名类型必填说明
valueT当前遍历到的元素。
indexnumber当前遍历到的下标值。
vectorVector当前调用replaceAllElements方法的实例对象。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.replaceAllElements((value: number, index: number) => {return value = 2 * value;
});
vector.replaceAllElements((value: number, index: number) => {return value = value - 2;
});

forEach

forEach(callbackfn: (value: T, index?: number, vector?: Vector) => void, thisArg?: Object): void

通过回调函数来遍历Vector实例对象上的元素以及元素对应的下标。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
callbackfnfunction回调函数。
thisArgObjectcallbackfn被调用时用作this值。

callbackfn的参数说明:

参数名类型必填说明
valueT当前遍历到的元素。
indexnumber当前遍历到的下标值。
vectorVector当前调用forEach方法的实例对象。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.forEach((value, index) => {console.log("value:" + value, index)
});

sort

sort(comparator?: (firstValue: T, secondValue: T) => number): void

对Vector中的元素进行一个排序操作。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
comparatorfunction回调函数。

comparator的参数说明:

参数名类型必填说明
firstValueT前一项元素。
secondValueT后一项元素。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.sort((a: number, b: number) => a - b);
vector.sort((a: number, b: number) => b - a);
vector.sort();

subVector

subVector(fromIndex: number, toIndex: number): Vector

根据下标截取Vector中的一段元素,并返回这一段vector实例,包括起始值但不包括终止值。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
fromIndexnumber起始下标。
toIndexnumber终止下标。

返回值:

类型说明
Vector返回Vector对象实例。

返回值:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.subVector(2,4);
let result1 = vector.subVector(4,3);
let result2 = vector.subVector(2,6);

clear

clear(): void

清除Vector中的所有元素,并把length置为0。

系统能力: SystemCapability.Utils.Lang

返回值:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.clear();

clone

clone(): Vector

克隆一个与Vector相同的实例,并返回克隆后的实例。修改克隆后的实例并不会影响原实例。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
Vector返回Vector对象实例。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.clone();

getCapacity

getCapacity(): number

获取当前实例的容量大小。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
number返回Vector的容量大小。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.getCapacity();

convertToArray

convertToArray(): Array

把当前Vector实例转换成数组,并返回转换后的数组。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
Array返回数组类型。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.convertToArray();

isEmpty

isEmpty(): boolean

判断该Vector是否为空。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
boolean为空返回true,否则返回false。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.isEmpty();

increaseCapacityTo

increaseCapacityTo(newCapacity: number): void

如果传入的新容量大于或等于Vector中的元素个数,将容量变更为新容量。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
newCapacitynumber新容量。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.increaseCapacityTo(2);
vector.increaseCapacityTo(8);

trimToCurrentLength

trimToCurrentLength(): void

把容量限制为当前的length大小。

系统能力: SystemCapability.Utils.Lang

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.trimToCurrentLength();

toString

toString(): string

用","将Vector实例中的元素按顺序拼接成字符串。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
string返回对应的字符串。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.toString();

copyToArray

copyToArray(array: Array): void

将Vector实例中的元素按照下标复制到指定数组。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
arrayArray指定数组。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let array = ["a", "b", "c", "d", "e", "f"];
let result = vector.copyToArray(array);

getFirstElement

getFirstElement(): T

获取实例中的第一个元素。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
T返回第一个元素。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.getFirstElement();

getLastElement

getLastElement(): T

获取Vector实例中的最后一个元素。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
T返回最后一个元素。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.getLastElement();

getLastIndexFrom

getLastIndexFrom(element: T, index: number): number

从指定索引向后搜索,返回该元素的下标索引。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT要查找的元素。
indexnumber从指定索引开始搜索。

返回值:

类型说明
number返回该元素的下标,如果查找失败,则返回-1。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.add("a");
let result = vector.getLastIndexFrom(4,3);

getIndexFrom

getIndexFrom(element: T, index: number): number

从指定索引向前搜索,返回该元素的下标索引。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
elementT要查找的元素。
indexnumber从指定索引开始搜索。

返回值:

类型说明
number返回该元素的下标,如果查找失败,则返回 -1。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.add("a");
let result = vector.getIndexFrom(4, 3);

setLength

setLength(newSize: number): void

设置Vector实例的元素个数。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
newSizenumber设置的新长度。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
vector.setLength(8);
vector.setLength(2);

get

get(index: number): T

根据下标值获取Vector实例中的元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
indexnumber查找的下标值。

返回值:

类型说明
T返回获取到的元素。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.get(2);

set

set(index: number, element: T): T

将此Vector中指定位置的元素替换为指定元素。

系统能力: SystemCapability.Utils.Lang

参数:

参数名类型必填说明
indexnumber查找的下标值。
elementT用来替换的元素。

返回值:

类型说明 HarmonyOS与OpenHarmony鸿蒙文档籽料:mau123789是v直接拿
T返回替换后的元素。

在这里插入图片描述

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);
let result = vector.set(2, "A");

[Symbol.iterator]

Symbol.iterator: IterableIterator

返回一个迭代器,迭代器的每一项都是一个 JavaScript 对象,并返回该对象。

系统能力: SystemCapability.Utils.Lang

返回值:

类型说明
IterableIterator返回一个迭代器。

示例:

let vector = new Vector();
vector.add(2);
vector.add(4);
vector.add(5);
vector.add(4);// 使用方法一:
for (let item of vector) { console.log("value:" + item); 
} // 使用方法二:
let iter = vector[Symbol.iterator]();
let temp = iter.next().value;
while(temp != undefined) {console.log("value:" + temp);temp = iter.next().value;
}

相关文章:

鸿蒙语言基础类库:【@ohos.util.Vector (线性容器Vector)】

线性容器Vector 说明: 本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 Vect…...

使用Python绘制堆积面积图

使用Python绘制堆积面积图 堆积面积图效果代码 堆积面积图 堆积面积图是面积图的一种扩展,通过堆积多个区域展示不同类别数据的累积变化。常用于显示不同部分对整体的贡献。 效果 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pQbW4F…...

代码还原动态调试之 pstree 乘法变加法

乘法编译后&#xff0c;生成加法汇编&#xff0c;提升CPU执行效率&#xff1b; 406a: 85 ff test %edi,%edi // x ? 0406c: 0f 84 7e 00 00 00 je 40f0 <__sprintf_chkplt0x1980>*/int digits, div;if (x ! 0) {/*4072: 89 fd …...

C++:获取当前可执行核心数(开辟线程)

sysconf(_SC_NPROCESSORS_ONLN) 是一个在 POSIX 兼容系统上广泛使用的函数&#xff0c;它用于获取当前系统上可用的处理器&#xff08;CPU 核心&#xff09;的数量。这个函数是 sysconf 函数的一个特定调用&#xff0c;其中 _SC_NPROCESSORS_ONLN 是一个常量&#xff0c;指定了…...

【简历】吉林某985大学:JAVA实习简历指导,面试通过率相当低

注&#xff1a;为保证用户信息安全&#xff0c;姓名和学校等信息已经进行同层次变更&#xff0c;内容部分细节也进行了部分隐藏 简历说明 这份简历是一个顶级985吉林大学的同学投Java职位的简历。因为学校是顶级985&#xff0c;所以他的大厂简历通过率是比较高的&#xff0c;…...

C#中的MD5摘要算法与哈希算法

文章目录 一、哈希算法基础二、MD5 算法原理三、MD5摘要算法四、哈希算法五、C#实现示例MD5算法示例哈希算法示例字符串MD5值对比 六、总结 一、哈希算法基础 哈希算法是一种单向密码体制&#xff0c;它将任意长度的数据转换成固定长度的字符串。这种转换是不可逆的&#xff0…...

使用 python 构建企业级高可用海量爬虫调度系统

一、引言 在大数据时代&#xff0c;信息的获取与分析成为了企业决策的重要依据。对于营销行业而言&#xff0c;实时抓取和分析竞争对手动态、市场趋势以及用户反馈等数据&#xff0c;是制定有效策略的关键。然而&#xff0c;构建一个高可用的、能够处理海量数据的爬虫调度系统…...

IDEA常用技巧荟萃:精通开发利器的艺术

1 概述 在现代软件开发的快节奏环境中&#xff0c;掌握一款高效且功能全面的集成开发环境&#xff08;IDE&#xff09;是提升个人和团队生产力的关键。IntelliJ IDEA&#xff0c;作为Java开发者的首选工具之一&#xff0c;不仅提供了丰富的编码辅助功能&#xff0c;还拥有高度…...

GD32F303之CAN通信

1、CAN时钟 GD32F303主时钟频率最大是120Mhz,然后APB1时钟最大是60Mhz,APB2时钟最大是120Mhz,CAN挂载在APB1总线上面 所以一般CAN的时钟频率是60Mhz,这个频率和后面配置波特率有关 2、GD32F303时钟配置 首先我们知道芯片有几个时钟 HXTAL&#xff1a;高速外部时钟&#xff1…...

postgres 的dblink使用,远程连接数据库

一.安装下载 dblink create extension if not exists dblink 查看是否已经安装 select * from pg_extension;二.运行&#xff0c;查询数据 其中&#xff0c;第一个参数是dblink名字&#xff0c;也可以是连接字符串。 第二个参数是要执行的SQL查询语句。AS子句用于指定返回结…...

短视频矩阵系统是什么?怎么搭建短视频矩阵系统?一文了解矩阵模式

在数字时代&#xff0c;短视频已成为信息传播的新宠&#xff0c;而短视频矩阵系统则是品牌和个人在短视频领域取得突破的重要工具。那么&#xff0c;短视频矩阵系统究竟是什么&#xff1f;如何搭建这样一个高效的系统&#xff1f;它又能够解决哪些问题呢&#xff1f;本文将为您…...

查看centos硬盘大小

直接上命令 lsblk...

2024 年 6 月公链行业研报:市场回调,比特币和以太坊 Layer 2 表现各异

作者&#xff1a;stellafootprint.network 数据来源&#xff1a;公链 Research 页面 六月&#xff0c;加密货币市场经历了显著的挑战。比特币因即将到来的 Mt. Gox 赔偿支付及政府清算的压力&#xff0c;导致市场不确定性加剧。尽管美国现货以太坊 ETF 的推进带来了积极信号…...

SAP S4 销售组的定义和分配

spro-企业结构-定义-销售与分销-维护销售组 新增一个记录 spro-企业结构-分配-销售与分销-给销售办公室分配销售组...

实时数仓和离线数仓的区别是什么,企业该如何选择合适的数仓架构?

目录 一、离线数仓 1. 离线数仓是什么&#xff1f; 2. 离线数仓的特点 3. 离线数仓的适用场景 二、实时数仓 1. 实时数仓是什么&#xff1f; 2. 实时数仓的特点 3. 实时数仓的适用场景 三、由数仓需求变化带来的数据仓库架构的演变 1. 传统数仓架构 2. 离线大数据架构 3. Lambd…...

花所Flower非小号排名20名下载花所Flower

1、Flower花所介绍 Flower花所是一家新兴的数字货币交易平台&#xff0c;致力于为全球用户提供安全、便捷的交易体验。平台以其强大的技术支持和丰富的交易产品闻名&#xff0c;为用户提供多样化的数字资产交易服务&#xff0c;涵盖了主流和新兴数字货币的交易需求。 2. Flowe…...

程序员有哪些职位?

互联网行业中的岗位种类繁多、五花八门&#xff0c;学习一门技术后&#xff0c;重要的是找到合适的职业发展方向&#xff0c;程序员有哪些职业发展方向&#xff1f;一起来看看吧&#xff01; 1.架构师 架构师需要程序员有强大的技术实力和深厚的技术积累。建筑师的成长需要经…...

python+Selenium自动化之免登录(cookie及token)

目录 cookie免登录 通过接口获取cookie 启用浏览器绕过登录 添加token 使用登录可以减去每次登录的重复操作&#xff0c;直接操作系统登录后的菜单页面&#xff0c;也可以减少安全验证登录&#xff0c;如图像验证登录的操作。注意&#xff1a;cookie和token都有有效期。 c…...

Web安全:SQL注入

一、SQL注入三要素 1、用户可以对输入的参数值进行修改。 2、后端不对用户输入的参数值进行严格过滤。 3、用户修改后的参数值可以被带入后端中成功执行&#xff0c;并返回一定结果。 二、SQL注入原理 简单来说&#xff0c;用户输入的值会被插入到SQL语句中&#xff0c;然后…...

【LLM-驯化】成功配置多模态大模型InternLM-XComposer微调环境

【LLM-驯化】成功配置多模态大模型InternLM-XComposer微调环境 本次修炼方法请往下查看 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我工作、学习、实践 IT领域、真诚分享 踩坑集合&#xff0c;智慧小天地&#xff01; &#x1f387; 免费获取相关内容文档关注&am…...

保姆级教程:手把手教你用ROS话题转发搞定CARLA与Autoware的传感器数据对齐

保姆级教程&#xff1a;手把手教你用ROS话题转发搞定CARLA与Autoware的传感器数据对齐 当你在深夜的实验室里终于让CARLA仿真器和Autoware自动驾驶系统分别跑通时&#xff0c;那种成就感可能持续不到30秒——因为接下来你会发现&#xff0c;CARLA输出的传感器数据在Autoware中就…...

别再让电机‘刹不住车’:用ADRC的TD模块实现位置精准无超调控制(附STM32代码)

电机控制中的精准停车艺术&#xff1a;ADRC-TD模块实战解析与STM32实现 引言 在机器人关节控制、无人机云台稳定、CNC机床定位等场景中&#xff0c;工程师们经常面临一个看似简单却极具挑战的问题——如何让电机在到达目标位置时完美停下&#xff0c;不产生丝毫超调&#xff1f…...

化工行业节能改造数据监测系统方案

针对工厂存在能源利用不足、设备利用率偏低、人工抄表粗放等痛点&#xff0c;某化工企业通过落实多项节能数字化改造措施&#xff0c;实现变废为宝、节能增效等多种能源效益。主要举措包括&#xff1a;通过回收高温蒸汽驱动闲置汽轮机实现发电、通过回收富余蒸汽为生产提供热源…...

从U盘到高端SSD:一文搞懂FTL映射表(块/页/混合)的演进与实战选择

从U盘到高端SSD&#xff1a;一文搞懂FTL映射表&#xff08;块/页/混合&#xff09;的演进与实战选择 存储设备的性能差异往往隐藏在底层算法的设计哲学中。当你在电商平台对比两款SSD时&#xff0c;是否思考过为什么同样标称1TB容量的产品&#xff0c;价格能相差数倍&#xff…...

告别手动传Token!用JMeter的JSON Extractor搞定接口自动化登录(附实战配置)

告别手动传Token&#xff01;用JMeter的JSON Extractor实现无缝接口自动化登录 在接口测试的世界里&#xff0c;登录态管理就像一场永无止境的接力赛——每次请求都需要准确传递Token这个"接力棒"。传统的手工复制粘贴Token不仅效率低下&#xff0c;更是自动化测试流…...

生物医学英文文献去哪查?

想追踪领域前沿&#xff0c;国际数据库访问不稳定&#xff0c;找篇文献要翻三四个平台&#xff1b;想梳理本土研究进展&#xff0c;中文核心资源分散在不同库&#xff0c;检索起来浪费大半天&#xff1b;要做学科趋势分析&#xff0c;各种工具功能碎片化&#xff0c;导出数据还…...

成都不良资产收包出包难?专业处置破局存量盘活困境

不仅如此&#xff0c;规范化的不良资产处置模式&#xff0c;还能助力区域化解债务风险&#xff0c;稳定地方金融环境&#xff0c;激活存量资产活力&#xff0c;对地方经济发展起到正向推动作用。不良资产收包出包&#xff0c;拼的从来不是蛮力与时间&#xff0c;而是专业、合规…...

麦肯锡AI揭秘:AI的真正价值不在算法,而在重构组织与结构竞争力

【摘者按&#xff1a;麦肯锡在《The State of AI 2025》报告中深刻指出&#xff0c;AI的真正价值早已超越了单纯的算法性能&#xff0c;其核心在于通过“重构”来重塑企业的组织与结构竞争力。当企业走出“试点炼狱”&#xff0c;不再将AI视为简单的技术堆砌&#xff0c;而是将…...

告别手写轮播!用vue-j-scroll插件5分钟搞定Vue列表无缝滚动(含鼠标悬停控制)

5分钟极速集成&#xff1a;用vue-j-scroll实现Vue列表智能滚动方案 在数据密集型的现代Web应用中&#xff0c;动态列表展示几乎成为标配需求。无论是后台管理系统的操作日志、金融平台的实时交易流水&#xff0c;还是新闻客户端的资讯推送&#xff0c;流畅的自动滚动效果不仅能…...

餐饮行业使用的企业管理软件

你是否遇到过门店食材库存数与实际不符&#xff0c;月底盘点要通宵&#xff1f;或者多门店营收数据混乱&#xff0c;财务结账要花半个月&#xff1f;据中国烹饪协会数据&#xff0c;68%的中大型餐饮企业因管理软件适配性差&#xff0c;每年额外损耗10%-15%的食材成本。今天这篇…...