鸿蒙开发通信与连接:【@ohos.rpc (RPC通信)】

RPC通信

本模块提供进程间通信能力,包括设备内的进程间通信(IPC)和设备间的进程间通信(RPC),前者基于Binder驱动,后者基于软总线驱动。

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

导入模块

import rpc from '@ohos.rpc';

MessageParcel

该类提供读写基础类型及数组、IPC对象、接口描述符和自定义序列化对象的方法。

create

create(): MessageParcel

静态方法,创建MessageParcel对象。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
MessageParcel返回创建的MessageParcel对象。

示例:

let data = rpc.MessageParcel.create();
console.log("RpcClient: data is " + data);

reclaim

reclaim(): void

释放不再使用的MessageParcel对象。

系统能力:SystemCapability.Communication.IPC.Core

示例:

let reply = rpc.MessageParcel.create();
reply.reclaim();

writeRemoteObject

writeRemoteObject(object: [IRemoteObject]): boolean

序列化远程对象并将其写入MessageParcel对象。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
object[IRemoteObject]要序列化并写入MessageParcel的远程对象。

返回值:

类型说明
boolean如果操作成功,则返回true;否则返回false。

示例:

class MyDeathRecipient {onRemoteDied() {console.log("server died");}
}
class TestRemoteObject extends rpc.RemoteObject {constructor(descriptor) {super(descriptor);}addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {return true;}removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {return true;}isObjectDead(): boolean {return false;}
}
let data = rpc.MessageParcel.create();
let testRemoteObject = new TestRemoteObject("testObject");
data.writeRemoteObject(testRemoteObject);

readRemoteObject

readRemoteObject(): IRemoteObject

从MessageParcel读取远程对象。此方法用于反序列化MessageParcel对象以生成IRemoteObject。远程对象按写入MessageParcel的顺序读取。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
[IRemoteObject]读取到的远程对象。

示例:

class MyDeathRecipient {onRemoteDied() {console.log("server died");}
}
class TestRemoteObject extends rpc.RemoteObject {constructor(descriptor) {super(descriptor);}addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {return true;}removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {return true;}isObjectDead(): boolean {return false;}
}
let data = rpc.MessageParcel.create();
let testRemoteObject = new TestRemoteObject("testObject");
data.writeRemoteObject(testRemoteObject);
let proxy = data.readRemoteObject();

writeInterfaceToken

writeInterfaceToken(token: string): boolean

将接口描述符写入MessageParcel对象。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
tokenstring字符串类型描述符。

返回值:

类型说明
boolean如果操作成功,则返回true;否则返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeInterfaceToken("aaa");
console.log("RpcServer: writeInterfaceToken is " + result);

readInterfaceToken

readInterfaceToken(): string

从MessageParcel中读取接口描述符。接口描述符按写入MessageParcel的顺序读取。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
string返回读取到的接口描述符。

示例:

class Stub extends rpc.RemoteObject {onRemoteRequest(code, data, reply, option) {let interfaceToken = data.readInterfaceToken();console.log("RpcServer: interfaceToken is " + interfaceToken);return true;}
}

getSize

getSize(): number

获取当前MessageParcel的数据大小。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number获取的MessageParcel的数据大小。以字节为单位。

示例:

let data = rpc.MessageParcel.create();
let size = data.getSize();
console.log("RpcClient: size is " + size);

getCapacity

getCapacity(): number

获取当前MessageParcel的容量。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number获取的MessageParcel的容量大小。以字节为单位。

示例:

let data = rpc.MessageParcel.create();
let result = data.getCapacity();
console.log("RpcClient: capacity is " + result);

setSize

setSize(size: number): boolean

设置MessageParcel实例中包含的数据大小。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
sizenumberMessageParcel实例的数据大小。以字节为单位。

返回值:

类型说明
boolean设置成功返回true,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let setSize = data.setSize(16);
console.log("RpcClient: setSize is " + setSize);

setCapacity

setCapacity(size: number): boolean

设置MessageParcel实例的存储容量。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
sizenumberMessageParcel实例的存储容量。以字节为单位。

返回值:

类型说明
boolean设置成功返回true,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.setCapacity(100);
console.log("RpcClient: setCapacity is " + result);

getWritableBytes

getWritableBytes(): number

获取MessageParcel的可写字节空间。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number获取到的MessageParcel的可写字节空间。以字节为单位。

示例:

class Stub extends rpc.RemoteObject {onRemoteRequest(code, data, reply, option) {let getWritableBytes = data.getWritableBytes();console.log("RpcServer: getWritableBytes is " + getWritableBytes);return true;}
}

getReadableBytes

getReadableBytes(): number

获取MessageParcel的可读字节空间。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number获取到的MessageParcel的可读字节空间。以字节为单位。

示例:

class Stub extends rpc.RemoteObject {onRemoteRequest(code, data, reply, option) {let result = data.getReadableBytes();console.log("RpcServer: getReadableBytes is " + result);return true;}
}

getReadPosition

getReadPosition(): number

获取MessageParcel的读位置。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number返回MessageParcel实例中的当前读取位置。

示例:

let data = rpc.MessageParcel.create();
let readPos = data.getReadPosition();
console.log("RpcClient: readPos is " + readPos);

getWritePosition

getWritePosition(): number

获取MessageParcel的写位置。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number返回MessageParcel实例中的当前写入位置。

示例:

let data = rpc.MessageParcel.create();
data.writeInt(10);
let bwPos = data.getWritePosition();
console.log("RpcClient: bwPos is " + bwPos);

rewindRead

rewindRead(pos: number): boolean

重新偏移读取位置到指定的位置。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
posnumber开始读取数据的目标位置。

返回值:

类型说明
boolean如果读取位置发生更改,则返回true;否则返回false。

示例:

let data = rpc.MessageParcel.create();
data.writeInt(12);
data.writeString("parcel");
let number = data.readInt();
console.log("RpcClient: number is " + number);
data.rewindRead(0);
let number2 = data.readInt();
console.log("RpcClient: rewindRead is " + number2);

rewindWrite

rewindWrite(pos: number): boolean

重新偏移写位置到指定的位置。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
posnumber开始写入数据的目标位置。

返回值:

类型说明
boolean如果写入位置更改,则返回true;否则返回false。

示例:

let data = rpc.MessageParcel.create();
data.writeInt(4);
data.rewindWrite(0);
data.writeInt(5);
let number = data.readInt();
console.log("RpcClient: rewindWrite is: " + number);

writeByte

writeByte(val: number): boolean

将字节值写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
valnumber要写入的字节值。

返回值:

类型说明
boolean写入返回成功,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeByte(2);
console.log("RpcClient: writeByte is: " + result);

readByte

readByte(): number

从MessageParcel实例读取字节值。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number返回字节值。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeByte(2);
console.log("RpcClient: writeByte is: " + result);
let ret = data.readByte();
console.log("RpcClient: readByte is: " + ret);

writeShort

writeShort(val: number): boolean

将短整数值写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
valnumber要写入的短整数值。

返回值:

类型说明
boolean写入返回true,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeShort(8);
console.log("RpcClient: writeShort is: " + result);

readShort

readShort(): number

从MessageParcel实例读取短整数值。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number返回短整数值。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeShort(8);
console.log("RpcClient: writeShort is: " + result);
let ret = data.readShort();
console.log("RpcClient: readShort is: " + ret);

writeInt

writeInt(val: number): boolean

将整数值写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
valnumber要写入的整数值。

返回值:

类型说明
boolean写入返回成功,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeInt(10);
console.log("RpcClient: writeInt is " + result);

readInt

readInt(): number

从MessageParcel实例读取整数值。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number返回整数值。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeInt(10);
console.log("RpcClient: writeInt is " + result);
let ret = data.readInt();
console.log("RpcClient: readInt is " + ret);

writeLong

writeLong(val: number): boolean

将长整数值写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
valnumber要写入的长整数值

返回值:

类型说明
boolean写入成功返回true,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeLong(10000);
console.log("RpcClient: writeLong is " + result);

readLong

readLong(): number

从MessageParcel实例中读取长整数值。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number返回长整数值。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeLong(10000);
console.log("RpcClient: writeLong is " + result);
let ret = data.readLong();
console.log("RpcClient: readLong is " + ret);

writeFloat

writeFloat(val: number): boolean

将浮点值写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
valnumber要写入的浮点值。

返回值:

类型说明
boolean写入成功返回true,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeFloat(1.2);
console.log("RpcClient: writeFloat is " + result);

readFloat

readFloat(): number

从MessageParcel实例中读取浮点值。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number返回浮点值。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeFloat(1.2);
console.log("RpcClient: writeFloat is " + result);
let ret = data.readFloat();
console.log("RpcClient: readFloat is " + ret);

writeDouble

writeDouble(val: number): boolean

将双精度浮点值写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
valnumber要写入的双精度浮点值。

返回值:

类型说明
boolean写入成功返回true,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeDouble(10.2);
console.log("RpcClient: writeDouble is " + result);

readDouble

readDouble(): number

从MessageParcel实例读取双精度浮点值。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number返回双精度浮点值。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeDouble(10.2);
console.log("RpcClient: writeDouble is " + result);
let ret = data.readDouble();
console.log("RpcClient: readDouble is " + ret);

writeBoolean

writeBoolean(val: boolean): boolean

将布尔值写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
valboolean要写入的布尔值。

返回值:

类型说明
boolean写入成功返回true,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeBoolean(false);
console.log("RpcClient: writeBoolean is " + result);

readBoolean

readBoolean(): boolean

从MessageParcel实例读取布尔值。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
boolean返回读取到的布尔值。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeBoolean(false);
console.log("RpcClient: writeBoolean is " + result);
let ret = data.readBoolean();
console.log("RpcClient: readBoolean is " + ret);

writeChar

writeChar(val: number): boolean

将单个字符值写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
valnumber要写入的单个字符值。

返回值:

类型说明
boolean写入返回true,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeChar(97);
console.log("RpcClient: writeChar is " + result);

readChar

readChar(): number

从MessageParcel实例中读取单个字符值。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number返回单个字符值。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeChar(97);
console.log("RpcClient: writeChar is " + result);
let ret = data.readChar();
console.log("RpcClient: readChar is " + ret);

writeString

writeString(val: string): boolean

将字符串值写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
valstring要写入的字符串值,其长度应小于40960字节。

返回值:

类型说明
boolean写入成功返回true,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeString('abc');
console.log("RpcClient: writeString  is " + result);

readString

readString(): string

从MessageParcel实例读取字符串值。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
string返回字符串值。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeString('abc');
console.log("RpcClient: writeString  is " + result);
let ret = data.readString();
console.log("RpcClient: readString is " + ret);

writeSequenceable

writeSequenceable(val: Sequenceable): boolean

将自定义序列化对象写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
val[Sequenceable]要写入的可序列对象。

返回值:

类型说明
boolean写入成功返回true,否则返回false。

示例:

class MySequenceable {num: number;str: string;constructor(num, str) {this.num = num;this.str = str;}marshalling(messageParcel) {messageParcel.writeInt(this.num);messageParcel.writeString(this.str);return true;}unmarshalling(messageParcel) {this.num = messageParcel.readInt();this.str = messageParcel.readString();return true;}
}
let sequenceable = new MySequenceable(1, "aaa");
let data = rpc.MessageParcel.create();
let result = data.writeSequenceable(sequenceable);
console.log("RpcClient: writeSequenceable is " + result);

readSequenceable

readSequenceable(dataIn: Sequenceable) : boolean

从MessageParcel实例中读取成员变量到指定的对象(dataIn)。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
dataIn[Sequenceable]需要从MessageParcel读取成员变量的对象。

返回值:

类型说明
boolean如果反序列成功,则返回true;否则返回false。

示例:

class MySequenceable {num: number;str: string;constructor(num, str) {this.num = num;this.str = str;}marshalling(messageParcel) {messageParcel.writeInt(this.num);messageParcel.writeString(this.str);return true;}unmarshalling(messageParcel) {this.num = messageParcel.readInt();this.str = messageParcel.readString();return true;}
}
let sequenceable = new MySequenceable(1, "aaa");
let data = rpc.MessageParcel.create();
let result = data.writeSequenceable(sequenceable);
console.log("RpcClient: writeSequenceable is " + result);
let ret = new MySequenceable(0, "");
let result2 = data.readSequenceable(ret);
console.log("RpcClient: writeSequenceable is " + result2);

writeByteArray

writeByteArray(byteArray: number[]): boolean

将字节数组写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
byteArraynumber[]要写入的字节数组。

返回值:

类型说明
boolean写入成功返回true,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let ByteArrayVar = [1, 2, 3, 4, 5];
let result = data.writeByteArray(ByteArrayVar);
console.log("RpcClient: writeByteArray is " + result);

readByteArray

readByteArray(dataIn: number[]) : void

从MessageParcel实例读取字节数组。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
dataInnumber[]要读取的字节数组。

示例:

let data = rpc.MessageParcel.create();
let ByteArrayVar = [1, 2, 3, 4, 5];
let result = data.writeByteArray(ByteArrayVar);
console.log("RpcClient: writeByteArray is " + result);
let array = new Array(5);
data.readByteArray(array);

readByteArray

readByteArray(): number[]

从MessageParcel实例中读取字节数组。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number[]返回字节数组。

示例:

let data = rpc.MessageParcel.create();
let ByteArrayVar = [1, 2, 3, 4, 5];
let result = data.writeByteArray(ByteArrayVar);
console.log("RpcClient: writeByteArray is " + result);
let array = data.readByteArray();
console.log("RpcClient: readByteArray is " + array);

writeShortArray

writeShortArray(shortArray: number[]): boolean

将短整数数组写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
shortArraynumber[]要写入的短整数数组。

返回值:

类型说明
boolean写入返回true,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeShortArray([11, 12, 13]);
console.log("RpcClient: writeShortArray is " + result);

readShortArray

readShortArray(dataIn: number[]) : void

从MessageParcel实例中读取短整数数组。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
dataInnumber[]要读取的短整数数组。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeShortArray([11, 12, 13]);
console.log("RpcClient: writeShortArray is " + result);
let array = new Array(3);
data.readShortArray(array);

readShortArray

readShortArray(): number[]

从MessageParcel实例中读取短整数数组。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number[]返回短整数数组。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeShortArray([11, 12, 13]);
console.log("RpcClient: writeShortArray is " + result);
let array = data.readShortArray();
console.log("RpcClient: readShortArray is " + array);

writeIntArray

writeIntArray(intArray: number[]): boolean

将整数数组写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
intArraynumber[]要写入的整数数组。

返回值:

类型说明
boolean写入返回true,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeIntArray([100, 111, 112]);
console.log("RpcClient: writeIntArray is " + result);

readIntArray

readIntArray(dataIn: number[]) : void

从MessageParcel实例中读取整数数组。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
dataInnumber[]要读取的整数数组。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeIntArray([100, 111, 112]);
console.log("RpcClient: writeIntArray is " + result);
let array = new Array(3);
data.readIntArray(array);

readIntArray

readIntArray(): number[]

从MessageParcel实例中读取整数数组。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number[]返回整数数组。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeIntArray([100, 111, 112]);
console.log("RpcClient: writeIntArray is " + result);
let array = data.readIntArray();
console.log("RpcClient: readIntArray is " + array);

writeLongArray

writeLongArray(longArray: number[]): boolean

将长整数数组写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
longArraynumber[]要写入的长整数数组。

返回值:

类型说明
boolean写入返回true,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeLongArray([1111, 1112, 1113]);
console.log("RpcClient: writeLongArray is " + result);

readLongArray

readLongArray(dataIn: number[]) : void

从MessageParcel实例读取长整数数组。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
dataInnumber[]要读取的长整数数组。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeLongArray([1111, 1112, 1113]);
console.log("RpcClient: writeLongArray is " + result);
let array = new Array(3);
data.readLongArray(array);

readLongArray

readLongArray(): number[]

从MessageParcel实例中读取长整数数组。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number[]返回长整数数组。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeLongArray([1111, 1112, 1113]);
console.log("RpcClient: writeLongArray is " + result);
let array = data.readLongArray();
console.log("RpcClient: readLongArray is " + array);

writeFloatArray

writeFloatArray(floatArray: number[]): boolean

将浮点数组写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
floatArraynumber[]要写入的浮点数组。

返回值:

类型说明
boolean写入返回true,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeFloatArray([1.2, 1.3, 1.4]);
console.log("RpcClient: writeFloatArray is " + result);

readFloatArray

readFloatArray(dataIn: number[]) : void

从MessageParcel实例中读取浮点数组。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
dataInnumber[]要读取的浮点数组。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeFloatArray([1.2, 1.3, 1.4]);
console.log("RpcClient: writeFloatArray is " + result);
let array = new Array(3);
data.readFloatArray(array);

readFloatArray

readFloatArray(): number[]

从MessageParcel实例中读取浮点数组。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number[]返回浮点数组。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeFloatArray([1.2, 1.3, 1.4]);
console.log("RpcClient: writeFloatArray is " + result);
let array = data.readFloatArray();
console.log("RpcClient: readFloatArray is " + array);

writeDoubleArray

writeDoubleArray(doubleArray: number[]): boolean

将双精度浮点数组写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
doubleArraynumber[]要写入的双精度浮点数组。

返回值:

类型说明
boolean写入返回true,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeDoubleArray([11.1, 12.2, 13.3]);
console.log("RpcClient: writeDoubleArray is " + result);

readDoubleArray

readDoubleArray(dataIn: number[]) : void

从MessageParcel实例中读取双精度浮点数组。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
dataInnumber[]要读取的双精度浮点数组。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeDoubleArray([11.1, 12.2, 13.3]);
console.log("RpcClient: writeDoubleArray is " + result);
let array = new Array(3);
data.readDoubleArray(array);

readDoubleArray

readDoubleArray(): number[]

从MessageParcel实例读取双精度浮点数组。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number[]返回双精度浮点数组。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeDoubleArray([11.1, 12.2, 13.3]);
console.log("RpcClient: writeDoubleArray is " + result);
let array = data.readDoubleArray();
console.log("RpcClient: readDoubleArray is " + array);

writeBooleanArray

writeBooleanArray(booleanArray: boolean[]): boolean

将布尔数组写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
booleanArrayboolean[]要写入的布尔数组。

返回值:

类型说明
boolean写入成功返回true,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeBooleanArray([false, true, false]);
console.log("RpcClient: writeBooleanArray is " + result);

readBooleanArray

readBooleanArray(dataIn: boolean[]) : void

从MessageParcel实例中读取布尔数组。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
dataInboolean[]要读取的布尔数组。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeBooleanArray([false, true, false]);
console.log("RpcClient: writeBooleanArray is " + result);
let array = new Array(3);
data.readBooleanArray(array);

readBooleanArray

readBooleanArray(): boolean[]

从MessageParcel实例中读取布尔数组。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
boolean[]返回布尔数组。
let data = rpc.MessageParcel.create();
let result = data.writeBooleanArray([false, true, false]);
console.log("RpcClient: writeBooleanArray is " + result);
let array = data.readBooleanArray();
console.log("RpcClient: readBooleanArray is " + array);

writeCharArray

writeCharArray(charArray: number[]): boolean

将单个字符数组写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
charArraynumber[]要写入的单个字符数组。

返回值:

类型说明
boolean写入成功返回true,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeCharArray([97, 98, 88]);
console.log("RpcClient: writeCharArray is " + result);

readCharArray

readCharArray(dataIn: number[]) : void

从MessageParcel实例中读取单个字符数组。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
dataInnumber[]要读取的单个字符数组。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeCharArray([97, 98, 99]);
console.log("RpcClient: writeCharArray is " + result);
let array = new Array(3);
data.readCharArray(array);

readCharArray

readCharArray(): number[]

从MessageParcel实例读取单个字符数组。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number[]返回单个字符数组。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeCharArray([97, 98, 99]);
console.log("RpcClient: writeCharArray is " + result);
let array = data.readCharArray();
console.log("RpcClient: readCharArray is " + array);

writeStringArray

writeStringArray(stringArray: string[]): boolean

将字符串数组写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
stringArraystring[]要写入的字符串数组,数组单个元素的长度应小于40960字节。

返回值:

类型说明
boolean写入成功返回true,否则返回false。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeStringArray(["abc", "def"]);
console.log("RpcClient: writeStringArray is " + result);

readStringArray

readStringArray(dataIn: string[]) : void

从MessageParcel实例读取字符串数组。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
dataInstring[]要读取的字符串数组。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeStringArray(["abc", "def"]);
console.log("RpcClient: writeStringArray is " + result);
let array = new Array(2);
data.readStringArray(array);

readStringArray

readStringArray(): string[]

从MessageParcel实例读取字符串数组。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
string[]返回字符串数组。

示例:

let data = rpc.MessageParcel.create();
let result = data.writeStringArray(["abc", "def"]);
console.log("RpcClient: writeStringArray is " + result);
let array = data.readStringArray();
console.log("RpcClient: readStringArray is " + array);

writeNoException8+

writeNoException(): void

向MessageParcel写入“指示未发生异常”的信息。

系统能力:SystemCapability.Communication.IPC.Core

示例:

class MyDeathRecipient {onRemoteDied() {console.log("server died");}
}
class TestRemoteObject extends rpc.RemoteObject {constructor(descriptor) {super(descriptor);}addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {return true;}removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {return true;}isObjectDead(): boolean {return false;}onRemoteRequest(code, data, reply, option) {if (code === 1) {console.log("RpcServer: onRemoteRequest called");reply.writeNoException();return true;} else {console.log("RpcServer: unknown code: " + code);return false;}}
}

readException8+

readException(): void

从MessageParcel中读取异常。

系统能力:SystemCapability.Communication.IPC.Core

示例:

import FA from "@ohos.ability.featureAbility";
let proxy;
let connect = {onConnect: function(elementName, remoteProxy) {console.log("RpcClient: js onConnect called.");proxy = remoteProxy;},onDisconnect: function(elementName) {console.log("RpcClient: onDisconnect");},onFailed: function() {console.log("RpcClient: onFailed");}
};
let want = {"bundleName": "com.ohos.server","abilityName": "com.ohos.server.MainAbility",
};
FA.connectAbility(want, connect);
let option = new rpc.MessageOption();
let data = rpc.MessageParcel.create();
let reply = rpc.MessageParcel.create();
data.writeInt(1);
data.writeString("hello");
proxy.sendRequest(1, data, reply, option).then(function(errCode) {if (errCode === 0) {console.log("sendRequest got result");reply.readException();let msg = reply.readString();console.log("RPCTest: reply msg: " + msg);} else {console.log("RPCTest: sendRequest failed, errCode: " + errCode);}}).catch(function(e) {console.log("RPCTest: sendRequest got exception: " + e.message);}).finally (() => {console.log("RPCTest: sendRequest ends, reclaim parcel");data.reclaim();reply.reclaim();});

writeSequenceableArray

writeSequenceableArray(sequenceableArray: Sequenceable[]): boolean

将可序列化对象数组写入MessageParcel实例。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
sequenceableArraySequenceable[]要写入的可序列化对象数组。

返回值:

类型说明
boolean写入成功返回true,否则返回false。

示例:

class MySequenceable {num: number;str: string;constructor(num, str) {this.num = num;this.str = str;}marshalling(messageParcel) {messageParcel.writeInt(this.num);messageParcel.writeString(this.str);return true;}unmarshalling(messageParcel) {this.num = messageParcel.readInt();this.str = messageParcel.readString();return true;}
}
let sequenceable = new MySequenceable(1, "aaa");
let sequenceable2 = new MySequenceable(2, "bbb");
let sequenceable3 = new MySequenceable(3, "ccc");
let a = [sequenceable, sequenceable2, sequenceable3];
let data = rpc.MessageParcel.create();
let result = data.writeSequenceableArray(a);
console.log("RpcClient: writeSequenceableArray is " + result);

readSequenceableArray8+

readSequenceableArray(sequenceableArray: Sequenceable[]): void

从MessageParcel实例读取可序列化对象数组。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
sequenceableArraySequenceable[]要读取的可序列化对象数组。

示例:

class MySequenceable {num: number;str: string;constructor(num, str) {this.num = num;this.str = str;}marshalling(messageParcel) {messageParcel.writeInt(this.num);messageParcel.writeString(this.str);return true;}unmarshalling(messageParcel) {this.num = messageParcel.readInt();this.str = messageParcel.readString();return true;}
}
let sequenceable = new MySequenceable(1, "aaa");
let sequenceable2 = new MySequenceable(2, "bbb");
let sequenceable3 = new MySequenceable(3, "ccc");
let a = [sequenceable, sequenceable2, sequenceable3];
let data = rpc.MessageParcel.create();
let result = data.writeSequenceableArray(a);
console.log("RpcClient: writeSequenceableArray is " + result);
let b = [new MySequenceable(0, ""), new MySequenceable(0, ""), new MySequenceable(0, "")];
data.readSequenceableArray(b);

writeRemoteObjectArray8+

writeRemoteObjectArray(objectArray: IRemoteObject[]): boolean

将IRemoteObject对象数组写入MessageParcel。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
objectArrayIRemoteObject[]要写入MessageParcel的IRemoteObject对象数组。

返回值:

类型说明
boolean如果IRemoteObject对象数组成功写入MessageParcel,则返回true;如果对象为null或数组写入MessageParcel失败,则返回false。

示例:

class MyDeathRecipient {onRemoteDied() {console.log("server died");}
}
class TestRemoteObject extends rpc.RemoteObject {constructor(descriptor) {super(descriptor);this.attachLocalInterface(this, descriptor);}addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {return true;}removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {return true;}isObjectDead(): boolean {return false;}asObject(): rpc.IRemoteObject {return this;}
}
let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
let data = rpc.MessageParcel.create();
let result = data.writeRemoteObjectArray(a);
console.log("RpcClient: writeRemoteObjectArray is " + result);

readRemoteObjectArray8+

readRemoteObjectArray(objects: IRemoteObject[]): void

从MessageParcel读取IRemoteObject对象数组。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
objectsIRemoteObject[]从MessageParcel读取的IRemoteObject对象数组。

示例:

class MyDeathRecipient {onRemoteDied() {console.log("server died");}
}
class TestRemoteObject extends rpc.RemoteObject {constructor(descriptor) {super(descriptor);this.attachLocalInterface(this, descriptor);}addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {return true;}removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {return true;}isObjectDead(): boolean {return false;}asObject(): rpc.IRemoteObject {return this;}
}
let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
let data = rpc.MessageParcel.create();
let result = data.writeRemoteObjectArray(a);
let b = new Array(3);
data.readRemoteObjectArray(b);

readRemoteObjectArray8+

readRemoteObjectArray(): IRemoteObject[]

从MessageParcel读取IRemoteObject对象数组。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
IRemoteObject[]返回IRemoteObject对象数组。

示例:

class MyDeathRecipient {onRemoteDied() {console.log("server died");}
}
class TestRemoteObject extends rpc.RemoteObject {constructor(descriptor) {super(descriptor);this.attachLocalInterface(this, descriptor);}addDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {return true;}removeDeathRecipient(recipient: MyDeathRecipient, flags: number): boolean {return true;}isObjectDead(): boolean {return false;}asObject(): rpc.IRemoteObject {return this;}
}
let a = [new TestRemoteObject("testObject1"), new TestRemoteObject("testObject2"), new TestRemoteObject("testObject3")];
let data = rpc.MessageParcel.create();
let result = data.writeRemoteObjectArray(a);
console.log("RpcClient: readRemoteObjectArray is " + result);
let b = data.readRemoteObjectArray();
console.log("RpcClient: readRemoteObjectArray is " + b);

closeFileDescriptor8+

static closeFileDescriptor(fd: number): void

关闭给定的文件描述符。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
fdnumber要关闭的文件描述符。

示例:

import fileio from '@ohos.fileio';
let filePath = "path/to/file";
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
rpc.MessageParcel.closeFileDescriptor(fd);

dupFileDescriptor8+

static dupFileDescriptor(fd: number) :number

复制给定的文件描述符。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
fdnumber表示已存在的文件描述符。

返回值:

类型说明
number返回新的文件描述符。

示例:

import fileio from '@ohos.fileio';
let filePath = "path/to/file";
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
let newFd = rpc.MessageParcel.dupFileDescriptor(fd);

containFileDescriptors8+

containFileDescriptors(): boolean

检查此MessageParcel对象是否包含文件描述符。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
boolean如果此MessageParcel对象包含文件描述符,则返回true;否则返回false。

示例:

import fileio from '@ohos.fileio';
let parcel = new rpc.MessageParcel();
let filePath = "path/to/file";
let r1 = parcel.containFileDescriptors();
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
let writeResult = parcel.writeFileDescriptor(fd);
console.log("RpcTest: parcel writeFd result is : " + writeResult);
let containFD = parcel.containFileDescriptors();
console.log("RpcTest: parcel after write fd containFd result is : " + containFD);

writeFileDescriptor8+

writeFileDescriptor(fd: number): boolean

写入文件描述符到MessageParcel。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
fdnumber文件描述符。

返回值:

类型说明
boolean如果操作成功,则返回true;否则返回false。

示例:

import fileio from '@ohos.fileio';
let parcel = new rpc.MessageParcel();
let filePath = "path/to/file";
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
let writeResult = parcel.writeFileDescriptor(fd);
console.log("RpcTest: parcel writeFd result is : " + writeResult);

readFileDescriptor8+

readFileDescriptor(): number

从MessageParcel中读取文件描述符。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number返回文件描述符。

示例:

import fileio from '@ohos.fileio';
let parcel = new rpc.MessageParcel();
let filePath = "path/to/file";
let fd = fileio.openSync(filePath, 0o2| 0o100, 0o666);
let writeResult = parcel.writeFileDescriptor(fd);
let readFD = parcel.readFileDescriptor();
console.log("RpcTest: parcel read fd is : " + readFD);

writeAshmem8+

writeAshmem(ashmem: Ashmem): boolean

将指定的匿名共享对象写入此MessageParcel。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
ashmemAshmem要写入MessageParcel的匿名共享对象。

返回值:

类型说明
boolean如果匿名共享对象成功写入此MessageParcel,则返回true;否则返回false。

示例:

let parcel = new rpc.MessageParcel();
let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024);
let isWriteSuccess = parcel.writeAshmem(ashmem);
console.log("RpcTest: write ashmem to result is : " + isWriteSuccess);

readAshmem8+

readAshmem(): Ashmem

从MessageParcel读取匿名共享对象。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
Ashmem返回匿名共享对象。

示例:

let parcel = new rpc.MessageParcel();
let ashmem = rpc.Ashmem.createAshmem("ashmem", 1024);
let isWriteSuccess = parcel.writeAshmem(ashmem);
console.log("RpcTest: write ashmem to result is : " + isWriteSuccess);
let readAshmem = parcel.readAshmem();
console.log("RpcTest: read ashmem to result is : " + readAshmem);

getRawDataCapacity8+

getRawDataCapacity(): number

获取MessageParcel可以容纳的最大原始数据量。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
number返回MessageParcel可以容纳的最大原始数据量,即128 Mb。

示例:

let parcel = new rpc.MessageParcel();
let result = parcel.getRawDataCapacity();
console.log("RpcTest: parcel get RawDataCapacity result is : " + result);

writeRawData8+

writeRawData(rawData: number[], size: number): boolean

将原始数据写入MessageParcel对象。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
rawDatanumber[]要写入的原始数据。
sizenumber发送的原始数据大小,以字节为单位。

返回值:

类型说明
boolean如果操作成功,则返回true;否则返回false。

示例:

let parcel = new rpc.MessageParcel();
let arr = [1, 2, 3, 4, 5];
let isWriteSuccess = parcel.writeRawData(arr, arr.length);
console.log("RpcTest: parcel write raw data result is : " + isWriteSuccess);

readRawData8+

readRawData(size: number): number[]

从MessageParcel读取原始数据。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
sizenumber要读取的原始数据的大小。

返回值:

类型说明
number[]返回原始数据(以字节为单位)。

示例:

let parcel = new rpc.MessageParcel();
let arr = [1, 2, 3, 4, 5];
let isWriteSuccess = parcel.writeRawData(arr, arr.length);
console.log("RpcTest: parcel write raw data result is : " + isWriteSuccess);
let result = parcel.readRawData(5);
console.log("RpcTest: parcel read raw data result is : " + result);

Sequenceable

在进程间通信(IPC)期间,将类的对象写入MessageParcel并从MessageParcel中恢复它们。

marshalling

marshalling(dataOut: MessageParcel): boolean

将此可序列对象封送到MessageParcel中。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
dataOut[MessageParcel]可序列对象将被封送到的MessageParcel对象。

返回值:

类型说明
boolean如果封送成功,则返回true;否则返回false。

示例:

class MySequenceable {num: number;str: string;constructor(num, str) {this.num = num;this.str = str;}marshalling(messageParcel) {messageParcel.writeInt(this.num);messageParcel.writeString(this.str);return true;}unmarshalling(messageParcel) {this.num = messageParcel.readInt();this.str = messageParcel.readString();return true;}
}
let sequenceable = new MySequenceable(1, "aaa");
let data = rpc.MessageParcel.create();
let result = data.writeSequenceable(sequenceable);
console.log("RpcClient: writeSequenceable is " + result);
let ret = new MySequenceable(0, "");
let result2 = data.readSequenceable(ret);
console.log("RpcClient: readSequenceable is " + result2);

unmarshalling

unmarshalling(dataIn: MessageParcel) : boolean

从MessageParcel中解封此可序列对象。

系统能力:SystemCapability.Communication.IPC.Core

参数:

参数名类型必填说明
dataIn[MessageParcel]已将可序列对象封送到其中的MessageParcel对象。

返回值:

类型说明
boolean如果可序列化成功,则返回true;否则返回false。

示例:

class MySequenceable {num: number;str: string;constructor(num, str) {this.num = num;this.str = str;}marshalling(messageParcel) {messageParcel.writeInt(this.num);messageParcel.writeString(this.str);return true;}unmarshalling(messageParcel) {this.num = messageParcel.readInt();this.str = messageParcel.readString();return true;}
}
let sequenceable = new MySequenceable(1, "aaa");
let data = rpc.MessageParcel.create();
let result = data.writeSequenceable(sequenceable);
console.log("RpcClient: writeSequenceable is " + result);
let ret = new MySequenceable(0, "");
let result2 = data.readSequenceable(ret);
console.log("RpcClient: readSequenceable is " + result2);

IRemoteBroker

远端对象的代理持有者。用于获取代理对象。

asObject

asObject(): IRemoteObject

需派生类实现,获取代理或远端对象。

系统能力:SystemCapability.Communication.IPC.Core

返回值:

类型说明
[IRemoteObject]如果调用者是[RemoteObject]对象,则直接返回本身;如果调用者是[RemoteProxy]对象,则返回它的持有者[IRemoteObject]。

示例:

class TestAbility extends rpc.RemoteObject {asObject() {return this;}
}

示例:

class TestProxy {remote: rpc.RemoteObject;constructor(remote) {this.remote = remote;}asObject() {return this.remote;}
}

DeathRecipient

用于订阅远端对象的死亡通知。当被订阅该通知的远端对象死亡时,本端可收到消息,调用[onRemoteDied]接口。远端对象死亡可以为远端对象所在进程死亡,远端对象所在设备关机或重启,当远端对象与本端对象属于不同设备时,也可为远端对象离开组网时。

onRemoteDied

onRemoteDied(): void

在成功添加死亡通知订阅后,当远端对象死亡时,将自动调用本方法。

系统能力:SystemCapability.Communication.IPC.Core

示例:

class MyDeathRecipient {onRemoteDied() {console.log("server died");}
}

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

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

相关文章

番外篇 | 基于改进YOLOv5的安全帽佩戴检测 | 重参数化结构RepVGG + 空间对象注意力机制RCS-OSA模块

前言:Hello大家好,我是小哥谈。RCS-YOLO是一种目标检测算法,它是基于YOLOv3算法的改进版本。通过查看RCS-YOLO的整体架构可知,其中包括RCS-OSA模块。RCS-OSA模块在模型中用于堆叠RCS模块,以确保特征的复用并加强不同层之间的信息流动。本文针对安全帽佩戴的检测就是基于RC…

Vue 的 axios二次封装

(以下的接口地址链接换成自己的写!!!) 首先在项目中src的目录下创建一个api的文件夹,在api的文件下在穿件两个文件用于二次封装 别忘了先安装axios:(在根目录下安装axios&#xff0…

Linux内核开发-替换内核

0.前言 上一章(点击返回上一章)提到如何编译内核源码,本章主要介绍如何将编好的内核替换已有的内核。 1. 替换内核 第1步:查看当前内核版本 cat /proc/version第2步: 查看机器上的内核信息 grep menuentry /boot/…

Mware Fusion Pro 13 mac版:一键掌控虚拟世界

VMware Fusion Pro 13是一款功能卓越的虚拟化软件,专为Mac操作系统量身打造。这款软件为用户提供了一个一站式的虚拟化解决方案,能够满足各种多样化的需求。 VMware Fusion Pro 13 Mac获取 VMware Fusion Pro 13的强大之处在于其采用了最 先进的虚拟化…

食品安全无小事:EasyCVR+AI技术助力食品加工厂管理透明化,构建食品安全防线

一、背景需求 近期有新闻记者曝光某省禽类屠宰加工厂脏乱差问题严重,工人脚踩鹅肠鸭肠混杂洗地水、烟头随手扔进鸭肠筐、污水捞出死鸭再上生产线…卫生情况十分堪忧。食品卫生安全频频出现负面新闻,如何实现源头治理?如何将各类食品安全风险隐…

C++ Primer Plus第五版+习题重点笔记(p250-300)

第七章 类(下) clear需要访问Screen的私有成员;而要想令这种访问合法,Screen需要把 window mgr 指定成它的友元 如果一个类指定了友元类,则友元类的成员函数可以访问此类包括非公有成员在内的所有成员 每个类负责控制自己的友元…

电子书(chm)-加载JS--CS上线

免责声明: 本文仅做技术交流与学习... 目录 cs--web投递 html(js)代码 html生成chm工具--EasyCHM 1-选择powershell 模式 生成 2-选择bitsadmin模式生成 chm反编译成html cs--web投递 cs配置监听器--->攻击---->web投递---> 端口选择没占用的, URL路径到时候会在…

《昇思25天学习打卡营第1天 | 认识MindScope AI框架和昇思大模型平台》

活动地址:https://xihe.mindspore.cn/events/mindspore-training-camp 昇思MindSpore学习笔记:探索AI的无限可能 嗨,AI爱好者们!今天,我要带你们深入了解一个强大的全场景深度学习框架——昇思MindSpore。 准备好了吗…

AWR1843BOOST上的TM4C1294NCPDT是干啥用的?

摘要:AWR1843BOOST上面有2个体积较大的芯片,一片是雷达,另一片是什么呢? 答案:它就是XDS110仿真器。 有了它,就不用再买一个仿真器了。 从AWR1843BOOST的原理图中可以看到整个 BOOST板子上只有2个比较大的…

C++switch陈述

C 使用关键字 switch、case、default对一个常数执行不同的分流,这构成多重选择的结构,形式如下 简单来说,switch后头接一小括弧,小括弧内为一常数运算式,计算出常数值若与其后case的位标(label) 相符,就会执…

Prometheus入门

Prometheus入门 Setup Reference:https://prometheus.io/docs/introduction/overview/ exporters:你可以部署在你想要获取metrics的应用旁,接收Prometheus请求,从应用程序中收集数据并转换为正确的格式,最后返回给Prometheus;Service Dis…

创建百度百科词条要多少钱?看这篇

“百度百科词条人人可编辑,词条创建和修改均为免费,不存在官方及代理商付费代编。” 是的,百度百科免费开放,任何人都可以自己做,但是作为一个给上百家企业和个人创建百度百科词条的专业人士来说,给大家一…

模型预测控制MPC详解(附带案例实现)

模型预测控制MPC详解(附带案例实现) 文章目录 模型预测控制MPC详解(附带案例实现)1. 最优控制问题2. 什么是MPC3. 二次规划Quadratic Programming4. MPC为什么可以转换成QP问题(推导过程)5. MPC总结5.1 MPC…

基于51单片机的篮球计分器设计

一.硬件方案 本设计用由AT89C51编程控制LED七段数码管作显示的球赛计时计分系统。该系统具有赛程定时设置、赛程时间暂停、及时刷新甲乙双方的成绩等功能。 电路主要由STC89C52单片机最小系统数码管显示模块数码管驱动模块蜂鸣器模块按键模块; 二.设计功能 &…

哔哩哔哩视频URL解析原理

哔哩哔哩视频URL解析原理 视频网址解析视频的原理通常涉及以下几个步骤: 1、获取视频页面源代码:通过HTTP请求获取视频所在网页的HTML源代码。这一步通常需要处理反爬虫机制,如验证码或用户登录。 2、解析页面源代码:分析HTML源代…

Transformer学习理解

1.前言 本文介绍当下人工智能领域的基石与核心结构模型——Transformer,为什么说它是基石,因为以ChatGPT为代表的聊 天机器人以及各种有望通向AGI(通用人工智能)的道路上均在采用的Transformer。 Transformer也是当下NLP任…

【上海交大】博士生年度进展报告模板

上海交通大学 博士生年度进展报告模板 比较不好找,在交我办中发起申请流程后才能看到链接,链接如下: https://www.gs.sjtu.edu.cn/xzzx/pygl/15

爬取CSDN博文到本地(包含图片,标签等信息)

文章目录 csdnToMD改进将CSDN文章转化为Markdown文档那有什么办法快速得到md文档?例如:获取单个文章markdown获取所有的文章markdown 项目中待解决的问题 csdnToMD 项目原作者:https://gitee.com/liushili888/csdn-is—mark-down 改进后仓库…

Z语言学习——基于通讯案例

目录 1数据类型 2初始状态 3 Alice的消息发送 4 Bob接收与发送消息 5 Alice接收消息 6消息的增删改查 6.1 删除消息 6.2查询消息 6.3修改/增加消息 7定理证明——重要目的 案例背景: (1)构建一个交互式的通讯方案; (2)攻击者控制了所有的通讯…

眼见不一定为实之MySQL中的不可见字符

目录 前言 一、问题的由来 1、需求背景 2、数据表结构 二、定位问题 1、初步的问题 2、编码是否有问题 3、依然回到字符本身 三、深入字符本身 1、回归本质 2、数据库解决之道 3、代码层解决 四、总结 前言 在开始今天的博客内容之前,正在看博客的您先来…