前端入门(三)Vue生命周期、组件原理、脚手架、插槽插件、存储、组件事件、动画、跨域与代理

文章目录

  • Vue生命周期
  • Vue 组件化编程 - .vue文件
    • 非单文件组件
      • 组件的注意点
      • 组件嵌套
      • Vue实例对象和VueComponent实例对象
      • Js对象原型与原型链
      • Vue与VueComponent的重要内置关系
    • 应用单文件组件构建
  • Vue脚手架 - vue.cli
    • 项目文件结构
    • 组件相关高级属性
      • 引用名 - ref
      • 数据接入 - props
      • 混入 - mixin
    • 插槽 - slot
      • 默认插槽
      • 具名插槽
    • 插件
  • 存储
    • 浏览器存储 - Window.sessionStorage与 Window.localStorage
  • 组件事件
    • 触发自定义事件 - emit()
    • 解绑自定义事件 - off() / destroy()
    • 自定义事件注意事项 - this指向与native
    • 全局事件总线 - 实现任意组件间通信
    • 消息订阅与发布模型 - 基于pubsub实现
    • 事件触发更新 - nextTick
  • 过度与动画
  • 配置代理解决跨域问题
    • 什么是跨域
    • 出现跨域的原因
    • Vue对于跨域问题的解决 - 配置代理
      • 方式一
      • 方式二

Vue生命周期

在这里插入图片描述

在这里插入图片描述

  • 1、beforeCreate():数据代理尚未开始,此时无法通过vm访问到data中的数据,methods中的方法。
  • 2、created():数据监测和数据代理完成了,可以通过vm访问到data中的数据,methods中的方法。
  • 3、beforeMount():页面呈现的是未经Vue编译的DOM结构,所有对DOM的操作,最终都不奏效。
  • 4、mounted():页面中呈现的是经过Vue编译的DOM,此时对DOM的操作均有效,一般在此进行:开启定时器、发送网络请求、订阅消息、绑定自定义事件等初始化操作。1-4步骤构成了挂载的主要流程
  • 5、beforeUpdate():此时数据是新的,但是页面是旧的,即新的数据尚未更新到页面上。
  • 6、updated():此时,页面的显示的是新数据,页面和数据同步完毕。
  • 7、beforeDestroy():此时vm中所有的data、methods、指令等等,都处于可用状态,马上要执行销毁的过程,一般在此阶段:关闭定时器、取消订阅消息,解绑自定义事件等收尾操作。
  • 8、destroyed():销毁完毕。可以使用this.$destroy(),让vue实例自己销毁,Vue实例销毁后,自定义事件会失效,但原生DOM事件依然有效。

Vue 组件化编程 - .vue文件

组件的定义——实现应用中局部功能代码和资源的集合。

在这里插入图片描述
在这里插入图片描述

非单文件组件

一个组件文件中由多个其他组件构成,称为非单文件组件。

Vue使用组件的三大步骤:

  • 1、定义组件(创建组件)
  • 2、注册组件(Vue的components局部注册或者使用Vue.component(‘组件名’, 组件))全局注册。
  • 3、使用组件(写组件标签)

1、创建组件
创建组件时,需要注意:

  • 不需要写el标签:el标签是将Vue实例与DOM元素绑定的,当你创建组件时,你并不知道需要将其用在哪里,因此不需要写el标签。
  • 组件的data属性需要写成函数式的:因为一个组件可能在多个地方使用,如果写为对象式的,各个组件之间的数据变化会相互影响。
  • 使用Vue.extend({})创建组件,在template属性中,使用反引号包裹HTML标签。
    在这里插入图片描述

在这里插入图片描述

2、注册组件
局部注册:在Vue实例的components属性中,标注上构建的组件。
在这里插入图片描述

使用`Vue.componet(‘组件名’, 组件);可以注册全局组件,即所有的Vue实例,尽管在components属性中没声明该组件,也可直接使用。
在这里插入图片描述

3、使用组件,写组件标签。
在这里插入图片描述

组件的注意点

在这里插入图片描述

组件嵌套

组件可以嵌套使用。注册给谁的组件,就可以在它的template属性中应用这个组件标签。
在这里插入图片描述

Vue实例对象和VueComponent实例对象

以定义的school组件为例:

  • 1、当我们使用school标签时,本质上是调用了VueComponent构造函数,该构造函数是Vue.extend生成的。
  • 2、当使用school标签时,Vue框架解析时会帮助创建school组件的实例对象,方式就是执行new VueComponent(options)
  • 3、特别注意,每次调用Vue.extend,返回的都有一个全新的VueComponent对象。
  • 4、关于this指向,组件配置中:data函数、methods中的函数,watch、computed函数,它们的this均是VueComponent实例对象。而在new Vue(options)配置中,data函数、methods中的函数,watch、computed函数,它们的this均是Vue实例对象
  • 5、根组件Vue实例对象会有$children属性,其中就是VueComponent实例对象数组。
  • 6、Vue实例对象和VueComponent实例对象在创建时接收的options选项,除了Vue实例可以使用el 绑定具体的DOM标签外,其余都一样。

在这里插入图片描述

Js对象原型与原型链

JavaScript 是一种基于原型的语言 (prototype-based language),每个对象拥有一个原型对象,对象以其原型为模板,从原型继承方法和属性,这些属性和方法定义在对象的构造器函数的 prototype 属性上,而非对象实例本身。

每个Js对象都会有一个名为__proto__的内部属性,该属性指向当前对象的原型对象。在Js中,当我们访问一个对象的某个属性时,如果该对象没有这个属性,Js语法引擎就会沿着该对象的原型链(在对象的__proto__上找)向上查找,直到找到该属性为止。在查找对象属性时,通过__proto__查找原型的属性这个过程,就用到原型链。

当然在Js对象中,根原型为Object,而Object的__proto__是为null的。

原型属性又可分为显示原型属性隐式原型属性

  • 显示原型属性访问:构造函数名.prototype
  • 隐式原型属性访问:实例对象名.__proto__
  • 由这两种方式访问到的原型对象是等价的,即指向的是同一个原型对象。构造函数名.prototype === 实例对象名.__proto__
  • 由原型链的属性访问方式可知,如果给原型对象添加一个属性x = 99,那么可以由实例对象d的原型对象属性访问它,即d.__proto__.x,实际上对于__proto__的访问是Js执行引擎自动完成的,因此d.__proto__.x访问的方式,可以等价于使用d.x

在这里插入图片描述

Vue与VueComponent的重要内置关系

VueComponent(Vue组件)的原型对象的原型对象是Vue的原型对象
在这里插入图片描述

应用单文件组件构建

1、构建一个单文件组件
一个单.vue文件,基本结构如下;
在这里插入图片描述
定义好单文件组件是为了提供给 别的文件使用,因此需要使用export将该文件进行暴露。
export default {
……
}
实际上是一种简写,等价于:
const vc = Vue.extend(
{
……
}
)

export vc

在这里插入图片描述
2、入口Vue文件:App.vue
一般而言,Vue项目的根组件为App.vue,这里使用其他的组件。
组件化编程三步走:

  • 导入
  • 注册
  • 使用标签
    在这里插入图片描述
    3、入口js文件:main.js
    构建的根组件App.vue并没有使用,在main.js中构建App.vue的实例对象,使用el属性为其绑定DOM对象。

在这里插入图片描述

4、入口HTML文件:index.html
在这里插入图片描述

Vue脚手架 - vue.cli

项目文件结构

在这里插入图片描述

组件相关高级属性

引用名 - ref

ref属性被用来给元素或者子组件注册引用信息,类似id,但是id只能绑定DOM元素标签,而ref还可以绑定vue组件,相当于给组件或DOM元素标签起一个别名,便于在程序中引用,程序中可以通过this.$refs.xxx获取到Vue组件或DOM元素标签。

在这里插入图片描述

数据接入 - props

组件中的数据,在复用时可能各自不同,props属性用于给组件传递数据。

基本使用方法:
step1:在组件的props属性配置数据项的名称接收。
在这里插入图片描述

step2:在使用组件标签时传入数据项的数据值。

在这里插入图片描述

实际上props数据接收,有三种不同的方式:

  • 简单接收
  • 限制类型
  • 限制类型、必要性、并指定默认值

在这里插入图片描述
注意:props中指定数据项名称可能会与Vue组件中的data属性中的数据项名称产生冲突,从优先级上,是props优先级会更高一点。

一般而言,props承接的数据,我们希望将其转为Vue组件的data数据项的数据,那么根据优先级关系,可以将props属性传给data属性。

将props承接的数据传给data,另一方面是由于组件在使用过程中数据可能会更新,而props属性项数据是不允许更改的,只有组件自身的data属性项可更改

在这里插入图片描述

混入 - mixin

mixin:混入,可以把多个组件的共用的options配置,抽取出一个混入对象mixin,节约配置。

使用方式:
step1:定义混入:
例如:
{
data() : {……}
methods: {……}
……
}
上述这些公共配置,写成一个js代码文件:mixin.js,然后暴露。
在这里插入图片描述

step2:使用混入,例如:

  • 全局混入:Vue.mixin(xxx)
  • 局部混入:使用mixins属性,mixins: [‘xxx’]

在这里插入图片描述

关于mixins属性需要注意:

  • 1、如果混入mixin中定义的data属性项名与组件中的已经有的data名重名,则只保留组件已经有的data名。
  • 2、mounted()等生命周期方法中的操作,则会与组件已有的内容合并。

插槽 - slot

插槽的提出是为了实现合成组件,假定一个组件中大部分内容是固定的,仅有几个地方是需要变化更改的,我们就可以用插槽来代替这部分需要变化的,然后根据需要写相应的插槽组件

Slot的通俗理解是“占坑”,在组件模板中占好了位置,当使用该组件标签时候,组件标签里面的内容就会自动填坑(替换组件模板中位置),当插槽也就是坑<slot name= ” mySlot ” >有命名时,组件标签中使用属性slot= ” mySlot ” 的元素就会替换该对应位置内容;

默认插槽

下边这个需求,大致上页面都是标题为某个内容的分类,内容呈现上有一些不同,这些不同就可以使用插槽进行抽象占位,那么整个页面就可以使用一个组件来复用。
在这里插入图片描述
step1:在每个分类内容组件Catetory中编写相应的DOM结构。
在这里插入图片描述
step2:Catetory中编写相应的DOM结构会放在Catetory的slot占位处,相当于将对应的DOM进行了替换。

在这里插入图片描述

具名插槽

当一个父组件需要组装多个动态组件时,就需要多个插槽,使用具名插槽用于区分。

需求:在内容底部,还有一部分超链接。那么就相当于是两部分动态内容,需要安置两个插槽。

所谓具名插槽就是在使用插值挖坑占位时,给坑起个名字,好方便后续根据名字来填坑。
在这里插入图片描述

step1:挖坑时,使用name属性,给插槽起名。
在这里插入图片描述

step2:填坑时,使用slot 属性,绑定name,进行结构替换。

注意:下边对于slot的绑定使用了两种方式:

  • 1、美食与游戏组件都是使用 slot = "name"进行绑定
  • 2、电影里边,使用template标签 + v-slot:name进行了绑定。

上边两种方式都可以,只不过 v-slot:name必须与template结合使用,template这一层标签在渲染时是不存的,仅作间隔占位用。

在这里插入图片描述

插件

插件的功能是用于对Vue进行增强。
在这里插入图片描述
使用步骤:
step1:
定义plugins.js文件,定义install函数,表示是一个可安装的插件,在其中一般可以定义用于增强Vue的:

  • 1、全局过滤器
  • 2、全局自定义指令
  • 3、全局混入
  • 4、Vue原型方法
    在这里插入图片描述
    step2:在main.js中,导入plugins.js并使用Vue.use()

在这里插入图片描述

step3:在Vue中使用定义的增强功能,比如上边在plugins.js中定义了Vue的原型方法hello,那么后边就可直接使用了。

在这里插入图片描述

存储

浏览器存储 - Window.sessionStorage与 Window.localStorage

在这里插入图片描述

组件事件

触发自定义事件 - emit()

以子组件向父组件传递数据为例:

如果不用自定义事件,可以通过父组件给子组件传递函数类型的props实现

step1:给子组件School绑定getSchoolName函数,相当于子组件的School的组件实例会有getSchoolName()这个函数。

在这里插入图片描述
step2:用props承接父组件注册的getSchoolName。按钮注册点击事件,调用该函数,并将组件的name参数传递。

在这里插入图片描述

如果使用自定义事件来实现:
step1:通过v-on: 给子组件Student绑定自定义事件atguigu,该事件触发时,调用父组件的getStudentName()方法。
在这里插入图片描述
step2:使用this.$emit('atguigu', this.name) 触发子组件Student上的atguigu事件。
在这里插入图片描述
除了在子组件标签上使用v-on绑定,也可以通过代码实现:
先给子组件标签起一个引用名,随后在mounted()方法中,拿到该组件,给它绑定事件方法。

在这里插入图片描述

如果要保证事件只触发一次:
可以使用:
在这里插入图片描述

解绑自定义事件 - off() / destroy()

  • 1、this.$off():如果指定参数,则 解绑对应事件(参数指定的),如果不指定参数,默认解绑所有的事件。
  • 2、在Vue生命周期中讲过,当组件销毁时,其上绑定的自定义事件以及子组件实例都会被销毁,因此使用this.$destroy()生命周期钩子函数,也可以实现自定义事件的解绑。
    在这里插入图片描述

自定义事件注意事项 - this指向与native

  • 1、注意自定义事件触发时的this指向,this可能指向的是事件的产生者,即子组件。

在这里插入图片描述
如果想this指向父组件,即该mounted声明周期的组件,要解决这个问题,有两种方式。

(1)使用箭头函数替换,function函数,箭头函数没有this指针,向外寻找mounted()函数的this,就是父组件了。

在这里插入图片描述

(2)将function的内容写为父组件的一个methods方法,那么this指向父组件。

在这里插入图片描述

  • 2、给组件绑定事件,默认绑定的是自定义事件,即便事件名与内置事件如click、keyup等同名。如果想为其绑定内置事件,应使用.native指明。

在这里插入图片描述

全局事件总线 - 实现任意组件间通信

如下图事件总线X,是各个组件之间的中介者,如果要实现组件A和D之间通信,可以在A中给X绑定一个自定义事件,那么X中的自定义事件触发时,就会触发A中的回调。此时在D组件中编写触发X该自定义事件的逻辑,并携带参数,那么就实现了D组件向A组件通信。
在这里插入图片描述
X应该具备两个特点:

  • 1、所有其他组件都可见
  • 2、实现$on、$off、$emit函数

$on、$off、$emit函数都是Vue实例或者组件上有的函数,因此上边两个特点,综合一句话就是X是一个所有其他组件都可见的Vue实例或者组件

为了使用所有其他组件都可见,可将X安装在Vue的原型对象上。
X本身可以是Vue实例,不妨直接使用Vue实例本身。

因此一般的事件总线安装方法如下:
在main.js创建Vue实例时,beforeCreate()中,给Vue的原型对象设置$bus = this.
在这里插入图片描述
后续使用时,在mounted()钩子处绑定,在beforeDestroy()钩子处解绑。
在这里插入图片描述

消息订阅与发布模型 - 基于pubsub实现

消息订阅与发布模型是一种理念,这里我们使用pubsub - js库提供的消息订阅与发布函数。

step 1:使用npm下载pubsub - js

npm i pubsub-js

step 2 : 消息订阅

接收数据的组件,使用pubsub订阅消息,指定消息主题名即可。

  • 1、import pubsub
  • 2、编写定义回调方法demo(),需要注意的时,回调方法中第一个参数为msgName即订阅主题名,而后边才是消息发布时携带的参数。
  • 3、在mounted中,指定主题名实现消息订阅,返回订阅id
  • 4、在beforeDestroy中,根据订阅时产生的订阅id,取消订阅

在这里插入图片描述
step3:消息发布
在这里插入图片描述

事件触发更新 - nextTick

语法:this.$nextTick(回调函数)
作用:在下一次DOM更新结束后执行其指定的回调。
使用场景:当事件触发更新视图时,可以放在nextTick()指定的回调函数中,因为事件触发时,Vue会等待触发函数内所有代码执行完毕,才进行DOM更新,如果你想要基于更新后的DOM视图进行操作,应该放在nextTick()指定的回调函数中,这样才可以使得你基于更新后的DOM操作生效。

this.$nextTick(回调函数)在实际开发中使用特别多。

过度与动画

配置代理解决跨域问题

什么是跨域

当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不一同,即跨域
在这里插入图片描述

出现跨域的原因

跨域问题出于浏览器的同源策略限制。所谓同源策略(Same-Origin Policy)是一种基于安全考虑的限制,它的主要作用是防止一个网站访问另一个不同来源的网站的数据。同源策略限制了从一个源加载的文档或脚本如何与来自另一个源的资源进行交互,即一个源的 JavaScript 脚本只能读取同一源的数据,而不能读取其他源的数据。
同源策略主要限制以下几个方面:

  • 1、Cookie、LocalStorage 和 IndexDB 等存储器:浏览器只允许网页访问自身网站的 Cookie、LocalStorage 和 IndexDB 等存储器,不能访问其他网站的存储器。

  • 2、Ajax 请求:XHR(XMLHttpRequest)对象只能访问同一域下的资源,不能访问其他域的资源。

  • 3、DOM 访问:JavaScript 脚本只能访问同一域下的 DOM 对象,不能访问其他域的 DOM 对象。

  • 4、Frame 和 iframe:包含不同源页面的 Frame 和 iframe 也受到同源策略的限制。

需要注意的是,同源策略只限制浏览器端的交互,而不限制服务器端的交互。因此,服务器端可以自由地访问和传输不同源的数据。

Vue对于跨域问题的解决 - 配置代理

服务器之间通信不受同源策略影响,即无代理问题,因此,通过将代理服务器启动在前端浏览器进程端口,浏览器请求同端口的代理服务器,代理服务器,再根据浏览器的请求转发给后端服务器,就可以解决请求跨域问题。

在这里插入图片描述

方式一

step1:在Vue-Cli中的Vue.config.js中开启Vue代理服务器:
需要注意的时,Vue代理服务器默认运行在前端浏览器同端口的进程,因此这里proxy属性配置的端口地址,实际上为后端服务器端口地址。
在这里插入图片描述
step2:向代理服务器发送请求,代理服务器会自动转发到后端服务器端口。
在这里插入图片描述
需要说明的是,这种方法有一些缺陷:

  • 1、假如要请求的资源,恰好是public中的资源,即该端口中已经有的资源,则就不会走代理服务器。那么假若恰好有与后端路径同名的public文件,则不会请求到后端。
  • 2、无法配置多个代理。
    在这里插入图片描述

方式二

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/191372.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云匣子 FastJson反序列化RCE漏洞复现

0x01 产品简介 云匣子是租户连接云资源的安全管理工具&#xff0c;帮助云租户更加安全、精细的管理云上的虚拟机、数据库等资源。 云安宝结合多年的运维和安全实践&#xff0c;将云上的运维和安全有机结合&#xff0c;实现对运维过程的事前规划、事中控制和 事后审计。在此之上…

Retrofit怎么返回一个JSON字符串?

项目用已经使用了 Retrofit&#xff0c;定义了接口方法&#xff0c;返回了 JSON 转换后的实体对象&#xff0c;炒鸡方便。但是总有意料之外的时候&#xff0c;比如我不需要返回实体对象&#xff0c;我要返回纯纯的 JSON 字符串&#xff0c;怎么办呢&#xff1f; 先看源码 通过…

数据里有{1,2,3,4,5,6,7,8,9},请随机打乱顺序,生成一个新的数组

问题&#xff1a;数据里有{1,2,3,4,5,6,7,8,9}&#xff0c;请随机打乱顺序&#xff0c;生成一个新的数组。 思路&#xff1a; 旧数组 nums&#xff0c;新数组 newNums 1、先创建一个新数组&#xff0c;用来存打乱数据后的元素&#xff0c;新旧数组的长度要一致 2、然后遍历数组…

使用STM32与MFRC522 IC进行RFID卡的读取与识别(含代码)

利用STM32与MFRC522 IC进行RFID卡的读取和识别&#xff0c;可以实现对RFID卡的读取和获取卡片标识信息。MFRC522 IC是一种高集成度的13.56MHz RFID芯片&#xff0c;常用于门禁系统、物流跟踪和智能支付等领域。下面将介绍如何使用STM32与MFRC522 IC进行RFID卡的读取和识别&…

Mycat实现读写分离

Mycat实现读写分离 Mycat支持MySQL主从复制状态绑定的读写分离机制。这里实现的也是基于MySQL主从复制的读写分离。 MySQL主从复制配置 首先要配置MySQL的主从复制&#xff0c;这里配置的是一主一次从。可以参考下面的文章。 https://blog.csdn.net/wsb_2526/article/detail…

人工智能-优化算法和深度学习

优化和深度学习 对于深度学习问题&#xff0c;我们通常会先定义损失函数。一旦我们有了损失函数&#xff0c;我们就可以使用优化算法来尝试最小化损失。在优化中&#xff0c;损失函数通常被称为优化问题的目标函数。按照传统惯例&#xff0c;大多数优化算法都关注的是最小化。…

ElasticSearch02

ElasticSearch客户端操作 ElasticSearch 版本&#xff1a;7.8 学习视频&#xff1a;尚硅谷 笔记&#xff1a;https://zgtsky.top/ 实际开发中&#xff0c;主要有三种方式可以作为elasticsearch服务的客户端&#xff1a; 第一种&#xff0c;使用elasticsearch提供的Restful接口…

【数据库】缓冲区管理器结构,几种常用替换策略分析,pin钉住缓冲区块防止错误的替换,以及缓冲区管理带来的代价优化

缓冲区管理 ​专栏内容&#xff1a; 手写数据库toadb 本专栏主要介绍如何从零开发&#xff0c;开发的步骤&#xff0c;以及开发过程中的涉及的原理&#xff0c;遇到的问题等&#xff0c;让大家能跟上并且可以一起开发&#xff0c;让每个需要的人成为参与者。 本专栏会定期更新&…

微软发布了Orca 2,一对小型语言模型,它们的性能超越了体积更大的同类产品

尽管全球目睹了OpenAI的权力斗争和大规模辞职&#xff0c;但作为AI领域的长期支持者&#xff0c;微软并没有放慢自己的人工智能努力。今天&#xff0c;由萨提亚纳德拉领导的公司研究部门发布了Orca 2&#xff0c;这是一对小型语言模型&#xff0c;它们在零样本设置下对复杂推理…

STK Components 二次开发-地面站传感器

上一篇我们说了创建地面站&#xff0c;那么这次我们在地面站添加一些特效。 1. 创建地面站 var locationPoint1 new PointCartographic(m_earth, new Cartographic(Trig.DegreesToRadians(117.17066), Trig.DegreesToRadians(31.84056), 240.359)); m_facility new Platfor…

计算机视觉面试题-01

计算机视觉面试通常涉及广泛的主题&#xff0c;包括图像处理、深度学习、目标检测、特征提取、图像分类等。以下是一些可能在计算机视觉面试中遇到的常见问题&#xff1a; 图像处理和计算机视觉基础 图像是如何表示的&#xff1f; 图像在计算机中可以通过不同的表示方法&…

以非常规思维去做一个嵌入式音视频开发项目!

前言&#xff1a; 大家好&#xff0c;在上周的文章里面&#xff0c;给大家介绍了一个音视频项目&#xff0c;本周继续来分享音视频项目&#xff0c;之前说过&#xff0c;如果你不知道做什么功能开发嘛&#xff0c;因为接触的少&#xff1b;我突然想到&#xff0c;可以去参考市面…

JVM的小知识总结

加载时jvm做了这三件事&#xff1a; 1&#xff09;通过一个类的全限定名来获取该类的二进制字节流 什么是全限定类名&#xff1f; 就是类名全称&#xff0c;带包路径的用点隔开&#xff0c;例如: java.lang.String。 即全限定名 包名类型 非限定类名也叫短名&#xff0c;就…

利用STM32和MFRC522 IC实现智能卡的读取和数据存储

利用STM32微控制器和MFRC522 RFID读写器芯片&#xff0c;可以实现智能卡的读取和数据存储功能。智能卡是一种集成了RFID技术和存储芯片的卡片&#xff0c;它可以用于身份验证、门禁控制、支付系统等应用场景。下面将介绍如何使用STM32和MFRC522芯片进行智能卡的读取和数据存储&…

【计算机视觉】【图像处理综合应用】路沿检测

实验内容&#xff1a;针对给定的视频&#xff0c;利用图像处理基本方法实现道路路沿的检测&#xff1b; 提示&#xff1a;可利用Hough变换进行线检测&#xff0c;融合路沿的结构信息实现路沿边界定位&#xff08;图中红色的点位置&#xff09;。 处理视频文件 处理视频文件的主…

Nginx(资源压缩)

建立在动静分离的基础之上&#xff0c;如果一个静态资源的Size越小&#xff0c;那么自然传输速度会更快&#xff0c;同时也会更节省带宽&#xff0c;因此我们在部署项目时&#xff0c;也可以通过Nginx对于静态资源实现压缩传输&#xff0c;一方面可以节省带宽资源&#xff0c;第…

GPT4测试 — 答题能力及文档处理能力

创建gdp.txt文件&#xff08;使用word 2013创建的文档测试了也可以&#xff0c;WPS建的不行&#xff09; 上传文件&#xff0c;输入prompt: 请帮我答题&#xff0c;把那个正确答案的选项的字母序号填在&#xff08;&#xff09;中&#xff0c;并返回文件blabla… 给我一个文件…

第二十三章 解析PR曲线、ROC曲线、AUC、AP(工具)

混淆矩阵Confusion Matrix 混淆矩阵定义 混淆矩阵是机器学习中总结分类模型预测结果的情形分析表&#xff0c;以矩阵形式将数据集中的记录按照真实的类别与分类模型预测的类别判断两个标准进行汇总。其中矩阵的行表示真实值&#xff0c;矩阵的列表示预测值&#xff0c;下面我…

可燃气体监测仪助力燃气管网安全监测,效果一览

城市地下管线是指城市范围内供应水、排放水、燃气等各类管线及其附属设施&#xff0c;它们是保障城市正常运转的重要基础设施且影响着城市生命线。其中燃气引发的事故近些年不断增加&#xff0c;由于燃气管线深埋地下环境复杂&#xff0c;所以仅仅依赖人工巡查难以全面有效地防…

PCIE链路训练-状态机描述3

Configuration.Idle 1.当使用8b/10b编码时&#xff0c;non-flit模式下&#xff0c;在所用配置的lane上发送s Idle data Symbols&#xff0c;在flit mode下发送IDLE flit。 2.linkup 0 link两端的component均支持64.0GT/s的速率&#xff0c;根据进入此状态之前发送的8个TS2或…