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

【Auto-Scroll-List 组件设计与实现分析】

Auto-Scroll-List 组件设计与实现分析

gitee代码仓库
https://gitee.com/chennaiyuan/dayup-record/tree/master/%E4%B8%80%E4%BA%9B%E7%BB%84%E4%BB%B6/auto-scroll-list

1. 组件概述

我们封装的 AutoScrollList 是一个自动滚动列表组件,主要用于展示需要自动循环滚动的数据项,如通知、告警、任务等信息。该组件采用了组件与逻辑分离的设计思路,通过自定义 Hook 实现核心滚动逻辑,提高了代码的可复用性和灵活性。除了依赖 Vue3 和 Less 这种常规组件,可以开封即用。

2. 架构设计

组件采用了"关注点分离"的设计理念,将 UI 表现与业务逻辑分开:

AutoScrollList 组件
UI 表现层
useAutoScroll Hook
模板结构
样式定义
滚动状态管理
位置计算
时间控制
使用方

核心架构特点:

  1. 组件与逻辑分离:核心滚动逻辑被抽象到 useAutoScroll Hook 中
  2. 可组合性:Hook 可独立使用,也可以集成在组件中
  3. 插槽设计:通过 Vue 的插槽系统实现内容的高度自定义

实现逻辑与数据流

数据流转
AutoScrollList 组件
useAutoScroll Hook
接收参数
定义
定义
定义
生成
计算
设置
修改
清除
调用
调用
传递参数
获取
获取
获取
获取
获取
使用
使用
使用
暴露
暴露
触发
改变
更新
更新
用户数据
定时器
调用Hook
Props定义
displayItems
isSliding
getItemPosition
startScroll
stopScroll
模板渲染
方法暴露
状态管理
初始化配置
currentIndex
isSliding
timer
displayItems
计算属性
getItemPosition
位置计算
startScroll
控制方法
stopScroll
onMounted
生命周期
onBeforeUnmount

核心方法和状态详解

input
manages
computes
AutoScrollOptions
+Array items
+number itemHeight
+number? itemGap
+number visibleItems
+number? scrollInterval
+number? transitionDuration
+boolean? autoScroll
useAutoScrollReturn
+Ref displayItems
+Ref isSliding
+Ref currentIndex
+Function getItemPosition
+Function startScroll
+Function stopScroll
InternalState
+Ref<number> currentIndex
+Ref<boolean> isSliding
+Ref<number|null> timer
DisplayItem
+original item properties
+string key
+boolean preload

3. 核心实现逻辑

useAutoScroll Hook

import { ref, computed, onMounted, onBeforeUnmount } from 'vue';export interface AutoScrollOptions {items: any[];                   // 数据项数组itemHeight: number;             // 单项高度itemGap?: number;               // 项目间距visibleItems: number;           // 可见项目数scrollInterval?: number;        // 滚动间隔(毫秒)transitionDuration?: number;    // 过渡动画时长(毫秒)autoScroll?: boolean;           // 是否自动滚动
}export function useAutoScroll(options: AutoScrollOptions) {const {items,itemHeight,itemGap = 0,visibleItems,scrollInterval = 3000,transitionDuration = 500,autoScroll = true} = options;// 状态管理const currentIndex = ref(0);const isSliding = ref(false);const timer = ref<number | null>(null);// 计算属性const displayItems = computed(() => {const result = [];const totalItems = items.length;if (totalItems === 0) return [];// 当前显示的项目for (let i = 0; i < visibleItems + 1; i++) {const index = (currentIndex.value + i) % totalItems;result.push({...items[index],key: `${items[index].id}-${index}-${i}`, // 确保key的唯一性preload: i === visibleItems // 标记预加载项});}return result;});// 计算位置const getItemPosition = (index: number) => {return index * (itemHeight + itemGap);};// 控制方法const startScroll = () => {if (timer.value || items.length <= visibleItems) return;timer.value = window.setInterval(() => {isSliding.value = true;setTimeout(() => {currentIndex.value = (currentIndex.value + 1) % items.length;isSliding.value = false;}, transitionDuration);}, scrollInterval);};const stopScroll = () => {if (timer.value) {clearInterval(timer.value);timer.value = null;}};// 生命周期钩子onMounted(() => {if (autoScroll && items.length > visibleItems) {startScroll();}});onBeforeUnmount(() => {stopScroll();});return {displayItems,isSliding,currentIndex,getItemPosition,startScroll,stopScroll};
}

滚动原理与动画流程

组件挂载 startScroll 定时器 状态变更 视图更新 调用开始滚动 设置定时器 设置isSliding为true 触发动画过渡 预加载项变为可见 延时后更新currentIndex 设置isSliding为false 更新显示项列表 预加载项准备下一轮 循环执行... 组件挂载 startScroll 定时器 状态变更 视图更新

组件实现

<template><div class="auto-scroll-list":style="{ height: `${containerHeight}px` }"><template v-if="displayItems.length > 0"><slotv-for="(item, index) in displayItems":key="item.key"name="item":item="item":position="getItemPosition(index)":is-sliding="isSliding":is-preload="item.preload"></slot></template><template v-else><slot name="empty"></slot></template></div>
</template><script setup lang="ts">
import { useAutoScroll } from './useAutoScroll';const props = defineProps({items: {type: Array,required: true},itemHeight: {type: Number,required: true},itemGap: {type: Number,default: 0},containerHeight: {type: Number,required: true},visibleItems: {type: Number,required: true},scrollInterval: {type: Number,default: 3000},transitionDuration: {type: Number,default: 500},autoScroll: {type: Boolean,default: true}
});const { displayItems, isSliding, getItemPosition,startScroll,stopScroll
} = useAutoScroll({items: props.items,itemHeight: props.itemHeight,itemGap: props.itemGap,visibleItems: props.visibleItems,scrollInterval: props.scrollInterval,transitionDuration: props.transitionDuration,autoScroll: props.autoScroll
});// 暴露方法
defineExpose({startScroll,stopScroll
});
</script><style lang="less" scoped>
.auto-scroll-list {position: relative;overflow: hidden;
}
</style>

4. 使用示例

以下是组件的三种典型使用场景:

基础用法

<auto-scroll-list:items="notificationItems":item-height="80":container-height="250":visible-items="3"
><template #item="{ item, position, isSliding, isPreload }"><divclass="notification-item":style="{ transform: `translateY(${position}px)` }":class="{ sliding: isSliding, preload: isPreload }"><div class="title">{{ item.title }}</div><div class="content">{{ item.content }}</div></div></template><template #empty><div class="empty-message">暂无通知</div></template>
</auto-scroll-list>

自定义样式的告警列表

<auto-scroll-list:items="alertItems":item-height="80":item-gap="10":container-height="250":visible-items="3":scroll-interval="5000"
><template #item="{ item, position, isSliding, isPreload }"><divclass="alert-item":class="{'high-priority': item.priority === 'high','medium-priority': item.priority === 'medium','low-priority': item.priority === 'low',sliding: isSliding,preload: isPreload}":style="{ transform: `translateY(${position}px)` }"><div class="alert-badge">{{ item.priority === 'high' ? '!' : '⚠' }}</div><div class="alert-content"><div class="alert-title">{{ item.title }}</div><div class="alert-message">{{ item.message }}</div></div></div></template>
</auto-scroll-list>

直接使用 Hook 自定义实现

<template><div class="custom-list" :style="{ height: `${containerHeight}px` }"><div v-for="(item, index) in displayItems" :key="item.key"class="task-item":style="{ transform: `translateY(${getItemPosition(index)}px)` }":class="{ sliding: isSliding, preload: item.preload }"><!-- 自定义内容 --></div></div>
</template><script setup>
import { useAutoScroll } from './useAutoScroll';// 自定义实现
const containerHeight = 250;
const { displayItems, getItemPosition, isSliding,startScroll,stopScroll
} = useAutoScroll({items: taskItems.value,itemHeight: 80,itemGap: 10,visibleItems: 3,autoScroll: true
});
</script>

用户交互过程

onMounted自动触发
用户调用stopScroll
用户调用startScroll
组件卸载时
初始状态
自动滚动
scrollInterval时间后
isSliding = true
transitionDuration时间后
currentIndex + 1
等待间隔
开始过渡
过渡中
更新索引
暂停滚动

5. 技术优劣分析

优势

  1. 关注点分离:将滚动逻辑与UI表现分离,提高代码可维护性
  2. 高度复用性:Hook 可独立使用,适用于不同场景
  3. 良好的扩展性:通过插槽系统支持高度自定义的内容
  4. 配置灵活:支持多种滚动参数配置,适应不同业务需求
  5. 无外部依赖:不依赖第三方库,减少项目体积

劣势

  1. 性能考虑:对于大量数据,需要考虑虚拟列表优化
  2. 动画限制:当前仅支持垂直方向滚动,水平滚动需额外开发
  3. 复杂场景适应性:对于需要拖拽或交互复杂的场景支持有限
  4. 不支持嵌套列表:当前设计不适合嵌套滚动列表的场景
  5. 浏览器兼容性:使用了现代CSS特性,可能需要额外的兼容处理

性能分析

性能影响因素
数据量
DOM操作
计算复杂度
动画效果
列表项超过100个时可能出现性能问题
使用absolute定位减少重排
O(n)复杂度,n为可见项+1
使用CSS transform提高动画性能

6. 可改进方向

当前版本
性能优化
滚动方向支持
交互增强
动画扩展
辅助功能
虚拟列表
懒加载
水平滚动
多方向滚动
拖拽支持
排序功能
多种过渡效果
自定义动画
键盘导航
Screen Reader优化

技术路线演进

timelinetitle AutoScrollList 组件演进路线section 当前版本1.0 : 基础垂直滚动功能Hook与组件分离设计插槽系统支持section 短期迭代1.1 : 水平滚动支持性能优化1.2 : 响应式增强多种动画效果section 中期规划2.0 : 虚拟列表实现多方向滚动拖拽排序支持section 长期目标3.0 : 完整无障碍支持高级自定义API更多交互模式
  1. 虚拟列表支持:对大数据量进行优化,只渲染可视区域的数据
  2. 水平滚动支持:扩展当前的垂直滚动逻辑,支持水平方向滚动
  3. 更多交互方式:添加拖拽、手势支持等交互方式
  4. 动画多样化:提供更多滚动动画效果选择
  5. 响应式支持增强:更好地适应不同设备和屏幕尺寸
  6. 无障碍支持:增加对屏幕阅读器的支持,提高可访问性

7. 总结

AutoScrollList 组件通过组件与逻辑分离的设计,实现了一个灵活、可复用的自动滚动列表解决方案。它的核心价值在于:

  1. 简化复杂逻辑:封装了滚动、位置计算、过渡动画等复杂逻辑
  2. 提高开发效率:通过简单配置即可实现自动滚动效果
  3. 保持灵活性:支持多种自定义方式,适应不同业务场景

以下是组件实现的关键技术点:

mindmaproot((AutoScrollList))Hook设计状态管理currentIndexisSlidingtimer生命周期集成自动启动/停止返回值设计按需使用滚动机制定时器控制缓动动画预加载机制组件设计插槽系统item插槽empty插槽Props设计必要参数可选配置样式实现绝对定位CSS变换过渡效果

虽然存在一些局限性,但对于通知、公告、提醒等信息轮播的场景,该组件提供了一个简洁而有效的解决方案。通过未来的迭代优化,可以进一步提升组件的适用范围和性能表现。

相关文章:

【Auto-Scroll-List 组件设计与实现分析】

Auto-Scroll-List 组件设计与实现分析 gitee代码仓库 https://gitee.com/chennaiyuan/dayup-record/tree/master/%E4%B8%80%E4%BA%9B%E7%BB%84%E4%BB%B6/auto-scroll-list 1. 组件概述 我们封装的 AutoScrollList 是一个自动滚动列表组件&#xff0c;主要用于展示需要自动循…...

用hexo初始化博客执行hexo init时碰到的问题

用hexo初始化博客执行hexo init时碰到的问题 $ hexo init myblog INFO Cloning hexo-starter https://github.com/hexojs/hexo-starter.git fatal: unable to access https://github.com/hexojs/hexo-starter.git/: SSL certificate problem: unable to get local issuer cer…...

【C++真题】P1739 表达式括号匹配

P1739 表达式括号匹配 题目描述 假设一个表达式有英文字母&#xff08;小写&#xff09;、运算符&#xff08;、-、*、/&#xff09;和左右小&#xff08;圆&#xff09;括号构成&#xff0c;以 作为表达式的结束符。请编写一个程序检查表达式中的左右圆括号是否匹配&#x…...

Java1.8与testNg兼容问题:bad class file和SocketTimeoutException: Read timed out

背景&#xff1a; 公司 java JDK默认用的是1.8版本&#xff0c;已经在跑的一个项目使用的testng用的是6.14.3&#xff0c;我拿到后通过Test 运行失败&#xff0c;因为这个是一直在用的项目&#xff0c;就没想到是版本兼容问题&#xff0c;折腾了好一阵&#xff08;原开发者是通…...

高项第十二章——项目质量管理

项目质量管理包括把组织的质量政策应用于规划、管理、控制项目和产品质量要求&#xff0c;以满足干系人目标的各个过程。 项目质量管理针对的是项目过程中所涉及的活动 可交付成果质量管理针对的是项目生产的具体可交付成果&#xff0c;与可交付成果的性质和特性紧密相关 12…...

C# WPF编程-Menu

C# WPF编程-Menu 布局&#xff1a;代码&#xff1a;效果 在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;Menu控件用于创建下拉菜单或上下文菜单&#xff0c;它提供了丰富的定制选项来满足不同的应用需求。下面将介绍如何在WPF应用程序中使用Menu…...

python日期

导入包 from datetime import datetime现在时间 now datetime.now() print("当前时间:", now)当前时间: 2025-03-18 23:51:08.418953 格式化 formatted_now datetime.now().strftime("%Y-%m-%d %H:%M:%S") print("格式化后的时间:", forma…...

flutter 专题 一百零三

前不久&#xff0c;谷歌官方正式发布了Flutter的首个发布预览版&#xff08;Release Preview 1&#xff09;&#xff0c;这标志着谷歌进入了Flutter正式版&#xff08;1.0&#xff09;发布前的最后阶段&#xff0c;同时作为Google的重量级跨平台开发方案&#xff0c;此次更新也…...

【conda activate无效】 conda: error: argument COMMAND: invalid choice: ‘activate‘

conda activate失效了 在使用conda activate时出现报错&#xff1a; usage: conda [-h] [-v] [--no-plugins] [-V] COMMAND ... conda: error: argument COMMAND: invalid choice: activate (choose from clean, compare, config, create, info, init, install, list, notice…...

Chainlit 自定义元素开发指南:使用 JSX 和受限导入实现交互式界面

自定义元素 Custom Element 类允许你渲染一个自定义的 .jsx 代码片段。.jsx 文件应当放置在 public/elements/ELEMEN_NAME.jsx 目录下。 属性 name 字符串 自定义元素的名称。它应该与你的JSX文件名相匹配(不包括 .jsx扩展名)。 props 字典 传递给 JSX 的属性。 display El…...

CEF 控制台添加一函数,枚举 注册的供前端使用的CPP交互函数有哪些

一、前序知识 1、设置单进程模式,方便调试 void ClientApp::OnBeforeCommandLineProcessing(const CefString& process_type, CefRefPtr<CefCommandLine> command_line) {if (process_type.empty()){//cef 在debug模式下有问题#ifdef _DEBUGcommand_line->Appe…...

C++之list类及模拟实现

目录 list的介绍 list的模拟实现 定义节点 有关遍历的重载运算符 list的操作实现 &#xff08;1&#xff09;构造函数 (2)拷贝构造函数 &#xff08;3&#xff09;赋值运算符重载函数 &#xff08;4&#xff09;析构函数和clear成员函数 &#xff08;5&#xff09;尾…...

C++八大常见的设计模式的实现与实践指南

目录 创建型模式 单例模式工厂方法模式抽象工厂模式 结构型模式 适配器模式装饰者模式代理模式 行为型模式 观察者模式策略模式命令模式 高级主题 现代C特性影响模式性能对比典型应用案例 设计模式分类 一、创建型模式 1. 单例模式&#xff08;Singleton&#xff09; 现代…...

02 windows qt配置ffmpeg开发环境搭建

版本说明 首先我使用ffmpeg版本是4.2.1QT使用版本5.14.2我选择是c编译...

什么是状态管理?有何种方式可以实现?它们之间有什么区别?

目录 一、状态管理的核心概念 二、常见状态管理方案及对比 1. 基础方案:setState 2. 官方推荐:Provider 3. 事件驱动:Bloc (Business Logic Component) 4. 响应式增强:Riverpod 5. 轻量级全能库:GetX 三、方案对比与选型指南 四、实战建议 在 Flutter 中,状态管…...

tf1.x和tf2.x在使用上的区别和联系是什么

tf1.x和tf2.x在使用上的区别和联系是什么 TensorFlow 1.x 和 2.x 在使用上有显著差异&#xff0c;主要体现在编程范式、API 设计和易用性上&#xff0c;但二者仍共享相同的核心目标&#xff08;深度学习框架&#xff09;和底层计算引擎。以下是主要区别和联系&#xff1a; 主要…...

Elasticsearch使用记录

一、配环境 1.docker版本部署es 8.x系列可以关掉ssl&#xff08;本地测试时&#xff09;&#xff0c;去docker的/usr/share/elasticsearch/config/elasticsearch.yml里面的“xpack.security.enabled:”设置成true就可以 2.window docker部署推荐教程&#xff1a;基于Docker安…...

【python web】一文掌握 Flask 的基础用法

文章目录 一、 Flask 介绍1.1 安装 Flask二、Flask的基本使用2.1 创建第一个 Flask 应用2.2 路由与视图函数2.3 请求与响应2.4 响应对象2.5 模板渲染2.6 模板继承2.7 静态文件管理2.8 Blueprint 蓝图2.9 错误处理三、Flask扩展与插件四、部署 Flask 应用五、总结Flask 是一个轻…...

第十六届蓝桥杯单片机组4T模拟赛二

难点&#xff1a; PCF8591同时测量两条通道数据 避免重复触发 采集触发时的时间数据存放 未采集的数据显示 清空数据 本题建议了解怎么去触发采集&#xff0c;怎么显示最近三次触发采集的时间即可。由于4T模拟赛的尿性有很多评测点是题目中没有要求的&#xff0c;另外测评的时候…...

《解锁华为黑科技:MindSpore+鸿蒙深度集成奥秘》

在数字化浪潮汹涌澎湃的当下&#xff0c;人工智能与操作系统的融合已成为推动科技发展的核心驱动力。华为作为科技领域的先锋&#xff0c;其AI开发框架MindSpore与鸿蒙系统的深度集成备受瞩目&#xff0c;开启了智能生态的新篇章。 华为MindSpore&#xff1a;AI框架的创新先锋…...

kotlin中的list set map整理

在 Kotlin 中&#xff0c;List、Set 和 Map 是三种核心集合类型&#xff0c;它们分别适用于不同的场景&#xff0c;具有独特的特性和操作方式。以下是它们的详细对比与使用指南&#xff1a; 1. List&#xff08;列表&#xff09; 核心特性 • 有序&#xff1a;元素按插入顺序…...

条款43:学习处理模板化基类内的名称

前提认知&#xff1a;模板类继承模板类&#xff0c;是需要建立在假设的前提下的&#xff0c;如果没有这个”假设“&#xff0c;编译将会失败 1.书上举例 2.完整代码举例 #include <iostream>class MsgInfo { };class BaseCompany { public:BaseCompany(){}~BaseCompan…...

五种方案实现双链路可靠数据传输

本文介绍五种双链路数据传输方案,目标是利用设备的多个传输通道,(如双有线网口,网口+wifi, 网口+5G等场景 , 网口+ 自组网, 自组网 + 5G等),将数据复制后分流、分路同时传输,以期提高数据传输可靠性,满足高可靠性传输的应用场景需求。部分方案给出了实际验证结果 。 …...

提升AI性能的秘密武器:量化、蒸馏与剪枝全面解析

通过高效的模型压缩技术推进 NLP 在快速发展的自然语言处理 (NLP) 领域,模型的大小和复杂性显著增加,从而显著提高了性能。然而,这些庞大模型的部署和维护也带来了挑战,特别是在计算成本、功耗和资源受限用户的可访问性方面。本博客深入探讨了量化、剪枝和蒸馏等尖端模型压…...

React Native 如何使用 Expo 快速开发?

React Native是当下热门的跨平台移动开发框架&#xff0c;而Expo则是它的重要开发工具之一。Expo提供了一套完整的开发环境&#xff0c;使开发者无需安装Android Studio或Xcode也能快速运行React Native项目。它包含了众多内置API&#xff0c;如相机、地理位置、推送通知等&…...

C++Primer 拷贝控制示例

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…...

Qt 读取数据库

在 Qt 中读取数据库文件通常涉及以下步骤。这里以 SQLite 为例&#xff08;Qt 内置支持&#xff09;&#xff0c;其他数据库&#xff08;如 MySQL、PostgreSQL&#xff09;需要对应驱动&#xff1a; 1. 添加 SQL 模块依赖 在项目文件 .pro 中添加&#xff1a; QT sql2. 基本…...

DeepSeek在学术研究方向初期工作提示词分享

目录 论文选题 研读文献 拟定提纲 大家好这里是AIWritePaper官方账号&#xff01;更多内容&#x1f449;AIWritePaper~在如今这个学术圈的“快车道”上&#xff0c;时间就像是一场永不停歇的赛跑&#xff0c;而论文质量则是那颗我们拼命追逐的“金苹果”。最近一款名为DeepS…...

CentOS下安装ElasticSearch(日志分析)

准备目录 搞一个自己喜欢的目录 mkdir /usr/local/app 切换到该目录 cd /usr/local/app 下载 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.2-linux-x86_64.tar.gz 选择其他版本 点击进入官网...

科技云报到:AI Agent打了个响指,商业齿轮加速转动

科技云报到原创。 3月16日&#xff0c;百度旗下文心大模型4.5和文心大模型X1正式发布。目前&#xff0c;两款模型已在文心一言官网上线&#xff0c;免费向用户开放。 同时&#xff0c;文心大模型4.5已上线百度智能云千帆大模型平台&#xff0c;企业用户和开发者登录即可调用AP…...

布谷直播系统源码开发实战:从架构设计到性能优化

作为山东布谷科技的一名技术研发人员&#xff0c;我参与了多个直播系统平台从0到1的开发和搭建&#xff0c;也见证了直播行业从萌芽到爆发的全过程。今天&#xff0c;我想从研发角度&#xff0c;分享一些直播系统软件开发的经验和心得&#xff0c;希望能对大家有所帮助。 一、 …...

pytorch小记(十):pytorch中torch.tril 和 torch.triu 详解

pytorch小记&#xff08;十&#xff09;&#xff1a;pytorch中torch.tril 和 torch.triu 详解 PyTorch torch.tril 和 torch.triu 详解1. torch.tril&#xff08;计算下三角矩阵&#xff09;&#x1f4cc; 作用&#x1f50d; 语法&#x1f539; 参数&#x1f4cc; 示例&#x1…...

C语言每日一练——day_11

引言 针对初学者&#xff0c;每日练习几个题&#xff0c;快速上手C语言。第十一天。&#xff08;连续更新中&#xff09; 采用在线OJ的形式 什么是在线OJ&#xff1f; 在线判题系统&#xff08;英语&#xff1a;Online Judge&#xff0c;缩写OJ&#xff09;是一种在编程竞赛中…...

HCIA-PPP实验

一、LCP链路控制协议 1、链路建立阶段&#xff1a;通过交互LCP报文协商参数&#xff0c;包含了MRU、认证类型、魔术字等。 2、链路维护阶段&#xff1a; 3、链路终止 二、NCP网络控制协议&#xff1a;交互PPP IPCP报文,检测地址、学习路由、下发地址 1、通过IPCP协议的请求消…...

C++学习之云盘项目nginx

1.复习 2.知识点概述 1. 一些基本概念 1.1 Nginx 初步认识 1.2 正向 / 反向代理 1.3 域名和 IP 2. Nginx 安装和配置 2.1 安装 2.2 配置 3. Nginx 的使用 3.1 部署静态网页 3.2 反向代理和负载均衡 课外知识导读 1. URL 和 URI 2. DNS 解析过程 1. 一些基…...

7-字符串

1-ASCII 0-9 对应 48-57 A-Z 对应 65-90 a-z 对应 97-122 2-字符数组 字符变量存储单个字符 字符数组存储多个字符 字符串就是字符数组加上结束符 ’ \0 ’ #include <iostream> using namespace std; int main(){//是字符数组&#xff0c;不是字符串char a1[]{C,,};…...

vue学习八

十七 组件通信方式 1 props 父传子 //父组件 <script setup>//book来源省略import Subview1 from ./Subview1.vue;function updatebook(updatetimes){book.value.updatetimes updatetimes} </script> <template><Subview1 :book"book" :upd…...

Vue 渲染 LaTeX 公式 Markdown 库

&#x1f31f; 前言 欢迎来到我的技术小宇宙&#xff01;&#x1f30c; 这里不仅是我记录技术点滴的后花园&#xff0c;也是我分享学习心得和项目经验的乐园。&#x1f4da; 无论你是技术小白还是资深大牛&#xff0c;这里总有一些内容能触动你的好奇心。&#x1f50d; &#x…...

基于大模型的喉癌全程预测与治疗方案优化研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与目标 1.3 研究方法与数据来源 二、大模型在喉癌预测中的应用原理 2.1 大模型概述 2.2 预测喉癌的技术原理 2.3 相关技术对比 三、术前预测与方案制定 3.1 术前风险预测 3.1.1 淋巴结转移预测 3.1.2 其他风险因素预…...

SpringBoot第三站:配置嵌入式服务器使用外置的Servlet容器

目录 1. 配置嵌入式服务器 1.1 如何定制和修改Servlet容器的相关配置 1.server.port8080 2. server.context-path/tx 3. server.tomcat.uri-encodingUTF-8 1.2 注册Servlet三大组件【Servlet&#xff0c;Filter&#xff0c;Listener】 1. servlet 2. filter 3. 监听器…...

通向AGI的未来之路!首篇2D/视频/3D/4D统一生成框架全景综述(港科大中山等)

文章链接&#xff1a; https://arxiv.org/pdf/2503.04641 摘要 理解并复现现实世界是人工通用智能&#xff08;AGI&#xff09;研究中的一个关键挑战。为实现这一目标&#xff0c;许多现有方法&#xff08;例如世界模型&#xff09;旨在捕捉支配物理世界的基本原理&#xff0…...

什么是MCP(Model Context Protocol)?对话、意图识别、服务调用和上下文管理

什么是MCP&#xff1f; MCP&#xff08;Model Context Protocol&#xff09; 是一种专为人工智能模型设计的通信协议&#xff0c;旨在解决复杂 AI 系统中多个模型或组件之间的协同、状态管理和资源优化问题。它尤其适用于大型语言模型&#xff08;LLM&#xff09;、多模态系统及…...

第二十七篇 数据仓库与维度建模指南:从理论到实战的进阶之路

声明&#xff1a;文章内容仅供参考&#xff0c;需仔细甄别。文中技术名称属相关方商标&#xff0c;仅作技术描述&#xff1b;代码示例为交流学习用途&#xff0c;部分参考开源文档&#xff08;Apache 2.0/GPLv3&#xff09;&#xff1b;案例数据已脱敏&#xff0c;技术推荐保持…...

定时任务引起的死锁

定时任务引起的死锁 前言&#xff1a;Java面试题 死锁的场景有哪些&#xff1f;你们是怎么解决的&#xff1f; 锁有哪些特性&#xff1f; 问题现象 1&#xff0c;文件上传报当前功能正在使用&#xff0c;请稍后再试 2&#xff0c;其他账号登录系统&#xff0c;登录不上去&a…...

NewStar CTF web wp

文章目录 week1headach3会赢吗智械危机谢谢皮蛋PangBai 过家家&#xff08;1&#xff09; week3include meblindsql1臭皮的计算机臭皮踩踩背这照片是你吗 week4Pangbai过家家四blindsql2chocolateezcmsssezpollute隐藏的密码 weeek5pangbai过家家(5)redissqlshell臭皮吹泡泡臭皮…...

Docker运行postgreSQL,由于异常启动或者退出后,提示could not locate a valid checkpoint record

pg_resetwal 是 PostgreSQL 的“急救工具”&#xff0c;用于在极端情况下修复因 WAL 或控制文件损坏导致的启动问题。 但需注意&#xff1a; 风险极高&#xff0c;可能导致数据不一致。必须立即转储并恢复&#xff0c;避免直接在修复后的数据库中执行写操作。仅在备份后使用&…...

Leetcode 刷题笔记1 图论part01

图论的基础知识&#xff1a; 图的种类&#xff1a; 有向图&#xff08;边有方向&#xff09; 、 无向图&#xff08;边无方向&#xff09;、加权有向图&#xff08;边有方向和权值&#xff09; 度&#xff1a; 无向图中几条边连接该节点&#xff0c;该节点就有几度&#xff1…...

文件管理系统

前言&#xff1a;之前我们讨论的是被打开文件的管理&#xff0c;那么未被打开的文件是如何管理的呢&#xff1f; 1.认识磁盘设备 1.1磁盘的物理结构 磁盘是由盘片&#xff08;盘面&#xff0c;扇区&#xff0c;磁道&#xff0c;柱面&#xff09;&#xff0c;磁头&#xff0c…...

荣耀手机卸载应用商店、快应用中心等系统自带的

1.下载abd ADB Download - Get the latest version of ADB and fastboot 2.手机打开开发者选项 3.手机接电脑打开USB调试 4.下载MT管理器查看系统包名 D:\1.LFD\ADB\platform-tools-latest-windows\platform-tools>adb shell adb.exe: no devices/emulators found 这边是…...

结合基于标签置信度的特征选择方法用于部分多标签学习-简介版

假设 部分多标签学习&#xff08;PML&#xff09;假设&#xff1a;假设样本的标签集合中存在伪正标签&#xff0c;即某些标签可能是错误的。目标是从候选标签集中识别出真实标签。特征与标签的关系假设&#xff1a;假设不同的标签对应的特征子空间可能是不同的&#xff0c;而不…...