layui--记录

layui

行点击事件:点了没反应?

 //监听行工具事件
    layui.table.on('tool(demo)', function (obj) {
      //alert(222) 
    });

原因:检查下id与lay-filter是否一致;id与lay-filter必须一致。

 <table id="demo" lay-filter="demo"></table>

【layui】使用table编辑功能,滚动条位置固定不变,无感刷新

使用table 单元格编辑功能时,每次里焦触发成功后手动调用了table.reload函数,导致滚动条初始化到顶部。

  1. 定义变量
   // 重载表格---保持滚动条位置
    let tableScroll = {
      scrollTob: 0,
      scrollLeft: 0,
    }; 
  1. 在table 的done函数中进行表格滚动
	done: function (res, curr, count) { 
	// 重载表格---保持滚动条位置
	    $('.layui-table-body').scrollTop(tableScroll.scrollTob);
	    $('.layui-table-body').scrollLeft(tableScroll.scrollLeft);
	    tableScroll.scrollTob = 0;
	    tableScroll.scrollLeft = 0; 
	},
  1. 在表格编辑后,表格刷新前先记录滚动条位置
	// 重载表格---保持滚动条位置
	var scrollTop = ($('.layui-table-body') && $('.layui-table-body').length > 1) ? $('.layui-table-body')[0].scrollTop : $('.layui-table-body').scrollTop;
	var scrollLeft = ($('.layui-table-body') && $('.layui-table-body').length > 1) ? $('.layui-table-body')[0].scrollLeft : $('.layui-table-body').scrollLeft;
	tableScroll.scrollTob = scrollTop == 0 ? tableScroll.scrollTob : scrollTop;
	tableScroll.scrollLeft = scrollLeft;
	
	layui.table.reload('test', { data: productList });

    // var tipsValComp;
    // // 1.找到触发的事件对象(绑定全局)  2.事件处理程序
    // $('body').on('mouseover', '.hoverPerDay', function () {
    //   var ovText = $(this).text();
    //   // var html = "<p style='word-wrap:break-word;width: 150px;'>" + ovText + "</p>";
    //   var html = `
    //   <div class="hoverDIV_PerDay" style="">
    //       <div class="compName" style="">公司1公司1公司1公司1公司1公司1公司1公司1</div>
    //       <div class="item">
    //         <div>库存:</div>
    //         <div><span class="sub_cont">600 </span> T</div>
    //       </div>
    //       <div class="item">
    //         <div>时间:</div>
    //         <div><span class="sub_cont">2023-08-17</span></div>
    //       </div>
    //       <div class="item">
    //         <div>状态:</div>
    //         <div><span class="sub_cont">正常 </span></div>
    //       </div>
    //     </div>`;
    //   //  layer.tips('默认向右', this);
    //   tipsValComp = layer.tips(html, this, { tips: [3, '#fff', 'box-shadow: 0px 0px 6px 1px rgba(0,0,0,0.1);'], time: 0 });
    // });
    // //鼠标移出
    // $('body').on('mouseout', '.hoverPerDay', function () {
    //   layer.close(tipsValComp);
    // });


    // var tipsValPerDay;
    // // 1.找到触发的事件对象(绑定全局)  2.事件处理程序
    // $('body').on('mouseover', '.hoverPerComp', function () {
    //   var ovText = $(this).text();
    //   // var html = "<p style='word-wrap:break-word;width: 150px;'>" + ovText + "</p>";
    //   var html = `
    //   <div class="hoverDIV_PerComp" style="">
    //       <div class="compName" style="">公司1公司1公司1公司1公司1公司1公司1公司1</div>
    //       <div class="item">
    //         <div>库存容量:</div>
    //         <div><span class="sub_cont">600 </span> T</div>
    //       </div>
    //       <div class="item">
    //         <div>库存上限:</div>
    //         <div><span class="sub_cont">600 </span> T</div>
    //       </div>
    //       <div class="item">
    //         <div>库存下限:</div>
    //         <div><span class="sub_cont">600 </span> T</div>
    //       </div>
    //       <div class="item">
    //         <div>平均每日消耗(估):</div>
    //         <div><span class="sub_cont">600 </span> T</div>
    //       </div>
    //     </div>`;
    //   //  layer.tips('默认向右', this);
    //   tipsValPerDay = layer.tips(html, this, { tips: [3, '#fff', 'box-shadow: 0px 0px 6px 1px rgba(0,0,0,0.1);'], time: 0 });
    // });
    // //鼠标移出
    // $('body').on('mouseout', '.hoverPerComp', function () {
    //   layer.close(tipsValPerDay);
    // });



问题:在时间筛选的时候遇到了难题,表格重载后,表头没有按照重载方法传入的cols参数展示,而是还是展示原先的表头

原因:经过一番排查后发现原因,layui中 table.reload(ID, options) 在接收options中的参数中,如果参数是数组形式,那并不会完全替换历史参数,而是覆盖到对应长度。如果之前传入参数是[1,2,3,4],重载传入参数是[a,b.c],那后台获取到的参数是[a,b,c,4],这就是为什么我在筛选日期为2月后,表头还是展示到30天(新传入的表头29项,和之前的30项合并后,任然是30项)这个问题是真的坑啊

解决:这个问题解决起来并不复杂,而是复杂在了发现问题的原因,实际解决只需要一行关键代码就好,在table的render方法的回调函数中,将cols字段初始化就可以了: this.cols = [ ];

 done:function (res,curr,count) {
        this.cols = []; //(关键代码)将cols初始化,否则表格重载时无法正确重新渲染表头
    }
 table.reload('test', {
            cols: [cols],
            where: {
              "data": encodeURI(JSON.stringify(data.field).replaceAll("\"", "\\\""))
            },
            page: {
              curr: 1
            }
          });
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>客户库存</title>
  <meta name="renderer" content="webkit">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport"
    content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
  <link rel="stylesheet" href="../../../layuiadmin/layui/css/layui.css" media="all">
  <link rel="stylesheet" href="../../../layuiadmin/style/admin.css" media="all">
  <link rel="stylesheet" href="../../open.css" media="all">
  <style>
    .layui-table td,
    .layui-table th {
      font-size: 12px !important;
    }

    .layui-table-cell {
      height: 28px;
      line-height: 28px;
      padding: 0px !important;
    }

    .layui-table-view .layui-table td,
    .layui-table-view .layui-table th {
      padding: 0 !important;
    }

    .layui-layer-content {
      width: fit-content !important;
    }
  </style>
</head>

<body>

  <div class="layui-fluid">
    <div class="layui-row layui-col-space15">
      <div class="layui-col-md12">
        <div class="layui-card" style="">
          <div class="layui-card-body">
            <form class="layui-form layui-form-pane" action="">
              <div class="layui-form-item">
                <div class="layui-inline">
                  <label class="layui-form-label">客户</label>
                  <div class="layui-input-inline">
                    <input type="text" id="supplyName" name="supplyName" autocomplete="off" class="layui-input"
                      placeholder="请输入客户">
                    <input type="text" id="supply" name="supply" style="display:none;">
                  </div>
                </div>
                <div class="layui-inline">
                  <label class="layui-form-label">月份</label>
                  <div class="layui-input-inline">
                    <input type="text" id="currMonth" name="currMonth" autocomplete="off" class="layui-input"
                      placeholder="选择月份">
                  </div>
                </div>
                <div class="layui-inline">
                  <button type="button" class="layui-btn layui-btn layui-btn-normal" lay-submit lay-filter="search">
                    <i class="layui-icon">&#xe615;</i>搜索
                  </button>
                  <button type="reset" class="layui-btn layui-btn layui-btn-danger">
                    <i class="layui-icon">&#xe669;</i>重置
                  </button>
                </div>
                <!-- 图例 -->
                <div class="lenged_box">
                  <div class="lenged_item">
                    <div class="lenged_up"></div>
                    <div>超过上限</div>
                  </div>
                  <div class="lenged_item">
                    <div class="lenged_down"></div>
                    <div>超过下限</div>
                  </div>
                  <div class="lenged_item">
                    <div class="lenged_today"></div>
                    <div>今日时间</div>
                  </div>
                  <div class="lenged_item">
                    <div class="lenged_prev"></div>
                    <div>预测时间</div>
                  </div>
                </div>
              </div>
            </form>
            <div class="layui-row" style="">
              <table class="layui-hide" id="test" lay-filter="test"></table>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>

  <script src="../../../layuiadmin/layui/layui.all.js"></script>
  <script src="../../utils.js"></script>
  <script type="text/javascript">
    // 设置卡片高度
    $('.layui-card-body').css('height', $(window).height() - 32);
    //执行一个laydate实例
    layui.laydate.render({
      elem: '#currMonth',
      type: 'month',
    });
    // 获取表头 
    // var d = {
    //   fn: "customerAction",
    //   md: "selectCustomerInvTitleList"
    // }
    // httpRequestPost("/MngServlet", d, function (res) {
    //   console.log(res);
    //   if (res.rt == 0) {
    //     var cols = res.data;
    //     // 获取data
    //     layui.table.render({
    //       id: 'test',
    //       elem: '#test',
    //       title: '入库计划单',
    //       height: 'full-80',
    //       url: contextPath + '/MngServlet',
    //       method: 'post',
    //       where: {
    //         fn: "customerAction",
    //         md: "selectCustomerInvList"
    //       },
    //       contentType: 'application/json',
    //       parseData: function (res) { //res 即为原始返回的数据
    //         return {
    //           "code": res.rt, //解析接口状态
    //           "data": res.data, //解析数据列表
    //           "count": res.count,
    //           "msg": res.msg
    //         };
    //       },
    //       cols: cols,
    //       done: function (res, curr, count, origin) {
    //         // 获取所有表头
    //         var totalArr = $('.layui-table-header th');
    //         var today = 999;//今日日期
    //         totalArr.each(function (index, item) {
    //           var currTh = $(this).attr('data-field').split('num')[1];//获取表头的data-field:num28
    //           const date = new Date().getDate();//
    //           if (Number(currTh) === Number(date)) {
    //             // 相等就是今日
    //             today = index;//赋值今日
    //             $(this).css({ 'background': '#1e9fff', 'color': '#fff', })
    //           } else if (index > today) {
    //             // 大于今日就是未来
    //             $(this).css({ 'background': '#daf6e1', 'color': '#333333', 'border-bottom': '2px solid #00BF39', 'box-sizing': 'border-box' })
    //           }
    //         });
    //       }

    //     });

    //   }
    // })
    // // td上下限颜色
    // function tdColor (title, up, lower, num, d) {
    //   if (title >= up) {
    //     return `<div class="hoverPerDay" id="tdPerDay${d.customerId}${num}" οnmοuseοver="showPerDay(${title}, ${up}, ${lower},${num},${d.customerId},'${d.customerName}');" οnmοuseleave="closeTipsPerDay();" style="background:#ffcdce;color:#ff3839"> ${title}</div> `
    //   }
    //   if (title <= lower) {
    //     return `<div class="hoverPerDay" id="tdPerDay${d.customerId}${num}" οnmοuseοver="showPerDay(${title},${up}, ${lower},${num},${d.customerId},'${d.customerName}');" οnmοuseleave="closeTipsPerDay();" style="background:#ffecc6;color:#ff9202"> ${title}</div> `
    //   }
    //   return `<div class="hoverPerDay" id="tdPerDay${d.customerId}${num}" οnmοuseοver="showPerDay(${title}, ${up}, ${lower},${num},${d.customerId},'${d.customerName}');" οnmοuseleave="closeTipsPerDay();"> ${title}</div> `
    // }
    // // td公司
    // function tdComp (d) {
    //   return `<div class="hoverPerComp" id="tdPerDay${d.customerId}"   οnmοuseοver="showComp('${d.customerName}',${d.customerId},${d.invLimit}, ${d.invUp}, ${d.invLow},${d.invDaily});" οnmοuseleave="closeTipsComp();"><div class="">${d.customerName}</div><img src="../../img/icon/charts.png" alt=""></div>`
    // }


    function checkDate (params) {
      if (params < 10) {
        params = "0" + params;
      } else {
        params = params + "";
      }
      return params
    }

    let daysList = [];
    let cols = [];
    let queryYear = new Date().getFullYear();   //默认获取当前年;//需要查询的年份
    let queryMonth = checkDate(new Date().getMonth() + 1);  //默认获取当前月;//需要查询的月份

    getCurrMonthDays(queryYear, queryMonth);
    //自动显示本月日期
    function getCurrMonthDays (year, month) {
      daysList = [];
      cols = [];

      //获取当前月有多少天
      let day = new Date(year, month, 0).getDate();

      let current_month_days = [];
      for (let i = 0; i < day; i++) {
        let d = i + 1;
        if (d < 10) {
          current_month_days[i] = parseInt("0" + d);
        } else {
          current_month_days[i] = d;
        }
      }
      // console.log("月份测试", current_month_days);
      daysList = current_month_days;
      for (let a = 0; a < daysList.length; a++) {
        cols.push({
          title: `${daysList[a]} `,
          width: "50",
          align: "center",
          field: `num${daysList[a]}`,
          // templet: `<div>{{tdColor(d.num${daysList[a]}, d.invUp, d.invLow,${daysList[a]}, d)}</div> `,
          templet: function (d) {
            var s = 'num' + daysList[a];
            var title = d[s];//当前单元格的数值
            if (d.title >= d.invUp) {
              return `<div class="hoverPerDay" id="tdPerDay${d.customerId}${daysList[a]}" οnmοuseοver="showPerDay(${title}, ${d.invUp}, ${d.invLow},${daysList[a]},${d.customerId},'${d.customerName}');" οnmοuseleave="closeTipsPerDay();" style="background:#ffcdce;color:#ff3839"> ${title}</div> `
            }
            if (d.title <= d.invLow) {
              return `<div class="hoverPerDay" id="tdPerDay${d.customerId}${daysList[a]}" οnmοuseοver="showPerDay(${title},${d.invUp}, ${d.invLow},${daysList[a]},${d.customerId},'${d.customerName}');" οnmοuseleave="closeTipsPerDay();" style="background:#ffecc6;color:#ff9202"> ${title}</div> `
            }
            return `<div class="hoverPerDay" id="tdPerDay${d.customerId}${daysList[a]}" οnmοuseοver="showPerDay(${title}, ${d.invUp}, ${d.invLow},${daysList[a]},${d.customerId},'${d.customerName}');" οnmοuseleave="closeTipsPerDay();"> ${title}</div> `

          },
        })
      }
      cols.unshift(
        { title: "序号", type: "numbers", width: "40" },
        {
          field: "customerName", title: '客户名称', width: "90", event: "openCompCharts",
          templet: "<div>{{tdComp(d)}}</div>",
          templet: function (d) {
            return `<div class="hoverPerComp" id="tdPerDay${d.customerId}" οnmοuseοver="showComp('${d.customerName}',${d.customerId},${d.invLimit}, ${d.invUp}, ${d.invLow},${d.invDaily});"  οnmοuseleave="closeTipsComp();">
              <div class="">${d.customerName}</div>
              <img src="../../img/icon/charts.png" alt="">
            </div>`
          }
        }
      );
    };


    // hoverPerDay 
    var tipsPerDay;
    function showPerDay (title, up, lower, num, customerId, customerName) {
      // console.log(title, up, lower, num, customerId, customerName);
      // console.log('显示的信息');
      var currYM = new Date().toLocaleDateString().split('/')[0] + '-' + new Date().toLocaleDateString().split('/')[1] + '-';//'2023/8/2'
      var html = `
      <div class="hoverDIV_PerDay">
          <div class="compName">${customerName}</div>
          <div class="item">
            <div>库存:</div>
            <div><span class="sub_cont">${title}</span> T</div>
          </div>
          <div class="item">
            <div>时间:</div>
            <div><span class="sub_cont">${currYM}${num}</span></div>
          </div>
          <div class="item">
            <div>状态:</div>
            <div><span class="sub_cont" style="${title >= up ? 'color:#ff3839' : (title <= lower ? 'color:#ff9202' : '')}">${title >= up ? '超过上限' : (title <= lower ? '小于下限' : '正常')}</span></div>
          </div>
        </div> `;
      // tipsPerDay = layer.tips('默认向右', this);
      var node = `#tdPerDay${customerId}${num} `;
      // console.log($(`#tdPerDay${ title }${ num } `));
      tipsPerDay = layer.tips(html, node, { tips: [3, '#fff', 'width: fit-content;', 'box-shadow: 0px 0px 6px 1px rgba(0,0,0,0.1);'], time: 0 });//
    }
    function closeTipsPerDay () {//关闭显示的信息
      // console.log('关闭显示的信息');
      layer.close(tipsPerDay);
    }
    // hoverPerComp
    var tipsPerComp;
    function showComp (customerName, customerId, invLimit, invUp, invLow, invDaily) {
      // console.log(customerName, customerId, invLimit, invUp, invLow, invDaily);
      // console.log('显示的信息');
      var currYM = new Date().toLocaleDateString().split('/')[0] + '-' + new Date().toLocaleDateString().split('/')[1] + '-';//'2023/8/2'
      var html = `
      <div class="hoverDIV_PerDay">
          <div class="compName">${customerName}</div>
          <div class="item">
            <div>库存容量:</div>
            <div><span class="sub_cont">${invLimit}</span> T</div>
          </div>
          <div class="item">
            <div>库存上限:</div>
            <div><span class="sub_cont">${invUp}</span> T</div>
          </div>
          <div class="item">
            <div>库存下限:</div>
            <div><span class="sub_cont">${invLow}</span> T</div>
          </div>
          <div class="item">
            <div>每日平均消耗(估):</div>
            <div><span class="sub_cont">${invDaily}</span> T</div>
          </div>
        </div> `;
      // tipsPerComp = layer.tips('默认向右', this);
      var node = `#tdPerDay${customerId} `;
      // console.log($(`#tdPerDay${ title }${ num }`));
      tipsPerComp = layer.tips(html, node, { tips: [3, '#fff', 'width: fit-content;', 'box-shadow: 0px 0px 6px 1px rgba(0,0,0,0.1);'], time: 0 });//
    }
    function closeTipsComp () {//关闭显示的信息
      // console.log('关闭显示的信息');
      layer.close(tipsPerComp);
    }


    layui.use(
      ['table', 'form'],
      function () {
        var table = layui.table;
        var form = layui.form;
        form.on('submit(search)', function (data) {

          // console.log($('#currMonth').val());//2023-02 
          // 重新获取表头
          queryYear = $('#currMonth').val().split('-')[0];   //默认获取当前年;//需要查询的年份
          queryMonth = $('#currMonth').val().split('-')[1];  //默认获取当前月;//需要查询的月份
          getCurrMonthDays(queryYear, queryMonth);
          // console.log(cols, daysList);
          table.reload('test', {
            cols: [cols],
            where: {
              "data": encodeURI(JSON.stringify(data.field).replaceAll("\"", "\\\""))
            },
            page: {
              curr: 1
            }
          });
          return false;
        });


        // 获取data
        layui.table.render({
          id: 'test',
          elem: '#test',
          title: '入库计划单',
          height: 'full-80',
          url: contextPath + '/MngServlet',
          method: 'post',
          where: {
            fn: "customerAction",
            md: "selectCustomerInvList"
          },
          contentType: 'application/json',
          parseData: function (res) { //res 即为原始返回的数据
            return {
              "code": res.rt, //解析接口状态
              "data": res.data, //解析数据列表
              "count": res.count,
              "msg": res.msg
            };
          },
          cols: [cols],
          done: function (res, curr, count, origin) {
            this.cols = []; //(关键代码)将cols初始化,否则表格重载时无法正确重新渲染表头


            // 获取所有表头
            var totalArr = $('.layui-table-header th');
            var today = 999;//今日日期

            totalArr.each(function (index, item) {
              // console.log(queryYear, queryMonth);//2023 '08'
              if ((index === 0) || (index === 1)) {
                return
              }
              var currTh = $(this).attr('data-field').split('num')[1];//获取表头的data-field:num28
              const date = new Date().getDate();//--今日日期:2
              // var fullDate = new Date().toLocaleDateString();//'2023/8/2'   
              var currYY = new Date().getFullYear();   //默认获取当前年;//需要查询的年份
              var currMM = checkDate(new Date().getMonth() + 1);  //默认获取当前月;//需要查询的月份

              // 1:比较年

              if (Number(queryYear) > Number(currYY)) {
                //如果 未来--全部用绿色
                $(this).css({ 'background': '#daf6e1', 'color': '#333333', 'border-bottom': '2px solid #00BF39', 'box-sizing': 'border-box' })
              } else if (Number(queryYear) < Number(currYY)) {
                //如果 过去--全部用默认
                $(this).css({ 'background': '#f2f2f2', 'color': '#666', })
              } else if (Number(queryYear) == Number(currYY)) {
                // 2:比较月

                if (Number(queryMonth) > Number(currMM)) {
                  //如果 未来--全部用绿色
                  $(this).css({ 'background': '#daf6e1', 'color': '#333333', 'border-bottom': '2px solid #00BF39', 'box-sizing': 'border-box' })
                } else if (Number(queryMonth) < Number(currMM)) {
                  //如果 过去--全部用默认
                  $(this).css({ 'background': '#f2f2f2', 'color': '#666', })
                } else if (Number(queryMonth) == Number(currMM)) {
                  // 3:比较日

                  if (Number(currTh) === Number(date)) {
                    // 相等就是今日
                    today = index;//赋值今日
                    $(this).css({ 'background': '#1e9fff', 'color': '#fff', })
                  } else if (index > today) {
                    // 大于今日就是未来
                    $(this).css({ 'background': '#daf6e1', 'color': '#333333', 'border-bottom': '2px solid #00BF39', 'box-sizing': 'border-box' })
                  } else {
                    $(this).css({ 'background': '#f2f2f2', 'color': '#666', })
                  }
                }
              }



            });
          }

        });







        //监听单元格事件
        table.on('tool(test)', function (obj) {
          var data = obj.data;
          // console.log(data);
          if (obj.event === 'openCompCharts') {
            layer.open({
              title: data.customerName,
              type: 2,
              area: ['60%', '80%'],
              content: './customerCharts.html?customerId=' + data.customerId
            });
          }
        });


        $(document).on("click", "div[lay-id='test'] .layui-table-body table.layui-table tbody tr", function () {
          //获取行下标
          var index = parseInt($(this).parents('tr').prevObject.context.dataset.index);
          //获取到表对象
          $(".layui-table-body tr ").attr({ "style": "background:#FFFFFF" });//其他tr恢复原样
          $(".layui-table-body tr[data-index=" + index + "]").attr({ "style": "background:#dcdcdc" });//改变当前tr颜色	
        })

        //点击复选框取消冒泡(这里默认复选框在table第一列)(只要点在复选框外就会触发行选,取消其他的复选框)
        $(document).on("click", "tr td:first-child", function (e) {
          e.stopPropagation();
        });


      });

  </script>
</body>

</html>

日期控件:限制可选日期(月份):最多到下月

在这里插入图片描述

    // 默认当月
    $("#currMonth").val(layui.util.toDateString(get_today(), 'yyyy-MM'));

    // 设置最大可选月份
    function maxMonth () {
      var year = new Date().getFullYear();   //默认获取当前年;//需要查询的年份
      var month = new Date().getMonth() + 1;   //默认获取当前年;//需要查询的年份
      //获取当前月有多少天
      var day = new Date(year, month, 0).getDate();
      if (month == 12) {
        year = year + 1;
        month = 0;
      }
      // console.log(year + '-' + checkDate(month + 1) + '-' + day);
      return year + '-' + checkDate(month + 1) + '-' + day;
    }

    //执行一个laydate实例
    layui.laydate.render({
      elem: '#currMonth',
      type: 'month',
      max: maxMonth(),
      showBottom: false,
      change: function (value) {
        timeNoConfirm('currMonth', value);
        //TODO
      }
    });

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

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

相关文章

自助式数据分析平台:JVS智能BI功能介绍(一)数据源

一、数据源配置 数据源概述 数据源是JVS-智能BI支持多种数据形态的基础&#xff0c;核心的目标是将不同的数据来源通过统一接入&#xff0c;实现将不同的数据实现统一的数据加工、数据应用。目前JVS-智能BI主要支持3种形态的数据&#xff1a;数据库、API、离线文件。 ​界面介…

WebGL Varing变量的作用和内插过程,及执行Varing时涉及的图形装配、光栅化、颜色插值、片元着色器执行机制等详解

目录 前言 在 WebGL 或 OpenGL 中&#xff0c;“varying” 是一种用于在顶点着色器和片元着色器之间传递数据的特殊类型的变量。它允许在顶点着色器对数据进行处理后&#xff0c;在片元着色器中使用该处理后的数据进行进一步计算。 彩色三个点 ​编辑 彩色三个点示例代码…

在GPU服务器(Linux)上安装Anaconda和PyTorch环境

安装Anaconda3 Anaconda官网&#xff1a;https://repo.anaconda.com/archive/ 根据自己需要&#xff0c;复制安装包名字&#xff0c;以Anaconda3-2023.07-2-Linux-x86_64.sh为例 命名规则&#xff1a;Anaconda3-<版本号>-Linux-x86_64.sh 在终端输入命令&#xff0c;下…

Flink SQL你用了吗?

分析&回答 Flink 1.1.0&#xff1a;第一次引入 SQL 模块&#xff0c;并且提供 TableAPI&#xff0c;当然&#xff0c;这时候的功能还非常有限。Flink 1.3.0&#xff1a;在 Streaming SQL 上支持了 Retractions&#xff0c;显著提高了 Streaming SQL 的易用性&#xff0c;使…

基于相空间重构的混沌背景下微弱信号检测算法matlab仿真,对比SVM,PSO-SVM以及GA-PSO-SVM

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 SVM 4.2 PSO-SVM 4.3 GA-PSO-SVM 5.算法完整程序工程 1.算法运行效果图预览 SVM: PSO-SVM: GA-PSO-SVM: 以上仿真图参考文献《基于相空间重构的混沌背景下微弱信号检测方法研究》 2.…

如何成为一名技术社区KOL?

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 产品统筹 / bobo 联合制作 / RTE开发者社区 录音间 / 声湃轩北京站 在本期节目中&#xff0c;我们请到「开源社」联合创始人&#xff0c;开发者关系领域的畅销书作者林旅强&…

撤回IPO背后:透视树根互联“以退为进”的成长逻辑

如果说&#xff0c;互联网的上半场属于消费互联网&#xff0c;那么下半场的主角将会是工业互联网&#xff0c;它也被称为“第四次工业革命的重要基石”。 工业互联网属于典型的“长坡厚雪”型赛道&#xff0c;前期需要在技术、资金、人才等方面进行大量投入&#xff0c;而等待…

环境安装:rpm安装jdk上线项目

Tomcat安装 解析域名 购买域名并配置 安装Docker yum 卸载以前装过的docker

java.lang.classnotfoundexception: com.android.tools.lint.client.api.vendor

Unity Android studio打包报错修复 解决方式 java.lang.classnotfoundexception: com.android.tools.lint.client.api.vendor 解决方式 在 launcherTemplate 目录下找到 Android/lintOptions 选项 加上 checkReleaseBuilds false lintOptions { abortOnError false checkRelea…

【位运算】位运算常用技巧总结

目录 前言 一.常见的小问题 1.给定一个数n,确定它的二进制表示中的第x位是0还是1 2.给定一个数n&#xff0c;将它的二进制表示中的第x位修改成1 3.给定一个数n&#xff0c;将它的二进制表示中的第x位修改成0 4.给定一个数n&#xff0c;提取它的二进制表示中最右侧的1&…

【前端自动化部署】,Devops,CI/CD

DevOps 提到Jenkins&#xff0c;想到的第一个概念就是 CI/CD 在这之前应该再了解一个概念。 DevOps Development 和 Operations 的组合&#xff0c;是一种方法论&#xff0c;并不特指某种技术或者工具。DevOps 是一种重视 Dev 开发人员和 Ops 运维人员之间沟通、协作的流程。…

2023-09-01 LeetCode每日一题(买钢笔和铅笔的方案数)

2023-09-01每日一题 一、题目编号 2240. 买钢笔和铅笔的方案数二、题目链接 点击跳转到题目位置 三、题目描述 给你一个整数 total &#xff0c;表示你拥有的总钱数。同时给你两个整数 cost1 和 cost2 &#xff0c;分别表示一支钢笔和一支铅笔的价格。你可以花费你部分或者…

小米面试题——不用加减乘除计算两数之和

前言 &#xff08;1&#xff09;刷B站看到一个面试题&#xff0c;不用加减乘除计算两数之和。 &#xff08;2&#xff09;当时我看到这个题目&#xff0c;第一反应就是感觉这是一个数电题目。不过需要采用C语言的方式编写出来。 &#xff08;3&#xff09;不过看到大佬的代码之…

3、QT 的基础控件的使用

一、qFileDialog 文件窗体 Header: #include <QFileDialog> qmake: QT widgets Inherits: QDialog静态函数接口&#xff1a; void Widget::on_pushButton_clicked() {//获取单个文件的路径名QString filename QFileDialog :: getOpenFileName(this, tr("Open Fi…

stencilJs学习之构建 Drawer 组件

前言 在之前的学习中&#xff0c;我们已经掌握了 stencilJs 中的一些核心概念和基础知识&#xff0c;如装饰器 Prop、State、Event、Listen、Method、Component 以及生命周期方法。这些知识是构建复杂组件和应用的基础&#xff0c;而抽屉组件是一个很好的示例&#xff0c;能够…

Ceph源码解析:PG peering

集群中的设备异常(异常OSD的添加删除操作)&#xff0c;会导致PG的各个副本间出现数据的不一致现象&#xff0c;这时就需要进行数据的恢复&#xff0c;让所有的副本都达到一致的状态。 一、OSD的故障和处理办法&#xff1a; 1. OSD的故障种类&#xff1a; 故障A&#xff1a;一…

使用Dbeaver连接GaussDB

1.下载DBeaver&#xff0c;官网地址 2.安装软件&#xff0c;打开软件&#xff0c;点击数据库->驱动管理器&#xff0c;具体操作如下图&#xff1a; 3、选择新建后进行参数设置&#xff0c;如下图&#xff1a; 具体参数如下图 驱动名称: GS #随便定义 驱动类型&#…

【STM32】学习笔记(串口通信)-江科大

串口通信 通信接口硬件电路电平标准USARTUSART框图 通信接口 串口是一种应用十分广泛的通讯接口&#xff0c;串口成本低、容易使用、通信线路简单&#xff0c;可实现两个设备的互相通信 单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信&#…

【【Verilog典型电路设计之log函数的Verilog HDL设计】】

Verilog典型电路设计之log函数的Verilog HDL设计 log函数是一种典型的单目计算函数&#xff0c;与其相应的还有指数函数、三角函数等。对于单目计算函数的硬件加速器设计一般两种简单方法:一种是查找表的方式;一种是使用泰勒级数展开成多项式进行近似计算。这两种方式在设计方…

Linux学习之逻辑卷LVM用途和创建

理论基础 Linux文件系统建立在逻辑卷上&#xff0c;逻辑卷建立在物理卷上。 物理卷处于LVM中的最底层&#xff0c;可以将其理解为物理硬盘、硬盘分区或者RAID磁盘阵列&#xff0c;这都可以。卷组建立在物理卷之上&#xff0c;一个卷组可以包含多个物理卷&#xff0c;而且在卷组…