当前位置: 首页 > news >正文

el-table 组件二次封装(vue2)

PublicTable.vue

<!-- 公共表格组件 -->
<template><div class="table-common"><el-table v-loading="loading" :ref="tableid" border style="width: 100%" :data="tableDatas" :row-key="rowKey"@selection-change="handleSelectionChange" @select="selectDataChange" @select-all="selectAllDataChange":height="tableHeight" :header-cell-style="headerCellStyle" :row-style="rowStyle" highlight-selection-row:max-height="maxHeight" @row-click="handleRowClick" :tooltip-effect="configFlag.tooltip || 'dark'"><!-- 当数据为空时,如果想添加一个表达是空数据的图片,可以在这里设置,如果没有就不用管了 --><template slot="empty"><el-empty class="empty_box" :image-size="55"><template slot="image"><img src="@/assets/icons/images/nodata.png"></template></el-empty></template><!-- 全选单选 --><el-table-column v-if="configFlag.selection" align="center" width="55" type="selection":reserve-selection="configFlag.reserveSelection" /><!-- 序号列 --><el-table-column type="index" v-if="configFlag.index" :label="configFlag.indexName || '序号'":width="configFlag.indexWidth || 50" align="center" :fixed="configFlag.indexFixed || 'left'"><template slot-scope="scope"><!-- 每页都是从 1 开始 -->{{ scope.$index + 1 }}<!-- 第二页从 11 开始 --><!-- {{ (pageValue.pageNum - 1) * 10 + (scope.$index + 1) }} --></template></el-table-column><!-- 循环遍历表头展示数据 --><el-table-column v-for="item in columnsCopy" :key="item.fieldIndex" :width="item.width || ''":min-width="item.minWidth || ''" :prop="item.fieldIndex" :label="item.label" :align="item.align || 'center'":sortable="item.sortable" :fixed="item.fixed || false" header-align="center":show-overflow-tooltip="item.showOverFlowTooltip" :filters="item.filters ? item.filters : null":filter-method="item.filters ? item.filtersMethod : null" :selectable="(row) => !row.isSelected"><template slot="header" slot-scope="{ column }">{{ column.label }}<el-tooltip class="item" effect="dark" v-if="item.headertip" :content="item.headertip" placement="top-start"><i class="el-icon-warning"></i></el-tooltip></template><template slot-scope="scope"><!-- {{ scope }} --><!-- 枚举值 --><div v-if="item.type == 'statMap'">{{ statMaps(item.options)[scope.row[item.fieldIndex]] || "--" }}</div><!-- 需提示过长信息 --><div v-else-if="item.showOverFlowTooltip"><div class="show-tooltip">{{ scope.row[item.fieldIndex] || "--" }}</div></div><!-- 保留两位小数 --><div v-else-if="item.type == 'tofix2'">{{scope.row[item.fieldIndex]? Number(scope.row[item.fieldIndex]).toFixed(2): "--"}}</div><!-- 金额千分位展示,项目需求,所以暂时就加上了,主要是做个示例,大家可以参考怎么自定义列的一些方法 --><div v-else-if="item.type == 'money'"><span>{{ getMoneyK(scope.row[item.fieldIndex]) || "--" }}</span></div><!-- 根据需求添加效果 返回的slot可以优化.自己来吧.可以实现操作列等 --><slot v-else-if="item.type == undefined && item.slotname" :scope="scope" :field="item.fieldIndex":name="item.slotname"></slot><!-- 最普通的情况 --><div v-else><span>{{ scope.row[item.fieldIndex] || "--" }}</span></div></template></el-table-column></el-table><el-pagination small v-if="configFlag.needPage" background :total="pageValue.total" :page-count="pageValue.pageNum":page-size="pageValue.pageSize" :page-sizes="pageSizes" :current-page.sync="pageValue.pageNum":layout="pageValue.pageLayout || pageLayout" class="_pagination" @size-change="sizeChange"@current-change="currentChange" @prev-click="prevClick" @next-click="nextClick" /></div>
</template><script>
export default {name: "Table",data() {return {tableDatas: [],loading: true,pageLayout: "total,prev, pager, next, jumper",columnsCopy: []};},props: {// 多选保存选中数据rowKey: {default: () => (row) => row.index,},// 为表头设计样式headerCellStyle: {default: () => {return { background: "rgb(243,248,254)" };},},// 为每一行设计样式,比如设置每行的高度等等rowStyle: {default: () => {return { height: "50px" };},},columns: {// 表头数据  文案和绑定值,以及需要特殊处理的slottype: Array,default: () => [],},tableData: {type: Array, // 后台数据default: () => [],},tableid: {type: String,default: "publicTable",},// 分页参数pageValue: {// 分页数据type: Object,default: () => {return {pageNum: 1,pageSize: 10,total: 0,currentPage: 1, //当前页};},},// 每页多少条的选项pageSizes: {type: Array,default: () => {return [10, 20, 50, 100];},},// 表格配置项configFlag: {// 配置  其他table配置依次添加type: Object,default: () => {return {needPage: false, // 是否需要分页selection: false, // 是否需要多选index: false, // 是否需要序号indexWidth: 70, //序号列宽btn: false, //序号添加自定义htmlreserveSelection: false,tooltip: 'dark'// 这里不全面,可根据实际情况添加};},},tableHeight: {// 可以监听屏幕高度获取。// 高度// type: Number || String ,default: () => null,},maxHeight: {// 可以监听屏幕高度获取。// 最大高度type: Number || String,default: () => 900,},// 是否可以点击行选中多选框rowClickSelect: {type: Boolean,default: true}},watch: {tableData: {handler: function (newvalue) {this.tableDatas = newvalue;this.loading = false;},deep: true,},columns: {handler: function (newvalue) {this.columnsCopy = newvalue;},deep: true,}},beforeUpdate() {this.tableDatas = this.$props.tableData;this.loading = false;},computed: {},mounted() {this.columnsCopy = this.$props.columns;},methods: {// 用于表格中字段是枚举值的列 比如性别 0 代表女 1代表男,就不需要对后台数据单独处理了handleRowClick(row) {if (this.rowClickSelect) {row.isSelected = !row.isSelected;this.$refs[this.tableid].toggleRowSelection(row);}},statMaps(list) {if (!list) return;let obj = {};list.forEach((item) => {obj[item.value || item.id] = item.label || item.value;});return obj;},// 金额千位展示:1,234,567,890getMoneyK(money) {if (typeof money === "number") {money = money.toString();}var pattern = /(-?\d+)(\d{3})/;while (pattern.test(money)) {money = money.replace(pattern, "$1,$2");}return money;},// 清空选中clearSelected() {// 父组件通过ref调用clearSelected方法,例如 this.$refs.clearTable.clearSelected()this.$refs[this.tableid]?.clearSelection();},/*默认选中需要默认选中的在组件中通过this.$refs[tableid].selected(默认选中的数据:Array)*/selected(data) {if (data.length > 0) {data.forEach((item) => {this.$refs[this.tableid].toggleRowSelection(item, true);});}},// 设置条数sizeChange(size) {this.$emit("sizeChange", size);},// 翻页,直接跳转currentChange(page) {this.$emit("handleChange", page);},//上一页prevClick(val) {this.$emit("prevClick", val);},//下一页nextClick(val) {this.$emit("nextClick", val);},// 多选handleSelectionChange(val) {this.$emit("handleSelectionChange", val);},//点击选中取消选中selectDataChange(val, row) {this.$emit("selectDataChange", val, row);},selectAllDataChange(val) {this.$emit("selectAllDataChange", val);},// 多选handleSelection(val, row) {this.$emit("handleSelection", { val, row });},handleCellEnter(row, column, cell, event) {this.$emit("handleCellEnter", { row, column, cell, event });},//编辑handleEdit(index, row, colIndex, field) {this.$emit("handleEdit", { index, row, colIndex, field });},//下拉框事件onSelected(index, row, field) {this.$emit("onSelected", { index, row, field });},//按钮点击事件onClickBtn(index, row) {this.$emit("onClickBtn", { index, row });},filterHandler(value, row, column) {const property = column["property"];return row[property] === value;},/**重构表格布局 */handleResize() {this.$nextTick(() => {this.$refs[this.tableid].doLayout();});},},
};
</script>
<style lang="scss" scoped>
.show-tooltip {overflow: hidden;white-space: nowrap;text-overflow: ellipsis;cursor: pointer;
}/* 修改Tooltip样式 */
::v-deep .el-tooltip__popper.is-dark {background-color: #fff;/* 设置白色背景 */color: #000;/* 设置黑色字体 */
}._pagination {width: 100%;margin: 5px 0;text-align: center;
}.table-common {height: calc(100% - 30px);
}::v-deep .empty_box {.el-empty__description {margin-top: 0;p {line-height: 50px;}}
}
</style>

用法:

<template><div><public-table ref="taskTable" :rowKey="(row) => row.id" :tableData="tableData" :columns="columns" :configFlag="tableConfig" @handleSelectionChange="selectChange" @sizeChange="handleSizeChange" @handleChange="handlePageChange" table-height="100%"></public-table></div>
</template>
<script>
export default {data(){columns:[{ label: '任务名称', fieldIndex: 'taskName', showOverFlowTooltip: true },],tableConfig:{needPage: false, // 是否需要分页index: true, // 是否需要序号selection: true, // 是否需要多选reserveSelection: false, // 是否需要支持跨页选择indexFixed: 'left', // 序号列固定},tableData:[], // 表格数据pageValue: {// 分页参数total: 0,pageNum: 1,pageSize: 10,pageLayout: "total,sizes,prev,pager,next,jumper"},selectList:[], // 表格选中数据},methods:{// 表格多选事件selectChange(e){this.selectList = e;    },// 表格分页-页容改变handleSizeChange(e) {this.pageValue.pageSize = e;this.pageValue.pageNum = 1;},// 表格分页-页数改变handlePageChange(e) {this.pageValue.pageNum = e;}}
}
</script>

相关文章:

el-table 组件二次封装(vue2)

PublicTable.vue <!-- 公共表格组件 --> <template><div class"table-common"><el-table v-loading"loading" :ref"tableid" border style"width: 100%" :data"tableDatas" :row-key"rowKey&quo…...

张量并行和流水线并行在Transformer中的具体部位

目录 张量并行和流水线并行在Transformer中的具体部位 一、张量并行 二、流水线并行 张量并行和流水线并行在Transformer中的具体部位 张量并行和流水线并行是Transformer模型中用于提高训练效率的两种并行策略。它们分别作用于模型的不同部位,以下是对这两种并行的具体说…...

详解Qt pdf 之QPdfSelection 选择文本类

文章目录 QPdfSelection 类详解前言 详细说明公共函数说明1. 构造函数2. text3. boundingRect4. isEmpty5. startPage6. endPage 使用场景示例代码代码说明总结 QPdfSelection 类详解 前言 QPdfSelection 是 Qt PDF 模块中的一个类&#xff0c;用于表示在 PDF 文档中被选中的…...

一款支持80+语言,包括:拉丁文、中文、阿拉伯文、梵文等开源OCR库

大家好&#xff0c;今天给大家分享一个基于PyTorch的OCR库EasyOCR&#xff0c;它允许开发者通过简单的API调用来读取图片中的文本&#xff0c;无需复杂的模型训练过程。 项目介绍 EasyOCR 是一个基于Python的开源项目&#xff0c;它提供了一个简单易用的光学字符识别&#xff…...

matlab 中的 bug

在matlab中绘图&#xff0c;设置 axe 的背景颜色 axes_in3.Color #00235B ;打印的时候 print(figure_handle1,-dpng,-r300,"merge_yt_ey") ;此时保存的图片无法识别背景颜色 原因在于 matlab 中的 InverseHardcopy 将 InvertHardcopy 设置成 off 则可以解决这个问…...

【算法刷题指南】优先级队列

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…...

android user版本默认usb模式为充电模式

android插入usb时会切换至默认设置的模式&#xff0c;debug版本为adb&#xff0c;user版本为mtp protected long getChargingFunctions() {// if ADB is enabled, reset functions to ADB// else enable MTP as usual.if (isAdbEnabled()) {return UsbManager.FUNCTION_ADB;} e…...

[极客大挑战 2019]HardSQL--详细解析

信息搜集 登录系统&#xff0c;有两个可能的注入点&#xff1a; 随便输一下看看传参类型&#xff1a; 都是GET型。 SQL注入 传参 usernameadmin’&password123 传参 usernameadmin&password123’ username和password传参&#xff0c;四种闭合方式只有单引号报错&a…...

java基础概念46-数据结构1

一、引入 List集合的三种实现类使用了不同的数据结构&#xff01; 二、数据结构的定义 三、常见的数据结构 3-1、栈 特点&#xff1a;先进后出&#xff0c;后进先出。 java内存容器&#xff1a; 3-2、队列 特点&#xff1a;先进先出、后进后出。 栈VS队列-小结 3-3、数组 3-…...

数学建模选MATLAB还是Python?

在进行数学建模时&#xff0c;选择合适的编程语言和工具对于建模的效率和效果至关重要。目前&#xff0c;MATLAB和Python是两个常用的数学建模工具&#xff0c;它们各自有优缺点&#xff0c;适用于不同的场景。本文将从多个维度对MATLAB和Python进行比较&#xff0c;帮助大家做…...

【C++】多线程

目录 一 概念 1 多线程 2 多进程与多线程 3 多线程理解 二 创建线程 1 thread 2 join() 和 detach() 3 this_thread 三 std::mutex 1 lock 和 unlock 2 lock_guard 3 unique_lock 四 condition_variable 五 std::atomic 一 概念 1 多线程 在C11之前&#xff0…...

【计算机网络】实验2:总线型以太网的特性

实验 2&#xff1a;总线型以太网的特性 一、 实验目的 加深对MAC地址&#xff0c;IP地址&#xff0c;ARP协议的理解。 了解总线型以太网的特性&#xff08;广播&#xff0c;竞争总线&#xff0c;冲突&#xff09;。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实…...

基于Matlab合成孔径雷达(SAR)回波信号建模与多指标质量评估

本研究基于合成孔径雷达&#xff08;SAR&#xff09;技术&#xff0c;建立了一个雷达回波信号的模拟模型&#xff0c;并通过多项评价指标对信号质量进行深入评估。首先&#xff0c;研究定义了与SAR系统相关的关键物理参数&#xff0c;如工作频率、平台速度、脉冲宽度、采样率等…...

spring boot3.3.5 logback-spring.xml 配置

新建 resources/logback-spring.xml 控制台输出颜色有点花 可以自己更改 <?xml version"1.0" encoding"UTF-8"?> <!--关闭文件扫描 scanfalse --> <configuration debug"false" scan"false"><springProperty …...

浅谈C#库之DevExpress

一、DevExpress库介绍 DevExpress是一个功能强大、界面美观的UI组件库&#xff0c;广泛应用于桌面应用程序和Web应用程序的开发中。它提供了丰富的控件和工具&#xff0c;帮助开发人员快速构建现代化的用户界面。DevExpress控件库以其功能丰富、应用简便、界面华丽以及方便定制…...

【webApp之h5端实战】项目基础结构搭建及欢迎页面的实现

这是一个实战项目的webapp,主要是使用原生js/css/html来实现我们的业务。预览下面的实战效果,我们将会从0到1实现这个系列的项目。包括大量的原生js知识,css3动画的开发,以及页面的交互实现。 效果预览 项目准备工作 封装的工具类,用于获取原生dom节点,处理原生dom事件的…...

生成树详解(STP、RSTP、MSTP)

目录 1、STP 1.概述 2.基本概念 3.端口角色及其作用 4.报文结构 5.STP的端口状态 6.三种定时器 7.STP选举步骤 8.配置BPDU的比较原则 9.TCN BPDU 10.临时环路的问题 11.传统STP的不足 拓扑变更处理过程 2、RSTP 1.端口角色 2.端口状态 3.P/A&#xff08;Propo…...

C++趣味编程:基于树莓派Pico的模拟沙漏-倾斜开关与LED的互动实现

沙漏,作为一种古老的计时工具,利用重力让沙子通过狭小通道,形成了计时效果。在现代,我们可以通过电子元件模拟沙漏的工作原理。本项目利用树莓派Pico、倾斜开关和LED,实现了一个电子沙漏。以下是项目的详细技术解析与C++代码实现。 一、项目概述 1. 项目目标 通过倾斜开关…...

Matlab Simulink 电力电子仿真-单相电压型半桥逆变电路分析

目录 一、单相电压型半桥逆变电路仿真模型 1.电路模型 2.电路模型参数 二、仿真分析 三、总结 1.优缺点 2.应用场景 一、单相电压型半桥逆变电路仿真模型 1.电路模型 单相电压型半桥逆变电路是一种常见的逆变电路&#xff0c;主要用于将直流电源转换为交流电源。 &…...

在超表面中琼斯矩阵的使用

琼斯矩阵&#xff08;Jones Matrix&#xff09; 是一种线性代数方法&#xff0c;用于描述光的偏振状态和偏振变化&#xff0c;是偏振光学中重要的数学工具。它在 超表面理论设计 中广泛应用&#xff0c;尤其是在设计和调控光与物质相互作用时&#xff0c;例如偏振控制、相位调制…...

threeJs学习 贴图 :地球

效果图&#xff1a; 贴图以后的效果&#xff1a; vue代码&#xff1a; <template><div class"scene_box"><p>创建纹理贴图TextureLoader</p><div class"canvas"></div></div> </template><script s…...

详解Rust多线程编程

文章目录 多线程模型创建和管理线程自定义线程行为线程传递数据线程间通信线程池错误处理与线程Condvar(条件变量)无锁并发高性能并发库 Rust的多线程编程提供了一种安全、高效的方式来进行并发操作。Rust的并发性设计原则之一是确保线程安全&#xff0c;同时避免运行时的开销&…...

Uniapp触底刷新

在你的代码中&#xff0c;使用了 scroll-view 来实现一个可滚动的评论区域&#xff0c;并且通过监听 scrolltolower 事件来触发 handleScrollToLower 函数&#xff0c;以实现“触底更新”或加载更多评论的功能。 关键部分分析&#xff1a; scroll-view 组件: scroll-view 是一…...

【前端】安装hadoop后,前端启动报错,yarn命令

新安装hadoop后&#xff0c;前端启动项目用yarn命令&#xff0c;报错。 报错&#xff1a;系统找不到指定的路径。 No HADOOP_CONF_DIR set. Please specify it either in yarn-env.cmd or in the environment. 解决&#xff1a;删掉hadoop目录下yarn的文件 检查&#xff1a;…...

T620存储安全方案SoC芯片技术手册

系统资源 集成32位国产CPU CK803S&#xff1b;最高工作频率260Mhz CK803S内置16KB I/D Cache&#xff0c;内置32KB DTCM 32KB ROM&#xff1b;256KB SRAM&#xff1b;8KB SRAM&#xff08;系统专用&#xff09; 512KB/1MB 片内Flash 安全算法 支持SM4数据加密&#xff0c;加密性…...

Rust循环引用与多线程并发

循环引用与自引用 循环引用的概念 循环引用指的是两个或多个对象之间相互持有对方的引用。在 Rust 中&#xff0c;由于所有权和生命周期的严格约束&#xff0c;直接创建循环引用通常会导致编译失败。例如&#xff1a; // 错误的循环引用示例 struct Node {next: Option<B…...

力扣 二叉树的锯齿形层序遍历-103

二叉树的锯齿形层序遍历-103 此题就是再二叉树层序遍历的基础上&#xff0c;加了反转当前层数组元素的函数reverse()&#xff0c;也可以不反转&#xff0c;直接在遍历当前层的所有节点的for循环里直接进行if判断&#xff0c;根据遍历方向&#xff0c;决定如何插入元素。 clas…...

PyCryptodome:Python中的密码学库

简介 PyCryptodome是一个功能强大的Python密码学库&#xff0c;提供了各种密码学算法的实现&#xff0c;包括对称加密、非对称加密、哈希函数、消息认证码等。它是对Python的Crypto库的一个现代化和增强版&#xff0c;提供了更好的性能和安全性。 Git地址 PyCryptodome的代码可…...

我眼中的“懂重构”(一)

初识重构 2017年的时候&#xff0c;领导让我看公司的一本书《重构——改善代码的既有设计》&#xff0c;这是一本JAVA版本的&#xff0c;前后看了2遍。那时候看书因为不懂看的格外仔细。我只是那时候不懂&#xff0c;然而多年后的今天我仍然发现很多人对重构充满误解。在刚进入…...

Excel中日期格式“年月日 时间”修改为“年月日”

需求&#xff1a; 将Excel中“yyyy-mm-dd hh:mm:ss”格式的时间转换为“yyyy-mm-dd”格式的时间&#xff0c;选中转换后的时间时编辑栏中依然会显示“yyyy-mm-dd hh:mm:ss”格式。 方法一、在原数据列进行转换&#xff1a; 1、选中需要转换的数据列&#xff0c;右键--【设置…...

CSS底层基础:小白速来

1. CSS简介 CSS (Cascading Style Sheets) 是一种用来描述HTML或XML文档样式的语言。它使得开发者能够控制网页的布局和外观&#xff0c;包括字体、颜色、间距等。CSS通过选择器来指定要应用样式的元素&#xff0c;并定义这些元素的具体样式属性。 基本结构示例&#xff1a; …...

【MySQL】库和表的基本操作

目录 库 库的增删查改 字符集与校验集 库的备份与恢复 表 表的创建和删除 用不同的存储引擎创建表的区别 查看表 修改表 添加删除属性 修改改变属性 上篇博客我们讲了数据库的基本理解&#xff0c;对数据库有了一个大致的概念&#xff0c;下面我们来介绍一下库和表的…...

5款AI智能办公工具丨提升办公效率‼️

办公效率低&#xff1f;工作压力大&#xff1f;别担心&#xff0c;这里有五款超实用的AI办公工具&#xff0c;帮你轻松搞定各种任务&#xff01;&#x1f31f; 简直不要太实用&#xff0c;快快收藏起来总有一天你会用得上~ 红薯通AI&#x1f4dd;写作文案的好帮手&#xff0c…...

华为HarmonyOS 让应用快速拥有账号能力 -- 3 获取用户手机号

场景介绍 当应用对获取的手机号时效性要求不高时&#xff0c;可使用Account Kit提供的手机号授权与快速验证能力&#xff0c;向用户发起手机号授权申请&#xff0c;经用户同意授权后&#xff0c;获取到手机号并为用户提供相应服务。以下只针对Account kit提供的手机号授权与快…...

lambda strem流表达式处理工具

一个通用的lambda stream流处理工具, 包含了工作中绝大部分场景常用的使用方式 import java.math.BigDecimal; import java.util.*; import java.util.function.BiFunction; import java.util.function.Consumer; import java.util.function.Function; import java.util.funct…...

Android 编译和使用libheif

项目中需要使用libheif,libde265,libyuv。一下是相应的cmakelist.txt。这里直接使用了静态库。 里面涉及到c包的链接&#xff0c;需要stdc。 ${PROJECT_SOURCE_DIR}/../jniLibs/${ANDROID_ABI}/liblibde265.a这个路径由于操作过程中copy出现问题&#xff0c;多了一层路径&…...

新一代零样本无训练目标检测

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;编程探索专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年12月2日21点02分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文链接 点击开启你的论文编程之旅h…...

神经网络入门实战:(九)分类问题 → 神经网络模型搭建模版和训练四步曲

(一) 神经网络模型搭建官方文档 每一层基本都有权重和偏置&#xff0c;可以仔细看官方文档。 pytorch 官网的库&#xff1a;torch.nn — PyTorch 2.5 documentation Containers库&#xff1a;用来搭建神经网络框架&#xff08;包含所有的神经网络的框架&#xff09;&#xff1b…...

写NFC微信小程序跳转Uri标签

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1b8bEEGz&ftt&id615391857885 Dim dispstr As String Dim status As Byte Dim status1 As Byte Dim afi As Byte Dim myctrlword As Byte Dim mypiccserial(0 To 7) …...

Gradle vs. Maven: 到底哪个更适合java 项目?

ApiHug ApiHug - API Design & Develop New Paradigm.ApiHug - API Design & Develop New Paradigm.https://apihug.com/ 首先 ApiHug 整个工具链是基于 gradle 构建,包括项目模版&#xff0c; 插件&#xff1b; 说到 Java 项目管理&#xff0c;有两个巨头脱颖而出&a…...

【赛博保安】安全日记之常用术语(一)

"企业的信息安全治理水平&#xff0c;直接取决于安全团队人员的技术专业度&#xff0c;而非运营经验值。所谓的技术&#xff0c;并非指渗透和挖洞的能力&#xff0c;而是指软件开发、IT 架构、网络拓扑相关的知识和经验。 站在乙方的角度来看&#xff0c;技术薄弱的安全人…...

设计模式 更新ing

设计模式 1、六大原则1.1 单一设计原则 SRP1.2 开闭原则1.3 里氏替换原则1.4 迪米特法则1.5 接口隔离原则1.6 依赖倒置原则 2、工厂模式 1、六大原则 1.1 单一设计原则 SRP 一个类应该只有一个变化的原因 比如一个视频软件&#xff0c;区分不同的用户级别 包括访客&#xff0…...

008静态路由-特定主机路由

按照如上配置&#xff0c;用192.168.0.1 电脑ping 192.168.1.1 发现能够ping通 用192.168.0.1 电脑ping 192.168.2.1 发现不能ping通 这是因为192.168.0.1 和 192.168.1.1 使用的是同一个路由器R1。 192.168.0.1 和 192.168.2.1 通信需要先经过R1&#xff0c;再经过R2 &#xf…...

MySQL 慢查询日志记录 SQL优化 性能优化 日志查询 Explain

介绍 慢查询日志记录了所有执行时间超过指定参数(long_query_time&#xff0c;单位:秒&#xff0c;默认10秒)的所有SQL语句的日志。MySQL的慢查询日志默认没有开启&#xff0c;需要在MySQL的配置文件(/etc/my.cnf)中配置针对这些慢查询的SQL语句进行优化。 #开启慢查询开关 s…...

VINS_MONO视觉导航算法【三】ROS基础知识介绍

文章目录 其他文章说明ROSlaunch文件基本概念定义用途 文件结构根标签常用标签\<node>\<param>\<rosparam>\<remap>\<include>\<arg>\<group> 示例基本示例嵌套示例 使用方法启动 *.launch 文件传递参数 总结 ROS topicTopic 的基本…...

Python 3 教程第13篇(集合)

Python3 集合 集合&#xff08;set&#xff09;是一个无序的不重复元素序列。 集合中的元素不会重复&#xff0c;并且可以进行交集、并集、差集等常见的集合操作。 可以使用大括号 { } 创建集合&#xff0c;元素之间用逗号 , 分隔&#xff0c; 或者也可以使用 set() 函数创建集…...

cesium 3dtile ClippingPlanes 多边形挖洞ClippingPlaneCollection

原理就是3dtiles里面的属性clippingPlanes 采用ClippingPlaneCollection&#xff0c;构成多边形来挖洞。 其次就是xyz法向量挖洞 clippingPlanes: new this.ffCesium.Cesium.ClippingPlaneCollection({unionClippingRegions: true, // true 表示多个切割面能合并为一个有效的…...

开发者如何使用GCC提升开发效率GUI操作

看此篇前请先阅读https://blog.csdn.net/qq_20330595/article/details/144139026?spm1001.2014.3001.5502 先上效果图 找到对应的环境版本 配置环境 目录结构 CtrlShiftP c_cpp_properties.json {"configurations": [{"name": "Win32","i…...

什么是隐式类型转换?

隐式类型转换&#xff08;Implicit Type Conversion&#xff09;是指编译器在没有明确要求的情况下&#xff0c;自动地将一种类型的值转换为另一种类型。C 语言支持隐式类型转换&#xff0c;这通常发生在表达式运算或函数调用中&#xff0c;以确保操作数或参数的类型兼容性。 隐…...

爬虫专栏第三篇:Python 实战:运用 requests 突破京东商品评论获取难题(含 cookie 处理与编码设置技巧

简介&#xff1a;本文以京东商品评论为例&#xff0c;详细介绍了使用requests库获取网页数据的过程&#xff0c;包括从打开商品评价页面、抓包分析找到评论接口&#xff0c;到处理cookie参数、解决cookie字符串解析问题&#xff0c;以及设置正确的编码以成功获取评论数据&#…...