鸿蒙:应用级变量的状态管理

状态管理模块提供了应用程序的数据存储能力、持久化数据管理能力、UIAbility数据存储能力和应用程序需要的环境状态。

说明

本模块首批接口从API version 7开始支持,后续版本的新增接口,采用上角标单独标记接口的起始版本。

本文中T和S的含义如下:

类型

描述

T

Class,number,boolean,string和这些类型的数组形式。

S

number,boolean,string。

AppStorage

static Link(propName: string): any

与AppStorage中对应的propName建立双向数据绑定。如果给定的propName在AppStorage中存在,返回与AppStorage中propName对应属性的双向绑定数据。

双向绑定数据的修改会同步回AppStorage中,AppStorage会将变化同步到所有绑定该propName的数据和自定义组件中。

如果AppStorage中不存在propName,则返回undefined。

参数:

参数名

类型

必填

参数描述

propName

string

AppStorage中的属性名。

返回值:

类型

描述

any

返回双向绑定的数据,如果AppStorage不存在对应的propName,则返回undefined。

AppStorage.SetOrCreate('PropA', 47);
let linkToPropA1 = AppStorage.Link('PropA');
let linkToPropA2 = AppStorage.Link('PropA'); // linkToPropA2.get() == 47
linkToPropA1.set(48); // 双向同步: linkToPropA1.get() == linkToPropA2.get() == 48

static SetAndLink<T>(propName: string, defaultValue: T): SubscribedAbstractProperty<T>

与Link接口类似,如果给定的propName在AppStorage中存在,则返回该propName对应的属性的双向绑定数据。如果不存在,则使用defaultValue在AppStorage创建和初始化propName,返回其双向绑定数据。

参数:

参数名

类型

必填

参数描述

propName

string

AppStorage中的属性名。

defaultValue

T

当propName在AppStorage中不存在,使用defaultValue在AppStorage中初始化对应的propName。

返回值:

类型

描述

SubscribedAbstractProperty<T>

SubscribedAbstractProperty<T>的实例,和AppStorage中propName对应属性的双向绑定的数据。

AppStorage.SetOrCreate('PropA', 47);
let link1: SubscribedAbstractProperty<number> = AppStorage.SetAndLink('PropB', 49); // Create PropB 49
let link2: SubscribedAbstractProperty<number> = AppStorage.SetAndLink('PropA', 50); // PropA exists, remains 47

Prop

static Prop(propName: string): any

与AppStorage中对应的propName建立单向属性绑定。如果给定的propName在AppStorage中存在,则返回与AppStorage中propName对应属性的单向绑定数据。如果AppStorage中不存在propName,则返回undefined。单向绑定数据的修改不会被同步回AppStorage中。

参数:

参数名

类型

必填

参数描述

propName

string

AppStorage中的属性名。

返回值:

类型

描述

any

返回单向绑定的数据,如果AppStorage不存在对应的propName,则返回undefined。

AppStorage.SetOrCreate('PropA', 47);
let prop1 = AppStorage.Prop('PropA');
let prop2 = AppStorage.Prop('PropA');
prop1.set(1); // one-way sync: prop1.get()=1; but prop2.get() == 47

SetAndProp

static SetAndProp<S>(propName: string, defaultValue: S): SubscribedAbstractProperty<S>

与Prop接口类似。如果给定的propName在AppStorage存在,则返回该propName对应的属性的单向绑定数据。如果不存在,则使用defaultValue在AppStorage创建和初始化propName对应的属性,返回其单向绑定数据。

参数:

参数名

类型

必填

参数描述

propName

string

AppStorage中的属性名。

defaultValue

S

当propName在AppStorage中不存在时,使用default在AppStorage中初始化对应的propName。

返回值:

类型

描述

SubscribedAbstractProperty<S>

SubscribedAbstractProperty<S>的实例。

AppStorage.SetOrCreate('PropA', 47);
let prop: SubscribedAbstractProperty<number> = AppStorage.SetAndProp('PropB', 49); // PropA -> 47, PropB -> 49

Has

static Has(propName: string): boolean

判断propName对应的属性是否在AppStorage中存在。

参数:

参数名

类型

必填

参数描述

propName

string

AppStorage中的属性名。

返回值:

类型

描述

boolean

如果propName对应的属性在AppStorage中存在,则返回true。不存在则返回false。

AppStorage.Has('simpleProp');

Get

static Get<T>(propName: string): T | undefined

获取propName在AppStorage中对应的属性。如果不存在返回undefined。

参数:

参数名

类型

必填

参数描述

propName

string

AppStorage中的属性名。

返回值:

类型

描述

T | undefined

AppStorage中propName对应的属性,如果不存在返回undefined。

AppStorage.SetOrCreate('PropA', 47);
let value: number = AppStorage.Get('PropA'); // 47

Set

static Set<T>(propName: string, newValue: T): boolean

在AppStorage中设置propName对应属性的值。如果newValue的值和propName对应属性的值相同,即不需要做赋值操作,状态变量不会通知UI刷新propName对应属性的值。

参数:

参数名

类型

必填

参数描述

propName

string

AppStorage中的属性名。

newValue

T

属性值,不能为undefined或null。

返回值:

类型

描述

boolean

如果AppStorage不存在propName对应的属性,或者设置的newValue是undefined或者null,返回false。设置成功则返回true。

AppStorage.SetOrCreate('PropA', 48);
let res: boolean = AppStorage.Set('PropA', 47) // true
let res1: boolean = AppStorage.Set('PropB', 47) // false

SetOrCreate

static SetOrCreate<T>(propName: string, newValue: T): void

如果propName已经在AppStorage中存在,并且newValue和propName对应属性的值不同,则设置propName对应属性的值为newValue,否则状态变量不会通知UI刷新propName对应属性的值。

如果propName不存在,则创建propName属性,值为newValue。setOrCreate只可以创建单个AppStorage的键值对,如果想创建多个AppStorage键值对,可以多次调用此方法。

参数:

参数名

类型

必填

参数描述

propName

string

AppStorage中的属性名。

newValue

T

属性值,不能为undefined或null。

AppStorage.SetOrCreate('simpleProp', 121);

Delete

static Delete(propName: string): boolean

在AppStorage中删除propName对应的属性。

在AppStorage中删除该属性的前提是必须保证该属性没有订阅者。如果有订阅者,则返回false。删除成功返回true。

属性的订阅者为Link、Prop等接口绑定的propName,以及@StorageLink('propName')和@StorageProp('propName')。这就意味着如果自定义组件中使用@StorageLink('propName')和@StorageProp('propName')或者SubscribedAbstractProperty实例依旧对propName有同步关系,则该属性不能从AppStorage中删除。

参数:

参数名

类型

必填

参数描述

propName

string

AppStorage中的属性名。

返回值:

类型

描述

boolean

如果AppStorage中有对应的属性,且该属性已经没有订阅者,则删除成功,返回true。如果属性不存在,或者该属性还存在订阅者,则返回false。

AppStorage.SetOrCreate('PropA', 47);
AppStorage.Link('PropA');
let res: boolean = AppStorage.Delete('PropA'); // false, PropA still has a subscriberAppStorage.SetOrCreate('PropB', 48);
let res1: boolean = AppStorage.Delete('PropB'); // true, PropB is deleted from AppStorage successfully

Keys

static Keys(): IterableIterator<string>

返回AppStorage中所有的属性名。

返回值:

类型

描述

IterableIterator<string>

AppStorage中所有的属性名。

AppStorage.SetOrCreate('PropB', 48);
let keys: IterableIterator<string> = AppStorage.Keys()

staticClear

static staticClear(): boolean

删除所有的属性。

从API version 9开始废弃,推荐使用Clear9+。

返回值:

类型

描述

boolean

删除所有的属性,如果当前有状态变量依旧引用此属性,返回false。

let simple = AppStorage.staticClear();

Clear9+

static Clear(): boolean

清除AppStorage的所有的属性。在AppStorage中清除所有属性的前提是,已经没有任何订阅者。如果有,则什么都不做返回false;删除成功返回true。

订阅者的含义和参考Delete。

返回值:

类型

描述

boolean

如果AppStorage中的属性已经没有订阅者,则清除成功,返回true。否则返回false。

AppStorage.SetOrCreate('PropA', 47);
let res: boolean = AppStorage.Clear(); // true, there are no subscribers

IsMutable

static IsMutable(propName: string): boolean

返回AppStorage中propName对应的属性是否是可变的。

参数:

参数名

类型

必填

参数描述

propName

string

AppStorage中的属性名。

返回值:

类型

描述

boolean

返回AppStorage中propNam对应的属性是否是可变的。

AppStorage.SetOrCreate('PropA', 47);
let res: boolean = AppStorage.IsMutable('simpleProp');

Size

static Size(): number

返回AppStorage中的属性数量。

返回值:

类型

描述

number

返回AppStorage中属性的数量。

AppStorage.SetOrCreate('PropB', 48);
let res: number = AppStorage.Size(); // 1

LocalStorage9+

constructor9+

constructor(initializingProperties?: Object)

创建一个新的LocalStorage实例。使用Object.keys(initializingProperties)返回的属性和其数值,初始化LocalStorage实例。

从API version 9开始,该接口支持在ArkTS卡片中使用。

参数:

参数名

类型

必填

参数描述

initializingProperties

Object

用initializingProperties包含的属性和数值初始化LocalStorage。initializingProperties不能为undefined。

let storage: LocalStorage = new LocalStorage({ 'PropA': 47 });

GetShared9+

static GetShared(): LocalStorage

获取当前stage共享的LocalStorage实例。使用案例可参考将LocalStorage实例从UIAbility共享到一个或多个视图。

从API version 9开始,该接口支持在ArkTS卡片中使用。

模型约束:此接口仅可在Stage模型下使用。

返回值:

类型

描述

LocalStorage

返回LocalStorage实例。

let storage: LocalStorage = LocalStorage.GetShared();

has9+

has(propName: string): boolean

判断propName对应的属性是否在LocalStorage中存在。

从API version 9开始,该接口支持在ArkTS卡片中使用。

参数:

参数名

类型

必填

参数描述

propName

string

LocalStorage中的属性名。

返回值:

类型

描述

boolean

如果propName对应的属性在AppStorage中存在,则返回true。不存在则返回false。

let storage: LocalStorage = new LocalStorage({ 'PropA': 47 });
storage.has('PropA'); // true

get9+

get<T>(propName: string): T | undefined

获取propName在LocalStorage中对应的属性。

从API version 9开始,该接口支持在ArkTS卡片中使用。

参数:

参数名

类型

必填

参数描述

propName

string

LocalStorage中的属性名。

返回值:

类型

描述

T | undefined

LocalStorage中propName对应的属性,如果不存在返回undefined。

let storage: LocalStorage = new LocalStorage({ 'PropA': 47 });
let value: number = storage.get('PropA'); // 47

set9+

set<T>(propName: string, newValue: T): boolean

在LocalStorage中设置propName对应属性的值。如果newValue的值和propName对应属性的值相同,即不需要做赋值操作,状态变量不会通知UI刷新propName对应属性的值。

从API version 9开始,该接口支持在ArkTS卡片中使用。

参数:

参数名

类型

必填

参数描述

propName

string

LocalStorage中的属性名。

newValue

T

属性值,不能为undefined或者null。

返回值:

类型

描述

boolean

如果LocalStorage不存在propName对应的属性,或者设置的newValue是undefined或者null,返回false。设置成功返回true。

let storage: LocalStorage = new LocalStorage({ 'PropA': 47 });
let res: boolean = storage.set('PropA', 47); // true
let res1: boolean = storage.set('PropB', 47); // false

setOrCreate9+

setOrCreate<T>(propName: string, newValue: T): boolean

如果propName已经在LoStorage中存在,并且newValue和propName对应属性的值不同,则设置propName对应属性的值为newValue,否则状态变量不会通知UI刷新propName对应属性的值。

如果propName不存在,则创建propName属性,值为newValue。setOrCreate只可以创建单个LocalStorage的键值对,如果想创建多个LocalStorage键值对,可以多次调用此方法。

从API version 9开始,该接口支持在ArkTS卡片中使用。

参数:

参数名

类型

必填

参数描述

propName

string

LocalStorage中的属性名。

newValue

T

属性值,不能为undefined或者null。

返回值:

类型

描述

boolean

如果设置的newValue是undefined或者null,返回false。

如果LocalStorage存在propName,则更新其值为newValue,返回true。

如果LocalStorage不存在propName,则创建propName,并初始化其值为newValue,返回true。

let storage: LocalStorage = new LocalStorage({ 'PropA': 47 });
let res: boolean =storage.setOrCreate('PropA', 121); // true
let res1: boolean =storage.setOrCreate('PropB', 111); // true
let res2: boolean =storage.setOrCreate('PropB', undefined); // false

link9+

link<T>(propName: string): SubscribedAbstractProperty<T>

如果给定的propName在LocalStorage实例中存在,则返回与LocalStorage中propName对应属性的双向绑定数据。

双向绑定数据的修改会被同步回LocalStorage中,LocalStorage会将变化同步到所有绑定该propName的数据和Component中。

如果LocalStorage中不存在propName,则返回undefined。

从API version 9开始,该接口支持在ArkTS卡片中使用。

参数:

参数名

类型

必填

参数描述

propName

string

LocalStorage中的属性名。

返回值:

类型

描述

SubscribedAbstractProperty<T>

SubscribedAbstractProperty<T>的实例,如果AppStorage不存在对应的propName,再返回undefined。

let storage: LocalStorage = new LocalStorage({ 'PropA': 47 });
let linkToPropA1: SubscribedAbstractProperty<number> = storage.link('PropA');
let linkToPropA2: SubscribedAbstractProperty<number> = storage.link('PropA'); // linkToPropA2.get() == 47
linkToPropA1.set(48); // 双向同步: linkToPropA1.get() == linkToPropA2.get() == 48

setAndLink9+

setAndLink<T>(propName: string, defaultValue: T): SubscribedAbstractProperty<T>

与Link接口类似,如果给定的propName在LocalStorage存在,则返回该propName对应的属性的双向绑定数据。如果不存在,则使用defaultValue在LocalStorage创建和初始化propName,返回其双向绑定数据。

从API version 9开始,该接口支持在ArkTS卡片中使用。

参数:

参数名

类型

必填

参数描述

propName

string

LocalStorage中的属性名。

defaultValue

T

当propName在LocalStorage中不存在,使用default在LocalStorage中初始化对应的propName。

返回值:

类型

描述

SubscribedAbstractProperty<T>

SubscribedAbstractProperty<T>的实例,如果AppStorage不存在对应的propName,再返回undefined。

let storage: LocalStorage = new LocalStorage({ 'PropA': 47 });
let link1: SubscribedAbstractProperty<number> = storage.setAndLink('PropB', 49); // Create PropB 49
var link2: SubscribedAbstractProperty<number> = storage.setAndLink('PropA', 50); // PropA exists, remains 47

prop9+

prop<S>(propName: string): SubscribedAbstractProperty<S>

如果给定的propName在LocalStorage存在,则返回与LocalStorage中propName对应属性的单向绑定数据。如果LocalStorage中不存在propName,则返回undefined。单向绑定数据的修改不会被同步回LocalStorage中。

从API version 9开始,该接口支持在ArkTS卡片中使用。

参数:

参数名

类型

必填

参数描述

propName

string

LocalStorage中的属性名。

返回值:

类型

描述

SubscribedAbstractProperty<S>

SubscribedAbstractProperty<S>的实例,如果AppStorage不存在对应的propName,则返回undefined。

let storage: LocalStorage = new LocalStorage({ 'PropA': 47 });
let prop1: SubscribedAbstractProperty<number> = storage.prop('PropA');
let prop2: SubscribedAbstractProperty<number> = storage.prop('PropA');
prop1.set(1); // one-way sync: prop1.get()=1; but prop2.get() == 47

setAndProp9+

setAndProp<S>(propName: string, defaultValue: S): SubscribedAbstractProperty<S>

propName在LocalStorage存在,则返回该propName对应的属性的单向绑定数据。如果不存在,则使用defaultValue在LocalStorage创建和初始化propName对应的属性,返回其单向绑定数据。

从API version 9开始,该接口支持在ArkTS卡片中使用。

参数:

参数名

类型

必填

参数描述

propName

string

LocalStorage中的属性名。

defaultValue

S

当propName在AppStorage中不存在,使用default在AppStorage中初始化对应的propName。

返回值:

类型

描述

SubscribedAbstractProperty<S>

SubscribedAbstractProperty<S>的实例,和AppStorage中propName对应属性的单向绑定的数据。

let storage: LocalStorage = new LocalStorage({ 'PropA': 47 });
let prop: SubscribedAbstractProperty<number> = storage.setAndProp('PropB', 49); // PropA -> 47, PropB -> 49

delete9+

delete(propName: string): boolean

在LocalStorage中删除propName对应的属性。删除属性的前提是该属性已经没有订阅者,如果有则返回false。删除成功则返回true。

属性的订阅者是link,prop接口绑定的propName,以及@LocalStorageLink('propName')和@LocalStorageProp('propName')。如果自定义组件Component中使用或者SubscribedAbstractProperty(link和prop接口的返回类型)依旧有同步关系,则该属性不能从LocalStorage中删除。

从API version 9开始,该接口支持在ArkTS卡片中使用。

参数:

参数名

类型

必填

参数描述

propName

string

LocalStorage中的属性名。

返回值:

类型

描述

boolean

如果LocalStorage中有对应的属性,且该属性已经没有订阅者,则删除成功返回true。如果属性不存在,或者该属性还存在订阅者,则返回false。

let storage: LocalStorage = new LocalStorage({ 'PropA': 47 });
storage.link('PropA');
let res: boolean = storage.delete('PropA'); // false, PropA still has a subscriber
let res1: boolean = storage.delete('PropB'); // false, PropB is not in storage
storage.setOrCreate('PropB', 48);
let res2: boolean = storage.delete('PropB'); // true, PropB is deleted from storage successfully

keys9+

keys(): IterableIterator<string>

返回LocalStorage中所有的属性名。

从API version 9开始,该接口支持在ArkTS卡片中使用。

返回值:

类型

描述

IterableIterator<string>

LocalStorage中所有的属性名。

let storage: LocalStorage = new LocalStorage({ 'PropA': 47 });
let keys: IterableIterator<string> = storage.keys();

size9+

size(): number

返回LocalStorage中的属性数量。

从API version 9开始,该接口支持在ArkTS卡片中使用。

返回值:

类型

描述

number

返回键值对的数量。

let storage: LocalStorage = new LocalStorage({ 'PropA': 47 });
let res: number = storage.size(); // 1

clear9+

clear(): boolean

清除LocalStorage的所有的属性。在LocalStorage中清除所有属性的前提是已经没有任何订阅者。如果有则返回false;清除成功返回true。

从API version 9开始,该接口支持在ArkTS卡片中使用。

返回值:

类型

描述

boolean

如果LocalStorage中的属性已经没有任何订阅者,则清除成功,返回true。否则返回false。

let storage: LocalStorage = new LocalStorage({ 'PropA': 47 });
let res: boolean = storage.clear(); // true, there are no subscribers

SubscribedAbstractProperty

get9+

abstract get(): T

读取从AppStorage/LocalStorage同步属性的数据。

从API version 9开始,该接口支持在ArkTS卡片中使用。

返回值:

类型

描述

T

AppStorage/LocalStorage同步属性的数据。

AppStorage.SetOrCreate('PropA', 47);
let prop1 = AppStorage.Prop('PropA');
prop1.get(); // prop1.get()=47

set9+

abstract set(newValue: T): void

设置AppStorage/LocalStorage同步属性的数据。

从API version 9开始,该接口支持在ArkTS卡片中使用。

参数:

参数名

类型

必填

参数描述

newValue

T

要设置的数据。

AppStorage.SetOrCreate('PropA', 47);
let prop1 = AppStorage.Prop('PropA');
prop1.set(1); // prop1.get()=1

PersistentStorage

PersistProp

static PersistProp<T>(key: string, defaultValue: T): void

将AppStorage中key对应的属性持久化到文件中。该接口的调用通常在访问AppStorage之前。

确定属性的类型和值的顺序如下:

  1. 如果PersistentStorage文件中存在key对应的属性,在AppStorage中创建对应的propName,并用在PersistentStorage中找到的key的属性初始化;
  2. 如果PersistentStorage文件中没有查询到key对应的属性,则在AppStorage中查找key对应的属性。如果找到key对应的属性,则将该属性持久化;
  3. 如果AppStorage也没查找到key对应的属性,则在AppStorage中创建key对应的属性。用defaultValue初始化其值,并将该属性持久化。

根据上述的初始化流程,如果AppStorage中有该属性,则会使用其值,覆盖掉PersistentStorage文件中的值。由于AppStorage是内存内数据,该行为会导致数据丧失持久化能力。示例请参考在PersistentStorage之前访问AppStorage中的属性。

参数:

参数名

类型

必填

参数描述

key

string

属性名。

defaultValue

T

在PersistentStorage和AppStorage未查询到时,则使用默认值初始化初始化它。不允许为undefined和null。

说明

AppStorage的属性向PersistentStorage中持久化的允许的类型是:

  • number,string,boolean,enum基础类型。
  • Object中可序列化的属性。
  • 不允许undefined和null。

示例:

PersistentStorage.PersistProp('highScore', '0');

DeleteProp

static DeleteProp(key: string): void

PersistProp的逆向操作。将key对应的属性从PersistentStorage删除,后续AppStorage的操作,对PersistentStorage不会再有影响。

参数:

参数名

类型

必填

参数描述

key

string

PersistentStorage中的属性名。

PersistentStorage.DeleteProp('highScore');

PersistProps

static PersistProps(properties: {key: string, defaultValue: any;}[]): void

行为和PersistProp类似,不同在于可以一次性持久化多个数据,适合在应用启动的时候初始化。

参数:

参数名

类型

必填

参数描述

properties

{key: string, defaultValue: any}[]

持久化数组,启动key为属性名,defaultValue为默认值。规则同PersistProp。

PersistentStorage.PersistProps([{ key: 'highScore', defaultValue: '0' }, { key: 'wightScore', defaultValue: '1' }]);

Keys

static Keys(): Array<string>

返回所有持久化属性的key的数组。

返回值:

类型

描述

Array<string>

返回所有持久化属性的key的数组。

let keys: Array<string> = PersistentStorage.Keys();

Environment

EnvProp

static EnvProp<S>(key: string, value: S): boolean

将Environment的内置环境变量key存入AppStorage中。如果系统中未查询到Environment环境变量key的值,则使用默认值value,存入成功,返回true。如果AppStorage已经有对应的key,则返回false。

所以建议在程序启动的时候调用该接口。

在没有调用EnvProp,就使用AppStorage读取环境变量是错误的。

参数:

参数名

类型

必填

参数描述

key

string

环境变量名称,支持的范围详见内置环境变量说明。

value

S

查询不到环境变量key,则使用value作为默认值存入AppStorage中。

返回值:

类型

描述

boolean

如果key对应的属性在AppStorage中存在,则返回false。不存在则在AppStorage中创建key对应的属性,返回true。

示例:

Environment.EnvProp('accessibilityEnabled', 'default');

内置环境变量说明

key

类型

说明

accessibilityEnabled

string

无障碍屏幕朗读是否启用。

colorMode

ColorMode

深浅色模式,可选值为:

- ColorMode.LIGHT:浅色模式;

- ColorMode.DARK:深色模式。

fontScale

number

字体大小比例。

fontWeightScale

number

字重比例。

layoutDirection

LayoutDirection

布局方向类型,可选值为:

- LayoutDirection.LTR:从左到右;

- LayoutDirection.RTL:从右到左。

languageCode

string

当前系统语言,小写字母,例如zh。

EnvProps

static EnvProps(props: {key: string; defaultValue: any;}[]): void

和EnvProp类似,不同点在于参数为数组,可以一次性初始化多个数据。建议在应用启动时调用,将系统环境变量批量存入AppStorage中。

参数:

参数名

类型

必填

参数描述

props

{key: string, defaultValue: any}[]

系统环境变量和默认值的键值对的数组。

Environment.EnvProps([{ key: 'accessibilityEnabled', defaultValue: 'default' }, { key: 'languageCode', defaultValue: 'en'}, { key: 'prop', defaultValue: 'hhhh' }]);

Keys

static Keys(): Array<string>

返回环境变量的属性key的数组。

返回值:

类型

描述

Array<string>

返回关联的系统项数组。

Environment.EnvProps([{ key: 'accessibilityEnabled', defaultValue: 'default' }, { key: 'languageCode', defaultValue: 'en' }, { key: 'prop', defaultValue: 'hhhh' }]);let keys: Array<string> = Environment.Keys(); // accessibilityEnabled, languageCode, prop

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/797582.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【翻译】F - Max Sum Counting Editorial by en_translator

给定两个序列 A 和 B&#xff0c;按照 A_i 的增序对它们进行排序&#xff08;如果 A_i 相等&#xff0c;则按照 B_i 来确定顺序&#xff09;。对于集合 {1, 2, ..., N} 的每个非空子集 S&#xff0c;满足 max_{i∈S} A_i A_{max(S)}。因此&#xff0c;我们可以将问题转化如下。…

Tensor.view()的用法

view() x.view() 是 PyTorch 中用于改变张量形状的方法之一&#xff0c;它允许你在保持张量元素总数不变的情况下&#xff0c;重新组织张量的维度和大小。 view() 方法的用法如下&#xff1a; x.view(*shape)其中 x 是要进行形状变换的张量&#xff0c;shape 是一个整数或整…

vmware 中的Ubuntu系统虚拟机忘记root密码强制重置操作

忘记密码情况下&#xff0c;vmware虚拟机重置Ubuntu的root密码 在企业使用的vmware ESXI中重置Ubuntu系统root密码 1-本地电脑安装个人版的vmware workstation&#xff0c;目的&#xff1a;vmware ESXI自带的远程控制台无法输入指定的键盘按键&#xff0c;需要借助外部的远程辅…

mac在终端使用命令启动IDEA打开项目

mac 在终端使用命令启动IDEA打开项目 背景&#xff1a;每次从 git 中 clone 下来项目&#xff0c;都需要手动打开 finder&#xff0c;然后拖到 IDEA 图标上打开项目&#xff0c;探索类似 vscode 一样使用 code 命令打开项目&#xff0c;一键启动IDEA并打开项目。 macOS 终端 创…

【ELK】搭建elk日志平台(使用docker-compose),并接入springboot项目

1、环境搭建 前提条件&#xff1a;请自行安装docker以及docker-compose环境 version: 3 services:elasticsearch:image: elasticsearch:7.14.0container_name: elasticsearchports:- "9200:9200"- "9300:9300"environment:# 以单一节点模式启动discovery…

【算法 | 背包专题】01背包(解题思路+题单)

前言 什么是背包问题&#xff1f; 背包问题是一种经典的组合优化问题&#xff0c;它的核心思想是在有限的资源&#xff08;如背包的容量&#xff09;下&#xff0c;如何选择物品以达到某种目标&#xff08;如最大价值&#xff09;的最优解。 背包问题可以分为几种类型&#…

java之static详细总结

static也叫静态&#xff0c;可以修饰成员变量、成员方法。 成员变量 按照有无static分为两种&#xff1a; 类变量&#xff1a;static修饰&#xff0c;属于类&#xff0c;与类一起加载一次&#xff0c;在内存中只有一份&#xff0c;会被类的全部对象共享实例变量&#xff08;…

Elastic AI Assistant for Observability 和 Microsoft Azure OpenAI 入门

作者&#xff1a;来自 Elastic Jonathan Simon 最近&#xff0c;Elastic 宣布 AI 观测助手现已正式向所有 Elastic 用户开放。该 AI 观测助手为 Elastic 观测提供了一种新工具&#xff0c;提供了大型语言模型&#xff08;LLM&#xff09;连接的聊天和上下文洞察&#xff0c;以解…

WebView 后退键处理技巧:如何处理网页历史记录

引言 WebView 是移动应用开发中一个非常重要的组件&#xff0c;它允许开发者在应用内部直接展示网页内容&#xff0c;而无需跳转到外部浏览器。这种能力极大地丰富了移动应用的功能&#xff0c;为用户提供了更加完整的体验。以下是 WebView 在移动应用中的一些常见使用场景&am…

JavaWeb入门——Web前端概述及HTML,CSS语言基本使用

前言&#xff1a; java基础已经学完&#xff0c;开始学习javaWeb相关的内容&#xff0c;整理下笔记&#xff0c;打好基础&#xff0c;daydayup!!! Web Web&#xff1a;全球广域网&#xff0c;也称万维网&#xff08;www World Wide Web&#xff09;&#xff0c;能够通过浏览器访…

Hadoop MapReduce

MapReduce分为两个阶段&#xff0c;分为Map阶段和Reduce阶段&#xff0c;可以自定义map函数和reduce函数&#xff0c; map函数的输入是行在文件的字节偏移量&#xff0c;value是文件的一行数据。 reduce函数的输入是key和对应key的value组&#xff0c;然后reduce函数可以对这…

加州大学欧文分校英语基础语法专项课程01:Word Forms and Simple Present Tense 学习笔记

Word Forms and Simple Present Tense Course Certificate 本文是学习Coursera上 Word Forms and Simple Present Tense 这门课程的学习笔记。 文章目录 Word Forms and Simple Present TenseWeek 01: Introduction & BE VerbLearning Objectives Word FormsWord Forms (P…

彩虹易支付搭建教程

服务器环境 推荐使用宝塔、AMH、XP等面板一键部署服务器环境。 PHP版本&#xff1a;>7.1&#xff0c;推荐7.4或8.0 MySQL版本&#xff1a;5.6或5.7 伪静态配置 直接上传后访问即可完成安装&#xff01;创建好网站之后&#xff0c;需要配置伪静态才能正常发起支付。以下分…

Linux——gdb

gdb调试 (1)debug版本: 在编译阶段会加入某些调试信息; 调试信息是在编译的过程中加入到中间文件.o文件的; gcc -c main.c -g:生成包含调试信息的中间文件 gcc -o main main.o 一步执行:gcc -o main main.c -g (1) (2)release版本: 发行版本,没有调试信息; gcc默认生成relea…

C++ 【桥接模式】

简单介绍 桥接模式属于 结构型模式 | 可将一个大类或一系列紧密相关的类拆分 为抽象和实现两个独立的层次结构&#xff0c; 从而能在开发时分别使用。 聚合关系&#xff1a;两个类处于不同的层次&#xff0c;强调了一个整体/局部的关系,当汽车对象销毁时&#xff0c;轮胎对象…

psutil库(获取系统资源信息)

1、功能简介 psutil库是Python的一个第三方模块&#xff0c;它提供了丰富的接口来获取操作系统和系统硬件的信息。以下是psutil的一些主要功能&#xff1a; CPU信息获取&#xff1a;可以使用psutil来获取CPU的逻辑数量和物理核心数量。这有助于了解系统的处理能力。磁盘使用情…

基于单片机光伏太阳能跟踪系统设计

**单片机设计介绍&#xff0c;基于单片机光伏太阳能跟踪系统设计 文章目录 一 概要二、功能设计三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机光伏太阳能跟踪系统的设计&#xff0c;旨在通过单片机技术实现对光伏太阳能设备的自动跟踪&#xff0c;以提高太阳…

Go语言中测试和性能

1. 测试:软件开发最重要的方面 测试软件程序可能是软件开发人员能够做的最重要的事情。通过测试代码的功能,开发人员能够在很大程度上确定程序是有效的。另外,每次修改代码后,开发人员都可运行测试,确认没有引入Bug和衰退。通过测试软件,还能够让软件工程师确认程序按期望…

寄快递便宜啦!德邦、韵达、京东、圆通等八大品牌快递五折起!

低价服务&#xff0c;为你的快递需求保驾护航。 一、与全网主流快递合作&#xff0c;信赖与质量的共同见证 是一家整合快递、物流、及国际快递资源的综合快递服务平台&#xff0c;通过人工智能比价系统&#xff0c;为个人及企业客户提供市面上优惠的快递价格&#xff0c;目前…

Android视角看鸿蒙第十一课-鸿蒙的布局之层叠布局Stack

Android视角看鸿蒙第十一课-鸿蒙的布局之层叠布局 导读 在Android中我个人认为&#xff0c;最离不开的就是LinearLayout和FrameLayout了&#xff0c;RelativeLayout我都基本不用的。 所以我把层叠布局排在了第二位。 官方描述 如何定义层叠布局 Stack组件为容器组件&#x…