描述@keyframes规则在 CSS 动画中的原理及作用,如何创建一个简单的动画

news2025/3/26 15:27:19

大白话描述@keyframes规则在 CSS 动画中的原理及作用,如何创建一个简单的动画?

嘿,朋友!咱来聊聊 CSS 里超酷的 @keyframes 规则。这玩意儿就像是动画的剧本,能让网页元素动起来,就像给它们施了魔法一样!

原理和作用

想象一下,你在拍一部动画电影。@keyframes 就像是这部电影的分镜脚本,它规定了元素在动画过程中不同时间点的样子。你可以设定元素在 0%(也就是动画开始的时候)、50%(动画进行到一半)、100%(动画结束)等不同阶段的样式,比如位置、大小、颜色啥的。浏览器就会根据这个脚本,平滑地把元素从一个状态变到另一个状态,这样就有了动画效果。

创建简单动画步骤

咱来创建一个简单的动画,让一个方块从左到右移动。

1. 定义 @keyframes 规则

首先,你得写好这个“动画剧本”。给这个剧本取个名字,这里我们叫它 moveRight

/* 定义一个名为 moveRight 的动画剧本 */
@keyframes moveRight {
    /* 动画开始时,方块的左边距是 0px */
    from {
        margin-left: 0px;
    }
    /* 动画结束时,方块的左边距是 200px,也就是向右移动了 200px */
    to {
        margin-left: 200px;
    }
}

这里的 from 就相当于 0% 的时间点,to 相当于 100% 的时间点。你也可以用百分比来更精确地控制中间状态,比如:

/* 定义一个名为 moveRight 的动画剧本 */
@keyframes moveRight {
    /* 动画开始时,方块的左边距是 0px */
    0% {
        margin-left: 0px;
    }
    /* 动画进行到 50% 时,方块的左边距是 100px */
    50% {
        margin-left: 100px;
    }
    /* 动画结束时,方块的左边距是 200px,也就是向右移动了 200px */
    100% {
        margin-left: 200px;
    }
}
2. 选择要应用动画的元素

接下来,你得找个元素来表演这个动画。这里我们用一个 <div> 元素。

<!-- 创建一个 div 元素,用来展示动画 -->
<div class="animated-box"></div>
3. 给元素应用动画

最后,把这个“动画剧本”应用到元素上。

/* 选择类名为 animated-box 的元素 */
.animated-box {
    /* 设置元素的宽度为 50px */
    width: 50px;
    /* 设置元素的高度为 50px */
    height: 50px;
    /* 设置元素的背景颜色为蓝色 */
    background-color: blue;
    /* 应用名为 moveRight 的动画 */
    animation-name: moveRight;
    /* 设置动画的持续时间为 3 秒 */
    animation-duration: 3s;
}

完整代码示例

把上面的代码组合起来,就是一个完整的示例:

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Simple CSS Animation</title>
    <style>
        /* 定义一个名为 moveRight 的动画剧本 */
        @keyframes moveRight {
            /* 动画开始时,方块的左边距是 0px */
            from {
                margin-left: 0px;
            }
            /* 动画结束时,方块的左边距是 200px,也就是向右移动了 200px */
            to {
                margin-left: 200px;
            }
        }

        /* 选择类名为 animated-box 的元素 */
        .animated-box {
            /* 设置元素的宽度为 50px */
            width: 50px;
            /* 设置元素的高度为 50px */
            height: 50px;
            /* 设置元素的背景颜色为蓝色 */
            background-color: blue;
            /* 应用名为 moveRight 的动画 */
            animation-name: moveRight;
            /* 设置动画的持续时间为 3 秒 */
            animation-duration: 3s;
        }
    </style>
</head>

<body>
    <!-- 创建一个 div 元素,用来展示动画 -->
    <div class="animated-box"></div>
</body>

</html>

把这段代码保存为一个 .html 文件,用浏览器打开,你就能看到一个蓝色的方块从左到右移动啦!是不是很有趣?现在你也可以发挥自己的创意,修改 @keyframes 规则,让元素做出更多酷炫的动画效果。

那么,除了@keyframe,还有哪些创建动画的方法?

在 CSS 里,除了 @keyframes 规则,还有其他创建动画的方法,下面为你详细介绍:

1. transition(过渡)

transition 是一种简单的动画效果创建方式,它主要用于在元素的某个属性发生变化时,让这种变化以平滑过渡的形式呈现出来,而不是瞬间改变。

原理和作用

当元素的某个 CSS 属性(如颜色、大小、位置等)的值发生改变时,transition 会让这个属性值在指定的时间内逐渐变化,从而产生动画效果。这就像是一个元素从一种状态“过渡”到另一种状态。

示例代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>CSS Transition Example</title>
    <style>
        /* 定义一个类名为 box 的元素样式 */
        .box {
            width: 100px;
            height: 100px;
            background-color: red;
            /* 设置过渡效果,当宽度属性改变时,在 2 秒内平滑过渡 */
            transition: width 2s;
        }

        /* 当鼠标悬停在 box 元素上时,宽度变为 300px */
        .box:hover {
            width: 300px;
        }
    </style>
</head>

<body>
    <!-- 创建一个 div 元素,应用 box 类 -->
    <div class="box"></div>
</body>

</html>

在这个例子中,当鼠标悬停在方块上时,方块的宽度会在 2 秒内从 100px 平滑地过渡到 300px。

2. transform(变换)结合 JavaScript

transform 可以对元素进行旋转、缩放、移动、倾斜等操作,而结合 JavaScript 可以动态地改变 transform 的值,从而创建动画效果。

原理和作用

transform 提供了对元素进行几何变换的能力,JavaScript 则可以控制这些变换在不同时间点的变化,实现更复杂的动画逻辑。

示例代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JavaScript and CSS Transform Animation</title>
    <style>
        /* 定义一个类名为 circle 的元素样式 */
        .circle {
            width: 50px;
            height: 50px;
            background-color: green;
            border-radius: 50%;
            position: absolute;
            top: 50px;
            left: 50px;
        }
    </style>
</head>

<body>
    <!-- 创建一个 div 元素,应用 circle 类 -->
    <div class="circle" id="circle"></div>
    <script>
        // 获取 circle 元素
        const circle = document.getElementById('circle');
        let angle = 0;
        // 定义一个函数,用于旋转元素
        function rotateCircle() {
            angle += 1;
            // 设置元素的 transform 属性,实现旋转效果
            circle.style.transform = `rotate(${angle}deg)`;
            // 每 10 毫秒调用一次 rotateCircle 函数,实现连续旋转
            requestAnimationFrame(rotateCircle);
        }
        // 开始旋转动画
        rotateCircle();
    </script>
</body>

</html>

在这个例子中,JavaScript 不断改变 circle 元素的旋转角度,从而让圆形元素持续旋转。

3. SVG 动画

SVG(可缩放矢量图形)本身就支持动画,通过 <animate><animateTransform> 等元素可以直接在 SVG 中创建动画。

原理和作用

SVG 动画元素可以定义在 SVG 图形的特定属性上,控制这些属性随时间的变化,从而实现动画效果。

示例代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>SVG Animation Example</title>
</head>

<body>
    <!-- 创建一个 SVG 元素 -->
    <svg width="200" height="200" viewBox="0 0 200 200">
        <!-- 创建一个圆形元素 -->
        <circle cx="50" cy="50" r="20" fill="blue">
            <!-- 定义一个动画,让圆形的 cx 属性在 5 秒内从 50 变化到 150 -->
            <animate attributeName="cx" from="50" to="150" dur="5s" repeatCount="indefinite" />
        </circle>
    </svg>
</body>

</html>

在这个例子中,SVG 中的 <animate> 元素让圆形的 cx(圆心的 x 坐标)属性在 5 秒内从 50 变化到 150,并且无限重复这个动画。

除了transition,还有哪些创建动画的方法?

除了 transition,在前端开发中有多种创建动画的方法,以下为你详细介绍:

CSS 层面

1. @keyframes 规则

这是 CSS 中创建复杂动画的强大工具。它允许你定义动画的关键帧,也就是元素在动画过程中不同时间点的样式,浏览器会自动补全这些关键帧之间的过渡效果。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Keyframes Animation</title>
    <style>
        /* 定义名为 bounce 的动画关键帧 */
        @keyframes bounce {
            0%, 20%, 50%, 80%, 100% {
                transform: translateY(0);
            }
            40% {
                transform: translateY(-30px);
            }
            60% {
                transform: translateY(-15px);
            }
        }

        /* 应用动画的元素样式 */
        .ball {
            width: 50px;
            height: 50px;
            background-color: red;
            border-radius: 50%;
            /* 应用 bounce 动画,持续 2 秒,无限循环 */
            animation: bounce 2s infinite;
        }
    </style>
</head>

<body>
    <!-- 创建一个应用动画的元素 -->
    <div class="ball"></div>
</body>

</html>

在上述代码中,@keyframes 定义了一个名为 bounce 的动画,模拟了小球弹跳的效果。.ball 类的元素应用了这个动画,让小球不断弹跳。

2. transform 结合 will-change

transform 可以对元素进行旋转、缩放、移动、倾斜等操作,而 will-change 可以提前告知浏览器某个元素即将发生变化,从而让浏览器提前做好优化准备,提升动画的性能。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Transform with Will-Change</title>
    <style>
        /* 应用动画的元素样式 */
        .box {
            width: 100px;
            height: 100px;
            background-color: blue;
            /* 告知浏览器元素的 transform 属性即将发生变化 */
            will-change: transform;
            transition: transform 1s;
        }

        /* 鼠标悬停时的样式 */
        .box:hover {
            transform: rotate(45deg);
        }
    </style>
</head>

<body>
    <!-- 创建一个应用动画的元素 -->
    <div class="box"></div>
</body>

</html>

这里,will-change 让浏览器提前优化 transform 动画,当鼠标悬停在元素上时,元素会平滑地旋转 45 度。

JavaScript 层面

1. requestAnimationFrame

这是 JavaScript 中用于创建高性能动画的方法。它会在浏览器的下一次重绘之前执行传入的回调函数,从而实现流畅的动画效果。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Request Animation Frame</title>
    <style>
        /* 应用动画的元素样式 */
        .square {
            width: 50px;
            height: 50px;
            background-color: green;
            position: absolute;
            left: 0;
        }
    </style>
</head>

<body>
    <!-- 创建一个应用动画的元素 -->
    <div class="square" id="square"></div>
    <script>
        const square = document.getElementById('square');
        let position = 0;
        // 定义动画函数
        function animate() {
            position++;
            square.style.left = position + 'px';
            // 继续调用动画函数,实现连续动画
            requestAnimationFrame(animate);
        }
        // 开始动画
        animate();
    </script>
</body>

</html>

此代码中,requestAnimationFrame 不断调用 animate 函数,让方块不断向右移动。

2. GSAP(GreenSock Animation Platform)

GSAP 是一个强大的 JavaScript 动画库,提供了丰富的动画功能和简洁的 API,能创建复杂的动画效果。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>GSAP Animation</title>
    <!-- 引入 GSAP 库 -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.11.5/gsap.min.js"></script>
</head>

<body>
    <!-- 创建一个应用动画的元素 -->
    <div class="element" id="element">Animated Element</div>
    <script>
        const element = document.getElementById('element');
        // 使用 GSAP 创建动画,让元素在 2 秒内向右移动 200px 并旋转 360 度
        gsap.to(element, {
            duration: 2,
            x: 200,
            rotation: 360
        });
    </script>
</body>

</html>

在这个例子中,GSAP 的 gsap.to 方法让元素在 2 秒内向右移动 200px 并旋转 360 度。

SVG 层面

1. SVG <animate> 元素

SVG 提供了 <animate> 元素用于创建动画,它可以控制 SVG 元素的属性随时间变化。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>SVG Animate</title>
</head>

<body>
    <!-- 创建一个 SVG 元素 -->
    <svg width="200" height="200" viewBox="0 0 200 200">
        <!-- 创建一个矩形元素 -->
        <rect x="50" y="50" width="50" height="50" fill="orange">
            <!-- 定义一个动画,让矩形的 x 属性在 3 秒内从 50 变化到 150 -->
            <animate attributeName="x" from="50" to="150" dur="3s" repeatCount="indefinite" />
        </rect>
    </svg>
</body>

</html>

这里,<animate> 元素让矩形的 x 属性在 3 秒内从 50 变化到 150,并且无限循环这个动画。

除了transition,还有哪些创建动画的方法?

transition@keyframes 规则都是 CSS 中用于创建动画效果的工具,但它们在多个方面存在明显区别,下面为你详细介绍:

基本概念

  • transition:它是一种用于在元素的两个状态之间创建平滑过渡效果的机制。当元素的某个 CSS 属性值发生变化时,transition 会让这个属性值在指定的时间内逐渐改变,而不是瞬间切换。例如,当鼠标悬停在元素上时,元素的颜色或大小发生变化,使用 transition 可以让这种变化看起来更自然。
  • @keyframes@keyframes 规则允许你定义一个动画的完整过程,通过指定元素在不同时间点(关键帧)的样式,浏览器会自动补全这些关键帧之间的过渡效果,从而创建出复杂的动画序列。你可以控制动画的开始、中间和结束状态,以及中间的多个过渡状态。

语法和使用方式

  • transition:使用时需要指定要过渡的属性、过渡的持续时间,还可以选择指定过渡的延迟时间、过渡的速度曲线等。语法如下:
/* 选择要应用过渡效果的元素 */
.element {
    /* 指定要过渡的属性为 width,过渡持续时间为 2 秒,过渡速度曲线为 ease */
    transition: width 2s ease;
}

/* 当元素处于悬停状态时,改变 width 属性的值 */
.element:hover {
    width: 200px;
}

在上述代码中,当鼠标悬停在 .element 元素上时,其 width 属性会在 2 秒内平滑地从初始值过渡到 200px。

  • @keyframes:首先需要使用 @keyframes 关键字定义一个动画,为其命名并指定关键帧的样式。然后,将这个动画应用到元素上,并设置动画的持续时间、播放次数等属性。语法如下:
/* 定义一个名为 slide 的动画 */
@keyframes slide {
    /* 动画开始时,元素的左边距为 0px */
    from {
        margin-left: 0px;
    }
    /* 动画结束时,元素的左边距为 200px */
    to {
        margin-left: 200px;
    }
}

/* 选择要应用动画的元素 */
.element {
    /* 应用名为 slide 的动画,动画持续时间为 3 秒,无限循环播放 */
    animation: slide 3s infinite;
}

这里,.element 元素会不断地从左边移动到右边,每次移动的过程持续 3 秒。

动画复杂度

  • transition:适用于创建简单的、从一个状态到另一个状态的过渡效果。它只能处理两个状态之间的变化,无法创建包含多个中间状态的复杂动画。例如,你只能在元素的初始状态和悬停状态之间创建过渡效果。
  • @keyframes:可以创建非常复杂的动画,因为你可以定义多个关键帧,精确控制元素在动画过程中的每一个阶段的样式。你可以实现元素的多次移动、旋转、缩放等组合效果,还可以设置不同的时间间隔和速度曲线。

触发方式

  • transition:通常需要一个事件来触发属性的变化,从而启动过渡效果。常见的触发事件包括鼠标悬停(:hover)、焦点获取(:focus)、元素的激活状态(:active)等。只有当这些事件发生时,元素的属性值发生改变,过渡效果才会开始。
  • @keyframes:动画一旦应用到元素上,就会根据设置的属性自动开始播放,不需要额外的事件触发。你可以通过设置 animation-play-state 属性来暂停或继续动画的播放。

应用场景

  • transition:常用于简单的交互效果,如按钮的悬停效果、菜单的展开和收缩等。这些场景只需要在两个状态之间进行平滑过渡,使用 transition 可以快速实现且代码简洁。
  • @keyframes:适用于创建复杂的动画效果,如加载动画、页面切换动画、角色动画等。当需要精确控制动画的每一个阶段时,@keyframes 是更好的选择。

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

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

相关文章

国产达梦(DM)数据库的安装(Linux系统)

目录 一、安装前的准备工作 1.1 导包 1.2 创建用户和组 1.3 修改文件打开最大数 1.4 目录规划 1.5 修改目录权限 二、安装DM8 2.1 挂载镜像 2.2 命令行安装 2.3 配置环境变量 2.4 启动图形化界面 三、配置实例 四、注册服务 五、启动 停止 查看状态 六、数据库客…

git的底层原理

git的底层原理 三段话总结git&#xff0c; 1. 工作原理&#xff1a;git管理是一个DAG有向无环图&#xff0c;HEAD指针指向branch或直接指向commit&#xff0c;branch指向commit&#xff0c;commit指向tree&#xff0c;tree指向别的tree或直接指向blob。 2. git所管理的一个目录…

MATLAB+Arduino利用板上的按键控制板上Led灯

几年不使用&#xff0c;之前的知识都忘掉了。需要逐步捡起来。 1 熟悉按键的使用 2熟悉灯的控制 1 电路 我们将通过 MATLAB 的 Arduino 支持包与 Arduino 板通信&#xff0c;读取按键状态并控制 LED 灯的亮灭。 按键&#xff1a;连接到 Arduino 的数字引脚&#xff08;例如…

Cocos Creator Shader入门实战(五):材质的了解、使用和动态构建

引擎&#xff1a;3.8.5 您好&#xff0c;我是鹤九日&#xff01; 回顾 前面的几篇文章&#xff0c;讲述的主要是Cocos引擎对Shader使用的一些固定规则&#xff0c;这里汇总下&#xff1a; 一、Shader实现基础是OpenGL ES可编程渲染管线&#xff0c;开发者只需关注顶点着色器和…

vue设置自定义logo跟标题

准备 Logo 图片 将自定义的 Logo 图片&#xff08;如 logo.png&#xff09;放置在项目的 public文件夹下。 使用环境变量设置 Logo 和标题&#xff08;可选&#xff09; 创建或修改 .env 文件 在项目根目录下创建或修改 .env 文件&#xff0c;添加以下内容&#xff1a; VITE_A…

尝试在软考65天前开始成为软件设计师-计算机网络

OSI/RM 七层模型 层次名功能主要协议7应用层实现具体应用功能 FTP(文件传输)、HTTP、Telnet、 POP3(邮件)SMTP(邮件) ------- DHCP、TFTP(小文件)、 SNMP、 DNS(域名) 6表示层数据格式,加密,压缩.....5会话层建立,管理&终止对话4传输层端到端连接TCP,UDP3网络层分组传输&a…

VMware主机换到高配电脑,高版本系统的问题

原来主机是i3 ,windows7系统&#xff0c;vmware 14.0,虚机系统是ubuntu 14.04。目标新机是i7 14700KF,windows11系统。原以为安装虚拟机&#xff0c;将磁盘文件&#xff0c;虚拟机配置文件拷贝过去可以直接用。 新目标主机先安装了vmware 15&#xff0c;运行原理虚机&#xff0…

【Linux内核系列】:动静态库详解

&#x1f525; 本文专栏&#xff1a;Linux &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; 有些鸟儿是注定是关不住的&#xff0c;因为它们的每一片羽翼都沾满了自由的光辉 ★★★ 本文前置知识&#xff1a; 编译与链接的过程…

windows环境下NER Python项目环境配置(内含真的从头安的perl配置)

注意 本文是基于完整项目的环境配置&#xff0c;即本身可运行项目你拿来用 其中有一些其他问题&#xff0c;知道的忽略即可 导入pycharm基本包怎么下就不说了&#xff08;这个都问&#xff1f;给你一拳o(&#xff40;ω*)o&#xff09; 看perl跳转第5条 1.predict报错多个设备…

IDEA批量替换项目下所有文件中的特定内容

文章目录 1. 问题引入2. 批量替换项目下所有文件中的特定内容2.1 右键项目的根目录&#xff0c;点击在文件中替换2.2 输入要替换的内容 3. 解决替换一整行文本后出现空行的问题4. 增加筛选条件提高匹配的精确度 更多 IDEA 的使用技巧可以查看 IDEA 专栏&#xff1a; IDEA 1. 问…

【蓝桥杯】4535勇闯魔堡(多源BFS + 二分)

思路 k有一个范围&#xff08;0到怪物攻击的最大值&#xff09;&#xff0c;求满足要求的k的最小值。很明显的二分套路。 关键是check函数怎么写&#xff0c;我们需要找到一条从第一行到最后一行的路径&#xff0c;每一次可以从上下左右四个方向前进&#xff0c;那么我么可以用…

HTML图像标签的详细介绍

1. 常用图像格式 格式特点适用场景JPEG有损压缩&#xff0c;文件小&#xff0c;不支持透明适合照片、复杂图像PNG无损压缩&#xff0c;支持透明&#xff08;Alpha通道&#xff09;适合图标、需要透明背景的图片GIF支持动画&#xff0c;最多256色简单动画、低色彩图标WebP谷歌开…

Chapter 4-15. Troubleshooting Congestion in Fibre Channel Fabrics

show zone member: Shows the name of the zone to which a device belongs to. This command can be used to find the victims of a culprit device or vice versa. 显示设备所属的区域名称。该命令可用于查找罪魁祸首设备的受害者,反之亦然。 show zone active: Shows the…

QT三 自定义控件

一 自定义控件 现在的需求是这样&#xff1a; 假设我们要在QWidget 上做定制&#xff0c;这个定制包括了关于 一些事件处理&#xff0c;意味着要重写QWidget的一些代码&#xff0c;这是不实际的&#xff0c;因此我们需要自己写一个MyWidget继承QWidget&#xff0c;然后再MyWi…

在 ASP .NET Core 9.0 中使用 Scalar 创建漂亮的 API 文档

示例代码&#xff1a;https://download.csdn.net/download/hefeng_aspnet/90407900 Scalar 是一款可帮助我们为 API 创建精美文档的工具。与感觉有些过时的默认 Swagger 文档不同&#xff0c;Scalar 为 API 文档提供了全新而现代的 UI。其简洁的设计让开发人员可以轻松找到测试…

用于 RGB-D 显著目标检测的点感知交互和 CNN 诱导的细化网络(问题)

摘要 问题一&#xff1a;但在对自模态和跨模态的全局长距离依赖关系进行建模方面仍显不足。什么意思&#xff1f; 自模态&#xff08;Intra-modal&#xff09;全局依赖&#xff1a;在同一模态内&#xff0c;长距离像素之间的信息交互对于理解全局背景很重要&#xff0c;但 CN…

python3 -m http.sever 8080加载不了解决办法

解决方法很多&#xff0c;本文设置各种处理方法&#xff0c;逻辑上需要根据你的自身情况选择 我会告诉你遇到这种问题怎么做&#xff0c;根据具体症状处理 如需转载&#xff0c;标记出处 背景&#xff1a; 1。如图 2.。域名访问不了 http://www.meiduo.site:8080/register.ht…

Oracle数据库性能优化全攻略:十大关键方向深度解析与实践指南

文章目录 一、SQL查询优化二、索引优化三、内存管理四、I/O优化五、分区表与分区索引六、并行处理七、统计信息管理八、锁与并发控制九、数据库参数调优十、应用设计优化结论 在当今数据驱动的时代&#xff0c;数据库的性能优化成为了确保企业应用高效运行的关键。Oracle作为业…

windows清除电脑开机密码,可保留原本的系统和资料,不重装系统

前言 很久的一台电脑没有使用了&#xff0c;开机密码忘了&#xff0c;进不去系统 方法 1.将一个闲置u盘设置成pe盘&#xff08;注意&#xff0c;这个操作会清空原来u盘的数据&#xff0c;需要在配置前将重要数据转移走&#xff0c;数据无价&#xff0c;别因为配置这个丢了重…

【深度学习】【目标检测】【Ultralytics-YOLO系列】Windows11下YOLOV3人脸检测

【深度学习】【目标检测】【Ultralytics-YOLO系列】Windows11下YOLOV3人脸检测 文章目录 【深度学习】【目标检测】【Ultralytics-YOLO系列】Windows11下YOLOV3人脸检测前言YOLOV3模型运行环境搭建YOLOV3模型运行数据集准备YOLOV3运行模型训练模型验证模型推理导出onnx模型 总结…