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

尚硅谷· vue3+ts 知识点学习整理 |14h的课程(持续更ing)

vue3

主要内容

核心:ref、reactive、computed、watch、生命周期

常用:hooks、自定义ref、路由、pinia、miit

面试:组件通信、响应式相关api

----> 笔记:ts快速梳理;vue3快速上手.pdf

笔记及大纲 如下:

目录

vue3

主要内容

1. 基础(p01-)

vue3介绍

2. 创造vue3工程

目录:

编写 App 组件

删掉 src,手写 src 的步骤:

3. vue3的核心语法

3.1 OptionsAPI 与 CompositionAPI

3.2  setup语法糖

3.3 响应式数据 ref、reactive

 ref ------>基本类型的响应式数据

reactive------>(只能定义)对象类型的响应式数据

ref---------->对象类型的响应式数据

总结:ref 对比 reactive(如何使用)

3.4 toRefs 与 toRef 解构赋值

3.5 computed 计算属性

3.6 watch 监视(重要)

情况一:监视【 ref 】定义的 【基本类型】

情况二: 监视 【ref 】定义的【对象类型】

 情况三:监视【reactive】定义的【对象类型】

情况四:监视【ref】或【reactive】定义的【对象类型】数据中的某个属性

深度监视

监听源

情况五: 监视上述多个数据


1. 基础(p01-)

vue3介绍

2020.9.18 vue3发布

本文按照,2023.10发布的公开版本 3.3.4 来讲解

特点:

- 性能提升打包体积减少、初次渲染更快、更新更快、内存减少

- 源码升级用 Proxy 代替defineProperty实现响应式重写虚拟DOM的实现和Tree-Shaking

- vue3 支持TypeScript

- 新特性

        - Composition API(组合式API):setup、ref 与 reactive、computed 与 watch

        - 内置组件:Fragment、Teleport、Suspense...

        - 其他改变:新的生命周期钩子、data 选项应始终被声明为一个函数;移除 keyCode 支持作为 v-on 的修饰符

2. 创造vue3工程

方法一:vue-cli 创建;方法二:vite 创建推荐

vite是新一代前端构建工具,优势:

- 轻量快速的热重载(HMR),极速服务启动。

- vite的构建速度,比 webpack快

- 真正的按需编译(见下图),不再等待整个应用编译完成。

-  对TypeScript、JSX、CSS等支持开箱即用

webpack构建vite构建 对比图如下:

webpack:从entry入口进去,分析route路由,分析模块module,处理Bundle,工程启动Server ready。(分析路由和模块耗时)

vite:server ready 项目启动,入口entry进去,看哪个路由和模块 则立刻处理,不看 则不处理。----> 构建快。

方法二:vite 构建 的具体操作(参考 vue3官方文档——快速上手)

①创建命令:

npm create vue@latest

②配置项目:名称、ts支持、jsx支持、router路由环境、pinia状态管理、vitest单元测试、end-to-end 端到端测试、eslint 语法检查、prettier 代码格式化

注:创建前,确保有后端 node环境,去官方下载(如果没有node 则没有npm)

如何判断:命令行,输入node,输出为版本号 则有;输出为不是内部命令 则无,去官网下载node安装,安装后重启电脑。

软件推荐:vscode

目录:

- .vscode/extensions.json  配置插件的文件夹(打开时,会推荐安装 配置的扩展文件,更便捷。可删)

- public/favicon.ico 页签图标

- src 工作成果(.js、.css、.vue的文件)

- env.d.ts (飘红是因为没有安装依赖,执行 npm i 安装所有依赖 即可解决。ts 不认识 txt 文件等,env.d.ts 把所有可能用的文件都做了声明

- index.html 入口文件(只是把这个文件呈现到页面中)(前端启动项目,查看 package.json包,运行 npm run dev

- package.json 和 package-lock.json 包管理文件/依赖声明文件

- README.md 简单的对工程进行分介绍

- tsconfig.json 和 tsconfig.app.json 和 tsconfig.node.json  ts的配置文件

- vite.config.ts 整个工程的配置文件(用途:安装插件、配置代理

- src/main.ts 


编写 App 组件

注:功能,添加这两插件(若已在 .vscode中 配置好插件,打开vscode后 将提示安装)

步骤:(创建前端应用,把app传进去,并挂载到 index.html 中的 id="app" 中)

1. index.html 引入 main.ts文件

2. main.ts 中,创建前端应用,并把 app 传进去,将其挂载到 index.html 中的 id="app" 上

3. 确定 index.html 中,id="app"(摆了花盆) + 引入 main.ts文件

src中

- main.ts 

- App.vue 组件(根)

- components 组件(树枝)


删掉 src,手写 src 的步骤

1. 先写main.ts

2. 写 App.vue(三个东西必须有)

问题:删掉src,ts 配置文件报错,找不到 src文件

解决:重新打开vscode应用;如果未能解决,可以等代码写完,自然就好了。


3. vue3的核心语法

3.1 OptionsAPI 与 CompositionAPI

3.2  setup语法糖

vue2中

- 不可以有多个根标签

- 通过 data(){..} 存放数据,methods: {} 方法

setup中

- setup函数中的 this 是 undefined

- vue2中的选项式的语法,可以与vue3的setup语法共存

- 旧写法可以读取setup的数据,setup语法不能读取旧写法(data、methods)的数据

- vue2的setup函数中,数据和方法要 return{} 交出去

- 执行周期:先 setup,再 beforeCreate 建立。

- 直接写在 setup中的数据,不是响应式的。

- setup 返回值,可以直接指定渲染内容(return ()=>'哈哈')

 两个 script(一个配置名,一个配置组合式api),要为同一种语言,如 lang="ts"

<script setup>语法糖

配置名 可以通过插件完成

①终端中:npm i vite-plugin-vue-setup-extend -D

vite.config.ts 中,添加

import VueSetupExtend from 'vite-plugin-vue-setup-extend'

export default defineConfig({

        plugins: [

                VueSetupExtend(),

        ]

})

③修改完重新运行开发服务器(ctrl+c 终止,npm run dev 重新运行)

④这时候,可以在 <script setup name="Person1233"> 直接写 name 

3.3 响应式数据 ref、reactive

vue2中,data中的即是响应式数据(里头做了,数据代理数据劫持

vue3中,两种方式可以做响应式数据:ref 和 reactive

 ref ------>基本类型的响应式数据

想让哪个数据为响应式,则拿 ref('xxx') 包一下

特点:ref 是函数;传递一个初始化数据;是会发生变动的数据。

返回值:是 RefImpl的实例对象,其 不带_ 是给我们用的。

使用时:模板中使用时不需要.value(它自动添加了);js中使用时要添加 .value 

reactive------>(只能定义)对象类型的响应式数据

用 reactive({ 对象 })  包裹

reactive 返回值是Proxy代理对象,(返回结果是响应式的),其 Target为 数据内容。

reactive是深层次的,reactive包裹对象,如a.b.c

注:

  • 使用 v-fo r中,key是每个节点的唯一标识,:key="xx.id" 中的冒号: 是将其用 js 表达式 来解析,其完整的指令是 v-bind:key="xx.id"
  • 选中,直接按圆括号,直接包起来了。
ref---------->对象类型的响应式数据

ref 也可以定义对象类型的数据,ref 定义对象 底层还是通过 reactive 实现

数组对象,要先 .value,再 [ ]

总结:ref 对比 reactive(如何使用)

ref,必须使用.value(可以用 插件Volar,自动添加.value

reactive的局限性,重新分配对象,则失去响应式。

解决:(法一:可以使用 Object.assign(obj1,obj2,obj3) 分配,将obj1后面添加obj2,在添加obj3;法二:可以用ref,但要加 .value,因为.value必然是响应式的)

使用原则:

- 基本类型--------------------------> 必用 ref

- 对象类型,层级不深-----------> ref、reactive都可

- 对象类型,且层级较深--------> reactive

3.4 toRefs 与 toRef 解构赋值

原先,解构传来的,不是响应式的数据。要添加 let { 数据1,数据2 } = toRefs(对象) 

toRefs、toRef把一个响应式对象的东西,解构拿出来,且同时具备响应式能力

解构出来的返回值是 ObjectRefImpl (ref 定义的响应式数据)

3.5 computed 计算属性

应用场景:实现输出双向绑定-------》要求首字符大写(大量使用模板插值,模板不简单了/模板太复杂了,在模板里计算,未做到结构和交互分离)------------》使用计算属性。

 模板太复杂了,这时可以使用计算属性 computed。

计算属性的特点:

-  ①computed 依赖的数据只要发生变化,它就会重新计算

-  ②计算属性有缓存,方法没有缓存。

-        ③计算属性的 返回值是 ComputedRefml(ref 的响应式数据)

-        ④计算属性,是只读的。可读可写要加 get、set

① computed 依赖的数据发生变化,计算属性会重新计算

④计算属性中,写 get、set 函数,才可以可读可写

3.6 watch 监视(重要)

作用:监视数据的变化(vue2和vue3的作用一样)

watch 的特点:

-        watch中 不需要添加 .value.(可以一用Volar插件,自动带.value)

-        watch 调用有返回值,是一个函数。(停止监视)

watch的参数:

-        第一个参数是:被监视的数据

-        第二个参数是:监视的回调

-        第三个参数是: 配置对象(deep、immediate等等)

四种变化:

-        ① ref 定义的数据

★情况一:监视【 ref 】定义的 【基本类型】

watch(对象,回调函数)

情况二: 监视 【ref 】定义的【对象类型】

监视 ref 定义的 【对象类型】数据,监视的是对象的地址值

若想监视对象内部属性的变化,需要开启深度监视。(watch的第三个参数,配置deep:true)

watch第三个参数:配置对象(如 深度监视 deep立即执行 immediate 等等)

①(原先)只监视整个对象发生变动

② 加上 { deep: true }  ,可以监视对象内部的属性变化

 ③ 新值和旧值

-        如果只是改对象的属性,新旧值是同一个

-        如果整个对象换了,新旧值是不同的值

-        如果只写一个就是 新值,一般不管旧值

 情况三:监视【reactive】定义的【对象类型】

reactive】 定义的【对象类型】数据,  且默认开启了深度监视深度监视不可关闭隐式的开启了深度监听。)

------》对 对象内部的属性 也进行了监视。

reactive 定义的 对象,不可整体对对象修改,要用  Object.assign(对象,{...})   ,替换内容(属性名相同,值覆盖了)( Object.assign(对象,{...})  未创建新对象)。

★情况四:监视【ref】或【reactive】定义的【对象类型】数据中的某个属性
  1. 若该属性 是 基本类型(不是对象类型),要写成函数形式(可以用箭头函数)
  2. 若监视的对象的某个属性依然是 【对象类型】,可以直接写(属性),也可写成函数建议写成函数

★ 结论: 监听的要是对象里的属性,最好写函数式,注意点:若是对象监听的是地址值,要关注对象内部,需要手动开启深度监听

监听对象的某属性的最佳实践监听源 函数式】+【深度监听

-        监听源,写 函数式(函数式,监听的是对象的地址值)----> 监听整个对象

-        加 深度监听-------------------------------------------------------------> 监听对象内部的属性


具体的: 

1. 若该属性 是 基本类型(不是对象类型),要写成函数形式(可以用箭头函数)

2. 若监视的对象的某个属性依然是 【对象类型】,可以直接写(属性),也可写成函数建议写成函数

        ① 监听源,直接写 属性

        存在问题:

        -        修改前两个,可以成功监听;

        -        但是修改整个对象时,控制台没有输出,未能成功监听。(即使加上深度监听,也无济于事)

 因为当监视整个对象时,监视的对象被重新赋值新的对象,被覆盖了,即 监视的对象被删了,此时,监视整个对象已不存在,监视失败。

深度监视

注: 一般,什么时候开启深度监视

-        本来是 监视地址值

-        当想要让其 监视内部细节(属性)时,开启深度监视

 ② 监听源,写成函数式

-        监听源写成函数式(监听的是 对象的地址值)-----------> 整个对象可以监听

-        内部属性不被监听 

监听源

无效监视源:非  getter函数、ref、reactive、以上组成的数组类型

(getter函数:能返回一个值的函数)

 

 ★监听的源 必须是: getter函数(返回一个值的)、ref、reactive、以上值 组成的数组类型。

情况五: 监视上述多个数据

-        监视源,数组,可监视数组中多个数据

-        例子,监视 某对象中的属性: ①属性为【基本类型】,要用 【函数式】;②属性为【对象类型】,可以用【直接写】,也可以用函数式。--->即,情况四

-        监视的是整个数组新值、旧值也是整个数组

如,监视对象中的某个属性:

因为,① name和c1都是普通字符串,即 基本类型 ---------->所以,监视源要用 函数式

② 监视的属性是【对象类型】----> 可以 【直接写】

 

tips:watch特别重要,响应式数据、计算属性写得好,写功能基本没太大问题。有问题的话,有时候可能是时机不对,即 生命周期不对。

 3.7 watchEffect 

watch 与 watchEffect 的区别:

-        watch 需要明确指出要监听的数据

-        watchEffect 无需明确指出要监视的对象,它会自动分析监听的对象 / 谁要监听)

3.8 标签的 ref 属性

作用:用于注册模板引用,即 给节点打标识

两种情况:

-        ① 用在【普通 DOM 标签】(即【 html标签】)上-----> 获取的是 DOM 节点

-        ② 用在【组件标签】上 ------> 获取的是 【组件实例对象】,其数据是隐藏的-------> 要显示数据,将其暴露出去(做法:子组件中引入 de)

① ref 加在【html标签】上

标签的 ref 属性:创建一个xxx,用于存储 ref 标记的内容

ref 加在【组件标签】上(即 【.vue文件】)

------> 返回值的数据隐藏,它返回的是一个实例对象

------> 解决:显示数据,在子组件中 引入 deExpose 并将要显示的数据 暴露出来(做法:引入 defineExpose,最后返回 defineExpose({ 数据1, 数据2, 数据2...})

具体内容:

大部分都加在 html标签上,而不加在组件标签上

 

 因为加在组件标签上,只显示组件的实例对象,不显示具体的数据内容,子组件内部的数据被隐藏了(这是种保护措施)

 

解决: 引入 defineExpose,最后返回 defineExpose({ 数据1, 数据2, 数据2...})

 

局部样式

css中有 scoped,则是局部样式。

vue2写法如何改vue3:

在 script 标签中,

-        加 setup

-        加 name="" (采用了插件组件别名简写)

在 script 标签内,

-        去掉整个 export default,以及内部的组件名和注册组件

注:为何不需要另外注册组件?因为 import 引入组件 时,会自动 return ,return后 就可以直接用了。

相关文章:

尚硅谷· vue3+ts 知识点学习整理 |14h的课程(持续更ing)

vue3 主要内容 核心&#xff1a;ref、reactive、computed、watch、生命周期 常用&#xff1a;hooks、自定义ref、路由、pinia、miit 面试&#xff1a;组件通信、响应式相关api ----> 笔记&#xff1a;ts快速梳理&#xff1b;vue3快速上手.pdf 笔记及大纲 如下&#xff…...

【JAVA】Java开发小游戏 - 简单的2D平台跳跃游戏 基本的2D平台跳跃游戏框架,适合初学者学习和理解Java游戏开发的基础概念

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c; 忍不住分享一下给大家。点击跳转到网站 学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把…...

C++ constexpr(八股总结)

答&#xff1a;这个关键字用于指示一个变量、函数或者对象可以在编译时求值&#xff08;即它们是常量表达式&#xff09;。这意味着当程序编译时&#xff0c;编译器会尝试计算出该表达式的值&#xff0c;而不是在程序运行时计算它&#xff0c;从而提高了程序的性能。 常量表达…...

继承(5)

大家好&#xff0c;今天我们继续来学习继承的相关知识&#xff0c;来看看子类构造方法&#xff08;也叫做构造器&#xff09;是如何做的。 1.6 子类构造方法 父子父子,先有父再有子,即:子类对象构选时,需要先调用基类构造方法,然后执行子类的构造方法 ★此时虽然执行了父类的…...

Oracle Dataguard(主库为 RAC 双节点集群)配置详解(1):安装 Oracle11g RAC 双节点集群

Oracle Dataguard&#xff08;主库为 RAC 双节点集群&#xff09;配置详解&#xff08;1&#xff09;&#xff1a;安装 Oracle11g RAC 双节点集群 目录 Oracle Dataguard&#xff08;主库为 RAC 双节点集群&#xff09;配置详解&#xff08;1&#xff09;&#xff1a;安装 Orac…...

基于Matlab的变压器仿真模型建模方法(13):单相升压自耦变压器的等效电路和仿真模型

1.单相升压自耦变压器的基本方程和等效电路 单相升压自耦变压器的接线原理图如图1所示。在建立自耦变压器的基本方程时,仍然把它看成是从双绕组变压器演变而来。在图1中,设节点a到节点b部分的绕组的匝数为,对应于双绕组变压器的原边绕组;节点c到节点a部分的绕组的绕组匝数为…...

ffmpeg 常用命令

更详细请参考ffmpeg手册&#xff0c;下载ffmpegrelease版后在doc中就有&#xff0c;主页面。video filter 参考ffmpeg-filters.html -version -formats -demuxers -protocols -muxers -filters -devices —pix_fmts -codecs -sample_fmts -decoders -layouts -encoders -colors…...

c#集成itext7导出pdf,包含表格

在Nuget解决方案中搜索itext7&#xff0c;进行安装 同时还要安装 itext7.bouncy-castle-adapter。 否则 PdfWriter writer new PdfWriter(pdfOutputPath);执行时会报错unknown PdfException&#xff0c;然后生成一个空白的pdf&#xff0c;且显示已损坏。 捕获异常发现 ex.In…...

STM32-WWDG/IWDG看门狗

WWDG/IWDG一旦开启不能关闭&#xff0c;可通过选项字节在上电时启动硬件看门狗&#xff0c;看门狗计数只能写入不能读取。看门狗启用时&#xff0c;T6bit必须置1&#xff0c;防止立即重置。 一、原理 独立看门狗-超时复位 窗口看门狗-喂狗&#xff08;重置计数器&#xff0c;…...

后台管理系统引导功能的实现

引导是软件中经常见到的一个功能&#xff0c;无论是在后台项目还是前台或者是移动端项目中。 那么对于引导页而言&#xff0c;它是如何实现的呢&#xff1f;通常情况下引导页是通过 聚焦 的方式&#xff0c;高亮一块视图&#xff0c;然后通过文字解释的形式来告知用户该功能的作…...

Flink如何设置合理的并行度

一个Flink程序由多个Operator组成(source、transformation和 sink)。 一个Operator由多个并行的Task(线程)来执行, 一个Operator的并行Task(线程)数目就被称为该Operator(任务)的并行度(Parallel)。即并行度就是相对于Operator来说的。 合理设置并行度可以有效提高Flink作业…...

【JMeter】单接口

1. HTTPS接口 前置准备: ​​​​​​​下载被测网站的证书在cmd利用java工具keytool.exe重新生成store证书 先进入存放该程序的盘 使用命令: keytool -import -alias "xxxx.store" -file "D:\xxx.cer" -keystore xx.store 根据提示信任证书 在JMeter菜…...

安科瑞Acrel-1000DP分布式光伏监控系统在浙江安吉成3234.465kWp分布式光伏发电项目中的应用

摘 要&#xff1a;分布式光伏发电站是指将光伏发电组件安装在用户的建筑物屋顶、空地或其他适合的场地上&#xff0c;利用太阳能进行发电的一种可再生能源利用方式&#xff0c;与传统的大型集中式光伏电站相比&#xff0c;分布式光伏发电具有更灵活的布局、更低的建设成本和更高…...

电子应用设计方案87:智能AI收纳箱系统设计

智能 AI 收纳箱系统设计 一、引言 智能 AI 收纳箱系统旨在为用户提供更高效、便捷和智能的物品收纳与管理解决方案&#xff0c;通过融合人工智能技术和创新设计&#xff0c;提升用户的生活品质和物品整理效率。 二、系统概述 1. 系统目标 - 实现物品的自动分类和整理&#xf…...

C++泛型编程:多参数函数模版、动态数组类

在多参数函数模版中&#xff0c;有以下几点&#xff1a; 第一点是函数模版支持多个类型参数 第二点是一旦有类型不能推导&#xff0c;就会导致编译失败 第三点是返回值类型无法作为推导依据 其中第二点和第三点&#xff0c;在下面代码中有体现&#xff0c;首先是第三点&…...

点亮一个esp32 的led

最近入了一个ESP32 兄弟们&#xff0c;这玩意还可以&#xff0c;买来肯定是给它点亮啊对吧 我就是点灯侠&#x1f387; &#x1f62d;千万不要不接天线啊&#xff0c;不然你会一直找不到你的wifi 1.点灯第一步你得有IDE Arduino 就是这个绿东西 可是怎么下载安装呢&#xff…...

【计算机视觉】单目深度估计模型-Depth Anything-V2

概述 本篇将简单介绍Depth Anything V2单目深度估计模型&#xff0c;该模型旨在解决现有的深度估计模型在处理复杂场景、透明或反射物体时的性能限制。与前一代模型相比&#xff0c;V2版本通过采用合成图像训练、增加教师模型容量&#xff0c;并利用大规模伪标签现实数据进行学…...

新年感悟:2025年1月7日高铁随想

2025年1月7日&#xff0c;乘坐在从珠海去广州南的C7676高铁上&#xff0c;突然悟明白两个事情。 首先&#xff0c;不管学习任何东西&#xff0c;总结是一个非常关键的经验。以前&#xff0c;总是幻想着能找到一本书&#xff0c;或者一个特别优秀的老师&#xff0c;仅仅通过看看…...

C++ 入门第25天:线程池(Thread Pool)基础

往期回顾&#xff1a; C 学习第22天&#xff1a;智能指针与异常处理-CSDN博客 C 入门第23天&#xff1a;Lambda 表达式与标准库算法入门-CSDN博客 C 入门第24天&#xff1a;C11 多线程基础-CSDN博客 C 入门第25天&#xff1a;线程池&#xff08;Thread Pool&#xff09;基础 前…...

嵌入式驱动开发详解10(MISC杂项实现)

文章目录 前言MISC设备驱动简介重要结构体API函数MISC实现框架后续参考文献 前言 MISC 驱动也叫做杂项驱动&#xff0c;也就是当我们板子上的某 些外设无法进行分类的时候就可以使用 MISC 驱动。MISC 驱动其实就是最简单的字符设备驱 动&#xff0c;通常嵌套在 platform 总线驱…...

CSS语言的编程范式

CSS语言的编程范式 前言 随着互联网的快速发展&#xff0c;前端开发逐渐演变为一个复杂而多元化的领域。作为前端开发的重要组成部分&#xff0c;CSS&#xff08;层叠样式表&#xff09;在网页设计和用户体验中扮演着至关重要的角色。CSS不仅仅是一种样式表语言&#xff0c;更…...

游戏引擎学习第77天

仓库: https://gitee.com/mrxiao_com/2d_game 回顾昨天的 bug 今天我们继续开发进度&#xff0c;进行调试昨天代码的问题&#xff0c;主要是关于如何跟踪玩家和敌人在世界中的高度位置。虽然我们做的是一款 2D 游戏&#xff0c;但我们希望能够处理多层的房间&#xff0c;玩家…...

Python编程实例-机器学习中的Hinge Loss编程实现

机器学习中的Hinge Loss编程实现 文章目录 机器学习中的Hinge Loss编程实现1、机器学习中的损失函数是什么?2、什么是 Hinge Loss?3、Hinge Loss如何工作?4、Hinge Loss的优缺点5、Python语言实现6、总结Hinge Loss(铰链损失)在分类任务中至关重要,广泛应用于支持向量机 …...

算法练习----2025/1/7

题目 计算素数函数f(N)代表素数的个数小于等于N例如 f(17)7 , 因为前7个素数为 2&#xff0c;3&#xff0c;5&#xff0c;7&#xff0c;11&#xff0c;13&#xff0c;17思路 1、首先创建一个布尔类型的数组&#xff08;Python 中用列表模拟&#xff09;来标记每个数是否为素…...

【C++】穿越编程岁月,细品C++进化轨迹,深化入门基石(续章)——揭秘函数缺省参数的魅力、函数重载的艺术、引用的奥秘与内联函数的效率

文章目录 一、函数缺省参数二、函数重载三、引用1.引用的概念和定义2.引用的特性3.引用的使用4.const引用5.指针和引用的关系 四、inline内联函数和nullptr1.inline2.nullptr 一、函数缺省参数 缺省参数其实就是默认参数&#xff0c;它是声明或定义函数时为函数的参数指定⼀个缺…...

1/7 Spring三级缓存

首先我们来spring创建bean首先通过反射创建bean原始对象&#xff0c;然后通过 填充里面的属性&#xff0c;然后如果有AOP的话&#xff0c;那么就会创建这个代理对象&#xff0c;最后将代理对象传入这个单例池中 如何解决循环依赖问题的 比如A依赖B,B依赖A 如果在单例池没有找…...

【RK3568笔记】Android修改开机动画

概述 Android 的开机动画是由一系列连续的 PNG 图片作为帧组成的动画形式&#xff0c;不是一张 GIF 图片。将各帧 PNG 图片以压缩方式进行保存&#xff08;压缩方式要求是存储压缩&#xff09;&#xff0c;并将保存的文件名命名为 bootanimation.zip&#xff0c;这个 bootanim…...

牛客网刷题 ——C语言初阶(5操作符)——JZ15 二进制中1的个数

1.题目描述 题目OJ链接 描述 输入一个整数 n &#xff0c;输出该数32位二进制表示中1的个数。其中负数用补码表示。 2.思路 求2进制中1的个数&#xff0c;可以转换为求每一位&#xff0c;1的个数&#xff0c;1&1还是1 所以判断如果该数值&1为真&#xff0c;我们就co…...

Lua语言中常用的字符串操作函数

string.sub(s, i, j) 功能: 截取字符串 s 中从位置 i 到位置 j 的子字符串。 local s "Hello, Lua!" print(string.sub(s, 1, 5)) -- 输出 "Hello" print(string.sub(s, 8, 11)) -- 输出 "Lua!" string.len(s) 功能&#xff1a;将字符串长度…...

SpringBoot 2.6 集成es 7.17

引言 在现代应用开发中&#xff0c;Elasticsearch作为一个强大的搜索引擎和分析引擎&#xff0c;已经成为许多项目不可或缺的一部分。Spring Boot作为Java生态中最受欢迎的微服务框架之一&#xff0c;其对Elasticsearch的支持自然也是开发者关注的焦点。本文将详细介绍如何在S…...

Elasticsearch:搜索相关性

这里写目录标题 一、相关性的概述二、自定义评分策略1、TF-IDF算法2、BM25算法 三、自定义评分策略1、Index Boost&#xff1a;在索引层面修改相关性2、boosting&#xff1a;修改文档相关性3、negative_boost&#xff1a;降低相关性4、function_score&#xff1a;自定义评分5、…...

nlp培训重点-2

1. 贝叶斯公式 import math import jieba import re import os import json from collections import defaultdictjieba.initialize()""" 贝叶斯分类实践P(A|B) (P(A) * P(B|A)) / P(B) 事件A&#xff1a;文本属于类别x1。文本属于类别x的概率&#xff0c;记做…...

Python判断、循环练习

01 02 03...

基于ROS先验地图的机器人自主定位与导航SLAM

2021年学习&#xff0c;当时参加科大讯飞的智能车大赛&#xff0c; 【语音交互启动-teb算法路径规划A*算法自动避障路径最短优化yolo5目标检测视觉结果判断分类终点指定点位自动泊车语音播报。】 【讯飞学院】http://www.iflyros.com/home/ 一、全局路径规划中的地图 栅格地图&…...

计算机网络与服务器

目录 架构体系及相关知识 三层架构&#xff1a; 四层架构&#xff1a; 常见的应用的模式&#xff1a; OSI模型 分层 数据链路层 TCP/IP模型 TCP和UDP都是传输层的协议 TCP三次握手、四次次分手 URL&HTTP协议详解 网址URL 结构化 报文行 报文头 空行 报文体…...

IP查询于访问控制保护你我安全

IP地址查询 查询方法&#xff1a; 命令行工具&#xff1a; ①在Windows系统中&#xff0c;我们可以使用命令提示符&#xff08;WINR&#xff09;查询IP地址&#xff0c;在弹窗中输入“ipconfig”命令查看本地网络适配器的IP地址等配置信息&#xff1b; ②在Linux系统中&…...

在 ASP.NET CORE 中上传、下载文件

创建 Web API 来提供跨客户端和服务器的文件上传和下载是常有的事。本文将介绍如何通过 ASP.NET CORE 来实现。 首先在 Visual Studio 中创建空的 Web API 项目&#xff0c;然后选择目标框架 .Net Core 3.1。 创建名为 FileController 的控制器&#xff0c;提供操作文件的接口…...

ETCD未授权测试

一、测试环境搭建 首先拉取etcd镜像 docker pull quay.io/coreos/etcd:v3.3.1 # 查看镜像 docker images创建自定义网络 docker network create --driver bridge --subnet172.16.1.0/16 --gateway172.16.1.1 mynet # 查看网络 docker network ls创建etcd节点 节点1: docke…...

ffmpeg将mp4等文件转mp3

安装ffmpeg 目录 安装ffmpeg macOS Windows 实现方法 Base Golang macOS 在macOS上,你可以使用Homebrew来安装FFmpeg,这是最简单和推荐的方法。以下是具体步骤: ‌安装Homebrew‌(如果尚未安装): 打开终端,执行以下命令来安装Homebrew: /bin/bash -c "$(c…...

python学习笔记—15—数据容器之列表

1. 数据容器 列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict) 2. 列表 (1) 定义 tmp_list ["super", "carry", "doinb"] print(f"tmp_list {tmp_list}, tmp_list type is {type(tmp_list)}") tmp_list1 ["doi…...

基于MATLAB的汽车热管理模型构建

一、引言 汽车热管理系统对汽车性能、部件寿命及驾乘体验至关重要。它能确保发动机、电池等关键部件在适宜温度工作。MATLAB 功能强大&#xff0c;为构建高精度热管理模型提供有效途径&#xff0c;助力优化系统设计与控制策略。 二、汽车热管理系统构成 2.1 发动机冷却系统&…...

MySQL的主从复制

MySQL 主从复制详解 MySQL 的主从复制是一种用来实现数据同步的机制&#xff0c;可以将一个 MySQL 实例的数据同步到一个或多个从库&#xff08;Slave&#xff09;实例中。它广泛应用于数据备份、高可用架构、读写分离、负载均衡等场景。 1. 主从复制的基本概念 主库&#xff…...

playwright 录制

一、新建项目TestProject3 二、准备swagger 三、开始录制 打开PowerShell 7 (x64) cd D:\xxx\xxx\VS2022Projects\TestProject3\TestProject3\bin\Debug\net8.0 pwsh playwright.ps1 codegen --targetcsharp -b chromium localhost:5252/swagger/index.html #支持的语言 java…...

Azure主机windows2008就地升级十步

Azure上云主机的windows2008系统需要进行就地升级。 按着微软的升级路径&#xff1a;win2008-->win2012-->win2016-->win2022 第一步&#xff1a;创建快照备份&#xff0c;防止升级失败第二步&#xff1a;升级托管磁盘&#xff0c;在VM管理的地方将磁盘升级成托管磁盘…...

MySQL 主从复制 的原理、配置和如何实现 主从灾备

1. MySQL 主从复制原理与工作流程 MySQL 的主从复制本质上是一个 基于事件的日志传输系统。在这个系统中&#xff0c;所有对数据的修改&#xff08;如 INSERT、UPDATE 和 DELETE&#xff09;会在 主数据库 上记录到 二进制日志&#xff08;binlog&#xff09;&#xff0c;然后…...

本地多卡(3090)部署通义千问Qwen-72B大模型提速实践:从龟速到够用

最近在做文本风格转化&#xff0c;涉及千万token级别的文本。想用大模型转写&#xff0c;在线的模型一来涉及数据隐私&#xff0c;二来又不想先垫钱再找报销。本地的7-9B小模型又感觉效果有限&#xff0c;正好实验室给俺配了4卡3090的机子&#xff0c;反正也就是做个推理&#…...

高级数据库系统 复习提纲

第一章 数据库技术的回顾与发展 简述三代数据库的发展历史及其对应特点&#xff1a; 新型数据库在“数据模型”上的创新&#xff1a; 简述数据库和什么相关技术结合&#xff0c;产生了什么新型数据库&#xff1f; 1. 数据库和并行处理技术结合&#xff0c;产生“并行数据库”…...

Python编程实例-特征向量与特征值编程实现

特征向量与特征值编程实现 文章目录 特征向量与特征值编程实现1、什么是特征向量2、特征向量背后的直觉3、为什么特征向量很重要?4、如何计算特征向量?4、特征向量Python实现5、可视化特征向量6、总结线性代数是许多高级数学概念的基石,广泛应用于数据科学、机器学习、计算机…...

十年后LabVIEW编程知识是否会过时?

在考虑LabVIEW编程知识在未来十年内的有效性时&#xff0c;我们可以从几个角度进行分析&#xff1a; ​ 1. 技术发展与软件更新 随着技术的快速发展&#xff0c;许多编程工具和平台不断更新和改进&#xff0c;LabVIEW也不例外。十年后&#xff0c;可能会有新的编程语言或平台…...

第6章——HTTP首部

第六章——HTTP首部 HTTP报文结构 ​ 都必有报文首部 HTTP请求报文 HTTP响应报文 HTTP首部字段 ###传递重要信息 首部字段结构 ​ 首部字段名&#xff1a;字段值&#xff08;&#xff0c;字段值&#xff0c;字段值&#xff09; 首部字段类型 ​ 通用首部字段 请求首部字…...