5.2 JavaScript 案例 - 轮播图

news2024/12/13 22:09:13

JavaScript - 轮播图

文章目录

  • JavaScript - 轮播图
  • 基础模版
  • 一、刷新页面随机轮播图案例
  • 二、轮播图 定时器版
  • 三、轮播图完整版

基础模版

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

<head>
  <meta charset="UTF-8" />
  <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>轮播图点击切换</title>
  <style>
      * {
          box-sizing: border-box;
      }

      .slider {
          width: 560px;
          height: 400px;
          overflow: hidden;
      }

      .slider-wrapper {
          width: 100%;
          height: 320px;
      }

      .slider-wrapper img {
          width: 100%;
          height: 100%;
          display: block;
      }

      .slider-footer {
          height: 80px;
          background-color: rgb(100, 67, 68);
          padding: 12px 12px 0 12px;
          position: relative;
      }

      .slider-footer .toggle {
          position: absolute;
          right: 0;
          top: 12px;
          display: flex;
      }

      .slider-footer .toggle button {
          margin-right: 12px;
          width: 28px;
          height: 28px;
          appearance: none;
          border: none;
          background: rgba(255, 255, 255, 0.1);
          color: #fff;
          border-radius: 4px;
          cursor: pointer;
      }

      .slider-footer .toggle button:hover {
          background: rgba(255, 255, 255, 0.2);
      }

      .slider-footer p {
          margin: 0;
          color: #fff;
          font-size: 18px;
          margin-bottom: 10px;
      }

      .slider-indicator {
          margin: 0;
          padding: 0;
          list-style: none;
          display: flex;
          align-items: center;
      }

      .slider-indicator li {
          width: 8px;
          height: 8px;
          margin: 4px;
          border-radius: 50%;
          background: #fff;
          opacity: 0.4;
          cursor: pointer;
      }

      .slider-indicator li.active {
          width: 12px;
          height: 12px;
          opacity: 1;
      }
  </style>
</head>

<body>
<div class="slider">
  <div class="slider-wrapper">
    <img src="./images/slider01.jpg" alt="" />
  </div>
  <div class="slider-footer">
    <p>对人类来说会不会太超前了?</p>
    <ul class="slider-indicator">
      <li class="active"></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>
    <div class="toggle">
      <button class="prev">&lt;</button>
      <button class="next">&gt;</button>
    </div>
  </div>
</div>
<script>
  // 1. 初始数据
  const sliderData = [
    { url: './images/slider01.jpg', title: '对人类来说会不会太超前了?', color: 'rgb(100, 67, 68)' },
    { url: './images/slider02.jpg', title: '开启剑与雪的黑暗传说!', color: 'rgb(43, 35, 26)' },
    { url: './images/slider03.jpg', title: '真正的jo厨出现了!', color: 'rgb(36, 31, 33)' },
    { url: './images/slider04.jpg', title: '李玉刚:让世界通过B站看到东方大国文化', color: 'rgb(139, 98, 66)' },
    { url: './images/slider05.jpg', title: '快来分享你的寒假日常吧~', color: 'rgb(67, 90, 92)' },
    { url: './images/slider06.jpg', title: '哔哩哔哩小年YEAH', color: 'rgb(166, 131, 143)' },
    { url: './images/slider07.jpg', title: '一站式解决你的电脑配置问题!!!', color: 'rgb(53, 29, 25)' },
    { url: './images/slider08.jpg', title: '谁不想和小猫咪贴贴呢!', color: 'rgb(99, 72, 114)' },
  ]


</script>
</body>

</html>

一、刷新页面随机轮播图案例

需求:当我们刷新页面,页面中的轮播图会显示不同的照片以及样式

模块

  1. 刷新后图片会随机变换
  2. 当图片变化后,底部盒子背景颜色和文字内容会变换
  3. 当图片变化后,小圆点随机一个高亮显示

页面分析

首先使用一个盒子存放图片

image-20240701104344807

其次再使用一个底部模版存放按钮及图片的标题

image-20240701104432655

这里的ul-li,就是里面的底部模块的小点

image-20240701104616952

逻辑分析

  1. 准备一个数组对象,里面包含详细信息

  2. 随机选择一个数字,选出数组对应的对象,更换图片,底部盒子背景颜色及文字内容

  3. 利用随机数字,让小圆点添加高亮的类(addClass),这里利用CSS结构伪类选择器

代码如下所示

目前还不是一个很完整的轮播图,不能点击小圆点、不能前后左右翻页,后面会慢慢的完善

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

<head>
  <meta charset="UTF-8"/>
  <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <title>轮播图点击切换</title>
  <style>
      * {
          box-sizing: border-box;
      }

      .slider {
          width: 560px;
          height: 400px;
          overflow: hidden;
      }

      .slider-wrapper {
          width: 100%;
          height: 320px;
      }

      .slider-wrapper img {
          width: 100%;
          height: 100%;
          display: block;
      }

      .slider-footer {
          height: 80px;
          background-color: rgb(100, 67, 68);
          padding: 12px 12px 0 12px;
          position: relative;
      }

      .slider-footer .toggle {
          position: absolute;
          right: 0;
          top: 12px;
          display: flex;
      }

      .slider-footer .toggle button {
          margin-right: 12px;
          width: 28px;
          height: 28px;
          appearance: none;
          border: none;
          background: rgba(255, 255, 255, 0.1);
          color: #fff;
          border-radius: 4px;
          cursor: pointer;
      }

      .slider-footer .toggle button:hover {
          background: rgba(255, 255, 255, 0.2);
      }

      .slider-footer p {
          margin: 0;
          color: #fff;
          font-size: 18px;
          margin-bottom: 10px;
      }

      .slider-indicator {
          margin: 0;
          padding: 0;
          list-style: none;
          display: flex;
          align-items: center;
      }

      .slider-indicator li {
          width: 8px;
          height: 8px;
          margin: 4px;
          border-radius: 50%;
          background: #fff;
          opacity: 0.4;
          cursor: pointer;
      }

      .slider-indicator li.active {
          width: 12px;
          height: 12px;
          opacity: 1;
      }
  </style>
</head>

<body>
<div class="slider">
  <div class="slider-wrapper">
    <img src="./images/slider01.jpg" alt=""/>
  </div>
  <div class="slider-footer">
    <p>对人类来说会不会太超前了?</p>
    <ul class="slider-indicator">
      <!--active是高亮的样式-->
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>
    <div class="toggle">
      <button class="prev">&lt;</button>
      <button class="next">&gt;</button>
    </div>
  </div>
</div>
<script>
  //1.初始数据
  const sliderData = [
    { url: './images/slider01.jpg', title: '对人类来说会不会太超前了?', color: 'rgb(100, 67, 68)' },
    { url: './images/slider02.jpg', title: '开启剑与雪的黑暗传说!', color: 'rgb(43, 35, 26)' },
    { url: './images/slider03.jpg', title: '真正的jo厨出现了!', color: 'rgb(36, 31, 33)' },
    { url: './images/slider04.jpg', title: '李玉刚:让世界通过B站看到东方大国文化', color: 'rgb(139, 98, 66)' },
    { url: './images/slider05.jpg', title: '快来分享你的寒假日常吧~', color: 'rgb(67, 90, 92)' },
    { url: './images/slider06.jpg', title: '哔哩哔哩小年YEAH', color: 'rgb(166, 131, 143)' },
    { url: './images/slider07.jpg', title: '一站式解决你的电脑配置问题!!!', color: 'rgb(53, 29, 25)' },
    { url: './images/slider08.jpg', title: '谁不想和小猫咪贴贴呢!', color: 'rgb(99, 72, 114)' }
  ]

  //2.创建随机数
  // function getRandom(N, M) {
  //   return Math.floor(Math.random() * (M - N + 1)) + N
  // }
  //const random = getRandom(1,8)
  const random = parseInt(Math.random() * sliderData.length) //或者是这么生成随机数也行

  //3.把对应的数据渲染到标签里面
  // 3.1获取图片
  const img = document.querySelector('.slider-wrapper img')//表示slider-wrapper类中的第一个img标签
  // 3.2修改图片的路径
  img.src = sliderData[random].url
  // 3.3获取标签p
  const p = document.querySelector('.slider-footer p')//表示slider-footer类中的第一个p标签
  p.innerHTML = sliderData[random].title
  // 3.4修改slider-footer中背景板的颜色
  const sliderFooterDocument = document.querySelector('.slider-footer')
  sliderFooterDocument.style.backgroundColor = sliderData[random].color

  //4.底部ul-li进行切换,对应的li进行高亮
  //这个地方没有用all,因为用all筛选的是一个伪数组
  const li = document.querySelector(`.slider-indicator li:nth-child(${random + 1})`)//选中第random+1个li(因为random是0-7 而li是1-8)
  //当前选中的li添加active这个类
  li.classList.add('active')
</script>
</body>

</html>

二、轮播图 定时器版

承接上面的代码

需求:每隔一秒钟切换一个图片

分析

  1. 准备一个数组对象,里面包含详情信息(素材包含)

  2. 获取元素

  3. 设置定时器函数

    设置变量++

    找到变量对应的对象

    更改图片、文字信息

    激活小圆点,移除上一个高亮的类名,当前变量对应的小圆点添加类

  4. 处理图片自动复原从头播放(放到变量++后面,紧挨)

    如果图片播放到最后一张,就是大于等于数组的长度

    则把变量重置为0

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

<head>
  <meta charset="UTF-8"/>
  <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <title>轮播图点击切换</title>
  <style>
      * {
          box-sizing: border-box;
      }

      .slider {
          width: 560px;
          height: 400px;
          overflow: hidden;
      }

      .slider-wrapper {
          width: 100%;
          height: 320px;
      }

      .slider-wrapper img {
          width: 100%;
          height: 100%;
          display: block;
      }

      .slider-footer {
          height: 80px;
          background-color: rgb(100, 67, 68);
          padding: 12px 12px 0 12px;
          position: relative;
      }

      .slider-footer .toggle {
          position: absolute;
          right: 0;
          top: 12px;
          display: flex;
      }

      .slider-footer .toggle button {
          margin-right: 12px;
          width: 28px;
          height: 28px;
          appearance: none;
          border: none;
          background: rgba(255, 255, 255, 0.1);
          color: #fff;
          border-radius: 4px;
          cursor: pointer;
      }

      .slider-footer .toggle button:hover {
          background: rgba(255, 255, 255, 0.2);
      }

      .slider-footer p {
          margin: 0;
          color: #fff;
          font-size: 18px;
          margin-bottom: 10px;
      }

      .slider-indicator {
          margin: 0;
          padding: 0;
          list-style: none;
          display: flex;
          align-items: center;
      }

      .slider-indicator li {
          width: 8px;
          height: 8px;
          margin: 4px;
          border-radius: 50%;
          background: #fff;
          opacity: 0.4;
          cursor: pointer;
      }

      .slider-indicator li.active {
          width: 12px;
          height: 12px;
          opacity: 1;
      }
  </style>
</head>

<body>
<div class="slider">
  <div class="slider-wrapper">
    <img src="./images/slider01.jpg" alt=""/>
  </div>
  <div class="slider-footer">
    <p>对人类来说会不会太超前了?</p>
    <ul class="slider-indicator">
      <li class="active"></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>
    <div class="toggle">
      <button class="prev">&lt;</button>
      <button class="next">&gt;</button>
    </div>
  </div>
</div>
<script>
  // 1. 初始数据
  const sliderData = [
    { url: './images/slider01.jpg', title: '对人类来说会不会太超前了?', color: 'rgb(100, 67, 68)' },
    { url: './images/slider02.jpg', title: '开启剑与雪的黑暗传说!', color: 'rgb(43, 35, 26)' },
    { url: './images/slider03.jpg', title: '真正的jo厨出现了!', color: 'rgb(36, 31, 33)' },
    { url: './images/slider04.jpg', title: '李玉刚:让世界通过B站看到东方大国文化', color: 'rgb(139, 98, 66)' },
    { url: './images/slider05.jpg', title: '快来分享你的寒假日常吧~', color: 'rgb(67, 90, 92)' },
    { url: './images/slider06.jpg', title: '哔哩哔哩小年YEAH', color: 'rgb(166, 131, 143)' },
    { url: './images/slider07.jpg', title: '一站式解决你的电脑配置问题!!!', color: 'rgb(53, 29, 25)' },
    { url: './images/slider08.jpg', title: '谁不想和小猫咪贴贴呢!', color: 'rgb(99, 72, 114)' }
  ]
  //2.获取元素
  const img = document.querySelector('.slider-wrapper img') //图片元素
  const p = document.querySelector('.slider-footer p') //p标签

  let i = 0
  //3.开启定时器
  //轮播图的第一张可以不用参与变化,1s后直接播放第二章即可
  setInterval(function() {
    i++
    if (i >= sliderData.length) {
      // 超过数组长度的话,初始化
      i = 0
    }
    // const obj = sliderData[i]
    //更换图片路径
    img.src = sliderData[i].url
    //字
    p.innerHTML = sliderData[i].title
    //小圆点 小圆点从1开始数的
    //删除之前的active
    document.querySelector('.slider-indicator .active').classList.remove('active')
    document.querySelector(`.slider-indicator li:nth-child(${i + 1})`).classList.add('active')//小圆点高亮显示

  }, 1000)

</script>
</body>

</html>

三、轮播图完整版

需求:当点击左右按钮的时候,可以切换轮播图

分析

  • 右侧按钮点击,变量++,如果大于等于8,则复原0
  • 左侧按钮点击,变量–,如果小于0,则复原最后一张
  • 鼠标经过暂停定时器
  • 鼠标离开开启定时器
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8"/>
  <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <title>轮播图点击切换</title>
  <style>
      * {
          box-sizing: border-box;
      }

      .slider {
          width: 560px;
          height: 400px;
          overflow: hidden;
      }

      .slider-wrapper {
          width: 100%;
          height: 320px;
      }

      .slider-wrapper img {
          width: 100%;
          height: 100%;
          display: block;
      }

      .slider-footer {
          height: 80px;
          background-color: rgb(100, 67, 68);
          padding: 12px 12px 0 12px;
          position: relative;
      }

      .slider-footer .toggle {
          position: absolute;
          right: 0;
          top: 12px;
          display: flex;
      }

      .slider-footer .toggle button {
          margin-right: 12px;
          width: 28px;
          height: 28px;
          appearance: none;
          border: none;
          background: rgba(255, 255, 255, 0.1);
          color: #fff;
          border-radius: 4px;
          cursor: pointer;
      }

      .slider-footer .toggle button:hover {
          background: rgba(255, 255, 255, 0.2);
      }

      .slider-footer p {
          margin: 0;
          color: #fff;
          font-size: 18px;
          margin-bottom: 10px;
      }

      .slider-indicator {
          margin: 0;
          padding: 0;
          list-style: none;
          display: flex;
          align-items: center;
      }

      .slider-indicator li {
          width: 8px;
          height: 8px;
          margin: 4px;
          border-radius: 50%;
          background: #fff;
          opacity: 0.4;
          cursor: pointer;
      }

      .slider-indicator li.active {
          width: 12px;
          height: 12px;
          opacity: 1;
      }
  </style>
</head>

<body>
<div class="slider">
  <div class="slider-wrapper">
    <img src="./images/slider01.jpg" alt=""/>
  </div>
  <div class="slider-footer">
    <p>对人类来说会不会太超前了?</p>
    <ul class="slider-indicator">
      <li class="active"></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>
    <div class="toggle">
      <button class="prev">&lt;</button>
      <button class="next">&gt;</button>
    </div>
  </div>
</div>
<script>
  // 1. 初始数据
  const data = [
    { url: './images/slider01.jpg', title: '对人类来说会不会太超前了?', color: 'rgb(100, 67, 68)' },
    { url: './images/slider02.jpg', title: '开启剑与雪的黑暗传说!', color: 'rgb(43, 35, 26)' },
    { url: './images/slider03.jpg', title: '真正的jo厨出现了!', color: 'rgb(36, 31, 33)' },
    { url: './images/slider04.jpg', title: '李玉刚:让世界通过B站看到东方大国文化', color: 'rgb(139, 98, 66)' },
    { url: './images/slider05.jpg', title: '快来分享你的寒假日常吧~', color: 'rgb(67, 90, 92)' },
    { url: './images/slider06.jpg', title: '哔哩哔哩小年YEAH', color: 'rgb(166, 131, 143)' },
    { url: './images/slider07.jpg', title: '一站式解决你的电脑配置问题!!!', color: 'rgb(53, 29, 25)' },
    { url: './images/slider08.jpg', title: '谁不想和小猫咪贴贴呢!', color: 'rgb(99, 72, 114)' }
  ]

  //准备工作,获取元素
  const img = document.querySelector('.slider-wrapper img')
  const p = document.querySelector('.slider-footer p')
  const footer = document.querySelector('.slider-footer')

  //1.右按钮业务
  //1.1 获取右侧按钮
  const next = document.querySelector('.next')
  let i = 0 //信号量 控制播放图片张数
  //1.2 注册点击事件
  next.addEventListener('click', function() {
    //播放下一张图片
    i++
    if (i >= data.length) {
      //初始化为第一张
      i = 0
    }
    toggle()
    //1.3 得到对应的图片对象
    //1.4 渲染对应的对象
    // img.src = data[i].url
    // p.innerHTML = data[i].title
    // footer.style.backgroundColor = data[i].color
    // //1.5更换小圆点 先移除原来的类名,当前的li再添加active类名
    // document.querySelector('.slider-indicator .active').classList.remove('active')
    // document.querySelector(`.slider-indicator li:nth-child(${i + 1})`).classList.add('active')
  })
  //2.左侧按钮业务
  //2.1 获取左侧按钮
  const prev = document.querySelector('.prev')
  //2.2 注册点击事件
  prev.addEventListener('click', function() {
    //播放下一张图片
    i--
    if (i < 0) {
      //初始化为第一张
      i = data.length - 1
    }
    toggle()
    //1.3 得到对应的图片对象
    //1.4 渲染对应的对象
    // img.src = data[i].url
    // p.innerHTML = data[i].title
    // footer.style.backgroundColor = data[i].color
    // //1.5更换小圆点 先移除原来的类名,当前的li再添加active类名
    // document.querySelector('.slider-indicator .active').classList.remove('active')
    // document.querySelector(`.slider-indicator li:nth-child(${i + 1})`).classList.add('active')
  })

  //3.声明一个渲染的函数作为复用
  function toggle() {
    //1.3 得到对应的图片对象
    //1.4 渲染对应的对象
    img.src = data[i].url
    p.innerHTML = data[i].title
    footer.style.backgroundColor = data[i].color
    //1.5更换小圆点 先移除原来的类名,当前的li再添加active类名
    document.querySelector('.slider-indicator .active').classList.remove('active')
    document.querySelector(`.slider-indicator li:nth-child(${i + 1})`).classList.add('active')
  }

  //4.自动播放模块
  let timerId = setInterval(function() {
    //利用JS,自动调用点击事件
    next.click()
  }, 1000)

  //5.鼠标经过大盒子暂停定时器,鼠标移动过大盒子后,开启定时器
  const slider = document.querySelector('.slider')
  //注册事件
  slider.addEventListener('mouseenter', function() {
    clearInterval(timerId)
  })
  slider.addEventListener('mouseleave', function() {
    //这个定时器相当于先开再关的
    timerId = setInterval(function() {
      //利用JS,自动调用点击事件
      next.click()
    }, 1000)
  })

</script>
</body>

</html>

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

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

相关文章

MongoDB与阿里云庆祝合作五周年,展望AI赋能新未来

12月3日&#xff0c;在印尼举行的阿里云合作伙伴大会2024上&#xff0c;MongoDB荣膺阿里云“2024技术创新成就奖”&#xff0c;该奖项旨在表彰与阿里云保持长期稳定合作&#xff0c;通过深度技术融合&#xff0c;在产品技术创新、行业区域深耕等领域取得卓越成就的伙伴。自2019…

数据结构(Queue队列)

前言&#xff1a; 在计算机科学中&#xff0c;数据结构是构建高效算法和程序的基础&#xff0c;而队列&#xff08;Queue&#xff09;作为一种经典的线性数据结构&#xff0c;具有重要的地位。与栈&#xff08;Stack&#xff09;不同&#xff0c;队列遵循“先进先出”&#xf…

EDA - Spring Boot构建基于事件驱动的消息系统

文章目录 概述事件驱动架构的基本概念工程结构Code创建事件和事件处理器创建事件总线创建消息通道和发送逻辑创建事件处理器消息持久化创建消息发送事件配置 Spring Boot 启动类测试消息消费运行项目 概述 在微服务架构和大规模分布式系统中&#xff0c;事件驱动架构&#xff…

仿iOS日历、飞书日历、Google日历的日模式

仿iOS日历、飞书日历、Google日历的日模式&#xff0c;24H内事件可自由上下拖动、自由拉伸。 以下是效果图&#xff1a; 具体实现比较简单&#xff0c;代码如下&#xff1a; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color;…

软考高级架构 - 10.5 软件架构演化评估方法

10.4 软件架构演化原则总结 本节提出了18条架构演化的核心原则&#xff0c;并为每条原则设计了简单而有效的度量方法&#xff0c;用于从系统整体层面提供实用信息&#xff0c;帮助评估和指导架构演化。 演化成本控制&#xff1a;成本小于重新开发成本&#xff0c;经济高效。进…

DocFlow票据AI自动化处理工具:出色的文档解析+抽取能力,提升企业文档数字化管理效能

目录 财务应付 金融信贷业务 近期&#xff0c;DocFlow票据自动化产品正式上线。DocFlow是一款票据AI自动化处理工具&#xff0c;支持不同版式单据智能分类扩展&#xff0c;可选功能插件配置流程&#xff0c;满足多样业务场景。 随着全球化与信息化进程&#xff0c;企业的文件…

C# 探险之旅:第二节 - 定义变量与变量赋值

欢迎再次踏上我们的C#学习之旅。今天&#xff0c;我们要聊一个超级重要又好玩的话题——定义变量与变量赋值。想象一下&#xff0c;你正站在一个魔法森林里&#xff0c;手里拿着一本空白的魔法书&#xff08;其实就是你的代码编辑器&#xff09;&#xff0c;准备记录下各种神奇…

有道云笔记批量导出

前言 最近使用有道云笔记遇到打开过慢&#xff0c;导致笔记丢失&#xff0c;需要会员才能找回之前笔记问题。 决定改用思源&#xff0c;程序中的格式比较难于通过复制保留&#xff0c;即使导出成word 或者pdf&#xff0c;需要一个专门工具导出成Markdown格式&#xff0c;批量…

离线无网环境中基于OpenEuler的everything ISO安装软件

文章目录 1.创建挂载点 2.挂载 ISO 文件: 3.配置 YUM 源 4.清理 YUM 缓存并生成新的缓存: 5.使用 YUM 安装软件包 要在 OpenEuler 系统中挂载ISO &#xff08;下载地址&#xff1a;https://repo.openeuler.openatom.cn/openEuler-20.03-LTS/ISO/x86_64/&#xff09;并使用…

2024最新树莓派4b安装ubuntu20.04.5-server版本全流程解决方案:从烧录到配置桌面到联网!!!

准备工作 硬件工具 树莓派4b&#xff0c;32GSD卡&#xff0c;读卡器 软件工具 ubuntu20.04.5镜像&#xff0c;SD卡格式化工具&#xff0c;烧录软件&#xff0c;远程连接工具。 下面是我通过百度网盘分享的文件&#xff1a;树莓派4bubuntu20.04链接&#xff1a;https://pan…

STM32 OLED屏幕驱动详解

一、介绍 OLED是有机发光二极管&#xff0c;又称为有机电激光显示&#xff08;Organic Electroluminescence Display&#xff0c; OLED&#xff09;。OLED由于同时具备自发光&#xff0c;不需背光源、对比度高、厚度薄、视角广、反应速度快、可用于挠曲性面板、使用温度范围广…

商业银行基于容器云的分布式数据库架构设计与创新实践

导读 本文介绍了某商业银行基于 TiDB 和 Kubernetes(简称 K8s) 构建的云化分布式数据库平台&#xff0c;重点解决了传统私有部署模式下的高成本、低资源利用率及运维复杂等问题。 通过引入 TiDB Operator 自动化管理与容器化技术&#xff0c;银行能够实现多个业务系统的高可用…

项目组件框架介绍[etcd]

文章目录 前言etcd安装Ubuntu 上通过包管理器安装通过源码安装配置 客户端开发包开发包的安装接口介绍添加一个键值对获取一个键值对租约保活机制监听 封装服务注册与发现服务注册服务发现 前言 Etcd 是一个 golang 编写的分布式、高可用的一致性键值存储系统&#xff0c;用于配…

网页爬虫技术全解析:从基础到实战

引言 在当今信息爆炸的时代&#xff0c;互联网上的数据量每天都在以惊人的速度增长。网页爬虫&#xff08;Web Scraping&#xff09;&#xff0c;作为数据采集的重要手段之一&#xff0c;已经成为数据科学家、研究人员和开发者不可或缺的工具。本文将全面解析网页爬虫技术&…

Jmeter如何对UDP协议进行测试?

Jmeter如何对UDP协议进行测试&#xff1f; 1 jmeter-plugins安装2 UDP-Protocol Support安装3 UDP协议测试 1 jmeter-plugins安装 jmeter-plugins是Jmeter的插件管理器&#xff1b;可以组织和管理Jmeter的所有插件&#xff1b;直接进入到如下页面&#xff0c;选择如图的选项进…

计算机网络之网络层超详细讲解

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 计算机网络之网络层超详细讲解 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; …

微信小程序:实现节点进度条的效果;正在完成的节点有动态循环效果;横向,纵向排列

参考说明 微信小程序实现流程进度功能 - 知乎 上面的为一个节点进度条的例子&#xff0c;但并不完整&#xff0c;根据上述代码&#xff0c;进行修改完善&#xff0c;实现其效果 横向效果 代码 wxml <view classorder_process><view classprocess_wrap wx:for&quo…

如何不重启修改K8S containerd容器的内存限制(Cgroup方法)

1. 使用crictl 查看容器ID crictl ps2. 查看Cgroup位置 crictl inspect 容器ID3. 到容器Cgroup的目录下 使用上个命令就能找到CgroupPath 4 . 到cgroup目录下 正确目录是 : /sys/fs/cgroup/memory/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-podf68e18…

海康威视摄像头RTSP使用nginx推流到服务器直播教程

思路&#xff1a; 之前2020年在本科的时候&#xff0c;由于项目的需求需要将海康威视的摄像头使用推流服务器到网页进行直播。这里将自己半个月琢磨出来的步骤给大家发一些。切勿转载&#xff01;&#xff01;&#xff01;&#xff01; 使用网络摄像头中的rtsp协议---------通…

智简模型,边缘智能:AI 轻量化与边缘计算的最佳实践

文章目录 摘要引言模型轻量化与优化方法模型量化模型剪枝知识蒸馏合理使用边缘计算硬件 轻量化图像分类实战1. 模型量化2. 知识蒸馏3. 学生模型的创建与训练 QA环节总结参考资料 摘要 边缘计算与 AI 模型的结合&#xff0c;能够在资源受限的环境中提供实时智能服务。通过模型轻…