鸿蒙HarmonyOS应用开发 探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力
鸿蒙心路旅程:探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力
HarmonyOS Next 是华为推出的全新一代操作系统,旨在进一步推动分布式技术的深度应用和生态融合。本文将从技术特点、应用场景入手,通过实战案例与代码示例,帮助读者全面了解 HarmonyOS Next 的核心技术架构与应用开发流程。
一、HarmonyOS Next 的核心技术特点
1. 分布式技术升级
HarmonyOS Next 构建于分布式架构之上,进一步强化了设备间协同能力:
- 分布式软总线 2.0:提升设备发现与连接效率,降低延迟。
- 分布式数据管理:实现跨设备的无缝数据同步。
- 分布式任务调度:支持跨设备调用与任务分发,优化资源利用。
2. 原生应用框架支持
HarmonyOS Next 提供更强大的原生开发支持:
- 基于 ArkTS (方舟 TypeScript) 的新编程模型。
- 深度优化的 OpenHarmony API。
- 面向多设备形态的自适应 UI 构建能力。
3. 强化生态开放性
HarmonyOS Next 提供更开放的生态支持,允许开发者快速接入分布式生态,尤其是在智能家居、车联网等领域。
二、实战案例:开发一个跨设备协同的音乐播放应用
为了更好地理解 HarmonyOS Next 的技术特点,我们将通过一个跨设备协同的音乐播放应用,展示如何利用分布式技术进行开发。
1. 项目目标
- 支持在手机上控制音乐播放。
- 实现音乐在智能音箱和电视之间的无缝切换。
- 音乐播放进度同步更新。
2. 环境准备
软件要求:
- DevEco Studio 版本 ≥ 4.0
- HarmonyOS Next 模拟器或支持设备
硬件要求:
- HarmonyOS 设备(手机、音箱、电视等)
3. 核心开发步骤
(1) 定义分布式能力
分布式技术的核心在于 FA(Feature Ability) 的设计。我们需要为应用配置分布式能力。
代码示例:配置分布式能力
在 module.json5
中,添加分布式配置:
{"module": {"name": "MusicPlayer","type": "entry","abilities": [{"name": "MainAbility","type": "page","visible": true,"formsEnabled": false,"distributedNotificationEnabled": true}],"distributedCapabilities": ["com.example.musicplayer.distributed"]}
}
(2) 实现主界面
利用 ArkTS 编写应用的主界面,支持音乐的播放控制。
代码示例:主界面 UI
import AbilityComponent from '@ohos.application.AbilityComponent';@Entry
@Component
export default class MusicPlayerUI extends AbilityComponent {private playState: boolean = false;private currentTime: number = 0;render() {return (<div class="container"><h1>Harmony Music Player</h1><div class="controls"><button onclick={() => this.togglePlay()}>{this.playState ? 'Pause' : 'Play'}</button><button onclick={() => this.switchDevice('speaker')}>Switch to Speaker</button><button onclick={() => this.switchDevice('tv')}>Switch to TV</button></div><div>Current Time: {this.currentTime}s</div></div>);}togglePlay() {this.playState = !this.playState;// 调用分布式服务,控制播放状态DistributedServiceManager.updatePlayState(this.playState);}switchDevice(device: string) {// 调用分布式 API 切换设备DistributedServiceManager.switchToDevice(device);}
}
(3) 实现分布式服务
分布式服务用于管理设备间的音乐播放状态与切换逻辑。
代码示例:分布式服务管理
import distributedData from '@ohos.distributedData';class DistributedServiceManager {static updatePlayState(isPlaying: boolean) {distributedData.set('playState', isPlaying);console.log(`Updated play state: ${isPlaying}`);}static switchToDevice(device: string) {distributedData.set('currentDevice', device);console.log(`Switched to device: ${device}`);}static syncPlayState() {distributedData.get('playState', (error, value) => {if (!error) {console.log(`Synced play state: ${value}`);}});}
}export default DistributedServiceManager;
(4) 部署与调试
- 使用 DevEco Studio 构建并部署应用。
- 通过多设备模拟器测试跨设备协同效果。
- 验证音乐播放状态和设备切换的实时同步功能。
三、技术深度分析
1. 分布式数据同步的实现原理
HarmonyOS Next 的分布式数据同步基于 DFX(Dynamic Fault Tolerance)技术,确保在复杂网络环境中数据一致性和可靠性。开发者只需使用分布式数据 API,无需关心底层网络传输和同步细节。
2. 跨设备任务调度的优化
HarmonyOS Next 引入新的任务调度机制,根据设备性能动态分配任务。例如,在音频解码任务中,会优先选择性能较高的设备执行,以减少延迟和功耗。
3. ArkTS 编程模型的优势
- 类型安全性更强,减少运行时错误。
- 提供声明式 UI 框架,降低多端开发的复杂性。
- 与分布式能力深度集成。
四、开发中可能遇到的问题与解决方案
在实际开发 HarmonyOS Next 应用时,开发者可能会遇到一些技术难点或问题。下面列出几个常见问题,并提供解决方案。
1. 分布式能力未正常工作
问题现象:
分布式功能未能如预期运行,例如设备发现失败或数据无法同步。
可能原因:
module.json5
中未正确声明分布式能力。- 网络环境不稳定,设备间无法正常通信。
- 未正确初始化分布式数据服务。
解决方案:
-
检查
module.json5
配置是否完整,包括distributedCapabilities
和distributedNotificationEnabled
。 -
确保设备处于同一局域网或通过分布式网络连接。
-
在代码中添加分布式服务的初始化代码:
import distributedData from '@ohos.distributedData';distributedData.init((err) => {if (err) {console.error('Distributed data service initialization failed:', err);} else {console.log('Distributed data service initialized successfully.');} });
2. 跨设备同步延迟
问题现象:
音乐播放状态或进度的跨设备同步存在显著延迟。
可能原因:
- 数据同步接口调用频率过高,导致网络拥堵。
- 设备间带宽不足或存在干扰。
解决方案:
-
限制同步频率:对实时性要求不高的场景,可以通过节流(Throttle)控制频率。
let throttleTimeout: any = null;function throttledUpdate(data: any) {if (!throttleTimeout) {DistributedServiceManager.updatePlayState(data);throttleTimeout = setTimeout(() => {throttleTimeout = null;}, 500); // 500ms 间隔} }
-
优化网络:切换至更稳定的 Wi-Fi 网络或启用 HarmonyOS 分布式软总线技术。
3. 界面自适应问题
问题现象:
在不同形态设备(如电视、手机)上,界面布局出现错位或比例异常。
可能原因:
- 未正确适配不同分辨率和屏幕比例。
- 未充分利用 ArkTS 的自适应布局能力。
解决方案:
-
使用
ResponsiveGrid
提供自适应布局:
import { ResponsiveGrid, Column } from '@ohos.layout';render() {return (<ResponsiveGrid columns={3}><Column span={1}><button>Play</button></Column><Column span={1}><button>Pause</button></Column><Column span={1}><button>Switch Device</button></Column></ResponsiveGrid>); }
-
利用相对单位(如
fp
、vp
)而非绝对单位设计 UI。
4. 设备发现超时
问题现象:
应用无法发现其他设备或分布式调用失败。
可能原因:
- 分布式软总线未启用。
- 设备发现时间窗口过短。
解决方案:
-
启用分布式软总线:
import distributedDeviceManager from '@ohos.distributedDeviceManager';distributedDeviceManager.startDiscovery('musicApp', (error, devices) => {if (error) {console.error('Device discovery failed:', error);} else {console.log('Devices discovered:', devices);} });
-
增加设备发现超时时间,避免因复杂网络环境导致的超时。
五、扩展场景:构建智能家居音乐系统
在智能家居场景中,HarmonyOS Next 的分布式能力能够进一步发挥优势。例如,开发一个家庭音乐系统,可实现以下功能:
- 根据家庭成员的位置动态切换播放设备。
- 使用语音指令控制音乐播放。
- 自动将音乐播放任务分配到最适合的设备。
1. 基于设备状态的动态调度
通过分布式数据服务,应用可以实时获取设备状态,并根据业务逻辑进行动态切换。
代码示例:动态设备调度
import distributedData from '@ohos.distributedData';function autoSwitchDevice() {distributedData.get('devicesStatus', (error, devices) => {if (!error && devices) {const availableDevice = devices.find((device) => device.status === 'idle');if (availableDevice) {DistributedServiceManager.switchToDevice(availableDevice.name);console.log(`Switched to idle device: ${availableDevice.name}`);}}});
}
2. 语音控制集成
HarmonyOS Next 支持语音服务的分布式接入,可通过语音助手触发播放控制。
代码示例:语音指令解析
import voiceService from '@ohos.voiceService';voiceService.onCommand('playMusic', (command) => {if (command.device) {DistributedServiceManager.switchToDevice(command.device);}DistributedServiceManager.updatePlayState(true);
});
3. 智能设备优先级分配
针对高功耗设备(如音箱)和低功耗设备(如手机),可以设计优先级策略以优化能耗。
代码示例:设备优先级分配
function selectDevice(devices: any[]) {devices.sort((a, b) => b.priority - a.priority);const selectedDevice = devices[0];DistributedServiceManager.switchToDevice(selectedDevice.name);console.log(`Selected high-priority device: ${selectedDevice.name}`);
}
六、深度技术解读:HarmonyOS Next 的分布式架构优势
HarmonyOS Next 的分布式技术相较前代实现了显著的技术提升,具体体现在以下几个方面:
1. 高效的分布式任务调度
动态负载分配 是 HarmonyOS Next 的一大亮点。通过分布式软总线和资源池化机制,系统能够动态分配任务至最优设备。
- 示例场景: 当用户启动音乐播放时,系统会优先选择高性能音箱进行解码,手机仅作为控制器。
2. 数据一致性保障机制
HarmonyOS Next 引入了基于 时间戳和版本控制 的分布式数据一致性算法,有效解决了网络延迟或中断导致的数据冲突问题。
示例: 当多个设备同时更新播放进度时,系统会自动解析冲突并优先保留最新版本的数据。
代码实现:
distributedData.set('playState', { state: true, timestamp: Date.now() }, (error) => {if (error) {console.error('Failed to set distributed data:', error);} else {console.log('Distributed data updated successfully.');}
});
七、开发者常用工具与资源
为了简化开发流程,HarmonyOS Next 提供了一系列高效工具:
- DevEco Studio:一站式开发与调试环境。
- 分布式设备模拟器:便于在单机测试多设备协同。
- API 文档与示例代码库:覆盖常见功能模块,快速入门。
1. 使用分布式模拟器
模拟多设备环境,无需真实硬件即可调试分布式功能。
2. 引入官方示例库
官方示例库(HarmonyOS Next Samples)包含了音乐播放器、家庭控制等丰富案例。
总结
HarmonyOS Next 是一款以分布式架构为核心的操作系统,它通过优化的软总线技术和设备间无缝协同能力,为开发者提供了强大的跨设备体验支持。在本文中,我们深入探讨了 HarmonyOS Next 的核心特性,包括其分布式架构、任务调度机制、设备发现及数据同步功能等。同时,结合实际开发案例,我们展示了如何利用这些特性构建一个跨设备的音乐播放应用,并解决了开发过程中可能遇到的常见问题。
通过实际代码示例,我们不仅演示了如何实现分布式数据同步、设备动态调度、语音控制等功能,还探讨了优化性能和提升用户体验的方法。此外,我们还深入分析了 HarmonyOS Next 在智能家居场景中的应用,展示了如何通过智能调度和优先级分配优化资源使用,从而为用户带来更流畅、更智能的跨设备体验。
HarmonyOS Next 强调的分布式能力和智能化的设备管理为物联网和智能家居等领域提供了广阔的应用场景,开发者可以借助其强大的分布式技术和开发工具,加速跨平台应用的开发和创新。随着 HarmonyOS 生态的不断发展,我们有理由相信,它将为全球开发者提供更多机会,推动智能终端互联互通的实现。
相关文章:
鸿蒙HarmonyOS应用开发 探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力
鸿蒙心路旅程:探索 HarmonyOS Next-从开发到实战掌握 HarmonyOS Next 的分布式能力 HarmonyOS Next 是华为推出的全新一代操作系统,旨在进一步推动分布式技术的深度应用和生态融合。本文将从技术特点、应用场景入手,通过实战案例与代码示例&…...
JavaWeb 9 MySQL DDL DML
前言 1、什么是数据库? 数据库:英文为 DataBase,简称DB,它是存储和管理数据的仓库 2、目前主流的关系型数据库有哪些? 目前主流的关系型数据库:(SQL语句是操作关系型数据库的统一标准&#x…...
哑资源对于通信行业的重要性以及哑资源管理的难点
一、哑资源定义与分类 1.1 哑资源概念界定 哑资源(Dumb Resources)在通信行业中指的是那些不具备智能处理能力的物理设备和设施。这些资源虽然不直接参与数据的生成和处理,但它们是通信网络正常运行的基础。哑资源包括但不限于电缆、天线、…...
聊聊大语言模型的上下文处理能力基本概念
一、Llama3的上下文处理能力 Llama 3不同版本的上下文处理能力有所不同: Llama 3基础版本:上下文长度一般为8k tokens左右,约相当于6,000字或10页文档.Llama 3.1版本:将上下文窗口提升到了128k tokens,这使得模型在处…...
总结几种不同风格的学术论文ChatGPT提示词
目录 1.不同写作风格的重要性 2.叙事写作 3.描述性写作 4.说明性写作 5.讨论性写作 小编先跟宝子们来看看一篇学术论文或者研究论文的基本组成部分,有助于后续提示词说明的整体结构和有效性: 引言:引言是写作的开篇部分,作者…...
鸿蒙技术分享:鸿蒙元服务踩坑血泪:文件下载、选择、打开
鸿蒙元服务踩坑:文件下载、选择、打开 因为项目有开发元服务的需求,因此需要将原本给应用开发封装的文件操作相关代码拿到元服务里用。本以为也没很复杂的功能,直接用应该问题不大,结果还是踩了坑…… 原本给应用使用的代码请查…...
12月通信基础知识补充2
看文献过程中不断发现有太多不懂的基础知识,故长期更新这类blog不断补充在这过程中学到的知识。由于这些内容与我的研究方向并不一定强相关,故记录不会很深入请见谅。 【通信基础知识补充6】12月通信基础知识补充2 一、Walsh码1.1 Walsh码的基本特性1.2 …...
佑驾创新冲刺上市:交付进度延后,研发投入缩减,刘国清为实控人
近日,深圳佑驾创新科技股份有限公司(MINIEYE,下称“佑驾创新”)通过港交所聆讯并披露了聆讯后资料集(即招股书)。据贝多财经了解,佑驾创新获得了IPO备案通知书,拟在港交所上市。 对…...
【Linux系列】Linux 防火墙的详细学习
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
使用 Trace 实现 onnx 的导出 - 学习记录
使用 Trace 实现 onnx 的导出 一、使用 Trace 实现 onnx 的导出的流程二、代码分解2.1、定义模型2.2、分析模型操作类型2.3、构建钩子函数2.3.1、定义 hook 函数2.3.2、注册 Conv2d - hook 函数2.3.3、注册 ReLU - hook 函数2.3.4、注册 Add - hook 函数三、完整导出 onnx 代码…...
python字符串处理基础操作总结
1.去掉空格或者特殊符号 input_str.strip() #去掉所有空格 input_str.lstrip() #去掉左边空格 input_str.rstrip() #去掉右边空格 def print_hi():input_str 今天天气不错,风和日丽 out input_str.strip()print(input_str)print(out)if __name__ __main__:print…...
AI如何让PPT制作变得轻松与智能?用一键生成ppt!
谁还愿意把时间浪费在PPT的设计和内容排版上?尤其是对于那些需要频繁制作演示文稿的人来说,一份看起来专业的PPT往往会让人陷入“做与不做”的困境。但随着科技的飞速发展,传统的PPT制作方法正逐渐被更为高效的工具所取代,尤其是智…...
OpenCV相机标定与3D重建(11)机器人世界手眼标定函数calibrateRobotWorldHandEye()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算机器人世界/手眼标定: w T b _{}^{w}\textrm{T}_b wTb 和 c T g _{}^{c}\textrm{T}_g cTg。 cv::calibrateRobotWorldHa…...
vscode通过ssh连接虚拟机进行开发
虚拟机自带的vscode很卡而且画质感觉不行,所以用这种方法解决 1.VSCODE安装扩展Tabnine(AI代码补全),Remote Development 2.虚拟机终端ifconfig查看本机ip 192.168.43.197 开启ubuntu的SSH服务 sudo apt-get install openssh-server 配置vscode的ssh …...
TCP/IP协议详解(小白)
TCP/IP协议详解 TCP/IP协议包含了一系列的协议,也叫TCP/IP协议族(TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP。TCP/IP协议族提供了点对点的连结机制,并且将传输数据帧的封装、寻址、传输、路由…...
手机租赁系统开发全面解析与实现指南
内容概要 手机租赁系统的设计理念是为了满足用户对便捷、灵活的手机使用需求。想象一下,谁还愿意花大价钱买一部手机呢?尤其是当新款手机频繁推出时,租赁似乎成了更受欢迎的选择。这个系统旨在让用户可以随时随地选择租用不同型号的手机&…...
洛谷【排序】算法的题单 - 笔记
2024-12-09 - 第 37 篇 洛谷【排序】题单 - 笔记 作者(Author): 郑龙浩 / 仟濹(CSND账号名) 洛谷【排序】题单合集 一、排序算法都有… 1. 简单排序算法 这些算法通常是基础的排序方法,容易理解和实现,但效率较低,适用于数据量较小的情况…...
《筑牢网络安全防线:守护数字时代的生命线》
《筑牢网络安全防线:守护数字时代的生命线》 一、网络安全的重要性二、网络安全面临的挑战三、网络安全技术四、网络安全案例分析五、如何加强网络安全防护六、结论 一、网络安全的重要性 网络安全在当今数字化时代的重要性不言而喻,它涵盖了多个关键领…...
VB.net进行CAD二次开发(二)与cad交互
开发过程遇到了一个问题:自制窗口与控件与CAD的交互。 启动类,调用非模式窗口 Imports Autodesk.AutoCAD.Runtime Public Class Class1 //CAD启动界面 <CommandMethod("US")> Public Sub UiStart() Dim myfrom As Form1 New…...
Python函数——函数的返回值定义语法
一、引言 在Python中,函数的返回值是其核心功能之一,它使得函数能够将计算结果传递给调用者,进而推动程序的逻辑和功能实现。理解和掌握函数的返回值语法,不仅能够提高代码的模块化和可读性,还能使程序更加高效和灵活…...
Python 布尔索引筛选数据
Python 布尔索引筛选数据 1. 布尔索引筛选数据1.1. 根据布尔索引对矩阵元素进行赋值1.2. 根据布尔索引对矩阵元素进行赋值1.3. 根据布尔索引对矩阵元素进行赋值 2. logits[logits < values[:, [-1]]] -1000References 1. 布尔索引筛选数据 布尔索引允许通过条件筛选矩阵中…...
mybatis缓存
一级缓存和二级缓存范围不一样 只缓存查询,缓存增删改没有意义 先在mybatis-config.xml加入 <setting name"cacheEnabled"value"true"/> 在mapper.xml中开启二缓存 <!--回收策略为先进先出,每隔60秒刷新一次,…...
Linux下的编程
实验7 Linux下的编程 一、实验目的 熟练掌握Linux下Python编程的方法、函数调用方法以及shell编程中的控制结构。 二、实验环境 硬件:PC电脑一台,网络正常。 配置:win10系统,内存大于8G ,硬盘500G及以上。 软件&a…...
使用Java创建RabbitMQ消息生产者的详细指南
目录 在现代分布式系统中,消息队列是实现异步通信的重要工具。RabbitMQ作为一种流行的开源消息代理,支持多种消息协议,广泛应用于微服务架构和事件驱动的应用程序中。本文将深入探讨如何使用Java创建RabbitMQ的消息生产者,发送消息…...
笔记本外接显示屏没声音
1、笔记本正常有声音,但是外接显示屏后没有声音了怎么回事呢?原来外接显示屏后笔记本的声音输出会自动选择显示屏的音频输出,但是显示屏可能没有声音输出所以导致笔记本没有声音。 2、解决办法:打开笔记本设置,选择声…...
【Linux】Linux权限管理:文件与目录的全面指南
在Linux系统中,权限管理是确保数据安全的关键。本文将为大家介绍Linux文件与目录的权限管理,帮助你理解如何设置和管理访问权限。无论你是新手还是有经验的用户,这里都将提供实用的技巧和知识,助你更好地掌握Linux环境。让我们一起…...
并发在前端中的应用?
并发在前端中的应用主要体现在处理多个请求和优化页面加载速度方面。前端并发处理通常涉及在极短时间内发送多个数据请求,例如在页面渲染时同时请求多个数据。通过并发处理,可以显著减少页面加载时间,提升用户体验。 前端并发处理的具体…...
Spring Boot助力,一键解锁招聘全流程信息精细化管理
2系统相关技术 2.1 Java语言介绍 Java是由SUN公司推出,该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称,也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备了显著的优势和广阔的前景&#…...
沉浸式多用户跟踪解决方案
沉浸式多用户VR跟踪解决方案,支持使用HTC VIVE或Valve Index等消费级虚拟现实头盔在房间内执行大范围多用户跟踪。该解决方案不仅能够跟踪处于坐姿或其他静止用户的头部和控制器,还支持房间内多用户动态跟踪。 通常房间内的跟踪受限于特定的系统能力&…...
“切片赋值”创建列表批量操作“新”方法(Python)
[start:end]切片赋值,扩展了list批量增减元素的操作能力。 (笔记模板由python脚本于2024年12月06日 15:07:56创建,本篇笔记适合研python基础的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:…...
Linux中-vvv详细输出命令
在 Shell 脚本中,有时会看到某些命令后面加上 -vvv 或类似的选项。这个选项的作用通常与命令的 **调试模式** 或 **详细输出** 相关。不同的命令和工具对于选项的解释和处理方式不同,因此 -vvv 的具体含义取决于它所跟随的命令。 ### 一般来说ÿ…...
获取淘宝商品评论数据的API应用:市场调研|产品更新|用户数据
下面是一段我用item_review(获取商品评论数据)抓来的商品评论数据: "items": {"total_results": 375,"totalpage": 38,"page_size": 10,"page": "1","item": [{&quo…...
VRRP的知识点总结及实验
1、VRRP VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)既能够实现网关的备份,又能解决多个网关之间互相冲突的问题,从而提高网络可靠性。 2、VRRP技术概述: 通过把几台路由设备联合组成一台虚拟的“路由设备”…...
群控系统服务端开发模式-应用开发-邮件发送工具类
一、邮件发送工具类开发 1、添加框架对应的SDK composer require phpmailer/phpmailer 2、添加工具集 在根目录下extend文件夹下创建Email文件夹,在Email文件夹下添加工具集控制并命名为EmailSender.php <?php /*** 邮件发送工具* User: 龙哥三年风水* Date: …...
pytest 的简单介绍
官方文档:pytest 文档 1. pytest 概述 pytest 是一个功能强大的 Python 测试框架,旨在简化单元测试和功能测试的编写与执行。它不仅支持简单的单元测试,还能进行更复杂的测试,如数据驱动的测试、并发测试等。pytest 支持自动化发…...
【C语言】库函数常见的陷阱与缺陷(2):字符串转化函数
目录 一、atoi 函数 1.1. 功能与用法 1.2. 陷阱与缺陷 1.2.1. 输入验证不足 1.2.2. 溢出问题 1.3 安全替代 1.4. 代码示例 二、atof 函数 2.1. 功能与用法 2.2. 陷阱与缺陷 2.3. 安全使用建议 2.4. 代码示例 三、strtol 函数 3.1. 功能与用法 3.2. 陷阱与缺陷 …...
【LeetCode每日一题】LeetCode 976.三角形的最大周长
LeetCode 976.三角形的最大周长 题目描述 给定一个包含非负整数的数组 nums,其中每个元素表示一个线段的长度。你需要从中选出三个线段,组成一个三角形,使得三角形的周长最大,并返回这个最大周长。如果无法组成三角形࿰…...
在 Ubuntu 24 上安装 Redis 7.0.15 并配置允许所有 IP 访问
前提条件 一台运行 Ubuntu 24 的服务器拥有 sudo 权限的用户 步骤一:更新系统包 首先,确保系统包是最新的,以避免潜在的依赖问题。 sudo apt update sudo apt upgrade -y步骤二:安装编译 Redis 所需的依赖 Redis 需要一些编译…...
C# 中的异常处理:构建健壮和可靠的程序
C#中的异常处理(Exception Handling)。异常处理是编程中非常重要的一部分,它允许开发者优雅地处理程序运行时可能出现的错误或意外情况。通过有效的异常处理,可以使应用程序更加健壮、可靠,并提供更好的用户体验。以下…...
Prime2_解法二:openssl解密凭据
Prime2_解法二:openssl解密凭据 本博客提供的所有信息仅供学习和研究目的,旨在提高读者的网络安全意识和技术能力。请在合法合规的前提下使用本文中提供的任何技术、方法或工具。如果您选择使用本博客中的任何信息进行非法活动,您将独自承担全…...
数据结构 ——数状存储的基本概念
数据结构 ——数状存储的基本概念 一、树状存储基本概念 1、 深度(层数):计算一个节点的深度,从根节点算起(从1开始计数),到该节点所经过的节点数(包括此节点)为树的深度…...
【网盘系统】递归删除批量文件、从回收站恢复文件、彻底删除文件
为何需要用到递归? 在网盘系统中,文件的类型分为文件和文件夹两种类型。当我们想要批量删除文件时,不乏其中会包含文件夹,而想要删除这个文件夹,自然其中所包含的文件都要删除,而其中所包含的文件也有可能…...
C++ 列表初始化(initializer_list)
列表初始化(initializer_list) 列表初始化是C中的一种语法特性,引入于C11,用于更简单直观地初始化变量、对象或容器。它使用花括号 {},提供了更安全的初始化方式,避免了类型窄化转换等潜在错误。 定义 列表初始化是用花括号 {}…...
【Keil】Keil MDK 已经不再提供 ARM Compiler v5
该问题出现在 Keil MDK v5.12 之后 用必应搜索相关问题,发现早已在 ARM community 提了 How can I install Compiler Version 5 for Keil vision 5 回答给出了这个文档 Documentation - Arm Developer 文档提到了 ARM Compiler 5 的下载地址,但是得登录 …...
Knowledge Graph Studio:让知识图谱构建更简单、更智能
一、前言 上周和研究院的同事讨论 2025 年大模型产品规划时,让我产生了一些疑惑和不解,因为从大家交流的规划方向来看,更多的还是集中在Prompt提示词工程(包括提示词的管理、测试、评估、调优)这一块规划的确实挺细&a…...
【jvm】垃圾判别阶段算法
目录 1. 说明2. 引用计数算法2. 可达性分析算法3. 垃圾判别阶段的过程 1. 说明 1.JVM主要使用两种垃圾判别算法:引用计数算法和可达性分析算法。 2. 引用计数算法 1.原理:为每个对象维护一个引用计数器,每当有地方引用该对象时,…...
深入理解Linux进程管理机制
个人主页:chian-ocean 文章专栏-Linux 前言 进程是现代操作系统中一个不可或缺的概念,其主要目的在于管理资源、实现并发、提高系统效率,并确保系统的稳定性和安全性。 进程的定义 进程(Process) 是计算机操作系统中…...
OV2640摄像头模块介绍
目录 一、引言 二、模块概述 三、技术特点 四、工作原理 五、接口类型 六、应用领域 七、使用方法 八、参数设置 九、图像数据处理 十、调试和故障排除 十一、结语 一、引言 在当今的科技时代,图像采集和处理技术在众多领域发挥着至关重要的作用。其中&…...
机器人的动力学前馈控制
机器人前馈技术可加快伺服驱动器内部的误差收敛速度,进而改善机器人的动态响应特性,解决机器人在运动过程中的抖动问题,提升机器人系统的精度和效率。 对于关节型机器人而言,在理想的刚性连接下,若给定每个关节所需要的…...
Python+OpenCV系列:图像的几何变换
Python OpenCV 系列:图像的几何变换 引言 在图像处理领域,几何变换是一个非常重要的操作,它可以改变图像的位置、大小、方向或形状。在计算机视觉中,这些操作对于图像预处理、特征提取和图像增强至关重要。本文将介绍如何利用 …...