【vue baidu-map】实现百度地图展示基地,鼠标悬浮标注点展示详细信息

news2024/11/19 6:40:01

实现效果如下:

自用代码记录

<template>
  <div class="map" style="position: relative;">
    <baidu-map
      id="bjmap"
      :scroll-wheel-zoom="true"
      :auto-resize="true"
      @ready="handler"
    >
      <bm-marker
        v-for="(item, index) in markerList"
        :key="index"
        :position="item.position"
        :icon="item.icon"
        @click="handlerinfoWindowOpen(index)"
      >
        <bm-info-window
        
          :position="item"
          :show="item.show"
          @close="infoWindowClose(index)"
          @open="infoWindowOpen(index, item)"
          :auto-pan="true"
          :close-on-click="false"
        >
        <div>视频箭头</div>
          <!-- <div>
            <a
              href="#/internet"
              style="
                font-size: 15px;
                border-bottom: 1px #0464a4 solid;
                color: #0464a4;
              "
              >视频监控名称:{{ item.name }}</a
            > -->
            <!-- <video-player
              style="width: 200px; height: 100px"
              :ref="videoId"
              class="myPlayer"
              muted="true"
              :options="videoOptions"
            /> -->

            <!-- <span>企业名称:</span><span>{{current }}testt</span> -->
          <!-- </div> -->
        </bm-info-window>
      </bm-marker>
      <bm-polygon v-for="(markers, index) in planBaseMassifs" :key="index" :path="markers" :stroke-color="drawColor" :stroke-opacity="1" :stroke-weight="4" :fillColor="drawColors" :fillOpacity="1" />
      <div class="equipmentBox" v-if="equipmentType">
        <div
          :class="current == key ? 'item current' : 'item'"
          v-for="(value, key) in equipmentType"
          :key="key"
          @click="changeType(key)"
        >
          <div>{{ key }}</div>
          <div>({{ value }})</div>
        </div>
      </div>
      <div v-show="current == '视频监控'" class="equipmentBox1">
        <video-player
          style="width: 100%; height: 100%;position:absolute;"
          :ref="videoId"
          class="myPlayer"
          muted="true"
          :options="videoOptions"
        />
      </div>
    </baidu-map>
  </div>
</template>

<script>
// var echarts = require('echarts')
import { getPlantBases } from '@/api/table'
import { getUserEquipments ,getPageList} from '@/api/equipment'
// import { setServers } from 'dns';
// import { sumRpt } from '@/api/equipment'
import { staticResourceLocation } from '@/settings'
import defaultSettings from '@/settings'
import initData from '../../../mixins/initData'
import VideoPlayer from '@/views/components/videoPlayer.vue'
import { log } from 'video.js'

export default {
  props: {
    childrenData: {
      type: Object,
      default: function () {
        return {}
      },
    },
  },
  data() {
    return {
      staticResourceLocation,
      plantBaseList: [],
      screenHeight: window.innerHeight - 84, // 屏幕高度
      screenWidth: window.innerWidth,
      systitle: '',
      map: null,
      BMap: null,
      NavigationControl: null,
      MapTypeControl: null,
      // 设备列表
      equipmentList: [],
      planBaseMassifs:[],
      equipmentType: [],
      current: 'LED',
      markerList: [],
      videoOptions: {
        autoplay: false,
        controls: true,
      },
      videoId: '',
      drawColors: '#e9d99b',
      videoList: [],
      markers:[],
      drawColor: "#ff0000",
    }
  },
  components: { VideoPlayer },
  mounted() {
    var _this = this
    window.onresize = function () {
      // 定义窗口大小变更通知事件
      _this.screenHeight = document.documentElement.clientHeight - 84 // 窗口高度
      _this.screenWidth = document.documentElement.clientWidth // 窗口宽度
      //map.removeControl(NavigationControl)   //删除比例尺控件
      _this.map.removeControl(_this.NavigationControl)
      _this.map.removeControl(_this.MapTypeControl)
      _this.NavigationControl = new BMap.NavigationControl({
        // 地图平移缩放控件
        anchor: BMAP_ANCHOR_TOP_LEFT,
        type: BMAP_NAVIGATION_CONTROL_LARGE,
        offset: new BMap.Size(_this.screenWidth / 4 + 5, 10),
      })

      _this.MapTypeControl = new BMap.MapTypeControl({
        mapTypes: [BMAP_NORMAL_MAP, BMAP_SATELLITE_MAP, BMAP_HYBRID_MAP],
        offset: new BMap.Size(_this.screenWidth / 4 + 5, 10),
      })
      _this.map.addControl(_this.NavigationControl)
      _this.map.addControl(_this.MapTypeControl)
    }
    console.log(this.childrenData, 'childrenData--->statistics')
    this.equipmentType = this.childrenData.withCategory
    // sumRpt().then((res) => {
    //   if (res.body) {
    //     let { withCategory } = res.body
    //     this.equipmentType = withCategory
    //   }
    // })

    getUserEquipments().then((res) => {
      console.log('百度地图传的接口',res)
      this.equipmentList = res.body
      this.equipmentList.forEach((item) => {
        if (item.category === 1 && item.point) {
          var obj = {
            position: {
              lng: item.point.split(',')[0],
              lat: item.point.split(',')[1],
            },

            icon: {
              url: this.staticResourceLocation + 'static/LED.png',
              size: { width: 33, height: 33 },
              opts: {
                imageSize: { width: 33, height: 33 },
              },
            },
          }
          this.markerList.push(obj)
        } else if (item.category === 2) {
          var obj1 = {
            hdAddress: item.videoUrl,
            id: item.videoId,
          }
          this.videoList.push(obj1)

          let indexId = 0
          this.videoId = this.videoList[indexId].id
          this.$nextTick(function () {
            var _thisVideoRefs = this.$refs[this.videoList[indexId].id]
            if (_thisVideoRefs) {
              var player = _thisVideoRefs.player
              player.src(this.videoList[indexId].hdAddress)
              //player.play();
            }
          })
        }
      })
    })
  },
  beforeDestroy() {
    if (this.timer) {
      clearInterval(this.timer) // 在Vue实例销毁前,清除我们的定时器
    }
  },
  created() {},
  mixins: [initData],
  methods: {
    changeType(key) {
      this.markerList = []
      this.current = key
      var index =
        key == 'LED'
          ? 1
          : key == '视频监控'
          ? 2
          : key == '环境监测'
          ? 3
          : key == '水肥机'
          ? 4
          : key == '虫情测报灯'
          ? 5
          : key == '杀虫灯'
          ? 6
          : key == '智能控制柜'
          ? 7
          : 0
      // console.log(index)
      var iconPath = ''
      if (index == 1) {
        iconPath = this.staticResourceLocation + 'static/led.png'
      } else if (index == 2) {
        iconPath = this.staticResourceLocation + 'static/video.png'
      } else if (index == 3) {
        iconPath = this.staticResourceLocation + 'static/qxjc.png'
      } else if (index == 4) {
        iconPath = this.staticResourceLocation + 'static/jsgg.png'
      } else if (index == 5) {
        iconPath = this.staticResourceLocation + 'static/Insecticidal.png'
      } else if (index == 6) {
        iconPath = this.staticResourceLocation + 'static/scd.png'
      } else if (index == 7) {
        iconPath = this.staticResourceLocation + 'static/znkzk.png'
      }
      this.equipmentList.forEach((item) => {
        if (item.category === index && item.point) {
          var obj = {
            position: {
              lng: item.point.split(',')[0],
              lat: item.point.split(',')[1],
            },
            show: false,
            name: item.name,
            icon: {
              url: iconPath,
              size: { width: 33, height: 33 },
              opts: {
                imageSize: { width: 33, height: 33 },
              },
            },
          }
          this.markerList.push(obj)
        }
      })
      // console.log(this.markerList, 'kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk')
    },
    // gohome() {
    //   console.log('666')
    //   var user = this.$store.state.user.user
    //   if (user.homeUrl && user.homeUrl != '') {
    //     this.$router.push(user.homeUrl)
    //   } else {
    //     this.$router.push('/')
    //   }
    // },
    // redirectMonitor: function () {
    //   this.$router.push('/monitor/tine')
    // },
    handler({ BMap, map }) {
      this.map = map
      this.BMap = BMap
      getPlantBases().then((res) => {
        console.log(res.body, '百度地图')
        this.plantBaseList = res.body
        var point = ''
        this.plantBaseList.forEach((item) => {
          if (item.position) {
            point = new BMap.Point(
              item.position.split(',')[0],
              item.position.split(',')[1]
            )
          }
        })

        if (point === '') {
          point = new BMap.Point(107.034026, 33.073558)
        }
        map.centerAndZoom(point, 8) // 初始化地图,设置中心点坐标和地图级别

        map.enableScrollWheelZoom(true) // 启用滚轮放大缩小
        var myIcon = new BMap.Icon(
          'http://lyds.fengyuniot.com/content/upload/mappoint.png',
          new BMap.Size(40, 52),
          {
            anchor: new BMap.Size(10, 10),
          }
        )

        // var marker = new BMap.Marker(point) // 创建标注
        // map.addOverlay(marker) // 将标注添加到地图中
        var NavigationControl = new BMap.NavigationControl({
          // 地图平移缩放控件
          anchor: BMAP_ANCHOR_TOP_LEFT,
          type: BMAP_NAVIGATION_CONTROL_LARGE,
          offset: new BMap.Size(this.screenWidth / 4 + 5, 10),
        })
        this.NavigationControl = NavigationControl
        // 添加地图类型控件
        var MapTypeControl = new BMap.MapTypeControl({
          mapTypes: [BMAP_NORMAL_MAP, BMAP_SATELLITE_MAP, BMAP_HYBRID_MAP],
          offset: new BMap.Size(this.screenWidth / 4 + 5, 10),
        })
        this.MapTypeControl = MapTypeControl
        map.addControl(NavigationControl)
        map.setMapType(BMAP_HYBRID_MAP) // 调取地图类型混合型
        map.addControl(MapTypeControl)

        var markerArr = this.plantBaseList
        // console.log(this.plantBaseList, 'this.plantBaseList11111')
        markerArr.forEach((e, i) => {
          var positionArr = e.position.split(',')
          // console.log(e, 'errrrr')
          // console.log(e.plantBasePictures[0].pictureUrl, 'rrrrr')
          var background = ''
          if (e.plantBasePictures != null && e.plantBasePictures.length > 0) {
            background =
              defaultSettings.staticResourceLocation +
              e.plantBasePictures[0].pictureUrl
          }
          // console.log(background, 'background')
          let opts = {
            width: 200,
            height: 100,
          }
          // 创建point, 将x,y值传入
          const pointNumber = new BMap.Point(positionArr[0], positionArr[1])
          const infoWindow = new window.BMap.InfoWindow(
            "<div class='maptipsinfo'style='color:white;' ><a href='#/nutrientManagement'  style='font-size:15px;border-bottom:1px #0464A4 solid;color:#00fe8f;'><span>" +
              e.baseName +
              '</span></a>' +
              "<p style='font-size:14px;'><span>地址:</span>" +
              e.address +
              '</p>' +
              '<img  style="width:100%;height:80%;" src="' +
              background +
              '"/>' +
              '</div>',
            opts
          )
          // infoWindow.setStyle({
          // color: '#fff', // 字体颜色为白色
          // background: '#000', // 背景颜色为黑色
          // border: 'none', // 去掉边框
          // borderRadius: '5px', // 圆角半径
          // padding: '10px', // 内边距
          // fontSize: '14px', // 字体大小
          // lineHeight: '20px', // 行高
          // })
          var label = new BMap.Label(e.baseName, {
            offset: new BMap.Size(25, 5),
          })
          this.markerFun(map, pointNumber, infoWindow, label, myIcon)
        })
      })
        const params = {
        pageIndex: this.pageIndex,
        pageSize: this.pageSize,
        enterPriseId: this.enterPriseId,
      }
      getPageList(params).then((res)=>{
        console.log(res,'你好555555555555');
        // planBaseMassifs
        if(res.errorCode == 20000){
           const  array  = res.body.list
           const innerObjects = [];
           for (let i = 0; i < array .length; i++) {
            const innerObject  = array [i].planBaseMassifs;
            innerObjects.push(innerObject)

          }
          this.planBaseMassifs = innerObjects
          console.log(this.planBaseMassifs,'this.planBaseMassifs');
            // 使用map()方法遍历嵌套数组
            let modifiedArray = innerObjects.map((subArray) => {
          // 检查子数组是否为null
              if (subArray === null) {
                return [];
              }

              // 使用map()方法遍历子数组中的每个对象
              return subArray.map((obj) => {
                // 替换属性名
                obj.lat = obj.latitude;
                obj.lng = obj.longitude;
                delete obj.latitude;
                delete obj.longitude;

                // 处理null值
                if (obj === null) {
                  return {};
                } else {
                  return obj;
                }
              });
            }).filter((subArray) => subArray.length > 0);

            for (let i = 0; i < modifiedArray.length; i++) {
                // 获取每个子数组的第一行内容
                let firstRow = modifiedArray[i][0];

                // modifiedArray
                modifiedArray[i].push(firstRow);
              }
              this.planBaseMassifs = modifiedArray

        }
      })
    },

    markerFun: function (map, points, infoWindows, label, myIcon) {
      console.log('1111a',map,points, infoWindows, label, myIcon,)
      const markers = new BMap.Marker(points, { icon: myIcon })
      map.addOverlay(markers) // 将标注添加到地图中
      // markers.setLabel(label);  // 将data中的name添加到地图中
      // 标注的点击事件
      markers.addEventListener('mouseover', function (event) {
        map.openInfoWindow(infoWindows, points) // 参数:窗口、点  根据点击的点出现对应的窗口
      })
      // console.log('1a')
    },
    infoWindowOpen(index, item) {
      if (this.current == '视频监控') {
        this.markerList[index].show = true
        let indexId = index
        this.videoId = this.videoList[indexId].id
        this.$nextTick(function () {
          var _thisVideoRefs = this.$refs[this.videoList[indexId].id]
          // console.log(this.videos,_thisVideoRefs,'_thisVideoRefs_thisVideoRefs')
          if (_thisVideoRefs) {
            var player = _thisVideoRefs.player
            // console.log(player.src,'_thisVideoRefs11')

            player.src(this.videoList[indexId].hdAddress)
            //player.play();
          }
        })
      }
    },
    infoWindowClose(index) {
      this.markerList[index].show = false
    },
    handlerinfoWindowOpen(index) {
      this.markerList[index].show = true
      console.log('点击标记点',index)
      this.show = true
      if (this.current == '视频监控') {
        this.markerList[index].show = true
        let indexId = index
        this.videoId = this.videoList[indexId].id
        this.$nextTick(function () {
          var _thisVideoRefs = this.$refs[this.videoList[indexId].id]
          if (_thisVideoRefs) {
            var player = _thisVideoRefs.player
            player.src(this.videoList[indexId].hdAddress)
            //player.play();
          }
        })
      }
    },
    // handlerinfoWindowOpen(index) {
    //   this.markerList[index].show = true
    //   console.log('点击标记点',this.markerList[index].show)
    //   this.show = true
    //   if (this.current == '视频监控') {
    //     this.markerList[index].show = true
    //     let indexId = index
    //     this.videoId = this.videoList[indexId].id
    //     this.$nextTick(function () {
    //       var _thisVideoRefs = this.$refs[this.videoList[indexId].id]
    //       if (_thisVideoRefs) {
    //         var player = _thisVideoRefs.player
    //         player.src(this.videoList[indexId].hdAddress)
    //         //player.play();
    //       }
    //     })
    //   }
    // },
    // 异步调用百度js
    map_load() {
      var load = document.createElement('script')
      load.src = 'http://api.map.baidu.com/api?v=1.4&callback=map_init'
      document.body.appendChild(load)
    },
  },
}
</script>

<style scoped lang="scss">
/*地图提示*/

.equipmentBox {
  /* width: 240px; */
  // position: absolute;
  // top: 70px;
  // right: calc(25vw + 5px);
  position: absolute;
  top: 70px;
  right: 5px;
}
.equipmentBox1 {
  width: 260px;
  position: absolute;
  bottom: 35%;
  right: calc(25vw + 5px);
}

.equipmentBox .item {
  display: flex;
  justify-content: space-around;
  align-items: center;
  width: 108px;
  height: 27px;
  border-radius: 14px;
  background-color: #fff;
  color: #010101;
  font-size: 12px;
  font-weight: bold;
  cursor: pointer;
  margin-bottom: 5px;
  text-align: right;
}

.equipmentBox .current {
  background-color: #00b065;
  color: #fff;
}
// 地图
.map{
  width:100%;
  height: 100%;
}
.map .maptipsinfo p {
  font-size: 14px;
  line-height: 14px;
  height: 14px;
  color: #777;
}
.maptipsinfo a:hover {
  color: #0696f9;
  border-color: #0696f9;
}
.maptipsinfo span {
  color: #333;
}
.maptipsinfo {
  background: url();
}
.map #bjmap {
  width: 100%;
  height: 100%;
  display: inline-block;
  vertical-align: baseline;
  /* position: fixed; */
  div:first-of-type{
  border-radius: 15px !important;
}
}
.map #bjmap>div:first-of-type{
  border-radius: 15px !important;
}
.map .nowdatatime {
  border: 1px solid #00c7dd;
  background: rgba(0, 0, 0, 0.6);
  box-shadow: 0 0 10px rgba(1, 129, 143, 0.8);
  position: relative;
  top: -97%;
  padding: 10px;
  width: 240px;
  margin: 0 auto;
  text-align: center;
  border-radius: 5px;
  font-size: 1.5rem;
}
.imgss {
  height: 30px;
  width: 30px;
}
/*.map .el-loading-spinner .circular{
  width: 80px;
  height: 80px;
  animation: loading-rotate 2s linear infinite;

} */
/*.map  .el-loading-spinner{
  background: url(../../assets/img/default_img.gif) no-repeat;
  background-size: 80px 80px;
  width: 100%;
  height: 100%;
  position: relative;
  top: 45%;
  left: calc(50% - 40px);
} */

// /deep/.BMap_pop img,
// /deep/.BMap_top,
// /deep/.BMap_center,
// /deep/.BMap_bottom,
// /deep/.BMap_pop > div {
//   &:not(:nth-child(9)) {
//     display: none;
//   }
// }

// /deep/.BMap_pop div:nth-child(9) {
//   // top: 30px !important;
// }
// /deep/.BMap_bubble_content {
//   // border-top: 3px solid #377abd;
//   border-top: 3px solid rgba(44, 55, 47, 0.3);
//   // border-bottom: 3px solid #377abd;
//   border-bottom: 3px solid rgba(44, 55, 47, 0.3);
//   border-radius: 8px;
//   // background-color: rgba(36, 105, 137, 0.8);
//   background-color: rgba(44, 55, 47, 0.4);
//   overflow: hidden;
//   color: #ffffff;
//   padding: 8px 5px;
//   font-size: 14;
// }
.baidu-map-con {
  background-color: #043f31;
  // width: 100%;
  // height: 100%;
}
::v-deep #bjmap .BMap_stdMpCtrl{
  inset: 30px auto auto 10px !important;
}
// ::v-deep #bjmap .BMap_noprint {
//   inset: 10px 90% auto auto !important;
// }
::v-deep #bjmap .anchorTR{
  inset: 5px 91% auto auto !important;
}
::v-deep #bjmap .BMap_stdMpCtrl{
  //inset: 40px auto auto 30px !important;
}
// marker颜色
::v-deep .BMap_bubble_title{
  color:#fff;
  font-size:18px;
  /*font-weight: bold;*/
  text-align:left;
  background:transparent !important;
}

::v-deep .BMap_pop .BMap_top{
  background:#043f31 !important;
  border:0 !important;
}
::v-deep .BMap_pop .BMap_center{
  width:251px !important;
  // height: 300px !important;
  border:0 !important;
  background:#043f31 !important;
}
::v-deep .BMap_pop .BMap_bottom{
  border:0 !important;
  background:#043f31 !important;
}

::v-deep .BMap_pop div:nth-child(3){
  background:transparent !important;
}
::v-deep .BMap_pop div:nth-child(3) div{
  border-radius:7px;
  background:#043f31 !important;
  border:0 !important;
}
::v-deep .BMap_pop div:nth-child(1){
  border-radius:7px 0 0 0;
  background:transparent !important;
  border:0 !important;
}
::v-deep .BMap_pop div:nth-child(1) div{
  background:#043f31 !important;
}
::v-deep .BMap_pop div:nth-child(5){
  border-radius:0 0 0 7px;
  background:transparent !important;
  border:0 !important;
}
::v-deep .BMap_pop div:nth-child(5) div{
  border-radius:7px;
  background:#043f31 !important;
}
::v-deep .BMap_pop div:nth-child(7){
  background:transparent !important;
}
::v-deep .BMap_pop div:nth-child(7) div{
  border-radius:7px;
  background:#043f31 !important;
}

::v-deep .BMap_pop div:nth-child(8) div{
  /*border-radius:7px;*/
  background:#043f31 !important;
}
/*窗体阴影*/
::v-deep .BMap_shadow div:nth-child(5) img{
  margin-left: -1100px !important;
}

::v-deep .BMap_shadow div:nth-child(4){
  width: 262px !important;
}
::v-deep img[src="http://api0.map.bdimg.com/images/iw3.png"] {
  content: url('../../../assets/mapMarker.png');
}
::v-deep img[src="https://api.map.baidu.com/images/iw3.png"] {
  margin-top: -692px !important;
  filter: alpha(opacity=70);
  content: url('../../../assets/mapMarker.png');
}


</style>
<style>
#bjmap>div:first-of-type{
/* border-radius: 15px; */
}

</style>

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

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

相关文章

JVMJava虚拟机

JVM的内存区域 程序计数器&#xff1a; 字节码解释器通过改变程序计数器来依次读取指令&#xff0c;从而实现代码的流程控制&#xff0c;如&#xff1a;顺序执行、选择、循环、异常处理。 在多线程的情况下&#xff0c;程序计数器用于记录当前线程执行的位置&#xff0c;从而当…

python—gui-计算图像像素两点间距离

代码&#xff1a; import tkinter as tk from tkinter import ttkdef create_gui():# 创建Tkinter窗口root tk.Tk()# 设置窗口标题root.title("显示图片")# 图片文件路径image_path path_to_your_image.jpg# 加载图片img load_image(image_path)# 创建标签&#…

产品推荐 - ALINX XILINX FPGA开发板 Artix-7 XC7A100T-2FGG484I

01开发板介绍 此款开发板采用核心板扩展板的模式&#xff0c;方便用户对核心板的二次开发利用。FPGA使用的是Xilinx公司的ARTIX-7系列的芯片&#xff0c;型号为XC7A100T-2FGG484I。在核心板使用了2片MICRON公司的MT41J256M16HA-125 DDR3芯片&#xff0c;组合成32bit的数据总线…

联想拯救者刃7000K2024游戏电脑主机仅售6999元

这款联想拯救者刀锋7000K 2024游戏电脑主机在京东促销中售价仅为6999元&#xff0c;相比原价7499元有相当大的折扣。 这是一款功能强大的游戏电脑&#xff0c;配备了全新的 15-14400(F) 处理器和 RTX™ 4060 显卡&#xff0c;以及 16GB DDR5 内存和 1TB 固态硬盘。 外观方面&a…

STL_vector简化模拟—详解深层次深拷贝问题

文章目录 迭代器框架和成员变量基础成员函数容量相关的成员函数关于深拷贝中的深拷贝问题operator[ ]重载和内容修改函数类模板内的嵌套类型全部代码 根据原码看出vector的成员并不像string类的一个指针加一个size和一个capacity。 而是三个指针&#xff0c;_start , _finish ,…

IntelliJ IDEA 面试题及答案整理,最新面试题

IntelliJ IDEA中的插件系统如何工作&#xff1f; IntelliJ IDEA的插件系统工作原理如下&#xff1a; 1、插件架构&#xff1a; IntelliJ IDEA通过插件架构扩展其功能&#xff0c;插件可以添加新的功能或修改现有功能。 2、安装和管理&#xff1a; 通过IDEA内置的插件市场下载…

【海贼王的数据航海】排序——直接选择排序|堆排序

目录 1 -> 选择排序 1.1 -> 基本思想 1.2 -> 直接选择排序 1.2.1 -> 代码实现 1.3 -> 堆排序 1.3.1 -> 代码实现 1 -> 选择排序 1.1 -> 基本思想 每一次从待排序的数据元素中选出最小(或最大)的一个元素&#xff0c;存放在序列的起始位置&…

springCloudeAlibaba的使用

父pom文件&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.o…

【Docker篇】数据卷相关操作

文章目录 &#x1f388;前言&#x1f354;数据卷&#x1f6f8;操作命令⭐创建一个数据卷&#xff0c;并查看数据卷在宿主机的目录位置 &#x1f339;挂载数据卷 &#x1f388;前言 在前面文章的nginx案例中&#xff0c;修改nginx的html页面时&#xff0c;需要进入nginx内部。并…

k8s-高可用etcd集群 26

reset掉k8s2&#xff0c;k8s3&#xff0c;k8s4节点 清理完网络插件后重启 快速创建一个k8s集群 修改初始化文件 添加master节点 备份 查看etcd配置 启动docker 将etcd二进制命令从容器拷贝到本机 备份 查看快照状态 删除集群资源 恢复 停掉所有的核心组件 从快照恢复 重启所有…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:StepperItem)

用作Stepper组件的页面子组件。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 支持单个子组件。 接口 StepperItem() 属性 参数名参数类型参数描述prevLabelstring设置左侧文本按钮内…

python 统计中国观鸟记录中心官网已观测的鸟类种类

python 统计中国观鸟记录中心官网已观测的鸟类种类 中国观鸟记录中心网站&#xff1a;https://www.birdreport.cn/ 先下载官网 Excel 文件 文件放置目录如下&#xff1a; home dataset xxx.xlsxxxx.xlsxxxx.xlsx Excelgrep.py &#xff08;进行文件内容提取的程序&#xff…

day-21 前 K 个高频元素

思路&#xff1a;用ans[]存储频次最高的k个元素&#xff0c;用anslen[]存储对应的索引&#xff0c;将nums进行排序依次统计每个元素出现次数&#xff0c;再判断是否需要对ans[]和anslen[]进行替换&#xff0c;最后ans即为答案 注意点&#xff1a;遍历结束后&#xff0c;还需要…

数据库引论:2.SQL简介

SQL(Structured Query Language,结构化查询语言) 2.1 SQL查询语言概览 SQL语言包含 数据定义语言(Data-Definition Language,DDL)。SQL DDL提供定义关系模式、删除关系以及修改关系模式的命令。数据操纵语言(Data-Manipulation Language,DML)。SQL DML提供从数据库中查询信息…

【算法】AC自动机的优化:增量更新与删除

一、概述 AC自动机&#xff08;Aho-Corasick Automation&#xff09;是著名的多模匹配算法&#xff0c;源于贝尔实验室&#xff0c;并且在实际应用中得到广泛的引用&#xff0c;且具有以下特点&#xff1a; 只需要扫描一次文本&#xff0c;即可获取所有匹配该文本的模式串复杂…

小红书根据关键词取商品列表 API 返回值说明

小红书根据关键词取商品列表的API返回值通常包含与搜索请求相关的商品列表信息。这些信息包括匹配到的商品列表、商品详情、排序方式等。以下是一个简化的示例&#xff0c;展示了小红书根据关键词取商品列表API可能返回的JSON格式数据&#xff1a;获取调用详情链接 item_searc…

王道机试C++第8章递归与分治 Day35和蓝桥杯两道真题程序

第 8 章 递归与分治 递归是指&#xff1a;函数直接或间接调用自身的一种方法&#xff0c;通常可把一个复杂的大型问题层层转化为与原问题相似但规模较小的问题来求解。 递归策略只需少量的程序就可描述解题过程所需的多次重复计算&#xff0c;因此大大减少了程序的代码量。 8.…

一个命令查看自己的WIFI密码

一个命令查看自己的WIFI密码 忘记wifi密码怎么办&#xff1f;一个命令查看自己的wifi密码。 一、打开命令行 使用快捷键“WinR”&#xff0c;打开运行窗口&#xff0c;输入“cmd”后回车即可。 二、输入命令network shell命令 输入命令network shell&#xff0c;简称netsh&…

Android 面试题及答案整理,最新面试题

Android中Intent的作用及分类 Intent在Android中用作组件之间传递信息&#xff0c;它可以用于启动活动(activity)、服务(service)和发送广播(broadcast)。Intent主要分为显式Intent和隐式Intent两大类。 1、显式Intent&#xff1a; 直接指定了要启动的组件名称&#xff08;比如…

【网络】详解HTTPS及探究加密过程

目录 一、什么是HTTPS1、加密解密是什么2、为什么要加密3、常见的加密方式1、对称加密2、非对称加密 二、探究HTTPS如何实现加密1、方案一----只使用对称加密2、方案二----只使用非对称加密3、方案三----双方都使用非对称加密4、方案四----非对称加密 对称加密5、中间人攻击6、…