网页前端开发(基础进阶3--Vue)

news2025/7/26 8:40:14

Vue3

Vue是一款用于构建用户界面的渐进式的JavaScript框架。

Vue由2部分组成:Vue核心包,Vue插件包

Vue核心包包含:声明式渲染,组件系统。

Vue插件包:VueRouter(客户端路由),Vuex/Pinia(状态管理),Webpack/Vite(构建工具)

Vue的开发形式分为2种:基于核心包的局部开发,整站开发。

基于核心包的局部开发:只使用Vue核心包的局部开发。

整站开发:使用整个Vue生态进行开发。

框架:一套完整的项目解决方案,用于快速构建项目。

框架的优点:提升前端开发效率。

框架的缺点:需要记忆框架的使用规则。

1.Vue快速入门

(1)准备工作

1.引入Vue模块

在html文件中

<body>

        ..........

        .........

        <script type=‘module’> 

                import {createApp} from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'

        </script>

</body>

2.创建Vue程序的应用示例,控制视图的元素

在html文件中

<body>

        ..........

        .........

        <script type=‘module’> 

                import {createApp} from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'

                createApp({  });

        </script>

</body>

3.准备元素(div),被Vue控制。

<body>

        ..........

        .........

        <script type=‘module’> 

                import {createApp} from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'

                createApp({  }).mount('#app'); // 只针对与id为app的元素进行挂载

        </script>

</body>

示例

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>vue入门</title>
</head>
<body>
  <div id="app">
    <h1>{{ message }}</h1>
    <h1>{{ count }}</h1>
  </div>
  <h1>{{ count }}</h1>
  

  <script type="module">
    import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js';
    
    createApp({ 
      data() {
        return {
          message: 'Hello Vue!',
          count:100
        }
      }
    }).mount('#app'); // 只针对与id为app的元素进行挂载
   

  </script>
  
</body>
</html>

运行结果:

2.Vue常用指令

在html标签上,不同指令实现不同功能。

1.v-for

用于列表渲染,遍历容器中的元素/对象。

使用方法:

 <tr v-for="(item, index) in itemList"  :key="item.id">{{item}}</tr>

遍历itemList数组

遍历出来的元素是item

元素的索引是index

:key为遍历出来的元素添加唯一标识

[ ]是数组

{ }是对象

示例

<table>
    <!--  表头  -->
    <thead>
      <!-- 定义一行 -->
      <tr>
        <th>序号</th>
        <th>姓名</th>
        <th>性别</th>
        <th>头像</th>
        <th>职位</th>
        <th>入职日期</th>
        <th>最后操作时间</th>
        <th>操作</th>
      </tr>
    </thead>
      
    <tbody>
      <tr v-for="(e, index) in empList" :key="e.id">
        <!-- index表示索引从0开始 序号表示从1开始 -->
        <td>{{index+1}}</td>  
        <td>{{e.name}}</td>
        <td>{{e.gender==1?'男':'女'}}</td>
        <!-- 插值表达式,不能出现在标签内部 -->
        <td><img class='avatar'src="{{e.image}}" :alt='{{e.name}}'></td>
        <td>{{e.position}}</td> //需要条件判断 
        <td>{{e.entryDate}}</td>
        <td>{{e.lastOpTime}}</td>
        <td>
          <button type="button">修改</button>
          <button type="button">删除</button>
        </td>
      </tr>
    </tbody>
  </table>

<script type="module">
    import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js';
    
    createApp({ 
      data() {
        return {
          searchFrome:{//封装用户输入的查询条件。
            name:'',
            gender:'',
            position:''
          },
          empList: [ //定义数组
            {"id":1,  //定义一个对象
              "name":"张三",
              "gender": '1',
              "avatar": 'img/y2.png',
              "position": '1',
              "entryDate": '2020-01-01',
              "lastOpTime": '2025-01-01'
            },
            {"id":2,
              "name":"李四",
              "gender": '2',
              "avatar": 'img/y2.png',
              "position": '2',
              "entryDate": '2020-01-01',
              "lastOpTime": '2025-01-01'
            },
            {"id":3,
              "name":"王五",
              "gender": '1',
              "avatar": 'img/y2.png',
              "position": '3',
              "entryDate": '2020-01-01',
              "lastOpTime": '2025-01-01'
            }
          ]
        } 
      },
      // data后面添加方法
      methods:{
        search:function(){
          // 将搜索条件输出到控制台
          console.log(this.searchFrome);
        },
        clear:function(){
          // 清空搜索条件
          this.searchFrome={name:'',gender:'',position:''};
        }
      }
    }).mount('#all'); // 只针对与id为all的元素进行挂载
   

</script>

        头像一栏显示不正确。原因:插值表达式,不能出现在标签内部。需要使用v-bind进行修饰。

        职位一栏不能正确显示,性别一栏(只有男或者女)可以使用三元运算符,但是职业有5种,无法使用三元运算符,应使用v-if/v-else-if/v-else或者v-show进行处理。

2.v-bind

        动态为标签属性绑定值(插值表达式,不能在标签内使用)

使用方法:

v-bind:属性="变量" :属性="变量"

<td><img class="avatar"  v-bind:src="e.image" :alt="e.name"></td>

可保证图片的正确显示。

<!-- 表格主体内容 -->
            <tbody>
                <tr v-for="(e, index) in empList" :key="e.id">
                    <td>{{index + 1}}</td>
                    <td>{{e.name}}</td>
                    <td>{{e.gender == 1?'男' : '女'}}</td>

                    <!-- 插值表达式是不能出现在标签内部 -->
                    <td><img class="avatar"  v-bind:src="e.image" :alt="e.name"></td>
                    <td>{{e.entrydate}}</td>
                    <td>{{e.updatetime}}</td>
                    <td class="action-buttons">
                        <button type="button">编辑</button>
                        <button type="button">删除</button>
                    </td>
                </tr>
            </tbody>
        </table>

3.v-if/v-else-if/v-else

        用来控制元素的显示与隐藏。

        基于条件判断,来控制创建或移除元素节点(条件渲染)

        使用场景:网页运行时进行处理,要么显示要么不显示。

示例:

<body>
    <div id="container">
        <!-- 表格展示区 -->
        <table>
            <!-- 表头 -->
            <thead>
                <tr>
                    <th>序号</th>
                    <th>姓名</th>
                    <th>性别</th>
                    <th>头像</th>
                    <th>职位</th>
                    <th>入职日期</th>
                    <th>最后操作时间</th>
                    <th>操作</th>
                </tr>
            </thead>

            <!-- 表格主体内容 -->
            <tbody>
                <tr v-for="(e, index) in empList" :key="e.id">
                    <td>{{index + 1}}</td>
                    <td>{{e.name}}</td>
                    <td>{{e.gender == 1?'男' : '女'}}</td>

                    <!-- 插值表达式是不能出现在标签内部 -->
                    <td><img class="avatar"  v-bind:src="e.image" :alt="e.name"></td>

                    <!-- v-if: 控制元素的显示与隐藏 -->
                    <td>
                        <span v-if="e.job == 1">班主任</span>
                        <span v-else-if="e.job == 2">讲师</span>
                        <span v-else-if="e.job == 3">学工主管</span>
                        <span v-else-if="e.job == 4">教研主管</span>
                        <span v-else-if="e.job == 5">咨询师</span>
                        <span v-else>其他</span>
                    </td>

                    <td>{{e.entrydate}}</td>
                    <td>{{e.updatetime}}</td>
                    <td class="action-buttons">
                        <button type="button">编辑</button>
                        <button type="button">删除</button>
                    </td>
                </tr>
            </tbody>
        </table>

v-else-if必须在v-if之后,可有多个v-else-if。

v-else必须在v-if/v-else-if之后。

4.v-show

        用来控制元素的显示与隐藏。与v-if/v-else-if/v-else有所区别。

v-if/v-else-if/v-else和v-show的区别:

        v-if网页运行时处理,不满足条件,直接不渲染此元素。

        v-show通过css样式,渲染v-show的所有元素,满足条件显示,不满足条件隐藏。

        基于css样式的display来控制显示与隐藏。

        使用场景:频繁切换显示与隐藏两种状态;如:下拉框。

示例:

<body>
    <div id="container">
        <!-- 表格展示区 -->
        <table>
            <!-- 表头 -->
            <thead>
                <tr>
                    <th>序号</th>
                    <th>姓名</th>
                    <th>性别</th>
                    <th>头像</th>
                    <th>职位</th>
                    <th>入职日期</th>
                    <th>最后操作时间</th>
                    <th>操作</th>
                </tr>
            </thead>

            <!-- 表格主体内容 -->
            <tbody>
                <tr v-for="(e, index) in empList" :key="e.id">
                    <td>{{index + 1}}</td>
                    <td>{{e.name}}</td>
                    <td>{{e.gender == 1?'男' : '女'}}</td>

                    <!-- 插值表达式是不能出现在标签内部 -->
                    <td><img class="avatar"  v-bind:src="e.image" :alt="e.name"></td>

                    <!-- v-show: 控制元素的显示与隐藏 -->
                    <td>
                        <span v-show="e.job == 1">班主任</span>
                        <span v-show="e.job == 2">讲师</span>
                        <span v-show="e.job == 3">学工主管</span>
                        <span v-show="e.job == 4">教研主管</span>
                        <span v-show="e.job == 5">咨询师</span>
                    </td> 

                    <td>{{e.entrydate}}</td>
                    <td>{{e.updatetime}}</td>
                    <td class="action-buttons">
                        <button type="button">编辑</button>
                        <button type="button">删除</button>
                    </td>
                </tr>
            </tbody>
        </table>
    </div>
</body>

5.v-model

        v-model用于获取表单项数据。

        v-on用于事件绑定。

        通常v-model和v-on配合起来使用。 

v-model中绑定的变量必须在data中定义

v-model使用方法:

<body>     

 <script type="module">

    import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js';

   

    createApp({

      data() {

        return {

          searchFrome:{//封装用户输入的查询条件。

            name:'',

            gender:'',

            position:''

          }

      }

    }).mount('#all'); // 只针对与id为all的元素进行挂载

 </script>

</body>

name<-->姓名

gender<-->性别

position<-->职位

具体代码:

<body>
<div id="all">
  <!-- 显示采集到的数据 -->
  <!-- {{searchFrome}} -->
  <form class="search-from" action="/search" method="post">
    <label for="name">姓名:</label>
    <input type="text" name="name" id="name" v-model="searchFrome.name" placeholder="请输入姓名">

    <label for="gender">性别:</label>
    <select name="gender" id="genser" v-model="searchFrome.gender">
      <option value=""></option>
      <option value="1">男</option>
      <option value="2">女</option>
    </select>

    <label for="position">职位:</label>
    <select name="position" id="position" v-model="searchFrome.position">
      <option value=""></option>
      <option value="1">班主任</option>
      <option value="2">讲师</option>
      <option value="3">学工主管</option>
      <option value="4">教研主管</option>
      <option value="5">咨询师</option>
    </select>

    <button type="button" v-on:click="search">查询</button>
    <button type="button" @click="clear">清空</button>
  </form>

  
<script type="module">
    import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js';
    
    createApp({ 
      data() {
        return {
          searchFrome:{//封装用户输入的查询条件。
            name:'',
            gender:'',
            position:''
          }
        } 
      }
    }).mount('#all'); // 只针对与id为all的元素进行挂载
   

</script>
</body>

 在标签中使用:

<input type="text" name="name" id="name" v-model="searchFrome.name" placeholder="请输入姓名">

将姓名文本栏中输入数据导入data中的searchFrome.name

 在标签中使用:

<select name="gender" id="genser" v-model="searchFrome.gender">

将性别文本栏中输入数据导入data中的searchFrome.gender

  在标签中使用:

<select name="position" id="position" v-model="searchFrome.position">

将职业文本栏中输入数据导入data中的searchFrome.position

效果如下:

6.v-on

使用方法:
v-on:click="函数名"  或

@click="函数名"

为html标签绑定事件(添加事件监听)。

通常与v-model配合使用。

 <button type="button" v-on:click="search">查询</button>
 <button type="button" @click="clear">清空</button>

将查询与清空按钮绑定事件监听。

整体代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>员工管理</title>
  <style>
    #all{
      width: 80%;
      margin: 0 auto;
    }
    .navbar{
      background-color: rgb(170, 170, 170);
      display: flex;/*弹性布局*/
      justify-content: space-between;/*左右对齐*/
      align-items: center;/*垂直居中*/
      padding: 5px;
    }
    .navbar h1{
      margin: 0;/*去掉h1标签的默认间距*/
      font-weight: bold;/*加粗*/
      color: white;/*白色文字*/
      font-family: "楷体";
    }
    .navbar a{
      color: white;
      font-weight: bold;/*加粗*/
      text-decoration: none;/*取消下划线*/
      align-items: center;/*垂直居中*/
    }
    .search-from{
      display: flex;
      flex-wrap: nowrap;/*换行*/
      align-items: center;/*垂直居中*/
      gap: 10px;/*间距*/
      margin-top: 10px;
      margin-bottom: 10px;
    }
    .search-from input,select{
      padding: 5px;
      width: 220px;
    }

    table{
      width: 100%;
      border-collapse: collapse;
    }
    th,td{
      border: 1px solid rgb(0, 0, 0);/*边框*/
      padding: 5px;
      text-align: center;
    }
    .footer{
      background-color: #b5b3b3;
      color: white;
      text-align: center;
      padding: 10px 0;
      margin-top: 30px;
    }
  </style>
</head>
<body>
<div id="all">
  <div class="navbar">
     <h1>tlias 智能学习辅助系统</h1>
      <a href="">退出登录</a>
  </div>

  <!-- 显示采集到的数据 -->
  <!-- {{searchFrome}} -->
  <form class="search-from" action="/search" method="post">
    <label for="name">姓名:</label>
    <input type="text" name="name" id="name" v-model="searchFrome.name" placeholder="请输入姓名">

    <label for="gender">性别:</label>
    <select name="gender" id="genser" v-model="searchFrome.gender">
      <option value=""></option>
      <option value="1">男</option>
      <option value="2">女</option>
    </select>

    <label for="position">职位:</label>
    <select name="position" id="position" v-model="searchFrome.position">
      <option value=""></option>
      <option value="1">班主任</option>
      <option value="2">讲师</option>
      <option value="3">学工主管</option>
      <option value="4">教研主管</option>
      <option value="5">咨询师</option>
    </select>

    <button type="button" v-on:click="search">查询</button>
    <button type="button" @click="clear">清空</button>
  </form>

  <table>
    <!--  表头  -->
    <thead>
      <!-- 定义一行 -->
      <tr>
        <th>序号</th>
        <th>姓名</th>
        <th>性别</th>
        <th>头像</th>
        <th>职位</th>
        <th>入职日期</th>
        <th>最后操作时间</th>
        <th>操作</th>
      </tr>
    </thead>
      
    <tbody>
      <tr v-for="(e, index) in empList" :key="e.id">
        <!-- index表示索引从0开始 序号表示从1开始 -->
        <td>{{index+1}}</td>  
        <td>{{e.name}}</td>
        <td>{{e.gender==1?'男':'女'}}</td>
        <!-- 插值表达式,不能出现在标签内部 -->
        <td><img class='avatar' v-bind:src="e.avatar" :alt='e.name'></td>
        <!-- <td>{{e.position}}</td> //需要条件判断 -->
        <td>
          <span v-if="e.position==1">班主任</span>
          <span v-else-if="e.position==2">讲师</span>
          <span v-else-if="e.position==3">学工主管</span>
          <span v-else-if="e.position==4">教研主管</span>
          <span v-else-if="e.position==5">咨询师</span>
          <span v-else>其他</span>
        </td>
        <td>{{e.entryDate}}</td>
        <td>{{e.lastOpTime}}</td>
        <td>
          <button type="button">修改</button>
          <button type="button">删除</button>
        </td>
      </tr>
    </tbody>
  </table>
  
  <footer class="footer">
    <p>cyy有限公司</p>
    <p>版权,时间2025.5.9</p>
  </footer>
</div>

<script type="module">
    import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js';
    
    createApp({ 
      data() {
        return {
          searchFrome:{//封装用户输入的查询条件。
            name:'',
            gender:'',
            position:''
          },
          empList: [ //定义数组
            {"id":1,  //定义一个对象
              "name":"张三",
              "gender": '1',
              "avatar": 'img/y2.png',
              "position": '1',
              "entryDate": '2020-01-01',
              "lastOpTime": '2025-01-01'
            },
            {"id":2,
              "name":"李四",
              "gender": '2',
              "avatar": 'img/y2.png',
              "position": '2',
              "entryDate": '2020-01-01',
              "lastOpTime": '2025-01-01'
            },
            {"id":3,
              "name":"王五",
              "gender": '1',
              "avatar": 'img/y2.png',
              "position": '3',
              "entryDate": '2020-01-01',
              "lastOpTime": '2025-01-01'
            }
          ]
        } 
      },
      // data后面添加方法
      methods:{
        search:function(){
          // 将搜索条件输出到控制台
          console.log(this.searchFrome);
        },
        clear:function(){
          // 清空搜索条件
          this.searchFrome={name:'',gender:'',position:''};
        }
      }
    }).mount('#all'); // 只针对与id为all的元素进行挂载
   

</script>

</body>
</html>

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

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

相关文章

tryhackme——Abusing Windows Internals(进程注入)

文章目录 一、Abusing Processes二、进程镂空三、线程劫持四、DLL注入五、Memory Execution Alternatives 一、Abusing Processes 操作系统上运行的应用程序可以包含一个或多个进程&#xff0c;进程表示正在执行的程序。进程包含许多其他子组件&#xff0c;并且直接与内存或虚…

基于 Alpine 定制单功能用途(kiosk)电脑

前言 故事回到 7 年前, 在网上冲浪的时候发现了一篇介绍使用 Ubuntu 打造 kiosk 单功能用途电脑的文章, 挺好玩的, 就翻译了一下并比葫芦画瓢先后用了 CentOS 7, ArchLinux 进行了实现. 历史文章: 翻译 - 使用Ubutnu14.04和Chrome打造单功能用途电脑(大屏展示电脑) 使用CentOS…

知识图谱系统功能实现,技术解决方案,附源码

基于Java、Neo4j和ElasticSearch构建的医疗知识图谱知识库&#xff0c;是一个融合图数据库技术与搜索引擎的智能化医疗知识管理系统。该系统以Neo4j图数据库为核心&#xff0c;利用其高效的图结构存储能力&#xff0c;将疾病、症状、药品、检查项目、科室等医疗实体抽象为节点&…

洛谷P12610 ——[CCC 2025 Junior] Donut Shop

题目背景 Score: 15. 题目描述 The owner of a donut shop spends the day baking and selling donuts. Given the events that happen over the course of the day, your job is to determine the number of donuts remaining when the shop closes. 输入格式 The first …

1. 数据库基础

1.1 什么是数据库 ⭐ mysql 本质是一种网络服务, 是基于 C(mysql) S(mysqld)的 网络服务. 存储数据用文件就可以了&#xff0c;为什么还要弄个数据库&#xff1f;文件保存数据存在以下缺点&#xff1a; 文件的安全性问题。文件不利于数据查询和管理。文件不利于存储海量数据。…

英伟达288GB HBM4+50P算力

英伟达CEO黄仁勋在COMPUTEX 2025上突然官宣&#xff1a;以暗物质研究先驱Vera Rubin命名的新一代AI芯片即将量产&#xff01;这颗被称作“算力巨兽”的Rubin GPU&#xff0c;不仅搭载288GB HBM4显存和50 Petaflops推理算力&#xff0c;更携三大颠覆性技术直击AI行业痛点。更可怕…

综合案例:斗地主

综合案例&#xff1a;斗地主 1.程序概述 这是一个模拟斗地主游戏发牌过程的C语言程序&#xff0c;实现了扑克牌的初始化、洗牌和发牌功能。 2.功能需求 2.1 扑克牌定义 使用结构体 Card 表示一张牌&#xff0c;包含&#xff1a; 花色属性suit&#xff08;0-3表示普通花色♥…

前端组件推荐 Swiper 轮播与 Lightbox 灯箱组件深度解析

在互联网产品不断迭代升级的今天&#xff0c;用户对于页面交互和视觉效果的要求越来越高。想要快速打造出吸睛又实用的项目&#xff0c;合适的组件必不可少。今天就为大家推荐两款超好用的组件 ——Swiper 轮播组件和 Lightbox 灯箱组件&#xff0c;轻松解决你的展示难题&#…

Deepfashion2 数据集使用笔记

目录 数据类别: 筛选类别数据: 验证精度筛选前2个类别: 提取类别数据 可视化类别数据: Deepfashion2 的解压码 旋转数据增强 数据类别: 类别含义: Class idx类别名称英文名称0短上衣short sleeve top1长上衣long sleeve top2短外套short sleeve outwear3长外套lo…

Dify知识库下载小程序

一、Dify配置 1.查看或创建知识库的API 二、下载程序配置 1. 安装依赖resquirements.txt ######requirements.txt##### flask2.3.3 psycopg2-binary2.9.9 requests2.31.0 python-dotenv1.0.0#####安装依赖 pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.…

数据库中求最小函数依赖集-最后附解题过程

今天来攻克数据库设计里一个超重要的知识点 —— 最小函数依赖集。对于刚接触数据库的小白来说&#xff0c;这概念可能有点绕&#xff0c;但别担心&#xff0c;咱们一步步拆解&#xff0c;轻松搞定&#x1f4aa;&#xff01; &#xff08;最后fuyou&#xff09; 什么是最小函数…

嵌入式系统中常用的开源协议

目录 1、GNU通用公共许可证&#xff08;GPL&#xff09; 2、GNU宽松通用公共许可证&#xff08;LGPL&#xff09; 3、MIT许可证 4、Apache许可证2.0 5、BSD许可证 6、如何选择合适的协议 在嵌入式系统开发中&#xff0c;开源软件的使用已成为主流趋势。从物联网设备到汽车…

第二篇:Liunx环境下搭建PaddleOCR识别

第二篇&#xff1a;Liunx环境下搭建Paddleocr识别 一&#xff1a;前言二&#xff1a;安装PaddleOCR三&#xff1a;验证PaddleOCR是否安装成功 一&#xff1a;前言 PaddleOCR作为业界领先的多语言开源OCR工具库&#xff0c;其核心优势在于深度整合了百度自主研发的飞桨PaddlePa…

复杂业务场景下 JSON 规范设计:Map<String,Object>快速开发 与 ResponseEntity精细化控制HTTP 的本质区别与应用场景解析

Moudle 1 Json使用示例 在企业开发中&#xff0c;构造 JSON 格式数据的方式需兼顾 可读性、兼容性、安全性和开发效率&#xff0c;以下是几种常用方式及适用场景&#xff1a; 一、直接使用 Map / 对象转换&#xff08;简单场景&#xff09; 通过 键值对集合&#xff08;如 M…

二叉数-965.单值二叉数-力扣(LeetCode)

一、题目解析 顾名思义&#xff0c;就是二叉树中所存储的值是相同&#xff0c;如果有不同则返回false 二、算法原理 对于二叉树的遍历&#xff0c;递归无疑是最便捷、最简单的方法&#xff0c;本题需要用到递归的思想。 采取前序遍历的方法&#xff0c;即根、左、右。 我们…

[蓝桥杯]对局匹配

对局匹配 题目描述 小明喜欢在一个围棋网站上找别人在线对弈。这个网站上所有注册用户都有一个积分&#xff0c;代表他的围棋水平。 小明发现网站的自动对局系统在匹配对手时&#xff0c;只会将积分差恰好是 K 的两名用户匹配在一起。如果两人分差小于或大于 KK&#xff0c;…

Redis 持久化机制详解:RDB 与 AOF 的原理、优缺点与最佳实践

目录 前言1. Redis 持久化机制概述2. RDB 持久化机制详解2.1 RDB 的工作原理2.2 RDB 的优点2.3 RDB 的缺点 3. AOF 持久化机制详解3.1 AOF 的工作原理3.2 AOF 的优点3.3 AOF 的缺点 4. RDB 与 AOF 的对比分析5. 持久化机制的组合使用与最佳实践6. 结语 前言 Redis 作为一款高性…

【Kotlin】简介变量类接口

【Kotlin】简介&变量&类&接口 【Kotlin】数字&字符串&数组&集合 【Kotlin】高阶函数&Lambda&内联函数 【Kotlin】表达式&关键字 文章目录 Kotlin_简介&变量&类&接口Kotlin的特性Kotlin优势创建Kotlin项目变量变量保存了指向对…

Mybatis入门到精通

一&#xff1a;什么是Mybatis 二&#xff1a;Mybatis就是简化jdbc代码的 三&#xff1a;Mybatis的操作步骤 1&#xff1a;在数据库中创建一个表&#xff0c;并添加数据 我们这里就省略了 2&#xff1a;Mybatis通过maven来导入坐标&#xff08;jar包&#xff09; 3&#xff1a…

Unity性能优化笔记

降低Draw Call 降低draw call&#xff08;unity里叫batches&#xff09;的方法有&#xff1a; 模型减少材质&#xff1b; 多模型共用材质&#xff1b; 烘焙灯光&#xff1b; 关闭阴影和雾&#xff1b; 遮挡剔除&#xff1b; 使用LOD&#xff1b; 模型减少材质 > 见…