vue中的那些事(刷新+key+v-if,v-for)

news2025/1/18 7:29:22

文章目录

    • vue中添加属性,页面不刷新解决方法
      • 解决思路:
      • 解决方法:
      • 注意事项:
    • vue3中解决方案
      • 解决思路:
      • 解决方法:
      • 注意事项:
    • vue 中key
      • 一、基本概念
      • 二、`key` 的作用
      • 三、`key` 的原理
      • 四、`key` 的使用注意事项
      • 五、总结
      • 六、性能优化方面
      • 七、对 Vue 生命周期的影响
    • Vue 3 中 `key`
      • 一、基本概念
      • 二、`key` 的作用
      • 三、`key` 的原理
      • 四、`key` 的使用注意事项
      • 五、性能优化
      • 六、对组件生命周期的影响
      • 七、总结
      • 八、与 Vue 2 的差异
    • v-if 与v-for 为啥不建议一起用
      • 一、性能问题
      • 二、逻辑混淆
      • 三、优先级问题
      • 四、替代方案
      • 五、总结
      • 六、特殊情况

vue中添加属性,页面不刷新解决方法

以下是解决 Vue 中给对象添加新属性但界面不刷新的问题的方法:

解决思路:

  1. Vue 无法检测对象属性的添加或删除,因为 Vue 会在实例创建时将对象的属性转换为 getter/setter 以实现响应式,而后续添加的属性不会自动转换。
  2. 可以使用 Vue.set()this.$set() 方法添加属性,这会确保新添加的属性是响应式的。
  3. 也可以使用 Object.assign() 方法创建一个新的对象,将原对象和新属性合并,这样 Vue 会重新渲染。

解决方法:

  • 使用 Vue.set() 或 this.$set() 方法
<template>
  <div>
    <p>{{ myObject.name }}</p>
    <button @click="addNewProperty">添加新属性</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      myObject: {
        name: '张三'
      }
    };
  },
  methods: {
    addNewProperty() {
      // 使用 Vue.set 或 this.$set 方法添加新属性
      this.$set(this.myObject, 'age', 25);
    }
  }
};
</script>

代码解释

  • data 中定义了一个对象 myObject ,初始只有 name 属性。

  • methods 中的 addNewProperty 方法里,使用 this.$set(this.myObject, 'age', 25); 来添加新属性 age 并赋值为 25。Vue.set()this.$set() 方法接收三个参数:要修改的对象、新属性的名称、新属性的值。这会确保 Vue 对新添加的属性是可响应的,添加属性后界面会刷新显示新的属性。

  • 使用 Object.assign() 方法

<template>
  <div>
    <p>{{ myObject.name }}</p>
    <p>{{ myObject.age }}</p>
    <button @click="addNewProperty">添加新属性</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      myObject: {
        name: '张三'
      }
    };
  },
  methods: {
    addNewProperty() {
      // 使用 Object.assign 方法添加新属性
      this.myObject = Object.assign({}, this.myObject, { age: 25 });
    }
  }
};
</script>

代码解释

  • 同样在 data 中定义 myObject
  • addNewProperty 方法中,使用 Object.assign({}, this.myObject, { age: 25 }); 来创建一个新对象。Object.assign() 第一个参数是目标对象,这里是空对象,第二个参数是原对象,第三个参数是包含新属性的对象。将结果赋值给 this.myObject ,这样 Vue 会重新渲染界面,显示新添加的属性。

注意事项:

  • Vue.set()this.$set() 方法适用于向已有对象添加一个新属性。
  • Object.assign() 方法会生成一个新的对象,需要将新对象重新赋值给原对象,原对象的引用会发生改变。
  • 不建议直接使用 this.myObject.age = 25; 这样的方式添加新属性,因为 Vue 无法检测到这种方式添加的属性,不会触发界面更新。

vue3中解决方案

以下是在 Vue 3 中给对象添加新属性并使界面刷新的方法:

解决思路:

  1. Vue 3 使用 reactiveref 来创建响应式对象。对于 reactive 对象,直接添加新属性不会触发响应式更新,因为 Vue 3 的响应式系统是基于 Proxy 的,需要使用 ref 或特定的 API 来解决。
  2. 对于 reactive 对象,可以使用 toRefsObject.assign 来添加新属性,同时保持响应式。
  3. 对于 ref 对象,可以直接修改 value 并添加新属性,因为 ref 的值是通过 .value 来访问和修改的,它会自动触发响应式更新。

解决方法:

  • 使用 reactive 对象添加新属性
<template>
  <div>
    <p>{{ myObject.name }}</p>
    <p>{{ myObject.age }}</p>
    <button @click="addNewProperty">添加新属性</button>
  </div>
</template>

<script>
import { reactive, toRefs } from 'vue';

export default {
  setup() {
    const myObject = reactive({
      name: '张三'
    });

    const addNewProperty = () => {
      // 使用 toRefs 和 Object.assign 来添加新属性
      myObject.age = 25;
      Object.assign(toRefs(myObject), { age: myObject.age });
    };

    return {
     ...toRefs(myObject),
      addNewProperty
    };
  }
};
</script>

代码解释

  • 首先从 vue 中导入 reactivetoRefs

  • setup 函数中,使用 reactive 创建一个响应式对象 myObject ,初始只有 name 属性。

  • addNewProperty 方法中,先直接添加 age 属性到 myObject 上(此时还不会触发响应式更新)。

  • 然后使用 Object.assign(toRefs(myObject), { age: myObject.age }); ,将 age 属性转换为 ref ,从而触发响应式更新。

  • 通过 return {...toRefs(myObject), addNewProperty }; 暴露响应式对象和方法。

  • 使用 ref 对象添加新属性

<template>
  <div>
    <p>{{ myObject.value.name }}</p>
    <p>{{ myObject.value.age }}</p>
    <button @click="addNewProperty">添加新属性</button>
  </div>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const myObject = ref({
      name: '张三'
    });

    const addNewProperty = () => {
      // 直接修改 ref 的 value 来添加新属性
      myObject.value.age = 25;
    };

    return {
      myObject,
      addNewProperty
    };
  }
};
</script>

代码解释

  • vue 中导入 ref
  • setup 函数中,使用 ref 创建一个响应式对象 myObject
  • addNewProperty 方法中,直接修改 myObject.value.age = 25; ,因为 ref 对象的 value 是响应式的,修改其 value 会触发界面更新。
  • 通过 return { myObject, addNewProperty }; 暴露响应式对象和方法。

注意事项:

  • 在 Vue 3 中,推荐使用 setup 函数进行组件逻辑的编写。
  • reactive 对象适合复杂对象的响应式处理,但添加新属性时要注意触发响应式的方法。
  • ref 对象更适合处理基本数据类型的响应式,也可以用于对象,但需要通过 .value 来访问和修改。
  • 使用 toRefs 可以将 reactive 对象的属性转换为 ref ,方便在模板中使用和保持响应式。

vue 中key

一、基本概念

在 Vue 的 v-for 指令中,我们通常会使用 key 属性来为列表中的每个元素提供一个唯一的标识符。例如:

<template>
  <ul>
    <li v-for="item in itemList" :key="item.id">{{ item.name }}</li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      itemList: [
        { id: 1, name: '苹果' },
        { id: 2, name: '香蕉' },
        { id: 3, name: '橙子' }
      ]
    };
  }
};
</script>

二、key 的作用

  • 优化性能
    • Vue 在更新使用 v-for 渲染的列表时,需要高效地更新 DOM 元素。key 帮助 Vue 精确地确定哪些元素已经改变、添加或删除,避免不必要的 DOM 操作。
    • 当列表数据发生变化时,Vue 会根据 key 的值来比较新旧节点,只更新真正需要更新的元素,而不是重新渲染整个列表。

三、key 的原理

  • 节点比较机制
    • Vue 会使用虚拟 DOM(Virtual DOM)来更新页面。在更新时,它会对比新旧虚拟 DOM 树。
    • 对于 v-for 渲染的列表元素,没有 key 时,Vue 会使用一种“就地复用”策略,即尝试尽可能复用已有元素,通过移动元素位置和更新元素内容来完成更新。但这种方式可能导致错误,尤其是当列表项顺序发生变化或元素有状态时。
    • key 时,Vue 会根据 key 精确匹配新旧节点,对元素的比较更精确。如果 key 不同,Vue 会认为它们是不同的元素,会创建或销毁相应的元素,而不是复用。
    • 例如,在列表中添加、删除或重新排序元素时:
      • key:Vue 可能会错误地复用元素,导致元素的状态和内容不匹配,比如一个输入框的内容可能会显示在错误的位置。
      • key:Vue 会根据 key 准确找到对应的元素进行更新,保持元素的状态和内容一致性。

四、key 的使用注意事项

  • 唯一性
    • key 的值必须是唯一的,通常使用数据项的唯一标识符,如 id 。使用 index 作为 key 通常不是一个好的选择,因为当列表元素的顺序发生变化时,index 也会改变,可能导致 Vue 错误地复用元素。
    • 以下是使用 index 作为 key 的情况(不推荐):
<template>
  <ul>
    <li v-for="(item, index) in itemList" :key="index">{{ item.name }}</li>
  </ul>
</template>
  • 类型稳定性
    • key 的类型应该保持稳定,避免使用随机数或会改变的属性作为 key ,否则会导致 Vue 频繁创建和销毁元素,影响性能。

五、总结

  • key 在 Vue 的列表渲染中起着至关重要的作用,它通过为列表元素提供唯一标识符,帮助 Vue 精确更新 DOM ,提高性能和避免错误更新。
  • 合理使用 key 可以避免列表更新时出现元素复用错误和性能问题,确保元素状态和内容的准确更新。

六、性能优化方面

  • 当使用 key 时,Vue 可以更快地找到需要更新、添加或删除的元素,避免不必要的 DOM 操作,特别是对于大型列表的更新,性能提升明显。
  • 它使得 Vue 的虚拟 DOM 算法可以更准确地比较新旧节点,减少了比较和更新的复杂度,从而提高了页面更新的效率。

七、对 Vue 生命周期的影响

  • 正确使用 key 可以避免一些组件生命周期钩子的意外触发。例如,在列表元素更新时,如果 key 错误使用,可能会导致组件的 mountedupdated 钩子在不应该触发的时候触发,而正确使用 key 可以确保这些钩子只在必要时被调用。

总之,在 Vue 中使用 key 是一个简单但非常重要的优化手段,能够显著提升 Vue 应用在处理列表更新时的性能和正确性。

Vue 3 中 key

一、基本概念

在 Vue 3 的 v-for 指令中,key 属性依然被广泛使用,用于为列表中的每个元素提供一个唯一标识符。例如:

<template>
  <ul>
    <li v-for="item in itemList" :key="item.id">{{ item.name }}</li>
  </ul>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const itemList = ref([
      { id: 1, name: '苹果' },
      { id: 2, name: '香蕉' },
      { id: 3, name: '橙子' }
    ]);
    return { itemList };
  }
};
</script>

二、key 的作用

  • 优化性能
    • Vue 3 的渲染引擎使用虚拟 DOM 来更新页面。当列表数据发生变化时,key 可以帮助 Vue 3 精确地识别出哪些元素发生了变化,从而只对变化的元素进行 DOM 操作,避免对整个列表进行重新渲染。
    • 有助于 Vue 3 在更新列表时进行更高效的差异比较和更新,提升性能。

三、key 的原理

  • 基于虚拟 DOM 的比较
    • Vue 3 会根据 key 对虚拟 DOM 节点进行精确匹配和对比。
    • 在更新列表时,Vue 3 会遍历新旧虚拟 DOM 树,对于 v-for 渲染的元素:
      • key 存在时,Vue 3 会优先根据 key 来判断新旧节点是否为同一个节点。如果 key 相同,Vue 3 会尝试更新该节点的内容;如果 key 不同,会认为是不同节点,可能会添加新节点或删除旧节点。
      • 没有 key 时,Vue 3 会使用一种“就地复用”策略,尝试复用已有元素,通过调整元素位置和更新元素内容来完成更新,但这种方式可能导致状态不一致或元素错误复用的问题,尤其在列表元素顺序改变或元素包含内部状态(如输入框的输入值)时。

四、key 的使用注意事项

  • 唯一性
    • key 的值应该是唯一的,最好使用数据项的唯一标识符,如对象的 id 。避免使用 index 作为 key ,因为当列表元素顺序发生变化时,使用 index 作为 key 会导致元素错误复用,可能引起数据显示错误或状态丢失。以下是一个使用 index 作为 key 的不推荐示例:
<template>
  <ul>
    <li v-for="(item, index) in itemList" :key="index">{{ item.name }}</li>
  </ul>
</template>
  • 稳定性
    • key 的类型和值应该保持稳定,不要使用会频繁变化的值作为 key ,否则会导致 Vue 3 频繁创建和销毁元素,影响性能。例如,使用随机数作为 key 会导致性能问题。

五、性能优化

  • 减少 DOM 操作
    • 通过使用 key ,Vue 3 可以更精确地定位到需要更新、添加或删除的元素,减少不必要的 DOM 操作,提高更新效率,尤其对于包含大量元素的列表更新效果显著。
    • 避免了对未变化元素的重新渲染,节省了渲染资源和时间。

六、对组件生命周期的影响

  • 避免不必要的组件更新
    • 正确使用 key 可以确保组件的生命周期钩子被正确调用。当 key 发生变化时,会触发组件的销毁和重新创建,相应的 onBeforeUnmountonMounted 等生命周期钩子会被调用;如果 key 未变化,只会触发 onUpdated 等更新相关的生命周期钩子。

七、总结

  • Vue 3 中的 key 是一个重要的优化工具,基于虚拟 DOM 比较机制,它为列表元素提供唯一标识,使 Vue 3 能够精确更新元素。
  • 合理使用 key 可以避免列表更新中的元素错误复用和性能问题,保证列表更新的准确性和高效性。

八、与 Vue 2 的差异

  • Vue 3 的虚拟 DOM 算法在性能和实现细节上可能有所改进,但 key 的基本原理和作用与 Vue 2 类似。
  • Vue 3 更加强调使用 refreactive 来管理数据,在使用 key 时,通常会配合这些响应式数据进行操作,但 key 的核心作用和使用原则保持一致,都是为了精确更新元素和优化性能。

通过合理使用 key ,可以让 Vue 3 应用在处理列表更新时更加高效和稳定,避免出现意外的渲染错误和性能瓶颈。

v-if 与v-for 为啥不建议一起用

以下是关于 Vue 中不建议将 v-ifv-for 一起使用的详细解释:

一、性能问题

  • 重复计算
    • v-ifv-for 一起使用时,v-for 会为列表中的每个元素创建一个 v-if 的判断条件,这可能导致性能问题。
    • 对于 v-for 循环的每一项,都需要先执行 v-if 的条件判断,在列表元素较多的情况下,会产生大量的条件判断操作,增加了计算开销。

二、逻辑混淆

  • 代码可读性
    • 混合使用 v-ifv-for 会使代码的逻辑变得复杂,难以理解和维护。
    • 开发者可能难以清晰地判断 v-if 的条件是针对整个列表还是列表中的单个元素,容易造成混淆。例如:
<template>
  <ul>
    <li v-for="item in itemList" v-if="shouldShow" 
    :key="item.id">{{ item.name }}</li>
  </ul>
</template>
  • 在上述代码中,不清楚 shouldShow 是用于过滤整个列表还是仅针对某个元素。

三、优先级问题

  • Vue 中的优先级
    • 在 Vue 的模板编译过程中,v-for 的优先级比 v-if 更高。
    • 这意味着 v-if 会在 v-for 的每一次迭代中都进行判断,而不是先根据 v-if 的条件筛选元素,再进行 v-for 迭代。例如:
<template>
  <ul>
    <li v-for="item in itemList" v-if="item.isVisible" 
    :key="item.id">{{ item.name }}</li>
  </ul>
</template>
  • 这里会先遍历 itemList 中的每一项,再对每一项进行 item.isVisible 的判断,而不是先过滤出 isVisible 的项再进行遍历,可能导致不必要的计算。

四、替代方案

  • 计算属性
    • 对于需要根据条件过滤列表元素的情况,最好使用计算属性。例如:
<template>
  <ul>
    <li v-for="item in visibleItemList" :key="item.id">{{ item.name }}</li>
  </ul>
</template>

<script>
import { ref } from 'vue';

export default {
  setup() {
    const itemList = ref([
      { id: 1, name: '苹果', isVisible: true },
      { id: 2, name: '香蕉', isVisible: false },
      { id: 3, name: '橙子', isVisible: true }
    ]);

    const visibleItemList = computed(() => {
      return itemList.value.filter(item => item.isVisible);
    });

    return { visibleItemList };
  }
};
</script>
- 这里使用 `computed` 计算属性 `visibleItemList` 来过滤出满足条件的元素,再通过 `v-for` 进行渲染,代码更清晰,性能也更好。

五、总结

  • 不建议将 v-ifv-for 一起使用,因为会带来性能问题、逻辑混淆和优先级导致的意外行为。
  • 优先考虑使用计算属性来实现根据条件筛选列表元素的功能,这样可以提高代码的可读性和性能,避免 v-ifv-for 一起使用时产生的各种问题。

六、特殊情况

  • 在某些情况下,如果 v-if 的条件不依赖于 v-for 的元素,并且对性能影响不大时,可以一起使用,但这是少数情况。一般来说,尽量将它们分开使用,以保证代码的清晰性和性能。

通过避免 v-ifv-for 的混合使用,并使用计算属性等替代方案,可以让 Vue 应用的代码更易于维护和性能优化。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

辅助云运维

为客户提供运维支持&#xff0c;保障业务连续性。 文章目录 一、服务范围二、服务内容三、服务流程四、 服务交付件五、责任分工六、 完成标志 一、服务范围 覆盖范围 云产品使用咨询、问题处理、配置指导等&#xff1b; 云产品相关操作的技术指导&#xff1b; 云相关资源日常…

[Qt]常用控件介绍-多元素控件-QListWidget、QTableWidget、QQTreeWidget

目录 1.多元素控件介绍 2.ListWidget控件 属性 核心方法 核心信号 细节 Demo&#xff1a;编辑日程 3.TableWidget控件 核心方法 QTableWidgetItem核心信号 QTableWidgetItem核心方法 细节 Demo&#xff1a;编辑学生信息 4.TreeWidget控件 核心方法 核心信号…

Windows部署NVM并下载多版本Node.js的方法(含删除原有Node的方法)

本文介绍在Windows电脑中&#xff0c;下载、部署NVM&#xff08;node.js version management&#xff09;环境&#xff0c;并基于其安装不同版本的Node.js的方法。 在之前的文章Windows系统下载、部署Node.js与npm环境的方法&#xff08;https://blog.csdn.net/zhebushibiaoshi…

基于STM32设计的粮食仓库(粮仓)环境监测系统

一、前言 1.1 项目开发背景 随着现代农业的发展和粮食储存规模的扩大&#xff0c;粮仓环境的智能化监控需求日益增长。传统的粮仓管理方式通常依赖人工检测和定期巡查&#xff0c;效率低下且容易出现疏漏&#xff0c;无法及时发现潜在问题&#xff0c;可能导致粮食受潮、霉变…

【Linux】--- 进程的等待与替换

进程的等待与替换 一、进程等待1、进程等待的必要性2、获取子进程status3、进程等待的方法&#xff08;1&#xff09;wait&#xff08;&#xff09;函数&#xff08;2&#xff09;waitpid函数 4、多进程创建以及等待的代码模型5、非阻塞接口 轮询 二、进程替换1、替换原理2、替…

Vue2+OpenLayers添加/删除点、点击事件功能实现(提供Gitee源码)

目录 一、案例截图 二、安装OpenLayers库 三、安装Element-UI 四、代码实现 4.1、添加一个点 4.2、删除所有点 4.3、根据经纬度删除点 4.4、给点添加点击事件 4.5、完整代码 五、Gitee源码 一、案例截图 可以新增/删除标记点&#xff0c;点击标记点可以获取到当前标…

HTML中如何保留字符串的空白符和换行符号的效果

有个字符串 储值门店{{thing3.DATA}}\n储值卡号{{character_string1.DATA}}\n储值金额{{amount4.DATA}}\n当前余额{{amount5.DATA}}\n储值时间{{time2.DATA}} &#xff0c; HTML中想要保留 \n的换行效果的有下面3种方法&#xff1a; 1、style 中 设置 white-space: pre-lin…

GB44495-2024 汽车整车信息安全技术要求 - V2X部分前置要求

背景 GB 44495-2024《汽车整车信息安全技术要求》中关于V2X&#xff08;车与外界通信&#xff09;的部分&#xff0c;主要关注于通信安全要求&#xff0c;旨在确保车辆在与外部设备进行数据交互时的信息安全。其测试大致可分为消息层&#xff08;数据无异常&#xff09;、应用…

[PAT 甲级] 1179 Chemical Equation (DFS)

​ 题目翻译&#xff08;GPT&#xff09;&#xff1a; 1179 化学方程式 化学方程式是一种用符号和公式表示化学反应的方法&#xff0c;其中反应物在方程式的左侧&#xff0c;生成物在右侧。例如&#xff1a; CH₄ 2O₂ -> CO₂ 2H₂O 表示反应物为甲烷和氧气&#xff…

android分区和root

线刷包内容&#xff1a; 线刷包是一个完整的android镜像&#xff0c;不但包括android、linux和用户数据&#xff0c;还包括recovery等。当然此图中没有recovery,但是我们可以自己刷入一个。 主要分区 system.img 系统分区&#xff0c;包括linux下主要的二进制程序。 boot.img…

每日一题(五):n个正整数排列,求组合后最大数

目录 一、题目 二、题目分析 &#xff08;一&#xff09;明确需求 背景知识&#xff1a;字符串的比较与连接 1.字符串的比较 2.字符串的连接 (二)分析思路 三、将思路转换为程序 四、总结 一、题目 给定n个正整数a1,a2,……,an对这n个数进行排列&#xff0c;求组合后可以得到…

【STM32-学习笔记-3-】TIM定时器

文章目录 TIM定时器Ⅰ、TIM定时器函数Ⅱ、TIM_TimeBaseInitTypeDef结构体参数①、TIM_ClockDivision②、TIM_CounterMode③、TIM_Period④、TIM_Prescaler⑤、TIM_RepetitionCounter Ⅱ、定时器配置Ⅲ、定时器外部中断NVIC配置 TIM定时器 Ⅰ、TIM定时器函数 // 将定时器寄存器…

【Rust自学】12.2. 读取文件

12.2.0. 写在正文之前 第12章要做一个实例的项目——一个命令行程序。这个程序是一个grep(Global Regular Expression Print)&#xff0c;是一个全局正则搜索和输出的工具。它的功能是在指定的文件中搜索出指定的文字。 这个项目分为这么几步&#xff1a; 接收命令行参数读…

新垂直电商的社交传播策略与AI智能名片2+1链动模式S2B2C商城小程序的应用探索

摘要&#xff1a;随着互联网技术的不断进步和电商行业的快速发展&#xff0c;传统电商模式已难以满足消费者日益增长的个性化和多元化需求。新垂直电商在此背景下应运而生&#xff0c;通过精准定位、用户细分以及深度社交传播策略&#xff0c;实现了用户群体的快速裂变与高效营…

【ORACLE战报】2025.1月OCP | MySQL考试

2025.1月【最新考试成绩出炉】 OCP战报 MySQL 战报 部分学员成绩及证书

九 RK3568 android11 MPU6500

一 MPU6500 内核驱动 1.1 查询设备连接地址 查看原理图, MPU6500 I2C 连接在 I2C4 上, 且中断没有使用 i2c 探测设备地址为 0x68 1.2 驱动源码 drivers/input/sensors/gyro/mpu6500_gyro.c drivers/input/sensors/accel/mpu6500_acc.c 默认 .config 配置编译了 mpu6550 …

Android JecPack组件之LifeCycles 使用详解

一、背景 LifeCycle 是一个可以感知宿主生命周期变化的组件。常见的宿主包括 Activity/Fragment、Service 和 Application。LifeCycle 会持有宿主的生命周期状态的信息&#xff0c;当宿主生命周期发生变化时&#xff0c;会通知监听宿主的观察者。 LifeCycle 的出现主要是为了…

机器学习(2):线性回归Python实现

1 概念回顾 1.1 模型假设 线性回归模型假设因变量y yy与自变量x xx之间的关系可以用以下线性方程表示&#xff1a; y β 0 β 1 ⋅ X 1 β 2 ⋅ X 2 … β n ⋅ X n ε y 是因变量 (待预测值)&#xff1b;X1, X2, ... Xn 是自变量&#xff08;特征&#xff09;β0, β1,…

2025.1.15——二、字符型注入

一、基本操作&#xff1a;整理已知信息&#xff0c;本题为字符型注入 二、解题步骤 step 1&#xff1a;确认为字符型注入 键入&#xff1a; 1 键入&#xff1a;1 and 12 # 发现报错 键入&#xff1a;1 and 11 # 未发现报错 所以确认为字符型注入 step 2&#xff1a;查询…

4、dockerfile实现lnmp和elk

dockerfile实现lnmp 使用dockerfile n&#xff1a;nginx&#xff0c;172.111.0.10 m&#xff1a;mysql&#xff0c;172.111.0.20 p&#xff1a;php&#xff0c;172.111.0.30 安装配置nginx 1、准备好nginx和wordpress安装包 2、配置dockerfile 3、配置nginx主配置文件ngin…