HarmonyOS 5.0+ 安全加密与数据存储最佳实践指南

news/2025/9/24 16:52:29/文章来源:https://www.cnblogs.com/xpzll/p/19109528

1 安全加密基础与规范要求

在移动应用开发中,数据安全是保护用户隐私和满足合规要求的基石。等保2.0(GB/T 22239-2019)和金融行业标准(JR/T 0071-2020)对敏感数据的存储与传输提出了明确要求,以下是核心规范要点:

1.1 敏感数据分类与加密标准

  • 数据分类分级:根据敏感程度将数据划分为不同等级,例如用户姓名作为一般数据,而银行卡号、生物特征等信息属于重要数据,必须采用国密算法(如SM4、SM3)国际通用算法(如AES-256) 进行加密存储。
  • 传输加密要求:跨网络传输时必须使用 TLS 1.2以上协议,完全禁用不安全的SSLv3等旧协议,关键业务(如支付)需实现双向认证。

1.2 密钥管理安全规范

  • 密钥存储原则:密钥必须存储在硬件加密模块(HSM)安全芯片中,严禁明文存储在任何形式的软件环境中。
  • 访问控制机制:实施最小权限原则,仅授权用户/进程可访问敏感数据,并且需要详细记录访问日志以备审计。

1.3 数据脱敏与防篡改

  • 数据脱敏处理:在传输过程中对敏感字段(如身份证号、手机号)必须进行脱敏处理,如部分隐藏显示。
  • 防篡改机制:传输数据需附加哈希校验(如SHA-256),有效防止中间人篡改攻击。

2 HarmonyOS加密技术架构

HarmonyOS 5.0+ 提供了多层次的安全加密架构,从硬件到软件为开发者提供了完整的安全解决方案。

2.1 硬件级安全机制

// 可信执行环境(TEE)示例代码
import { huks } from '@kit.UniversalKeystoreKit';class HardwareSecurityService {// 生成受硬件保护的密钥async generateHardwareProtectedKey(keyAlias: string): Promise<void> {const properties: Array<huks.HuksParam> = [{tag: huks.HuksTag.HUKS_TAG_ALGORITHM,value: huks.HuksKeyAlg.HUKS_ALG_AES},{tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256},{tag: huks.HuksTag.HUKS_TAG_PURPOSE,value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT |huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT},{tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,value: huks.HuksCipherMode.HUKS_MODE_GCM},{tag: huks.HuksTag.HUKS_TAG_DIGEST,value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256},// 关键参数:指定密钥受硬件保护{tag: huks.HuksTag.HUKS_TAG_SECURE_KEY_ALIAS,value: true}];const options: huks.HuksOptions = {properties};try {await huks.generateKeyItem(keyAlias, options);console.info('硬件级密钥生成成功');} catch (error) {console.error(`硬件级密钥生成失败: ${error.message}`);throw new Error('密钥生成失败');}}
}

2.2 软件层安全服务

HarmonyOS提供了丰富的加密API服务,支持多种加密算法和密钥管理机制:

// 综合加密服务示例
import { cryptoFramework } from '@ohos.security.cryptoFramework';
import { BusinessError } from '@ohos.base';class CryptoService {// 创建加密器实例async createCipher(algorithm: string, key: cryptoFramework.SymKey): Promise<cryptoFramework.SymCipher> {try {let cipher: cryptoFramework.SymCipher;switch (algorithm) {case 'SM4-CBC':cipher = cryptoFramework.createSymCipher('SM4|CBC|PKCS7');break;case 'AES-GCM':cipher = cryptoFramework.createSymCipher('AES|GCM|PKCS7');break;default:throw new Error('不支持的算法类型');}return cipher;} catch (error) {console.error(`创建加密器失败: ${(error as BusinessError).message}`);throw error;}}
}

2.3 分布式安全框架

HarmonyOS的分布式安全框架确保数据在跨设备传输过程中的安全性:

// 分布式安全传输示例
import { distributedData } from '@ohos.distributedData';
import { cryptoFramework } from '@ohos.security.cryptoFramework';class DistributedSecurity {// 安全传输数据到其他设备async sendEncryptedData(deviceId: string, data: string, key: cryptoFramework.SymKey): Promise<void> {try {// 加密数据const encryptedData = await this.encryptData(data, key);// 获取分布式数据实例const distData = await distributedData.getDeviceData(deviceId);// 传输加密数据await distData.write('secure_data', encryptedData, {encrypt: true,           // 启用传输层加密integrityCheck: true,    // 数据完整性校验priority: 'high'        // 高优先级传输});console.info('安全数据传输成功');} catch (error) {console.error(`安全数据传输失败: ${(error as BusinessError).message}`);throw error;}}
}

2.4 加密技术对比分析

表:HarmonyOS支持的加密技术对比

加密类型 推荐算法 安全强度 性能影响 适用场景
对称加密 AES-256-GCM 大数据量加密、实时通信
SM4-CBC 金融数据存储、政府应用
非对称加密 RSA-2048 密钥交换、数字签名
SM2 国密要求场景、电子认证
哈希算法 SHA-256 数据完整性校验
SM3 国密要求场景
密钥管理 HUKS 非常高 密钥全生命周期管理

3 加密算法选择与实现

正确选择和使用加密算法是保障数据安全的核心环节。以下是HarmonyOS中主要加密算法的实现示例。

3.1 对称加密实现

对称加密适合大量数据的加密场景,具有性能高、资源消耗少的特点:

// AES-256-GCM加密实现
import { cryptoFramework } from '@ohos.security.cryptoFramework';
import { util } from '@ohos.util';class AesGcmCrypto {private static readonly IV_LENGTH = 12; // 96位IVprivate static readonly AAD_LENGTH = 16; // 附加认证数据// 加密数据async encryptData(plainText: string, key: cryptoFramework.SymKey): Promise<{cipherText: string, iv: string, tag: string}> {try {const cipher = cryptoFramework.createSymCipher('AES|GCM|PKCS7');await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, key, null);// 生成随机IVconst iv = this.generateRandomIv();await cipher.setCipherSpec(cryptoFramework.CipherSpecItem.IV, iv);// 设置附加认证数据const aad = this.generateAad();await cipher.setCipherSpec(cryptoFramework.CipherSpecItem.AAD, aad);// 加密数据const textEncoder = new util.TextEncoder();const dataBlob: cryptoFramework.DataBlob = {data: textEncoder.encode(plainText)};const encryptedData = await cipher.doFinal(dataBlob);// 获取认证标签const tag = await cipher.getCipherSpec(cryptoFramework.CipherSpecItem.AEAD_TAG);return {cipherText: this.arrayBufferToBase64(encryptedData.data),iv: this.arrayBufferToBase64(iv),tag: this.arrayBufferToBase64(tag as Uint8Array)};} catch (error) {console.error(`AES加密失败: ${error.message}`);throw error;}}// 生成随机初始化向量private generateRandomIv(): Uint8Array {const iv = new Uint8Array(AesGcmCrypto.IV_LENGTH);cryptoFramework.getRandomValues(iv);return iv;}
}

3.2 国密算法实现

对于需要符合国内安全标准的应用,HarmonyOS提供了国密算法支持:

// SM4国密算法实现
import { cryptoFramework } from '@ohos.security.cryptoFramework';class Sm4Crypto {// SM4加密示例async encryptWithSm4(plainText: string, key: cryptoFramework.SymKey): Promise<string> {try {const cipher = cryptoFramework.createSymCipher('SM4|CBC|PKCS7');// 生成IVconst iv = new Uint8Array(16);cryptoFramework.getRandomValues(iv);// 初始化加密器await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, key, {data: iv,alg: 'IvParamsSpec'});// 执行加密const textEncoder = new util.TextEncoder();const dataBlob: cryptoFramework.DataBlob = {data: textEncoder.encode(plainText)};const encryptedData = await cipher.doFinal(dataBlob);return this.arrayBufferToBase64(encryptedData.data);} catch (error) {console.error(`SM4加密失败: ${error.message}`);throw error;}}
}

3.3 非对称加密实现

非对称加密适用于密钥交换和数字签名等场景:

// RSA非对称加密实现
import { cryptoFramework } from '@ohos.security.cryptoFramework';class RsaCrypto {// 生成RSA密钥对async generateKeyPair(): Promise<cryptoFramework.KeyPair> {try {const generator = cryptoFramework.createAsyKeyGenerator('RSA2048|PRIMES_2');return await generator.generateKeyPair();} catch (error) {console.error(`生成RSA密钥对失败: ${error.message}`);throw error;}}// 使用公钥加密数据async encryptWithPublicKey(plainText: string, publicKey: cryptoFramework.PubKey): Promise<string> {try {const cipher = cryptoFramework.createAsyCipher('RSA2048|PKCS1');await cipher.init(cryptoFramework.CryptoMode.ENCRYPT_MODE, publicKey, null);const textEncoder = new util.TextEncoder();const dataBlob: cryptoFramework.DataBlob = {data: textEncoder.encode(plainText)};const encryptedData = await cipher.doFinal(dataBlob);return this.arrayBufferToBase64(encryptedData.data);} catch (error) {console.error(`RSA加密失败: ${error.message}`);throw error;}}
}

4 密钥安全管理最佳实践

密钥管理是加密系统的核心,直接关系到整个安全体系的可靠性。

4.1 密钥全生命周期管理

// 密钥管理器实现
import { huks } from '@kit.UniversalKeystoreKit';
import { BusinessError } from '@ohos.base';class KeyManager {private keyAlias: string = 'secure_data_key';// 生成安全密钥async generateSecureKey(): Promise<void> {const properties: Array<huks.HuksParam> = [{tag: huks.HuksTag.HUKS_TAG_ALGORITHM,value: huks.HuksKeyAlg.HUKS_ALG_AES},{tag: huks.HuksTag.HUKS_TAG_KEY_SIZE,value: huks.HuksKeySize.HUKS_AES_KEY_SIZE_256},{tag: huks.HuksTag.HUKS_TAG_PURPOSE,value: huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_ENCRYPT |huks.HuksKeyPurpose.HUKS_KEY_PURPOSE_DECRYPT},{tag: huks.HuksTag.HUKS_TAG_BLOCK_MODE,value: huks.HuksCipherMode.HUKS_MODE_GCM},{tag: huks.HuksTag.HUKS_TAG_DIGEST,value: huks.HuksKeyDigest.HUKS_DIGEST_SHA256},{tag: huks.HuksTag.HUKS_TAG_KEY_STORAGE_FLAG,value: huks.HuksKeyStorageType.HUKS_STORAGE_PERSISTENT}];const options: huks.HuksOptions = {properties};try {await huks.generateKeyItem(this.keyAlias, options);console.info('安全密钥生成成功');} catch (error) {console.error(`密钥生成失败: ${(error as BusinessError).message}`);throw error;}}// 定期轮换密钥async rotateKey(): Promise<void> {try {// 先生成新密钥const newKeyAlias = `secure_data_key_${Date.now()}`;await this.generateKeyWithAlias(newKeyAlias);// 重新加密所有数据(简化示例)await this.reEncryptData(newKeyAlias);// 删除旧密钥await this.deleteKey(this.keyAlias);// 更新密钥别名this.keyAlias = newKeyAlias;console.info('密钥轮换完成');} catch (error) {console.error(`密钥轮换失败: ${(error as BusinessError).message}`);throw error;}}
}

4.2 密钥访问控制

// 密钥访问控制实现
import { huks } from '@kit.UniversalKeystoreKit';class KeyAccessControl {// 设置密钥访问策略async setKeyAccessPolicy(keyAlias: string): Promise<void> {const accessPolicy: Array<huks.HuksParam> = [{tag: huks.HuksTag.HUKS_TAG_KEY_AUTH_ID,value: new Uint8Array([1, 2, 3, 4]) // 认证标识},{tag: huks.HuksTag.HUKS_TAG_KEY_AUTH_TYPE,value: huks.HuksAuthType.HUKS_AUTH_FINGERPRINT},{tag: huks.HuksTag.HUKS_TAG_KEY_SECURE_SIGN_TYPE,value: huks.HuksSecureSignType.HUKS_SECURE_SIGN_WITH_AUTHINFO}];const options: huks.HuksOptions = {properties: accessPolicy};try {await huks.setKeyAccessPolicy(keyAlias, options);console.info('密钥访问策略设置成功');} catch (error) {console.error(`设置密钥访问策略失败: ${error.message}`);throw error;}}// 验证密钥访问权限async verifyKeyAccess(keyAlias: string): Promise<boolean> {try {const result = await huks.verifyKeyAccess(keyAlias);return result === huks.HuksErrorCode.HUKS_SUCCESS;} catch (error) {console.error(`密钥访问验证失败: ${error.message}`);return false;}}
}

5 安全存储方案设计

选择适当的安全存储方案对于保护敏感数据至关重要。

5.1 敏感数据分类存储策略

根据数据敏感程度采用不同的存储策略:

// 多级安全存储实现
import { preferences } from '@kit.ArkData';
import { cryptoFramework } from '@ohos.security.cryptoFramework';class MultiLevelStorage {private context: Context = getContext(this) as Context;// 存储不同敏感级别的数据async storeSensitiveData(data: any, sensitivityLevel: string): Promise<void> {try {switch (sensitivityLevel) {case 'high':await this.storeHighlySensitiveData(data);break;case 'medium':await this.storeMediumSensitiveData(data);break;case 'low':await this.storeLowSensitiveData(data);break;default:await this.storeLowSensitiveData(data);}} catch (error) {console.error(`存储敏感数据失败: ${error.message}`);throw error;}}// 存储高敏感数据(加密存储)private async storeHighlySensitiveData(data: any): Promise<void> {const encryptedData = await this.encryptData(JSON.stringify(data));const prefs = await preferences.getPreferences(this.context, {name: 'high_sensitivity_data'});await prefs.put('encrypted_data', encryptedData);await prefs.flush();}// 存储中敏感数据(部分字段加密)private async storeMediumSensitiveData(data: any): Promise<void> {// 加密敏感字段if (data.password) {data.password = await this.encryptData(data.password);}if (data.phoneNumber) {data.phoneNumber = await this.encryptData(data.phoneNumber);}const prefs = await preferences.getPreferences(this.context, {name: 'medium_sensitivity_data'});await prefs.put('partial_encrypted_data', JSON.stringify(data));await prefs.flush();}
}

5.2 安全存储方案选择指南

表:安全存储方案选择指南

存储方案 安全级别 性能影响 适用数据类型 推荐加密方式
Preferences加密存储 配置信息、用户偏好 AES-256-GCM
分布式数据库 跨设备同步数据 端到端加密
文件系统加密 中-高 大型文件、媒体内容 文件级加密
安全沙箱存储 非常高 密钥、证书 硬件级加密
云端加密存储 依赖网络 备份数据、历史记录 客户端加密

6 数据传输安全保障

保障数据在传输过程中的安全是防止中间人攻击和数据泄露的关键。

6.1 安全传输协议实现

// 安全HTTP传输实现
import { http } from '@kit.NetworkKit';
import { BusinessError } from '@ohos.base';class SecureHttpClient {// 创建安全HTTP客户端createSecureClient(): http.HttpClient {try {return http.createHttpClient({enableProtocols: [http.HttpProtocol.HTTP1_1, http.HttpProtocol.HTTP2],sslProtocols: {enableTLSv1_2: true,enableTLSv1_3: true},cipherSuite: ['TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384','TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384','TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256','TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256'],certificateVerification: {verify: true,hostnameVerify: true}});} catch (error) {console.error(`创建安全HTTP客户端失败: ${(error as BusinessError).message}`);throw error;}}// 发送安全请求async sendSecureRequest(url: string, data: any): Promise<http.HttpResponse> {const client = this.createSecureClient();try {const response = await client.request(url, {method: http.RequestMethod.POST,header: {'Content-Type': 'application/json'},extraData: JSON.stringify(data),readTimeout: 30000,connectTimeout: 30000});// 验证响应完整性await this.verifyResponseIntegrity(response);return response;} catch (error) {console.error(`安全请求失败: ${(error as BusinessError).message}`);throw error;} finally {client.destroy();}}
}

7 实战案例与性能优化

通过实际案例展示安全加密技术的应用,并提供性能优化建议。

7.1 金融数据保护案例

// 金融数据安全保护实现
import { huks } from '@kit.UniversalKeystoreKit';
import { cryptoFramework } from '@ohos.security.cryptoFramework';class FinancialDataProtector {private keyAlias: string = 'financial_data_key';// 保护金融交易数据async protectTransactionData(transactionData: FinancialTransaction): Promise<ProtectedTransaction> {try {// 生成交易哈希const hash = await this.generateHash(transactionData);// 加密敏感字段const encryptedData = {...transactionData,cardNumber: await this.encryptField(transactionData.cardNumber),amount: await this.encryptField(transactionData.amount.toString()),timestamp: Date.now()};// 数字签名const signature = await this.signData(encryptedData);return {encryptedData,hash,signature,encryptionAlgorithm: 'AES-256-GCM',keyVersion: 'v1'};} catch (error) {console.error(`金融数据保护失败: ${error.message}`);throw error;}}// 生成数据哈希private async generateHash(data: any): Promise<string> {const sha256 = cryptoFramework.createHash('SHA256');const textEncoder = new util.TextEncoder();const dataBlob: cryptoFramework.DataBlob = {data: textEncoder.encode(JSON.stringify(data))};const hash = await sha256.digest(dataBlob);return this.arrayBufferToBase64(hash.data);}
}

7.2 性能监控与优化

// 加密性能监控器
import { profiler } from '@ohos.profiler';class CryptoPerformanceMonitor {private performanceMetrics: Map<string, number[]> = new Map();// 监控加密操作性能async monitorEncryptionPerformance(operation: string, cryptoFunction: Function): Promise<any> {const startTime = profiler.getSystemTime();const startCpuTime = profiler.getSystemCpuTime();try {const result = await cryptoFunction();const endTime = profiler.getSystemTime();const endCpuTime = profiler.getSystemCpuTime();const duration = endTime - startTime;const cpuUsage = endCpuTime - startCpuTime;this.recordPerformanceMetric(operation, duration, cpuUsage);return result;} catch (error) {console.error(`加密操作性能监控失败: ${error.message}`);throw error;}}// 记录性能指标private recordPerformanceMetric(operation: string, duration: number, cpuUsage: number): void {if (!this.performanceMetrics.has(operation)) {this.performanceMetrics.set(operation, []);}const metrics = this.performanceMetrics.get(operation);metrics.push(duration);// 定期分析和优化性能if (metrics.length % 100 === 0) {this.analyzePerformance(operation, metrics);}}
}

8 审计与合规性保障

完善的安全审计和合规性检查是确保长期安全的重要保障。

8.1 安全审计日志记录

// 安全审计日志器
import { audit } from '@ohos.security.audit';class SecurityAuditLogger {// 记录安全事件async logSecurityEvent(eventType: string, details: any, severity: 'low' | 'medium' | 'high'): Promise<void> {try {const auditRecord: audit.AuditRecord = {eventType: eventType,timestamp: Date.now(),severity: severity,details: JSON.stringify(details),userId: this.getCurrentUserId(),deviceId: this.getDeviceId(),processId: process.pid};await audit.logSecurityEvent(auditRecord);// 关键事件额外备份if (severity === 'high') {await this.backupCriticalEvent(auditRecord);}} catch (error) {console.error(`安全事件记录失败: ${error.message}`);// 不应因审计失败影响主要功能}}// 定期生成安全报告async generateSecurityReport(): Promise<void> {try {const startTime = Date.now() - (24 * 60 * 60 * 1000); // 24小时前const endTime = Date.now();const events = await audit.querySecurityEvents({startTime: startTime,endTime: endTime,eventTypes: ['key_access','encryption_operation','decryption_operation','key_generation','security_policy_change']});const report = this.analyzeSecurityEvents(events);await this.sendSecurityReport(report);} catch (error) {console.error(`生成安全报告失败: ${error.message}`);}}
}

通过本指南的全面介绍,您应该已经掌握了HarmonyOS 5.0+平台上安全加密与数据存储的最佳实践。记住,安全是一个持续的过程,需要定期审查和更新安全策略以应对不断变化的威胁环境。

需要参加鸿蒙认证的请点击 鸿蒙认证链接

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

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

相关文章

HarmonyOS之设备硬件能力调用:传感器、蓝牙与定位

本文将全面介绍如何在HarmonyOS 5.0+中调用设备硬件能力,包括传感器数据获取、蓝牙设备连接与通信、定位服务使用等核心技术。1. 硬件能力调用概述 HarmonyOS提供了统一的硬件访问框架,允许开发者安全、高效地访问设…

如何网站关键词优化网站设计介绍怎么写

浙江少年儿童出版社出版肖复兴的第二部长篇儿童小说《合欢》&#xff0c;因对儿童独立人格的自觉尊重与强调&#xff0c;以及对人物复杂内心世界的深度开掘与勘探&#xff0c;回应了“儿童的被发现”这一重要课题。《合欢》不仅是作者对“远逝的童年”的一次深情回眸&#xff0…

基于HarmonyOS SDK开放能力的微博社交体验构建实践

在社交领域,微博作为承载广大用户情感连接与信息交流的重要平台,始终致力于探索并构建更具创新性的社交应用,以满足用户日益多元化的社交需求。 应用场景 登录注册 传统的登录注册经常会面临验证流程冗长,密码容易…

web三维

import * as THREE from three; // 修复:引入轨道控制器和字体加载器(关键新增) import { OrbitControls } from three/addons/controls/OrbitControls.js; import { FontLoader } from three/addons/loaders/FontL…

HarmonyOS 多线程编程:Worker 使用与性能优化指南

本文将深入探讨 HarmonyOS 5.0+ 中 Worker 多线程机制的使用方法、性能优化策略和最佳实践,帮助你构建高效、流畅的应用体验。1. Worker 基础概念与核心优势 Worker 是 HarmonyOS 提供的多线程解决方案,允许在独立线…

贝叶斯定理简单解释

贝叶斯定理简单解释举例: 如下图1所示,已知小明到家时带着一只娃娃,请问他更有可能乘坐了公交还是地铁?图1 图2 …

B端界面设计的核心逻辑:效率优先还是体验优先?

B端界面设计的核心逻辑:效率优先还是体验优先?在C端应用中,用户体验往往与“好看、好用”直接挂钩。但在B端界面设计中,情况更为复杂:它需要承载海量数据、复杂业务流程和多角色协作。于是问题出现了:B端界面设计…

搭建网站有哪些表白网站怎样做有创意

p20 首先我们现在有一个多人游戏的系统类MultiplayerSessionsSubsystem 在这个系统内提供了很多会话系统的接口SessionInterface 当现在我们有一些SessionInterfaceDelegates的委托,这个委托的来源是SessionInterface,所以我们使用的委托可以接收到来自SessionInterface的消息(…

质数(埃氏筛、欧拉筛)

小赛码/数论 竞赛/数论 质数 一、质数:数字的原子原子是构成物质的基本单位质数是构建整数的基本单元示例: 60 = 2 2 3 5(仅由质数构成) 所有大于1的自然数都可分解为质数的乘积 类比说明:质数如同数学界的乐高…

HarmonyOS数据持久化:Preferences轻量级存储实战

本文将详细介绍HarmonyOS 5(API 12)中的用户首选项(Preferences)数据持久化方案,通过实际代码示例讲解如何实现轻量级键值对数据的存储、读取和管理。1. Preferences核心概念与优势 Preferences是HarmonyOS提供的…

HarmonyOS服务卡片开发:动态卡片与数据绑定实战指南

✨ 一、服务卡片概述与优势 服务卡片是HarmonyOS提供的一种轻量级UI组件,具有以下核心特性:信息前置:将应用关键信息直接展示在桌面、锁屏等位置,用户无需打开应用即可获取重要信息。 交互便捷:支持按钮点击等基础…

【CV】GAN代码解析:base_model.py

【CV】GAN代码解析:base_model.pyPosted on 2025-09-24 16:39 SaTsuki26681534 阅读(0) 评论(0) 收藏 举报import os # 标准库:操作系统相关(本文件中未直接使用) import torch # PyTorch 主库 from pathli…

有理数类的问题回答

1. 与C语言有理数代码相比,该Java类更面向对象的原因 (1)封装性:Java类将有理数的分子numerator和分母denominator设为private,仅通过public方法对外暴露功能,隐藏了内部实现细节;而C语言通常通过结构体直接暴露…

企业网站设计与实现论文移动网站系统

听说这是目录哦 FinalShell连接VMware&#x1f324;️解决重连失效FinalShell的使用 免密登录⛈️能量站&#x1f61a; FinalShell连接VMware&#x1f324;️ 保持虚拟机的开机状态&#xff0c;打开FinalShell&#xff0c;如果虚拟机关机或者挂起&#xff0c;连接就会断开。 …

做网站时图片要切片有什么作用可以做砍价链接的网站

车牌识别系统 YOLOv5和LPRNet的车牌识别系统结合了深度学习技术的先进车牌识别解决方案。该系统整合了YOLOv5目标检测框架和LPRNet文本识别模型 1. YOLOv5目标检测框架 YOLO是一种先进的目标检测算法&#xff0c;以其实时性能和高精度闻名。YOLOv5是在前几代基础上进行优化的…

南昌网站建设规划方案传媒公司网站源码php

引人入胜的开篇&#xff1a;想要搞清楚LSTM中的每个公式的每个细节为什么是这样子设计吗&#xff1f;想知道simple RNN是如何一步步的走向了LSTM吗&#xff1f;觉得LSTM的工作机制看不透&#xff1f;恭喜你打开了正确的文章&#xff01; 前方核弹级高能预警&#xff01;本文信息…

微信版网站开发用安卓做网站

幸福树&#xff0c;一种寓意美好的观赏型植物&#xff0c;它生长非常迅速&#xff0c;稍不注意就长的非常茂盛。而要想保证幸福树的美貌&#xff0c;跟人的头发一样&#xff0c;我们要给它适当的修剪&#xff0c;那幸福树怎么修剪呢&#xff1f;为了大家能养出美丽的幸福树来&a…

HarmonyOS后台任务调度:JobScheduler与WorkManager实战指南

本文将深入探讨HarmonyOS 5(API 12)中的后台任务调度机制,重点讲解JobScheduler和WorkManager的使用方法、适用场景及最佳实践,帮助开发者实现高效、智能的后台任务管理。1. 后台任务调度概述 HarmonyOS提供了两种…

总线传输的四个阶段

1.申请分配阶段 由需要使用总线的主模块或主设备提出申请,经过总线仲裁机构决定下一个传输周期的总线使用权。也可将此阶段细分为传输请求和总线仲裁两个阶段 2.寻址阶段 获得使用权的主模块,通过总线发出本次要访问…