移动端的h5可配置表头的复杂表格

2023-10-31

最近做移动端的h5项目,要做一个可配置表头的复杂表格,网上找了很久也没什么好方法,结合网上的一些例子,在此做一了一个完整的vue版的例子

效果图

 1.引入 iscroll

npm i iscroll --save

 2.对插件再做一层封装,封装成 iscrollTable.js 方便调用,代码如下:

// 统一使用
const iScollProbe = require('iscroll/build/iscroll-probe');
let scroller = null;
let Selector = "";
export function createIScroller(selector) {
  Selector = selector;
  scroller = new iScollProbe(Selector, {
    preventDefault: false,  // 阻止浏览器滑动默认行为
    probeType: 3, //需要使用 iscroll-probe.js 才能生效 probeType : 1 滚动不繁忙的时候触发 probeType : 2 滚动时每隔一定时间触发 probeType : 3   每滚动一像素触发一次
    mouseWheel: true, //是否监听鼠标滚轮事件。
    scrollX: true,  // 启动x轴滑动
    scrollY: true,  // 启动y轴滑动
    // momentum: false,
    lockDirection: false,
    snap: false, //自动分割容器,用于制作走马灯效果等。Options.snap:true// 根据容器尺寸自动分割
    //snapSpeed: 400,
    scrollbars: false, //是否显示默认滚动条
    freeScroll: true, //主要在上下左右滚动都生效时使用,可以向任意方向滚动。
    deceleration: 0.0001, //滚动动量减速越大越快,建议不大于 0.01,默认:0.0006
    disableMouse: true, //是否关闭鼠标事件探测。如知道运行在哪个平台,可以开启它来加速。
    disablePointer: true, //是否关闭指针事件探测。如知道运行在哪个平台,可以开启它来加速。
    disableTouch: false, //是否关闭触摸事件探测。如知道运行在哪个平台,可以开启它来加速。
    eventPassthrough: false, //使用 IScroll 的横轴滚动时,如想使用系统立轴滚动并在横轴上生效,请开启。
    bounce: false //是否启用弹力动画效果,关掉可以加速
  });
  scroller.on('scroll', updatePosition);
  scroller.on('scrollEnd', updatePosition);
  scroller.on('beforeScrollStart', function () {
    scroller.refresh();
  });

  function updatePosition() {
    let frozenCols = document.querySelectorAll(selector + ' table tr td.cols');
    let frozenRows = document.querySelectorAll(selector + ' table tr th.rows');
    let frozenCrosses = document.querySelectorAll(selector + ' table tr th.cross');
    for (let i = 0; i < frozenCols.length; i++) {
      frozenCols[i].style.transform = 'translate(' + -1 * this.x + 'px, 0px) translateZ(0px)';
    }
    for (let i = 0; i < frozenRows.length; i++) {
      frozenRows[i].style.transform = 'translate(0px, ' + -1 * this.y + 'px) translateZ(0px)';
    }
    for (let i = 0; i < frozenCrosses.length; i++) {
      frozenCrosses[i].style.transform = 'translate(' + -1 * this.x + 'px,' + -1 * this.y + 'px) translateZ(0px)';
    }
  }

  return scroller;
}

export function refreshScroller() {
  if (scroller === null) {
    console.error("先初始化scroller");
    return;
  }
  setTimeout(() => {
    scroller.refresh();
    scroller.scrollTo(0, 0);
    let frozenCols = document.querySelectorAll(Selector + ' table tr td.cols');
    let frozenRows = document.querySelectorAll(Selector + ' table tr th.rows');
    let frozenCrosses = document.querySelectorAll(Selector + ' table tr th.cross');
    for (let i = 0; i < frozenCols.length; i++) {
      frozenCols[i].style.transform = 'translate(0px, 0px) translateZ(0px)';
    }
    for (let i = 0; i < frozenRows.length; i++) {
      frozenRows[i].style.transform = 'translate(0px, 0px) translateZ(0px)';
    }
    for (let i = 0; i < frozenCrosses.length; i++) {
      frozenCrosses[i].style.transform = 'translate(0px, 0px) translateZ(0px)';
    }
  }, 0);
}

3.引用前面的自己封装的iscrollTable.js,用到的table.vue的具体代码如下:

<template>
    <div class="pages-tables " id="pages-tables">
        <div class="rolling-table meal-table" ref="tableBox" :style="{height: maxHeight + 'px'}">
            <table class="table" id="table" cellpadding="0" cellspacing="0" ref="rollingTable">
                <tr v-for="(x,i) in xList" :key="i">
                    <th class="rows " :class="{'cross': index == 0 && i == 0}" v-for="(l,index) in x" :key="index" :colspan="l.colspan" :rowspan="l.rowspan">{{l.name}}</th>
                </tr>
                <tr v-for="(l,i) in yList" :key="i + 'a'">
                    <template v-for="(x, xKey) in xField">
                        <td v-for="(ll,yKey) in l" :key="yKey" v-if="x === yKey" :class="{'cols': yKey == xField[0]}">
                            {{ yList[i][yKey]}}
                        </td>
                    </template>
                </tr>
                <tr></tr>
            </table>
<van-empty class="empty" v-if="yList.length==0" description="暂无数据" />
            <div :class="[arrow=='left'?'arrows-body-left':'', 'arrows-body']" v-if="yList.length>0">
              <div class="arrow"></div>
              <div class="arrow"></div>
              <div class="arrow"></div>
            </div>
        </div>
    </div>
</template>
<script>
import { createIScroller,refreshScroller,destroyScroller } from "libs/iscrollTable";
export default {
    data() {
        return {
            scroll: {
                scroller: null
            },
            xList: [
                [
                    {
                        field_name: "statis_date",
                        name: "第一行合并3行1列",
                        colspan: 1, //指定单元格 横向 跨越的 列数
                        rowspan: 3, //指定单元格 纵向 跨越的 行数
                    },
                    {
                        field_name: "custom_field",
                        name: "第一行合并2列",
                        colspan: 2,
                        rowspan: 1,
                    },
                    {
                        field_name: "custom_field",
                        name: "第一行合并2列",
                        colspan: 2,
                        rowspan: 1,
                    },
                    {
                        field_name: "custom_field",
                        name: "第一行合并3列",
                        colspan: 3,
                        rowspan: 1,
                    },
                ],
                [
                    {
                        field_name: "custom_field",
                        name: "第二行日期",
                        colspan: 1, //指定单元格 横向 跨越的 列数
                        rowspan: 1, //指定单元格 纵向 跨越的 行数
                    },
                    {
                        field_name: "custom_field",
                        name: "第二行日期合并2列",
                        colspan: 2,
                        rowspan: 1,
                    },
                    {
                        field_name: "custom_field",
                        name: "第二行日期合并2列",
                        colspan: 2,
                        rowspan: 1,
                    },
                    {
                        field_name: "custom_field",
                        name: "第二行日期合并3列",
                        colspan: 3,
                        rowspan: 1,
                    },
                ],
                [
                    {
                        field_name: "area_name",
                        name: "第三行当月新增",
                        colspan: 1,  //指定单元格 横向 跨越的 列数
                        rowspan: 1, //指定单元格 纵向 跨越的 行数
                    },
                    {
                        field_name: "area_name1",
                        name: "第三行当月新增1",
                        colspan: 1,
                        rowspan: 1,
                    },
                    {
                        field_name: "area_name2",
                        name: "第三行当月新增2",
                        colspan: 1,
                        rowspan: 1,
                    },
                    {
                        field_name: "area_name3",
                        name: "第三行当月新增3",
                        colspan: 1,
                        rowspan: 1,
                    },
                    {
                        field_name: "area_name4",
                        name: "第三行当月新增4",
                        colspan: 1,
                        rowspan: 1,
                    },
                    {
                        field_name: "area_name5",
                        name: "第三行当月新增5",
                        colspan: 1,
                        rowspan: 1,
                    },
                    {
                        field_name: "area_name6",
                        name: "第三行当月新增6",
                        colspan: 1,
                        rowspan: 1,
                    },
                ],
            ],
            xField: ['statis_date', 'area_name', "area_name1", "area_name2", "area_name3", "area_name4", "area_name5", "area_name6",],
            yList: [
                {
                    area_name: "新增数据开始",
                    area_name1: "新增数据开始1",
                    area_name2: "新增数据开始2",
                    area_name3: "新增数据开始3",
                    area_name4: "新增数据开始4",
                    area_name5: "新增数据开始5",
                    area_name6: "新增数据开始6",
                    statis_date: 100007,
                },
                {
                    area_name: "新增数据",
                    area_name1: "新增数据1",
                    area_name2: "新增数据2",
                    area_name3: "新增数据3",
                    area_name4: "新增数据4",
                    area_name5: "新增数据5",
                    area_name6: "新增数据6",
                    statis_date: 201807,
                },
                {
                    area_name: "新增数据",
                    area_name1: "新增数据1",
                    area_name2: "新增数据2",
                    area_name3: "新增数据3",
                    area_name4: "新增数据4",
                    area_name5: "新增数据5",
                    area_name6: "新增数据6",
                    statis_date: 201807,
                },
                {
                    area_name: "新增数据",
                    area_name1: "新增数据1",
                    area_name2: "新增数据2",
                    area_name3: "新增数据3",
                    area_name4: "新增数据4",
                    area_name5: "新增数据5",
                    area_name6: "新增数据6",
                    statis_date: 201807,
                },
                {
                    area_name: "新增数据",
                    area_name1: "新增数据1",
                    area_name2: "新增数据2",
                    area_name3: "新增数据3",
                    area_name4: "新增数据4",
                    area_name5: "新增数据5",
                    area_name6: "新增数据6",
                    statis_date: 201807,
                },
                {
                    area_name: "新增数据",
                    area_name1: "新增数据1",
                    area_name2: "新增数据2",
                    area_name3: "新增数据3",
                    area_name4: "新增数据4",
                    area_name5: "新增数据5",
                    area_name6: "新增数据6",
                    statis_date: 201807,
                },
                {
                    area_name: "新增数据",
                    area_name1: "新增数据1",
                    area_name2: "新增数据2",
                    area_name3: "新增数据3",
                    area_name4: "新增数据4",
                    area_name5: "新增数据5",
                    area_name6: "新增数据6",
                    statis_date: 201807,
                },
                {
                    area_name: "新增数据",
                    area_name1: "新增数据1",
                    area_name2: "新增数据2",
                    area_name3: "新增数据3",
                    area_name4: "新增数据4",
                    area_name5: "新增数据5",
                    area_name6: "新增数据6",
                    statis_date: 201807,
                },
                {
                    area_name: "新增数据",
                    area_name1: "新增数据1",
                    area_name2: "新增数据2",
                    area_name3: "新增数据3",
                    area_name4: "新增数据4",
                    area_name5: "新增数据5",
                    area_name6: "新增数据6",
                    statis_date: 201807,
                },
                {
                    area_name: "新增数据",
                    area_name1: "新增数据1",
                    area_name2: "新增数据2",
                    area_name3: "新增数据3",
                    area_name4: "新增数据4",
                    area_name5: "新增数据5",
                    area_name6: "新增数据6",
                    statis_date: 201807,
                },
                {
                    area_name: "新增数据",
                    area_name1: "新增数据1",
                    area_name2: "新增数据2",
                    area_name3: "新增数据3",
                    area_name4: "新增数据4",
                    area_name5: "新增数据5",
                    area_name6: "新增数据6",
                    statis_date: 201807,
                },
                {
                    area_name: "新增数据",
                    area_name1: "新增数据1",
                    area_name2: "新增数据2",
                    area_name3: "新增数据3",
                    area_name4: "新增数据4",
                    area_name5: "新增数据5",
                    area_name6: "新增数据6",
                    statis_date: 201807,
                },
                {
                    area_name: "新增数据",
                    area_name1: "新增数据1",
                    area_name2: "新增数据2",
                    area_name3: "新增数据3",
                    area_name4: "新增数据4",
                    area_name5: "新增数据5",
                    area_name6: "新增数据6",
                    statis_date: 201807,
                },
                {
                    area_name: "新增数据",
                    area_name1: "新增数据1",
                    area_name2: "新增数据2",
                    area_name3: "新增数据3",
                    area_name4: "新增数据4",
                    area_name5: "新增数据5",
                    area_name6: "新增数据6",
                    statis_date: 201807,
                },
                {
                    area_name: "新增数据",
                    area_name1: "新增数据1",
                    area_name2: "新增数据2",
                    area_name3: "新增数据3",
                    area_name4: "新增数据4",
                    area_name5: "新增数据5",
                    area_name6: "新增数据6",
                    statis_date: 201807,
                },
                {
                    area_name: "新增数据",
                    area_name1: "新增数据1",
                    area_name2: "新增数据2",
                    area_name3: "新增数据3",
                    area_name4: "新增数据4",
                    area_name5: "新增数据5",
                    area_name6: "新增数据6",
                    statis_date: 201807,
                },
                {
                    area_name: "新增数据",
                    area_name1: "新增数据1",
                    area_name2: "新增数据2",
                    area_name3: "新增数据3",
                    area_name4: "新增数据4",
                    area_name5: "新增数据5",
                    area_name6: "新增数据6",
                    statis_date: 201807,
                },
                {
                    area_name: "新增数据",
                    area_name1: "新增数据1",
                    area_name2: "新增数据2",
                    area_name3: "新增数据3",
                    area_name4: "新增数据4",
                    area_name5: "新增数据5",
                    area_name6: "新增数据6",
                    statis_date: 201807,
                },
                {
                    area_name: "新增数据",
                    area_name1: "新增数据1",
                    area_name2: "新增数据2",
                    area_name3: "新增数据3",
                    area_name4: "新增数据4",
                    area_name5: "新增数据5",
                    area_name6: "新增数据6",
                    statis_date: 201807,
                },
                {
                    area_name: "新增数据最后",
                    area_name1: "新增数据最后1",
                    area_name2: "新增数据最后2",
                    area_name3: "新增数据最后3",
                    area_name4: "新增数据最后4",
                    area_name5: "新增数据最后5",
                    area_name6: "新增数据最后6",
                    statis_date: 222222,
                }
            ]
        }
    },
    beforeDestroy() {
      destroyScroller();
    },
    mounted() {
        this.maxHeight = window.screen.height
        this.scroll.scroller = createIScroller(".meal-table");
        // addWaterMarker(document.getElementById('watermark'))
    }
}

</script>
<style lang="less" scoped>
.pages-tables {
  -webkit-overflow-scrolling: touch; // ios滑动顺畅
  position: relative;
}
.rolling-table {
    height: 100%;
    font-size: 0.28rem;
    color: #86939a;
    background-color: #fff;
    width: 100%;
    -webkit-overflow-scrolling: touch;
    position: relative;
    top: 0;
    overflow: hidden;
  }
.rows {
    position: relative;
    z-index: 3;
}
.cross {
    position: relative;
    z-index: 5;
}
table td {
  border: 0px solid #000;
  font-size: 0.32rem;
  background: #fff;
}
::-webkit-scrollbar {
    display: none;
}
.table {
//   border-collapse: collapse; //去掉重复的border
  color: #86939e;
  font-size: 0.32rem;
  border: 0px solid #000;
  min-height: 100%;
  text-align: center;
  td {
    border-bottom: 0.02rem solid #eee;
    white-space: nowrap;
    height: 0.86rem;
    line-height: 0.86rem;
    padding: 0 0.2rem;
  }
  th {
    color: #43484d;
    white-space: nowrap;
    height: 0.74rem;
    line-height: 0.74rem;
    padding: 0rem 0.3rem;
    background-color: #f3f4f6;
    font-weight: normal;
    padding-bottom: 0;
    padding-top: 0;
    border: 0.02rem solid red;
  }
}
tr{
    position: relative;
    background-color: #fff;
    &:nth-of-type(odd){
        td{
            // background-color: pink;
        }
    }
}

.arrows-body{
  position: absolute;
  top: 50%;
  right: 8%;
  display: flex;
  justify-content: center;
  align-items: center;
  transform: rotate(-90deg);
  .arrow {
  position: absolute;
  width: 10px;
  height: 2px;
  opacity: 0;
  transform: scale(0.3);
  animation: move-arrow 3s ease-out infinite;
}
.arrow:first-child {
  animation: move-arrow 3s ease-out 1s infinite;
}
.arrow:nth-child(2) {
  animation: move-arrow 3s ease-out 2s infinite;
}
.arrow:before,
.arrow:after {
  content: "";
  position: absolute;
  transform: roate(45deg);
  top: 0;
  height: 100%;
  width: 50%;
  background: #d21;
}
.arrow:before {
  left: 0;
  transform: skewY(45deg);
}
.arrow:after {
  right: 0;
  width: 50%;
  transform: skewY(-45deg);
}
.arrow-up:before {
  left: 0;
  transform: skewY(320deg);
}
.arrow-up:after {
  right: 0;
  width: 50%;
  transform: skewY(-320deg);
}
}
.arrows-body-left{
  right: 0%;
  transform: rotate(90deg);
}
@keyframes move-arrow {
  25% {
    opacity: 1;
  }

  33.3% {
    opacity: 1;
    transform: translateY(10px);
  }

  66.6% {
    opacity: 1;
    transform: translateY(18px);
  }

  100% {
    opacity: 0;
    transform: translateY(26px) scale(0.5);
  }
}
</style>

4.ios滑动可能会有回弹问题

// 移除ios回弹
      removeIosFlex() {
        if(isiOS){
        document.addEventListener('touchmove', function(event) {
          let mainContentEle = document.querySelector('.pageInfo') // 你当前的页面总元素
          const path = event.path || (event.composedPath && event.composedPath())
          if (!mainContentEle) {
            mainContentEle = document.querySelector('.pageInfo')
          }
          if (path && Array.isArray(path) && path.includes(mainContentEle)) {
            event.preventDefault();
          }
        }, { passive: false })
      }
      }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

移动端的h5可配置表头的复杂表格 的相关文章

  • 如何从 Chrome 扩展中获取 javascript 重的页面

    我正在开发一个扩展程序 用于获取用户可能在网站上访问的页面 我的扩展使用 jQuery get 来获取页面 这对于像 amazon com 这样的网站来说是正确的 但是 如果用户登录 gmail 并且我尝试获取其他一些页面 例如 帐户设置
  • 生成随机数背后的数学(崩溃游戏 BTC Casino)

    我正在开发一款基于网络的游戏 其中有多个迷你游戏 我们坚持还添加一个在赌博界非常流行的崩溃游戏 然而 我们一直在努力理解生成随机 几乎不可预测 数字的概念 大多数赌博网站都会提供哈希值等来证明数字未被篡改 我们真的不需要这个 因为我们的游戏
  • 使用 ReactJS 突出显示文本

    我试图突出显示与查询匹配的文本 但我不知道如何让标签显示为 HTML 而不是文本 var Component React createClass highlightQuery function name query var regex ne
  • 按属性首字母对对象数组进行分组

    我对此有点挣扎 自从我编码 JavaScript 以来已经有一段时间了 试图转换它 items data name john name james name joe name brian name bojan name billy name
  • 如何使用画布调整图像大小然后裁剪图像

    我已经知道如何 gt 调整图像大小 var image document getElementById myImage canvas document createElement canvas ctx canvas getContext 2
  • 使用jquery,下拉列表选择更改时如何重定向?

    我有一个下拉列表 如果有人选择一个选项 我想根据选择重定向到另一个页面 我怎样才能通过 jquery 做到这一点 将逻辑绑定到 change 事件 并从中获取当前值 val 以确定用户应该被重定向到哪里 此示例假设位置直接存储在值本身中 m
  • JavaScript 事件循环:队列、消息队列、事件队列

    阅读了大量 JavaScript 事件循环教程 我看到了不同的术语来标识当调用堆栈为空时准备由事件循环获取的队列存储消息 Queue 消息队列 事件队列 我找不到规范术语来识别这一点 甚至 MDN 似乎也对此感到困惑事件循环页面 https
  • AngularJS:如何缓存从 $http 调用返回的 json 数据?

    如何缓存从 http 调用返回的 json 数据 我使用以下风格的 http 调用 http url SomeWebMethodUrl method POST data query somevalue headers Content Typ
  • JavaScript switch 语句是线性的还是恒定时间的?

    我的网站上有以下 JavaScript 以便在执行某些特定搜索时 答案会被硬编码到特定页面 function redirect var input document getElementById searchBox value toLowe
  • Javascript 搜索并替换包含方括号的字符序列

    我正在尝试在字符串 Nationality EN ESP 中搜索 EN 我想从字符串中删除它 所以我使用替换方法 代码示例如下 var str Nationality EN ESP var find EN var regex new Reg
  • 从 Web 浏览器控件读取 Javascript 变量

    我正在尝试读取从表单上的 WebBrowser 控件加载和调用的 Javascript 变量的值 Example index html 引用名为 test js 的 javascript 在 test js 上 创建并填充了几个变量 然后i
  • Svg 点击事件无法正常工作

    我试图让我的 SVG 看起来像一个 饼形 看起来一切都很好 此外 我希望它们每个都有不同的点击事件 function one alert 1 function two alert 2 function three alert 3 funct
  • 如何根据父网格的标题复选框选择/取消选择所有子复选框

    我正在开发一个 Web 应用程序 其中包含嵌套在另一个数据网格中的数据网格 在父网格中 我在标题模板中有一个复选框 在子网格中的项目模板中有另一个复选框 功能是 1 如果我单击父复选框 则应检查子网格中的所有项目 反之亦然 2 我的子网格中
  • 有没有办法通过 JavaScript 检测我是否处于 Selenium Webdriver 页面中?

    我想禁止初始化TinyMCE https www tiny cloud 在我的测试中 如果 JavaScript 可以检测到我正在 Selenium 自动化页面中运行 则可以轻松完成此操作 那么 是否有一些 JavaScript 代码可以用
  • 函数声明可以出现在 JavaScript 的语句内部吗?

    请考虑将官方 ECMAScript 规范作为您答案的来源 而不是特定浏览器供应商发布的文档 我知道 Mozilla 用 函数语句 扩展了它的 JavaScript 实现 因此 根据 ECMAScript 规范 因此 其中定义的语法产生式 这
  • 时间序列折线图与轴不同步

    本实验基于这个d3官方例子 http bost ocks org mike path 我想要实现的是可视化时间序列数据的最后 x 分钟 我有这个代码的副本jsfiddle http jsfiddle net 225dC 3 单击以添加新数据
  • 如何在 AngularJS 中设置选择选项中的文本格式?

    我有以下 json 对象 scope values id 2 code Code 1 name Sample 1 id 4 code Code 2 name Sample 2 id 7 code Code 3 name Sample 3 在
  • Google Calendar API:获取指定日期的空闲时段列表

    我需要获取我的谷歌日历中的免费时段列表 现在我只是获取事件列表 我在用谷歌日历 https www npmjs com package google calendar npm google calendar events list calO
  • 返回语句后的声明

    function f return f1 function f1 return 5 f returns 5 为什么这有效 之后声明局部函数有什么好处return 这是好的做法吗 它之所以有效 是因为函数声明都是由解释器在第一次传递时评估的
  • 理解“窗口”对象[重复]

    这个问题在这里已经有答案了 可能的重复 JS 窗口全局对象 https stackoverflow com questions 10035771 js window global object 如何window对象工作 我知道它是顶级对象并

随机推荐

  • 八数码深度优先搜索_数据结构与算法之美26——广度优先搜索与深度优先搜索...

    什么是搜索算法 上一节介绍了图的基本概念 这一节介绍图的搜索算法 图的搜索算法 最直观的理解就是从一个顶点到另一个顶点的路径 最简单的是广度优先搜索和深度优先搜索 这也是这一节介绍的内容 另外还有A IDA 等启发式搜索算法 本节内容以无向
  • windows10和CentOS 7安装nginx作文件管理器

    目录 一 windows10 系统配置nginx文件服务器 1 到nginx官网上下载windows版本的nginx 地址http nginx org en download html 2 把下载的包放在电脑磁盘里解压 注意解压的包的路径不
  • 哈工大2020机器学习实验一:多项式拟合正弦曲线

    源代码请参考 实验一 GitHub 仓库 运行效果请参考 主程序 哈尔滨工业大学计算学部 实验报告 机器学习 实验一 多项式拟合正弦函数 学号 1183710109 姓名 郭茁宁 文章目录 一 实验目的 二 实验要求及实验环境 实验要求 实
  • 8.3-无监督学习-词嵌入

    文章目录 1 of N Encoding 词嵌入 基于计数的词嵌入 基于预测的词嵌入 具体步骤 共享参数 训练 Various Architectures 多语言嵌入 多域嵌入 文档嵌入 语义嵌入 Beyond Bag of Word 1
  • 微软云计算技术Windows Azure专题(一):如何利用Service Bus向Windows商店应用推送消息...

    本文介绍了如何使用Windows Azure的Service Bus通知中心发送推送通知Windows商店应用程序 先来明确一下大体上要做哪些步骤 1 申请一个Windows应用商店的应用 每个应用都有自己的身份识别标识 不然Windows
  • idea64.exe.vmoptions 配置说明,通用于jvm配置

    一 问题场景 在使用 idea 时 经常卡顿 性能不足 且内存消耗大 在已经购买使用性能较大 酷睿12代标压 及以上 内存配置较大 32G 及以上时 为了全面释放 cpu 性能 提高 idea 性能 故对 idea 的 jvm 进行配置优化
  • 【重磅推荐】哥大开源“FinRL”: 一个用于量化金融自动交易的深度强化学习库

    深度强化学习实验室 官网 http www neurondance com 论坛 http deeprl neurondance com 编辑 DeepRL 一 关于FinRL 目前 深度强化学习 DRL 技术在游戏等领域已经取得了巨大的成
  • 架构设计师

    岗位职责 1 作为团队技术负责人 负责业务产品 重点项目的架构设计和开发管理工作 2 负责开发架构搭建和核心代码编写 3 参与需求分析 配合项目经理管理项目和制定项目战略目标 4 新技术研究和选型 5 参与产品 项目的技术评审 6 为咨询解
  • BUUCTF [ACTF2020 新生赛] Exec

    BUUCTF ACTF2020 新生赛 Exec 启动靶机 打开环境 页面可以执行Ping命令 判断应为命令执行漏洞 尝试输入正常IP127 0 0 1查看其回显 127 0 0 1 其为正常回显 测试管道连接符 是否能用 127 0 0
  • springboot静态资源存放路径解析

    1 源码分析 public void addResourceHandlers ResourceHandlerRegistry registry 1 如果静态资源已经被自定义了 则禁用默认资源处理 if this resourceProper
  • 词语提取小工具开放啦

    推荐一个词语提取小工具给大家使用 免费的 华为云的云搜索服务 可以自定义自己的词库来做分词 停词 修改词库还可以热更新 不用重启即可生效 大家都知道词库中的词从哪里来 哪些才是有用的词 这是让人头疼的事情 每天苦读海量文章 也才能从中找出几
  • Android 7.0 网络变化监听

    一般监听网络变化是在 AndroidManifest 中注册 BroadcastReceiver 来实现 targetSdkVersion 升级到 24 后 发现静态注册广播的方式要被取消了 Declaring a broadcastrec
  • 【SQL】15 SQL 约束(Constraints)、NOT NULL 约束、UNIQUE 约束、PRIMARY KEY 约束、FOREIGN KEY 约束、CHECK 约束、DEFAULT约束

    SQL 约束 Constraints SQL 约束用于规定表中的数据规则 如果存在违反约束的数据行为 行为会被约束终止 约束可以在创建表时规定 通过 CREATE TABLE 语句 或者在表创建之后规定 通过 ALTER TABLE 语句
  • 文献阅读:Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

    文献阅读 Chain of Thought Prompting Elicits Reasoning in Large Language Models 1 文章简介 2 具体方法 3 实验结果 1 数学推理 1 实验设计 2 实验结果 3 消
  • 如何配置Binlog

    binlog日志有两个最重要的使用场景 1 MySQL主从复制 MySQL Replication在Master端开启binlog Master把它的二进制日志传递给slaves来达到 master slave数据一致的目的 2 自然就是数
  • VUE项目打包成apk

    在我们的开发需求中 可能会遇到需要将vue项目中的H5代码打包成一个安卓的app 那么我为大家介绍一套保姆级的解决方案 看完你就会 VUE HBuilder 1 准备工作 需要下载一个HBuilder X编辑器 不过我相信大家身为前端开发工
  • 算法设计技巧与分析(期末复习)

    查找 二分查找 include
  • 关于图像傅里叶变换得到的频谱图的通俗理解

    傅里叶变换过程 经过傅里叶变化且频谱居中化处理的频谱图 1 如果将图像某一行上的灰度变化看作是一个离散信号 那么整张图像可以看作是一个分布在二维平面上的信号 因此图像可看作是空间域信号 傅里叶变换则是将图像灰度分布 空间域信号 变换到了频域
  • vue v-for动态渲染本地图片

    记录 多张本地图片使用v for渲染时引入路径需添加 require
  • 移动端的h5可配置表头的复杂表格

    最近做移动端的h5项目 要做一个可配置表头的复杂表格 网上找了很久也没什么好方法 结合网上的一些例子 在此做一了一个完整的vue版的例子 效果图 1 引入 iscroll npm i iscroll save 2 对插件再做一层封装 封装成