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

100.HarmonyOS NEXT跑马灯组件教程:实际应用与场景示例

温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦!

HarmonyOS NEXT跑马灯组件教程:实际应用与场景示例

文章目录

  • HarmonyOS NEXT跑马灯组件教程:实际应用与场景示例
    • 1. 跑马灯组件应用概述
      • 1.1 常见应用场景
    • 2. 在MarqueeDemo中使用跑马灯组件
      • 2.1 基本使用方法
      • 2.2 组件层次结构
    • 3. 票务信息场景示例
      • 3.1 TripView组件实现
      • 3.2 TripItem组件中使用跑马灯
    • 4. 消息通知场景示例
      • 4.1 消息通知组件实现
    • 5. 新闻标题场景示例
      • 5.1 新闻标题组件实现
    • 6. 设备适配与响应式设计
      • 6.1 折叠屏与平板适配
      • 6.2 横竖屏适配
    • 7. 数据绑定与动态更新
      • 7.1 数据绑定
      • 7.2 列表数据绑定
    • 8. 性能优化建议
      • 8.1 减少实例数量
      • 8.2 延迟加载
      • 8.3 合理设置动画参数
    • 9. 总结

1. 跑马灯组件应用概述

跑马灯组件在HarmonyOS NEXT应用中有着广泛的应用场景,特别是在需要在有限空间内展示较长文本内容的情况下。本文将介绍跑马灯组件的实际应用场景和使用方法,帮助开发者更好地理解和使用这一组件。

1.1 常见应用场景

应用场景使用特点配置建议
消息通知短时间内展示重要信息适中速度,从右到左滚动
票务信息展示检票口、登机口等信息较慢速度,无限循环
促销广告吸引用户注意力较快速度,有停顿效果
新闻标题展示多条新闻标题适中速度,多次循环
股票行情实时展示多支股票信息较快速度,从右到左滚动

2. 在MarqueeDemo中使用跑马灯组件

2.1 基本使用方法

在HarmonyOS NEXT中,使用跑马灯组件非常简单。以MarqueeDemo.ets为例:

import { MarqueeViewComponent } from "../../components/Marquee/Marquee";
@Entry
@Component
struct MarqueeDemo {build() {RelativeContainer() {MarqueeViewComponent()}.height('100%').width('100%')}
}

这段代码展示了跑马灯组件的基本使用方法:

  1. 首先导入MarqueeViewComponent组件
  2. 在页面的build方法中创建一个RelativeContainer作为容器
  3. 在容器中添加MarqueeViewComponent组件
  4. 设置容器的宽高为100%,使其填满整个页面

2.2 组件层次结构

在实际应用中,跑马灯组件通常嵌套在多层组件中使用。以MarqueeViewComponent为例,其内部结构如下:

@Component
export struct MarqueeViewComponent {build() {Column() {// 场景介绍组件FunctionDescription({title: $r('app.string.marquee_title'),content: $r('app.string.marquee_content')})// 行程信息组件TripView()}.expandSafeArea([SafeAreaType.SYSTEM], [SafeAreaEdge.BOTTOM]).width('100%').height('100%').padding($r('app.string.ohos_id_card_padding_start')).linearGradient({angle: Constants.ANGLE,colors: [[$r('app.color.marquee_bg_color1'), 0], [$r('app.color.marquee_bg_color2'), 1]]})}
}

这段代码中,MarqueeViewComponent包含两个子组件:

  1. FunctionDescription:用于展示功能描述
  2. TripView:包含实际的跑马灯组件

3. 票务信息场景示例

3.1 TripView组件实现

TripView组件是一个典型的票务信息展示场景,它使用跑马灯组件展示检票口信息:

@Component
struct TripView {@State tripData: TripDataSource = new TripDataSource();build() {Column() {// 行程信息列表List({ space: 12 }) {LazyForEach(this.tripData, (item: TripDataType) => {ListItem() {TripItem({ tripDataItem: item })}}, (item: TripDataType) => item.id.toString())}.width('100%').layoutWeight(1)}.width('100%').height('100%')}
}

3.2 TripItem组件中使用跑马灯

TripItem组件中使用MarqueeSection组件展示检票口信息:

@Component
struct TripItem {@Prop tripDataItem: TripDataType;@BuildermarqueeTextBuilder(marqueeText: ResourceStr) {Text(marqueeText).fontSize($r('app.float.trip_item_font_size')).fontColor($r('app.color.trip_item_font_color'))}build() {RelativeContainer() {// 其他票务信息...// 检票口信息(使用跑马灯)Text($r('app.string.ticket_entrance')).fontSize($r('app.float.trip_item_font_size')).fontColor($r('app.color.trip_item_font_color')).id('ticketEntrance').alignRules({top: { anchor: 'vehicleModel', align: VerticalAlign.Bottom },left: { anchor: '__container__', align: HorizontalAlign.Start }}).margin({ top: 12 })// 跑马灯组件MarqueeSection({marqueeTextBuilder: () => {this.marqueeTextBuilder(this.tripDataItem.ticketEntrance)},marqueeAnimationModifier: new MarqueeAnimationModifier(),marqueeScrollModifier: new MarqueeScrollModifier(display.isFoldable() ?$r('app.string.marquee_scroll_phone_width') : $r('app.string.marquee_scroll_tablet_width'),Constants.BLANK_SPACE)})}.width('100%').height($r('app.float.trip_item_height')).borderRadius($r('app.float.trip_item_radius')).backgroundColor(Color.White).padding({left: $r('app.float.trip_item_padding_left'),right: $r('app.float.trip_item_padding_right'),top: $r('app.float.trip_item_padding_top'),bottom: $r('app.float.trip_item_padding_bottom')})}
}

这段代码展示了在票务信息场景中使用跑马灯组件的方法:

  1. 定义marqueeTextBuilder方法,用于构建跑马灯文本内容
  2. 在RelativeContainer中添加检票口标签和跑马灯组件
  3. 配置MarqueeSection组件,传入文本构建器和动画配置
  4. 根据设备类型(折叠屏或平板)设置不同的滚动区域宽度

4. 消息通知场景示例

4.1 消息通知组件实现

在消息通知场景中,跑马灯组件通常用于展示重要通知信息:

@Component
struct NotificationBar {@Prop notificationText: string;@BuildernotificationTextBuilder() {Text(this.notificationText).fontSize(14).fontColor('#FFFFFF')}build() {Row() {Image($r('app.media.ic_notification')).width(20).height(20).margin({ right: 8 })// 跑马灯组件MarqueeSection({marqueeTextBuilder: () => {this.notificationTextBuilder()},// 配置从右到左滚动,适中速度marqueeAnimationModifier: new MarqueeAnimationModifier(-1,                    // 无限循环8000,                  // 动画持续时间8秒1.2,                   // 动画速度1.2倍PlayMode.Reverse,      // 从右到左滚动1500                   // 停顿时间1.5秒),// 配置较宽的滚动区域marqueeScrollModifier: new MarqueeScrollModifier('80%',                // 滚动区域宽度为80%40                     // 文本间隔40像素)})}.width('100%').height(40).backgroundColor('#FF5722').padding({ left: 16, right: 16 })}
}

这个示例展示了消息通知场景中的跑马灯配置:

  1. 使用较宽的滚动区域(80%)
  2. 从右到左滚动(PlayMode.Reverse)
  3. 适中的动画速度(tempo=1.2)
  4. 适当的停顿时间(delayTime=1500ms)

5. 新闻标题场景示例

5.1 新闻标题组件实现

在新闻应用中,跑马灯组件可用于展示多条新闻标题:

@Component
struct NewsTickerBar {@State currentNewsIndex: number = 0;private newsList: string[] = ["华为发布最新HarmonyOS NEXT系统,带来全新体验","国内科技企业加速布局人工智能领域","全球气候变化会议将于下月在北京举行","新能源汽车销量持续增长,市场份额突破30%"];@BuildernewsTextBuilder() {Text(this.newsList[this.currentNewsIndex]).fontSize(16).fontColor('#333333').fontWeight(FontWeight.Medium)}build() {Row() {Text("最新消息:").fontSize(16).fontColor('#FF0000').fontWeight(FontWeight.Bold).margin({ right: 8 })// 跑马灯组件MarqueeSection({marqueeTextBuilder: () => {this.newsTextBuilder()},// 配置单次播放,播放完成后切换到下一条新闻marqueeAnimationModifier: new MarqueeAnimationModifier(1,                     // 单次播放12000,                 // 动画持续时间12秒1,                     // 正常速度PlayMode.Reverse,      // 从右到左滚动500                    // 停顿时间0.5秒),marqueeScrollModifier: new MarqueeScrollModifier('70%',                // 滚动区域宽度为70%60                     // 文本间隔60像素)})}.width('100%').height(50).backgroundColor('#F5F5F5').padding({ left: 16, right: 16 }).onAppear(() => {// 定时切换新闻标题setInterval(() => {this.currentNewsIndex = (this.currentNewsIndex + 1) % this.newsList.length;}, 15000); // 每15秒切换一次})}
}

这个示例展示了新闻标题场景中的跑马灯配置:

  1. 使用单次播放(iterations=1)
  2. 较长的动画持续时间(duration=12000ms)
  3. 从右到左滚动(PlayMode.Reverse)
  4. 较短的停顿时间(delayTime=500ms)
  5. 通过定时器定期切换新闻标题

6. 设备适配与响应式设计

6.1 折叠屏与平板适配

跑马灯组件可以根据不同设备类型进行适配:

MarqueeSection({// ...marqueeScrollModifier: new MarqueeScrollModifier(display.isFoldable() ?$r('app.string.marquee_scroll_phone_width') : $r('app.string.marquee_scroll_tablet_width'),Constants.BLANK_SPACE)
})

这段代码通过display.isFoldable()方法检测设备是否为折叠屏,然后根据设备类型选择不同的滚动区域宽度:

  • 对于折叠屏设备,使用app.string.marquee_scroll_phone_width资源
  • 对于平板设备,使用app.string.marquee_scroll_tablet_width资源

6.2 横竖屏适配

跑马灯组件也可以根据屏幕方向进行适配:

@Component
struct AdaptiveMarquee {@State isPortrait: boolean = true;aboutToAppear() {// 监听屏幕方向变化display.on('change', (data) => {this.isPortrait = data.width < data.height;});}@BuildermarqueeTextBuilder(text: string) {Text(text).fontSize(16).fontColor('#333333')}build() {Column() {// 跑马灯组件MarqueeSection({marqueeTextBuilder: () => {this.marqueeTextBuilder("这是一段需要使用跑马灯效果展示的长文本内容")},marqueeAnimationModifier: new MarqueeAnimationModifier(),// 根据屏幕方向设置不同的滚动区域宽度marqueeScrollModifier: new MarqueeScrollModifier(this.isPortrait ? '80%' : '50%',Constants.BLANK_SPACE)})}.width('100%')}
}

这个示例展示了如何根据屏幕方向调整跑马灯组件的配置:

  1. 使用display.on(‘change’)监听屏幕方向变化
  2. 根据屏幕宽高比判断是否为竖屏模式
  3. 在竖屏模式下使用较宽的滚动区域(80%)
  4. 在横屏模式下使用较窄的滚动区域(50%)

7. 数据绑定与动态更新

7.1 数据绑定

跑马灯组件可以与数据源绑定,实现动态内容更新:

@Component
struct DynamicMarquee {@State message: string = "初始消息内容";@BuildermessageTextBuilder() {Text(this.message).fontSize(16).fontColor('#333333')}build() {Column() {// 跑马灯组件MarqueeSection({marqueeTextBuilder: () => {this.messageTextBuilder()},marqueeAnimationModifier: new MarqueeAnimationModifier(),marqueeScrollModifier: new MarqueeScrollModifier()})// 更新按钮Button("更新消息").onClick(() => {this.message = "这是更新后的消息内容 - " + new Date().toLocaleTimeString();}).margin({ top: 20 })}.width('100%').padding(16)}
}

这个示例展示了如何实现数据绑定和动态更新:

  1. 使用@State装饰器定义响应式数据
  2. 在marqueeTextBuilder中使用响应式数据
  3. 通过按钮点击事件更新数据
  4. 当数据更新时,跑马灯组件会自动更新显示内容

7.2 列表数据绑定

跑马灯组件也可以与列表数据绑定,实现多条数据的展示:

@Component
struct ListMarquee {@State dataList: TripDataSource = new TripDataSource();build() {Column() {List({ space: 12 }) {LazyForEach(this.dataList, (item: TripDataType) => {ListItem() {// 为每个列表项创建一个跑马灯组件Row() {Text(item.trainNumber).width('30%')MarqueeSection({marqueeTextBuilder: () => {Text(item.ticketEntrance).fontSize(14)},marqueeAnimationModifier: new MarqueeAnimationModifier(),marqueeScrollModifier: new MarqueeScrollModifier('60%', 30)})}.width('100%').height(50).backgroundColor(Color.White).borderRadius(8).padding(10)}}, (item: TripDataType) => item.id.toString())}.width('100%')}.width('100%').padding(16)}
}

这个示例展示了如何将跑马灯组件与列表数据绑定:

  1. 使用LazyForEach遍历数据源
  2. 为每个列表项创建一个跑马灯组件
  3. 将列表项的数据传递给跑马灯组件

8. 性能优化建议

8.1 减少实例数量

在使用跑马灯组件时,应尽量减少实例数量,特别是在列表中使用时:

// 不推荐:为所有列表项创建跑马灯组件
LazyForEach(this.dataList, (item) => {ListItem() {MarqueeSection({ /* ... */ })}
})// 推荐:只为需要跑马灯效果的列表项创建跑马灯组件
LazyForEach(this.dataList, (item) => {ListItem() {if (needMarquee(item)) { // 判断是否需要跑马灯效果MarqueeSection({ /* ... */ })} else {Text(item.text)}}
})

8.2 延迟加载

对于不在视口内的跑马灯组件,可以使用延迟加载策略:

@Component
struct LazyMarquee {@State isVisible: boolean = false;build() {Column() {if (this.isVisible) {MarqueeSection({ /* ... */ })} else {Text("加载中...")}}.onAppear(() => {setTimeout(() => {this.isVisible = true;}, 200); // 延迟200ms加载})}
}

8.3 合理设置动画参数

为了提高性能,应合理设置动画参数:

  1. 避免过短的动画持续时间(duration不宜小于3000ms)
  2. 避免过高的动画速度(tempo不宜大于2)
  3. 避免过小的停顿时间(delayTime不宜小于500ms)

9. 总结

本文详细介绍了HarmonyOS NEXT跑马灯组件的实际应用场景和使用方法,包括票务信息、消息通知、新闻标题等典型场景的实现示例。通过这些示例,我们可以看到跑马灯组件在不同场景下的配置和使用方式,以及如何根据设备类型和屏幕方向进行适配。

跑马灯组件的灵活性使其能够适应各种应用场景,通过合理配置MarqueeAnimationModifier和MarqueeScrollModifier,可以实现不同的滚动效果和视觉体验。在实际应用中,应根据具体需求选择合适的配置参数,并注意性能优化,提供最佳的用户体验。

通过本系列教程的学习,相信读者已经掌握了HarmonyOS NEXT跑马灯组件的基本概念、实现原理、配置参数和实际应用方法,能够在自己的项目中灵活运用这一组件,实现各种文本滚动效果。

相关文章:

100.HarmonyOS NEXT跑马灯组件教程:实际应用与场景示例

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; HarmonyOS NEXT跑马灯组件教程&#xff1a;实际应用与场景示例 文章目录 HarmonyOS NEXT跑马灯组件教程&#xff1a;实际应用与场景示例1. 跑马灯组…...

【计算机网络】2物理层

物理层任务:实现相邻节点之间比特(或)的传输 1.通信基础 1.1.基本概念 1.1.1.信源,信宿,信道,数据,信号 数据通信系统主要划分为信源、信道、信宿三部分。 信源:产生和发送数据的源头。 信宿:接收数据的终点。 信道:信号的传输介质。 数据和信号都有模拟或数字…...

2.3 滑动窗口专题:最大连续1的个数 III(LeetCode 1004)

1. ​题目链接 1004. 最大连续1的个数 III - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/max-consecutive-ones-iii/ 2. ​题目描述 给定一个二进制数组 nums 和一个整数 k&#xff0c;允许将最多 k 个 0 翻转为 1&#xff0c;求翻转后最长的连续 1 …...

怎么解决在Mac上每次打开文件夹都会弹出一个新窗口的问题

在Mac上每次打开文件夹都会弹出一个新窗口的问题&#xff0c;可以通过以下方法解决‌ ‌调整Finder设置‌&#xff1a; 打开Finder&#xff0c;点击“Finder”菜单&#xff0c;选择“偏好设置”。在偏好设置中&#xff0c;选择“通用”标签。取消勾选“在标签页中打开文件夹”或…...

Python异常处理

异常处理 概述 在Python中&#xff0c;在处理可能会引发异常的代码块时&#xff0c;使用try和except语句。可以帮助我们捕获并处理异常&#xff0c; 而不是让程序因为一个未处理的异常而完全崩溃。 try-except try-except-finally try-finally try-except-else try-except-…...

VSTO(C#)Excel开发8:打包发布安装卸载

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…...

ImportError: cannot import name ‘genai‘ from ‘google‘ (unknown location) 问题如何处理

这个错误通常发生在没有正确安装Google的生成式AI库。需要安装官方的google-generativeai库&#xff1a; pip install google-generativeai如果代码中使用的导入方式与新版SDK不兼容&#xff0c;可能需要调整导入语句。根据当前代码上下文&#xff0c;正确的导入方式应该是&am…...

Advanced Intelligent Systems 软体机器手助力截肢者玩转鼠标

随着科技的不断进步&#xff0c;假肢技术在改善截肢者生活质量方面取得了显著成就。然而&#xff0c;截肢群体在就业方面仍面临巨大困难&#xff0c;适龄截肢群体的就业率仅为健全群体的一半。现有的肌电控制假肢手在与计算机交互时存在诸多挑战&#xff0c;特别是截肢者在使用…...

kubernetes对于一个nginx服务的增删改查

1、创建 Nginx 服务 1.1、创建 Deployment Deployment 用于管理 Pod 副本和更新策略。 方式一&#xff1a;命令式创建 kubectl create deployment nginx-deployment --imagenginx:latest --replicas3 --port80--replicas3&#xff1a;指定副本数为 3 --port80&#xff1a;容…...

我的世界1.20.1forge模组进阶开发教程生物篇(1)——生成

生物生成 生物生成Alexmob介绍:**1. 核心功能与技术实现****2. 项目结构与代码质量****3. 社区协作与维护****4. 扩展性与开发挑战****5. 开发者学习价值**食蚁兽一、实体属性与行为控制(`EntityAnteater`类)二、实体注册与生成规则(`AMEntityRegistry`类)三、全局生成逻辑…...

1.5 Spring Boot项目打包和运行

本文介绍了如何使用Spring Boot进行项目打包和运行。首先&#xff0c;讲解了如何将Spring Boot项目打包为可执行的JAR包&#xff0c;并直接运行&#xff0c;无需部署到外部Web服务器。接着&#xff0c;介绍了如何将项目打包为WAR包&#xff0c;以便部署到Web容器中&#xff0c;…...

287. 寻找重复数

由于题目规定数组中的数的范围是1-n&#xff0c;因此可以构造出下标n和值nums[n]的映射f(n)&#xff0c;然后构成一个链表&#xff0c;当有重复数字时&#xff0c;链表存在环&#xff0c;找到重复数字即找到链表环的入口&#xff0c;参考142. 环形链表II。 class Solution {pu…...

如何高效解决 Java 内存泄漏问题方法论

目录 一、系统化的诊断与优化方法论 二、获取内存快照&#xff1a;内存泄漏的第一步 &#xff08;一&#xff09;自动生成 Heap Dump &#xff08;二&#xff09;手动生成 Heap Dump 三、导入分析工具&#xff1a;MAT 和 JProfiler &#xff08;一&#xff09;MAT (Memor…...

【Agent】OpenManus 项目架构分析

这是我录制的一个视频&#xff0c;主要是描述我理解的 OpenManus 的思维逻辑&#xff0c;通过这个小的思维逻辑的复现&#xff0c;为后面要再分析其他 Agent 的实现做一个准备。 1. 项目概述 OpenManus 是一个基于大语言模型的智能体框架&#xff0c;旨在提供一个无需邀请码的…...

hive-进阶版-1

第6章 hive内部表与外部表的区别 Hive 是一个基于 Hadoop 的数据仓库工具&#xff0c;用于对大规模数据集进行数据存储、查询和分析。Hive 支持内部表&#xff08;Managed Table&#xff09;和外部表&#xff08;External Table&#xff09;两种表类型&#xff0c;它们在数据…...

规模效应的三重边界:大白话解读-deepseek为例

前言&#xff1a;当Scaling Laws遇见边际递减效应 在人工智能的狂飙突进中&#xff0c;大语言模型如同不断膨胀的星体&#xff0c;吞噬着海量算力与数据。OpenAI于2020年揭开的Scaling Laws&#xff0c;曾为这场盛宴指明方向&#xff1a;模型性能随参数规模&#xff08;N&…...

考研系列-408真题计算机网络篇(18-23)

写在前面 此文章是本人在备考过程中408真题计算机网络部分&#xff08;2018年-2023年&#xff09;的易错题及相应的知识点整理&#xff0c;后期复习也常常用到&#xff0c;对于知识提炼归纳理解起到了很大的作用&#xff0c;分享出来希望帮助到大家~ # 2018 1.停止-等待协议的…...

windows协议不再续签,华为再无windows可用,将于四月发布鸿蒙PC

大家好&#xff0c;我是国货系创始人张云泽&#xff0c;最近不少小伙伴在后台问&#xff1a;“听说Windows协议要到期了&#xff1f;我的电脑会不会变砖&#xff1f;”还有人说&#xff1a;“华为笔记本以后用不了Windows了&#xff1f;鸿蒙系统能用吗&#xff1f;”今天咱们就…...

【二分算法】-- 点名

文章目录 1. 题目2. 题目解析3. 代码 1. 题目 在线oj 2. 题目解析 前四种解决方法&#xff1a; 哈希表直接遍历找结果位运算数学&#xff08;高斯求和公式&#xff09; 这四种方法的时间复杂度都是0&#xff08;N&#xff09; 第五种解决方法&#xff1a; 【二段性】&…...

强化学习 - PPO控制无人机

PPO&#xff08;Proximal Policy Optimization&#xff0c;近端策略优化&#xff09;是一种强化学习算法&#xff0c;用于训练智能体&#xff08;无人机&#xff09;如何在环境中做出决策。它本质上是 策略梯度&#xff08;Policy Gradient&#xff09;方法 的一种改进&#xf…...

【AHE数据集】 NCAR Anthropogenic Heat Flux (AHF) 数据集

数据概述 数据集由 美国国家大气研究中心(NCAR, National Center for Atmospheric Research) 的 气候与全球动力学实验室(CGD, Climate & Global Dynamics Laboratory) 提供。NCAR 由 美国国家科学基金会(NSF, National Science Foundation) 资助,并由 大学大气研究…...

Part1:基于国内源完成Kubernetes集群部署

集群规划 操作系统&#xff1a;CentOS7 内核版本&#xff1a;5.4&#xff08;需升级&#xff09; 组件版本说明操作系统内核5.4RPM方式升级docker26.1.4yum安装cri-docker0.3.16二进制安装kubeadm1.30.11yum安装kubealet1.30.11yum安装kubectl1.30.11yum安装kubectl1.30.11yu…...

强化学习的一些概念

目录 强化学习 打个比方 核心要素 State Action Reward 几个代码demo 学习目标 强化学习 强化学习&#xff08;Reinforcement Learning, RL&#xff09;是机器学习的一个分支&#xff0c;旨在让智能体&#xff08;Agent&#xff09;通过与环境的交互学习最优策略&#xff0c;以…...

花生好车:重构汽车新零售生态的破局者

在传统汽车零售行业面临消费升级与渠道变革的双重压力下&#xff0c;花生好车以颠覆性的商业模式在短短九年内崛起为行业独角兽。这家成立于2015年的汽车新零售平台&#xff0c;通过重构供应链体系、创新融资租赁模式、深耕下沉市场三大战略维度&#xff0c;正在重塑中国汽车消…...

K8S下nodelocaldns crash问题导致域名请求响应缓慢

前言 最近做项目&#xff0c;有业务出现偶发的部署导致响应很慢的情况&#xff0c;据了解&#xff0c;业务使用域名访问&#xff0c;相同的nginx代理&#xff0c;唯一的区别就是K8S重新部署了。那么问题大概率出现在容器平台&#xff0c;毕竟业务是重启几次正常&#xff0c;偶…...

实现悬浮按钮拖动,兼容h5和微信小程序

h5用js写&#xff0c;微信小程序用 代码里面没有完全实现吸附边缘的功能&#xff0c;需要吸附边缘的话还得自己再完善下&#xff08;h5的吸附边缘是可以的&#xff0c;小程序的还有点问题&#xff09; 主要功能是&#xff1a;图片上写文字的悬浮按钮&#xff0c;文字使用的是…...

SLC跨头协作机制

SLC跨头协作机制 SLC(Self-attention with Local Communication,或类似跨头协作机制)在Transformer架构中通过以下逻辑帮助注意力头优化分布: 1. 多头注意力的「独立-协作」平衡 传统多头注意力中,每个头独立计算注意力(如Query/Key/Value的线性变换),捕捉不同语义模…...

全国医院数据可视化分析系统

【大数据】全国医院数据可视化分析系统 &#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 &#x1f3e5; 项目名&#xff1a;医疗导航神器&#xff01;——《基于大数据的微医挂号网医院数据可视…...

Flash Attention原理讲解

目录 前言0. 简述1. self-attention2. roofline model3. 矩阵分块4. softmax分块5. FlashAttention结语参考 前言 看了几个视频和几篇文章学习了下 Flash Attention&#xff0c;记录下个人学习笔记&#xff0c;仅供自己参考&#x1f604; refer1&#xff1a;Flash Attention 为…...

python二级复习(1)

临近计算机二级考试了,开始python的复习 python语言基础: 1.用缩进表示代码块:一般用四个空格或者一个tab 2.代码的注释方法: 单行注释用“#”表示注释开始&#xff1b;多行注释是用三个英文的单引号“‘’”或双引号““”"”作为注释的开始和结束符号。 03. 标识符命…...

基于cat1的贵重物品的状态和位置小型监控系统特色解析

一 项目需求 团队研发出来一款搭载多传感器的无线cat1定位和状态监控的设备。该设备主要面对的贵重物品运输过程中的状态监控&#xff0c;比如&#xff0c;是否被打开过&#xff0c;有没有激烈碰撞&#xff0c;位置信息等。主要应用场景是医疗&#xff0c;安防等贵重物品的状态…...

Python 魔法方法介绍

在 Python 中,魔法方法(Magic Methods)是一类特殊的内置方法,它们通常以双下划线开头和结尾(例如 __init__、__str__、__add__ 等)。这些方法通常用于实现特定的语法或操作符行为,或者用于定义对象的行为。它们是 Python 面向对象编程中的一个重要特性,可以让类的行为更…...

golang time包和日期函数

1.简介 在程序中日期和时间是我们经常会用到的&#xff0c;在go中time包提供了时间的显示和测量函数。 2.获取当前时间 通过time.Now()函数获取当前时间对象&#xff0c;然后获取时间对象的年月日时分秒等值。 now : time.Now()fmt.Printf("now%v type%T\n", now…...

第7章 站在对象模型的尖端2: 异常处理

1.异常处理(Exception Handling) C的异常处理由三个主要组成部分构成&#xff1a;throw表达式、catch子句和try块。当异常被抛出时&#xff0c;程序控制权会转移&#xff0c;并且会沿着调用堆栈回溯&#xff0c;直到找到匹配的catch子句。在此过程中&#xff0c;局部对象的析构…...

不同路径——2

给定一个 m x n 的整数数组 grid。一个机器人初始位于 左上角&#xff08;即 grid[0][0]&#xff09;。机器人尝试移动到 右下角&#xff08;即 grid[m - 1][n - 1]&#xff09;。机器人每次只能向下或者向右移动一步。 网格中的障碍物和空位置分别用 1 和 0 来表示。机器人的…...

电子招采软件系统,如何实现10年可追溯审计

一、在当前经济环境下&#xff0c;中小企业面临着巨大的生存压力&#xff0c;传统产业的数字化转型迫在眉睫。AI技术为企业的低成本高效发展提供了新机会&#xff0c;混合办公成为新常态&#xff0c;数据安全法的深入落实则进一步推动企业重视数据安全。区块链存证技术凭借独特…...

TS常见内置映射类型的实现及应用场景

以下是 TypeScript 在前端项目中 常用的映射类型&#xff08;Mapped Types&#xff09;&#xff0c;结合具体场景和代码示例&#xff0c;帮助开发者高效处理复杂类型&#xff1a; 一、基础映射类型 1. Partial<T> 作用&#xff1a;将对象类型 T 的所有属性变为可选。 实…...

本地部署Deep Seek-R1,搭建个人知识库——笔记

目录 一、本地部署 DeepSeek - R1 1&#xff1a;安装Ollama 2&#xff1a;部署DeepSeek - R1模型 3&#xff1a;安装Cherry Studio 二、构建私有知识库 一、本地部署 DeepSeek - R1 1&#xff1a;安装Ollama 1.打开Ollama下载安装 未科学上网&#xff0c;I 先打开迅雷再下…...

东芝2323AMW复印机安装纸盒单元后如何添加配件选项

如何添加请看下面图示&#xff1a; 找到设备和打印机里找到打印机图标&#xff0c;右键打印机属性&#xff0c;找到配置&#xff0c;添加相应配置功能&#xff1b;打印机属性&#xff0c;加上双面或者2纸盒配件选项&#xff1b; Word打印时&#xff0c;打印机名称&#xff0c;后…...

EasyExcel动态拆分非固定列Excel表格

使用EasyExcel动态拆分非固定列Excel表格 在Excel数据解析场景中&#xff0c;​动态列结构拆分是典型挑战&#xff08;如供应链系统中不同品类的属性字段差异较大&#xff09;。传统基于POJO映射的方案无法应对列数量不固定的场景。本方案采用EasyExcel的动态模型解析和Map数据…...

开源WAF雷池本地化部署与远程查看网站安全防护的详细操作指南

文章目录 前言1.关于SafeLine2.安装Docker3.本地部署SafeLine4.使用SafeLine5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定Uptime Kuma公网地址 前言 各位建站小能手们&#xff0c;无论是想搭建个人博客、企业官网还是各种应用平台来推广自己的内容或产品&#xff0c…...

由一个话题进入DFMEA(设计失效模式及影响分析)

前言 最近看到了知乎的一个话题“为啥撞车后总是看到雨刮器在摆动&#xff1f;”&#xff0c;联想到产品设计中的一些功能安全设计&#xff0c;也借此机会学习DFMEA&#xff0c;讨论一下我个人对于DFMEA的理解。 有纰漏请指出&#xff0c;转载请说明。 学习交流请发邮件 128…...

Redisson 实现分布式锁源码浅析

大家好&#xff0c;我是此林。 今天来分享Redisson分布式锁源码。还是一样&#xff0c;我们用 问题驱动 的方式展开讲述。 1. redis 中如何使用 lua 脚本&#xff1f; Redis内置了lua解释器&#xff0c;lua脚本有两个好处&#xff1a; 1. 减少多次Redis命令的网络传输开销。…...

机试准备第17天

今天进入图论的学习。图论只考察初试学过的算法&#xff0c;一般都是模版题。常见考点有图相关的数据结构——邻接表法&#xff0c;图的遍历 BFS DFS 并查集&#xff0c;单源最短路径迪杰斯特拉。图由顶点和边构成&#xff0c;度用来说明该顶点邻接边的数量情况。权值说明了边的…...

ABAP语言的动态编程(4) - 综合案例:管理费用明细表

本篇来实现一个综合案例&#xff1a;管理费用明细表。报表在实际项目中&#xff0c;也有一定的参考意义&#xff0c;一方面展示类似的报表&#xff0c;比如管理费用、研发费用等费用的明细&#xff0c;使用业务比较习惯的展示格式&#xff1b;另一方面正好综合运用前面学习的动…...

不像人做的题————十四届蓝桥杯省赛真题解析(上)A,B,C,D题解析

题目A&#xff1a;日期统计 思路分析&#xff1a; 本题的题目比较繁琐&#xff0c;我们采用暴力加DFS剪枝的方式去做&#xff0c;我们在DFS中按照8位日期的每一个位的要求进行初步剪枝找出所有的八位子串&#xff0c;但是还是会存在19月的情况&#xff0c;为此还需要在CHECK函数…...

R语言零基础系列教程-01-R语言初识与学习路线

代码、讲义、软件回复【R语言01】获取。 R语言初识 R是一个开放的统计编程环境&#xff0c;是一门用于统计计算和作图的语言。“一切皆是对象”&#xff0c;数据、函数、运算符、环境等等都是对象。易学&#xff0c;代码像伪代码一样简洁&#xff0c;可读性高强大的统计和可视…...

即时通讯平台测试报告

1.项目概述 项目名称&#xff1a;即时通讯平台 版本号&#xff1a;V1.0.0 测试周期&#xff1a;2025年2月25日--2025年3月15日 测试目标&#xff1a;验证核心功能&#xff08;登录、注册、消息收发、用户管理、群组功能等&#xff09;的稳定性和性能指标。 2. 测试范围 功…...

蓝桥杯单片机内存爆了怎么办

蓝桥杯单片机内存爆了怎么办 文章目录 蓝桥杯单片机内存爆了怎么办一、参考文章二、内存区3、keil中的体现4、分配原则5、使用示例 一、参考文章 文章1 文章2 文章3 文章4 二、内存区 1 KB(千字节) 1024 B(字节) B代表Byte&#xff0c;1Byte8bit&#xff0c;一个字节8位 …...

一周热点:微软攻克语音输入、文本输出难题-Phi-4-multimodal

微软Phi-4-multimodal模型是人工智能领域的一个重要进展,它标志着微软在多模态人工智能技术上的突破。以下是对该模型的详细解释: 模型概述 微软Phi-4-multimodal是一个能够同时处理文本、图像和语音的多模态大型语言模型。它通过创新的架构和训练方法,实现了在不同模态之间…...