经营简报及考核360表格
文章目录
- 经营简报
- 效果图
- 代码
- tableObjectSpanMethod.js
- 考核360委员会
- 效果图
- 经营简报
- 效果图
- 不需要合并单元格且有汇总表头的
懒得封装了,所以整体没有封装
经营简报
效果图
代码
<template><el-tableref="tableRef":data="tableData.length>0?tableData.slice(1,tableData.length):[]"tooltip-effect="dark":span-method="objectSpanMethod":header-cell-style="handerMethod"style="width: 100%; margin-top: 16px":row-class-name="tableRowClassName":cell-class-name="columnStyle"><template v-for="item in tableHeader"><el-table-column :label="item.label" :prop="item.label" :key="item.id" v-if="item.children && item.children.length"><template v-for="i in item.children"><el-table-column:key="i.id":label="i.label":prop="i.prop?i.prop:'/'"align="center"label-class-name="orange"></el-table-column></template></el-table-column><el-table-columnv-else:key="item.id":label="item.label":prop="item.prop?item.prop:'/'"align="center"></el-table-column></template></el-table>
</template>
<script>
//引入封装的js
import { dataMethod } from "@/components/element/tableObjectSpanMethod.js";
export default {data() {return {tableData: [],spanObj: {},tableHeader:[{label:'执行日期',id:1,prop:'data',children:[{id:11,label:'总分1',prop:'data'},{id:12,label:'总分',prop:'time'}]},{label:'指标',id:2,prop:'time',children:[{id:12,label:'总分',prop:'time'}]},{label:'任务名称',id:3,prop:'taskName',children:[{id:13,label:'/',prop:'taskName'}]},{label:'任务进度状态',id:4,prop:'progressStatus',children:[{id:14,label:'/',prop:'progressStatus'}]},{label:'任务结果状态',id:5,prop:'resultStatue',children:[{id:15,label:'/',prop:'resultStatue'}]},{label:'操作',id:6,prop:'/',children:[{id:15,label:'/',prop:'/'}]},]};},created() {(this.tableData = [{data: "总分1",time: "总分2",taskName: "任务20210903",progressStatus: "0",resultStatue: "0",},{data: "收入贡献(万元)",time: "收入贡献(万元)",taskName: "任务",progressStatus: "0",resultStatue: "0",teachingAffairsProjectId:1},{data: "2022-01-07",time: "15:56:08",taskName: "任务20210903",progressStatus: "1",resultStatue: "0",},{data: "2022-01-07",time: "15:56:08",taskName: "任务20210903",progressStatus: "2",resultStatue: "1",},{data: "2022-01-07",time: "15:56:08",taskName: "任务20210903",progressStatus: "3",resultStatue: "1",},{data: "2022-01-08",time: "15:56:08",taskName: "任务20210903",progressStatus: "4",resultStatue: "0",},{data: "2022-01-09",time: "15:56:08",taskName: "任务20210903",progressStatus: "5",resultStatue: "1",},{data: "2022-01-09",time: "15:56:08",taskName: "任务20210903",progressStatus: "5",resultStatue: "1",},{data: "2022-01-09",time: "15:56:08",taskName: "任务20210903",progressStatus: "5",resultStatue: "1",},{data: "2022-11-09",time: "15:56:08",taskName: "任务20210903",progressStatus: "5",resultStatue: "1",},]),//动态渲染 请渲染数剧结束后在执行此方法(this.spanObj = dataMethod(this.tableData));},methods: {/**表格合并单元格 */objectSpanMethod({ row, column, rowIndex, columnIndex }) {// 判断哪一列 如果需要处理多了 使用 || 进行处理即可let addArr = ["总分1"];let delArr = ["总分"];if (row.teachingAffairsProjectId&&rowIndex==0) {// label匹配则开始合并if (addArr.includes(column.label)) {return {// 占位(合并单元格)rowspan: 1, // 行colspan: 2, // 列};} else if (delArr.includes(column.label)) {return [0, 0]; // 清除单元格(一定要做)}}if (columnIndex === 0&&rowIndex!==0) {const _row = this.flitterData(this.tableData.slice(1,this.tableData.length)).one[rowIndex];const _col = _row > 0 ? 1 : 0;return {rowspan: _row,colspan: _col,};}},//合并单位表头handerMethod ({ row, column, rowIndex, columnIndex }) {// if (row[0].level == 1) {//这里有个非常坑的bug 必须是row[0]=0 row[1]=2才会生效row[0].colSpan = 0// row[2].colSpan = 0row[1].colSpan = 2if (columnIndex === 0) {return { display: 'none' }}// if (columnIndex === 3) {// return { display: 'none' }// }},/**合并表格的第一列,处理表格数据 */flitterData(arr) {let spanOneArr = [];let concatOne = 0;arr.forEach((item, index) => {if (index === 0) {spanOneArr.push(1);} else {//注意这里的data是表格绑定的字段,根据自己的需求来改if (item.data === arr[index - 1].data) {//第一列需合并相同内容的判断条件spanOneArr[concatOne] += 1;spanOneArr.push(0);} else {spanOneArr.push(1);concatOne = index;}}});return {one: spanOneArr,};},// 表格斑马纹tableRowClassName({ row, rowIndex }) {// if(rowIndex===0){// return "orange"// }if (rowIndex % 2 === 0) {return "marginL";} else {return "blueRow marginL";}},columnStyle({ row, column, rowIndex, columnIndex }) {if (columnIndex == 0 &&rowIndex!=0) {return "firstColumn";}},},
};
</script><style >
/* ::v-deep { */
.el-table {/* background-color: #000; */
}
.el-table td.el-table__cell,
.el-table th.el-table__cell.is-leaf {border: 1px solid #ebeef5;
}
.blueRow {background: #f6f9ff !important;
}
.orange {background: rgb(252, 216, 149) !important;
}
.orange>td {background: rgb(252, 216, 149) !important;
}
.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {background-color: #E7EFFF !important;color: #292929 !important;font-weight: 600 !important;
}
.firstColumn{background: #f6f9ff !important;border:none;
}
.el-table--enable-row-hover .el-table__body tr:hover>.firstColumn.el-table__cell{background: #f6f9ff !important;color: #606266 !important;font-weight: 500 !important;border: 1px solid #ebeef5;
}
/* } */
</style>
tableObjectSpanMethod.js
```// 表格单元格合并多列
let [spanObj, pos] = [{}, {}];
//spanObj 存储每个key 对应的合并值
//pos 存储的是 key合并值得索引 大概吧
const dataMethod = (data, isH = []) => {//循环数据for (let i in data) {let dataI = data[i];//循环数据内对象,查看有多少keyfor (let j in dataI) {//如果只有一条数据时默认为1即可,无需合并if (~~i === 0) {spanObj[j] = [1];pos[j] = 0;} else {let [e, k] = [dataI, data[i - 1]];//判断上一级别是否存在 ,//存在当前的key是否和上级别的key是否一样//判断是否有数组规定只允许那几列需要合并单元格的if (k && e?.[j] === k?.[j] && (!isH?.length || isH?.includes(j))) {//如果上一级和当前一级相当,数组就加1 数组后面就添加一个0spanObj[j][pos[j]] += 1;spanObj?.[j]?.push(0);} else {spanObj?.[j]?.push(1);pos[j] = i;}console.log(e, k);}}}return spanObj;
};export { dataMethod };
考核360委员会
以下以指标明细表格作为参考,整体区别不大,我只合并单元格及第一列值相同自动合并的内容,有其他修改需要自己处理一下
效果图
<template><el-tableref="tableRef":data="tableData"tooltip-effect="dark":span-method="objectSpanMethod":header-cell-style="handerMethod"style="width: 100%; margin-top: 16px":row-class-name="tableRowClassName":cell-class-name="columnStyle"><template v-for="item in tableHeader"><el-table-column :label="item.label" :prop="item.label" :key="item.id" v-if="item.children && item.children.length"><template v-for="i in item.children"><el-table-column:key="i.id":label="i.label":prop="i.prop?i.prop:'/'"align="center"></el-table-column></template></el-table-column><el-table-columnv-else:key="item.id":label="item.label":prop="item.prop?item.prop:'/'"align="center"></el-table-column></template></el-table>
</template>
<script>
//引入封装的js
import { dataMethod } from "@/components/element/tableObjectSpanMethod.js";
export default {data() {return {tableData: [],spanObj: {},tableHeader:[{label:'项目',id:1,prop:'data',},{label:'项目',id:122,prop:'data2',},{label:'收入指标',id:2,prop:'time',children:[{id:12,label:'全收入-净(万元)',prop:'time'},{id:121,label:'地区收入份额',prop:'taskName'}]},{label:'业务指标',id:3,prop:'taskName',children:[{id:13,label:'有效地区股基份额',prop:'taskName'},{id:131,label:'有效地区股基份额',prop:'progressStatus'},{id:132,label:'金融产品销售规模(亿元)',prop:'taskName'},{id:133,label:'金融产品年均保有净值规模(亿元)',prop:'time'},{id:134,label:'日均两融余额(亿元)',prop:'taskName'},]},{label:'任务进度状态',id:4,prop:'progressStatus',children:[{id:14,label:'/',prop:'progressStatus'}]},{label:'任务结果状态',id:5,prop:'resultStatue',children:[{id:15,label:'/',prop:'resultStatue'}]},{label:'操作',id:6,prop:'/',children:[{id:65,label:'/',prop:'resultStatue'}]},{label:'操作',id:7,prop:'/',children:[{id:75,label:'/',prop:'resultStatue'}]},{label:'操作',id:8,prop:'/',children:[{id:85,label:'/',prop:'resultStatue'}]},]};},created() {(this.tableData = [{data: "2022-01-07",data2: "33",time: "15:56:08",taskName: "任务20210903",progressStatus: "1",resultStatue: "0",},{data: "2022-01-07",time: "15:56:08",data2: "44",taskName: "任务20210903",progressStatus: "2",resultStatue: "1",},{data: "2022-01-07",time: "15:56:08",data2: "55",taskName: "任务20210903",progressStatus: "3",resultStatue: "1",},{data: "2022-01-08",time: "15:56:08",data2: "66",taskName: "任务20210903",progressStatus: "4",resultStatue: "0",},{data: "2022-01-09",time: "15:56:08",taskName: "任务20210903",progressStatus: "5",data2: "77",resultStatue: "1",},{data: "2022-01-09",time: "15:56:08",data2: "88",taskName: "任务20210903",progressStatus: "5",resultStatue: "1",},{data: "2022-01-09",time: "15:56:08",data2: "99",taskName: "任务20210903",progressStatus: "5",resultStatue: "1",},{data: "2022-11-09",time: "15:56:08",data2: "10",taskName: "任务20210903",progressStatus: "5",resultStatue: "1",},]),//动态渲染 请渲染数剧结束后在执行此方法this.spanObj = dataMethod(this.tableData);},methods: {/**表格合并单元格 */objectSpanMethod({ row, column, rowIndex, columnIndex }) {if (columnIndex === 0) {const _row = this.flitterData(this.tableData).one[rowIndex];const _col = _row > 0 ? 1 : 0;return {rowspan: _row,colspan: _col,};}},//合并单位表头,第一列和第二列第一行的表头,如不需要合并把这个方法注释即可handerMethod ({ row, column, rowIndex, columnIndex }) {if (row[0].level == 1) {row[0].colSpan = 0row[1].colSpan = 2if (columnIndex === 0) {return { display: 'none' }}}},/**合并表格的第一列,处理表格数据 */flitterData(arr) {let spanOneArr = [];let concatOne = 0;arr.forEach((item, index) => {if (index === 0) {spanOneArr.push(1);} else {//注意这里的data是表格绑定的字段,根据自己的需求来改if (item.data === arr[index - 1].data) {//第一列需合并相同内容的判断条件spanOneArr[concatOne] += 1;spanOneArr.push(0);} else {spanOneArr.push(1);concatOne = index;}}});return {one: spanOneArr,};},// 表格斑马纹tableRowClassName({ row, rowIndex }) {if (rowIndex % 2 === 0) {return "marginL";} else {return "blueRow marginL";}},columnStyle({ row, column, rowIndex, columnIndex }) {if (columnIndex == 0 ) {return "firstColumn";}},},
};
</script><style >
/* ::v-deep { */
.el-table {/* background-color: #000; */
}
.el-table td.el-table__cell,
.el-table th.el-table__cell.is-leaf {border: 1px solid #ebeef5;
}
.blueRow {background: #f6f9ff !important;
}
.orange {background: rgb(252, 216, 149) !important;
}
.orange>td {background: rgb(252, 216, 149) !important;
}
.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {background-color: #E7EFFF !important;color: #292929 !important;font-weight: 600 !important;
}
.firstColumn{background: #f6f9ff !important;border:none;
}
.el-table--enable-row-hover .el-table__body tr:hover>.firstColumn.el-table__cell{background: #f6f9ff !important;color: #606266 !important;font-weight: 500 !important;border: 1px solid #ebeef5;
}
.el-table thead.is-group th.el-table__cell{text-align: center;
}
/* } */
</style>
经营简报
效果图
不需要合并单元格且有汇总表头的
<template><el-tableref="tableRef":data="tableData"tooltip-effect="dark":span-method="objectSpanMethod":header-cell-style="handerMethod"style="width: 100%; margin-top: 16px":row-class-name="tableRowClassName":cell-class-name="columnStyle"><template v-for="item in tableHeader"><el-table-column :label="item.label" :prop="item.label" :key="item.id" v-if="item.children && item.children.length"><template v-for="i in item.children"><el-table-column:key="i.id":label="i.label":prop="i.prop?i.prop:'/'"align="center"label-class-name="orange"></el-table-column></template></el-table-column><el-table-columnv-else:key="item.id":label="item.label":prop="item.prop?item.prop:'/'"align="center"></el-table-column></template></el-table>
</template>
<script>
//引入封装的js
import { dataMethod } from "@/components/element/tableObjectSpanMethod.js";
export default {data() {return {tableData: [],spanObj: {},tableHeader:[{label:'项目',id:1,prop:'data',children:[{id:111,label:'全净',prop:'data'},]},{label:'项目',id:122,prop:'data2',children:[{id:1222,label:'全收入',prop:'data2'},]},{label:'收入指标',id:2,prop:'time',children:[{id:12,label:'全收入-净',prop:'time'},]},{label:'业务指标',id:3,prop:'taskName',children:[{id:13,label:'有效地区',prop:'taskName'},]},{label:'任务进度状态',id:4,prop:'progressStatus',children:[{id:14,label:'/',prop:'progressStatus'}]},{label:'任务结果状态',id:5,prop:'resultStatue',children:[{id:15,label:'/',prop:'resultStatue'}]},{label:'操作',id:6,prop:'/',children:[{id:65,label:'/',prop:'resultStatue'}]},{label:'操作',id:7,prop:'/',children:[{id:75,label:'/',prop:'resultStatue'}]},{label:'操作',id:8,prop:'/',children:[{id:85,label:'/',prop:'resultStatue'}]},]};},created() {(this.tableData = [{data: "2022-01-07",time: "15:56:08",data2: "55",taskName: "任务2021",progressStatus: "3",resultStatue: "1",},{data: "2022-01-08",time: "15:56:08",data2: "66",taskName: "任务2",progressStatus: "4",resultStatue: "0",},{data: "2022-01-09",time: "15:56:08",taskName: "任务202",progressStatus: "5",data2: "77",resultStatue: "1",},{data: "2022-01-09",time: "15:56:08",data2: "88",taskName: "任务903",progressStatus: "5",resultStatue: "1",},{data: "2022-01-09",time: "15:56:08",data2: "99",taskName: "任务3",progressStatus: "5",resultStatue: "1",},{data: "2022-11-09",time: "15:56:08",data2: "10",taskName: "任务03",progressStatus: "5",resultStatue: "1",},]),//动态渲染 请渲染数剧结束后在执行此方法this.spanObj = dataMethod(this.tableData);},methods: {/**表格合并单元格 */objectSpanMethod({ row, column, rowIndex, columnIndex }) {if (columnIndex === 0) {const _row = this.flitterData(this.tableData).one[rowIndex];const _col = _row > 0 ? 1 : 0;return {rowspan: _row,colspan: _col,};}},//合并单位表头handerMethod ({ row, column, rowIndex, columnIndex }) {// if (row[0].level == 1) {// row[0].colSpan = 0// row[1].colSpan = 2// if (columnIndex === 0) {// return { display: 'none' }// }// }},/**合并表格的第一列,处理表格数据 */flitterData(arr) {let spanOneArr = [];let concatOne = 0;arr.forEach((item, index) => {if (index === 0) {spanOneArr.push(1);} else {//注意这里的data是表格绑定的字段,根据自己的需求来改if (item.data === arr[index - 1].data) {//第一列需合并相同内容的判断条件spanOneArr[concatOne] += 1;spanOneArr.push(0);} else {spanOneArr.push(1);concatOne = index;}}});return {one: spanOneArr,};},// 表格斑马纹tableRowClassName({ row, rowIndex }) {if (rowIndex % 2 === 0) {return "marginL";} else {return "blueRow marginL";}},columnStyle({ row, column, rowIndex, columnIndex }) {if (columnIndex == 0 ) {return "firstColumn";}},},
};
</script><style >
/* ::v-deep { */
.el-table {/* background-color: #000; */
}
.el-table td.el-table__cell,
.el-table th.el-table__cell.is-leaf {border: 1px solid #ebeef5;
}
.blueRow {background: #f6f9ff !important;
}
.orange {background: rgb(252, 216, 149) !important;
}
.orange>td {background: rgb(252, 216, 149) !important;
}
.el-table--enable-row-hover .el-table__body tr:hover>td.el-table__cell {background-color: #E7EFFF !important;color: #292929 !important;font-weight: 600 !important;
}
.firstColumn{background: #f6f9ff !important;border:none;
}
.el-table--enable-row-hover .el-table__body tr:hover>.firstColumn.el-table__cell{background: #f6f9ff !important;color: #606266 !important;font-weight: 500 !important;border: 1px solid #ebeef5;
}
.el-table thead.is-group th.el-table__cell{text-align: center;
}
/* } */
</style>
相关文章:

经营简报及考核360表格
文章目录 经营简报效果图代码tableObjectSpanMethod.js 考核360委员会效果图 经营简报效果图不需要合并单元格且有汇总表头的 懒得封装了,所以整体没有封装 经营简报 效果图 代码 <template><el-tableref"tableRef":data"tableData.lengt…...

Spring Security 构建基于 JWT 的登录认证
一言以蔽之,JWT 可以携带非敏感信息,并具有不可篡改性。可以通过验证是否被篡改,以及读取信息内容,完成网络认证的三个问题:“你是谁”、“你有哪些权限”、“是不是冒充的”。 为了安全,使用它需要采用 …...

PyTorch从零开始实现Transformer
文章目录 自注意力Transformer块编码器解码器块解码器整个Transformer参考来源全部代码(可直接运行) 自注意力 计算公式 代码实现 class SelfAttention(nn.Module):def __init__(self, embed_size, heads):super(SelfAttention, self).__init__()self.e…...

运动蓝牙耳机什么牌子的好用、最好用的运动蓝牙耳机推荐
音乐是运动的灵魂,而一款优秀的运动耳机则是让音乐与我们的身体完美融合的关键。今天,我推荐五款备受运动爱好者喜爱的耳机,它们以卓越的音质、舒适的佩戴和出色的稳定性能脱颖而出,助你在运动中创造最佳状态。 1、NANK南卡Runne…...

HTTP、HTTPS协议详解
文章目录 HTTP是什么报文结构请求头部响应头部 工作原理用户点击一个URL链接后,浏览器和web服务器会执行什么http的版本持久连接和非持久连接无状态与有状态Cookie和Sessionhttp方法:get和post的区别 状态码 HTTPS是什么ssl如何搞到证书nginx中的部署 加…...

【算法与数据结构】222、LeetCode完全二叉树的节点个数
文章目录 一、题目二、一般遍历解法三、利用完全二叉树性质四、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、一般遍历解法 思路分析:利用层序遍历,然后用num记录节点数量。其他的例如…...
登录和注册表单的11个HTML最佳实践
原文:11 HTML best practices for login & sign-up forms 原作者:Andrey Sitnik 翻译已获原文作者许可,禁止转载和商用 大多数网站都有登录或注册表单;它们是业务转换的关键部分。然而,即使是流行的站点也没有实现本文中提到的…...
Mysql删除历史数据
Mysql定时删除历史数据 实现 1.创建存储过程(函数) SQL DROP PROCEDURE IF EXISTS KeepDatasWith30Days CREATE PROCEDURE KeepDatasWith30Days() BEGINSELECT maxId:max(Id) FROM tableName WHERE CreateTime<DATE(DATE_SUB(NOW(),INTERVAL 31 D…...

Python—数据结构(一)
先放一张自己学习和整理归纳的思维导图,以便让大家都知道我自己的整体学习路线。 数据结构的学习路上内容枯燥,但坚持下来一定有很大的收获!加油💪🏻! 数据结构 数据的概念数据元素: 若干基本…...
离线环境安装flask依赖包
找到当前版本需要的所有依赖包,生产flask项目生成项目依赖包文件requirements.txt 1)在当前项目目录下 生成requirements文件:pip freeze >requirements.txt 执行requirements文件,安装依赖包:pip install -r requirements.t…...

ChatGPT与Claude对比分析
一 简介 1、ChatGPT: 访问地址:https://chat.openai.com/ 由OpenAI研发,2022年11月发布。基于 transformer 结构的大规模语言模型,包含1750亿参数。训练数据集主要是网页文本,聚焦于流畅的对话交互。对话风格友好,回复通顺灵活,富有创造性。存在一定的安全性问题,可…...

登录和注册页面 - 验证码功能的实现
目录 1. 生成验证码 2. 将本地验证码发布成 URL 3. 后端返回验证码的 URL 给前端 4. 前端将用户输入的验证码传给后端 5. 后端验证验证码 1. 生成验证码 使用hutool 工具生成验证码. 1.1 添加 hutool 验证码依赖 <!-- 验证码 --> <dependency><groupId…...

HDFS的文件块大小(重点)
HDFS 中的文件在物理上是分块存储 (Block ) , 块的大小可以通过配置参数( dfs.blocksize)来规定,默认大小在Hadoop2.x/3.x版本中是128M,1.x版本中是64M。 如果一个文件文件小于128M,该文件会占…...

深度学习(二)
目录 一、神经网络 整体架构: 架构细节: 神经元个数的影响: 神经网络过拟合解决: 卷积网络 整体架构: 卷积层 边缘填充 特征尺寸计算 池化层 特征图变化 递归神经网络 一、神经网络 整体架构: 图中分别为输入层、隐层1、隐层2、输出层 通过输入层输入某数值…...
无涯教程-jQuery - wrapInner( html )方法函数
wrapInner(html)方法使用HTML结构包装每个匹配元素(包括文本节点)的内部子内容。 wrapInner( html ) - 语法 selector.wrapInner( html ) 这是此方法使用的所有参数的描述- html - 将动态创建并环绕目标的HTML字符串。 wrapInner( html ) - 示例 以下是一个简单的示例…...

【unity之IMGUI实践】单例模式管理数据存储【二】
👨💻个人主页:元宇宙-秩沅 👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨💻 本文由 秩沅 原创 👨💻 收录于专栏:uni…...

【C++】开源:Linux端ALSA音频处理库
😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Linux端ALSA音频处理库。 无专精则不能成,无涉猎则不能通。。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,…...

【Linux | Shell】结构化命令2 - test命令、方括号测试条件、case命令
目录 一、概述二、test 命令2.1 test 命令2.2 方括号测试条件2.3 test 命令和测试条件可以判断的 3 类条件2.3.1 数值比较2.3.2 字符串比较 三、复合条件测试四、if-then 的高级特性五、case 命令 一、概述 上篇文章介绍了 if 语句相关知识。但 if 语句只能执行命令,…...

基于单片机的语音识别智能垃圾桶垃圾分类的设计与实现
功能介绍 以51单片机作为主控系统;液晶显示当前信息和状态;通过语音识别模块对当前垃圾种类进行语音识别; 通过蜂鸣器进行声光报警提醒垃圾桶已满;采用舵机控制垃圾桶打开关闭;超声波检测当前垃圾桶满溢程度࿱…...

最新版本docker 设置国内镜像源 加速办法
解决问题:加速 docker 设置国内镜像源 目录: 国内加速地址 修改方法 国内加速地址 1.Docker中国区官方镜像 https://registry.docker-cn.com 2.网易 http://hub-mirror.c.163.com 3.ustc https://docker.mirrors.ustc.edu.cn 4.中国科技大学 https://docker.mirrors…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...

如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...

从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...