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

《Vue3 二》Vue 的模板语法

在 React 中,想要编写 HTML,是使用 JSX,之后通过 Babel 将 JSX 编译成 React.createElement 函数调用;在 Vue 中,也支持 JSX 的开发模式,但大多数情况下都是使用基于 HTML 的模板语法,在模板中允许开发者以声明式的方式将 DOM 和底层组件实例的数据绑定在一起,在底层的实现中,Vue 会将面编译成虚拟 DOM 渲染函数。

Mustache 插值语法:

Mustache 插值语法:可以通过双大括号将 data 中的数据、methods 中的函数或者 JavaScript 表达式显示到 template 模板中。

<div id="app"><!-- data 中的数据 --><div>当前数字:{{count}}</div><!-- methods 中的函数 --><div>{{formatCount(count)}}</div><!-- JavaScript 表达式 --><div>三倍当前数字:{{count * 3}}</div><!--  JavaScript 表达式只能是单个表达式,下面的语法会报错 --><div>{{ const count = 10 }}</div>
</div><script>const app = Vue.createApp({data() {return {count: 10,}},methods: {formatCount(argu) {return `双倍当前数字:${argu*2}`},}})app.mount('#app')
<script>

常见的基本指令:

指令都是用在元素的属性上。

v-bind

v-bind:用于动态绑定一个或多个属性值,或者向另一个组件传递 props 值。语法糖是 :

<div id="app"><img v-bind:src="imgUrl" />
</div><script>
const app = Vue.createApp({data() {return {imgUrl: 'http://gips2.baidu.com/it/u=195724436,3554684702&fm=3028&app=3028&f=JPEG&fmt=auto?w=1280&h=960',}},
})
app.mount('#app')
</script>

使用 v-bind 动态绑定 class 属性值:

动态绑定的 class 和普通静态的 class 是可以一起使用的,不会被覆盖。

  1. 绑定对象:可以给 :class 绑定一个对象来动态切换 class。对象中的属性名是 class 名,属性值是布尔类型,只有属性值为 true 时才会渲染对应的 class。
    <!-- 只有当 isActive 为 true 时才会显示 active 样式 -->
    <div v-bind:class="{ active: isActive }"></div>
    
  2. 绑定数组:可以给 :class 绑定一个数组来渲染多个 class。
    <div v-bind:class="[activeClass, errorClass]"></div>
    

使用 v-bind 动态绑定 style属性值:

  1. 绑定对象:属性名可以使用驼峰式或者用引号括起来的短横线分割来命名。
    <div v-bind:style="{ color: activeColor, fontWeight: activeFontWeight, 'font-size': activeFontSize + 'px' }"></div>
    
  2. 绑定数组:可以将多个样式对象应用到同一个元素上。
    <div :style="[baseStyles, {color: activeColor}]"></div>
    

使用 v-bind 动态绑定属性名:

如果属性名称不是固定的,可以使用 v-bind:[属性名]="属性值" 的格式来定义。

<~-- name 是动态的 --> 
<div v-bind:[name]="value"></div>

使用 v-bind 直接绑定一个对象:

常用于给组件传递 props 属性值。

<div id="app"><!-- 会自动地遍历对象中的所有属性,将它们作为属性添加到当前的元素上 --><div v-bind="props">Hello Vue</div>
</div><script>
const app = Vue.createApp({data() {return {props: {name: 'Lee',height: 1.88,},}},
})
app.mount('#app')
</script>

在这里插入图片描述

v-on

v-on:用于绑定事件。语法糖是 @

<div id="app"><div v-on:click="handleClick">Hello Vue</div>
</div><script>const app = Vue.createApp({methods: {handleClick() {console.log('click')}}})app.mount('#app')
</script>

传递参数:

  1. 只有默认参数:如果在绑定事件时,没有传递任何参数,那么 event 对象会被默认传递进来。
    <div id="app"><div v-on:click="handleClick">Hello Vue</div>
    </div><script>const app = Vue.createApp({methods: {handleClick(event) {console.log('click', event)}}})app.mount('#app')
    </script>
    ```	![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4aa258c96a1347a1aa771cf3ecaf5873.png)
    
  2. 只有明确传递的参数:如果在绑定事件时,有显式地传递参数,那么只有明确传递的参数会被传递进来。
<div id="app"><div v-on:click="handleClick('Lee')">Hello Vue</div>
</div><script>const app = Vue.createApp({methods: {handleClick(name) {console.log('click', name)}}})app.mount('#app')
</script>

在这里插入图片描述

  1. 既有明确传递的参数,也有默认参数:如果在绑定事件时,有显式地传递参数和 $event,那么明确传递的参数和 event 对象都会被传递进来。
    <div id="app"><div v-on:click="handleClick('Lee', $event)">Hello Vue</div>
    </div><script>const app = Vue.createApp({methods: {handleClick(name, event) {console.log('click', name, event)}}})app.mount('#app')
    </script>
    
    在这里插入图片描述

修饰符:

v-on 支持修饰符,相当于是对事件进行一些特殊的处理。

  1. .stop:调用 event.stopPropagation() 阻止事件冒泡。
  2. .prevent:调用 event.preventDefault() 阻止默认事件。
  3. .capture:添加事件侦听器时使用 capture 捕获模式。
  4. .passive:添加事件侦听器时使用 {passive: true} 模式,提前告知浏览器不要阻止事件的默认行为。
  5. .self:只有当事件是从侦听器绑定的元素本身触发时才触发回调。
  6. .{keyAlias}:只有当事件是从特定键触发时才触发回调。
  7. .left:只有当点击鼠标左键时才触发回调。
  8. .right:只有当点击鼠标右键时才触发回调。
  9. .middle:只有当点击鼠标中键时才触发回调。
  10. .once:只触发一次回调。

v-model

v-model:用于实现双向绑定。经常和表单一起使用,可以用于 input、textarea、select、checkbox、radio 等表单控件。

双向数据绑定:是指将视图(用户界面)中的数据与模型(业务逻辑)中的数据进行双向关联。当视图中的数据发生变化时,模型中的数据也会随之更新;同样,当模型中的数据发生变化时,视图中的数据也会随之更新。

select 如果是单选,v-model 绑定到属性中的值是就是单个的值;如果是多选,v-model 绑定到属性中的值就是数组类型。
checkbox 如果只有一个选择框时,v-model 绑定到属性中的值是布尔值类型,此时即使明确地给元素绑定 value 属性,当选中时也不会影响到 v-model 绑定的值; 如果有多个选择框时,v-model 绑定到属性中的值是数组类型, 此时必须明确地给元素绑定 value 属性,当选中时 value 属性值会被自动地添加到 v-model 绑定的数组中。

<div id="app"><!-- 手动实现双向数据绑定 --><input :value="message" @input="handleMessageInput" /><!-- Vue 实现双向数据绑定,本质上就是上面代码的语法糖 --><input v-model="message" /><div>{{message}}</div>
</div><script>const app = Vue.createApp({data() {return {message: 'Hello Vue',}},  methods: {handleMessageInput(event) {this.message = event.target.value}},})app.mount('#app')
</script>

v-model 的原理:

  1. v-bind 绑定 value 属性的值。
  2. v-on 绑定 input 事件监听函数,在函数中会获取到最新的值赋值到绑定的属性中。

v-model 的修饰符:

多个修饰符可以并列使用。

  1. lazy:默认情况下,v-model 在进行双向数据绑定时,绑定的是 input 事件,那么在每次内容输入后就会将最新的值和绑定的属性进行同步;如果在 v-model 后面跟上 lazy 修饰符,那么就会将绑定的事件切换为 change 事件,只有在提交时才会触发。
    <div id="app"><input v-model.lazy="message" /><div>{{message}}</div>
    </div><script>const app = Vue.createApp({data() {return {message: 'Hello Vue',}},  })app.mount('#app')
    </script>
    
  2. number:自动将内容转换为数字。
  3. trim:去除内容首尾的空格。

v-text

v-text:用于设置元素的 textContent 文本内容。

<divv-text="message"></div>
<!-- v-text 会直接替换掉元素中的内容 -->
<divv-text="message">你好,Vue</div><!-- 和Mustache 插值语法的效果一样,只不过Mustache 插值语法更灵活 -->
<div>{{message}}</div>

v-html

v-html:默认情况下,如果显示的内容本身是 HTML,Vue 是不会对其进行解析的;如果想要解析出来,需要使用 v-html。

<div id="app"><!-- 会直接将字符串显式出来 --><div>{{content}}</div><!-- 会解析 HTML --><divv-html="content"></div>
</div><script>const app = Vue.createApp({data() {return {content: `<span style="color:red">Hello Vue</span>`,}},})app.mount('#app')
</script>

在这里插入图片描述

v-pre

v-pre:用于跳过元素及其子元素的编译过程,显示原始 Mustache 标签。可以跳过不需要编译的节点,加快编译速度。

<div id="app"><!-- Vue 会跳过对其的编译过程,将其直接显示出来 --><div-pre>{{message}}</div>
</div><script>const app = Vue.createApp({data() {return {message: 'Hello Vue',}},})app.mount('#app')
</script>

v-cloak

v-cloak:这个指令会保持在元素上直到关联的实例结束编译。和 CSS 规则例如 [v-cloak]{display:none} 一起用时,可以用于隐藏未编译的 Mustache 标签直到实例编译完成。

<div id="app"><!-- 初始会显示 {{message}},直到三秒后才显示正确的效果 --><div>{{message}}</div>
</div><script>setTimeout(() => {const app = Vue.createApp({data() {return {message: 'Hello Vue',}},})app.mount('#app')},3000)
</script>
<style>[v-cloak] {display: none;}
</style><div id="app"><!-- 由于有 v-cloak 指令,叠加设置的 CSS 属性,初始什么都不会显示;直到三秒后,Vue 实例编译完成,v-cloak 指令会被 Vue 自动移除,显示正确的效果 --><divv-cloak>{{message}}</div1>
</div><script>setTimeout(() => {const app = Vue.createApp({data() {return {message: 'Hello Vue',}},})app.mount('#app')},3000)
</script>

v-once

v-once:只渲染元素/组件一次,当数据发生变化时,元素/组件及其所有的子节点将被视为静态内容直接跳过,不会重新渲染。可以用于优化更新性能。

<div id="app"><!-- 点击按钮也不会改变 message 显示的内容,因为只会渲染一次 --><divv-once>{{message}}</div><button @click="handleMessageChange">改变 Message</button>
</div><script>const app = Vue.createApp({data() {return {message: 'Hello Vue',}},methods: {handleMessageChange() {this.message = 'Hello World'},}})app.mount('#app')
</script>

v-memo

v-memo:缓存一个模板的子树。在元素和组件上都可以使用。为了实现缓存,该指令需要传入一个固定长度的依赖值数组进行比较,如果数组里的每个值都与最后一次的渲染相同,那么整个子树的更新将被跳过。可以用于优化更新性能。

v-memo 传入空依赖数组 v-memo="[]" 将与 v-once 效果相同。

<!-- 当组件重新渲染,如果 valueA 和 valueB 都保持不变,div 及其子项的所有更新都将被跳过。 -->
<div v-memo="[valueA, valueB]">...
</div>

条件渲染:

v-ifv-elsev-else-ifv-show :根据条件决定是否显示元素或组件。类似 JavaScript 中的条件语句。

<div id="app"><div v-if="Object.keys(info).length"><p>姓名:{{info.name}}</p><p>年龄:{{info.age}}</p></div><div v-else><p>暂无个人信息</p><p>请填写后查看</p></div>
</div><script>const app = Vue.createApp({data() {return {info: {name: 'Lee',age: 18,},}}})app.mount('#app')
</script>

v-ifv-show 的区别:

v-showv-if 类似,但二者也有一些区别:

  1. 用法上的区别:v-show 不可以和 v-else 一起使用,不支持在 template 上使用。
  2. 本质上的区别:
    1. v-show 无论条件是 true 还是 false,它的 DOM 都是实际存在的,只不过是通过 CSS 的 display 属性来进行切换。
      在这里插入图片描述
    2. v-if 只有当条件为 true 时,才会渲染条件块中的元素内容,当条件为 false 时,条件块中的元素内容完全不会被渲染。
      因此,如果元素切换频繁,就使用 v-show;如果元素切换不频繁,就使用 v-if

列表渲染:

v-for:用来遍历一组数据。类似 JavaScript 中的 for 循环 。基本格式是 v-for="(item, index) in 数据",其中 item 和 index 分别是每项元素的自定义别名和自定义索引。

<div id="app"><ul><li v-for="movie in movies">{{movie}}</li></ul>
</div><script>const app = Vue.createApp({data() {return {movies: ['大话西游', '少年派', '盗梦空间']}}})app.mount('#app')
</script>

v-for 遍历支持的类型:

其实只要是可迭代对象,v-for 都可以遍历。

  1. 数组:基本格式是 v-for="(item, index) in 数组"

    Vue 对被侦听的数组的变更方法进行了包裹,所以使用它们也会触发视图更新,这些方法包括 push()、pop()、shift()、unshift()、splice()、sort()、reverse()。
    可以发现,上面的方法都是会修改到原数组的;如果是不会修改到原数组的方法,是无法触发视图更新的,例如 map() 、filter() 等。

  2. 对象:基本格式是 v-for="(value, key, index) in 对象"
  3. 字符串:基本格式是 v-for="(str, index) in 字符串"
  4. 数字:基本格式是 v-for="(num, index) in 数字"

v-for 中的 key 属性:

在使用 v-for 进行列表渲染时,经常会给元素或者组件绑定一个 key 属性,属性值要求是唯一的。

<div id="app"><ul><li v-for="movie in movies" v-bind:key="item">{{movie}}</li></ul>
</div><script>const app = Vue.createApp({data() {return {movies: ['大话西游', '少年派', '盗梦空间']}}}) app.mount('#app')
</script>
key 的作用:

key 属性主要用于 Vue 中的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VNodes。

  1. 如果不使用 key,Vue 会使用一种最大限制减少动态元素并且尽可能尝试就地复用/修改相同类型元素的算法。在源码中是使用 patchUnkeyedChildren() 方法。
  2. 如果使用 key,它会基于 key 的变化重新排列元素顺序,并且会移除/销毁 key 不存在的元素。在源码中是使用 patchkeyedChildren() 方法。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
<div id="app"><ul><li v-for="movie in movies">{{movie}}</li></ul>
</div><script>const app = Vue.createApp({data() {return {movies: ['大话西游', '少年派', '盗梦空间']}}}) app.mount('#app')
</script>

假设要在大话西游后面插入夏洛特烦恼,原本是大话西游、少年派、盗梦空间,现在是大话西游、夏洛特烦恼、少年派、盗梦空间。
4. 不使用 key 的话:Vue 只能一个一个对比对应位置的元素。会发现第一个元素一样,可以直接复用;但是第二个元素就不一样了,原本是少年派,现在是夏洛特烦恼,因此需要修改其中的值;第三个元素也不一样,需要修改其中的值;还需要创建一个新的第四个元素。
5. 使用 key 的话:Vue 可以通过 key 来比较是否是同一个元素。会发现大话西游、少年派、盗梦空间的元素都一样,可以直接复用,只需要创建一个新的元素插入即可。

template 元素:

template 元素作为一个不可见的包裹元素,最终是不会被浏览器渲染出来的,与条件渲染和列表渲染结合使用可以减少元素层级的嵌套。

<div id="app"><template v-if="Object.keys(info).length"><p>姓名:{{info.name}}</p><p>年龄:{{info.age}}</p></template><template v-else><p>暂无个人信息</p><p>请填写后查看</p></template>
</div><script>
const app = Vue.createApp({data() {return {info: {name: 'Lee',age: 18,},}}
})
app.mount('#app')
</script>

可以看到,p 元素外面并不会再嵌套一层多元的元素。
在这里插入图片描述

相关文章:

《Vue3 二》Vue 的模板语法

在 React 中&#xff0c;想要编写 HTML&#xff0c;是使用 JSX&#xff0c;之后通过 Babel 将 JSX 编译成 React.createElement 函数调用&#xff1b;在 Vue 中&#xff0c;也支持 JSX 的开发模式&#xff0c;但大多数情况下都是使用基于 HTML 的模板语法&#xff0c;在模板中允…...

手机租赁平台开发全攻略打造高效便捷的租赁服务系统

内容概要 手机租赁平台开发&#xff0c;简单说就是让用户能轻松租赁各类手机的高效系统。这一平台不仅帮助那些想要临时使用高端手机的人们节省了不少资金&#xff0c;还为商家开辟了新的收入渠道。随着智能手机的普及&#xff0c;很多人并不需要长期拥有一部手机&#xff0c;…...

【Ext.js 初步入门】Ext.js 作用以及用法 概述

一、Ext.js的作用 首先我们需要了解类似Ext.js以及easyui类似产品的作用是什么。 我的理解是就是相当于一个组件库&#xff0c;它与bootstrap类似产品的区别在于&#xff0c;bootstrap与ext.js和easyui面向的问题不同&#xff0c;bootstrap面向的问题样式&#xff0c;ext.js和…...

基于源码剖析:深度解读JVM底层运行机制

每日禅语 佛说&#xff0c;给你修路的&#xff0c;是你自己&#xff1b;埋葬你的&#xff0c;也是你自己&#xff1b;帮助你的&#xff0c;是你自己&#xff1b;毁灭你的&#xff0c;也是你自己&#xff1b;成就你的&#xff0c;自然还是你自己。所以佛说&#xff1a;自作自受&…...

redis延迟队列

Redis延迟队列 Redis延迟队列是基于Redis构建的消息队列&#xff0c;用来处理需延迟执行的任务。 基本原理 它借助Redis的有序集合&#xff08;Sorted Set&#xff09;数据结构达成目的。会把任务及其执行时间分别当成成员与分值存进有序集合&#xff0c;由于执行时间作为分值&…...

GDPU Vue前端框架开发 期末赛道出勇士篇(更新ing)

记住&#xff0c;年底陪你跨年的不会仅是方便面跟你的闺蜜&#xff0c;还有孑的笔记。 选择题 1.下列选项用于设置Vue.js页面视图的元素是&#xff08;&#xff09;。 A. Template B. script C. style D. title 2.下列选项中能够定义Vuejs根实例对象的元素是&#xff08;&…...

WordPress TutorLMS插件 SQL注入漏洞复现(CVE-2024-10400)(附脚本)

0x01 产品描述: ‌Tutor LMS‌是一个功能强大的...

小程序配置文件 —— 14 全局配置 - tabbar配置

全局配置 - tabBar配置 tabBar 字段&#xff1a;定义小程序顶部、底部 tab 栏&#xff0c;用以实现页面之间的快速切换&#xff1b;可以通过 tabBar 配置项指定 tab 栏的表现&#xff0c;以及 tab 切换时显示的对应页面&#xff1b; 在上面图中&#xff0c;标注了一些 tabBar …...

基于python+Django+mysql文档格式转换工具系统设计与实现

博主介绍&#xff1a;黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者&#xff0c;CSDN博客专家&#xff0c;在线教育专家&#xff0c;CSDN钻石讲师&#xff1b;专注大学生毕业设计教育、辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…...

异步线程池中,ThreadPoolTaskExecutor和ThreadPoolExecutor有什么区别?

异步线程池中&#xff0c;org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor和java.util.concurrent.ThreadPoolExecutor有什么区别&#xff1f; org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor 和 java.util.concurrent.ThreadPoolExec…...

【机器学习】SVM支持向量机(二)

介绍 支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一种监督学习模型&#xff0c;广泛应用于分类和回归分析。SVM 的核心思想是通过找到一个最优的超平面来划分不同类别的数据点&#xff0c;并且尽可能地最大化离该超平面最近的数据点&#xff08;支持向量…...

基于NodeMCU的物联网电灯控制系统设计

最终效果 基于NodeMCU的物联网电灯控制系统设计 小程序关灯 上图展现了小程序关灯过程的数据传输过程&#xff1a;用户下达关灯指令→小程序下发关灯指令→MQTT服务器接收关灯指令→下位机接收与处理关灯指令。 项目介绍 该项目是“物联网实验室监测控制系统设计&#xff08;…...

源码安装redis后配置redis开机自启动

initd风格 #!/bin/sh ### BEGIN INIT INFO # Provides: redis # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop Redis server ### END…...

WebRTC服务质量(11)- Pacer机制(03) IntervalBudget

WebRTC服务质量&#xff08;01&#xff09;- Qos概述 WebRTC服务质量&#xff08;02&#xff09;- RTP协议 WebRTC服务质量&#xff08;03&#xff09;- RTCP协议 WebRTC服务质量&#xff08;04&#xff09;- 重传机制&#xff08;01) RTX NACK概述 WebRTC服务质量&#xff08;…...

22.跳过报错(最简) C#例子

这是一个跳过报错的例子&#xff0c;如果代码出错了会自动跳过&#xff0c;代码正确了就正常执行。 然而这不是一种推荐的做法&#xff0c;正确的做法应该是使用bool类型的值去检测代码运行结果&#xff0c;然后分支判断&#xff0c;在代码内部解决错误。 这只是一种好玩的做…...

windows 本地node版本快速升级

文章目录 前言一、前置条件二、使用步骤1.查看node 安装位置2.下载指定的node 版本3.下载后进行解压缩4. 删除覆盖原来的node文件夹内容5. 验证 总结 前言 Node.js 是一个开源、跨平台的JavaScript运行时环境&#xff0c;它允许开发者在服务器端运行JavaScript代码。Node.js 基…...

windows安装mongodb

一.安装包准备 1.服务端下载 https://www.mongodb.com/try/download/communitya 按需选择&#xff0c;我们这里选择社区版 直接点download浏览器下载可能比较慢&#xff0c;可以尝试copy link后用三方下载软件&#xff0c;会快很多。 2.命令行客户端下载 https://www.mong…...

一文读懂混合专家模型(MoE)

一文读懂混合专家模型&#xff08;MoE&#xff09; 概述 混合专家模型&#xff08;Mixture of Experts&#xff0c;MoE&#xff09;是一种机器学习和深度学习中的模型架构&#xff0c;它通过多个“专家”子模型来处理不同类型的输入数据或任务。在MoE模型中&#xff0c;输入数…...

自然语言处理(NLP)中的事件检测和事件抽取

事件检测和事件抽取是自然语言处理&#xff08;NLP&#xff09;中的两个重要任务&#xff0c;主要用于从文本中识别和提取事件及其相关信息。这两个任务在信息检索、情报分析、新闻摘要等应用中具有重要意义。 事件检测&#xff08;Event Detection&#xff09; 事件检测的目…...

深度学习:基于MindSpore NLP的数据并行训练

什么是数据并行&#xff1f; 数据并行&#xff08;Data Parallelism, DP&#xff09;的核心思想是将大规模的数据集分割成若干个较小的数据子集&#xff0c;并将这些子集分配到不同的 NPU 计算节点上&#xff0c;每个节点运行相同的模型副本&#xff0c;但处理不同的数据子集。…...

unity NAudio 获取电脑是否静音

测试&#xff0c;这两个办法都可以 打包出来也可以hu 想获取电脑是否静音出现编辑器模式下正常 打包出来失败 需要把 Api Compatibility Level改成.NET 4.x...

SemiDrive E3 MCAL 开发系列(6)– Icu 模块的使用

一、 概述 本文将会介绍 SemiDrive E3 MCAL Icu 模块的简介以及基本配置&#xff0c;其中还会涉及到 Xtrg 模块的配置。此外会结合实际操作的介绍&#xff0c;帮助新手快速了解并掌握这个模块的使用&#xff0c;文中的 MCAL 是基于 PTG3.0 的版本&#xff0c;开发板是官方的 …...

leetCode322.零钱兑换

题目&#xff1a; 给你一个整数数组coins,表示不同面额的硬币&#xff1b;以及一个整数amount,表示总金额。 计算并返回可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额&#xff0c;返回-1。 你可以认为每种硬币的数量是无限的。 示例1&#xff1…...

【Python】什么是元组(Tuple)?

什么是元组&#xff08;Tuple&#xff09;&#xff1f; 元组&#xff08;Tuple&#xff09;是 Python 中的一种 不可变 的数据结构&#xff0c;用于存储多个元素。它类似于列表&#xff08;List&#xff09;&#xff0c;但与列表不同的是&#xff0c;元组一旦创建&#xff0c;…...

zentao ubuntu上安装

#下载ZenTaoPMS-21.2-zbox_amd64.tar.gz&#xff08;https://www.zentao.net/downloads.html&#xff09; https://dl.zentao.net/zentao/21.2/ZenTaoPMS-21.2-zbox_amd64.tar.gzcd /opt tar -zxvf ZenTaoPMS-21.2-zbox_amd64.tar.gz#启动 /opt/zbox/zbox start /opt/zbox/zbox…...

文档解析丨高效准确的PDF解析工具,赋能企业非结构化数据治理

在数据为王的时代浪潮中&#xff0c;企业数据治理已成为组织优化运营、提高竞争力的关键。随着数字化进程的加速&#xff0c;企业所积累的数据量呈爆炸式增长&#xff0c;数据类型也愈发多样化&#xff0c;这些数据构成了现代企业数据资产的重要组成部分。 然而&#xff0c;传…...

Unity 实现Canvas显示3D物体

新建一个UI相机&#xff0c;选择渲染层为UI 将主相机的渲染层去掉UI层 、 将Canvas的RenderMode设置为Screen Space - Camera,将RenderCamera设置为UI相机 新建3D物体的UI父物体&#xff0c;并将3D物体的层级设置为UI层 适当的放缩3DObjParent&#xff0c;让3D物体能显示出来…...

OpenAI 12天发布会:AI革命的里程碑@附35页PDF文件下载

在人工智能的浪潮中&#xff0c;OpenAI的12天发布会无疑是2024年科技界的一场盛宴。从12月5日开始&#xff0c;OpenAI连续12天每天发布一个新应用或功能&#xff0c;标志着AI技术的又一次飞跃。本文将梳理这些激动人心的发布&#xff0c;带你一探究竟。 OpenAI发布会概览 Ope…...

cellphoneDB进行CCI以及可视化

除了cellchat&#xff0c;在单细胞转录组或者空间组的分析中&#xff0c;cellphoneDB也是一个常用的细胞通讯软件&#xff0c;这个数据库更注重配受体关系&#xff0c;对于有明确先验知识的配受体研究比较友好。 但值得注意的是&#xff0c;它的数据库只包括人的基因名称信息&…...

Facebook 上的社群文化:连接与共享

随着社交媒体的普及&#xff0c;Facebook作为全球最大的社交平台之一&#xff0c;不仅改变了人们的沟通方式&#xff0c;还塑造了独特的社群文化。在Facebook上&#xff0c;用户可以轻松地与朋友、家人保持联系&#xff0c;同时也能加入兴趣相投的群组、参与讨论和共享内容。社…...

数据库的概念和操作

目录 1、数据库的概念和操作 1.1 物理数据库 1. SQL SERVER 2014的三种文件类型 2. 数据库文件组 1.2 逻辑数据库 2、数据库的操作 2.1 T-SQL的语法格式 2.2 创建数据库 2.3 修改数据库 2.4 删除数据库 3、数据库的附加和分离 1、数据库的概念和操作 1.1 物理数据库…...

word运行时错误‘-2147221164(80040154)’ 没有注册类的解决办法

目录 问题描述解决方案 问题描述 解决方案 打开C盘找到路径C:\Users\Administrator\AppData\Roaming\Microsoft\Word\STARTUP或者在everything中搜索“Microsoft\Word\STARTUP”删除NEWebWordAddin.dotm文件即可正确打开word。...

Oracle数据库高级应用与优化策略

Oracle数据库高级应用与优化策略 在数据驱动的时代,Oracle数据库作为企业级数据库管理的佼佼者,以其强大的数据处理能力、高可用性和安全性,在众多行业领域中扮演着不可或缺的角色。本文旨在深入探讨Oracle数据库的高级应用与优化策略,通过具体代码使用案例,帮助开发者和…...

笔记:使用python对飞书用户活跃度统计的一个尝试

说明 一个python练习 代码 import json import time import openpyxl from openpyxl import load_workbook from datetime import datetime, timedelta import lark_oapi as lark from lark_oapi.api.admin.v1 import *def data_r(start_date, end_date):r_data []client la…...

讲解substr函数

substr JavaScript 中的 substr语法示例注意 PHP 中的 substr语法示例 Python 中的等价方法语法示例 其他语言Java 补充 substr 是编程中用于截取字符串的一个方法或函数&#xff0c;其功能是从一个字符串中提取出一部分子字符串。不同的编程语言中&#xff0c;这个功能的实现方…...

宏任务和微任务的区别

在 JavaScript 的异步编程模型中&#xff0c;宏任务&#xff08;Macro Task&#xff09;和微任务&#xff08;Micro Task&#xff09;是事件循环&#xff08;Event Loop&#xff09;机制中的两个重要概念。它们用于管理异步操作的执行顺序。 1. 宏任务 (Macro Task) 宏任务是较…...

设计模式介绍

设计模式是软件开发中常见问题的经典解决方案。它们是经过验证的、可重用的设计经验&#xff0c;可以帮助程序员构建可维护、可扩展和可靠的对象导向软件。 设计模式通常分为三大类&#xff1a;创建型、结构型和行为型。以下是每种类型中一些常见的设计模式&#xff0c…...

flask后端开发(11):User模型创建+注册页面模板渲染

目录 一、数据库创建和配置信息1.新建数据库2.数据库配置信息3.User表4.ORM迁移 二、注册页面模板渲染1.导入静态文件2.蓝图注册路由 一、数据库创建和配置信息 1.新建数据库 终端中 CREATE DATABASE zhiliaooa DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;2…...

Ubuntu 中安装 RabbitMQ 教程

简介 RabbitMq作为一款消息队列产品&#xff0c;它由Erlang语言开发&#xff0c;实现AMQP&#xff08;高级消息队列协议&#xff09;的开源消息中间件。 应用场景 异步处理 场景说明&#xff1a;用户注册后&#xff0c;注册信息写入数据库&#xff0c;再发邮件、短信通知。 …...

【开源免费】基于SpringBoot+Vue.JS网上摄影工作室系统(JAVA毕业设计)

本文项目编号 T 103 &#xff0c;文末自助获取源码 \color{red}{T103&#xff0c;文末自助获取源码} T103&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

Metricbeat安装教程——Linux——Metricbeat监控ES集群

Metricbeat安装教程——Linux 一、安装 下载安装包&#xff1a; 官网下载地址&#xff1a;https://www.elastic.co/cn/downloads/beats/metricbeat 上传包到linux 切换到安装目录下 解压&#xff1a;tar -zxvf metricbeat-7.17.1-linux-x86_64.tar.gz 重命名安装文件夹 mv met…...

torch.nn.Embedding模块介绍

torch.nn.Embedding 是 PyTorch 中的一个嵌入层模块,用于将离散的整数索引(如单词或标记的 ID)映射到连续的密集向量空间中。常用于自然语言处理(NLP)中的词嵌入,但也适用于任何需要将类别数据转换为密集向量表示的场景。 参数说明 torch.nn.Embedding(num_embeddings, …...

<数据集>风力发电机损伤识别数据集<目标检测>

数据集下载链接 &#xff1c;数据集&#xff1e;风力发电机损伤识别数据集&#xff1c;目标检测&#xff1e;https://download.csdn.net/download/qq_53332949/90187097数据集格式&#xff1a;VOCYOLO格式 图片数量&#xff1a;2527张 标注数量(xml文件个数)&#xff1a;252…...

【Python运维】自动化备份与恢复系统的实现:Python脚本实战

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着信息化进程的加速,数据的重要性日益增加,数据丢失的风险也随之增加。为了保证数据安全,定期备份和及时恢复数据是必不可少的操作。本…...

PTA数据结构编程题7-1最大子列和问题

我参考的B站up的思路 题目 题目链接 给定K个整数组成的序列{ N 1 ​ , N 2 ​ , …, N K ​ }&#xff0c;“连续子列”被定义为{ N i ​ , N i1 ​ , …, N j ​ }&#xff0c;其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 1…...

Elasticsearch-模糊查询

模糊查询 前缀搜索&#xff1a;prefix 概念&#xff1a;以xx开头的搜索&#xff0c;不计算相关度评分。 注意&#xff1a; 前缀搜索匹配的是term&#xff0c;而不是field。 前缀搜索的性能很差 前缀搜索没有缓存 前缀搜索尽可能把前缀长度设置的更长 语法&#xff1a; GET &…...

C#学习1:C#初接触,一些基础内容备忘和相关报错说明

目录 1 C#基本语法格式 1.1 基础规则 1.2 以if为例子 2 一些写法 2.1 时间相关 2.2 对数写法 2.3 关于使用random 2.4 UnityEngine.Random.value 2.5 PerlinNoise 函数 PerlinNoise 函数本身的输出范围 3 各种报错 3.0 unity里对C#报错内容超级详细 3.1 error cs1…...

机器学习的方法

机器学习方法主要分为三种&#xff1a;监督学习、无监督学习、半监督学习。 1.监督学习 神经网络、朴素贝叶斯、线性回归、逻辑回归、随机森林、支持向量机&#xff08;SVM&#xff09;都是典型的监督学习方法。 监督学习&#xff0c;即监督机器学习&#xff0c;之所以叫监督…...

el-pagination 为什么只能展示 10 条数据(element-ui@2.15.13)

好的&#xff0c;我来帮你分析前端为什么只能展示 10 条数据&#xff0c;以及如何解决这个问题。 问题分析&#xff1a; pageSize 的值&#xff1a; 你的 el-pagination 组件中&#xff0c;pageSize 的值被设置为 10&#xff1a;<el-pagination:current-page"current…...

vulhub-wordpress靶场

一.主题上传漏洞 来到靶场点击主题选择add new 这里有一个上传主题的地方 我们可以去网上找到wordpress主题下载一个 wordpress模板 网页设计模板 免费 免费下载 - 爱给网 下载完成后对我们有用的东西只有这一个目录&#xff0c;把它拖出来 点开moban目录后&#xff0c;创建…...