【技术积累】Vue.js中的核心知识
Vue的生命周期
Vue中的生命周期是指组件从创建到销毁的整个过程中,会触发一系列的钩子函数
Vue2中的生命周期
Vue2中的生命周期钩子函数是在组件的不同阶段执行的特定函数。这些钩子函数允许开发者在组件的不同生命周期阶段执行自定义的逻辑。
Vue2中的生命周期钩子函数可以分为8个阶段,按照执行顺序依次是:
-
beforeCreate:在实例初始化之后,数据观测和事件配置之前被调用。在这个阶段,组件的数据和方法还未初始化,无法访问到组件实例的属性和方法。
-
created:在实例创建完成后被调用。在这个阶段,组件的数据和方法已经初始化完成,可以访问到组件实例的属性和方法。但是此时组件还未挂载到DOM上。
-
beforeMount:在组件挂载到DOM之前被调用。在这个阶段,组件已经完成了模板的编译,但是还未将组件的模板渲染到真实的DOM中。
-
mounted:在组件挂载到DOM之后被调用。在这个阶段,组件的模板已经被渲染到真实的DOM中,可以进行DOM操作和访问DOM元素。
-
beforeUpdate:在组件更新之前被调用。在这个阶段,组件的数据发生了变化,但是DOM尚未更新。可以在这个阶段进行数据的修改和操作。
-
updated:在组件更新之后被调用。在这个阶段,组件的数据已经更新完成,DOM也已经更新。可以进行DOM操作和访问DOM元素。
-
beforeDestroy:在组件销毁之前被调用。在这个阶段,组件实例仍然可用,可以进行一些清理工作,如清除定时器、取消订阅等。
-
destroyed:在组件销毁之后被调用。在这个阶段,组件实例已经被销毁,无法再访问到组件实例的属性和方法。
除了这些常用的生命周期钩子函数外,Vue2还提供了一些其他的钩子函数,如activated和deactivated,用于处理组件在keep-alive组件中的缓存和激活状态的切换。
通过在这些生命周期钩子函数中编写逻辑,开发者可以在组件的不同阶段执行自定义的操作,如初始化数据、发送请求、订阅事件、操作DOM等。这些生命周期钩子函数的使用可以帮助开发者更好地控制组件的行为和交互。
beforeCreate
在Vue2中,beforeCreate是一个生命周期钩子函数,它在实例被创建之初被调用。在这个阶段,实例的数据观测和事件机制都尚未初始化,因此在beforeCreate中无法访问到data、computed、methods等实例属性和方法。
下面是一个案例来说明beforeCreate的使用:
<template><div><h1>{{ message }}</h1></div>
</template><script>
export default {beforeCreate() {console.log("beforeCreate hook");this.message = "Hello Vue!";},created() {console.log("created hook");},data() {return {message: ""};}
};
</script><style scoped>
h1 {color: blue;
}
</style>
在上面的代码中,我们定义了一个Vue组件,其中使用了beforeCreate钩子函数。在beforeCreate中,我们打印了一条消息并给message属性赋值。然后在模板中使用了message属性来显示文本。
当我们运行这个组件时,控制台会输出"beforeCreate hook",然后页面上会显示"Hello Vue!"。
解释代码:
- 在beforeCreate钩子函数中,我们可以执行一些初始化的操作,但是此时实例的数据和方法还没有被初始化,因此无法访问data、computed、methods等属性和方法。
- 在created钩子函数中,实例的数据和方法已经被初始化,可以访问data、computed、methods等属性和方法。
需要注意的是,beforeCreate钩子函数是在实例被创建之前被调用的,因此在这个阶段无法访问到实例的DOM元素。如果需要操作DOM元素,可以在mounted钩子函数中进行操作。
created函数
在Vue2中,created是一个生命周期钩子函数,它在实例被创建之后被调用。在这个阶段,实例的数据观测和事件机制都已经初始化完成,可以访问到data、computed、methods等实例属性和方法。
下面是一个案例来说明created的使用:
<template><div><h1>{{ message }}</h1></div>
</template><script>
export default {created() {console.log("created hook");this.message = "Hello Vue!";},data() {return {message: ""};}
};
</script><style scoped>
h1 {color: blue;
}
</style>
在上面的代码中,我们定义了一个Vue组件,其中使用了created钩子函数。在created中,我们打印了一条消息并给message属性赋值。然后在模板中使用了message属性来显示文本。
当我们运行这个组件时,控制台会输出"created hook",然后页面上会显示"Hello Vue!"。
解释代码:
- 在created钩子函数中,实例的数据和方法已经被初始化,可以访问data、computed、methods等属性和方法。
- 在created钩子函数中,我们可以执行一些初始化的操作,例如发送网络请求、订阅事件等。
- 在created钩子函数中,我们可以对实例的属性进行修改和操作,例如给message属性赋值。
需要注意的是,created钩子函数是在实例被创建之后被调用的,因此在这个阶段可以访问到实例的DOM元素。如果需要操作DOM元素,可以在mounted钩子函数中进行操作。
beforeMount
在Vue2中,beforeMount是一个生命周期钩子函数,它在实例被挂载到DOM之前被调用。在这个阶段,模板已经编译完成,但是尚未将实例挂载到DOM上。
下面是一个案例来说明beforeMount的使用:
<template><div><h1>{{ message }}</h1></div>
</template><script>
export default {beforeMount() {console.log("beforeMount hook");this.message = "Hello Vue!";},mounted() {console.log("mounted hook");},data() {return {message: ""};}
};
</script><style scoped>
h1 {color: blue;
}
</style>
在上面的代码中,我们定义了一个Vue组件,其中使用了beforeMount钩子函数。在beforeMount中,我们打印了一条消息并给message属性赋值。然后在模板中使用了message属性来显示文本。
当我们运行这个组件时,控制台会输出"beforeMount hook",然后页面上会显示"Hello Vue!"。
解释代码:
- 在beforeMount钩子函数中,模板已经编译完成,但是尚未将实例挂载到DOM上,因此无法访问到实例的DOM元素。
- 在beforeMount钩子函数中,我们可以对实例的属性进行修改和操作,例如给message属性赋值。
- 在mounted钩子函数中,实例已经被挂载到DOM上,可以访问到实例的DOM元素。
需要注意的是,beforeMount钩子函数是在实例被挂载到DOM之前被调用的,因此在这个阶段无法访问到实例的DOM元素。如果需要操作DOM元素,可以在mounted钩子函数中进行操作。
mounted
在Vue2中,mounted是一个生命周期钩子函数,它在实例被挂载到DOM之后被调用。在这个阶段,实例已经被挂载到DOM上,可以访问到实例的DOM元素。
下面是一个案例来说明mounted的使用:
<template><div><h1>{{ message }}</h1></div>
</template><script>
export default {mounted() {console.log("mounted hook");this.message = "Hello Vue!";},data() {return {message: ""};}
};
</script><style scoped>
h1 {color: blue;
}
</style>
在上面的代码中,我们定义了一个Vue组件,其中使用了mounted钩子函数。在mounted中,我们打印了一条消息并给message属性赋值。然后在模板中使用了message属性来显示文本。
当我们运行这个组件时,控制台会输出"mounted hook",然后页面上会显示"Hello Vue!"。
解释代码:
- 在mounted钩子函数中,实例已经被挂载到DOM上,可以访问到实例的DOM元素。
- 在mounted钩子函数中,我们可以执行一些需要操作DOM元素的操作,例如获取DOM元素的尺寸、绑定事件等。
- 在mounted钩子函数中,我们可以对实例的属性进行修改和操作,例如给message属性赋值。
需要注意的是,mounted钩子函数是在实例被挂载到DOM之后被调用的,因此在这个阶段可以访问到实例的DOM元素。如果需要在实例被挂载到DOM之前执行一些操作,可以使用beforeMount钩子函数。
beforeUpdate
在Vue2中,beforeUpdate是一个生命周期钩子函数,它在数据更新之前被调用。在这个阶段,实例的数据已经发生了改变,但是DOM尚未更新。
下面是一个案例来说明beforeUpdate的使用:
<template><div><h1>{{ message }}</h1><button @click="updateMessage">Update Message</button></div>
</template><script>
export default {data() {return {message: "Hello Vue!"};},beforeUpdate() {console.log("beforeUpdate hook");},methods: {updateMessage() {this.message = "Updated Message";}}
};
</script><style scoped>
h1 {color: blue;
}
</style>
在上面的代码中,我们定义了一个Vue组件,其中使用了beforeUpdate钩子函数。在beforeUpdate中,我们打印了一条消息。我们还定义了一个按钮,当点击按钮时,会更新message的值。
当我们运行这个组件时,当点击按钮时,控制台会输出"beforeUpdate hook",然后页面上会显示"Updated Message"。
解释代码:
- 在beforeUpdate钩子函数中,实例的数据已经发生了改变,但是DOM尚未更新。
- 在beforeUpdate钩子函数中,我们可以执行一些在数据更新之前需要进行的操作,例如发送网络请求、更新其他数据等。
需要注意的是,beforeUpdate钩子函数是在数据更新之前被调用的,因此在这个阶段无法访问到更新后的DOM。如果需要在数据更新之后执行一些操作,可以使用updated钩子函数。
updated
在Vue2中,updated是一个生命周期钩子函数,它在数据更新之后被调用。在这个阶段,实例的数据已经发生了改变,并且DOM也已经更新完成。
下面是一个案例来说明updated的使用:
<template><div><h1>{{ message }}</h1><button @click="updateMessage">Update Message</button></div>
</template><script>
export default {data() {return {message: "Hello Vue!"};},updated() {console.log("updated hook");},methods: {updateMessage() {this.message = "Updated Message";}}
};
</script><style scoped>
h1 {color: blue;
}
</style>
在上面的代码中,我们定义了一个Vue组件,其中使用了updated钩子函数。在updated中,我们打印了一条消息。我们还定义了一个按钮,当点击按钮时,会更新message的值。
当我们运行这个组件时,当点击按钮时,页面上会显示"Updated Message",并且控制台会输出"updated hook"。
解释代码:
- 在updated钩子函数中,实例的数据已经发生了改变,并且DOM也已经更新完成。
- 在updated钩子函数中,我们可以执行一些在数据更新之后需要进行的操作,例如操作更新后的DOM元素、执行一些额外的逻辑等。
需要注意的是,updated钩子函数是在数据更新之后被调用的,因此在这个阶段可以访问到更新后的DOM。如果需要在数据更新之前执行一些操作,可以使用beforeUpdate钩子函数。
beforeDestroy
在Vue2中,beforeDestroy是一个生命周期钩子函数,它在实例销毁之前被调用。在这个阶段,实例仍然完全可用,可以访问到实例的属性和方法。
下面是一个案例来说明beforeDestroy的使用:
<template><div><h1>{{ message }}</h1><button @click="destroyComponent">Destroy Component</button></div>
</template><script>
export default {data() {return {message: "Hello Vue!"};},beforeDestroy() {console.log("beforeDestroy hook");},methods: {destroyComponent() {this.$destroy();}}
};
</script><style scoped>
h1 {color: blue;
}
</style>
在上面的代码中,我们定义了一个Vue组件,其中使用了beforeDestroy钩子函数。在beforeDestroy中,我们打印了一条消息。我们还定义了一个按钮,当点击按钮时,会销毁组件。
当我们运行这个组件时,当点击按钮时,控制台会输出"beforeDestroy hook",然后组件会被销毁。
解释代码:
- 在beforeDestroy钩子函数中,实例仍然完全可用,可以访问到实例的属性和方法。
- 在beforeDestroy钩子函数中,我们可以执行一些在实例销毁之前需要进行的操作,例如清除定时器、取消订阅等。
需要注意的是,beforeDestroy钩子函数是在实例销毁之前被调用的,因此在这个阶段实例仍然可用。如果需要在实例销毁之后执行一些操作,可以使用destroyed钩子函数。
destoryed
在Vue2中,destroyed是一个生命周期钩子函数,它在实例销毁之后被调用。在这个阶段,实例已经被完全销毁,无法再访问到实例的属性和方法。
下面是一个案例来说明destroyed的使用:
<template><div><h1>{{ message }}</h1><button @click="destroyComponent">Destroy Component</button></div>
</template><script>
export default {data() {return {message: "Hello Vue!"};},destroyed() {console.log("destroyed hook");},methods: {destroyComponent() {this.$destroy();}}
};
</script><style scoped>
h1 {color: blue;
}
</style>
在上面的代码中,我们定义了一个Vue组件,其中使用了destroyed钩子函数。在destroyed中,我们打印了一条消息。我们还定义了一个按钮,当点击按钮时,会销毁组件。
当我们运行这个组件时,当点击按钮时,组件会被销毁,控制台会输出"destroyed hook"。
解释代码:
- 在destroyed钩子函数中,实例已经被完全销毁,无法再访问到实例的属性和方法。
- 在destroyed钩子函数中,我们可以执行一些在实例销毁之后需要进行的操作,例如清除全局事件监听器、释放资源等。
需要注意的是,destroyed钩子函数是在实例销毁之后被调用的,因此在这个阶段无法再访问到实例的属性和方法。如果需要在实例销毁之前执行一些操作,可以使用beforeDestroy钩子函数。
Vue3中的生命周期
Vue 3的生命周期相对于Vue 2有所改变,主要是为了更好地支持Composition API。以下是Vue 3的生命周期:
-
setup:在组件实例化之前被调用。在这个阶段,可以进行组件的初始化工作,包括响应式数据的设置、计算属性的定义、方法的定义等。
-
beforeCreate:在组件实例创建之前被调用。在这个阶段,可以进行一些初始化工作,但是无法访问到响应式数据和组件实例。
-
created:在组件实例创建完成后被立即调用。在这个阶段,可以访问到响应式数据和组件实例,可以进行一些数据的初始化操作。
-
beforeMount:在组件挂载开始之前被调用。在这个阶段,模板已经编译完成,但是还未挂载到页面上。
-
mounted:在组件挂载完成后被调用。在这个阶段,组件已经被挂载到页面上,可以进行DOM操作。
-
beforeUpdate:在组件更新之前被调用。在这个阶段,可以进行一些数据的修改操作。
-
updated:在组件更新之后被调用。在这个阶段,可以执行依赖于DOM的操作。
-
beforeUnmount:在组件卸载之前被调用。在这个阶段,组件仍然可用,可以进行一些清理工作。
-
unmounted:在组件卸载之后被调用。在这个阶段,组件的指令和事件监听器已经被移除,组件实例被销毁。
通过这些生命周期钩子函数,我们可以在不同的阶段执行相应的操作,比如在setup阶段进行组件的初始化,mounted阶段进行DOM操作,beforeUnmount阶段进行资源清理等。同时,Vue 3还引入了更灵活的Composition API,可以更好地组织和复用组件逻辑。
beforeMount
在Vue3中,`beforeMount`是一个选项式API的生命周期函数,它在挂载开始之前被调用。在`beforeMount`阶段,模板编译已完成,但是尚未将模板渲染到DOM中。
下面是一个使用`beforeMount`的案例,通过在`beforeMount`中修改DOM元素的样式来展示其使用方法:
<template><div><p ref="message">{{ message }}</p></div>
</template><script setup>
import { onBeforeMount, ref } from 'vue';const message = ref('Hello, Vue3!');onBeforeMount(() => {console.log('beforeMount hook');const messageElement = document.querySelector('#message');messageElement.style.color = 'red';
});
</script><style scoped>
/* 样式 */
</style>
在上述代码中,我们首先导入了`onBeforeMount`和`ref`函数。然后,在`onBeforeMount`函数中,我们打印了一条消息,并通过`document.querySelector`方法获取到`<p>`元素的引用,然后修改其样式为红色。
当组件挂载开始之前,`beforeMount`函数会被调用,控制台会输出'beforeMount hook',同时`<p>`元素的文字颜色会变为红色。
需要注意的是,`beforeMount`函数中可以访问到组件实例的数据和方法,因为此时组件实例已经创建完成。同时,`beforeMount`函数中可以直接操作DOM元素,但是建议使用Vue的响应式数据来管理DOM的状态,以便更好地利用Vue的特性。
总结:`beforeMount`函数在挂载开始之前被调用,可以用于在DOM渲染之前进行一些操作,例如修改DOM元素的样式、添加事件监听器等。
mounted
在Vue3中,`mounted`是一个选项式API的生命周期函数,它在组件挂载到DOM之后调用。在`mounted`阶段,组件已经被渲染到DOM中,可以进行DOM操作和访问DOM元素。
下面是一个使用`mounted`的案例,通过在`mounted`中添加一个事件监听器来展示其使用方法:
<template><div><button ref="button">Click me</button></div>
</template><script setup>
import { onMounted, ref } from 'vue';onMounted(() => {console.log('mounted hook');const buttonElement = document.querySelector('#button');buttonElement.addEventListener('click', handleClick);
});function handleClick() {console.log('Button clicked');
}
</script><style scoped>
/* 样式 */
</style>
在上述代码中,我们使用`onMounted`函数来注册一个回调函数,在组件挂载到DOM之后调用。在回调函数中,我们打印了一条消息,并通过`document.querySelector`方法获取到`<button>`元素的引用,然后添加了一个点击事件的监听器。
当组件挂载到DOM之后,`mounted`函数会被调用,控制台会输出'mounted hook'。同时,当点击按钮时,控制台会输出'Button clicked'。
需要注意的是,`mounted`函数中可以访问到组件实例的数据和方法,因为此时组件已经被渲染到DOM中。同时,`mounted`函数中可以进行一些需要访问DOM元素的操作,例如添加事件监听器、初始化第三方库等。
总结:`mounted`函数在组件挂载到DOM之后调用,可以用于进行一些需要访问DOM元素的操作,例如添加事件监听器、初始化第三方库等。
beforeUpdate
在Vue3中,`beforeUpdate`是一个选项式API的生命周期函数,它在组件更新之前调用。在`beforeUpdate`阶段,组件的数据已经发生了改变,但是DOM尚未更新。
下面是一个使用`beforeUpdate`的案例,通过在`beforeUpdate`中打印更新前后的数据来展示其使用方法:
<template><div><p>{{ message }}</p><button @click="updateMessage">Update Message</button></div>
</template><script setup>
import { onBeforeUpdate, ref } from 'vue';const message = ref('Hello, Vue3!');onBeforeUpdate(() => {console.log('beforeUpdate hook');console.log('Previous message:', message.value);
});function updateMessage() {message.value = 'Updated message';
}
</script><style scoped>
/* 样式 */
</style>
在上述代码中,我们使用`beforeUpdate`函数来注册一个回调函数,在组件更新之前调用。在回调函数中,我们打印了一条消息,并输出了更新前的`message`的值。
在模板中,我们展示了`message`的值,并提供了一个按钮,点击按钮会调用`updateMessage`函数来更新`message`的值。
当点击按钮时,`updateMessage`函数会被调用,`message`的值会发生改变。然后,`beforeUpdate`函数会被调用,控制台会输出'beforeUpdate hook'和'Previous message: Hello, Vue3!',即更新前的`message`的值。
需要注意的是,`beforeUpdate`函数中可以访问到组件实例的数据和方法,因为此时组件的数据已经发生了改变。同时,`beforeUpdate`函数中可以进行一些在组件更新之前的操作,例如获取更新前的数据、做一些准备工作等。
总结:`beforeUpdate`函数在组件更新之前调用,可以用于进行一些在组件更新之前的操作,例如获取更新前的数据、做一些准备工作等。
updated
在Vue3中,`updated`是一个选项式API的生命周期函数,它在组件更新完成后调用。在`updated`阶段,组件的数据已经发生了改变,并且DOM也已经更新完毕。
下面是一个使用`updated`的案例,通过在`updated`中打印更新后的数据来展示其使用方法:
<template><div><p>{{ message }}</p><button @click="updateMessage">Update Message</button></div>
</template><script setup>
import { onUpdated, ref } from 'vue';const message = ref('Hello, Vue3!');onUpdated(() => {console.log('updated hook');console.log('Updated message:', message.value);
});function updateMessage() {message.value = 'Updated message';
}
</script><style scoped>
/* 样式 */
</style>
在上述代码中,我们使用`onUpdated`函数来注册一个回调函数,在组件更新完成后调用。在回调函数中,我们打印了一条消息,并输出了更新后的`message`的值。
在模板中,我们展示了`message`的值,并提供了一个按钮,点击按钮会调用`updateMessage`函数来更新`message`的值。
当点击按钮时,`updateMessage`函数会被调用,`message`的值会发生改变。然后,`onUpdated`函数会被调用,控制台会输出'updated hook'和'Updated message: Updated message',即更新后的`message`的值。
需要注意的是,`onUpdated`函数中可以访问到组件实例的数据和方法,因为此时组件的数据已经发生了改变,并且DOM也已经更新完毕。同时,`onUpdated`函数中可以进行一些在组件更新完成后的操作,例如获取更新后的数据、执行一些额外的逻辑等。
总结:`updated`函数在组件更新完成后调用,可以用于进行一些在组件更新完成后的操作,例如获取更新后的数据、执行一些额外的逻辑等。
beforeUnmount
在Vue3中,beforeUnmount是一个选项式API的生命周期函数,它在组件卸载之前调用。在beforeUnmount阶段,组件即将从DOM中被移除。
下面是一个使用`beforeUnmount`的案例,通过在`beforeUnmount`中执行一些清理操作来展示其使用方法:
<template><div><p>{{ message }}</p><button @click="unmountComponent">Unmount Component</button></div>
</template><script setup>
import { onBeforeUnmount, ref } from 'vue';const message = ref('Hello, Vue3!');onBeforeUnmount(() => {console.log('onBeforeUnmount hook');// 执行一些清理操作
});function unmountComponent() {// 卸载组件
}
</script><style scoped>
/* 样式 */
</style>
在上述代码中,我们使用`onBeforeUnmount`函数来注册一个回调函数,在组件卸载之前调用。在回调函数中,我们打印了一条消息,并可以执行一些清理操作,例如取消订阅、清除定时器等。
在模板中,我们展示了`message`的值,并提供了一个按钮,点击按钮会调用`unmountComponent`函数来卸载组件。
当点击按钮时,`unmountComponent`函数会被调用,组件会被卸载。然后,`onBeforeUnmount`函数会被调用,控制台会输出'onBeforeUnmount hook',即组件即将被卸载。
需要注意的是,`onBeforeUnmount`函数中可以访问到组件实例的数据和方法,因为此时组件即将被卸载。同时,`onBeforeUnmount`函数中可以进行一些在组件卸载之前的清理操作,例如取消订阅、清除定时器等。
总结:`onBeforeUnmount`函数在组件卸载之前调用,可以用于进行一些在组件卸载之前的清理操作,例如取消订阅、清除定时器等。
unmounted
在Vue3中,`unmounted`是一个选项式API的生命周期函数,它在组件卸载完成后调用。在`unmounted`阶段,组件已经从DOM中被移除。
下面是一个使用`unmounted`的案例,通过在`unmounted`中执行一些清理操作来展示其使用方法:
<template><div><p>{{ message }}</p><button @click="unmountComponent">Unmount Component</button></div>
</template><script setup>
import { onUnmounted, ref } from 'vue';const message = ref('Hello, Vue3!');onUnmounted(() => {console.log('unmounted hook');// 执行一些清理操作
});function unmountComponent() {// 卸载组件
}
</script><style scoped>
/* 样式 */
</style>
在上述代码中,我们使用`onUnmounted`函数来注册一个回调函数,在组件卸载完成后调用。在回调函数中,我们打印了一条消息,并可以执行一些清理操作,例如取消订阅、清除定时器等。
在模板中,我们展示了`message`的值,并提供了一个按钮,点击按钮会调用`unmountComponent`函数来卸载组件。
当点击按钮时,`unmountComponent`函数会被调用,组件会被卸载。然后,`onUnmounted`函数会被调用,控制台会输出'unmounted hook',即组件已经被卸载。
需要注意的是,`onUnmounted`函数中可以访问到组件实例的数据和方法,因为此时组件已经被卸载。同时,`onUnmounted`函数中可以进行一些在组件卸载完成后的清理操作,例如取消订阅、清除定时器等。
总结:`unmounted`函数在组件卸载完成后调用,可以用于进行一些在组件卸载完成后的清理操作,例如取消订阅、清除定时器等。
相关文章:

【技术积累】Vue.js中的核心知识
Vue的生命周期 Vue中的生命周期是指组件从创建到销毁的整个过程中,会触发一系列的钩子函数 Vue2中的生命周期 Vue2中的生命周期钩子函数是在组件的不同阶段执行的特定函数。这些钩子函数允许开发者在组件的不同生命周期阶段执行自定义的逻辑。 Vue2中的生命周期钩…...

flutter开发实战-显示本地图片网络图片及缓存目录图片
flutter开发实战-显示本地图片网络图片及缓存目录图片 在最近开发中碰到了需要显示缓存目录图片,这里顺便整理一下,显示本地图片、网络图片、缓存目录图片的方法。 一、工程本地图片显示 1 在项目根目录下创建名为 images文件夹,也可以将i…...

面对未来的算法备案法规:企业需要做哪些准备?
在信息时代,算法已经成为我们生活的一部分,涵盖了诸如搜索引擎、社交媒体、电子商务、广告投放等各个方面。然而,随着算法的广泛应用,其带来的问题也日益凸显。这引发了全球范围内的关注,未来的算法备案法规正在酝酿之…...

iptables的备份和还原
iptables的备份和还原 1、写在命令行当中的都是临时设置 2、把规则配置写在服务的文件当中,形成永久有效 备份:把iptables里面所有的配置都保存在/opt/ky30.bak中 iptables-save > /opt/ky30.bak 例: 默认配置文件在/etc/sysconfig/ip…...

easyUI框架学习
文章目录 一、前言二、引入使用easyUI 三、用法3.1 Dialog(对话框窗口)3.1.1 示例13.1.2 示例2 3.2 Layout(布局)3.2.1 示例1——通过标签创建布局3.2.2 示例2—— 创建嵌套布局 3.3 DateBox(日期输入框)3.…...

加入气压计模组,星斗3号将实现快速三维定位
随着信息技术的飞速发展,人们的生活正在发生巨大改变,人们对基于位置服务的需求越来越迫切,尤其是室内位置服务。 室外定位系统中BDS系统、GPS系统等受室内复杂环境条件限制精度大幅下降甚至失效,难以在室内定位中发挥作用,而室内二维定位技术缺乏高程信息,也难以满足人们对室…...

华为HCIP第二节-------------------------ISIS
IS-IS(Intermediate System to Intermediate System,中间系统到中间系统)是ISO (International Organization for Standardization,国际标准化组织)为它的CLNP(ConnectionLessNetwork Protocol&…...

在Mac系统下搭建Selenium环境并驱动Chrome浏览器
本文带领那些使用Mac的童鞋们实现Selenium驱动Chrome浏览器,虽然会有坑,但是我们可以凭借敏捷的身手躲过。下面就开始吧: 安装selenium 打开终端 ->pip安装(安装命令:pip3 install selenium) 安装浏览…...

通过RPM方式安装,升级,卸载,以及配置使用MySQL
通过RPM方式安装,升级,卸载,以及配置使用MySQL 一、下载 MySQL是一种开源的关系数据库管理系统,被广泛应用于各种业务应用中。本文将讲解如何下载和安装MySQL的rpm安装包。 下载rmp安装包有多种方式: 1、官网下载 …...

六边形架构和分层架构的区别?
六边形架构和分层架构是什么? 六边形架构(Hexagonal Architecture)和分层架构(Layered Architecture)是两种常见的软件架构模式。六边形架构强调将核心业务逻辑与外部依赖解耦,通过接口与外部世界进行通信。…...

一封来自Java学姐的信
黑马JavaEE学科学姐想对学弟学妹们说:勤学如春起之苗,不见其增,日有所长。 辍学如磨刀之石,不见其损,日有所亏。 学科 | JavaEE 校区 | 太原 亲爱的学弟学妹们,在学校“混日子”的时间很快就过去了&…...

Mybatis增强版MyBatis-Flex简介
Mybatis增强版:Mybatis-Plus(使用的最多,老牌Mybatis增强框架,2016年开源)、Fluent-MyBatis(阿里云开发的Mybatis增强框架,来自阿里云.云效产品团队)、Mybatis-Flex。 Flex英文单词意思是灵活,Mybatis-Flex官方文档中多…...

MFC第二十一天 CS架构多页面开发与数据交互、CImageList图像列表介绍 、CListCtrl-SetItem设置列表项的方法
文章目录 CImageList图像列表介绍CListCtrl图标的原理CListCtrl列表图标设置CListCtrl-SetItem设置列表项的方法 CS架构多页面开发与数据交互添加用户实现向导多页数据交互pch.hCLientXq.h CAppCPage1.hCPage1.cppCPage2.hCPage2.cppCWorkerDlg .hCWorkerDlg.cpp 多页数据修改C…...

spring boot--自动化注入组件原理、内嵌tomcat-1
前言 我们知道开发spring boot项目,在启动类上添加注解SpringBootApplication ,然后引入要自动注入的组件依赖,然后现application.properties中加上相应配置就可以自动注入这个组件,那么下面看看自动注入组件是如何实现的 一、S…...

短视频矩阵系统源码---开发技术源码能力
短视频矩阵系统开发涉及到多个领域的技术,包括视频编解码技术、大数据处理技术、音视频传输技术、电子商务及支付技术等。因此,短视频矩阵系统开发人员需要具备扎实的计算机基础知识、出色的编程能力、熟练掌握多种开发工具和框架,并掌握音视…...

可观测之调用链Skywalking
简介 分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。 多种监控手段。可以通过语言探针和 service mesh 获得监控…...

linux上适用的反汇编调试软件(对标od)
ubuntu下类似于od软件 经过搜索,在Ubuntu上选用edb-debugger进行动态调试, 下载链接: https://github.com/eteran/edb-debugger 但是依赖反汇编引擎: https://github.com/capstone-engine/capstone 安装 先安装capstone 先下载release的版本…...

基于高斯混合模型聚类的风电场短期功率预测方法(Pythonmatlab代码实现)
目录 💥1 概述 📚2 运行结果 2.1 Python 2.2 Matlab 🎉3 参考文献 🌈4 Matlab代码、数据、文章讲解 💥1 概述 文献来源: 摘要:对任意来流条件下的风电场发电功率进行准确预测,是提高电网对风电…...

【深入了解pytorch】PyTorch循环神经网络(RNN)
【深入了解pytorch】PyTorch循环神经网络(RNN) PyTorch循环神经网络(RNN):概念、工作原理与常见变体循环神经网络概念和工作原理RNN的结构RNN的工作原理LSTM(长短期记忆网络)LSTM的结构LSTM的工作原理GRU(门控循环单元)GRU的结构GRU的工作原理在PyTorch中实现RNN、LST…...

电商运营的方法
1、以后干,不如现在干 1.1 做代理,搞研发 1.2 自建店铺,去看其他店铺的设计样板 1.3 记住网店挣钱三要点:装修,物流,产品资源 1.4 记住你的职责,让别人明白怎么做,仔细看资料,搞清楚细节 2、如何打开机器人 3.设置自动回复 Ctrl + tab 4.如何做基础销量,做一个刷…...

Swift 如何确定 scrollView 已经滑动结束
在 iOS 的 UIScrollView 中,你可以通过实现 UIScrollViewDelegate 的方法来检测滑动结束事件。具体来说,你可以实现以下方法: func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {if !decelerat…...

html学习2(css、图像)
1、层叠样式表css是为了更好的渲染html元素而引入的。 2、css添加到html的方式,最好的方式是通过外部引用CSS文件 内联样式- 在HTML元素中使用"style" 属性,当特殊的样式需要应用到个别元素时,就可以使用内联样式。 使用内联样式…...

微服务探索之路06篇k8s配置文件Yaml部署Redis使用Helm部署MongoDB和kafka
1 安装Redis 1.1创建配置文件redis.conf 切换到自己的目录下如本文是放在/home/ubuntu下 cd /home/ubuntuvim redis.conf bind 0.0.0.0 protected-mode yes port 6379 requirepass qwe123456 tcp-backlog 511 timeout 0 tcp-keepalive 300 daemonize no pidfile /var/run/r…...

Microsoft todo 数据导出
文章目录 官方说明: https://support.microsoft.com/zh-cn/office/导出您的-microsoft-待办事项帐户-d286b243-affb-4db4-addc-162e16588943 由于 微软待办 会自动与 Outlook 中的任务同步,因此您可以从 Outlook 中导出所有列表和任务。 若要导出列表和…...

SSIS对SQL Server向Mysql数据转发表数据 (二)
1、在SQL Server数据库创建一个数据库表:users USE [Test1] GO/****** Object: Table [dbo].[users] Script Date: 2023/7/27 16:25:11 ******/ SET ANSI_NULLS ON GOSET QUOTED_IDENTIFIER ON GOCREATE TABLE [dbo].[users]([id] [int] IDENTITY(1,1) NOT NUL…...

【Vue3】reactive 直接赋值会导致 Vue 无法正确地监听到属性的变化,从而无法触发视图更新
在 Vue 中,响应式数据的监听和视图更新是通过 Vue 的响应式系统实现的。Vue 3 使用了 Proxy 对象来实现响应式,而 Vue 2 使用了 Object.defineProperty 来实现。 当我们使用 reactive 函数创建响应式对象时,Vue 会将对象的每个属性转换为响应…...

服务器出现丢包的原因103.88.35.x
网站主要目的是达到企业和客户紧密联系,提升客户对企业形象的认知度的效果,若租用的服务器不稳定,不仅影响网站的运行,对于网站搜索引擎优化以及用户体验等也有很大的影响。下面是服务器出现丢包不稳定的原因,一起来看…...

pytest study
pytest 测试用例的识别与运行 测试文件:test_*.py 和 *_test.py 以test开头或结尾的文件 测试用例:Test*类包含的所有 test_*的方法(测试类不能带有__init__方法), 不在class中的所有test_*的方法 def func(x):r…...

0基础学习VR全景平台篇 第73篇:VR直播-如何自定义邀请二维码(直播邀请)
自定义直播邀请二维码是自定义直播间邀请卡上显示的二维码,若上传,那么便会替换掉邀请卡上原有的二维码,原二维码为本场直播活动的二维码。 建议上传的尺寸为300px*300px,可选择开启二维码的弹出效果,开启后࿰…...

idea常用技巧/idea常见问题
idea常见问题 idea全局搜索默认只显示100条解决方案 如上图,每次搜索时只显示100条,没法展示全。因版本的不同,配置也有些差异,以下也是经过各种搜索整理出了两个方案来解决这个问题。 方案一: 快捷键Ctrl shift a…...