vue3+高德地图(或echarts)+turfjs实现等压线,色斑图(用于显示气象,环境等地图场景)

news2024/11/15 18:52:21

首先是turf.js(英文官网),也有中文网不过也就目录翻译了一下.
高德官网自行获得key
echarts官网
使用turf的isobands api实现.
数据: 需要准备geojson格式经纬度信息+业务值(比如温度,高度,光照只要是number值什么数据都可以)
国内各地区geojson数据点这里获得

参考的是这位大佬写的内容

主要区别:

  • 高德地图版本: 会有详细的路线,地区名称等背景. 但是需要项目允许连接外网或者有本地的地图图块
  • echarts版本: 本质是两个或多个geojosn的叠加,背景的详细度取决于的geojson详细度,优点就是需要加载的内容少,无需连接外网

我的实例是以贵州为基础的
业务值 使用的是随机值

高德地图版本

代码效果

<style scoped lang="scss">
  .About{
    height: 100%;
    width: 100%;
    position: relative;
     #map {
      position: absolute;
      top: 0;
      bottom: 0;
      width: 100%;
    }


  }
</style>

<template>
  <div class="About">
    <div id='map'></div>
  </div>
</template>

<script>
import * as turf from '@turf/turf'
import mapData from "../assets/json/guizhougexiancenter.json";
import guizhoulunkuo from "../assets/json/guizhoulunkuo.json";
import { onMounted, ref } from 'vue'
import AmapLoader from '@amap/amap-jsapi-loader'
export default {
  name: 'About',
  components: {
  },
  setup () {
    console.log('mapData', mapData)
    const calculateContourLines = () => {
      // 第一步  生成点位
      // 计算贵州东南西北最远坐标  
      var bbox = turf.bbox(guizhoulunkuo); // 数组组合 01   03   21   23
      console.log('bbox', bbox)
      let coordinates = [
        ...(mapData.features[0].geometry.coordinates[0][0][0]),
        [bbox[0], bbox[1]],
        [bbox[2], bbox[1]],
        [bbox[2], bbox[3]],
        [bbox[0], bbox[3]],
      ]
      // 绑定各经纬度第三个业务值
      let centerPositionList = coordinates.map((item, index) => {
        return {
          type: "Feature",
          properties: {
            // 这个value就是温度;气温;光照等,除经纬度外影响划分区域的业务值
            value: (Math.random() * 100).toFixed(2)
          },
          geometry: {
            type: "Point",
            coordinates: item  //经纬度
          }
        }
      })
      // points为每个点数据
      let points = {
        type: "FeatureCollection",
        features: centerPositionList
      }



      // 第二步  网格点
      let interpolate_options = {
        // 点位
        gridType: "points",
        // property中取那个元素
        property: "value",
        // 单位
        units: "degrees",
        // 权重
        weight: 10
      };
      // interpolate中第一是点位数据   第二个是精细度(值越小画的点越多)  配置项
      // grid网格点
      let grid = turf.interpolate(points, 0.05, interpolate_options);
      // value保留两位小数  经过interpolate计算后value会变得很长
      grid.features.map((i) => (i.properties.value = i.properties.value.toFixed(2)));
      


      // 第三步  等压线
      // 规定样式配置
      let isobands_options = {
        zProperty: "value",
        commonProperties: {
          "fill-opacity": 0.8
        },
        breaksProperties: [
          { fill: "#e3e3ff" },
          { fill: "#c6c6ff" },
          { fill: "#a9aaff" },
          { fill: "#8e8eff" },
          { fill: "#7171ff" },
          { fill: "#5554ff" },
          { fill: "#3939ff" },
          { fill: "#1b1cff" },
          { fill: "#1500ff" }
        ]
      };
      // isobands没有经过编辑裁剪 是正方形图层,   是根据网格点,取值范围和样式配置返回等压线(geojson)
      let isobands = turf.isobands(
        grid,
        [1, 10, 20, 30, 50, 70, 80, 90 ,100],
        isobands_options
      );
      // flatten 减少geoJson嵌套层级
      guizhoulunkuo = turf.flatten(guizhoulunkuo);
      isobands = turf.flatten(isobands);
      // console.log('isobands', isobands)



      // 第四步  将等压线限制在贵州范围内并生成最终等压线
      // 通过intersect判断是否存在交集  来判断是否在贵州范围内
      // features存放有交集的点位
      let features = [];
      isobands.features.forEach(function (layer1) {
        guizhoulunkuo.features.forEach(function (layer2) {
          let intersection = null;
          try {
            intersection = turf.intersect(layer1, layer2);
          } catch (e) {
            layer1 = turf.buffer(layer1, 0);
            intersection = turf.intersect(layer1, layer2);
          }
          if (intersection != null) {
            intersection.properties = layer1.properties;
            intersection.id = Math.random() * 100000;
            features.push(intersection);
          }
        });
      });
      // intersection为最终完整图层
      let intersection = turf.featureCollection(features);
      console.log('intersection', intersection)



      // 最后  将数据传入地图
      // initMap(points, isobands, intersection)
      initGaoDeMap(points, isobands, intersection)
    }
    const initGaoDeMap = (points, isobands, intersection) => {
      // 可视化及交互部分
      AmapLoader.load({
          key:"高德地图key", // key
          version:"2.0", 
          plugins:['AMap.DistrictSearch', 'AMap.GeoJSON'], // 需要使用的的插件列表
      }).then((AMap) => {
          const district = new AMap.DistrictSearch({subdistrict:2,extensions:'all',level:'province'});
          district.search('贵州',function(status, result){
              const bounds = result.districtList[0].boundaries
              const mask = []
              for (let i=0;i<bounds.length;i++){
                  mask.push([bounds[i]])
              }
              const map = new AMap.Map("map",{  // 设置地图容器id
                  mask: mask, 
                  zoom:8, // 设置当前显示级别
                  expandZoomRange:true, // 开启显示范围设置
                  zooms: [7, 20], //最小显示级别为7,最大显示级别为20
                  center:[106.629577,26.684338], // 设置地图中心点位置
                  zoomEnable:true, // 是否可以缩放地图
                  resizeEnable:true,
              });
              // 添加描边
              for (let i=0;i<bounds.length; i++) {
                  const polyline = new AMap.Polyline({
                      path:bounds[i], // polyline 路径,支持 lineString 和 MultiLineString
                  })
                  polyline.setMap(map);
              }
              loadGeoJson(AMap,map)
          })
      }).catch(e=>{
          console.log(e);
      })
      const loadGeoJson = (AMap, map) => {
        var geojson = new AMap.GeoJSON({
            geoJSON: intersection,
            getPolygon: function(geojson, lnglats) {
                return new AMap.Polygon({
                    path: lnglats,
                    strokeColor: 'white',
                    fillColor: geojson.properties.fill,
                    fillOpacity: geojson.properties['fill-opacity'],
                    strokeWeight:0,
                });
            }
        });
        map.add(geojson)
      }
    }
    onMounted(() => {
      calculateContourLines()
    })
    return {
    }
  }
}
</script>

echarts版本

代码效果

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="scss">
  .About{
    height: 100%;
    width: 100%;
    position: relative;
     #map {
      position: absolute;
      top: 0;
      bottom: 0;
      width: 100%;
    }


  }
</style>

<template>
  <div class="About">
    <div id='map'></div>
  </div>
</template>

<script>
import * as turf from '@turf/turf'
import * as echarts from 'echarts'
import mapData from "../assets/json/guizhougexiancenter.json";
import guizhoulunkuo from "../assets/json/guizhoulunkuo.json";
import { onMounted, ref } from 'vue'
export default {
  name: 'About',
  components: {
  },
  setup () {
    console.log('mapData', mapData)
    const calculateContourLines = () => {
      // 第一步  生成点位
      // 计算贵州东南西北最远坐标  
      var bbox = turf.bbox(guizhoulunkuo); // 数组组合 01   03   21   23
      console.log('bbox', bbox)
      let coordinates = [
        ...(mapData.features[0].geometry.coordinates[0][0][0]),
        [bbox[0], bbox[1]],
        [bbox[2], bbox[1]],
        [bbox[2], bbox[3]],
        [bbox[0], bbox[3]],
      ]
      // 绑定各经纬度第三个业务值
      let centerPositionList = coordinates.map((item, index) => {
        return {
          type: "Feature",
          properties: {
            // 这个value就是温度;气温;光照等,除经纬度外影响划分区域的业务值
            value: (Math.random() * 100).toFixed(2)
          },
          geometry: {
            type: "Point",
            coordinates: item  //经纬度
          }
        }
      })
      // points为每个点数据
      let points = {
        type: "FeatureCollection",
        features: centerPositionList
      }



      // 第二步  网格点
      let interpolate_options = {
        // 点位
        gridType: "points",
        // property中取那个元素
        property: "value",
        // 单位
        units: "degrees",
        // 权重
        weight: 10
      };
      // interpolate中第一是点位数据   第二个是精细度(值越小画的点越多)  配置项
      // grid网格点
      let grid = turf.interpolate(points, 0.05, interpolate_options);
      // value保留两位小数  经过interpolate计算后value会变得很长
      grid.features.map((i) => (i.properties.value = i.properties.value.toFixed(2)));
      


      // 第三步  等压线
      // 规定样式配置

      // 晴:#FEE715  多云:#B0D5FF  阴:#7B8B8E  
      // 小雨:#A6A6A6  中雨:#585858  大雨:#37618E  暴雨:#37618E  大暴雨:#365569  特大暴雨:#2F3640  小冻雨:#6F8FA6  中冻雨:#577189  大冻雨:#476381 
      // 小雪:#C6E2FF  中雪:#A2C5E0  大雪:#7C98B3  暴雪:#6284A0  大暴雪:#517394  特大暴雪:#3C6079  小雨夹雪:#6A8BAA  中雨夹雪:#4F6E8A  大雨夹雪:#37618E
      let isobands_options = {
        zProperty: "value",
        commonProperties: {
          "fill-opacity": 0.8
        },
        breaksProperties: [
          { fill: "#e3e3ff" },
          { fill: "#c6c6ff" },
          { fill: "#a9aaff" },
          { fill: "#8e8eff" },
          { fill: "#7171ff" },
          { fill: "#5554ff" },
          { fill: "#3939ff" },
          { fill: "#1b1cff" },
          { fill: "#1500ff" }
        ]
      };
      // isobands没有经过编辑裁剪 是正方形图层,   是根据网格点,取值范围和样式配置返回等压线(geojson)
      let isobands = turf.isobands(
        grid,
        [1, 10, 20, 30, 50, 70, 80, 90 ,100],
        isobands_options
      );
      // flatten 减少geoJson嵌套层级
      guizhoulunkuo = turf.flatten(guizhoulunkuo);
      isobands = turf.flatten(isobands);
      console.log('isobands', isobands)



      // 第四步  将等压线限制在贵州范围内并生成最终等压线
      // 通过intersect判断是否存在交集  来判断是否在贵州范围内
      // features存放有交集的点位
      let features = [];
      isobands.features.forEach(function (layer1) {
        guizhoulunkuo.features.forEach(function (layer2) {
          let intersection = null;
          try {
            intersection = turf.intersect(layer1, layer2);
          } catch (e) {
            layer1 = turf.buffer(layer1, 0);
            intersection = turf.intersect(layer1, layer2);
          }
          if (intersection != null) {
            layer1.properties.name = layer1.properties.value.split('-')[1]
            intersection.properties = layer1.properties;
            intersection.id = Math.random() * 100000;
            features.push(intersection);
          }
        });
      });
      // intersection为最终完整图层
      let intersection = turf.featureCollection(features);
      console.log('intersection', intersection)



      // 最后  将数据传入Echarts
      initEcharts(points, isobands, intersection)
    }
    
    const initEcharts = (points, isobands, intersection) => {
      let mapChart = echarts.init(document.getElementById("map"));
      echarts.registerMap("guizhoulunkuo", { geoJSON: guizhoulunkuo });
      echarts.registerMap('guiyangqiwen', { geoJSON: intersection });
      let option = {
        backgroundColor: "#091c3d",
        series: [
          {
            type: "map",
            map: 'guizhoulunkuo',
            zlevel: 0,
            silent:true, // 不响应鼠标事件
            label: {
              normal: {
                show: true,
                textStyle: {
                  color: "#fff",
                  fontSize: 15,
                  fontWeight: 500,
                },
              },
              emphasis: {
                textStyle: {
                  color: "rgb(183,185,14)",
                },
              },
            },
            itemStyle: {
              normal: {
                areaColor: "#2b93b9",
                borderColor: "white",
                borderWidth: 2,
                shadowColor: "#2b93b9",
                shadowBlur: 35,
              },
            },
          },
          {
            type: 'map',
            map: 'guiyangqiwen',
            zlevel: 1,
            emphasis: {
              label: {
                color: "#fff",
              },
              itemStyle: {
                areaColor: "#1b1cff",
              },
            },
            itemStyle: {
              opacity: 0.6,
              areaColor: '#c6c6ff',
              borderWidth: 0
            },
            data: [
              {
                name: "10",
                itemStyle: {
                  areaColor: '#e3e3ff'
                },
              },
              {
                name: "20",
                itemStyle: {
                  areaColor: '#c6c6ff'
                }
              },
              {
                name: "30",
                itemStyle: {
                  areaColor: '#a9aaff'
                }
              },
              {
                name: "40",
                itemStyle: {
                  areaColor: '#a9aaff' 
                }
              },
              {
                name: "50",
                itemStyle: {
                  areaColor: '#8e8eff'
                }
              },
              {
                name: "60",
                itemStyle: {
                  areaColor: '#7171ff'
                }
              },
              {
                name: "70",
                itemStyle: {
                  areaColor: '#5554ff'
                }
              },
              {
                name: "80",
                itemStyle: {
                  areaColor: '#3939ff'
                }
              },
              {
                name: "90",
                itemStyle: {
                  areaColor: '#1b1cff'
                }
              },
              {
                name: "100",
                itemStyle: {
                  areaColor: '#1500ff'
                }
              },
            ]
          },
        ],
      };
      mapChart.setOption(option, true);
    }
    onMounted(() => {
      calculateContourLines()
    })
    return {
    }
  }
}
</script>

guizhoulunkuo.json是贵州轮廓通过我最上面获得geojson的网站获取
guizhougexiancenter.json 贵州各县中心点geojosn

// guizhougexiancenter.json
{
  "type": "FeatureCollection",
  "features": [
    {
      "type": "Feature",
      "properties": {
        "adcode": 520000,
        "name": "贵州省",
        "center": [
          106.713478,
          26.578343
        ],
        "centroid": [
          106.880455,
          26.826368
        ],
        "childrenNum": 9,
        "level": "province",
        "acroutes": [
          100000
        ],
        "parent": {
          "adcode": 100000
        }
      },
      "geometry": {
        "type": "MultiPolygon",
        "coordinates": [
          [
            [
              [
                [
                  106.943784,
                  27.694395
                ],
                [
                  106.937265,
                  27.706626
                ],
                [
                  106.831668,
                  27.535288
                ],
                [
                  106.826591,
                  28.131559
                ],
                [
                  107.191024,
                  27.951342
                ],
                [
                  107.441872,
                  28.550337
                ],
                [
                  107.605342,
                  28.880088
                ],
                [
                  107.887857,
                  28.521567
                ],
                [
                  107.722021,
                  27.960858
                ],
                [
                  107.485723,
                  27.765839
                ],
                [
                  107.892566,
                  27.221552
                ],
                [
                  106.200954,
                  28.327826
                ],
                [
                  105.698116,
                  28.587057
                ],
                [
                  106.412476,
                  27.803377
                ],
                [
                  109.192117,
                  27.718745
                ],
                [
                  109.21199,
                  27.51903
                ],
                [
                  108.848427,
                  27.691904
                ],
                [
                  108.917882,
                  27.238024
                ],
                [
                  108.229854,
                  27.519386
                ],
                [
                  108.255827,
                  27.941331
                ],
                [
                  108.405517,
                  27.997976
                ],
                [
                  108.117317,
                  28.26094
                ],
                [
                  108.495746,
                  28.560487
                ],
                [
                  109.202627,
                  28.165419
                ],
                [
                  107.977541,
                  26.582964
                ],
                [
                  107.901337,
                  26.896973
                ],
                [
                  108.12678,
                  27.034657
                ],
                [
                  108.681121,
                  26.959884
                ],
                [
                  108.423656,
                  27.050233
                ],
                [
                  108.816459,
                  27.173244
                ],
                [
                  109.212798,
                  26.909684
                ],
                [
                  109.20252,
                  26.680625
                ],
                [
                  108.440499,
                  26.727349
                ],
                [
                  108.314637,
                  26.669138
                ],
                [
                  109.136504,
                  26.230636
                ],
                [
                  108.521026,
                  25.931085
                ],
                [
                  108.912648,
                  25.747058
                ],
                [
                  108.079613,
                  26.381027
                ],
                [
                  107.593172,
                  26.494803
                ],
                [
                  107.794808,
                  26.199497
                ],
                [
                  107.517021,
                  26.258205
                ],
                [
                  107.513508,
                  26.702508
                ],
                [
                  107.8838,
                  25.412239
                ],
                [
                  107.233588,
                  26.580807
                ],
                [
                  107.478417,
                  27.066339
                ],
                [
                  107.542757,
                  25.826283
                ],
                [
                  107.32405,
                  25.831803
                ],
                [
                  106.750006,
                  25.429894
                ],
                [
                  106.447376,
                  26.022116
                ],
                [
                  106.977733,
                  26.448809
                ],
                [
                  106.657848,
                  26.128637
                ],
                [
                  107.87747,
                  25.985183
                ],
                [
                  106.715963,
                  26.573743
                ],
                [
                  106.713397,
                  26.58301
                ],
                [
                  106.670791,
                  26.410464
                ],
                [
                  106.762123,
                  26.630928
                ],
                [
                  106.633037,
                  26.676849
                ],
                [
                  106.626323,
                  26.646358
                ],
                [
                  106.969438,
                  27.056793
                ],
                [
                  106.737693,
                  27.092665
                ],
                [
                  106.599218,
                  26.840672
                ],
                [
                  106.470278,
                  26.551289
                ],
                [
                  105.946169,
                  26.248323
                ],
                [
                  106.259942,
                  26.40608
                ],
                [
                  105.745609,
                  26.305794
                ],
                [
                  105.768656,
                  26.056096
                ],
                [
                  105.618454,
                  25.944248
                ],
                [
                  106.084515,
                  25.751567
                ],
                [
                  104.897982,
                  25.088599
                ],
                [
                  105.192778,
                  25.431378
                ],
                [
                  104.955347,
                  25.786404
                ],
                [
                  105.218773,
                  25.832881
                ],
                [
                  105.650133,
                  25.385752
                ],
                [
                  106.091563,
                  25.166667
                ],
                [
                  105.81241,
                  24.983338
                ],
                [
                  105.471498,
                  25.108959
                ],
                [
                  104.846244,
                  26.584805
                ],
                [
                  105.474235,
                  26.210662
                ],
                [
                  104.95685,
                  26.540478
                ],
                [
                  104.468367,
                  25.706966
                ],
                [
                  105.284852,
                  27.302085
                ],
                [
                  105.609254,
                  27.143521
                ],
                [
                  106.038299,
                  27.024923
                ],
                [
                  106.222103,
                  27.459693
                ],
                [
                  105.768997,
                  26.668497
                ],
                [
                  105.375322,
                  26.769875
                ],
                [
                  104.286523,
                  26.859099
                ],
                [
                  104.726438,
                  27.119243
                ]
              ]
            ]
          ]
        ]
      }
    }
  ]
}

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

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

相关文章

30元腾讯云服务器搭建幻兽帕鲁Palworld多人联机游戏,畅玩

幻兽帕鲁太火了&#xff0c;官方palworld服务器不稳定&#xff1f;不如自建服务器&#xff0c;基于腾讯云幻兽帕鲁服务器成本32元全自动部署幻兽帕鲁服务器&#xff0c;超简单有手就行&#xff0c;全程自动化一键部署10秒钟即可搞定&#xff0c;无需玩家手动部署幻兽帕鲁游戏程…

[通俗易懂:Linux标准输入/输出和重定向]Shell脚本之 > /dev/null 2>1命令详解

目录标题 一、> /dev/null 2>&1 命令解析二、/dev/null 文件浅显理解三、标准输入、标准输出、标准错误输出四、输入重定向、输出重定向五、命令作用与应用场景 如果想看命令意义&#xff0c;可以直接跳到第五部分 一、> /dev/null 2>&1 命令解析 我们在别…

7 个 Python 问题,来扫扫盲

这 7 个问题&#xff0c;我是有收获的&#xff0c;整理如下&#xff1a; 1、反射算术运算符 你可能知道 Python 里面的魔法函数&#xff0c;比如 __add__ 和 __sub__ 代表 - 运算符&#xff0c;表示 obj /- something&#xff0c;但你可能不知道还有一个 __radd__&#xff0…

JMeter入门教程 —— 事务!

简介&#xff1a; JMeter中事务的基本介绍 1.任务背景 JMeter中的事务是通过事务控制器实现的。&#xff0c;为了衡量服务器对某一个或一系列操作处理的响应时间&#xff0c;需要定义事务。下面我们详细介绍在JMeter中如何使用事务 2.任务目标 掌握基于JMeter性能测试脚本开…

标准版uni-app移动端页面添加/开发操作流程

页面简介 uni-app项目中&#xff0c;一个页面就是一个符合Vue SFC规范的.vue文件或.nvue文件。 .vue页面和.nvue页面&#xff0c;均全平台支持&#xff0c;差异在于当uni-app发行到App平台时&#xff0c;.vue文件会使用webview进行渲染&#xff0c;.nvue会使用原生进行渲染。…

若依框架针对漏洞升级的记录

背景&#xff1a;项目部署在生产环境上以后&#xff0c;漏洞扫描的时候&#xff0c;发现各种漏洞需要修复&#xff0c;很多漏洞的升级后面都记不住了&#xff0c;所以现在都简单记录一下处理的步骤 20240415 解决方案&#xff1a;直接修改配置文件中的Spring security的版本…

bugku-web-需要管理员

页面源码 <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <title>404 Not Found</title> </head> <body> <div idmain><i> <h2>Something error:</h2…

Linux:调试器 - gdb

Linux&#xff1a;调试器 - gdb gbd基本概念gbd调试浏览断点运行变量 gbd基本概念 GDB (GNU Debugger) 是一个强大的命令行调试工具,用于调试各种编程语言(如C、C、Java、Python等)编写的程序。使用 gdb可以帮助开发人员更快地定位和修复程序中的缺陷,提高代码质量和开发效率。…

大众日报教育版的 投稿方式-最快一周内见报

大众日报教育版的 投稿方式-最快一周内见报 大众日报是中共山东省委机关报&#xff0c;创刊于1939年1月1日&#xff0c;由中国共产党领导下的八路军budui所创建&#xff0c;是中共在山东省发行的报纸。 大众日报的“大众教育”版块是该报的一个重要组成部分&#xff0c;主要关…

React-项目构建

​&#x1f308;个人主页&#xff1a;前端青山 &#x1f525;系列专栏&#xff1a;React篇 &#x1f516;人终将被年少不可得之物困其一生 依旧青山,本期给大家带来React篇专栏内容:React-项目构建 目录 1、初始化项目 2、目录结构 组件 1、组件的创建方式 1.1、函数创建组…

【报错解决】RuntimeError: Distributed package doesn‘t have NCCL built in

报错信息&#xff1a; raise RuntimeError("Distributed package doesnt have NCCL " "built in") RuntimeError: Distributed package doesnt have NCCL built in报错原因&#xff1a; windows系统不支持nccl&#xff0c;采用gloo&#xff1b; 报错解决&…

浅谈程序员如何搞副业?

当程序员想要开展副业时&#xff0c;可以考虑以下具体的方法和策略&#xff1a; 确定自己的技术专长&#xff1a;了解自己在哪些技术领域有深入的专业知识和经验&#xff0c;根据这些领域找到适合的副业方向。 建立个人品牌和网络影响力&#xff1a;通过撰写博客、发表技术文章…

手拉手安装启动Kafka2.13

启动Kafka本地环境需Java 8以上 Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;它可以处理消费者在网站中的所有动作流数据。 这种动作&#xff08;网页浏览&#xff0c;搜索和其他用户的行动&#xff09;是在现代网络上的许多社会功能的一个关键因素。 Kafka启动…

云原生:企业数字化转型的引擎与未来

一&#xff0c;引言 随着信息技术的飞速发展&#xff0c;企业数字化转型已成为时代的必然趋势。在这场深刻的变革中&#xff0c;云原生技术以其独特的优势&#xff0c;逐渐成为推动企业数字化转型的核心动力。本文将详细探讨云原生技术的内涵、发展历程&#xff0c;以及在企业数…

Flink入门学习 | 大数据技术

⭐简单说两句⭐ ✨ 正在努力的小新~ &#x1f496; 超级爱分享&#xff0c;分享各种有趣干货&#xff01; &#x1f469;‍&#x1f4bb; 提供&#xff1a;模拟面试 | 简历诊断 | 独家简历模板 &#x1f308; 感谢关注&#xff0c;关注了你就是我的超级粉丝啦&#xff01; &…

前端三剑客 —— JavaScript (第十一节)

内容回顾&#xff1a; jQuery 操作DOM jQuery 事件处理 Ajax jQuery 特效案例 全选效果 tab切换 下拉菜单 自定义动画 Bootstrap 入门 首先我们可以在bootstrap官网上进行下载。官网地址:https//www.bootcss.com/ 首先在我们的页面中导入bootstrap的样式&#xff0c;我们可…

自己操作逆向案例一——某竞赛网登录密码加密,超级简单,泪目了!

网址&#xff1a;aHR0cHM6Ly9leGFtem9uZS5zYWlrci5jb20vcXVlc3Rpb24vZXhwbG9yZQ 打开开发者工具&#xff0c;点击账号密码登录&#xff0c;进行抓包 先进行搜索&#xff0c;发现一下子就找到了&#xff0c;且看上去很像MD5加密&#xff0c;打上断点&#xff0c;再次点击登录。…

计算机网络 Cisco路由信息协议(RIP)实验

一、实验内容 1、命名 2、关闭域名解释 3、设置路由器接口IP地址 4、根据要求配置RIP以实现所有客户机都能相互通信 5、配置默认路由 二、实验数据处理 1、建立拓扑图 2、PC机地址配置 主机IP地址子网掩码网关PC110.23.1.2255.255.255.010.23.1.1PC210.23.1.3255.255.2…

数据结构—顺序表实现通讯录

在上一节我们基本了解了顺序表的基本知识&#xff0c;接下来我们就用顺序表来实现一下通讯录。 一、基于动态顺序表实现通讯录 1.1 功能介绍 1. 能够保存用户信息&#xff1a;姓名&#xff0c;性别&#xff0c;年龄&#xff0c;电话&#xff0c;地址等 2. 添加联系人信息 3. …

锂电池寿命预测 | Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测

目录 预测效果基本介绍程序设计参考资料 预测效果 基本介绍 锂电池寿命预测 | Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测 程序设计 完整程序和数据获取方式&#xff1a;私信博主回复Matlab基于BiLSTM双向长短期记忆神经网络的锂电池寿命预测。 参考资料 [1] h…