Compose 动画,让页面动起来
Compose 动画,让页面动起来
- 概述
- 高级别动画API
- AnimatedVisibility
- MutableTransitionState
- Modifier.animateEnterExit
- 自定义Enter/Exit动画
- AnimatedContent
- ContentTransform自定义动画
- SizeTranstion定义大小动画
- 定义子元素动画
- 自定义Enter/Exit动画
- Crossfade
- Modifier.animateContentSize
- 低级别动画API
- animate*AsState
- Animatable
- Transition过渡动画
- updateTransition
- createChildTransition创建子动画
- 与AnimatedVisibility和AnimatedContent配合使用
- 封装并复用Transition动画
- rememberInfiniteTransition
- AnimationSpec动画规格
- spring弹跳动画
- tween补间动画
- keyframes关键帧动画
- repeatable循环动画
- infiniteRepeatable无限循环动画
- snap快闪动画
- 使用Easing控制动画节奏
- AnimationVector动画矢量值
- TwoWayConverter
概述
Compose 动画 可以分为两类: 高级别的 API 和 低级别的 API,高级别的API开箱即用,低级别的API 可以基于协程完成任何状态驱动的动画效果,高级别的API底层都是由低级别API支持的
高级别动画API
AnimatedVisibility
- AnimatedVisibility是一个容器类的Composable,需要接收一个Boolean型的visible参数控制content是否可见,content在出现与消失时,会伴随着过渡动画效果。
- Compose额外提供了RowScope.AnimatedVisibility和ColumnScope. AnimatedVisibility两个扩展方法,我们可以在Row或者Column中调用AnimatedVisibility
// 当editable为true/false时,Text将会淡入/淡出屏幕
var editable by remember { mutableStateOf(true) }
AnimatedVisibility(visible = editable) {Text(text = "Edit")
}
也可以通过设置 EnterTransition和ExitTransition来定制出场与离场过渡动画。
MutableTransitionState
AnimatedVisibility还有一个接收MutableTransitionState类型参数的重载方法,用于 监听动画状态
Modifier.animateEnterExit
在AnimatedVisibility的content中,可以使用Modifier.animateEnterExit为每个子元素单独设置进出屏幕的过渡动画。
自定义Enter/Exit动画
如果想在EnterTransition和ExitTransition之外再增加其他动画效果,可以在AnimatedVisibilityScope内设置transition。添加到transition的动画都会在AnimatedVisibility进出屏幕动画的同时运行。AnimatedVisibility会等到Transition中的所有动画都完成后,再移出屏幕。
AnimatedContent
AnimatedContent和AnimatedVisibility相类似,区别在于AnimatedVisibility用来添加组件的出场与离场过渡动画,而AnimatedContent则是用来实现不同组件间的切换动画。
ContentTransform自定义动画
AnimatedContent可以将transitionSpec参数指定为一个ContentTransform来自定义动画效果。ContentTransform也是由EnterTransition与ExitTransition组合的,可以使用togetherWith中缀运算符将EnterTransition与ExitTransition组合起来。
SizeTranstion定义大小动画
在使用ContentTransform来创建自定义过渡动画的同时,还可以使用using操作符连接SizeTransform。实现尺寸变化的过渡动画。
定义子元素动画
与AnimatedVisibility一样,AnimatedContent内部的子组件也可以通过Modifier.animatedEnterExit单独指定动画。
自定义Enter/Exit动画
通过AnimatedContent的定义可知,其content同样是在AnimatedVisibilityScope作用域中,所以内部也可以通过transition添加额外的自定义动画。
Crossfade
如果只需要淡入淡出效果,可以使用Crossfade替代AnimatedContent。更正确的说法应该是AnimatedContent是Crossfade的一种泛化。
Crossfade无法实现SizeTransform那样尺寸变化的动画效果,如果content变化前后尺寸不同,想使用动画进行过渡,可以使用:
- AnimatedContent+SizeTranform
- Crossfade + Modifier.animateContentSize
Modifier.animateContentSize
animateContentSize是一个Modifier修饰符方法。它的用途非常专一,当容器尺寸发生变化时,会通过动画进行过渡。
低级别动画API
animate*AsState
-
animated*AsState是最常用的低级别API之一,它类似于传统视图中的属性动画,可以自动完成从当前值到目标值过渡的估值计算。
-
Compose为常用的数据类型都提供了animate*AsState方法,例如Float、Color、Dp、Size、Bounds、Offset、Rect、Int、IntOffset和InSize等
Animatable
Animatble是一个数值包装器,它的animateTo方法可以根据数值的变化设置动画效果,animate*AsState背后就是基于Animatable实现的。
val buttonColor = remember { Animatable(Color.Gray) }
LaunchedEffect(flag) { //animateTo buttonColor.animateTo( targetValue = if (isLike) Color.Red else Color.Gray, animationSpec = tween(3000) )
}
Animatable中包括animateTo在内的许多API都是挂起函数,需要在CoroutineScope中执行,可以使用LaunchedEffect为其提供所需的环境。
Transition过渡动画
AnimateState以及Animatable都是针对单个目标值的动画,而Transition可以面向多个目标值应用动画并保持它们同步结束。Transition的作用更像是传统视图体系动画中的AnimationSet。
updateTransition
使用updateTransition创建一个Transition动画,使用animate*来声明每个动画属性其在不同状态时的数值信息,当Transition所依赖的状态发生改变时,其中每个属性状态都会得到相应的更新。
val transition = updateTransition(targetState = selectedState, label = "switch_transition")
val textAlpha by transition.animateFloat( transitionSpec = { tween(1000) }, label = "" ) { when (it) { SwitchState.CLOSE -> 1f SwitchState.OPEN -> 0f } }
createChildTransition创建子动画
Transition可以使用createChildTransition创建子动画,各自只需要关心自己的状态,能够更好地实现关注点分离。
与AnimatedVisibility和AnimatedContent配合使用
AnimatedVisibility和AnimatedContent有针对Transition的扩展函数,将Transition的State转换成所需的TargetState。
封装并复用Transition动画
如果希望把Transition动画的实现与用户界面分开,可以通过创建一个持有所有动画值的类和一个返回该类实例的“更新”函数来做到这一点。Transition动画的实现被提取到单独的函数中,便于后续进行复用。
rememberInfiniteTransition
-
InfinitTransition从名字上便可以知道其就是一个无限循环版的Transition。一旦动画开始执行,便会不断循环下去,直至Composable生命周期结束。
-
子动画可以用animateColor、animatedFloat或animatedValue等进行添加,另外还需要指定infiniteRepeatableSpec来设置动画循环播放方式。
AnimationSpec动画规格
Compose提供了多种AnimationSpec的子类,分别基于不同的VectorizedAnimationSpec实现不同动画效果的计算。例如TweenSpec用来实现两点间的补间动画,SpringSpec实现基于物理效果的动画,SnapSpec是一个即时生效的动画。
spring弹跳动画
@Stable
fun <T> spring(dampingRatio: Float = Spring.DampingRatioNoBouncy,stiffness: Float = Spring.StiffnessMedium,visibilityThreshold: T? = null
): SpringSpec<T> =SpringSpec(dampingRatio, stiffness, visibilityThreshold)
- dampingRation: dampingRation表示弹簧的阻尼比。
- stiffness: stiffness定义弹簧的刚度值。
- visibilityThreshold: 参数visibilityThreshold是一个泛型,此泛型与targetValue类型保持一致。由开发者指定一个阈值,当动画到达这个阈值时,动画会立即停止。
tween补间动画
使用tween可以创建一个TweenSpec实例,TweenSpec是DurationBasedAnimationSpec的子类。从基类名字可以感受到,TweenSpec的动画必须在规定时间内完成。
val value by animateFloatAsState(targetValue = 1f,animationSpec = tween(durationMillis = 300,//动画执行时间(ms)delayMillis = 50,//可以指定动画的延迟执行easing = LinearOutSlowInEasing//衰减曲线动画效果), label = ""
)
keyframes关键帧动画
相对于tween动画只能在开始和结束两点之间应用动画效果,keyframes可以更精细地控制动画,它允许在开始和结束之间插入关键帧节点,节点与节点之间的动画过渡可以应用不同效果。
repeatable循环动画
使用repeatable可以创建一个RepeatableSpec实例。前面所介绍的动画都是单次动画,而这里的repeatable是一个可循环播放的动画,可以指定TweenSpec或者KeyFramesSpec以及循环播放的方式。
val value by animateFloatAsState(targetValue = 1f,animationSpec = repeatable(iterations = 3,animation = tween(durationMillis = 300),repeatMode = RepeatMode.Reverse), label = ""
)
infiniteRepeatable无限循环动画
infiniteRepeatable顾名思义,就是无限执行的RepeatableSpec,因此没有iterations参数。它将创建并返回一个InfiniteRepeatableSpec实例。
val value by animateFloatAsState(targetValue = 1f,animationSpec = infiniteRepeatable(animation = tween(durationMillis = 300),repeatMode = RepeatMode.Reverse),label = ""
)
snap快闪动画
snap会创建一个SnapSpec实例,这是一种特殊动画,它的targetValue发生变化时,当前值会立即更新为targetValue。由于没有中间过渡,动画会瞬间完成,常用于跳过过场动画的场景。我们也可以设置delayMillis参数来延迟动画的启动时间。
val value by animateFloatAsState(targetValue = 1f,animationSpec = snap(delayMillis = 50), label = ""
)
使用Easing控制动画节奏
-
Easing本质上就是一个基于时间参数的函数(实际是一个单方法接口),它的输入和输出都是0f~1f的浮点数值。
-
输入值表示当前动画在时间上的进度,返回值是则是当前value的进度,1.0表示已经达到targetValue。不同的Easing算法可以实现不同的动画加速、减速效果,因此也可以将Easing理解为动画的瞬时速度。
AnimationVector动画矢量值
矢量动画是基于动画矢量值AnimationVector计算的。前面的章节中我们了解到,animae*AsState基于Animatable将Color、Float、Dp等数据类型的数值转换成可动画类型,其本质就是将这些数据类型转换成AnimationVector参与动画计算。
@Suppress("NotCloseable")
class Animatable<T, V : AnimationVector>( initialValue: T, //T类型的动画初始值val typeConverter: TwoWayConverter<T, V>, //将T类型的数值与V类型的AnimationVector进行转换private val visibilityThreshold: T? = null, //动画消失的阈值,默认为nullval label: String = "Animatable"
) {..}
TwoWayConverter
interface TwoWayConverter<T, V : AnimationVector> { val convertToVector: (T) -> V val convertFromVector: (V) -> T
}
相关文章:
Compose 动画,让页面动起来
Compose 动画,让页面动起来 概述高级别动画APIAnimatedVisibilityMutableTransitionStateModifier.animateEnterExit自定义Enter/Exit动画 AnimatedContentContentTransform自定义动画SizeTranstion定义大小动画定义子元素动画自定义Enter/Exit动画 CrossfadeModifi…...
Windows CMD 命令大全(Complete List of Windows CMD Commands)
Windows CMD 命令大全: Windows CMD 是 Windows 系统内置的命令行工具,用于执行各种命令和管理任务。 称为Command Prompt。它提供了一个通过键入命令来与计算机系统进行交互的方式,类似于早期的DOS操作系统。以下是 CMD 的基础知识和常用命…...
DeepSeek在MATLAB上的部署与应用
在科技飞速发展的当下,人工智能与编程语言的融合不断拓展着创新边界。DeepSeek作为一款备受瞩目的大语言模型,其在自然语言处理领域展现出强大的能力。而MATLAB,作为科学计算和工程领域广泛应用的专业软件,拥有丰富的工具包和高效…...
IP代理在网络数据挖掘中的关键作用(AI大模型数据采集版)
在当今人工智能飞速发展的时代,AI大模型的训练需要海量且多样化的数据。然而,在数据采集过程中,常常面临诸多挑战,而IP代理在其中发挥着至关重要的作用。 数据采集的多样性是影响AI大模型性能的关键因素。如果数据来源单一&#x…...
pandas数据的导出
数据导出 将数据导出到CSV文件 数据对象.to_csv(filepath,sep"",indexFalse,encoding)参数1:文件的路径参数2:分隔符,默认是 ,参数3:是否保留索引 默认 Ture参数4:文件编码代码 : # 将数据导出到CSV # 引用 pandas import pandas as pd # 定…...
Claude-3.7-Sonnet:Cursor 的新引擎,解锁编码与推理的未来
引言 claude-3.7-sonnet 是 Anthropic 最新发布的大型语言模型,于 2025 年 2 月 24 日推出,并已集成到 Cursor AI 平台中。Cursor 是一个 AI 驱动的集成开发环境(IDE),旨在通过 AI 增强开发者的生产力。claude-3.7-so…...
JavaScript函数-函数的两种声明方式
在JavaScript中,函数是构建复杂逻辑和实现代码重用的基本单元。了解如何正确地定义和使用函数对于任何JavaScript开发者来说都是至关重要的。本文将详细介绍JavaScript函数的两种主要声明方式:函数声明(Function Declaration)和函…...
微服务即时通信系统---(六)语音识别子服务
目录 功能设计 模块划分 业务接口/功能示意图 服务实现流程思想 服务代码实现 编写proto文件 服务端创建子类(SpeechRecognitionServiceImpl)完成RPC服务调用函数重写 SpeechRecognize(语音识别) 服务端完成语音识别子服务类(SpeechRecognitionServer) 注意 …...
【Java 8】Lambda表达式介绍
目录 1、Lambda简介 2、语法介绍 3、Lambda表达式示例 3.1、无参数的 Lambda 表达式 3.2、单个参数的 Lambda 表达式 3.3、多个参数的 Lambda 表达式 3.4、带语句块的 Lambda 表达式 4、Lambda使用场景 4.1、替代匿名内部类 4.2、集合操作 4.3、排序 4.4、函数式接口…...
2011-2019年各省电视节目综合人口覆盖率数据
2011-2019年各省电视节目综合人口覆盖率数据 1、时间:2011-2019年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区、年份、电视节目综合人口覆盖率(%) 4、范围:31省 5、指标解释:电视节目综合人口覆盖…...
便捷高效的免费 PDF 文件处理帮手
软件介绍 今天要给大家推荐一款超实用的 PDF 工具箱。它的优势十分突出,完全免费且没有任何使用限制。 安装起来毫不费力,下载完成后,直接打开就能使用。软件界面简洁大方,操作便捷顺手。其核心功能涵盖三大板块:一…...
DeepSeek引领目标检测新趋势:如何通过知识蒸馏优化模型性能
目录 一、知识蒸馏是什么? 二、知识蒸馏在目标检测中的重要性 提升实时性 跨任务迁移学习 三、如何使用知识蒸馏优化目标检测? 训练教师模型 生成软标签 训练学生模型 调节温度参数 多教师蒸馏(可选) 四、案例分享 定…...
“深入解析 SQL Server 子查询:从基础到应用”
目录 引言什么是子查询? 子查询的定义子查询的类型 子查询的使用 标量子查询多行子查询多列子查询相关子查询 子查询的性能优化子查询的实际案例总结 引言 在 SQL Server 中,子查询是一种强大的工具,允许我们在一个查询中嵌套另一个查询&am…...
375_C++_cloud手机推送,添加人脸告警信息到任务队列中,UploadAlarmPush是典型的工厂模式应用,为什么使用工厂模式完成这部分代码
一:AlarmFaceInfo的应用 让我帮你解析这个lambda表达式的实现: // ...................... .h ...........................// struct RsMsgPushTask_S : public Task{AlarmType_E mainAlarmType;unsigned int subAlarmType;DateTime alarmTime...
Vue进阶之AI智能助手项目(二)——项目评审与架构设计
AI智能助手项目 基于Vue的最佳实践main.tsApp.vue主应用给子应用下发功能语言language,theme设置及appStore状态管理状态管理router路由index.tspermission.ts基于Vue的最佳实践 src目录概览 api 接口,基于接口可以做 状态处理,interceptorassets/public 静态资源component…...
LambdaQueryWrapper在Mybatis-plus中的应用
LambdaQueryWrapper 是 MyBatis-Plus 中非常强大的工具,用于构建类型安全的查询条件。它利用 Java 的 Lambda 表达式,使得查询条件的编写更加简洁和直观。 public R getAppArticleCategoryPage(ParameterObject Page page,ParameterObject AppArticleCa…...
DeepSeek AI人工智能该如何学习?
人工智能(Artificial Intelligence, AI)是当今科技领域的热门话题,它涵盖了机器学习、深度学习、自然语言处理、计算机视觉等多个子领域。 作为中国科技发展的核心方向之一,AI在国家战略规划中占据了重要地位,特别是在…...
element ui的select选择框
我们首先先试一下,这个东西怎么玩的 <el-select v-model"select" change"changeSelect"><el-option value"香蕉"></el-option><el-option value"菠萝"></el-option><el-option value&quo…...
解决Value of type ‘AVCodecContext‘ has no member ‘channels‘ 的问题
在 FFmpeg 7.1 中,AVCodecContext 的 channels 和 channel_layout 字段已经被移除,取而代之的是 AVChannelLayout 结构。因此,代码需要进行调整以适应新的 API。 以下是如何正确设置 AVCodecContext 和 AVCodecParameters 的方法。 1. 问题分析 在 FFmpeg 7.1 中: AVCode…...
【STM32H743IIT6】STM32H7的ADC时钟频率设置问题 —— 网上大多文章未注意到的要点!
前言 我使用的是定时器触发ADC采样。最近在想达到ADC的最高采样率的时候,发现一直却卡在1Msps上不去,直到在硬汉嵌入式的论坛里才发现了答案:[ADC] STM32H743/H750的Y版和V版芯片ADC的主频区别 这篇文章就详细的讲一下这个问题,这…...
GGUF 文件格式全解析
在机器学习领域,模型的存储和部署一直是关键环节。随着大语言模型 (LLM) 的广泛应用,如何高效地存储和加载这些复杂的模型成为一个亟待解决的问题。GGUF(GGML Universal Format)作为一种新兴的二进制文件格式,旨在解决…...
剑指offer - 面试题11 旋转数组的最小数字
题目链接:旋转数组的最小数字 第一种:正确写法(num[m]和nums[r]比较) class Solution { public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * param nums int整型v…...
JNA基础使用,调用C++返回结构体
C端 test.h文件 #pragma oncestruct RespInfo {char* path;char* content;int statusCode; };extern "C" { DLL_EXPORT void readInfo(char* path, RespInfo* respInfo); }test.cpp文件 #include "test.h"void readInfo(char* path, RespInfo* respInfo…...
Typora的Github主题美化
[!note] Typora的Github主题进行一些自己喜欢的修改,主要包括:字体、代码块、表格样式 美化前: 美化后: 一、字体更换 之前便看上了「中文网字计划」的「朱雀仿宋」字体,于是一直想更换字体,奈何自己拖延症…...
计算机网络模型-TCP/IP协议簇
目录 1. OSI 参考模型 2. TCP/IP 5层协议簇 3. 数据传输过程 4. OSI模型vsTCP/IP模型 5. 工作设备和协议 1. OSI 参考模型 OSI 参考模型 OSI 参考模型 7层参考协议:同层使用相同协议,下层为上层提供服务 再往每一层填网络协议的时候,表…...
ros进阶——强化学习倒立摆的PG算法实现
项目地址:https://github.com/chan-yuu/cartpole_ws git clone https://github.com/chan-yuu/cartpole_ws依赖安装: xterm等 python3.8 torch等上一节中我们定义了很多ros工具,在这里我们将进行验证。 对于launch_robot_test.py来说&#x…...
BUU41 [GYCTF2020]FlaskApp1【SSTI】
题目: 加密处没啥事,但是解密的地方提交{{7*7}}就会返回报错界面,顺便把代码也爆出来了 text_decode base64.b64decode(text.encode()) 先将字符串 text编码为字节对象,然后使用 base64.b64decode 函数对这个字节对象进行 Base…...
pandas读取数据
pandas读取数据 导入需要的包 import pandas as pd import numpy as np import warnings import oswarnings.filterwarnings(ignore)读取纯文本文件 pd.read_csv 使用默认的标题行、逗号分隔符 import pandas as pd fpath "./datas/ml-latest-small/ratings.csv" 使…...
React + TypeScript 全栈开发最佳实践
React TypeScript 全栈开发最佳实践 一、环境搭建与项目初始化 node.js和npm的安装请参考我的文章。 1.1 脚手架选择与工程创建 # 使用Vite 5.x创建ReactTS项目(2025年主流方案) npx create-vitelatest my-app --template react-ts cd my-app npm in…...
RK3399 Android7双WiFi功能实现
在Android系统里面,WiFi功能STA和AP模式是互斥的,而现在越来越多的WiFi模组或者芯片能支持并发模式,即STA+P2P、STA+STA或者STA+AP模式组合。不管是单WiFi并发,还是双WiFi模组,想让STA和AP两个模式同时运行,对于Android7来说,是需要修改到系统源码,才能让APP层用Androi…...
前端包管理工具进化论:npm vs yarn vs pnpm 深度对比
前端包管理工具进化论:npm vs yarn vs pnpm 深度对比 一、工具定位与核心差异二、功能特性对比三、优缺点深度解析四、性能实测对比(示例数据)五、选型建议六、未来趋势 一、工具定位与核心差异 npm (Node Package Manager) Node.js 官方捆绑…...
绕过information_schema与order by注入以及seacsmv9注入
一:information_schema绕过 1,、sys数据库包含了许多视图,这些视图整合了来自information_schema和performance_schema的数据,攻击者可以利用这些视图来获取数据库结构信息。 -- 获取所有数据库名 SELECT DISTINCT table_schema FROM sys.schema_table_…...
在LangFlow中集成OpenAI Compatible API类型的大语言模型
一、背景与核心价值 从Dify换到这个langflow真的时各种的不适应啊。 就比如这个OpenAI Compatible API,这不应该是基本操作嘛? 算了,服了,习惯了就好了。咱闲言少叙,正片开始: LangFlow作为LangChain的可视化开发工具,其最大优势在于无需编写代码即可构建复杂的大模型…...
PING命令TTL解析
在 ping 命令中,TTL(Time to Live,生存时间) 是 IP 数据包的核心字段之一,用于控制数据包在网络中的生命周期。以下是针对 TTL 的简明解析: 1. TTL 的核心作用 防循环机制:TTL 是一个计数器&a…...
Hadoop 基础原理
Hadoop 基础原理 基本介绍Hadoop 的必要性Hadoop 核心组件Hadoop 生态系统中的附加组件 HDFSHDFS 集群架构HDFS 读写流程HDFS 写流程HDFS 读流程 NameNode 持久化机制 MapReduce底层原理示例 Hadoop 是一个由 Apache 基金会开发的分布式系统基础架构,主要解决海量数…...
蓝桥杯单片机基础部分——1.5基础模块代码升级
前言 之前的蓝桥杯单片机基础部分——1、基础模块代码发现有的同学不太会使,这样的话就给他们都封装一下函数,额外封装一下蜂鸣器和继电器,这就全了,到时候的逻辑只要没问题就没啥事了 LED灯模块 现在,给这里封装一个…...
PyTorch常用函数总结(持续更新)
本文主要记录自己在用 PyTorch复现经典模型 过程中遇到的一些函数及用法,以期对 常见PyTorch函数 更加熟练~ 官方Docs:PyTorch documentation — PyTorch 2.6 documentation 目录 数据层面 torch.sign(tensor) torch.tensor(np.eye(3)[y]) torch.on…...
Docker 常用命令大全
一、启动类 1. 启动 docker systemctl start docker 2. 关闭 docker systemctl stop docker 3. 重新启动 docker systemctl restart docker 4. docker 设置自启动 systemctl enable docker 5. 查看 docker 运行状态 systemctl status docker 6. 查看 docker 版本号等信息 docke…...
单片机裸机编程:状态机与其他高效编程框架
在单片机裸机编程中,状态机是一种非常强大的工具,能够有效管理复杂的逻辑和任务切换。除了状态机,还有其他几种编程模式可以在不使用 RTOS 的情况下实现高效的程序设计。以下是一些常见的方法: 1. 状态机编程 状态机通过定义系统…...
TCP,http,WebSocket
TCP(Transmission Control Protocol,传输控制协议)和HTTP(HyperText Transfer Protocol,超文本传输协议)都是网络通信中的重要协议,但它们在网络协议栈的不同层次上工作,各自负责不同…...
gotool在线工具集
1. 包含各种 sql 处理 2. 包含 json 处理 3. 包含 图片处理 4. 跨平台传输 gotool...
HBuilder X中,uni-app、js的延时操作及定时器
完整源码下载 https://download.csdn.net/download/luckyext/90430165 在HBuilder X中,uni-app、js的延时操作及定时器可以用setTimeout和setInterval这两个函数来实现。 1.setTimeout函数用于在指定的毫秒数后执行一次函数。 例如, 2秒后弹出一个提…...
ow rank decomposition如何用于矩阵的分解
1. 什么是矩阵分解和低秩分解 矩阵分解是将一个矩阵表示为若干结构更简单或具有特定性质的矩阵的组合或乘积的过程。低秩分解(Low Rank Decomposition)是其中一种方法,旨在将原矩阵近似为两个或多个秩较低的矩阵的乘积,从而降低复…...
2.3做logstash实验
收集apache日志输出到es 在真实服务器安装logstash,httpd systemctl start httpd echo 666 > /var/www/html/index.html cat /usr/local/logstash/vendor/bundle/jruby/2.3.0/gems/logstash-patterns-core-4.1.2/patterns/httpd #系统内置变量 cd /usr/local/…...
JAVAweb之过滤器,监听器
文章目录 过滤器认识生命周期FilterConfigFilterChain过滤器执行顺序应用场景代码 监听器认识ServletContextListenerHttpSessionListenerServletRequestListener代码 过滤器 认识 Java web三大组件之一,与Servlet相似。过滤器是用来拦截请求的,而非处…...
IO进程 day05
IO进程 day05 9. 进程9. 9. 守护进程守护进程的特点守护进程创建步骤 10. 线程10.1. 线程的概念10.2. 进程和线程的区别10.2. 线程资源10.3. 线程的函数接口1. pthread_create-创建线程线程函数和普通函数的区别 2. pthread_exit3.线程资源回收函数join和detach的区别 获取线程…...
Mac 散热救星:Macs Fan Control,让你的苹果电脑“冷静”又安静!
各位果粉们,是不是经常遇到这样的烦恼:用着用着电脑,突然就发热卡顿,风扇狂转噪音大得跟拖拉机似的?别担心,今天给大家安利一款超实用的软件 —— Macs Fan Control,它可是让苹果电脑“冷静”又…...
警惕将“数据标注”岗位包装为“大数据工程师”充数
数据标注(Data Annotation)是人工智能和大数据产业链中的基础性工作,其核心任务是为原始数据添加标签或注释,使计算机能够识别和学习数据中的特征,从而训练出更精准的机器学习或深度学习模型。以下是具体解析及它与“大…...
C语言 —— 此去经年 应是良辰好景虚设 - 函数
目录 1. 函数的概念 1.1 库函数 1.2 自定义函数 2. 形参和实参 3. return 语句 4. 数组做函数参数 5. 嵌套调用和链式访问 5.1 嵌套调用 5.2 链式访问 6. 函数的声明和定义 6.1 单个文件 6.2 多个文件 7. static 和 extern 7.1 static 修饰局部变量 7.2 static 修…...
最新前端框架选型对比与建议(React/Vue/Svelte/Angular)
前端框架选型对比与建议(React/Vue/Svelte/Angular) 一、核心框架技术特性对比(基于最新版本) 维度React 19 25Vue 3.5 12Svelte 5 25Angular 19 5核心理念函数式编程、JSX语法、虚拟DOM渐进式框架、组合式API、模板语法编译时框…...