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

HarmonyOS NEXT应用开发实战:玩鸿蒙App客户端开发

之前学习android时候,有一个玩android的客户端项目很火,不但能够学习知识,还能够动手实践,激发学习兴趣。这里作者通过一个完整的实战项目—玩鸿蒙客户端App,一块儿深入学习如何在HarmonyOS平台上开发一个功能丰富且完整的移动应用。

玩鸿蒙客户端App旨在为用户提供一个方便的鸿蒙社区交流学习平台,用户可以通过该APP浏览社区的精彩文章、查看热门文章、以及阅读文章详情等。通过此实战,将能够掌握在HarmonyOS平台上使用@nutpi/axios网络库进行网络请求的基本方法,了解如何设计和实现简洁且美观的UI界面,以及如何遵循设计原则和最佳实践来开发一个功能完整的社区客户端App。

为什么选择玩鸿蒙App作为学习项目?

学习一项新技能,最快最直接的办法就是亲手去做一个项目。这样不仅能激发兴趣,还能让你从中不断总结经验,这种学习方式是最高效的。鸿蒙社区客户端App是一个简单小巧的应用,非常适合用来练手。在开发过程中,不仅能帮助你提升编程技能,还能让你在真实的开发环境中感受到项目开发的乐趣,看到自己的开发成果,形成一种正反馈,不断激励你学习进步。

此外,这样的项目非常适合入门,能够逐步培养你的开发能力,增强对技术的理解和运用。通过直接参与项目实战,可以提升学习效率和质量,培养解决实际问题的能力,促进知识体系的构建。不要等到每个细节都掌握后再去做项目,也不要等到完美了再开始,通过项目驱动的形式系统化学习,把前面学到的知识串联起来,避免知识点的碎片化。

玩鸿蒙客户端App的主要功能

玩鸿蒙客户端App是一个基于HarmonyOS平台的移动应用。该应用集成了多种功能,包括文章浏览、热门文章展示、文章详情阅读和个人中心页面。通过鸿蒙社区客户端App,用户可以轻松地使用网络接口获取数据,掌握常用组件的使用,享受丰富的内容和服务。本项目旨在为用户提供一个高效便捷的鸿蒙社区交流学习平台,促进信息的共享与互动。

项目中使用的主要网络接口

以下是本项目中使用的主要网络接口:

  • 查询文章列表GET https://api.nutpi.net/queryTopicList?page=1&pageSize=10,用于获取指定页码和每页数量的文章列表。
  • 查询热门文章GET https://api.nutpi.net/queryHotTopic,用于获取当前热门的文章列表。
  • 查询文章详情GET https://api.nutpi.net/thread?topicId=712,用于获取指定文章的详细信息。

使用@nutpi/axios进行网络请求

导入和配置

我们首先需要导入@nutpi/axios库,并进行相应的配置。配置信息包括基础URL、超时时间、是否显示加载对话框等。

import {AxiosHttpRequest,HttpPromise} from '@nutpi/axios'
import {AxiosHeaders,AxiosRequestHeaders,AxiosError } from '@nutpi/axios';
import { Log } from './logutil';
import { promptAction } from "@kit.ArkUI";function showToast(msg:string){promptAction.showToast({ message: msg })
}function showLoadingDialog(msg:string){promptAction.showToast({ message: msg })
}function hideLoadingDialog() {}export const BaseURL = "http://120.27.146.247:7000"
const axiosClient = new AxiosHttpRequest({baseURL: BaseURL+'/api/v1',timeout: 10 * 1000,showLoading:true,headers: new AxiosHeaders({'Content-Type': 'application/json'}) as AxiosRequestHeaders,interceptorHooks: {requestInterceptor: async (config) => {Log.debug('网络请求Request 请求方法:', `${config.method}`);Log.debug('网络请求Request 请求链接:', `${config.url}`);Log.debug('网络请求Request Params:', `\n${JSON.stringify(config.params)}`);Log.debug('网络请求Request Data:', `${JSON.stringify(config.data)}`);axiosClient.config.showLoading = config.showLoadingif (config.showLoading) {showLoadingDialog("加载中...")}return config;},requestInterceptorCatch: (err) => {Log.error("网络请求RequestError", err.toString())if (axiosClient.config.showLoading) {hideLoadingDialog()}return err;},responseInterceptor: (response) => {if (axiosClient.config.showLoading) {hideLoadingDialog()}Log.debug('网络请求响应Response:', `\n${JSON.stringify(response.data)}`);if (response.status === 200) {const checkResultCode = response.config.checkResultCodeif (checkResultCode && response.data.errorCode != 0) {showToast(response.data.errorMsg)return Promise.reject(response)}return Promise.resolve(response);} else {return Promise.reject(response);}},responseInterceptorCatch: (error) => {if (axiosClient.config.showLoading) {hideLoadingDialog()}Log.error("网络请求响应异常", error.toString());errorHandler(error);return Promise.reject(error);},}
});function errorHandler(error: any) {if (error instanceof AxiosError) {} else if (error != undefined && error.response != undefined && error.response.status) {switch (error.response.status) {case 401:break;case 403:break;case 404:break;default:}}
}export  {axiosClient,HttpPromise};

使用接口

接下来,我们定义了获取热门文章、话题列表和话题详情的接口函数。这些函数都返回一个HttpPromise对象,用于处理异步请求的结果。

import {axiosClient,HttpPromise} from '../../utils/axiosClient';
import { HotTopicResp } from '../bean/HotTopicResp';
import { TopicDetailResp } from '../bean/TopicDetailResp';
import { TopicListResp } from '../bean/TopicListResp';export const getHotTopics = (): HttpPromise<HotTopicResp> => axiosClient.get({url:'/hottopic'});export const getTopicList = (page:number): HttpPromise<TopicListResp> => axiosClient.get({url:'/topiclist',params:{page:page}});export const getTopicDetail = (id:number): HttpPromise<TopicDetailResp> => axiosClient.get({url:'/topicdetail',params:{id:id}});

设计UI界面

设计UI界面时,我们需要遵循简洁美观的原则,并结合鸿蒙平台的设计规范。这包括合理的布局、清晰的视觉层次、以及合适的颜色搭配等。通过设计UI界面,我们可以提升用户的体验,同时也能更好地展示应用程序的功能。
0f967d03d7a7843ab2b65299143d414.jpg

import { Log } from '../../utils/logutil';
import { BusinessError } from '@kit.BasicServicesKit';
import { promptAction } from '@kit.ArkUI';
import { HotTopicItem } from '../../common/bean/HotTopicResp';
import { getHotTopics, getTopicList } from '../../common/api/nutpiApi';
import { TopicListItem } from '../../common/bean/TopicListResp';
import { BaseURL } from '../../utils/axiosClient';@Component
export default struct Home {@Consume pageStack: NavPathStackprivate swiperController: SwiperController = new SwiperController()@State swiperData: HotTopicItem[] = []@State topicList:TopicListItem[] = []private curPage:number = 1;private curCount:number = 0;private total:number = 0;// 判断滚动条是否触底@Stateprivate isEnd: boolean = false;// 触底之后触发下一页getMoreRecList():void {console.log('getMoreRecList:')if(this.curCount >= this.total){promptAction.showToast({ message: '已经到底啦' })return}promptAction.showToast({ message: '数据加载中' })getTopicList(this.curPage).then((res) => {Log.debug(res.data.code)this.total= res.data.totalthis.topicList = this.topicList.concat(res.data.data);this.curCount += res.data.data.lengththis.curPage += 1}).catch((err:BusinessError) => {Log.debug("request","err.code:%d",err.code)Log.debug("request",err.message)});}// 组件生命周期aboutToAppear() {Log.info('Home aboutToAppear');getHotTopics().then((res) => {Log.debug(res.status)for (const itm of res.data.data) {this.swiperData.push(itm)}}).catch((err:BusinessError) => {Log.debug("request","err.code:%d",err.code)Log.debug("request",err.message)});getTopicList(1).then((res) => {Log.debug(res.status)this.topicList = res.data.datathis.total= res.data.totalthis.curCount =this.topicList.lengththis.curPage += 1}).catch((err:BusinessError) => {Log.debug("request","err.code:%d",err.code)Log.debug("request",err.message)});}// 组件生命周期aboutToDisappear() {Log.info('Home aboutToDisappear');}build() {Scroll() {Column({ space: 0 }) {//titleText('鸿蒙社区').fontSize(26).fontWeight(FontWeight.Bold).textAlign(TextAlign.Center).width('100%').height(50)// 轮播图Swiper(this.swiperController) {ForEach(this.swiperData, (item: HotTopicItem) => {Stack({ alignContent: Alignment.Center }) {Image(BaseURL+'/static/img'+item.cover).width('100%').height(180).backgroundColor(0xAFEEEE).zIndex(1).onClick(() => {this.pageStack.pushDestinationByName("PageDetail", { id:item.id }).catch((e:Error)=>{// 跳转失败,会返回错误码及错误信息console.log(`catch exception: ${JSON.stringify(e)}`)}).then(()=>{// 跳转成功});})// 显示轮播图标题Text(item.title).padding(5).margin({ top: 110 }).width('100%').height(60).textAlign(TextAlign.Center).maxLines(2).textOverflow({ overflow: TextOverflow.Clip }).fontSize(18).fontColor(Color.White).opacity(100)// 设置标题的透明度 不透明度设为100%,表示完全不透明.backgroundColor('#808080AA')// 背景颜色设为透明.zIndex(2).onClick(() => {this.pageStack.pushDestinationByName("PageDetail", { id:item.id }).catch((e:Error)=>{// 跳转失败,会返回错误码及错误信息console.log(`catch exception: ${JSON.stringify(e)}`)}).then(()=>{// 跳转成功});})}}, (item: HotTopicItem) => item.id)}.cachedCount(2).index(1).autoPlay(true).interval(4000).loop(true).indicatorInteractive(true).duration(1000).itemSpace(0).curve(Curve.Linear).onChange((index: number) => {console.info(index.toString())}).onGestureSwipe((index: number, extraInfo: SwiperAnimationEvent) => {console.info("index: " + index)console.info("current offset: " + extraInfo.currentOffset)}).height(180) // 设置高度Text('文章列表').fontWeight(FontWeight.Bold).padding(10).alignSelf(ItemAlign.Start)List({ space: 5 }) {ForEach(this.topicList, (item:TopicListItem) => {ListItem() {Column(){Row() {Image(item.avatar).objectFit(ImageFit.Cover).width(100).height(85).borderRadius(5)Column({ space: 10 }) {Text(item.title).maxLines(2).textOverflow({overflow:TextOverflow.Ellipsis }).fontSize(16).width('100%').fontWeight(FontWeight.Bold).textAlign(TextAlign.Start)Text(item.summary).maxLines(2).textOverflow({overflow:TextOverflow.Ellipsis }).fontSize(14).width('100%').textAlign(TextAlign.Start)}.height(85).layoutWeight(1).align(Alignment.Start).padding({left:5})}.size({ width: '100%' })Row() {Text(item.postTime).fontSize(14).padding(5)Text("浏览:"+item.viewCnt).width(80).fontSize(12).padding(5)Text(item.nickname).fontSize(12).padding(5)}.width('100%').justifyContent(FlexAlign.Start).padding({ top:10 })}.padding({ left:10,right:10 })}.onClick(() => {this.pageStack.pushDestinationByName("PageDetail", { id:item.id }).catch((e:Error)=>{// 跳转失败,会返回错误码及错误信息console.log(`catch exception: ${JSON.stringify(e)}`)}).then(()=>{// 跳转成功});})}, (itm:TopicListItem) => itm.id)}.divider({strokeWidth:2,color:'#F1F3F5'}).listDirection(Axis.Vertical).edgeEffect(EdgeEffect.Spring, {alwaysEnabled:true})// 当画面能滚动说明没有触底.onScrollStart(() => {this.isEnd = false})// 判断当前是否停止滚动.onScrollStop(() => {// 如果停止滚动并且满足滚动条已经在底部进行数据的加载if (this.isEnd) {// 加载数据this.getMoreRecList();}})// 当滚动条触底把 flag 设置成 true.onReachEnd(() => {this.isEnd = trueconsole.log("onReachEnd")})}.width('100%').height('100%')}.width('100%').height('100%').scrollable(ScrollDirection.Vertical)}
}

总结

通过玩鸿蒙客户端App,我们可以系统地学习HarmonyOS平台的应用开发知识。从网络请求到UI设计,每一个环节都是一个宝贵的学习机会,能够帮助我们提升开发技能,更好地理解和运用技术。不要害怕从零开始,也不要追求完美,只要动手去做,就能不断进步。希望这篇实战教程能够帮助你在HarmonyOS平台上开发出优秀的应用。

相关文章:

HarmonyOS NEXT应用开发实战:玩鸿蒙App客户端开发

之前学习android时候&#xff0c;有一个玩android的客户端项目很火&#xff0c;不但能够学习知识&#xff0c;还能够动手实践&#xff0c;激发学习兴趣。这里作者通过一个完整的实战项目—玩鸿蒙客户端App&#xff0c;一块儿深入学习如何在HarmonyOS平台上开发一个功能丰富且完…...

十六、面向对象底层逻辑-BeanPostProcessor接口设计

一、引言&#xff1a;Bean生命周期的精密控制 在Spring容器的Bean实例化过程中&#xff0c;BeanPostProcessor接口是开发者介入对象初始化阶段的核心扩展点。作为Spring框架最强大的扩展机制之一&#xff0c;该接口提供了对Bean实例化过程的原子级控制能力&#xff0c;支撑了A…...

在线免费图片处理工具-传道软件图片工具

在线免费图片处理工具-传道软件图片工具 在线免费图片处理工具&#xff0c;无需注册与登录&#xff0c;用完即走。 官网链接&#xff1a; https://www.chdaoai.com/image.html 功能有&#xff1a; Favicon图标生成&#xff0c;图片颜色拾取器&#xff0c;屏幕颜色拾取&…...

JS进阶学习04

一、深浅拷贝 1.浅拷贝 首先浅拷贝和深拷贝只针对引用类型 浅拷贝&#xff1a;拷贝的是地址 常见方法&#xff1a; 1. 拷贝对象&#xff1a;Object.assgin() / 展开运算符 {...obj} 拷贝对象 2. 拷贝数组&#xff1a;Array.prototype.concat() 或者 [...arr] >如果是简…...

CSS、SCSS 和 SASS 的语法差异

CSS、SCSS 和 SASS 的语法差异 CSS (Cascading Style Sheets) 标准样式表语言&#xff0c;所有浏览器原生支持语法特点&#xff1a; 使用大括号 {} 包裹规则使用分号 ; 结束声明简单的选择器-属性-值结构 .container {width: 100%;margin: 0 auto; }SCSS (Sassy CSS) CSS的…...

ThreadPoolTaskExecutor 和 ThreadPoolExecutor 的使用场景

在Spring Boot项目中&#xff0c;ThreadPoolTaskExecutor 和 ThreadPoolExecutor 的使用场景不同&#xff0c;但大部分开发者会更倾向于用 ThreadPoolTaskExecutor。我来给你拆解清楚&#xff0c;面试时直接甩这个答案&#xff01; 1️⃣ 核心区别 ThreadPoolExecutor&#xf…...

打卡31天

文件的规范拆分和写法 知识点回顾 规范的文件命名 规范的文件夹管理 机器学习项目的拆分 编码格式和类型注解 作业&#xff1a;尝试针对之前的心脏病项目&#xff0c;准备拆分的项目文件&#xff0c;思考下哪些部分可以未来复用。 补充介绍&#xff1a; pyc文件的介绍 知识…...

OBOO鸥柏丨AI数字人触摸屏查询触控人脸识别语音交互一体机上市

OBOO鸥柏丨AI数字人触摸屏查询触控人脸识别语音交互一体机上市分析 OBOO鸥柏品牌推出的AI数字人触摸屏查询触控人脸识别语音交互一体机&#xff0c;是其在智能交互设备领域的又一创新产品。该一体机整合了触摸屏查询、AI人脸识别、AI声源定位语音麦克风&#xff0c;触控交互以…...

基于大模型的闭合性尺桡骨干骨折全方位诊疗研究报告

目录 一、引言 1.1 研究背景与目的 1.2 研究意义 二、大模型技术原理与应用现状 2.1 大模型基本原理 2.2 在医疗领域的应用案例 三、闭合性尺桡骨干骨折概述 3.1 骨折定义与分类 3.2 流行病学特征 3.3 临床症状与诊断方法 四、大模型在术前风险预测中的应用 4.1 数…...

Win11上安装docker

Win11上安装docker 一、安装WSL&#xff08;Windows Subsystem for Linux&#xff09;二、安装docker到D盘三、启动docker四、测试启动容器 一、安装WSL&#xff08;Windows Subsystem for Linux&#xff09; 以管理员身份打开cmd 更新WSL wsl --update3. 安装WSL wsl --ins…...

Axure项目实战:智慧运输平台后台管理端-订单管理1(多级交互)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:订单管理 主要内容:条件组合、中继器筛选、表单跟随菜单拖动、审批数据互通等 应用场景…...

如何在 Android 手机和平板电脑上下载应用程序

对于Android用户来说&#xff0c;从Google Play Store下载应用程序并不陌生&#xff0c;对吧&#xff1f;但是&#xff0c;除了 Google Play 商店之外&#xff0c;您还可以在哪里为 Android 设备下载和安装应用程序呢&#xff1f;这就是我们今天要分享的内容。我们解释了 6 种下…...

C++23 新特性:允许 std::stack 与 std::queue 从迭代器对构造 (P1425R4)

文章目录 背景与动机提案内容与实现细节提案 P1425R4实现细节编译器支持 对开发者的影响提高灵活性简化代码向后兼容性 总结 C23标准带来了许多令人兴奋的新特性和改进&#xff0c;其中之一便是对标准容器的增强。提案P1425R4允许 std::stack 和 std::queue 直接从一对迭代器…...

在线OJ系统测试报告

在线OJ系统测试报告 项目背景项目功能管理员功能用户功能 测试计划功能测试自动化测试性能测试 项目背景 本项目为在线OJ系统&#xff0c;采用微服务架构以及前后端分离的方法来实现&#xff0c;包含用户管理、题目管理、竞赛管理、判题服务、网关服务、消息与任务调度等多个子…...

31-35【动手学深度学习】深度学习硬件

1. CPU和GPU 1.1 CPU CPU每秒钟计算的浮点运算数为0.15&#xff0c;GPU为12。GPU的显存很低&#xff0c;16GB&#xff08;可能32G封顶&#xff09;&#xff0c;CPU可以一直插内存。 左边是GPU&#xff08;只能做些很简单的游戏&#xff0c;视频处理&#xff09;&#xff0c;中…...

Dify的大语言模型(LLM) AI 应用开发平台-本地部署

前言 今天闲着&#xff0c;捣鼓一下 Dify 这个开源平台&#xff0c;在 mac 系统上&#xff0c;本地部署并运行 Dify 平台&#xff0c;下面记录个人在本地部署Dify 的过程。 Dify是什么&#xff1f; Dify是一个开源的大语言模型&#xff08;LLM&#xff09;应用开发平台&#…...

《MQTT 从 0 到 1:原理、实战与面试指南全解》

一、MQTT 是什么&#xff1f; MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种 轻量级、基于发布/订阅&#xff08;Pub/Sub&#xff09;模式的消息传输协议&#xff0c;适用于物联网&#xff08;IoT&#xff09;、实时通信等对 低带宽、高延迟、不稳定…...

SpringMVC 通过ajax 实现文件的上传

使用form表单在springmvc 项目中上传文件&#xff0c;文件上传成功之后往往会跳转到其他的页面。但是有的时候&#xff0c;文件上传成功的同时&#xff0c;并不需要进行页面的跳转&#xff0c;可以通过ajax来实现文件的上传 下面我们来看看如何来实现&#xff1a; 方式1&…...

图片识别(TransFormerCNNMLP)

目录 一、Transformer &#xff08;一&#xff09;ViT&#xff1a;Transformer 引入计算机视觉的里程碑 &#xff08;二&#xff09;Swin-Transformer&#xff1a;借鉴卷积改进 ViT &#xff08;三&#xff09;VAN&#xff1a;使用卷积模仿 ViT &#xff08;四&#xff09;…...

手术机器人行业新趋势:Kinova多机械臂协同系统如何突破复杂场景适应性瓶颈?

机器人手术历经多阶段技术演进&#xff0c;已成为现代医疗重要方向。其需求增长源于医疗机构对高精度低风险手术方案的需求、微创手术普及及技术进步带来的复杂场景适应性提升。Kinova 轻型机械臂凭借模块化设计与即插即用功能&#xff0c;可快速适配不同手术环境&#xff0c;为…...

国酒华夏实业酒水供应链:全品类覆盖打造一站式购销平台

在消费升级与供应链效率双重驱动的酒水行业变革中&#xff0c;国酒华夏实业凭借全品类覆盖与数字化赋能&#xff0c;构建起集采购、品鉴、文化传播于一体的新型酒水供应链体系。其“一站式购销平台”模式不仅重塑了传统酒水流通链路&#xff0c;更通过精准服务与品质保障&#…...

【Qt】:设置hover属性,没有适应到子控件中

#ButtonStyle:hover 是一个 ID 选择器&#xff0c;仅对设置了 objectName"ButtonStyle" 的控件本身生效&#xff0c;不会自动应用到其子控件&#xff08;如 QLabel 和 QWidget&#xff09;。 在ButtonForm中&#xff0c;有一个Qwidget控件&#xff0c;在这个Qwidget中…...

缺乏经验的 PCB 过孔建模方法

您是一名背板设计人员,被指派设计一种新的高速、多千兆位串行链路架构,从多个线卡到背板上的多个交换矩阵交换卡。这些链路必须在第一天以 6GB/s 的速度运行,并且为 10GB/s (IEEE 802.3KR) 做好产品演进的准备。时间表很紧,您需要提出一个背板架构,以允许程序的其余部分…...

搭建人工智能RAG知识库的主流平台与特点概述

在2022年末chatgpt和2024年末deepseek的推动下&#xff0c;人工智能应用如雨后春笋&#xff0c;层出不穷&#xff0c;日新月异。现推荐一些截至目前比较主流的用来搭建RAG的平台。 1. Haystack 特点&#xff1a; 模块化架构&#xff1a;支持端到端问答系统构建&#xff0c;集…...

【QT】在界面A打开界面B时,界面A隐藏,界面B关闭时,界面A复现

在Qt6中&#xff0c;可以通过信号与槽机制实现界面A在关闭界面B时重新显示。以下是具体的实现步骤&#xff1a; 方法一&#xff1a;使用自定义关闭信号 在界面B中定义关闭信号&#xff1a;当界面B关闭时发射该信号。连接信号到界面A的显示槽&#xff1a;在界面A中创建界面B时…...

捡漏岗位:国考报名数据和岗位特征分析

2025 年国考官方数据及权威分析&#xff0c;报录比低于 10:1 的岗位主要集中在中西部艰苦边远地区、特殊专业技术岗位及定向招录岗位。 岗位名称招录机关地区招录人数报名人数报录比报考条件示例一级警长及以下&#xff08;三&#xff09;新疆出入境边防检查总站新疆3124:1男性…...

qt---命名规范

1、命名规范 1) 类名&#xff1a;单词首字母大写&#xff0c;单词和单词之间直接连接&#xff0c;无需连接字符 如&#xff1a;MyClass&#xff0c;QPushButton class MainWindow { };2) Qt中内置的类型&#xff0c;头文件和类命名同名。 如&#xff1a; #include <QStri…...

信息系统项目管理师考前练习3

项目组合管理 企业战略调整后,项目组合经理应优先: A. 终止所有不符合新战略的项目 B. 重新评估项目优先级与资源分配 C. 要求所有项目加快交付进度 D. 合并相似项目以减少成本 答案:B 解析:项目组合管理的核心是动态对齐战略,优先重新评估项目价值与资源匹配(第5版强调…...

【算法创新+设计】灰狼算法GWO+扰动算子,求解大规模TSP问题利器

目录 1.灰狼算法GWO原理2.连续空间到离散空间3.核心公式处理4.结果展示5.代码获取6.读者交流 1.灰狼算法GWO原理 【智能算法】灰狼算法&#xff08;GWO&#xff09;原理及实现 2.连续空间到离散空间 GWO算法是针对连续空间问题设计的优化方法&#xff0c;而旅行商问题&#…...

GPU P-State 模式说明

在 NVIDIA GPU 上&#xff0c;“P-State”&#xff08;Performance State&#xff09;用来表示显卡当前的性能&#xff0f;功耗等级&#xff0c;P0 代表最高性能&#xff08;最高核心频率、最大功耗&#xff09;&#xff0c;数字越大性能越低、功耗越小。不同 P-State 的主要区…...

真实世界中的贝叶斯网络:Bootstrap、模型平均与非齐次动态的科研应用

在生态与环境科学领域&#xff0c;揭示变量间因果机制是理解复杂系统运行规律的核心挑战。传统实验方法受限于高昂成本与生态扰动风险&#xff0c;而经典统计模型仅能刻画变量相关性&#xff0c;难以突破"相关非因果"的认知瓶颈。贝叶斯网络作为融合图论与概率论的前…...

.NET外挂系列:4. harmony 中补丁参数的有趣玩法(上)

一&#xff1a;背景 1. 讲故事 前面几篇我们说完了 harmony 的几个注入点&#xff0c;这篇我们聚焦注入点可接收的几类参数的解读&#xff0c;非常有意思&#xff0c;在.NET高级调试 视角下也是非常重要的&#xff0c;到底是哪些参数&#xff0c;用一张表格整理如下&#xff…...

【VLNs篇】03:VLMnav-端到端导航与视觉语言模型:将空间推理转化为问答

栏目内容论文标题End-to-End Navigation with Vision-Language Models: Transforming Spatial Reasoning into Question-Answering (端到端导航与视觉语言模型&#xff1a;将空间推理转化为问答)核心问题如何利用大型视觉语言模型&#xff08;VLM&#xff09;实现端到端的机器人…...

云原生攻防4(Kubernetes基础补充)

什么是K8S? Kubernetes 是做什么的? 什么是 Docker? 什么是容器编排? Kubernetes 一词来自希腊语,意思是“飞行员”或“舵手”。这个名字很贴切,Kubernetes 可以帮助你在波涛汹涌的容器海洋中航行。 Kubernetes 是 Google 基于 Borg 开源的容器编排调度引擎,作为 CNCF最…...

redis--redisJava客户端:Jedis详解

在Redis官网中提供了各种语言的客户端&#xff0c;地址&#xff1a; https://redis.io/docs/latest/develop/clients/ Jedis 以Redis命令做方法名称&#xff0c;学习成本低&#xff0c;简单实用&#xff0c;但是对于Jedis实例是线程不安全的&#xff08;即创建一个Jedis实例&a…...

SpringBoot-SpringBoot源码解读

SpringBoot-SpringBoot源码解读 一、Spring Boot启动过程概述 Spring Boot通过一系列的类和机制&#xff0c;简化了Spring应用的启动流程。当你执行SpringApplication.run()时&#xff0c;Spring Boot会自动完成应用的初始化、环境配置、组件加载、自动配置等任务&#xff0c…...

黑马程序员C++2024新版笔记 第4章 函数和结构体

1.结构体的基本应用 结构体struct是一种用户自定义的复合数据类型&#xff0c;可以包含不同类型的成员。例如&#xff1a; struct Studet {string name;int age;string gender; } 结构体的声明定义和使用的基本语法&#xff1a; struct 结构体类型 {成员1类型 成员1名称;成…...

【沉浸式求职学习day46】【华为5.7暑期机试题目讲解】

沉浸式求职学习 题目1题目2 题目1 一个超大智能汽车测试场有多个充电桩&#xff0c;每个充电桩的位置由其在二维平面上的坐标(x,y)表示。给定一辆智能汽车的当前位置(car_x,car_y)&#xff0c;请设计一个高效的算法&#xff0c;找出给定智能汽车行驶到充电桩行驶距离最近的k个…...

PDF处理控件Aspose.PDF教程:以编程方式将PDF转换为Word

您是否正在寻找在线将 PDF 转换为 Word 的方法&#xff1f;在本指南中&#xff0c;我们将探索如何使用 C#、Java 和 Python 编码解决方案将 PDF 文档转换为可编辑的 Word 文件。开发人员通过代码将 PDF 文件转换为 Word 格式&#xff0c;从而获得显著优势。这种方法可以轻松实现…...

旋转位置RoPE编码详解

一. 旋转位置编码和正余弦位置编码比对 旋转位置编码&#xff08;RoPE&#xff09;和正余弦位置编码&#xff08;Sinusoidal Position Encoding&#xff09;是两种常用的位置编码方法&#xff0c;它们在处理序列数据时具有不同的数学形式和特性。以下是对两者优劣的详细说明及…...

canvas(二)-动画(2d)

<canvas> 动画是通过 JavaScript 动态更新画布内容来实现的。它利用 requestAnimationFrame 方法实现平滑的动画效果&#xff0c;适用于游戏、数据可视化、交互式图形等场景。真的需要数据可视化等场景使用&#xff0c;还是直接引入外部模型还原度比较高&#xff0c;但同…...

Dynamics 365 Business Central Azure application registration

本方法适用于 单租户服务器身份验证。 实现方法 在大多数组织里ERP Admin 不一定有权限 Azure Admin权限&#xff0c;在实施过程中你只需要把以下指引发给你的系统管理员。 请注意后面有系统管理员设置好后&#xff0c;你如何检查。 导航到 https://admin.microsoft.com 并登…...

选择合适的Azure数据库监控工具

Azure云为组织提供了众多服务&#xff0c;使其能够无缝运行应用程序、Web服务和服务器部署&#xff0c;其中包括云端数据库部署。Azure数据库能够与云应用程序实现无缝集成&#xff0c;具备可靠、易扩展和易管理的特性&#xff0c;不仅能提升数据库可用性与性能&#xff0c;同时…...

Access链接Azure SQL

Hi&#xff0c;大家好呀&#xff01; 最近在给大家分享了SQL Server方面的一些视频&#xff0c;那今天我们也来讲讲Azure SQL。 什么是Azure SQL&#xff0c;这里我们就不介绍了&#xff0c;如果你没有用这个数据库&#xff0c;那你可以简单的把它理解成&#xff0c;就是SQL …...

34、React Server Actions深度解析

一、灵魂契约协议&#xff08;核心机制&#xff09; 1. 次元融合架构 "use server";async function borrowBook(bookId: number, readerName: string) {// 模拟数据库操作const result await db.execute(UPDATE books SET available false WHERE id ?,[bookId]…...

Azure 应用服务中的异常处理、日志记录和通知:综合指南

简介 Azure 应用服务是基于云的应用程序&#xff0c;使开发人员能够在云上构建、部署和管理应用程序。与任何应用程序一样&#xff0c;制定适当的异常处理、日志记录和通知实践至关重要&#xff0c;以确保应用程序平稳运行&#xff0c;并快速识别和解决任何问题。在本篇博文中&…...

第16天-使用Python Pillow库常见图像处理场景

1. 打开与显示图像 from PIL import Image# 打开图像文件 img = Image.open("input.jpg")# 显示图像基本信息 print(f"格式: {img.format}") # JPEG print(f"尺寸: {img.size}") # (宽度, 高度) print(f"模式: {img.mode}") …...

VUE3+TS实现图片缩放移动弹窗

完整代码 使用VUE3、TS&#xff0c;实现将图片通过鼠标拖拽缩放以及选择缩放比例。 <template><div><el-dialogv-model"dialogVisible"title"查看图片":close-on-click-modal"false":close-on-press-escape"false"fu…...

关于Vue自定义组件封装的属性/事件/插槽的透传问题

// parent.vue <Myinputv-model"keyWords"placeholder"请输入内容"size"small"input"input"change"change"width"320" ><template #prepend><el-select v-model"select" placeholder&qu…...

智能驾驶中的深度学习:基于卷积神经网络的车道线检测

摘要 智能驾驶是人工智能技术的重要应用领域之一,而车道线检测是实现自动驾驶的基础功能。本文介绍了一种基于深度学习的车道线检测方法,使用卷积神经网络(CNN)对道路图像进行实时分析。文章详细阐述了数据预处理、模型构建、训练优化及实际部署的完整流程,并提供了Pytho…...