HTML+JS实现类型excel的纯静态页面表格,同时单元格内容可编辑

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>在线表格</title><style>table {border-collapse: separate;border-spacing: 0;table-layout: fixed;  /* 固定列宽 */}td, th {border: 1px solid #ddd; /* 设置默认边框颜色为 #ddd */padding: 8px;text-align: center;white-space: nowrap;  /* 防止文字换行 */overflow: visible;    /* 让文字溢出仍然显示 */text-overflow: unset; /* 不使用省略号 */}.border-black {border: 1px solid black; /* 边框设置为黑色 */}</style>
</head>
<body><table id="data-table"></table><script>// JSON 数据,包含表格数据以及单元格合并信息和边框显示信息  merge中第一个值为列,第二个值为行const tableData = {"columWidth": [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],"rowWidth": [30, 30, 30, 30, 30, 30, 100, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30],"rows": [{"cells": ["表格"],"merge": [[24, 0]],"borderColor": [0],"fontSize": [40]},{"cells": ["", "", "", "", "", "", "", "" ,"", "", "", "", "", "", "", "" ,"", "", "", "", "", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]},{"cells": ["内容:很长的内容", "", "", "", "名称:abcdefg", "", "", "", "", "测试", "", "", "", "日期", "", "", "", "用户", "", "", "", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]},{"cells": ["", "", "", "", "", "", "", "" ,"", "", "", "", "", "", "", "" ,"", "", "", "", "", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]},{"cells": ["", "", "", "", "", "", "", "" ,"", "", "", "", "", "", "", "" ,"", "", "", "", "", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]},{"cells": ["01", "", "", "", "", "", "", "", "02", "", "", "", "", "", "", "", "03", "", "", "", "", "", "", ""],"merge": [[6, 1], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [6, 1], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [6, 1], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1]},{"cells": ["号码", "数量", "数量", "号码", "数量", "数量", "", "", "号码", "数量", "数量", "号码", "数量", "数量", "", "", "号码", "数量", "数量", "端子号", "数量", "数量", "", ""],"merge": [[0, 4], [0, 4], [0, 4], [0, 4], [0, 4], [0, 4], [0, 0], [0, 0], [0, 4], [0, 4], [0, 4], [0, 4], [0, 4], [0, 4], [0, 0], [0, 0], [0, 4], [0, 4], [0, 4], [0, 4], [0, 4], [0, 4]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1],"verticalText": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1],},{"cells": ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1]},{"cells": ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1]},{"cells": ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1]},{"cells": ["1", "1", "", "17", "1", "", "", "", "1", "1", "", "17", "1", "", "", "", "1", "1", "", "17", "1", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1]},{"cells": ["2", "1", "", "18", "1", "", "", "", "2", "1", "", "18", "1", "", "", "", "2", "1", "", "18", "1", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1]},{"cells": ["3", "1", "", "19", "1", "", "", "", "3", "1", "", "19", "1", "", "", "", "3", "1", "", "19", "1", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1]},{"cells": ["4", "1", "", "20", "1", "", "", "", "4", "1", "", "20", "1", "", "", "", "4", "1", "", "20", "1", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1]},{"cells": ["5", "1", "", "21", "1", "", "", "", "5", "1", "", "21", "1", "", "", "", "5", "1", "", "21", "1", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1]},{"cells": ["6", "1", "", "22", "1", "", "", "", "6", "1", "", "22", "1", "", "", "", "6", "1", "", "22", "1", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1]},{"cells": ["7", "1", "", "23", "1", "", "", "", "7", "1", "", "23", "1", "", "", "", "7", "1", "", "23", "1", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1]},{"cells": ["8", "1", "", "24", "1", "", "", "", "8", "1", "", "24", "1", "", "", "", "8", "1", "", "24", "1", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1]},{"cells": ["9", "1", "", "25", "1", "", "", "", "9", "1", "", "25", "1", "", "", "", "9", "1", "", "25", "1", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1]},{"cells": ["10", "1", "", "26", "1", "", "", "", "10", "1", "", "26", "1", "", "", "", "10", "1", "", "26", "1", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1]},{"cells": ["11", "1", "", "27", "1", "", "", "", "11", "1", "", "27", "1", "", "", "", "11", "1", "", "27", "1", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1]},{"cells": ["12", "1", "", "28", "1", "", "", "", "12", "1", "", "28", "1", "", "", "", "12", "1", "", "28", "1", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1]},{"cells": ["13", "1", "", "29", "1", "", "", "", "13", "1", "", "29", "1", "", "", "", "13", "1", "", "29", "1", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1]},{"cells": ["14", "1", "", "30", "1", "", "", "", "14", "1", "", "30", "1", "", "", "", "14", "1", "", "30", "1", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1]},{"cells": ["15", "1", "", "31", "1", "", "", "" ,"15", "1", "", "31", "1", "", "", "" ,"15", "1", "", "31", "1", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1]},{"cells": ["", "", "", "", "", "", "", "" ,"", "", "", "", "", "", "", "" ,"", "", "", "", "", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]},{"cells": ["", "", "", "", "", "", "", "" ,"", "", "", "", "", "", "", "" ,"", "", "", "", "", "", "", ""],"merge": [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]],"borderColor": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}]};// 动态绘制表格function drawTable(data) {const table = document.getElementById('data-table');// 标记哪些单元格已经合并,防止重复渲染const mergedCells = [];// 绘制数据行data.rows.forEach((rowData, rowIndex) => {const tr = document.createElement('tr');rowData.cells.forEach((cellData, index) => {const td = document.createElement('td');// 跳过已经合并过的单元格if (mergedCells[rowIndex] && mergedCells[rowIndex][index]) {return;  // 跳过合并的单元格}td.textContent = cellData;//设置列宽if (data.columWidth[index]){td.style.maxWidth = data.columWidth[index] + 'px';td.style.minWidth = data.columWidth[index] + 'px';}//设置行高if (data.rowWidth[rowIndex]){td.style.maxHeight = data.rowWidth[rowIndex] + 'px';td.style.minHeight = data.rowWidth[rowIndex] + 'px';}// 设置竖排if (rowData.verticalText && rowData.verticalText[index] === 1) {td.style.writingMode = 'vertical-rl';}// 设置文字大小if (rowData.fontSize && rowData.fontSize[index]) {td.style.fontSize = rowData.fontSize[index] + 'px';}// 合并列if (!rowData.merge[index]) {rowData.merge[index] = [0, 0];}if (rowData.merge[index][0] > 0) {td.setAttribute('colspan', rowData.merge[index][0]);// 标记合并的单元格for (let i = 0; i < rowData.merge[index][0]; i++) {mergedCells[rowIndex] = mergedCells[rowIndex] || [];mergedCells[rowIndex][index + i] = true;}}// 合并行if (rowData.merge[index][1] > 0) {td.setAttribute('rowspan', rowData.merge[index][1]);// 标记合并的单元格for (let i = 0; i < rowData.merge[index][1]; i++) {mergedCells[rowIndex + i] = mergedCells[rowIndex + i] || [];mergedCells[rowIndex + i][index] = true;}}// 设置边框if (rowData.borderColor[index] === 1) {td.classList.add('border-black');}tr.appendChild(td);});table.appendChild(tr);});editTable(table);}// 调用函数绘制表格drawTable(tableData);//编辑单元格的方法function editTable(table){let currentCell = null;  // 当前编辑的单元格let oldValue = "";  // 原始内容// 双击进入编辑模式table.addEventListener("dblclick", function(event) {if (event.target.tagName === "TD") {currentCell = event.target;  // 当前单元格oldValue = currentCell.innerText;  // 保存原始内容const input = document.createElement("input");input.type = "text";input.value = oldValue;currentCell.innerHTML = "";currentCell.appendChild(input);input.focus();// 点击其他地方退出编辑input.addEventListener("blur", function() {exitEdit();});// 按下回车退出编辑input.addEventListener("keydown", function(e) {if (e.key === "Enter") {exitEdit();}});}});// 退出编辑并显示信息function exitEdit() {if (currentCell) {const newValue = currentCell.querySelector("input").value;currentCell.innerHTML = newValue;  // 更新内容// 获取行列索引const rowIndex = currentCell.parentElement.rowIndex;const cellIndex = currentCell.cellIndex;// 显示行列及编辑前后的内容alert(`行: ${rowIndex + 1}, 列: ${cellIndex + 1}\n编辑前: ${oldValue}\n编辑后: ${newValue}`);currentCell = null;  // 清空当前编辑单元格}}// 点击其他地方退出编辑document.addEventListener("click", function(event) {if (currentCell && !currentCell.contains(event.target)) {exitEdit();}});}
</script></body>
</html>

效果如图
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gartner金融AI应用机会雷达-学习心得

一、引言 在当今数字化时代,人工智能(AI)技术正以前所未有的速度改变着各个行业,金融领域也不例外。财务团队面临着如何从AI投资中获取最大价值的挑战。许多首席财务官(CFO)和财务领导者期望在未来几年增加对AI的投入并从中获得更多收益。据调查,90%的CFO和财务领导者预…

像素着色器没有绘制的原因

背景 directX调用了 draw&#xff0c;顶点着色器运行&#xff0c;但是像素着色器没有运行。 原因 光栅化阶段被剔除 说明&#xff1a;如果几何图元&#xff08;如三角形&#xff09;在光栅化阶段被剔除&#xff0c;像素着色器就不会被调用。常见剔除原因&#xff1a; 背面…

jenkins对接、jenkins-rest

https://www.bilibili.com/video/BV1RqNRz5Eo6 Jenkins是一款常见的构建管理工具&#xff0c;配置好后操作也很简单&#xff0c;只需去控制台找到对应的项目&#xff0c;再输入分支名即可 如果每次只发个位数的项目到也还好&#xff0c;一个个进去点嘛。但如果一次要发几十个项…

北斗导航深度接入小程序打车:高精度定位如何解决定位漂移难题?

你有没有遇到过这样的尴尬&#xff1a; 在写字楼、地下车库或密集楼群中叫车&#xff0c;系统显示的位置和你实际所在位置差了几十米甚至上百米&#xff1b;司机因为找不到你而绕圈&#xff0c;耽误时间还多花平台费用&#xff1b;有时明明站在A出口&#xff0c;司机却跑到B口…

MySQL 主要集群解决方案

MySQL 主要有以下几种集群解决方案&#xff0c;每种方案针对不同的应用场景和需求设计&#xff1a; 1. MySQL Replication&#xff08;主从复制&#xff09; 类型&#xff1a;异步/半同步复制架构&#xff1a;单主多从特点&#xff1a; 读写分离&#xff0c;主库写&#xff0c…

基于vue3+express的非遗宣传网站

​ 一个课程大作业&#xff0c;需要源码可联系&#xff0c;可以在http://8.138.189.55:3001/浏览效果 前端技术 Vue.js 3&#xff1a;我选择了Vue 3作为核心前端框架&#xff0c;并采用了其最新的Composition API开发模式&#xff0c;这使得代码组织更加灵活&#xff0c;逻辑…

【7】图像变换(上)

本节偏难,不用过于深究 考纲 文章目录 可考题【简答题】补充第三版内容:图像金字塔2023甄题【压轴题】习题7.1【第三版】1 基图像2 与傅里叶相关的变换2.1 离散哈特利变换(DHT)可考题【简答题】2.2 离散余弦变换(DCT)2021甄题【简答题】2.3 离散正弦变换(DST)可考题【简…

WinUI3入门9:自制SplitPanel

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

【面板数据】上市公司投资者保护指数(2010-2023年)

上市公司投资者保护指数是基于上市公司年报中公开披露的多项内容&#xff0c;从信息透明度、公司治理结构、关联交易披露、控股股东行为规范等多个维度&#xff0c;评估企业是否在制度上和实际操作中有效保障投资者&#xff0c;特别是中小投资者的合法权益。本分享数据基于我国…

如何解决USB远距离传输难题?一文了解POE USB延长器及其行业应用

在日常办公、教学、医疗和工业系统中&#xff0c;USB接口设备扮演着越来越关键的角色。无论是视频采集设备、键盘鼠标&#xff0c;还是打印机、条码枪&#xff0c;USB早已成为主流连接标准。然而&#xff0c;USB原生传输距离的限制&#xff08;通常在5米以内&#xff09;常常成…

PostgreSQL(TODO)

(TODO) 功能MySQLPostgreSQLJSON 支持支持&#xff0c;但功能相对弱非常强大&#xff0c;支持 JSONB、索引、函数等并发控制行级锁&#xff08;InnoDB&#xff09;&#xff0c;不支持 MVCC多版本并发控制&#xff08;MVCC&#xff09;&#xff0c;性能更好存储过程/触发器支持&…

LINUX 623 FTP回顾

FTP 权限 /etc/vsftpd/vsftpd.conf anonymous_enableNO local_enableNO 服务器 .20 [rootweb vsftpd]# grep -v ^# vsftpd.conf anonymous_enableNO local_enableYES local_root/data/kefu2 chroot_local_userYES allow_writeable_chrootYES write_enableYES local_umask02…

leetcode:77. 组合

学习要点 学习回溯思想&#xff0c;学习回溯技巧&#xff1b;大家应当先看一下下面这几道题 leetcode&#xff1a;46. 全排列-CSDN博客leetcode&#xff1a;78. 子集-CSDN博客leetcode&#xff1a;90. 子集 II-CSDN博客 题目链接 77. 组合 - 力扣&#xff08;LeetCode&#x…

自定义主题,echarts系列嵌套

自定义主题&#xff0c;echarts系列嵌套&#xff0c;完善map地图系列与lines系列抛物线 自定义主题开发设计&#xff08;如传感器数据可视化&#xff09; 1.使用typetreemap自定义 TreeMap 主题&#xff08;矩形树图系列&#xff09; 2.在矩形树图中画typelines动态连线和typee…

速度与精度的结合:Faster R-CNN模型的性能剖析

目标检测作为计算机视觉领域的核心问题之一&#xff0c;其重要性随着深度学习技术的发展而日益凸显。本文深入探讨了基于深度学习的Faster R-CNN模型&#xff0c;这是一种革命性的目标检测框架&#xff0c;它通过引入区域提议网络&#xff08;Region Proposal Network, RPN&…

计算机网络--期末速通版

以下总结提纲来自于hcgg&#xff0c;伟大无需多言。socket编程没有写进去&#xff0c;Rdt的话我后来感觉可能只考概念&#xff0c;其余我感觉会考的部分都在里面了&#xff0c;如果有错误或者解释不清楚造成的疑问&#xff0c;希望大家及时指正&#xff0c;感谢。 应用层 DNS…

AI浪潮拐点:MCP与A2A协议如何重塑AI智能体协作生态

一、AI技术演进的必然拐点:从单机智能到群体协作 当AI技术从单模型推理迈向复杂系统协作,MCP(模型协作协议)与A2A(智能体间协作协议)的诞生标志着产业变革的关键转折点。这一演进并非偶然,而是技术发展与社会需求双重驱动的必然结果。 从技术脉络看,AI正经历从"…

Python pyecharts基础(一)

pyecharts 安装 pip安装 pip(3) install pyecharts源码安装 $ git clone https://github.com/pyecharts/pyecharts.git $ cd pyecharts $ pip install -r requirements.txt $ python setup.py install # 或者执行 python install.py查看版本 import pyecharts print(pyecha…

【论文阅读】人工智能在直升机航空电子系统中的应用

人工智能在直升机航空电子系统中的应用 论文摘要文章结构参考文献 论文摘要 论文摘要:在现代战争形势日趋信息化、智能化的背景下&#xff0c;将人工智能应用于武器装备已经是大势所趋。针对直升机飞行任务的特征&#xff0c;对其发展状况进行了描述&#xff0c;并对其作业能力…

矩阵阶数(线性代数) vs. 张量维度(深度学习):线性代数与深度学习的基石辨析,再也不会被矩阵阶数给混淆了

文章目录 前言第一部分&#xff1a;重温矩阵阶数 - 方阵的专属标签第二部分&#xff1a;深入张量维度 - 深度学习的多维容器第三部分&#xff1a;核心区别总结第四部分&#xff1a;在深度学习中为何混淆&#xff1f;如何区分&#xff1f;结论 前言 在线性代数的殿堂里&#xf…