echarts图表静态数据 象形柱形图、折线图、日历饼图、饼状图四种实现

news2024/10/7 8:31:12
标题

页面全部代码 

<template>
  <div class="data-serve">
    <div class="side">
      <div class="side-inner">
        <router-link class="side-btn" to="/camer/pushInfo"><i class="el-icon-picture"></i>报警信息</router-link>
        <router-link style="background: #344886" class="side-btn" to="/camera/live">
          <i class="el-icon-picture"></i>统计分析
        </router-link>
      </div>
    </div>
    <div class="main">
      <div class="chart-side">
        <div class="chart-wrapper">
          <div class="chart-bg">
            <span>报警处理状态</span>
          </div>
          <div class="chart">
            <div id="pieChart" class="echart-line"></div>
          </div>
        </div>
        <div class="chart-wrapper">
          <div class="chart-bg">
            <span>报警类型分析</span>
          </div>
          <div class="chart">
            <div id="barChart" class="echart-bar" />
          </div>
        </div>

      </div>
      <div class="chart-side">
        <div class="chart-wrapper">
          <div class="chart-bg">
            <span>日报警分析</span>
          </div>
          <div class="chart">
            <div id="scatterChart" class="echart-scatter" />
          </div>
        </div>
        <div class="chart-wrapper">
          <div class="chart-bg">
            <span>报警趋势分析</span>
          </div>
          <div class="chart">
            <div id="lineChart" class="echart-line"></div>
          </div>
        </div>
      </div>
    </div>

  </div>
</template>

<script>
export default {
  data() {
    return {
      scatterData: null,
    }
  },
  mounted() {
    let _this = this;
    this.getPieEcharts(); //饼状图
    this.getBarEcharts();//柱状图
    this.getScatterEcharts();//日期饼状图
    this.getLineEcharts(); //折线图
  },
  methods: {
    //图一饼状图
    getPieEcharts() {
      let myChart = this.$echarts.init(document.getElementById("pieChart"));
      myChart.setOption({
        tooltip: {
          trigger: 'item'
        },
        series: [
          {
            type: 'pie',
            radius: '60%',
            center: ['50%', '50%'],
            // 文字后添加百分比值
            label: {
              show: true,
              formatter(param) {
                return param.name + ' (' + param.percent + '%)';
              }
            },
            roseType: 'radius',
            itemStyle: {
              color: function (params) {
                let colorList = [
                  {
                    type: 'linear',
                    x: 0,
                    y: 1,
                    x2: 1,
                    y2: 0,
                    colorStops: [
                      {
                        offset: 0,
                        color: '#7a26ee',
                      },
                      {
                        offset: 1,
                        color: '#be7eff',
                      },
                    ],
                    global: false,
                  },
                  {
                    type: 'linear',
                    x: 0,
                    y: 1,
                    x2: 1,
                    y2: 0,
                    colorStops: [
                      {
                        offset: 0,
                        color: '#25ebff',
                      },
                      {
                        offset: 1,
                        color: '#23c0e0',
                      },
                    ],
                    global: false,
                  },
                  {
                    type: 'linear',
                    x: 1,
                    y: 0,
                    x2: 1,
                    y2: 1,
                    colorStops: [
                      {
                        offset: 0,
                        color: '#1620cd',
                      },
                      {
                        offset: 1,
                        color: '#0d79f9',
                      },
                    ],
                    global: false,
                  },
                  {
                    type: 'linear',
                    x: 1,
                    y: 1,
                    x2: 0,
                    y2: 0,
                    colorStops: [
                      {
                        offset: 0,
                        color: '#0d79f9',
                      },
                      {
                        offset: 1,
                        color: '#1cbbff',
                      },
                    ],
                    global: false,
                  },
                ];
                return colorList[params.dataIndex];
              },
            },
            // animationType: 'scale',
            // animationEasing: 'elasticOut',
            // animationDelay: function (idx) {
            //   return Math.random() * 200;
            // },
            data: [
              { value: 335, name: '已处理', label: { color: "#1cbcff" } },
              { value: 310, name: '重复报警', label: { color: "#0b82f9" } },
              { value: 274, name: '误报', label: { color: "#28ebff" } },
              { value: 235, name: '未处理', label: { color: "#be71ff" } },
            ].sort(function (a, b) {
              return a.value - b.value;
            }),

          }
        ]
      })
      window.onresize = myChart.resize;
    },
    // 图2柱状图
    getBarEcharts() {
      let barChart = this.$echarts.init(document.getElementById("barChart"));
      barChart.setOption({
        tooltip: {
          trigger: 'axis',
          formatter: function (params) {
            let result = '';
            params.forEach(function (item) {
              console.log(item, 123);

              if (item.seriesType === 'bar') {  // 如果是柱体,则获取对应的系列名称和值
                result += item.name + ': ' + item.value + '<br/>';
              }
            });
            return result;
          },
          axisPointer: {
            type: 'shadow',
          }
        },
        grid: {
          left: '3%',
          right: '4%',
          bottom: '5%',
          containLabel: true
        },
        xAxis: [
          {
            type: 'category',
            data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],
            axisTick: {
              show: false,
            },

            //x轴颜色
            axisLine: {
              lineStyle: {
                color: '#253262',
              },
            },


            //  x轴文字的颜色设置为白色
            axisLabel: {
              color: '#fff',
              margin: 20,
            },
          },

        ],
        yAxis: [
          {
            type: 'value',
            // 不显示y轴的线
            axisLine: {
              show: false
            },
            // 不显示y轴刻度
            axisTick: {
              show: false
            },
            // 分割线颜色
            splitLine: {
              lineStyle: {
                color: '#253262',
                // type: 'dashed' //虚线

              }

            },
            // y轴刻度文字颜色设置为白色
            axisLabel: {
              color: "#fff",
            },
          }
        ],
        series: [
          // 底部的椭圆形(象形柱图):pictorialBar
          {
            type: "pictorialBar", // pictorialBar(象形柱图)
            label: { // 图形上的文本标签,可用于说明图像的一些数据信息,比如值,名称等
              show: true, //是否显示标签
              position: ['25', '-30'], // 标签的位置(可以是绝对的像素值或者百分比['50%','50%',也可以是top,left等])
              color: '#01E4FF',
              fontSize: 14
            },
            symbolSize: [40, 20], // 图形的大小用数组分别比表示宽和高,也乐意设置成10相当于[10,10]
            symbolOffset: [0, 10], // 图形相对于原本位置的偏移
            z: 12, // 象形柱状图组件的所有图形的 z 值.控制图形的前后顺序.z 值小的图形会被 z 值大的图形覆盖.
            itemStyle: { // 图形样式
              // echarts.graphic.LinearGradient(echarts内置的渐变色生成器)
              // 4个参数用于配置渐变色的起止位置,这4个参数依次对应右 下 左 上
              color: {
                type: 'linear',
                x: 0,
                y: 0,
                x2: 0,
                y2: 1,
                colorStops: [  // 渐变颜色
                  {
                    offset: 0,
                    color: '#00e3f3',
                  },
                  {
                    offset: 1,
                    color: '#1373bc',
                  },
                ],
                global: false,
              },


            },
            data: [10, 52, 200, 334, 390, 330, 220]
          },
          // 中间的长方形柱状图(柱状图):bar
          {
            type: 'bar', // 柱状图
            barWidth: 40, // 柱条的宽度,不设时自适应
            barGap: '0%', // 柱子与柱子之间的距离
            itemStyle: { // 图形样式
              // color支持(rgb(255,255,255)、rgba(255,255,255,1)、#fff,也支持渐变色和纹理填充)
              // 下面就是使用线性渐变
              color: {
                "x": 0,
                "y": 0,
                "x2": 0,
                "y2": 1,
                "type": "linear",
                "global": false,
                "colorStops": [{
                  "offset": 0, // 0%处的颜色
                  "color": "rgba(0,229,255,0.5)"
                }, {
                  "offset": 1, // 100%处的颜色
                  "color": "#1F9BFF"
                }]
              },

            },
            data: [10, 52, 200, 334, 390, 330, 220]
          },
          // 顶部的椭圆形(象形柱图):pictorialBar
          {
            type: "pictorialBar",
            symbolSize: [40, 20],
            symbolOffset: [0, -10],
            z: 12,
            symbolPosition: "end",
            itemStyle: {
              color: {
                type: 'linear',
                x: 0,
                y: 0,
                x2: 0,
                y2: 1,
                colorStops: [  // 渐变颜色
                  {
                    offset: 0,
                    color: '#00e3f3',
                  },
                  {
                    offset: 1,
                    color: '#1373bc',
                  },
                ],
                global: false,
              },
            },
            data: [10, 52, 200, 334, 390, 330, 220]
          }
        ]
      })

      window.addEventListener("resize", function () {
        // 让我们的图表调用 resize这个方法
        barChart.resize();
      })
    },

    // 图3图表
    getScatterEcharts() {
      this.scatterData = this.$echarts.init(document.getElementById("scatterChart"));
      let cellSize = [window.innerWidth / 19, window.innerHeight / 17];
      let pieRadius = window.innerWidth / 80;
      //饼图数据从后端获取
      let json = [
        { "data": [{ "name": "已完成", "value": 30, itemStyle: { color: '#43d0ff' } }, { "name": "未完成", "value": 10, itemStyle: { color: '#343bee' } }, { "name": "未巡查", "value": 56, itemStyle: { color: '#6a64fd' } }] },
        { "data": [{ "name": "已完成", "value": 30, itemStyle: { color: '#43d0ff' } }, { "name": "未完成", "value": 10, itemStyle: { color: '#343bee' } }, { "name": "未巡查", "value": 56, itemStyle: { color: '#6a64fd' } }] },
        { "data": [{ "name": "已完成", "value": 30, itemStyle: { color: '#43d0ff' } }, { "name": "未完成", "value": 10, itemStyle: { color: '#343bee' } }, { "name": "未巡查", "value": 56, itemStyle: { color: '#6a64fd' } }] },
        { "data": [{ "name": "已完成", "value": 30, itemStyle: { color: '#43d0ff' } }, { "name": "未完成", "value": 10, itemStyle: { color: '#343bee' } }, { "name": "未巡查", "value": 56, itemStyle: { color: '#6a64fd' } }] },
        { "data": [{ "name": "已完成", "value": 30, itemStyle: { color: '#43d0ff' } }, { "name": "未完成", "value": 10, itemStyle: { color: '#343bee' } }, { "name": "未巡查", "value": 56, itemStyle: { color: '#6a64fd' } }] },
        { "data": [{ "name": "已完成", "value": 30, itemStyle: { color: '#43d0ff' } }, { "name": "未完成", "value": 10, itemStyle: { color: '#343bee' } }, { "name": "未巡查", "value": 56, itemStyle: { color: '#6a64fd' } }] },
      ]
      let startDate = '2017-05';   //开始值从后端获取
      let endDate = '2017-06';   //结束值从后端获取
      // let data_name = ['已完成', '未完成', '未巡查'];//该出应该是从数据库中读取data_name
      let options = this.calendar(cellSize, pieRadius, startDate, endDate, json);
      options && this.scatterData.setOption(options)

    },
    calendar(cellSize, pieRadius, startDate, endDate, json, data_name) {
      let data_arr = [];
      let _this = this;

      for (let i = 0; i < json.length; i++) {
        data_arr.push(json[i].data);
      }

      function getVirtulData() {
        let date = +(_this.$echarts.number.parseDate(startDate));
        let end = +(_this.$echarts.number.parseDate(endDate));
        let dayTime = 3600 * 24 * 1000;
        let data = [];
        for (let time = date; time < end; time += dayTime) {
          data.push([
            _this.$echarts.format.formatTime('yyyy-MM-dd', time),
            Math.floor(Math.random() * 10000)
          ]);
        }
        return data;
      }

      function getPieSeries(scatterData, chart) {
        return _this.$echarts.util.map(scatterData, function (item, index) {
          let center = chart.convertToPixel('calendar', item);
          return {
            id: index + 'pie',
            type: 'pie',
            center: center,
            label: {
              normal: {
                formatter: '{c}',
                position: 'inside'
              }
            },
            radius: pieRadius,
            data: data_arr[index]
          };
        });
      }

      // 使用刚指定的配置项和数据显示图表。
      function getPieSeriesUpdate(scatterData, chart) {
        return _this.$echarts.util.map(scatterData, function (item, index) {
          let center = chart.convertToPixel('calendar', item);
          return {
            id: index + 'pie',
            center: center
          };
        });
      }
      let scatterData = getVirtulData();
      let option = {
        tooltip: {},
        // legend: {
        //   data: data_name,
        //   bottom: 20
        // },
        calendar: {
          top: '38', //图表位置
          left: 'center', //横向
          orient: 'vertical',
          cellSize: cellSize,  //尺寸
          yearLabel: {
            show: false,
            textStyle: {
              fontSize: 30
            },

          },
          itemStyle: {
            borderColor: '#3f58a3',  // 边框颜色
            borderWidth: 1,       // 边框宽度
            color: '#192143'
          },
          // //星期表头位置,颜色
          dayLabel: {
            margin: 10,
            firstDay: 1,
            nameMap: ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六'],
            color: '#fff',
          },
          //左侧月份隐藏
          monthLabel: {
            show: false,
          },
          range: [startDate], // 后端获取起始范围

        },
        series: [{
          id: 'label',
          type: 'scatter',
          coordinateSystem: 'calendar',  //指定饼图所使用的坐标系为日历坐标系。在日历坐标系中,每个日期对应图表中的一个格子
          symbolSize: 1,
          label: {
            normal: {
              show: true,
              // 使用时间格式化函数将日期显示为天数
              formatter: function (params) {
                return _this.$echarts.format.formatTime('dd', params.value[0]);
              },
              offset: [-cellSize[0] / 2 + 10, -cellSize[1] / 2 + 10],// 标签位置的偏移量
              textStyle: {
                color: '#fff',
                fontSize: 14
              },
            },
          },
          data: scatterData // 天数
        }]
      };
      // 监听窗口大小变化事件
      window.addEventListener("resize", () => {
        cellSize = [window.innerWidth / 19, window.innerHeight / 17];
        pieRadius = window.innerWidth / 80;
        this.scatterData.setOption(this.calendar(cellSize, pieRadius, startDate, endDate, json, data_name));
        this.scatterData.resize();
      });

      if (!_this.scatterData.inNode) {
        let pieInitialized;
        setTimeout(function () {
          pieInitialized = true;
          // 初始化饼图的系列
          _this.scatterData.setOption({
            series: getPieSeries(scatterData, _this.scatterData)
          });
        }, 10);
      }
      return option;
    },
    // 图4折线图
    getLineEcharts() {
      let lineChart = this.$echarts.init(document.getElementById("lineChart"));
      lineChart.setOption({
        tooltip: {
          trigger: 'axis',
          axisPointer: {
            type: 'shadow',
          }
        },
        xAxis: {
          type: 'category',
          boundaryGap: false,
          axisTick: {
            show: false,
          },
          //x轴颜色
          axisLine: {
            lineStyle: {
              color: '#253262',
            },
          },
          //  x轴文字的颜色设置为白色
          axisLabel: {
            color: '#fff'
          },
          data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
        },
        yAxis: {
          type: 'value',
          // 不显示y轴的线
          axisLine: {
            show: false
          },
          // 不显示y轴刻度
          axisTick: {
            show: false
          },
          // 分割线颜色
          splitLine: {
            lineStyle: {
              color: '#253262',
              // type: 'dashed' //虚线
            }
          },
          // y轴刻度文字颜色设置为白色
          axisLabel: {
            color: "#fff",
          },
        },
        series: [
          {
            data: [820, 932, 901, 934, 1290, 1330, 1320],
            type: 'line',
            color: '#3384f3',
            areaStyle: {
              color: {
                type: 'linear',
                x: 0,
                y: 0,
                x2: 0,
                y2: 1,
                colorStops: [  // 渐变颜色
                  {
                    offset: 0,
                    color: '#213f79',
                  },
                  {
                    offset: 1,
                    color: '#192143',
                  },
                ],
                global: false,
              },

            }
          }
        ]
      })
      window.addEventListener("resize", function () {
        // 让我们的图表调用 resize这个方法
        lineChart.resize();
      })
    },

  }
}
</script>
<style lang="scss" scoped>
.data-serve {
  width: 100%;
  height: 100%;
  display: flex;
  padding: 30px 10px 0 10px;

  .side {
    width: 240px;
    box-sizing: border-box;
    height: 100%;
    padding-left: 20px;

    .side-inner {
      width: 100%;
      height: 100%;
      box-shadow: 0 0 5px rgba(20, 120, 210, 0.6) inset;
      border: 1px solid #0070da;
      padding: 10px 20px 20px 20px;

      .side-btn {
        width: 100%;
        display: block;
        color: #fff;
        font-size: 12px;
        margin-top: 10px;
        padding: 8px 10px 8px 20px;
        letter-spacing: 3px;
        background-image: linear-gradient(to right, #3e4e72, transparent);

        i {
          margin-right: 10px;
        }
      }
    }
  }

  .main {
    width: calc(100% - 240px);
    height: 100%;
    padding: 0 20px;

    .chart-side {
      display: flex;
      width: 100%;
      height: calc(100% / 2 - 10px);
      justify-content: space-between;
      margin-top: 10px;


      .chart-wrapper {
        width: calc(100% / 2 - 5px);
        height: 100%;

        .chart-bg {
          width: 100%;
          height: 30px;
          line-height: 30px;
          padding-left: 20px;
          font-size: 14px;
          background-image: linear-gradient(to right, rgba(31, 42, 79, 0.9), rgba(255, 0, 0, 0));
          color: #fff;

          span {
            border-left: 4px solid #6fb3e8;
            padding-left: 10px;
          }
        }

        .chart {
          width: 100%;
          height: calc(100% - 40px);
          background-color: #192143;
          margin-top: 10px;

          .pieChart,
          .echart-line,
          .echart-scatter,
          .echart-bar {
            width: 100%;
            height: 100%;

          }
        }
      }
    }
  }
}
</style>

 

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

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

相关文章

学习ros机器人导航从精读nav2导航launch文件开始

nav2导航launch文件经过了多层套娃&#xff0c;真的是让初学者哭晕在厕所&#xff0c;今天我们就拆解一下他的launch文件&#xff0c;还原他最简单的状态&#xff0c;看看他到底启动了什么节点。 一 tb3仿真机器人启动文件&#xff1a;tb3_simulation_launch.py 1 文件目录结…

一文了解什么是同源策略

同源策略是一种重要的安全机制&#xff0c;它限制一个源加载的文档或脚本如何与另一个源的资源进行交互。下文小文智能就为您详细解答什么是同源策略。 一、目的 它有助于隔离潜在的恶意文档&#xff0c;减少可能的攻击媒介。例如&#xff0c;它可以防止互联网上的恶意网站在…

C++ 手写实现类似lower_bound和upper_bound的二分功能

目录 lower_bound和upper_bound介绍手动实现类似的二分效果lower_boundupper_bound另一种常见的二分形式 对lower_bound函数使用lamda函数 lower_bound和upper_bound介绍 lower_bound函数的作用是查找范围内第一个大于等于目标元素的元素迭代器/指针 数组的简单使用&#xff…

11、监测数据采集物联网应用开发步骤(8.2)

监测数据采集物联网应用开发步骤(8.1) 新建TCP/IP Client线程类com.zxy.tcp.ClientThread.py #! python3 # -*- coding: utf-8 -Created on 2017年05月10日 author: zxyong 13738196011 import datetime import socket import threading import timefrom com.zxy.adminlog.Us…

ATA-1222A宽带放大器的电子实验案例(案例合集)

ATA-1222A宽带放大器是安泰电子打造的高带宽功放产品&#xff0c;其采用ClassAB的工作模式&#xff0c;带宽高达22MHz&#xff0c;饱和输出功率40W&#xff0c;能兼容全球不同地区的电源标准要求。凭借其优异的指标参数受到不少电子工程师的喜欢&#xff0c;其在电子实验中的应…

远程访问Linux的DataEase数据可视化分析,有哪些推荐的工具?

DataEase 是开源的数据可视化分析工具&#xff0c;帮助用户快速分析数据并洞察业务趋势&#xff0c;从而实现业务的改进与优化。是开源的数据可视化分析工具&#xff0c;帮助用户快速分析数据并洞察业务趋势&#xff0c;从而实现业务的改进与优化。 在本地搭建后,借助cpolar 内…

Densenet模型详解

模型介绍 DenseNet的主要思想是密集连接&#xff0c;它在卷积神经网络&#xff08;CNN&#xff09;中引入了密集块&#xff08;Dense Block&#xff09;&#xff0c;在这些块中&#xff0c;每个层都与前面所有层直接连接。这种设计可以让信息更快速地传播&#xff0c;有助于解…

数据可视化工具中的显眼包:奥威BI自带方案上阵

根据经验来看&#xff0c;BI数据可视化分析项目是由BI数据可视化工具和数据分析方案两大部分共同组成&#xff0c;且大多数时候方案都需从零开始&#xff0c;反复调整&#xff0c;会耗费大量时间精力成本。而奥威BI数据可视化工具别具匠心&#xff0c;将17年经验凝聚成标准化、…

(AcWing) spfa求最短路

给定一个 n 个点 m 条边的有向图&#xff0c;图中可能存在重边和自环&#xff0c; 边权可能为负数。 请你求出 1 号点到 n 号点的最短距离&#xff0c;如果无法从 1 号点走到 n 号点&#xff0c;则输出 impossible。 数据保证不存在负权回路。 输入格式 第一行包含整数 n 和…

indexDb使用

indexDb是什么&#xff1f; indexDb是除了cookie&#xff0c;localstorage&#xff0c;sessionstroage外的另一种前端存贮方式。 现有前端存贮比较 indexDb特点 无大小限制&#xff0c;适用于前端存贮数据较多场景存贮结构以对象仓库形式&#xff0c;可以存入任何类型数据&a…

企业智能知识管理在线工具语雀、helplook、石墨文档、Baklib怎么样?

语雀、helplook、石墨文档和Baklib都是企业智能知识管理的在线工具&#xff0c;它们都提供了一系列功能来帮助企业管理和共享知识。下面我将对这些工具进行详细的介绍和评价。 语雀&#xff1a; 语雀是一款功能强大的在线知识管理工具&#xff0c;它提供了丰富的功能和优秀的…

Java对接海康威视(二次开发)组织信息、人员信息等

一.获取合作方数据 1.在【综合安防平台】的【关于】中前往【运行管理中心】 2.输入账户和密码进入【运行管理中心】 3.点击【状态监控】,搜索【能力开放网关】&#xff0c;点击【API管理】&#xff0c;查询可以对接的接口&#xff0c;点击对应的接口名称可以查看请求参数和返回…

抽象又有点垃圾的JavaScript

常数的排序 let x 10;let y 20;let z;if (x < y) {z x;x y;y z;}console.log(x, y);//x 20 ,y 10 通过一个媒介来继承x的初始值&#xff0c;然后将y的值赋值给x&#xff0c;再把媒介z的值赋值给y&#xff0c;达到排序 一个可重复使用的排序程序 第一种 function s…

微力同步私人网盘部署教程:利用端口映射实现远程访问的解决方案

文章目录 1.前言2. 微力同步网站搭建2.1 微力同步下载和安装2.2 微力同步网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 私有云盘作为云存储概念的延伸&#xff0c;虽然谈不上多么新颖&#xff0c;但是其…

ReID网络:MGN网络(4) - Loss计算

1. MGN Loss MGN采用三元损失(Triplet Loss)。 三元损失主要用于ReID算法&#xff0c;目的是帮助网络学习到一个好的Embedding信息。之所以称之为三元损失&#xff0c;主要原因在于在训练中&#xff0c;参与计算Loss的分别有Anchor、Positive和Negative三方。 2. Triplet Lo…

实现远程访问Linux堡垒机:通过JumpServer系统进行安全的服务器管理

文章目录 前言1. 安装Jump server2. 本地访问jump server3. 安装 cpolar内网穿透软件4. 配置Jump server公网访问地址5. 公网远程访问Jump server6. 固定Jump server公网地址 前言 JumpServer 是广受欢迎的开源堡垒机&#xff0c;是符合 4A 规范的专业运维安全审计系统。JumpS…

Vue2里监听localstorage里值的变化

有的时候,我们需要根据本地缓存在localstorage里值的变化做出相应的操作,这就需要我们监听localstorage: 首先,我们在src下的libs文件夹下新建一个stroage.js用于重写setItem事件,当使用setItem的时候,触发,window.dispatchEvent派发事件 const Stroage = {// 重写set…

8.Redis-set

Set 常用命令saddsmemberssismemberscardspopsmovesrem集合间操作sinter 交集sinterstoresunion 并集sunionstoresdiff 差集sdiffstore 命令总结 内部编码应用场景使用 set来保存用户的“标签” set(集合)就是把一些有关联的数据放刀一起。 它与list的区别如下&#xff1a; 集合…

DP4863 国产双声道音频功率放大器芯片

产品概述&#xff1a; DP4863 电路是一种双声道桥接音频功率放大器。在 5 V 电源电压下&#xff0c;它能向 4 Ω 负载提供 2.2 W 的输出功率&#xff0c;或向 3 Ω 负载提供 2.5 W的输出功率&#xff0c;THD N 小于 1 %。此外&#xff0c;它还具有耳机输入端&#xff0c;可驱…

应用程序管理工具

应用程序管理是 DevOps 的重要组成部分。它可以定义为在所有阶段监控和管理软件应用程序的可用性、运行状况、性能和功能的过程&#xff0c;包括规划、设计、构建、测试、部署、维护和更新。这意味着应用程序从概念到停止都受到监控。 应用程序管理的重要性 管理应用程序可确…