Vue-3

自定义指令

全局注册指令

  • 文件路径:src/main.js
import Vue from 'vue'
import App from './App.vue'
Vue.config.productionTip = false

// 全局注册指令
Vue.directive('myFocus', {
  // inserted 会在指令所在的元素,被插入到页面中时触发
  inserted(el) {
    el.focus()  // el 就是指令所绑定的元素
  }
})

new Vue({
  render: c => c(App)
}).$mount('#app')
  • 文件路径:src/App.vue
<template>
  <div>
    <h1>自定义指令</h1>
    <input v-myFocus type="text" />
  </div>
</template>

<script>
export default {};
</script>

<style>
</style>

局部注册指令

<template>
  <div>
    <h1>自定义指令</h1>
    <input v-myFocus type="text" />
  </div>
</template>

<script>
export default {
  // 局部注册指令
  directives: {
    // 指令名称: 指令的配置项
    myFocus: {
      inserted(el) {
        el.focus();
      },
    },
  },
};
</script>

<style>
</style>

指令的值

<template>
  <div>
    <h1 v-myColor="color1">指令的值</h1>
    <h1 v-myColor="color2">指令的值</h1>
  </div>
</template>

<script>
export default {
  directives: {
    // 指令名称 : 指令的配置项
    myColor: {
      // 1. inserted 提供的是元素被添加到页面中时的逻辑
      inserted(el, binding) {
        // binding.value 即可获取"指令的值"
        el.style.color = binding.value;
      },
      // 2. update 指令的值修改的时候触发,提供的值变化后,dom 更新的逻辑
      update(el, binding) {
        el.style.color = binding.value;
      },
    },
  },
  data() {
    return {
      color1: "red",
      color2: "blue",
    };
  },
};
</script>

<style>
</style>

实现加载效果

目的:实现自定义指令——v-loading 指令封装

实现

  1. 准备一个 loading 类,通过伪元素定位,设置宽高,实现蒙层
  2. 开启关闭 loading 状态(添加移除蒙层),本质只需要添加移除类即可
  3. 结合自定义指令的语法进行封装复用

代码

<template>
  <div v-loading="isLoading">
    <ul v-for="item in list" :key="item.id">
      <hr />
      <li><img :src="item.img" alt="" /></li>
      <li>{{ item.title }}</li>
      <li>{{ item.source }}</li>
      <li>{{ item.time }}</li>
    </ul>
    <hr />
  </div>
</template>

<script>
import axios from "axios";
export default {
  data() {
    return {
      list: [],
      isLoading: true,
    };
  },
  async created() {
    // 1. 发送请求,获取数据
    const res = await axios.get("http://hmajax.itheima.net/api/news");
    setTimeout(() => {
      // 2. 更新到list中,用于页面渲染
      this.list = res.data.data;

      // 3. 移除loading效果
      this.isLoading = false;
    }, 3000); // 定时3秒,模拟网速慢
  },
  directives: {
    loading: {
      inserted(el, binding) {
        binding.value ? el.classList.add("loading") : el.classList.remove("loading");
      },
      update(el, binding) {
        binding.value ? el.classList.add("loading") : el.classList.remove("loading");
      },
    },
  },
};
</script>

<style>
.loading:before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background: #fff
    url("https://pic4.zhimg.com/80/v2-d048608d543b55df997675195552f887_720w.webp")
    no-repeat center;
}
</style>

插槽

作用:让组件内部的一些结构支持自定义

默认插槽

默认插槽组件内定制一处结构

  • 文件路径:src/components/MyDialog.vue
<template>
  <div>
    <hr />
    <h3>温馨提示</h3>
    <p>
      <!-- 1. 在需要定制的地方,使用 slot 占位 -->
      <slot>我是后备内容</slot>
    </p>
    <hr />
  </div>
</template>

<script>
export default {};
</script>

<style>
</style>
  • 文件路径:src/App.vue
<template>
  <div>
    <!-- 2. 使用组件时,组件标签内填入内容 -->
    <MyDialog>你确认要取消收藏吗?</MyDialog>
    <MyDialog>你确认要注销账户吗?</MyDialog>
  </div>
</template>

<script>
import MyDialog from "./components/MyDialog.vue";
export default {
  components: {
    MyDialog,
  },
};
</script>

<style>
</style>

具名插槽

具名插槽组件内定制多处结构

注意v-slot:插槽名 可以简化为 #插槽名

  • 文件路径:src/components/MyDialog.vue
<template>
  <!-- 1. 在需要定制的地方,使用 slot 占位 -->
  <div>
    <hr />
    <slot name="title">我是后备内容</slot>
    <p><slot name="content">我是后备内容</slot></p>
    <hr />
  </div>
</template>

<script>
export default {};
</script>

<style>
</style>
  • 文件路径:src/App.vue
<template>
  <div>
    <!-- 2. 使用组件时,组件标签内填入内容 -->
    <MyDialog>
      <template v-slot:title>
        <h3>友情提示</h3>
      </template>
      <template #content>
        <span>>你确认要取消收藏吗?</span>
      </template>
    </MyDialog>
  </div>
</template>

<script>
import MyDialog from "./components/MyDialog.vue";
export default {
  components: {
    MyDialog,
  },
};
</script>

<style>
</style>

作用域插槽

功能:给插槽绑定数据,将来使用组件时可以用

具体演示:

  • 文件路径:src/App.vue
<template>
  <div>
    <MyTable :data="list1">
      <!-- 3. 通过template #插槽名=变量名 接收对象 -->
      <template #default="obj">
        <button @click="del(obj.row.id)">删除</button>
      </template>
    </MyTable>

    <MyTable :data="list2">
      <template #default="obj">
        <button @click="show(obj.row)">查看</button>
      </template>
    </MyTable>
  </div>
</template>

<script>
import MyTable from "./components/MyTable.vue";
export default {
  data() {
    return {
      list1: [
        { id: 1, name: "李小萌", age: 16 },
        { id: 2, name: "王非明", age: 37 },
        { id: 3, name: "任天风", age: 22 },
      ],
      list2: [
        { id: 1, name: "江海燕", age: 28 },
        { id: 2, name: "楼王嘿", age: 35 },
        { id: 3, name: "疆梦中", age: 41 },
      ],
    };
  },
  methods: {
    del(id) {
      this.list1 = this.list1.filter((item) => item.id !== id);
    },
    show(row) {
      alert(`姓名: ${row.name}; 年龄: ${row.age}`);
    },
  },
  components: {
    MyTable,
  },
};
</script>

<style>
</style>
  • 文件路径:src/components/MyTable.vue
<template>
  <table class="my-table">
    <thead>
      <tr>
        <th>序号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>操作</th>
      </tr>
    </thead>
    <tbody>
      <tr v-for="item in data" :key="item.id">
        <td>{{ item.id }}</td>
        <td>{{ item.name }}</td>
        <td>{{ item.age }}</td>
        <td>
          <!-- 1. 给slot标签,添加属性的形式进行传值 -->
          <slot :row="item" msg="测试文本"></slot>
          <!-- 2. 它底层会自动将所有的属性,添加到一个对象中 -->
          <!-- 
              {
                row: { id: 2, name: '王非明', age: 27},
                msg: '测试文本'
              }
           -->
        </td>
      </tr>
    </tbody>
  </table>
</template>

<script>
export default {
  props: {
    data: Array,
  },
};
</script>

<style>
.my-table {
  width: 450px;
  text-align: center;
  border: 1px solid #ccc;
  font-size: 24px;
  margin: 30px auto;
}
.my-table head {
  background-color: #1f74ff;
  color: #fff;
}
</style>

单页应用程序

基本概念

  • 单页应用程序:SPA(Single Page Application)

  • 单页面应用——所有功能在一个 html 页面上实现

优点与缺点

在这里插入图片描述

单页面应用:系统类网站 || 内部网站 || 文档类网站 || 移动端站点

多页面应用:公司官网 || 电商类网站

VueRouter

基本认识

VueRouter:它是一个 Vue.js 官方提供的路由管理插件

官网:https://v3.router.vuejs.org/zh/

使用步骤

基本步骤:

  1. 下载 npm i vue-router@3.6.5
  2. 引入 import VueRouter from 'vue-router'
  3. 安装注册 Vue.use(VueRouter)
  4. 创建路由对象 const router = new VueRouter()
  5. 建立关联 new Vue({ render:h => h(App), router }).$mount('#app')
  • 文件路径:src/main.js
// 1. 下载插件
// 在终端运行命令:  npm i vue-router@3.6.5

import Vue from 'vue'
import App from './App.vue'
import VueRouter from 'vue-router'  // 2. 导入插件

Vue.config.productionTip = false
Vue.use(VueRouter)  // 3. 插件初始化

const myRouter = new VueRouter()  // 4. 创建一个路由对象

new Vue({
  render: h => h(App),
  router: myRouter  // 5. 建立关联
}).$mount('#app')

核心步骤:

  1. 创建需要的组件(建议放到 views 目录下)并配置路由规则
  2. 配置导航,配置路由出口(路由匹配的组件显示的位置)
  • 文件路径:src/main.js
// 1. 下载插件
// 在终端运行命令:  npm i vue-router@3.6.5

import Vue from 'vue'
import App from './App.vue'
import VueRouter from 'vue-router'  // 2. 导入插件

Vue.config.productionTip = false
Vue.use(VueRouter)  // 3. 插件初始化

// 6.1 导入资源
import Find from './views/Find.vue'
import My from './views/My.vue'
import Friend from './views/Friend.vue'

// 4. 创建一个路由对象
const myRouter = new VueRouter({
  // 6.2 配置 router 路由规则
  routes: [
    { path: '/find', component: Find },
    { path: '/my', component: My },
    { path: '/friend', component: Friend },
  ]
})

new Vue({
  render: h => h(App),
  router: myRouter  // 5. 建立关联
}).$mount('#app')
  • 文件路径:src/App.vue
<template>
  <div>
    <div>
      <a href="#/find">发现音乐</a><br />
      <a href="#/find">我的音乐</a><br />
      <a href="#/find">我的朋友</a><br />
    </div>
    <div>
      <!-- 路由出口=>匹配的组件所展示的位置 -->
      <router-view></router-view>
    </div>
  </div>
</template>

<script>
export default {};
</script>

<style>
</style>
  • 文件路径:src/views/Find.vue
<template>
  <div>
    <p>发现音乐</p>
    <p>发现音乐</p>
    <p>发现音乐</p>
  </div>
</template>

<script>
export default {
  name: "FindMusic",
};
</script>

<style>
</style>
  • 文件路径:src/views/My.vue
<template>
  <div>
    <p>我的音乐</p>
    <p>我的音乐</p>
    <p>我的音乐</p>
  </div>
</template>

<script>
export default {
  name: "MyMusic",
};
</script>

<style>
</style>
  • 文件路径:src/views/Friend.vue
<template>
  <div>
    <p>我的朋友</p>
    <p>我的朋友</p>
    <p>我的朋友</p>
  </div>
</template>

<script>
export default {
  name: "MyFriend",
};
</script>

<style>
</style>

路由模块封装

  • 文件路径:src/router/index.js
// 导入模块
import Vue from 'vue'
import VueRouter from 'vue-router'

// 导入资源
import Find from '../views/Find.vue'
import My from '../views/My.vue'
import Friend from '../views/Friend.vue'

// 初始化
Vue.use(VueRouter)

// 创建路由对象
const myRouter = new VueRouter({
  routes: [
    { path: '/find', component: Find },
    { path: '/my', component: My },
    { path: '/friend', component: Friend },
  ]
})

// 导出路由对象
export default myRouter
  • 文件路径:src/main.js
import Vue from 'vue'
import App from './App.vue'
import myRouter from "./router/index.js";
Vue.config.productionTip = false


new Vue({
  render: h => h(App),
  router: myRouter  // 建立关联
}).$mount('#app')

声明式导航

router-link

需求:实现导航高亮效果

**vue-router 模块 **提供了一个全局组件 router-link 取代了 a 标签,它有两个功能

  • 能跳转(它本质还是 a 标签)
  • 能高亮(配置颜色样式即可)

原来的 a 标签

    <div>
      <a href="#/find">发现音乐</a> <br />
      <a href="#/my">我的音乐</a> <br />
      <a href="#/friend">我的朋友</a> <br />
    </div>

现在的 router-link 标签

    <div>
      <router-link to="/find">发现音乐</router-link> <br />
      <router-link to="/find">我的音乐</router-link> <br />
      <router-link to="/find">我的朋友</router-link> <br />
    </div>

自定义匹配类名

const myRouter = new VueRouter({
  routes: [
    { path: '/find', component: Find },
    { path: '/my', component: My },
    { path: '/friend', component: Friend },
  ],
  // link自定义高亮
  linkActiveClass: 'active', // 配置模糊匹配的类名
  linkExactActiveClass: 'exact-active',  // 配置精确匹配的类名
})

跳转传参

  • 查询参数传参
<router-link to="/find?name=for you">发现音乐</router-link>
<template>
  <div>
    <!-- 查询参数传参,获取命令:$route.query.参数名 -->
    <p>音乐名: {{ $route.query.name }}</p>
    <p>发现音乐</p>
    <p>发现音乐</p>
    <p>发现音乐</p>
    <p>发现音乐</p>
  </div>
</template>

<script>
export default {
  name: "FindMusic",
  created(){
    // 在created中,通过下面命令获取路由参数
    // this.$route.query.参数名
  alert(this.$route.query.name)
  }
};
</script>

<style>
</style>
  • 动态路由传参
<router-link to="/find/什么是音乐">发现音乐</router-link> <br />
// 导入模块
import Vue from 'vue'
import VueRouter from 'vue-router'

// 导入资源
import Find from '../views/Find.vue'
import My from '../views/My.vue'
import Friend from '../views/Friend.vue'

// 初始化
Vue.use(VueRouter)

// 创建路由对象
const myRouter = new VueRouter({
  routes: [
    { path: '/find/:words', component: Find },		// "发现音乐"部分
    { path: '/my/:words', component: My },
    { path: '/friend/:words?', component: Friend },	// :words? 与 :words 的区别是加了问号后可以不传参
  ],
})

// 导出路由对象
export default myRouter
<template>
  <div>
    <!-- 动态路由参数,获取命令:$route.params.参数名 -->
    <p>音乐名: {{ $route.params.words }}</p>
    <p>发现音乐</p>
    <p>发现音乐</p>
    <p>发现音乐</p>
    <p>发现音乐</p>
  </div>
</template>

<script>
export default {
  name: "FindMusic",
  created(){
    // 在created中,通过下面命令获取"动态路由参数"
    // this.$route.params.参数名
  alert(this.$route.params.words)
  }
};
</script>

<style>
</style>

重定向与404

// 导入模块
import Vue from 'vue'
import VueRouter from 'vue-router'

// 导入资源
import Find from '../views/Find.vue'
import My from '../views/My.vue'
import Friend from '../views/Friend.vue'
import NotFind from '../views/NotFind.vue'

// 初始化
Vue.use(VueRouter)

// 创建路由对象
const myRouter = new VueRouter({
  routes: [
    { path: '/', redirect: '/my' },   		// 路由重定向
    { path: '/find', component: Find },
    { path: '/my/:words', component: My },
    { path: '/friend/:words', component: Friend },
    { path: '*', component: NotFind },  	// 404页面
  ]
})

// 导出路由对象
export default myRouter

路由模式设置

路由模式默认是采用"hash路由",有个#号,看起来不好看,如何解决?

  • hash 路由---------(默认) 例如:http://127.0.0.1:8080/#/home
  • history 路由----- (常用) 例如:http://127.0.0.1:8080/home
// 导入模块
import Vue from 'vue'
import VueRouter from 'vue-router'

// 导入资源
import Find from '../views/Find.vue'
import My from '../views/My.vue'
import Friend from '../views/Friend.vue'
import NotFind from '../views/NotFind.vue'

// 初始化
Vue.use(VueRouter)

// 创建路由对象
const myRouter = new VueRouter({
  routes: [
    { path: '/', redirect: '/my' },   	// 路由重定向
    { path: '/find', component: Find },
    { path: '/my/:words', component: My },
    { path: '/friend/:words', component: Friend },
    { path: '*', component: NotFind },  // 404页面
  ],
  mode: 'history'	// 路由模式设置为'history'
})

// 导出路由对象
export default myRouter

编程式导航

概念简诉

所谓的编程式导航,就是指用 JS 代码来进行跳转

跳转与路由参数

  • path 路径跳转与路由参数
this.$router.push('路由路径')

this.$router.push({
  path: '路由路径'
})
<template>
  <div>
    <button @click="gotoFriend">我的朋友</button>
    <p>发现音乐</p>
    <p>发现音乐</p>
  </div>
</template>

<script>
export default {
  name: "FindMusic",
  methods: {
    // (1) 简单写法
    // gotoFriend(){
    //   this.$router.push('/friend?key=123456')
    // }

    // (2) 普通写法
    gotoFriend() {
      this.$router.push({
        path: "/friend",
        query: {
          key: 123456
        },
      });
    },
  },
};
</script>

<style>
</style>
  • name 命名路由跳转与路由参数
const myRouter = new VueRouter({
  routes: [
    { path: '/find/:words?', component: Find },
    { path: '/my/:words?', component: My },
    { name: 'friend', path: '/friend/:words?', component: Friend },
  ],
  mode: 'history'
})
<template>
  <div>
    <button @click="gotoFriend">我的朋友</button>
    <p>发现音乐</p>
    <p>发现音乐</p>
  </div>
</template>

<script>
export default {
  name: "FindMusic",
  methods: {
    gotoFriend() {
      this.$router.push({
        name: 'friend',
        // query: {
        //   key: 123456
        // },
        params: {
          words: 123456
        },
      })
    },
  },
};
</script>

<style>
</style>

二级路由

const myRouter = new VueRouter({
  routes: [
    { path: '/', component: Layout, children: [ { path: '/article', component: Article } ] },	// 通过 children 配置项,可以嵌套子路由
    { path: '/my/:words?', component: My }
  ],
  mode: 'history'
})

组件缓存

keep-alive 是什么

  • keep-alive 是 Vue 的内置组件,当它包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们
  • keep-alive 是一个抽象组件:它自身不会渲染成一个 DOM 元素,也不会出现在父组件链中

keep-alive 的优点

  • 在组件切换过程中,把切换出去的组件保留在内存中,防止重复渲染DOM,减少加载时间及性能消耗,提高用户体验性

keep-alive 的三个属性

include : 组件名数组,只有匹配的组件会被缓存
exclude : 组件名数组,匹配成功的组件都不会被缓存,而除此之外的组件都缓存
max		: 最多可以缓存多少组件实例
<script>
export default {
    // 组件名:如果没有配置 name,才会找文件名作为组件名
    name: 'LayoutPage'
}
</script>
<template>
  <div>
      <!--
	    只希望 Layout 被缓存,include 需要配置成 :include="组件名数组"
	  -->
      <keep-alive :include=['LayoutPage']>
          <router-view></router-view>
      </keep-alive>
  </div>
</template>

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

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

相关文章

Ps:颜色模式

Photoshop 中的颜色模式 Color Mode定义了图像中使用的颜色系统&#xff0c;这些模式影响图像的颜色表现、文件大小以及可适用的场景。 Ps菜单&#xff1a;图像/模式 Mode 在不同的颜色模式下&#xff0c;会基于不同的通道并使用不同的方式来混合颜色。 RGB、CMYK、Lab 颜色模…

Centos 7.5 上nginx设置开机自启动

nginx的安装目录 &#xff1a; /usr/local/nginx 一、没有设置开机自启动前&#xff0c;需要执行/usr/local/nginx/sbin/nginx 启动 二、接下来&#xff0c;我们设置开机自启动&#xff0c;就不用手动启动nginx了 1、cd /usr/lib/systemd/system/ 2、vi nginx.service [un…

SpringMVC(1)

目录 SpringMVC简介入门案例启动服务器初始化过程单次请求过程bean加载控制 PostMan请求与响应设置请求映射路径请求参数五种类型参数传递JSON数据日期类型参数传递响应 RestRest 简介RESTful快速开发 SpringMVC是隶属于Spring框架的一部分&#xff0c;主要是用来进行Web开发&a…

vue + koa + 阿里云部署 + 宝塔:宝塔前后端部署

接上篇&#xff0c;我们已经完成了宝塔的基本配置&#xff0c;下面我们来看如何在宝塔中部署前后端 一、上传前后端代码文件 在www > wwwroot目录下创建了一个demo文件&#xff0c;用来存放前后端代码 进入demo中&#xff0c;点击上传 这里前端我用的打完包的 dist文件&am…

【踩坑】修复xrdp无法关闭Authentication Required验证窗口

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhang.cn] 问题如下&#xff0c;时不时出现&#xff0c;有时还怎么都关不掉&#xff0c;很烦&#xff1a; 解决方法一&#xff1a;命令行输入 dbus-send --typemethod_call --destorg.gnome.Shell /org/gnome/Shell org.gn…

excel 实现分组排序功能

我们经常会遇到按照分组进行排序&#xff0c;在excel如何实现呢&#xff1f; 如下列的数据&#xff0c;需要按照分组&#xff0c;将得分从高到底排名 我们可以使用如下的公式操作即可实现 SUMPRODUCT((A$2:A$15A2)*(C$2:C$15>C2))1

【漏洞复现】大华智慧园区综合管理平台信息泄露漏洞

Nx01 产品简介 大华智慧园区综合管理平台是一款综合管理平台&#xff0c;具备园区运营、资源调配和智能服务等功能。该平台旨在协助优化园区资源分配&#xff0c;满足多元化的管理需求&#xff0c;同时通过提供智能服务&#xff0c;增强使用体验。 Nx02 漏洞描述 大华智慧园区…

腾轩科技传媒分享创建企业百度百科词条前期要点

百度百科是企业的重要名片之一&#xff0c;一个优秀的百度百科词条可以为企业增添无限魅力和影响力&#xff0c;如何创建一篇引人注目的企业百度百科词条呢&#xff1f;接下来&#xff0c;希望大家和腾轩科技传媒一起来学习如何创建企业百度百科词条吧&#xff01; 1、精心准备…

记录一下 Unity团结引擎开发OpenHarmony Next 应用 环境搭建流程

原视频链接 记录环境搭建过程~&#xff0c;本文是图文版本 一、打开团结引擎官网下载对应的 团结引擎版本 官网地址&#xff1a;https://unity.cn/tuanjie/releases 根据各自的开发环境下载对应的软件版本&#xff0c;我是 windwos 环境&#xff0c;我就下载 windows 环境 …

使用R语言进行多元线性回归分析-多重共线的诊断

一、数据集 序号X1x2x3x4Y序号X1x2x3X4Y12666078.57831224472.51229155274.31954182293.12356850104.3111047426115.92143184787.6111140233483.8155263395.971266912113.311655922109.2111368812109.410771176102.73       1、从中选取主要变量&#xff0c;建立与因变…

理想滤波器、巴特沃斯滤波器、高斯滤波器实现(包含低通与高通,代码实现与分析)

本篇博客聚焦理想滤波器、巴特沃斯滤波器、高斯滤波器进行原理剖析、代码实现和结果总结&#xff0c;代码含有详细注释&#xff0c;希望帮助大家理解。 以下将从理想低通滤波器、理想高通滤波器、巴特沃斯低通滤波器、巴特沃斯高通滤波器、高斯低通滤波器、高斯高通滤波器六个…

B站UP视频播放数据分析之然冉创业说

【背景介绍】 几年前做过类似的分析&#xff0c;但是B站数据加密了&#xff0c;刚好最近在用selenium&#xff0c;就顺手用它爬一下数据。 df pd.read_excel("然冉创业说_13.2万_output.xlsx") df.head() 以上数据在视频播放页面就可以获取到。 【数据分析】 从数…

进程间通信学习笔记(有名管道和无名管道)

进程间通信方式&#xff1a; 无名管道(pipe)有名管道(fifo)信号(signal)共享内存(mmap)套接字(socket) 无名管道&#xff1a; 在内核里面开辟一片内存&#xff0c;进程1和进程2都可以通过这片内存进行通信 无名管道特点&#xff1a; 只能用于具有亲缘关系的进程之间的通信&am…

SocketError | Socket错误码一览表(每一种错误码的故障排查建议)

Socket错误码一览表 文章目录 Socket错误码一览表前言错误码表 前言 在软件开发和网络通信编程中&#xff0c;SocketError算是一个绕不开的坎。它可能因为各种原因而来&#xff0c;比如网络问题、用户搞错了、应用程序出错等等。本文整理一张SocketError排查建议表格就是为了帮…

Python打发无聊时光:8.用kivy库实现滑动控温的空调界面

第一步&#xff1a;装kivy库 在终端输入: pip install kivy 第二步&#xff1a;复制代码 from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.slider import Slider from kivy.uix.label import Label from kivy.uix.togglebutton import T…

多模态表征—CLIP及中文版Chinese-CLIP:理论讲解、代码微调与论文阅读

我之前一直在使用CLIP/Chinese-CLIP&#xff0c;但并未进行过系统的疏导。这次正好可以详细解释一下。相比于CLIP模型&#xff0c;Chinese-CLIP更适合我们的应用和微调&#xff0c;因为原始的CLIP模型只支持英文&#xff0c;对于我们的中文应用来说不够友好。Chinese-CLIP很好地…

linux centos7.9改dns和ip

vi /etc/sysconfig/network-scripts/ifcfg-ens32 &#xff1a;wq后 重启网络服务 systemctl restart network —————————————————————————— 篇外话题 软件下载 xshell可以从腾讯软件中心下载

【Rust】简介、安装和编译

文章目录 一、Rust简介二、Rust 安装三、Rust 程序结构3.1 模块&#xff08;Modules&#xff09;&#xff1a;3.2 函数&#xff08;Functions&#xff09;&#xff1a;3.3 变量&#xff08;Variables&#xff09;&#xff1a;3.4 控制流&#xff08;Control Flow&#xff09;&a…

面试redis篇-12Redis集群方案-分片集群

原理 主从和哨兵可以解决高可用、高并发读的问题。但是依然有两个问题没有解决&#xff1a; 海量数据存储问题高并发写的问题 使用分片集群可以解决上述问题&#xff0c;分片集群特征&#xff1a; 集群中有多个master&#xff0c;每个master保存不同数据每个master都可以有…

python自动化管理和zabbix监控网络设备(有线网络和路由配置部分)

目录 目录 一、拓扑图 二、core-sw1 三、core-sw2 四、sum-sw1 五、sum-sw2 六、FW1 七、DMZ-SW1 结语 一、拓扑图 二、core-sw1 sys sysname core-sw1 vlan batch 10 20 30 40 50 60 100 vlan batch 200 210 220 230 240 250 stp region-configuration region-name…