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

Vue学习笔记 - 逻辑复用 - 组合式函数

昨天参加了次视频面试,慢慢可以查漏补缺,继续学习Vue相关的知识,考虑找个实际的开源项目。

逻辑复用

组合式函数

Vue 应用的概念中,“组合式函数”(Composables) 是一个利用 Vue 的组合式 API 来封装和复用有状态逻辑的函数。

无状态的逻辑:它在接收一些输入后立刻返回所期望的输出
有状态的逻辑:负责管理会随时间而变化的状态,比如跟踪当前鼠标在页面中的位置

鼠标跟踪器示例

直接使用

<script setup>
import { ref, onMounted, onUnmounted } from 'vue'const x = ref(0)
const y = ref(0)function update(event) {x.value = event.pageXy.value = event.pageY
}onMounted(() => window.addEventListener('mousemove', update))
onUnmounted(() => window.removeEventListener('mousemove', update))
</script><template>Mouse position is at: {{ x }}, {{ y }}</template>

组合式函数

// mouse.js
import { ref, onMounted, onUnmounted } from 'vue'// 按照惯例,组合式函数名以“use”开头
export function useMouse() {// 被组合式函数封装和管理的状态const x = ref(0)const y = ref(0)// 组合式函数可以随时更改其状态。function update(event) {x.value = event.pageXy.value = event.pageY}// 一个组合式函数也可以挂靠在所属组件的生命周期上// 来启动和卸载副作用onMounted(() => window.addEventListener('mousemove', update))onUnmounted(() => window.removeEventListener('mousemove', update))// 通过返回值暴露所管理的状态return { x, y }
}

在组件中使用的方式

<script setup>
import { useMouse } from './mouse.js'const { x, y } = useMouse()
</script><template>Mouse position is at: {{ x }}, {{ y }}</template>

可以嵌套多个组合式函数

// event.js
import { onMounted, onUnmounted } from 'vue'export function useEventListener(target, event, callback) {// 如果你想的话,// 也可以用字符串形式的 CSS 选择器来寻找目标 DOM 元素onMounted(() => target.addEventListener(event, callback))onUnmounted(() => target.removeEventListener(event, callback))
}
// mouse.js
import { ref } from 'vue'
import { useEventListener } from './event'export function useMouse() {const x = ref(0)const y = ref(0)useEventListener(window, 'mousemove', (event) => {x.value = event.pageXy.value = event.pageY})return { x, y }
}
异步状态示例

带参数的组合函数

未抽取组合函数前

<script setup>
import { ref } from 'vue'const data = ref(null)
const error = ref(null)fetch('...').then((res) => res.json()).then((json) => (data.value = json)).catch((err) => (error.value = err))
</script><template><div v-if="error">Oops! Error encountered: {{ error.message }}</div><div v-else-if="data">Data loaded:<pre>{{ data }}</pre></div><div v-else>Loading...</div>
</template>

抽取组合逻辑

// fetch.js
import { ref } from 'vue'export function useFetch(url) {const data = ref(null)const error = ref(null)fetch(url).then((res) => res.json()).then((json) => (data.value = json)).catch((err) => (error.value = err))return { data, error }
}

外部使用

<script setup>
import { useFetch } from './fetch.js'const { data, error } = useFetch('...')
</script>

类似网络请求的API封装

接收响应式状态

useFetch() 接收一个静态 URL 字符串作为输入——因此它只会执行一次 fetch 并且就此结束。如果我们想要在 URL 改变时重新 fetch 呢?为了实现这一点,我们需要将响应式状态传入组合式函数,并让它基于传入的状态来创建执行操作的侦听器。

传一个ref

const url = ref('/initial-url')const { data, error } = useFetch(url)// 这将会重新触发 fetch
url.value = '/new-url'

或者接收一个getter函数

// 当 props.id 改变时重新 fetch
const { data, error } = useFetch(() => `/posts/${props.id}`)

可以用 watchEffect()toValue() API 来重构我们现有的实现

// fetch.js
import { ref, watchEffect, toValue } from 'vue'export function useFetch(url) {const data = ref(null)const error = ref(null)const fetchData = () => {// reset state before fetching..data.value = nullerror.value = nullfetch(toValue(url)).then((res) => res.json()).then((json) => (data.value = json)).catch((err) => (error.value = err))}watchEffect(() => {fetchData()})return { data, error }
}

toValue() 使3.3版本新增的API。设计目的是将refgetter规范化为值

是一个分段函数

  1. 当参数是ref类型,返回ref的值
  2. 当参数是函数,调用函数并返回其返回值
  3. 返回原参数

watchEffectVue 3 引入的一个函数,它会立即执行传入的函数,并响应式地追踪函数内部依赖的所有响应式数据,这里就是会跟踪url的变化

小结

  1. 带实现带参数的响应式组合函数,可以传refgetter
  2. toValue函数可以接收静态 URL 字符串、refgetter
  3. watchEffect函数会立即执行传入的函数,并响应式的追踪函数内部依赖的所有响应式数据
约定和最佳实践
命名

组合式函数约定用驼峰命名法命名,并以“use”作为开头。

输入参数

即便不依赖于 refgetter 的响应性,组合式函数也可以接收它们作为参数。如果你正在编写一个可能被其他开发者使用的组合式函数,最好处理一下输入参数是 refgetter 而非原始值的情况。可以利用 toValue() 工具函数来实现:

import { toValue } from 'vue'function useFeature(maybeRefOrGetter) {// 如果 maybeRefOrGetter 是一个 ref 或 getter,// 将返回它的规范化值。// 否则原样返回。const value = toValue(maybeRefOrGetter)
}

为了正确追踪,请确保要么使用 watch() 显式地监视 refgetter,要么在 watchEffect() 中调用 toValue()

返回值

组合式函数始终返回一个包含多个 ref 的普通的非响应式对象,而不是reactive,这样该对象在组件中被解构为 ref 之后仍可以保持响应性

从组合式函数返回一个响应式对象会导致在对象解构过程中丢失与组合式函数内状态的响应性连接。与之相反,ref 则可以维持这一响应性连接。

ref() 与 reactive()

两者都用于跟踪其参数的更改。

不同之处

  1. ref()函数可以接受原始类型(最常见的是布尔值,字符串和数字)以及对象作为参数,而reactive()函数只能接受对象作为参数
  2. ref()有一个.value 属性,必须使用.value属性获取内容,但是使用reactive()可以直接访问
  3. 使用ref()函数可以替换整个对象实例,但是在使用reactive()函数时就不行

关于第2个的差异如下

// 有效
const x = reactive({ name: 'John'})
x.name = 'Amy'
// x => { name: 'Ammy' }// 有效
const x = ref({ name: 'John'})
x.value.name = 'Amy'
// x.value => { name: 'Ammy' }

第3点就是返回值用ref

// 无效 - x 的更改不会被 Vue 记录
let x = reactive({name: 'John'})
x = reactive({todo: true})// 有效
const x = ref({name: 'John'})
x.value = {todo: true}

我理解的就是把原始的数据给出去,交给接收者考虑就好

const mouse = reactive(useMouse())
// mouse.x 链接到了原来的 x ref
console.log(mouse.x)
副作用
  • 如果你的应用用到了服务端渲染 (SSR),请确保在组件挂载后才调用的生命周期钩子中执行 DOM 相关的副作用,例如:onMounted()。这些钩子仅会在浏览器中被调用,因此可以确保能访问到 DOM
  • 确保在 onUnmounted() 时清理副作用。举例来说,如果一个组合式函数设置了一个事件监听器,它就应该在 onUnmounted() 中被移除 (就像我们在 useMouse() 示例中看到的一样)。当然也可以像之前的 useEventListener() 示例那样,使用一个组合式函数来自动帮你做这些事
使用限制
  1. <script setup>setup() 钩子中被调用
  2. 同步
在选项式API中使用组合函数

组合式函数必须在 setup() 中调用,且其返回的绑定必须在setup()中返回

import { useMouse } from './mouse.js'
import { useFetch } from './fetch.js'export default {setup() {const { x, y } = useMouse()const { data, error } = useFetch('...')return { x, y, data, error }},mounted() {// setup() 暴露的属性可以在通过 `this` 访问到console.log(this.x)}// ...其他选项
}

参考

  1. Vue.js文档
  2. js 传递多个不定个数的参数应该怎么写
  3. vue watch 和 watchEffect的区别和用法
  4. Vue3: 如何在 ref() 与 reactive() 之间做正确选择?

相关文章:

Vue学习笔记 - 逻辑复用 - 组合式函数

昨天参加了次视频面试&#xff0c;慢慢可以查漏补缺,继续学习Vue相关的知识&#xff0c;考虑找个实际的开源项目。 逻辑复用 组合式函数 在 Vue 应用的概念中&#xff0c;“组合式函数”(Composables) 是一个利用 Vue 的组合式 API 来封装和复用有状态逻辑的函数。 无状态的…...

Caffeine的两种实现方式

咱们来具体对比一下你之前给的这段配置代码&#x1f447;&#xff1a; java Configuration EnableCaching public class CacheConfig { Bean public CacheManager cacheManager() { CaffeineCacheManager manager new CaffeineCacheManager("myCache"); manager.…...

单细胞Seurat标准分析流程R语言封装

单细胞Seurat标准分析流程R语言封装 数据预处理与质控(线粒体基因比例计算、QC图表生成)标准化与高变基因筛选PCA/UMAP降维与聚类分析 差异表达分析模块自动化输出PNG可视化图表(质控小提琴图、UMAP聚类图)结果将保存在results/和figures/目录下(RDS对象、差异基因CSV表格…...

MOS管的发热原因和解决办法

发热来源 如上图&#xff0c;MOS管的工作状态有4种情况&#xff0c;分别是开通过程&#xff0c;导通过程&#xff0c;关断过程和截止过程。 导致发热的损耗主要有两种&#xff1a;开关损耗、导通损耗。 导通损耗 导通损耗比较好计算&#xff0c;根据驱动电压VGS值可以得到MOS…...

航顺HK32M070电钻解决方案:驱动未来,掌控无限可能

一、市场规模与增长&#xff1a;电动工具行业持续扩容&#xff0c;电钻需求强劲 全球电动工具市场规模近年来保持稳定增长&#xff0c;2023年市场规模已达288.5亿美元&#xff0c;预计2024年将突破304.9亿美元&#xff0c;年复合增长率达6.9%。中国市场表现尤为亮眼&#xff0…...

关于nacos注册的服务的ip异常导致网关路由失败的问题

文章目录 关于nacos注册的服务的ip异常导致网关路由失败的问题相关处理方案为方案一:手动指定服务注册的 IP 地址方法二&#xff1a;设置优先使用的网络段方法三&#xff1a;指定网络接口方法四&#xff1a;忽略特定的网卡 备注 关于nacos注册的服务的ip异常导致网关路由失败的…...

UI测试流程与关键注意点解析

在当今以用户体验为核心的数字时代&#xff0c;用户界面(UI)作为软件与用户交互的直接窗口&#xff0c;其质量直接影响着产品的成败。UI测试作为软件测试的重要组成部分&#xff0c;确保应用程序不仅功能完善&#xff0c;而且在视觉呈现和交互体验上也能满足用户期望。 作为软…...

从零开始构建智能聊天机器人:Rasa与ChatGPT API实战教程

引言&#xff1a;AI对话系统的时代机遇 在数字化转型浪潮中&#xff0c;聊天机器人已成为连接用户与服务的关键纽带。无论是客服系统中的724小时即时响应&#xff0c;还是智能家居中的语音交互&#xff0c;聊天机器人正在重塑人机交互方式。本文将通过详细教程&#xff0c;手把…...

SSM aop切面编程的学习

面向切面的AOP编程的引入&#xff1a; 1. 代码缺陷 - 非核心代码对核心业务功能有干扰&#xff0c;导致程序员在开发核心业务功能时分散了精力 - 附加功能代码重复&#xff0c;分散在各个业务功能方法中&#xff01;冗余&#xff0c;且不方便统一维护&#xff01; 2. 解决思路 …...

Zen 5白色装机优选,华硕X870 AYW GAMING WIFI W主板来了!

华硕X870/X870E系列主板再次迎来新成员——华硕X870 AYW GAMING WIFI W主板正式发售&#xff01;专为追求高性价比游戏玩家而量身打造&#xff0c;延续AYW系列经典SPACE太空元素&#xff0c;配合大面积银白色散热装甲&#xff0c;打造出了极具金属质感和科技感的外观&#xff0…...

第Y1周:调用YOLOv5官方权重进行检测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 文章目录 1、前言2、下载源码3、运行代码 1、前言 YOLOv5分为YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x四个版本&#xff0c;这里以YOLOv5s为例。 2、下载源码 安…...

科技项目验收测试怎么做?验收测试报告如何获取?

科技项目从研发到上市需要一个很长的周期&#xff0c;并且在上市之前还有一个至关重要的交付过程&#xff0c;那就是项目验收&#xff0c;验收需要通过验收测试来呈现。科技项目验收测试是确保项目成功交付的关键步骤&#xff0c;那么是如何进行的呢?企事业单位想要获取科技项…...

C++笔记

C知识笔记 一、C概述 C是一种通用编程语言&#xff0c;它在C语言的基础上扩展而来&#xff0c;支持面向对象编程、泛型编程和过程化编程等多种编程范式。C具有高效、灵活、接近硬件等特点&#xff0c;广泛应用于系统软件、应用软件、嵌入式系统、游戏开发等领域。其强大的性能…...

国产Linux统信安装mysql8教程步骤

系统环境 uname -a Linux FlencherHU-PC 6.12.9-amd64-desktop-rolling #23.01.01.18 SMP PREEMPT_DYNAMIC Fri Jan 10 18:29:31 CST 2025 x86_64 GNU/Linux下载离线安装包 浏览器下载https://downloads.mysql.com/archives/get/p/23/file/mysql-test-8.0.33-linux-glibc2.28…...

如何应对“最后时刻任务堆积”(鼓包现象)

应对“最后时刻任务堆积”&#xff08;鼓包现象&#xff09;的方法包括&#xff1a;合理规划项目时间表、强化进度跟踪管理、明确任务优先级、有效的资源配置、提升团队沟通效率。其中&#xff0c;强化进度跟踪管理尤为关键。根据项目管理协会&#xff08;PMI&#xff09;的调查…...

C语言,原码、补码、反码

计算机是以补码来存储的 原码&#xff1a;正数最高位为&#xff1a;0&#xff1b;负数最高位为&#xff1a;1 &#xff08;最高位是符号位&#xff09; 正数&#xff1a;三码合一 如&#xff1a;2&#xff1a; 原码&#xff1a;0000 0000 0000 0000 0000 0000 0000 0010&#…...

Unifying Short and Long-Term Tracking with Graph Hierarchies—CVPR2023

Unifying Short and Long-Term Tracking with Graph Hierarchies 博客目录 Unifying Short and Long-Term Tracking with Graph Hierarchies摘要概况引言和相关介绍提出的观点 SUSHI核心构建跟踪图的层次结构构建分层剪辑分区 做第二个创新模块的需要将研究的重点从处理遮挡的问…...

深入解析 C# 中的模板方法设计模式

模板方法设计模式&#xff08;Template Method Pattern&#xff09;是行为型设计模式中的一种&#xff0c;它定义了一个操作中的算法框架&#xff0c;并允许子类在不改变算法整体结构的情况下&#xff0c;重新定义该算法的某些步骤。该模式通常用于类中包含一系列固定步骤的算法…...

0411 | 软考高项笔记:项目立项

在软考的项目管理知识体系中&#xff0c;技术可行性和经济可行性是项目立项阶段非常重要的两个分析维度。以下是对这两个考点的详细解释和记忆方法&#xff1a; 技术可行性分析 定义&#xff1a; 技术可行性分析是评估项目在现有技术条件和资源下是否能够成功实施。它主要回答…...

ubnetu 服务器版本常用端口和开放的端口对应的应用

1. 使用 netstat 查看端口与进程 netstat 是查看网络连接和监听端口的常用工具。通过以下命令可以列出所有开放的TCP/UDP端口及其关联的进程&#xff1a; sudo netstat -tulnp参数解析&#xff1a; -t&#xff1a;显示TCP端口。 -u&#xff1a;显示UDP端口。 -l&#xff1…...

【服务器端表单字符验证】

文章目录 一、实验目的二、核心代码实现三、调试关键问题四、总结 一、实验目的 掌握JSP表单验证在服务器端的实现技术&#xff0c;实现对用户输入字符的非空及长度为5的验证&#xff0c;返回对应提示信息并优化用户交互。 二、核心代码实现 前端表单 <form action"…...

pip 与 conda 的全面比较:Python 包管理的深度解析

在 Python 的生态系统中&#xff0c;包管理工具是开发者日常工作的重要组成部分。​其中&#xff0c;pip 和 conda 是最常用的两种包管理工具。​虽然它们在功能上有一些重叠&#xff0c;但在设计理念、功能范围、依赖管理、环境隔离等方面存在显著差异。​本文将从多个维度深入…...

GTID不一致修复

背景描述 GTID模式下&#xff0c;mysql主从切换后&#xff0c;主从同步报错 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION 1, but the master has purged bi…...

conda-pack打包环境到超算上。解决无法打包可编辑包

conda-pack 打包 使用 conda-pack 打包 Conda 环境可以将整个环境打包成一个独立的可移植压缩包&#xff0c;方便在其他机器上解压使用。以下是具体步骤&#xff1a; 1.安装 conda-pack 首先需要安装 conda-pack。你可以通过 conda 或 pip 安装&#xff1a; conda install …...

O(n)复杂度实现寻找数组第k小的数(快速选择算法)

非堆排序实现&#xff0c;利用快速排序思想实现的快速选择 package algorithm;public class Test {public int quickSelect(int nums[], int left, int right, int k){if (left right) return nums[left];int i left - 1, j right 1, x nums[left];while (i < j){do i…...

利用 RNN 预测股票价格:从数据处理到可视化实战

在金融领域&#xff0c;预测股票价格走势一直是众多投资者和研究者关注的焦点。今天&#xff0c;我们将利用深度学习中的循环神经网络&#xff08;RNN&#xff09;来构建一个简单的股票价格预测模型&#xff0c;并详细介绍从数据加载、预处理、模型搭建、训练到最终结果可视化的…...

前端从全链路角度分析性能

在面试中回答“从全链路角度分析性能优化”时,需覆盖用户请求到页面渲染的完整链路。以下是结构化回答框架,结合业界实践和最新优化策略: 一、网络传输优化 1. CDN与协议升级 ◦ 使用CDN缩短资源物理距离,结合HTTP/2/3的多路复用和头部压缩特性,提升资源加载效率(如We…...

2025年第十八届“认证杯”数学中国数学建模网络挑战赛【BC题】完整版+代码+结果

# 问题一&#xff1a;随机森林回归from sklearn.ensemble import RandomForestRegressormodel_rf RandomForestRegressor()model_rf.fit(X_train, y_train)# 问题二&#xff1a;LSTM时间序列预测from tensorflow.keras.models import Sequentialmodel_lstm Sequential()model…...

权限管控与数据安全:衡石ChatBot在钉钉中的合规部署指南

数据安全是ChatBot落地的第一道门槛 在数字化转型浪潮下&#xff0c;企业数据查询正从“专业BI工具”向“自然语言交互”跃迁。衡石ChatBot通过钉钉等企业IM工具&#xff0c;让业务人员以对话方式实时获取数据&#xff0c;极大提升了决策效率。然而&#xff0c;数据开放的同时…...

什么是生产管理看板?

简单来说,生产管理看板就是一种把生产过程“摆在明面上”的工具——它可能是贴在墙上的白板,也可能是车间里一块大屏幕,主要作用就是让生产信息一目了然。 这种看板广泛用在工厂、制造车间、或者办公室里,它把生产计划、任务进度、库存情况、设备状态等重要数据通通“晒”…...

YOLO学习笔记 | 一文详解YOLOv11核心创新与实践方法

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== YOLOv11核心创新与实践 一、架构创新1. ‌模块升级与参数优化‌2. ‌多…...

198. 打家劫舍:动态规划

前言 本篇文章来自leedcode&#xff0c;是博主的学习算法的笔记心得。 如果觉得对你有帮助&#xff0c;可以点点关注&#xff0c;点点赞&#xff0c;谢谢你&#xff01; 题目来源 198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 题目描述 思路 1.对于只有一个房间…...

算法基础模板

高精度加法 #include <bits/stdc.h> using namespace std; const int N10005; int A[N],B[N],C[N],al,bl,cl; void add(int A[],int B[],int C[]) {for(int icl-1;~i;i--){C[cl]A[i]B[i];C[cl1]C[cl]/10;C[cl]%10;}if(C[cl])cl; } int main() {string a,b;cin>>a&…...

【大模型LLM第十六篇】Agent学习之浅谈Agent loop的几种常见范式

anthropics agent https://zhuanlan.zhihu.com/p/32454721762 code&#xff1a;https://github.com/anthropics/anthropic-quickstarts/blob/main/computer-use-demo/computer_use_demo/loop.py sampling_loop函数 每次进行循环&#xff0c;输出extract tool_use&#xff0…...

[特殊字符] Spring Boot 日志系统入门博客大纲(适合初学者)

一、前言 &#x1f4cc; 为什么日志在项目中如此重要&#xff1f; 在开发和维护一个后端系统时&#xff0c;日志就像程序运行时的“黑匣子”&#xff0c;帮我们记录系统的各种行为和异常。一份良好的日志&#xff0c;不仅能帮助我们快速定位问题&#xff0c;还能在以下场景中…...

【模拟电路】隧道二极管

与标准二极管相比&#xff0c;隧道二极管通过使用具有令人难以置信的大掺杂水平的半导体物质来工作&#xff0c;导致p-n结之间的耗尽层变得比最快的硅二极管窄约1000倍。 一旦隧道二极管正向偏置&#xff0c;整个p-n结开始发生称为电子流“隧穿”的过程。  在测试隧道二极管的…...

qwen-vl 实现OCR的测试

OCR 技术是数字化时代必不可少的实用工具。以前都依赖专业的公司的专业软件才能完成。成本很高。也正因为如此&#xff0c;我国纸质资料的数字化并不普及。基于大模型的ORC 也许会改变这样的现状。 文本识别&#xff0c;也称为光学字符识别 (OCR)&#xff0c;可以将印刷文本或…...

3.0/Q2,Charls最新文章解读

文章题目&#xff1a;Exploring the association between socioeconomic inequalities in chronic respiratory disease and all-cause mortality in China: findings from the China Health and Retirement Longitudinal Study DOI&#xff1a;10.3389/fpubh.2024.1472074 中文…...

【大模型系列篇】基于Ollama和GraphRAG v2.0.0快速构建知识图谱

GraphRAG是一种结合了知识图谱和大型语言模型的检索增强生成&#xff08;RAG&#xff09;技术。它通过引入图结构化的知识表示和处理方法&#xff0c;显著提升了传统RAG系统的能力&#xff0c;为处理复杂和多样化数据提供了强有力的支持。更多介绍可以跳转《最强检索增强技术Gr…...

Wincc管对象的使用

Wincc管对象的使用 管对象的调用多边形管T形管双T形管管弯头管道大小调整 管对象的调用 打开【图形编辑器】 多边形管 多边形管如下&#xff1a; 一根管子的顶点数是两个&#xff0c;如果修改顶点数&#xff0c;管子就有多少个端点。 修改顶点数为5 此时点击端点然后拖动&#…...

springboot--页面的国际化

今天来实现页面中的国际化 首先&#xff0c;需要创建一个新的spring boot项目&#xff0c;导入前端模板&#xff0c;在我的博客中可以找到&#xff0c;然后将HTML文件放在templates包下&#xff0c;将其他的静态资源放在statics包下&#xff0c;如下图结构 页面的国际化主要在首…...

记 etcd 无法在docker-compose.yml启动后无法映射数据库目录的问题

1、将etcd 单独提取 Dockerfile #镜像 FROM bitnami/etcd:3.5.11 #名称 ENV name"etcd" #重启 ENV restart"always" #运行无权限 ENV ALLOW_NONE_AUTHENTICATION"yes" #端口 EXPOSE 2379 2380 #管理员权限才能创建数据库 USER root # 设置入口点…...

c++关键字new

链接&#xff1a;【C】C中的new关键字用法详解...

数字内容体验的核心价值是什么?

个性化推荐提升满意度 在数字内容体验的构建中&#xff0c;个性化推荐已成为提升用户满意度的核心策略。通过分析用户行为数据、偏好标签及场景特征&#xff0c;系统能够精准匹配内容资源&#xff0c;减少信息过载带来的决策疲劳。例如&#xff0c;基于用户画像的动态推荐算法…...

通过实施最小权限原则(POLP)来保护敏感数据

在处理机密信息时&#xff0c;应始终将确保组织的敏感数据安全放在首位。无论是制定新政策还是参与项目协作&#xff0c;都应采取一切必要预防措施&#xff0c;确保对任何敏感信息进行恰当的访问控制和存储管理。 最小权限原则(POLP)是企业保护客户与员工数据、财务记录、知识…...

VBA即用型代码手册:文档Document

我给VBA下的定义&#xff1a;VBA是个人小型自动化处理的有效工具。可以大大提高自己的劳动效率&#xff0c;而且可以提高数据的准确性。我这里专注VBA,将我多年的经验汇集在VBA系列九套教程中。 作为我的学员要利用我的积木编程思想&#xff0c;积木编程最重要的是积木如何搭建…...

【力扣hot100题】(089)最长有效括号

这题目真是越做越难了。 但其实只是思路很难想到&#xff0c;一旦会了方法就很好做。 但问题就在方法太难想了…… 思路还是只要遍历一遍数组&#xff0c;维护动态规划数组记录截止至目前位置选取该元素的情况下有效括号的最大值。 光是知道这个还不够&#xff0c;看了答案…...

为什么需要「实体识别」以及 RAG如何和实体识别结合用

&#x1f916; 为什么要做「实体识别」&#xff1f; 实体识别&#xff08;Named Entity Recognition, NER&#xff09; 是自然语言处理&#xff08;NLP&#xff09;中的一种基础技术&#xff0c;它的目标是&#xff1a; 从文本中识别出“有意义”的实体信息&#xff0c;如人名…...

初级社会工作者考试精选题库

通过练习题库中的题目&#xff0c;考生能了解考试的题型、难度分布以及命题规律&#xff0c;明确备考的重点和难点&#xff0c;有针对性地复习知识点&#xff0c;避免盲目备考。 精选练习题 1、社会工作者小王在为社区孤寡老人提供服务时&#xff0c;总是把他们当成自己的父母来…...

Transformer 训练:AutoModelForCausalLM,AutoModelForSequenceClassification

Transformer 训练:AutoModelForCausalLM,AutoModelForSequenceClassification 目录 Transformer 训练:AutoModelForCausalLM,AutoModelForSequenceClassification`AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)`功能概述参数解释`AutoModelForSequen…...