echarts-liquidfill水球图教程

news2025/1/16 1:08:08

接到了一个水球图的需求,如上图所示,点击不同的水球,下面的进度条呈现不同维度的百分比情况 。

第一步,安装插件

npm install echarts
npm install echarts-liquidfill

注意在这里需要查看echarts版本是4还是5,echarts@5的版本与echarts-liquidfill@3兼容,echarts@4的版本与echarts-liquidfill@2兼容,如果版本不对应,会报错!!!因为我踩坑了😂我的echarts版本是4.9.0,装的依赖是最新版的,也就是echarts-liquidfill@3,后来就报错了,然后看官网发现得用2的,我就下载了echarts-liquidfill@2.0.6版本的。

报错1:echart--Uncaught Error: Component series.wordCloud not exists. Load it first.

解决办法:先检查echarts 和 echarts-liquidfill 是否安装  echarts 4.几的版本对应 liquidfill 2.0.6的版本

 第二步,引入

import * as echarts from 'echarts';
import 'echarts-liquidfill'

 以下是我封装的简单粗糙的组件

<template>
  <div>
    <div id="waterPoloChart" ref="waterPoloChart" :style="{ width: chartWidth, height: chartHeight }" />
  </div>
</template>
<script>
import * as echarts from "echarts";
import 'echarts-liquidfill'
export default {
  props: {
    chartData: {
      type: Object,
      default: () => { },
    },

    chartWidth: {
      type: String,
      default: "",
    },
    chartHeight: {
      type: String,
      default: "",
    },
  },
  data () {
    return {

    };
  },
  created () {
  },
  computed: {
    chartOptions () {
      // let that = this
      const options = {
        title: {
          left: 'center',
          subtext: this.chartData.name,
          subtextStyle: { //文字样式
            color: "#fff",
            fontSize: 14,
            fontWeight: 600,
            // bottom: "center"
          },
          itemGap: 10, //主副标题间距
          bottom: 25,
          textStyle: {
            color: '#333',
            fontWeight: 'normal',
            fontSize: 14
          }
        },
        series: [{
          // name: '水球图',
          type: 'liquidFill',
          radius: '96%',
          center: ['50%', '50%'],
          waveAnimation: 10, // 动画时长
          amplitude: 20, // 振幅
          data: [this.chartData.value], // 使用合并后的数据
          // data: [0.7],//水球百分比
          color: 'rgba(68, 197, 253,1)',//设置波形颜色
          label: {
            normal: {
              color: '#fff',//百分比颜色
              textStyle: {
                fontSize: 16,
                fontWeight: 'normal'
              }
            }
          },
          outline: { //外边框
            show: false,
            borderDistance: 5,
            itemStyle: {
              borderColor: 'rgba(68, 197, 253,1)',
              borderWidth: 2
            }
          },
          backgroundStyle: { //水球背景色
            color: '#87cbfa'
          }
        }]
      }
      return options;
    }
  },
  mounted () {
    console.log(this.chartData, 'this.chartData')
    // this.$nextTick(() => {
    //   this.initEcharts();
    if (this.chartData !== null && this.chartData !== undefined) {
      this.initEcharts();
    }
    // });
  },
  methods: {
    // initChart () {
    //   const _this = this;
    //   _this.waterPoloChart = echarts.init(this.$refs.waterPoloChart);
    //   window.addEventListener("resize", function () {
    //     _this.waterPoloChart.resize();
    //   });
    // },
    initEcharts () {
      // 初始化echarts实例
      const _this = this;
      _this.waterPoloChart = echarts.init(this.$refs.waterPoloChart);
      // 显示图表
      _this.waterPoloChart.setOption(this.chartOptions);
    },
  }
}
</script>
<style lang='less'  scoped></style>

以下的是父组件,引入注册之后直接使用上面的组件 并且传入数据和水球图的宽高

<template>
  <div class="compClass">
    <div class="compClass-kno">
      <h3>知识点掌握情况</h3>
      <div class="compClass-kno-bubble">
        <div style="display: flex;justify-content: center;" v-for="(item, index) in chartData" :key="index"
          @click="clickBubble(item)">
          <waterPoloChart :chartData="item" :chartHeight="chartHeight" :chartWidth="chartWidth">
          </waterPoloChart>
        </div>
      </div>

      <div class="compClass-kno-chart">
        <h3 style="color: #34BEEA;font-size: 20px;font-weight: 500;margin-bottom: 40px;">{{ knoChartTitle }}</h3>
        <div class="progress-status">
          <span>{{ title }}</span>
          <span id="progressBarContainer">
            <span id="progressBar" :style="{ width: progressBarWidth }"></span>
          </span>
          <span>{{ progressBarWidth }}</span>
        </div>
      </div>

    </div>
  </div>
</template>
<script>
import waterPoloChart from '../components/waterPoloChart.vue'
export default {
  components: {
    waterPoloChart,
  },
  data () {
    return {
      chartHeight: '138px',
      chartWidth: '138px',
      chartData: [
        { value: 0.5, name: "有理数", title: '无理数', cat: '50%' },
        { value: 0.6, name: "整数", title: '小数', cat: '60%' },
        { value: 0.2, name: "方程", title: '一元一次方程', cat: '20%' },
        { value: 0.7, name: "几何", title: '勾股定理', cat: '70%' },
        { value: 0.3, name: "实数", title: '实数1', cat: '30%' },
        { value: 0.9, name: "相交平行线", title: '平行线永不相交', cat: '90%' },
      ],
      knoChartTitle: '有理数',
      title: '整数',
      progressBarWidth: '50%'//进度条占比

    };
  },
  methods: {
    clickBubble (item) {
      this.knoChartTitle = item.name;
      this.title = item.title
      this.progressBarWidth = item.cat;
      console.log(this.progressBarWidth, '8888')
    },
  },
};
</script>
<style lang="scss">
.compClass {
  >div {
    background: #fff;
    margin-bottom: 16px;
  }

  &-kno {
    padding: 16px 20px;

    &-bubble {
      display: flex;
      flex-wrap: wrap;
      justify-content: flex-start;
      margin-top: 32px;

      >div {
        cursor: pointer;
        width: 33%;
        text-align: center;
        margin-bottom: 50px;
      }
    }

    &-chart {
      .progress-status {
        margin-bottom: 50px;
        display: flex;
        align-items: center;

        #progressBarContainer {
          display: inline-block;
          margin: 0 24px 0 12px;
          position: relative;
          width: 625px;
          // border: 1px #669CB8 solid;
          height: 20px;
          border-radius: 10px;
          background-color: #E1E9EE;
          // background: -webkit-gradient(linear, 0 0, 0 100%, from(#E1E9EE), to(white));

          #progressBar {
            position: absolute;
            top: 0;
            left: -1px;
            background-color: #7BC3FF;
            // width: 0%;
            height: 20px;
            border-radius: 10px;
            // transition: width 1s ease-in-out;
          }
        }
      }
    }
  }

}
</style>

粗糙的实现情况如下:

 

1.简单示例

 

<!DOCTYPE html>
<html>
<head>
    <title>水球图</title>
    <script type="text/javascript" src="echarts.min.js"></script>
    <script type="text/javascript" src="echarts-liquidfill.min.js"></script>
</head>
<body>
    <div id="app" style="width: 100%;height: 400px"></div>

    <script type="text/javascript">
        var myChart = echarts.init(document.getElementById('app'));
        var option = {
            series: [{
                type: 'liquidFill',
                data: [0.6]
            }]
        };
        myChart.setOption(option);
    </script>
</body>
</html>

2.定制化水球图 

 2.1 多个波形

将多个波形表示出来,既可以表示多个数据,也可以提高图表的视觉效果。

var option = {
    series: [{
        type: 'liquidFill',
        data: [0.6, 0.5, 0.4, 0.3]
    }]
};

0.6,0.5,0.4,0.3表示分别在60%,50%,40%,30%处各有一个波形
要几个波形,data值就写几个 

2.2 设置波形的颜色,透明度

var option = {
    series: [{
        type: 'liquidFill',
        data: [0.5, 0.4, 0.3],
        color: ['red', '#0f0', 'rgb(0, 0, 255)'],//设置波形颜色
        itemStyle: {
                opacity: 0.6//设置normal时候的透明度
        },
        emphasis: {
            itemStyle: {
                opacity: 0.9//设置hover时候的透明度
            }
        }
    }]
};

 或者

var option = {
    series: [{
        type: 'liquidFill',
        data: [0.5, 0.4, {
            value: 0.3,
            itemStyle: {
                color: 'red',
                opacity: 0.6
            },
            emphasis: {
                itemStyle: {
                    opacity: 0.9
                }
            }
        }]
    }]
};

2.3 设置静态的波形

为了防止波浪向左或向右移动动画,将waveAnimation设置为false。禁用波浪上升的动画,设置animationDuration和animationDurationUpdate为0。

var option = {
    series: [{
        type: 'liquidFill',
        waveAnimation: false,
        animationDuration: 0,
        animationDurationUpdate: 0,
        data: [0.6, 0.5, 0.4, 0.3]
    }]
};

 2.4 设置水平的静态波形

var option = {
    series: [{
        type: 'liquidFill',
        data: [0.6, 0.5, 0.4, 0.3],
        amplitude: 0,
        waveAnimation: 0//考虑性能,建议将该值设置false
    }]
};

2.5 改变某个波形样式

var option = {
    series: [{
        type: 'liquidFill',
        data: [0.6, {
            value: 0.5,
            direction: 'left',//波形向左移动
            itemStyle: {
                color: 'red'//波形颜色
            }
        }, 0.4, 0.3]
    }]
};

direction: 设为 'left' 或 'right',指定波浪的移动方向

2.6 设置水球图背景色和内边框样式

 

var option = {
    series: [{
        type: 'liquidFill',
        data: [0.6, 0.5, 0.4, 0.3],
        backgroundStyle: {
            borderWidth: 5,//边框宽度
            borderColor: 'red',//边框颜色
            color: 'yellow'//背景色
        }
    }]
};

2.7 设置外边框 

 

设置outline.show为 false,隐藏外边框
var option = {
    series: [{
        type: 'liquidFill',
        data: [0.6, 0.5, 0.4, 0.3],
        outline: {
            show: false
        }
    }]
};

2.8 设置水球图形状

设置shape值:
1) 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'

var options = [{
    series: [{
        type: 'liquidFill',
        data: [0.6, 0.5, 0.4, 0.3],
        shape: 'diamond'
    }]
}];

2)'container':装满容器的形状。

 

option = {
    series: [{
        type: 'liquidFill',
        data: [0.5, 0.4, 0.3, 0.2],
        shape: 'container',
        outline: {
            show: false
        }
    }]
};

3)一个以'path://'开头的SVG路径。

 

 

var option = {
    series: [{
        type: 'liquidFill',
        data: [0.6, 0.55, 0.4, 0.25],
        radius: '60%',
        outline: {
            show: false
        },
        backgroundStyle: {
            borderColor: '#156ACF',
            borderWidth: 1,
            shadowColor: 'rgba(0, 0, 0, 0.4)',
            shadowBlur: 20
        },
        shape: 'path://M367.855,428.202c-3.674-1.385-7.452-1.966-11.146-1.794c0.659-2.922,0.844-5.85,0.58-8.719 c-0.937-10.407-7.663-19.864-18.063-23.834c-10.697-4.043-22.298-1.168-29.902,6.403c3.015,0.026,6.074,0.594,9.035,1.728 c13.626,5.151,20.465,20.379,15.32,34.004c-1.905,5.02-5.177,9.115-9.22,12.05c-6.951,4.992-16.19,6.536-24.777,3.271 c-13.625-5.137-20.471-20.371-15.32-34.004c0.673-1.768,1.523-3.423,2.526-4.992h-0.014c0,0,0,0,0,0.014 c4.386-6.853,8.145-14.279,11.146-22.187c23.294-61.505-7.689-130.278-69.215-153.579c-61.532-23.293-130.279,7.69-153.579,69.202 c-6.371,16.785-8.679,34.097-7.426,50.901c0.026,0.554,0.079,1.121,0.132,1.688c4.973,57.107,41.767,109.148,98.945,130.793 c58.162,22.008,121.303,6.529,162.839-34.465c7.103-6.893,17.826-9.444,27.679-5.719c11.858,4.491,18.565,16.6,16.719,28.643 c4.438-3.126,8.033-7.564,10.117-13.045C389.751,449.992,382.411,433.709,367.855,428.202z',
        label: {
            position: ['38%', '40%'],
            formatter: function() {
                return 'ECharts\nLiquid Fill';
            },
            fontSize: 40,
            color: '#D94854'
        }
    }]
};

2.9 动画

一般来说,在液体填充图中有两种类型的动画。
1)第一类是初始动画,具有起浪的效果。这个动画的easing方法由animationEasing控制,它的持续时间由animationDuration控制。
2)第二种类型是更新动画,通常在数据变化和波高变化时使用。它们由animationEasingUpdate和animationDurationUpdate控制。
例如,要禁用上升动画,并将动画更新时间设置为2秒,使用以下选项:

var option = {
    series: [{
        type: 'liquidFill',
        data: [0.6, 0.5, 0.4, 0.3],
        animationDuration: 0,
        animationDurationUpdate: 2000,
        animationEasingUpdate: 'cubicOut'
    }]
};
chart.setOption(option);
setTimeout(function () {
    chart.setOption({
        series: [{
            type: 'liquidFill',
            data: [0.8, 0.6, 0.4, 0.2]
        }]
    })
}, 3000);

2.10 改变文字

1)默认情况下,液体填充图的文本标签显示第一个数据的百分比。例如,对于数据为[0.6,0.5,0.4,0.3]的图表,默认文本为60%。
2)要更改文本,可以使用标签。格式化程序,可以设置为字符串或函数。
3)如果是字符串,{a}表示序列名,{b}表示数据名,{c}表示数据值。

var option = {
    series: [{
        type: 'liquidFill',
        name: 'Liquid Fill',
        data: [{
            name: 'First Data',
            value: 0.6
        }, 0.5, 0.4, 0.3],
        label: {
            formatter: '{a}\n{b}\nValue: {c}',
            fontSize: 28
        }
    }]
};

 或者

var option = {
    series: [{
        type: 'liquidFill',
        name: 'Liquid Fill',
        data: [{
            name: 'First Data',
            value: 0.6
        }, 0.5, 0.4, 0.3],
        label: {
            formatter: function(param) {
                return param.seriesName + '\n'
                    + param.name + '\n'
                    + 'Value:' + param.value;
            },
            fontSize: 28
        }
    }]
};

 

文本位置默认位于center。label.position可以设置为'inside', 'left', 'right', 'top', 'bottom',或水平和垂直位置,例如:['10%','20%'],这意味着左边的'10%'(由label.align控制,可以设置'left', 'center', or 'right')和“20%”顶部(由label.baseline控制,可以设置 'top', 'middle', or 'bottom')。

2.11 阴影

 默认情况下,波浪和轮廓有阴影。以下是如何改变它们的方法

var option = {
    series: [{
        type: 'liquidFill',
        data: [0.6, 0.5, 0.4, 0.3],
        itemStyle: {
            shadowBlur: 0
        },
        outline: {
            borderDistance: 0,
            itemStyle: {
                borderWidth: 5,
                borderColor: '#156ACF',
                shadowBlur: 20,
                shadowColor: 'rgba(255, 0, 0, 1)'
            }
        }
    }]
};

2.12 提示框
添加tooltip,鼠标移入后的提示框信息显示 

var option = {
    series: [{
        type: 'liquidFill',
        data: [0.6],
        name: 'Liquid Fill'
    }],
    tooltip: {
        show: true
    }
};

2.13 点击事件

在waves上添加点击事件:

chart.setOption(option);
chart.on('click', function() {
    console.log(arguments);
    // do something useful here
});

 与其他图表类型一样,上述代码只会触发wave上的事件。如果你想在整个画布或特定元素上跟踪事件,你可以像这样在zrender中添加监听器:

chart.getZr().on('click', function() {
       console.log(arguments);
});

Non-interactable
要使一个元素(例如,一个波)非交互,只需将silent设置为true。

3、API

默认项参数

{
    data: [],

    color: ['#294D99', '#156ACF', '#1598ED', '#45BDFF'],
    center: ['50%', '50%'],
    radius: '50%',
    amplitude: '8%',
    waveLength: '80%',
    phase: 'auto',
    period: 'auto',
    direction: 'right',
    shape: 'circle',

    waveAnimation: true,
    animationEasing: 'linear',
    animationEasingUpdate: 'linear',
    animationDuration: 2000,
    animationDurationUpdate: 1000,

    outline: {
        show: true,
        borderDistance: 8,
        itemStyle: {
            color: 'none',
            borderColor: '#294D99',
            borderWidth: 8,
            shadowBlur: 20,
            shadowColor: 'rgba(0, 0, 0, 0.25)'
        }
    },

    backgroundStyle: {
        color: '#E3F7FF'
    },

    itemStyle: {
        opacity: 0.95,
        shadowBlur: 50,
        shadowColor: 'rgba(0, 0, 0, 0.4)'
    },

    label: {
        show: true,
        color: '#294D99',
        insideColor: '#fff',
        fontSize: 50,
        fontWeight: 'bold',

        align: 'center',
        baseline: 'middle'
        position: 'inside'
    },

    emphasis: {
        itemStyle: {
            opacity: 0.8
        }
    }
}

3.1 data {(number|Object)[]}

1)data里的每一项必须为0-1之间的值
2)data的每一项也可以是Object,设置单波形样式

//设置第二波形为红色
var option = {
    series: [{
        type: 'liquidFill',
        data: [0.6, {
            value: 0.5,
            itemStyle: {
                color: 'red'
            }
        }, 0.4, 0.3]
    }]
};

3.2 color {string[]}

设置波形颜色

color: ['#294D99', '#156ACF', '#1598ED', '#45BDFF']

3.3 shape {string}

设置水球图形状
1)'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow'
2)一个以'path://'开头的SVG路径

3.4 center {string[]}

水球图的位置。第一个值是x位置,第二个是y位置。每个值都可以是一个相对值,比如‘50%’,它是相对于容器宽度和高度的较小值,或者是一个绝对值,比如100px。

3.5 radius {string}

图表的半径,可以是一个相对值,如“50%”,这是相对于容器的宽度和高度的较小值,或一个绝对值,如“100px”。

3.6 amplitude {number}

水波的振幅,以像素或百分比表示。如果是百分比,那就是相对于直径。

3.7 waveLength {string|number}

水波的波长,可以是一个相对值,如“50%”,这是相对于直径,或绝对值,如“100px”或“100”。

3.8 phase {number}

弧度系统中波的相位。默认情况下,是auto即每一个波比前面一个波大`Math.PI / 4的相位。

3.9 period {number|'auto'|function}

向前移动一个波长所需的毫秒数。默认情况下,它被设置为“auto”即前面的波有更高的速度。
它也可以是一个函数格式。

var option = {
    series: [{
        type: 'liquidFill',
        data: [0.6, 0.5, 0.4, 0.3],
        radius: '70%',
        phase: 0,
        period: function (value, index) {
            // This function is called four times, each for a data item in series.
            // `value` is 0.6, 0.5, 0.4, 0.3, and `index` is 0, 1, 2, 3.
            return 2000 * index + 1000;
        }
    }]
}

3.10 direction {string}

水波移动的方向,可以设置为'right'或者'left'

3.11 waveAnimation {boolean}

是否允许水波向左移动或向右移动。

3.12 animationEasing {string}

初始动画的缓动效果,例如当波从底部开始上升

3.13 animationEasingUpdate {string}

数据更新动画的缓动效果,例如,当数据值变化和波的位置变化时。

3.14 animationDuration {number}

初始动画的时长,单位为毫秒。

3.15 animationDurationUpdate {number}

数据更新动画的时长,单位为毫秒。

3.16 outline.show {boolean}

是否显示外边框

3.16 outline.borderDistance {number}

外边框与内圈之间的距离。

3.17 outline.itemStyle.borderColor {string}

外边框颜色

3.18 outline.itemStyle.borderWidth {number}

外边框宽度

3.19 outline.itemStyle.shadowBlur {number}

外边框阴影的模糊大小

3.20 outline.itemStyle.shadowColor {string}

外边框阴影颜色

3.21 backgroundStyle.color {string}

内圈背景色

3.22 backgroundStyle.borderWidth {string}

内圈描边边框

3.23 backgroundStyle.borderColor {string}

内圈描边边框颜色

3.24 backgroundStyle.itemStyle.shadowBlur {number}

背景色阴影的模糊大小

3.25 backgroundStyle.itemStyle.shadowColor {string}

背景色阴影的颜色

3.26 backgroundStyle.itemStyle.opacity {number}

背景色的透明度

3.27 itemStyle.opacity {number}

水波透明度

3.28 itemStyle.shadowBlur {number}

水波阴影的模糊大小

3.29 itemStyle.shadowColor {string}

水波阴影的颜色

3.30 emphasis.itemStyle.opacity {number}

当鼠标移入后,水波的透明度

3.31 label.show {boolean}

是否显示文本标签

3.32 label.color {string}

文本标签的颜色(background上的)

3.33 label.insideColor {string}

文本标签的颜色(wave上的)即文本标签在wave上的颜色

3.34 label.fontSize {number}

文本标签的字体大小

3.35 label.fontWeight {string}

文本标签的字体粗细

3.36 label.align {string}

文本标签的对齐。 'left', 'center''right'.

3.37 label.baseline {string}

文本标签的垂直对齐方式, 'top', 'middle''bottom'.

3.38 label.position {string|string[]}

文本标签的位置,默认是center。值可以设置为 'inside', 'left', 'right', 'top', 'bottom'或水平和垂直位置”(“10%”,“20%”)”,意思是“10%”的左边,“20%”。

 

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

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

相关文章

基于深度学习的地铁客流预测架构

导读 论文题目为&#xff1a;《DeepPF: A deep learning based architecture for metro passenger flow prediction》。是一篇2019年发表于《Transportation Research Part C》的文章&#xff0c;介绍了一种新型的基于深度学习的地铁客流预测架构&#xff0c;通过采取模块化的方…

代码随想录算法训练营第23期day25| 216.组合总和III 、17.电话号码的字母组合

目录 一、&#xff08;leetcode 216&#xff09;组合总和III 剪枝 二、&#xff08;leetcode 17&#xff09;电话号码的字母组合 思路 一、&#xff08;leetcode 216&#xff09;组合总和III 力扣题目链接 状态&#xff1a;已AC&#xff0c;就是在77题的前提下&#xff0c…

【23真题】130分送分!剩下20谁也别拿满!

今天分享的是23年武汉工程大学834的信号与系统试题及解析。 填空涉及到概念题&#xff0c;和简答题&#xff01;这种题型非常少见&#xff01;很像我们的梦马全程班6月模考&#xff0c;也考了简答概念&#xff0c;但是我们只是为了帮助大家理解知识点&#xff0c;他玩真的&…

使用流量管理工具保护 Kubernetes 的六种方法

原文作者&#xff1a;Jenn Gile - F5 NGINX 产品营销经理 原文链接&#xff1a;使用流量管理工具保护 Kubernetes 的六种方法 转载来源&#xff1a;NGINX 中文官网 NGINX 唯一中文官方社区 &#xff0c;尽在 nginx.org.cn 编者按 —— 本文是以下系列博文中的一篇&#xff08;共…

云服务器快速搭建网站

目录 安装Apache Docker 安装 Mysql 安装 Docker 依赖包 添加 Docker 官方仓库 安装 Docker 引擎 启动 Docker 服务并设置开机自启 验证 Docker 是否成功安装 拉取 MySQL 镜像 查看本地镜像 运行容器 停止和启动容器 列出正在运行的容器 安装PHP环境 搭建网站 安装…

前端刷新token,判断token是否过期(jwt鉴权)

4.1 什么是 JWT JWT 是 Auth0 提出的通过 对 JSON 进行加密签名来实现授权验证的方案&#xff1b; 就是登录成功后将相关用户信息组成 JSON 对象&#xff0c;然后对这个对象进行某种方式的加密&#xff0c;返回给客户端&#xff1b; 客户端在下次请求时带上这个 Token&#xff…

Python网络编程改良版服务端

在《Python中套接字实现服务端和客户端3-1》中提到服务端可以接收来自客户端的连接&#xff0c;并且创造新的套接字与客户端进行数据通信。此时的服务端只能与一个客户端进行数据通信&#xff0c;如果有多个客户端连接服务端&#xff0c;该怎么对服务端进行改良呢&#xff1f; …

全流程TOUGH系列软件应用丨入门丨基础丨进阶丨实操

TOUGH系列软件是由美国劳伦斯伯克利实验室开发的&#xff0c;旨在解决非饱和带中地下水、热运移的通用模拟软件。和传统地下水模拟软件Feflow和Modflow不同&#xff0c;TOUGH系列软件采用模块化设计和有限积分差网格剖分方法&#xff0c;通过配合不同状态方程&#xff08;EOS模…

100.一个linux内核选项对ssh的影响

&#xff08;从这开始给文章编号&#xff0c;编号从100开始&#xff09; 平台&#xff1a;rk3399&#xff08;f4932-r2h&#xff09; 内核&#xff1a;linux5.10 文件系统&#xff1a;firefly ssh&#xff1a;有线网卡 串口终端打印正常&#xff0c; 但是ssh登录却出现如下…

Xshell7试用期过了,打开就显示评估期已过,想继续或者不能删除怎么办?详细说明解决步骤

文章目录 1、问题说明2、解决办法2.1 重新安装2.2 卸载 1、问题说明 多长时间没用 Xshell 远程连接服务器&#xff0c;发现之前没有使用魔法工具处理&#xff08;正版&#xff09;&#xff0c;现在过期了。 2、解决办法 想继续使用Xshell的话&#xff0c;有两种方式&#xff…

全光谱台灯对孩子眼睛好吗?2023五款全光谱护眼台灯推荐

全光谱台灯是一种能够模拟自然光谱的照明设备&#xff0c;其光线成分丰富&#xff0c;更接近自然阳光的光谱。相比传统的白炽灯或荧光灯&#xff0c;全光谱台灯在照明效果上更加均匀柔和&#xff0c;并且可以提供更好的颜色还原效果。对于孩子的眼睛来说&#xff0c;全光谱台灯…

ios UI 基础开发二

第一节&#xff1a;UIPickerView、UIPickerViewDataSource、UIPickerViewDelegate 设置约束&#xff0c;如果要设置两个兄弟的约束&#xff0c;可以按住option键&#xff0c;用鼠标右键把a拖到b上面&#xff0c;表示a按照b来对齐 生成随机数 如果后面列的数据&#xff0c;依赖前…

JL-03多场合通用型小型气象站

JL-03小型气象站&#xff0c;用于对风速、风向、雨量、空气温度、空气湿度、太阳辐射、光照强度、土壤温度、土壤湿度、蒸发量、大气压力等气象要素进行监测。既可以通过无线通讯将数据传送至云平台&#xff0c;又可以通过配套的数据采集通讯线与计算机进行连接&#xff0c;将数…

ARP协议

ARP协议 文章目录 ARP协议ARP协议的作用ARP协议的定位ARP数据报的格式ARP协议的工作流程ARP缓存表RARP协议 地址解析协议&#xff0c;即ARP&#xff08;Address Resolution Protocol&#xff09;&#xff0c;是根据IP地址获取物理地址的一个TCP/IP协议。 ARP协议的作用 ARP协议…

手机爬虫用Scrapy详细教程:构建高效的网络爬虫

如果你正在进行手机爬虫的工作&#xff0c;并且希望通过一个高效而灵活的框架来进行数据抓取&#xff0c;那么Scrapy将会是你的理想选择。Scrapy是一个强大的Python框架&#xff0c;专门用于构建网络爬虫。今天&#xff0c;我将与大家分享一份关于使用Scrapy进行手机爬虫的详细…

2023最令人心动的短视频配音软件

配音在影视、广告和动画等领域中起着非常重要的作用&#xff0c;可以为作品增添情感和戏剧性。然而&#xff0c;许多人不知道如何制作配音&#xff0c;如果你也是这样&#xff0c;一定要花一分钟看完这篇文章。 其实现在有一些AI智能配音软件就很好用&#xff0c;可以帮助我们…

Windows安装SNMP服务

windows10安装SNMP服务 打开计算机的设置–应用–应用和功能–可选功能–点击加号添加功能,添加以下两个功能: windows server安装SNMP服务 搜索打开服务器管理器,点击功能–添加功能,勾选SNMP服务,点击下一步,等待安装完成 按win+R快捷键,运行service.msc,在服务中将…

电脑D盘文件凭空消失了?切记3招,轻松恢复文件!

“由于我c盘内存不够了&#xff0c;我就将部分重要的文件保存到了d盘&#xff0c;今天打开d盘后才发现我这些文件凭空消失了。这究竟是什么呀&#xff1f;还有机会找回这些消失的d盘文件吗&#xff1f;” D盘作为电脑中一个重要的磁盘&#xff0c;很多电脑用户也会选择将文件保…

摩尔信使MThings的协议转换(数据网关)功能

摩尔信使MThings可以作为现场总线&#xff08;RS485&#xff09;和以太网的数据中枢&#xff0c;并拥有强大的Modbus协议转换功能。 数据网关功能提供协议转换和数据汇聚功能&#xff0c;可实现多维度映射&#xff0c;包括&#xff1a;不同的通道(总线)类型、协议类型&#xff…

QSpace Pro 4.0.4.001(多面板文件管理器)

QSpace是一个干净高效的多面板文件管理器&#xff0c;也可以连接到FTP&#xff0c;SFTP&#xff0c;WebDAV&#xff0c;Dropbox&#xff0c;OneDrive&#xff0c;GoogleDrive&#xff0c;Amazon S3&#xff08;和S3兼容&#xff09;&#xff0c;Aliyun OSS。它具有与Finder相同…