原生微信小程序中案例--仿boss区域树选择列多选功能

1. 需求描述:

区域三级列表, 有添加,编辑,删除功能。

  1. 选择父级分类,其下子类全部选中,当前分类后加标志显示字样
  2. 取消选中子类,其父类分类后标志显示选中数量
  3. 若子类全部选中,除当前父类标志是字外,显示页面只显示当前父类
  4. 清除则清空选中结果
  5. 后台提交数据传参说明:
    • 如果子类全部选择,只传父类code
    • 如果子类没有全部选择,传父类code+子类code

示例:

  1. 选择数据
  • 河北省下:
    1.石家庄市子类全部选中,
    2.唐山市子类选择桥西区、长安区
    页面显示:
    - 河北 石家庄
    - 河北 唐山市 桥西区
    - 河北 唐山市 长安区
  • 山西省:(假设山西省下只有大同市和太原市)
    1. 太原市子类全部选中
    2. 大同市子类全部选中
    页面显示:
    - 山西省
  1. 传输参数
	data: [
		{one:130000, two: '130100'},
		{one:130000, two: '130200', three: '130201'},
		{one:130000, two: '130200', three: '130202'},
		{one:140000}
	]

2. 效果图:

描述

3. 代码

  1. 主页面:show.wxml
<!-- 选择地区 -->
<view class="recycle-container">
  <view class="title">
    选择地区
    <view class="option-btn" bind:tap="toEditArea" wx:if="{{areaList.length}}">
      <view class="option-icon">+</view>
      <text class="option-text">去编辑</text>
    </view>
  </view>
  <view class="explain">选择您的地区</view>
  <view class='msgHint-content max-height'>
    <view class="msgHint-content-item" wx:for="{{areaList}}" wx:key="id">
      <view class="account-content">{{item.zone_name}}</view>
      <text 
        class="option-text" 
        data-_id="{{item.id}}"
        bind:tap="delArea"
      >删除</text>
    </view>
  </view>
  <!-- 去添加 -->
  <view wx:if="{{!areaList.length}}" class="plus-container" bind:tap="addArea">
    <view class="plus-content">+</view>
    <view class="plus-text">去添加</view>
  </view>
  <!-- 操作 -->
  <view class="msgHint-content" wx:else>

  </view>
</view>
  1. 添加区域页面area.wxml
<!-- 内容区 -->
<view class="area-container">
  <!-- 省 -->
  <scroll-view 
  class="white-container scroll-container" 
  scroll-y="{{true}}" 
  enhanced="{{true}}"
  show-scrollbar="{{false}}"
  >
    <view 
      wx:for="{{areaList}}" 
      wx:key="index"
      data-idx="{{index}}" 
      class="scroll-item {{ index === provinceCurrentIdx ? 'left-container': ''}} {{ item.is_choice ? 'scroll-item-active': ''}}"
      bind:tap="provinceClick"
    >
      {{ item.name }}
      <view class="item-sign" wx:if="{{item.signName}}">
        {{item.signName}}
      </view>
    </view>
  </scroll-view>
  <!-- 市 -->
  <scroll-view 
    class="white-container scroll-container" 
    scroll-y="{{true}}" 
    enhanced="{{true}}"
    show-scrollbar="{{false}}"
  >
    <view 
      wx:for="{{cityList}}" 
      wx:key="index"
      data-idx="{{index}}" 
      class="scroll-item {{ index === cityCurrentIdx ? 'left-container': ''}} {{item.is_choice ? 'scroll-item-active' : ''}}"
      bind:tap="cityClick"
    >
      {{ item.name }}
      <view class="item-sign" wx:if="{{item.signName}}">
        {{item.signName}}
      </view>
    </view>
  </scroll-view>
  <!-- 区县 -->
  <scroll-view 
    class="white-container scroll-container"
    scroll-y="{{true}}" 
    enhanced="{{true}}"
    show-scrollbar="{{false}}"
  >
    <view 
      wx:for="{{townList}}" 
      wx:key="index"
      data-idx="{{index}}" 
      class="scroll-item {{ item.is_choice ? 'scroll-item-active': ''}}"
      bind:tap="townClick"
    >
    {{ item.name }}
    </view>
  </scroll-view>
</view>
<!-- 底部 -->
<view class="footer">
  <view class="options-container">
      <button class="cancel-btn" bind:tap="cancel">清除</button>
      <button class="sure-btn" type="primary" bind:tap="sure">确定</button>
    </view>
</view>

  1. 区域操作页面:area.js:
const app = getApp()
const {throttle} = require('../../../utils/throttle')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 省数据
    areaList: [],
    // 省当前选中索引值
    provinceCurrentIdx: 0,
    // 市数据
    cityList: [],
    // 市当前选中索引值
    cityCurrentIdx: 0,
    // 区县数据
    townList: [],
  },

  // 清除
  cancel(){
    const {areaList, cityList, townList} = this.data
    areaList.map(one => {
      one.isSelect = 0
      one.signName = ''
      if(!one.children || !one.children.length) return

      one.children.map(two => {
        two.isSelect = 0
        two.signName = ''
        if(!two.children || !two.children.length) return

        two.children.map(three => {
          three.isSelect = 0
        })
      })
    })

    cityList.map(item=> {item.isSelect = 0; item.signName = ''})
    townList.map(item=> item.isSelect = 0)

    this.setData({
      areaList,
      cityList,
      townList
    })
  },
  
  // 注册节流事件
  throttle(){},
  // 点击确定,调取节流
  sure(){
   this.throttle()
  },
  // 保存
  save(){
    const selectArea = this.data.areaList.filter(item => item.isSelect)
    if(!selectArea.length){
      return wx.showToast({
        title: '请选择地区',
        icon: 'none'
      })
    }
    // 处理参数并返回结果
    const params =this.getParams(selectArea)
    // todo 可注释请求,查看结果
    wx.request({
      url: "",
      header: {},
      data: {
      	data: params 
      },
      method: 'POST',
      success: function(res) {
      }
    })
  },

  getParams(arr){
    const params = []
    arr.map(one => {
      // 若省无子集
      if(!one.children || !one.children.length){
        return params.push({one: one.code})
      }
      
      const twoAreas = one.children.filter(item => item.isSelect)

      const isAll = twoAreas.every(two => (two.signName+'').localeCompare('全') === 0)
      if((twoAreas.length === one.children.length) && isAll){
        return params.push({one: one.code})
      }

      twoAreas.map(two => {
        // 选中的市若无子集
        if(!two.children || !two.children.length){
          return params.push({one: one.code, two: two.code})
        }

        const threeAreas = two.children.filter(item => item.isSelect)
        if(threeAreas.length === two.children.length){
          return params.push({one: one.code, two: two.code})
        }
        // 区县集
        threeAreas.map(three => {
          params.push({one: one.code, two: two.code, three: three.code})
        })
      })
      
    })
    return JSON.stringify(params)
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.throttle = throttle(this.save, 2000)
  },
  onShow() {
    this.getArea()
  },
  // 获取地区
  getArea(){
    const _this = this
    // todo 可注释请求,只做虚拟数据操作
    // _this.valuation(datalist)
    // _this.initShow(datalist)
    wx.request({
      url: "",
      header: {},
      data: {},
      method: 'POST',
      success: function(res) {
        if (res.statusCode == 200) {
          if(res.data.code == 200){
            const arr =  [...数据]
            const datalist = arr.map(item => {
              item.signName = ''
              return item
            })
            // 回显地区
            _this.valuation(datalist)
            _this.initShow(datalist)
          } else {
            wx.showToast({
              title: res.data.msg,
              icon: 'none'
            })
          }
        }
      }
    })
  },
  // 地区回显
  valuation(datalist){
    const selectList = datalist.filter(item=> item.isSelect)
    if(!selectList.length){
      return
    }
    selectList.map(one=>{
      if(!one.children || !one.children.length){
        one.signName = '全'
        return
      }
      const selectTwo = one.children.filter(two => two.isSelect)
      one.signName = selectTwo.length === one.children.length
        ? '全'
        : selectTwo.length

      one.children.map(two => {
        if(!two.children || !two.children.length){
          two.signName = '全'
          return
        }
        const selectThree = two.children.filter(three => three.isSelect)
        two.signName = selectThree.length === two.children.length
        ? '全'
        : selectThree.length
      })
    })
  },
  // 定位点击省市区并初始加载
  initShow(datalist){
    const provinceCurrentIdx = datalist.findIndex(item => item.isSelect)
    if(provinceCurrentIdx === -1){
      return this.setData({
        areaList: datalist
      })
    }
    if(!datalist[provinceCurrentIdx].children && !datalist[provinceCurrentIdx].children.length){
      return this.setData({
        areaList: datalist,
        provinceCurrentIdx
      })
    }

    const cityList = datalist[provinceCurrentIdx].children
    const cityCurrentIdx = cityList.findIndex(item => item.isSelect)
    if(cityCurrentIdx === -1){
      return this.setData({
        areaList: datalist,
        provinceCurrentIdx,
        cityList
      })
    }
    if(!cityList[cityCurrentIdx].children && !cityList[cityCurrentIdx].children.length){
      return this.setData({
        areaList: datalist,
        provinceCurrentIdx,
        cityList,
        cityCurrentIdx
      })
    }
    
    const townList = cityList[cityCurrentIdx].children
    this.setData({
      areaList: datalist,
      provinceCurrentIdx,
      cityList,
      cityCurrentIdx,
      townList
    })
  },
  // 点击省
  provinceClick(e){
    const { idx } = e.target.dataset
    const { areaList, provinceCurrentIdx } = this.data
    // 切换省,则默认选中
    if(provinceCurrentIdx == idx){
      areaList[idx].isSelect = areaList[idx].isSelect ? 0  : 1
      this.setChioce(areaList[idx])
      this.setSign(areaList[idx])
    } else {
      if(!areaList[idx].isSelect){
        areaList[idx].isSelect = 1
        this.setChioce(areaList[idx])
        this.setSign(areaList[idx])
      }
    }
    
    this.setData({
      areaList: areaList,
      provinceCurrentIdx: idx,
      cityList: [],
      cityCurrentIdx: 0,
      townList: [],
    })
    this.getChildArea(1)
    this.getChildArea(2)
  },
  
  // 点击市
  cityClick(e){
    const { idx } = e.target.dataset
    const { areaList, cityList, cityCurrentIdx } = this.data
    if(cityCurrentIdx == idx){
      cityList[idx].isSelect = cityList[idx].isSelect ? 0  : 1
      this.setChioce(cityList[idx])
      this.setParentChioce(cityList[idx])
      this.setSign(cityList[idx])
    } else {
      if(!cityList[idx].isSelect){
        cityList[idx].isSelect = 1
        this.setChioce(cityList[idx])
        this.setParentChioce(cityList[idx])
        this.setSign(cityList[idx])
      }
    }
    this.setData({
      areaList: areaList,
      cityList: cityList,
      cityCurrentIdx: idx,
      townList: [],
    })
    this.getChildArea(2)
  }, 

  // 找下一级的地区
  getChildArea(level){
    const { areaList, provinceCurrentIdx, cityList, cityCurrentIdx } = this.data
   
    switch (level){
      case 1:
        if(areaList[provinceCurrentIdx].children){
          this.setData({
            cityList: areaList[provinceCurrentIdx].children
          })
        }
      break;
      case 2:
        if(cityList[cityCurrentIdx] && cityList[cityCurrentIdx].children){
          this.setData({
            townList: cityList[cityCurrentIdx].children
          })
        }
      break;
    }
  },
  
  // 切换--当前项子项选中与取消选中
  setChioce(data){
    if(!data.children) return
    data.children.forEach(item => {
      item.isSelect = data.isSelect
      this.setChioce(item)
    })
  },

  // 设置父元素选中
  setParentChioce(){
    let { areaList, provinceCurrentIdx, cityList } = this.data
    areaList[provinceCurrentIdx].isSelect = 1

    // 设置市选中状态及角标
    const len = cityList.filter(item => item.isSelect).length
    if(!len){
      areaList[provinceCurrentIdx].isSelect = 0
    }
  },

  // 设置元素角标
  setSign(data){
    let { areaList, provinceCurrentIdx, cityList } = this.data
    // 设置当前元素角标提示
    if(data.isSelect){
      data.signName = '全'
    } else {
      data.signName = ''
    }
    // 关联其父角标提示
    if(data.parentId){
      const len = areaList[provinceCurrentIdx].children.filter(item => item.isSelect).length
      if(cityList.length === len){
        areaList[provinceCurrentIdx].signName = '全'
      } else {
        areaList[provinceCurrentIdx].signName = len
      }
    }

    // 关联其子角标提示
    if(data.children){
      data.children.forEach(item => {
        item.signName = data.isSelect ? '全' : ''
      })
    }
  },

  // 点击区县
  townClick(e){
    let { areaList, provinceCurrentIdx, cityList, cityCurrentIdx, townList } = this.data
    const { idx } = e.target.dataset
    townList[idx].isSelect = townList[idx].isSelect ? 0 : 1
    cityList[cityCurrentIdx].isSelect = 1
    areaList[provinceCurrentIdx].isSelect = 1

    // 设置市选中状态及角标
    const len = townList.filter(item => item.isSelect).length
    if(!len){
      cityList[cityCurrentIdx].isSelect = 0
    }
    if(cityList[cityCurrentIdx].children.length === len){
      cityList[cityCurrentIdx].signName = '全'
    } else {
      cityList[cityCurrentIdx].signName = len
    }

    // 设置省选中状态及角标
    const lenP = areaList[provinceCurrentIdx].children.filter(item => item.isSelect).length
    if(!lenP){
      areaList[provinceCurrentIdx].isSelect = 0
    }
    if(cityList.length === lenP){
      areaList[provinceCurrentIdx].signName = '全'
    } else {
      areaList[provinceCurrentIdx].signName = lenP
    }

    this.setData({
      areaList: areaList,
      cityList: cityList,
      townList: townList
    })
  },

})
  1. 当然还加了一个节流操作:
// throttle.js
function throttle(func, limit) {  
  let lastFunc;  
  let lastRan;  

  return function() {  
    const context = this;  
    const args = arguments;  
    if (!lastRan) {  
      func.apply(context, args);  
      lastRan = Date.now();  
    } else {  
      clearTimeout(lastFunc);  
      lastFunc = setTimeout(function() {  
        if ((Date.now() - lastRan) >= limit) {  
          func.apply(context, args);  
          lastRan = Date.now();  
        }  
      }, limit - (Date.now() - lastRan));  
    }  
  };  
}
module.exports = {
  throttle
}
  1. 您可以拿测试数据测试:
    • code:唯一值
    • isSelect:表示选中,回显时记得更改,0表示未选择,1表示选择
    • parentId:父级code
    • parentName: 父级name
    • children: 子集
{
	"data": [
		{
			"code": "110000",
			"isSelect": 0,
			"name":"北京",
			"children": [
				{
					"code": "110100",
					"isSelect": 0,
					"name": "北京",
					"parentId": "110000",
					"parentName": "北京",
					"children": [ 
						{
							"code": "110101",
							"isSelect": 0,
							"name": "东城区",
							"parentId": "110100",
							"parentName": "北京"
						},
						{
							"code": "110102",
							"isSelect": 0,
							"name": "西城区",
							"parentId": "110100",
							"parentName": "北京"
						},
						{
							"code": "110103",
							"isSelect": 0,
							"name": "朝阳区",
							"parentId": "110100",
							"parentName": "北京"
						}
					],
				}
			]
		},
		{
			"code": "130000",
			"isSelect": 0,
			"name":"河北",
			"children": [
				{
					"code": "130100",
					"isSelect": 0,
					"name": "石家庄市",
					"parentId": "130000",
					"parentName": "河北",
					"children": [ 
						{
							"code": "130101",
							"isSelect": 0,
							"name": "桥西区",
							"parentId": "130100",
							"parentName": "石家庄市"
						},
						{
							"code": "130102",
							"isSelect": 0,
							"name": "长安区",
							"parentId": "130100",
							"parentName": "石家庄市"
						},
						{
							"code": "130103",
							"isSelect": 0,
							"name": "新华区",
							"parentId": "130100",
							"parentName": "石家庄市"
						}
					],
				},
				{
					"code": "130200",
					"isSelect": 0,
					"name": "唐山市",
					"parentId": "130000",
					"parentName": "河北",
					"children": [ 
						{
							"code": "130201",
							"isSelect": 0,
							"name": "桥西区",
							"parentId": "130200",
							"parentName": "唐山市"
						},
						{
							"code": "130202",
							"isSelect": 0,
							"name": "长安区",
							"parentId": "130200",
							"parentName": "唐山市"
						},
						{
							"code": "130203",
							"isSelect": 0,
							"name": "新华区",
							"parentId": "130200",
							"parentName": "唐山市"
						}
					],
				}
			]
		},
		{
			"code": "140000",
			"isSelect": 0,
			"name":"山西",
			"children": [
				{
					"code": "140100",
					"isSelect": 0,
					"name": "太原市",
					"parentId": "140000",
					"parentName": "山西",
					"children": [ 
						{
							"code": "140101",
							"isSelect": 0,
							"name": "小店区",
							"parentId": "140100",
							"parentName": "太原市"
						},
						{
							"code": "140102",
							"isSelect": 0,
							"name": "迎泽区",
							"parentId": "140100",
							"parentName": "太原市"
						},
						{
							"code": "140103",
							"isSelect": 0,
							"name": "万柏林区",
							"parentId": "140100",
							"parentName": "太原市"
						},
						{
							"code": "140104",
							"isSelect": 0,
							"name": "尖草坪区",
							"parentId": "140100",
							"parentName": "太原市"
						},
						{
							"code": "140105",
							"isSelect": 0,
							"name": "阳曲县",
							"parentId": "140100",
							"parentName": "太原市"
						},
						{
							"code": "140106",
							"isSelect": 0,
							"name": "古交市",
							"parentId": "140100",
							"parentName": "太原市"
						}
					],
				},
				{
					"code": "140200",
					"isSelect": 0,
					"name": "大同市",
					"parentId": "140000",
					"parentName": "山西",
					"children": [ 
						{
							"code": "140201",
							"isSelect": 0,
							"name": "新荣区",
							"parentId": "140200",
							"parentName": "大同市"
						},
						{
							"code": "140202",
							"isSelect": 0,
							"name": "平城区",
							"parentId": "140200",
							"parentName": "大同市"
						},
						{
							"code": "140203",
							"isSelect": 0,
							"name": "云州区",
							"parentId": "140200",
							"parentName": "大同市"
						},
					]
				}
			]
		}
	]
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

神经网络鸢尾花分类

⚠申明&#xff1a; 未经许可&#xff0c;禁止以任何形式转载&#xff0c;若要引用&#xff0c;请标注链接地址。 全文共计3077字&#xff0c;阅读大概需要3分钟 &#x1f308;更多学习内容&#xff0c; 欢迎&#x1f44f;关注&#x1f440;【文末】我的个人微信公众号&#xf…

【超简单实用】Zotero 7 内置pdf背景颜色更改插推荐以及安装

Zotero beta7 pdf 内置颜色更换 zetore 6 很多成熟的插件在 zetore 7都不能用了。版本回退看起来内置文章的注释会被消除&#xff0c;所以又不想退回去。前几个月在找beta 7 的pdf 护眼色的插件一直没有&#xff0c;今天终于发现了&#xff01;&#xff01;&#xff01;&#…

《架构风清扬-Java面试系列第26讲》聊聊的LinkedBlockingQueue的特点及使用场景

LinkedBlockingQueue也是BlockingQueue接口的一个实现类之一 这个属于基础性问题&#xff0c;老规矩&#xff0c;我们将从使用场景和代码示例来进行讲解 来&#xff0c;思考片刻&#xff0c;给出你的答案 1&#xff0c;使用场景 实现&#xff1a;基于链表实现的阻塞队列&#…

Django5框架之多重继承

在Django模型中也支持使用多重继承&#xff0c;这点与Python语法中的继承是一致的。Django模型多重继承就是同时继承多个父类模型&#xff0c;父类中第一个出现的基类&#xff08;如&#xff1a;Meta类&#xff09;是默认被使用的。如果存在多个父类包含Meta类的情况&#xff0…

Redis - Set 集合

前言 集合类型可保存多个字符串类型的元素&#xff0c;但和列表类型不同的是&#xff0c;集合中的元素之间是⽆序的&#xff08;顺序不重要&#xff0c;变换一下集合中的数据顺序&#xff0c;集合不会发生改变&#xff09; 的并且元素不允许重复 ⼀个集合中最多可以存储 2^32-1…

echarts 堆叠柱状图 顶部添加合计

堆叠有3个&#xff0c;后面加了一个对象显示顶部的数据&#xff0c; 其实主要的代码还是在series 的第四项&#xff0c;需要注意的是 series的第四项中的data需要为 data: [0, 0, 0] 顶部的统计才能显示出来 增加的代码如下 {name: 综合,type: bar,stack: total,label: {sh…

基于springboot+vue+Mysql的篮球竞赛预约平台

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

STM32 HAL库F103系列之DAC实验(二)

DAC输出正弦波实验 实验简要 1&#xff0c;功能描述 通过DAC1通道1(PA4)输出正弦波&#xff0c;然后通过DS100示波器查看波形 2&#xff0c;使用定时器7 TRGO事件触发转换 TEN1位置1、TSEL1[2:0]010 3&#xff0c;关闭输出缓冲 BOFF1位置1 4&#xff0c;使用DMA模式 DMAE…

无人机+遥控器:工业级手持地面站(支持安卓系统)功能技术详解

手持地面站是一种专为无人机设计的便携式设备&#xff0c;用于实现飞行控制、任务规划、数据链路通信等功能。由于支持安卓系统&#xff0c;这种地面站设备在软件生态上具有极大的灵活性&#xff0c;能够兼容并运行众多基于安卓平台的无人机控制应用程序。 在硬件方面&#xff…

vue中的mixin(局部混入、全局混入)

一、mixin是什么 Mixin是面向对象程序设计语言中的类&#xff0c;提供了方法的实现。其他类可以访问mixin类的方法而不必成为其子类&#xff1b;Mixin类通常作为功能模块使用&#xff0c;在需要该功能时“混入”&#xff0c;有利于代码复用又避免了多继承的复杂 Vue中的mixin…

如何在 Ubuntu 14.04 上配置 StatsD 以收集 Graphite 的任意统计数据

介绍 Graphite 是一个图形库&#xff0c;允许您以灵活和强大的方式可视化不同类型的数据。它通过其他统计收集应用程序发送给它的数据进行图形化。 在之前的指南中&#xff0c;我们讨论了如何安装和配置 Graphite 本身&#xff0c;以及如何安装和配置 collectd 以编译系统和服…

python实现视频剪辑

即刻关注&#xff0c;获取更多 实现目标 因上传某盘等文件大小限制&#xff0c;无法上传视频&#xff0c;故需要对视频进行压缩 参考资料 ffmpeg文档参考: https://ffmpeg.org/ffmpeg.html 依赖条件 已经安装好python3.11 &#xff0c;原则上更高版本也可以 安装 ffmpeg 依赖 p…

21.3K star!推荐一款可视化自动化测试/爬虫/数据采集神器!功能免费且强大!

大家好&#xff0c;我是狂师&#xff01; 在大数据时代&#xff0c;信息的获取与分析变得尤为重要。对于开发者、数据分析师乃至非技术人员来说&#xff0c;能够高效地采集网络数据并进行分析是一个强有力的工具。今天&#xff0c;我要向大家推荐的是一款功能强大、操作简单且…

线上申报开放时间!2024年阜阳市大数据企业培育认定申报条件、流程和材料

2024年阜阳市大数据企业培育认定申报条件、流程和材料&#xff0c;线上申报开放时间整理如下 一、2024年阜阳市大数据企业培育认定申报要求 &#xff08;一&#xff09;经营范围 申请认定的企业应当从事以下生产经营活动&#xff1a; 1.从事数据收集、存储、使用、加工、传输、…

HotSpot JVM 中的应用程序/动态类数据共享

0.前言 本文的目的是详细讨论 HotSpot JVM 自 JDK 1.5 以来提供的一项功能&#xff0c;该功能可以减少启动时间&#xff0c;但如果在多个 JVM 之间共享相同的类数据共享 (CDS) 存档&#xff0c;则还可以减少内存占用。 1.类数据共享 (CDS) CDS 的想法是使用特定格式将预处理…

多分辨率展开

1.,首先这个图居然给出了基和对偶基相等这个概念。我需要说明一下这个概念的来源。 1.1.,对偶基一开始是来自高等代数的线性空间&#xff0c;然后是泛函分析中的赋范线性空间的共轭空间。至于基的概念&#xff0c;赋范线性空间并没有&#xff0c;可能是因为正交需要内积来定义&…

Python基础知识(二)

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》 《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 1.输入和输出函数1.1输出函数1.2输入函数 2.常见运算符2.1赋值运算符2.2比较运算符2.3逻辑运算符2.4and逻辑与2.5or逻辑或2.6not逻…

超纯水抛光树脂MB-115的使用及装填注意事项

用前须知 01.抛光树脂是由高度纯化、转型的H型阳树脂和OH型阴树脂混合而成&#xff0c;如果装填和操作得当&#xff0c;在最初的周期中即可制备出电阻率大于18.0MΩcm和TOC小于10ppb的超纯水&#xff0c;无需化学再生。 02.树脂开封后长时间暴露在空气中会吸收二氧化碳&#…

k8s日常动手实践 ~~ pod访问 pod请求 k8s api ~ 含新版带curl的busybox镜像

前言&#xff1a; 可以使用 Kubernetes API 获取集群信息。使用 Service Account&#xff08;SA&#xff09;进行身份验证&#xff0c;可以以安全的方式访问 Kubernetes API&#xff0c;而无需在 Pod 中使用明文凭据。 以下是一个使用 Service Account 访问 Kubernetes API 获…

HAWE比例多路阀驱动放大器

HAWE比例多路阀驱动放大器是一种在工程机械和工业自动化领域中广泛使用的高精度控制元件&#xff0c;它通过电气信号来控制流体的流动方向、流量及压力等参数。多路比例阀品牌技术的核心在于高性能、低成本、智能化控制、高频响、安全性以及技术创新等方面。这些技术的发展不仅…