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

在线代码编辑器

在线代码编辑器

    • 文章说明
    • 前台核心代码
    • 后台核心代码
    • 效果展示
    • 源码下载

文章说明

采用Java结合vue3设计实现的在线代码编辑功能,支持在线编辑代码、运行代码,同时支持导入文件,支持图片识别,支持复制代码,可将代码导出为图片

暂时还未添加图片代码识别导入的功能,然后目前Linux版本下安装C#的编译器我还没找到好的方案,这个C#代码运行在Linux环境下暂时有点问题

目前对于代码安全方面还未添加校验,只作为简单的学习使用,存在着不小的风险,后续会考虑新开坑,书写更完善的在线编辑器

目前的这个结果展示的编码方面还有一些问题,主要是控制台输入、命令行以及文件本身的编码会有不一致的情况,有些难整,后续考虑采用新方案给这个问题解决一下

前台核心代码

前台主要采用 md-editor-v3 编辑器作为代码编辑区域,虽然没有提示功能,但是展示效果上会好一些,然后运行的时候调用后台接口,采用Java调用cmd命令行来实现代码的运行

其中代码下载为图片采用的是对dom对象进行下载,采用html2canvas来实现,会有一些小bug,不过效果感觉还可以

前台核心代码

<script setup>
import {MdEditor, MdPreview} from 'md-editor-v3';
import 'md-editor-v3/lib/style.css';
import 'md-editor-v3/lib/preview.css';
import {computed, onBeforeMount, reactive, ref, watch} from "vue";
import html2canvas from "html2canvas";
import {confirm,downloadFileToLocalByUrl,exportCommon,getRequest,loading,message,postRequest,prompt
} from "@/util";const data = reactive({language: "",codeText: "",inputText: "",displayText: "",exportDialogVisible: false,exportImgUrl: "",uploadExist: true,
});const languageList = ["Java","Python","Javascript","C","C++","C#",
];const codeText = computed(() => {return "```" + data.language + "\n" + data.codeText + "\n```"
});function exportCodeToImg() {const displayContent = document.getElementsByClassName("display-content")[0];data.exportDialogVisible = true;html2canvas(displayContent, {}).then((canvas) => {data.exportImgUrl = canvas.toDataURL('image/png');});
}function exportCode() {prompt("导出代码文件", "导出代码文件名称", data.language + "_" + new Date().toLocaleString() + ".txt", (value) => {exportCommon(data.codeText, value);});
}function exportCodeToImgConfirm() {prompt("导出代码图片", "导出代码图片名称", data.language + "_" + new Date().toLocaleString() + ".png", (value) => {downloadFileToLocalByUrl(data.exportImgUrl, value);data.exportDialogVisible = false;});
}function reset() {confirm("确认清空吗,包括代码区域、控制台文件输入以及结果展示区域?", () => {data.codeText = "";data.inputText = "";data.displayText = "";});
}function run() {if (!data.language) {message("请先选择编程语言", "warning");return;}const loadingInstance = loading("运行中...");postRequest("/codeRunner/run", null, {language: data.language,codeText: data.codeText,inputText: data.inputText,}).then((res) => {loadingInstance.close();if (res.data.code === 200) {data.displayText = res.data.data;message("代码运行成功", "success");} else if (res.data.code === 500) {message("代码运行失败", "error");}})
}const languageText = {};onBeforeMount(async () => {for (let i = 0; i < languageList.length; i++) {languageText[languageList[i]] = await getLanguageDefaultText(languageList[i]);}
});async function getLanguageDefaultText(language) {const res = await getRequest("/codeRunner/getDefaultText", {language});if (res.data.code === 200) {return res.data.data;} else if (res.data.code === 500) {message(language + "语言默认代码获取失败", "error");}
}watch(() => data.language, (newValue, oldValue) => {if (data.codeText) {languageText[oldValue] = data.codeText;}data.codeText = languageText[data.language];
});const uploadFileRef = ref();function uploadFile(event) {const loadingInstance = loading("导入中...");const file = event.target.files[0];const reader = new FileReader();reader.readAsText(file, 'utf8');data.uploadExist = false;reader.onload = () => {loadingInstance.close();const codeText = reader.result.toString();data.uploadExist = true;if (!codeText) {message("导出文件内容为空", "warning");return;}data.codeText = codeText;}
}function singleImport() {if (!data.language) {message("请先选择编程语言", "warning");return;}if (!data.uploadExist) {return;}uploadFileRef.value.click();
}
</script><template><div class="container"><div class="tool-bar"><div class="row"><el-select v-model="data.language" placeholder="请选择编程语言" style="width: 80%"><template v-for="item in languageList" :key="item"><el-option :label="item" :value="item"/></template></el-select></div><div class="row" style="margin-top: -0.5rem"><el-button type="primary" @click="run">运行</el-button><el-button type="danger" @click="reset">清空</el-button><el-button type="danger" @click="singleImport">导入代码</el-button><input v-if="data.uploadExist" ref="uploadFileRef" accept=".txt,.java,.py,.js,.c,.cpp,.cs" style="display: none"type="file" @change="uploadFile($event)"></div><div class="row" style="margin-top: -0.5rem"><el-button type="primary" @click="exportCode">导出代码</el-button><el-button type="danger" @click="exportCodeToImg">下载为图片</el-button></div></div><div class="content-container"><div class="editor-content"><MdEditor v-model="data.codeText" :preview="false" :toolbars="[]" placeholder="代码输入区域"style="height: 100%; width: 100%" theme="dark"/></div><div class="display-content"><MdPreview v-model="codeText" :show-code-row-number="false" style="height: 100%; width: 100%"/></div><div class="input-content"><MdEditor v-model="data.inputText" :preview="false" :toolbars="[]" placeholder="控制台文件输入区域"style="height: 100%; width: 100%" theme="dark"/></div><div class="result-content"><MdEditor v-model="data.displayText" :preview="false" :toolbars="[]" placeholder="结果展示区域" read-onlystyle="height: 100%; width: 100%" theme="dark"/></div></div></div><el-dialog v-model="data.exportDialogVisible" title="代码下载为图片" width="90%"><img :src="data.exportImgUrl" alt="" style="width: 100%; height: auto"/><template #footer><el-button type="primary" @click="data.exportDialogVisible = false">取消</el-button><el-button type="danger" @click="exportCodeToImgConfirm">确认</el-button></template></el-dialog>
</template><style lang="scss">
* {padding: 0;margin: 0;box-sizing: border-box;
}.container {width: 100vw;height: 100vh;display: flex;flex-direction: column;.tool-bar {height: 9rem;background-color: #282c34;border-bottom: 0.1rem solid gray;display: flex;flex-direction: column;align-items: center;justify-content: center;user-select: none;.row {width: 100%;flex: 1;display: flex;align-items: center;justify-content: center;}}.content-container {flex: 1;overflow: auto;display: flex;flex-direction: column;&::-webkit-scrollbar {width: 0;height: 0;}.md-editor-footer {display: none;}.cm-scroller {background-color: #282c34;}.editor-content {height: fit-content;border-bottom: 0.1rem solid gray;}.display-content {height: fit-content;border-bottom: 0.1rem solid gray;.md-editor-preview-wrapper {padding: 0;}.md-editor-code {margin: 0;}.md-editor-code-head {border-radius: 0 !important;}code {border-radius: 0 !important;white-space: pre-wrap;}}.input-content {flex: 1;background-color: #282c34;border-bottom: 0.1rem solid gray;}.result-content {flex: 1;background-color: #282c34;}}
}
</style>

后台核心代码

后台采用命令行运行代码,在Java、C、C++、C#,代码运行时会需要多步骤进行,目前采用的都是将代码写入到指定文件,然后采用指定命令运行绝对路径的文件,限制较大,后续考虑运行项目的形式,可以更加方便的解决文件编码问题以及代码运行问题

Java调用cmd运行代码工具类

package com.boot.util;import lombok.extern.slf4j.Slf4j;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Date;import static com.boot.util.DefaultConfig.*;
import static com.boot.util.LanguageType.*;/*** @author bbyh* @date 2023/2/27 0027 15:10*/
@Slf4j
public class ExecUtil {public static String exec(String language, String codeText, String inputText) throws Exception {File codeTextInputFile = new File(LANGUAGE_INPUT_FILE_MAP.get(language));if (codeTextInputFile.exists()) {try (FileOutputStream outputStream = new FileOutputStream(codeTextInputFile)) {outputStream.write(codeText.getBytes(StandardCharsets.UTF_8));}}File inputTextInputFile = new File(INPUT_TEXT_PUT_FILE);if (inputTextInputFile.exists()) {try (FileOutputStream outputStream = new FileOutputStream(inputTextInputFile)) {outputStream.write(inputText.getBytes(StandardCharsets.UTF_8));}}if (judgeLinux()) {int exeCode = execLinux(language);logCodeTextRunLog(language, codeText, inputText, exeCode);} else if (judgeWindows()) {int exeCode = execWindows(language);logCodeTextRunLog(language, codeText, inputText, exeCode);}String[] outputFileNames = {ERROR_OUTPUT_FILE, OUTPUT_FILE};for (String outputFileName : outputFileNames) {File outputFile = new File(outputFileName);if (outputFile.exists()) {try (FileInputStream inputStream = new FileInputStream(outputFile)) {byte[] buf = new byte[1024 * 1024];int read = inputStream.read(buf);if (read >= 0) {String result = new String(buf, 0, read);String encoding = getEncoding(result);if (!"".equals(encoding)) {return new String(buf, 0, read, encoding);}}}}}return "";}private static void logCodeTextRunLog(String language, String codeText, String inputText, int exeCode) {log.info("运行时间:{}", new Date());log.info("编程语言:{}", language);log.info("运行代码:{}", codeText);log.info("运行输入:{}", inputText);log.info("运行结果:{}", exeCode);}private static int execLinux(String language) throws Exception {switch (language) {case JAVA:if (execLinuxCommand("javac " + JAVA_INPUT_FILE + " > " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE) == 0) {int start = JAVA_INPUT_FILE.lastIndexOf("/") + 1;int end = JAVA_INPUT_FILE.lastIndexOf(".");String javaClassFileName = JAVA_INPUT_FILE.substring(start, end);return execLinuxCommand("java -classpath " + LINUX_PREFIX + " " + javaClassFileName + " < " + INPUT_TEXT_PUT_FILE + " > " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE);}return 0;case PYTHON:return execLinuxCommand("python " + PYTHON_INPUT_FILE + " < " + INPUT_TEXT_PUT_FILE + " > " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE);case JAVASCRIPT:return execLinuxCommand("node " + JAVASCRIPT_INPUT_FILE + " < " + INPUT_TEXT_PUT_FILE + " > " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE);case C:if (execLinuxCommand("gcc " + C_INPUT_FILE + " -o " + LINUX_PREFIX + "a.exe > " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE) == 0) {return execLinuxCommand(LINUX_PREFIX + "a.exe < " + INPUT_TEXT_PUT_FILE + " > " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE);}return 0;case C_PLUS_PLUS:if (execLinuxCommand("g++ " + C_PLUS_PLUS_INPUT_FILE + " -o " + LINUX_PREFIX + "a.exe > " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE) == 0) {return execLinuxCommand(LINUX_PREFIX + "a.exe < " + INPUT_TEXT_PUT_FILE + "> " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE);}return 0;case C_SHARP:if (execLinuxCommand("csc /out:" + LINUX_PREFIX.replaceAll("/", "\\\\") + "a.exe "+ C_SHARP_INPUT_FILE.replaceAll("/", "\\\\") + " > " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE) == 0) {return execLinuxCommand(LINUX_PREFIX + "a.exe < " + INPUT_TEXT_PUT_FILE + " > " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE);}return 0;}return 0;}private static int execLinuxCommand(String command) throws Exception {ArrayList<String> commandList = new ArrayList<>();commandList.add("/bin/sh");commandList.add("-c");commandList.add(command);Process exec = Runtime.getRuntime().exec(commandList.toArray(new String[0]));return exec.waitFor();}private static int execWindows(String language) throws Exception {switch (language) {case JAVA:if (execWindowsCommand("javac " + JAVA_INPUT_FILE + " > " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE) == 0) {int start = JAVA_INPUT_FILE.lastIndexOf("/") + 1;int end = JAVA_INPUT_FILE.lastIndexOf(".");String javaClassFileName = JAVA_INPUT_FILE.substring(start, end);return execWindowsCommand("java -classpath " + WINDOWS_PREFIX + " " + javaClassFileName + " < " + INPUT_TEXT_PUT_FILE + " > " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE);}break;case PYTHON:return execWindowsCommand("python " + PYTHON_INPUT_FILE + " < " + INPUT_TEXT_PUT_FILE + " > " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE);case JAVASCRIPT:return execWindowsCommand("node " + JAVASCRIPT_INPUT_FILE + " < " + INPUT_TEXT_PUT_FILE + " > " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE);case C:if (execWindowsCommand("gcc " + C_INPUT_FILE + " -o " + WINDOWS_PREFIX + "a.exe > " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE) == 0) {return execWindowsCommand(WINDOWS_PREFIX + "a.exe < " + INPUT_TEXT_PUT_FILE + " > " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE);}return 0;case C_PLUS_PLUS:if (execWindowsCommand("g++ " + C_PLUS_PLUS_INPUT_FILE + " -o " + WINDOWS_PREFIX + "a.exe > " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE) == 0) {return execWindowsCommand(WINDOWS_PREFIX + "a.exe < " + INPUT_TEXT_PUT_FILE + " > " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE);}return 0;case C_SHARP:if (execWindowsCommand("csc /out:" + WINDOWS_PREFIX.replaceAll("/", "\\\\") + "a.exe "+ C_SHARP_INPUT_FILE.replaceAll("/", "\\\\") + " > " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE) == 0) {return execWindowsCommand(WINDOWS_PREFIX + "a.exe < " + INPUT_TEXT_PUT_FILE + "> " + OUTPUT_FILE + " 2> " + ERROR_OUTPUT_FILE);}return 0;}return 0;}private static int execWindowsCommand(String command) throws Exception {Process exec = Runtime.getRuntime().exec("cmd /c " + command);return exec.waitFor();}public static Boolean judgeWindows() {return System.getProperty("os.name").toLowerCase().contains("windows");}public static Boolean judgeLinux() {return System.getProperty("os.name").toLowerCase().contains("linux");}public static String getEncoding(String str) throws Exception {String[] encodes = {"UTF-8", "GBK"};for (String encode : encodes) {if (str.equals(new String(str.getBytes(encode), encode))) {return encode;}}return "";}}

效果展示

运行Java代码
在这里插入图片描述

运行Python代码
在这里插入图片描述

运行JavaScript代码
在这里插入图片描述

运行C语言代码
在这里插入图片描述

运行C++代码
在这里插入图片描述

运行C#代码
在这里插入图片描述

将代码下载为图片
在这里插入图片描述

源码下载

在线代码编辑器

相关文章:

在线代码编辑器

在线代码编辑器 文章说明前台核心代码后台核心代码效果展示源码下载 文章说明 采用Java结合vue3设计实现的在线代码编辑功能&#xff0c;支持在线编辑代码、运行代码&#xff0c;同时支持导入文件&#xff0c;支持图片识别&#xff0c;支持复制代码&#xff0c;可将代码导出为图…...

深入了解 MPlayer:Linux 系统中的多功能多媒体播放器

文章目录 深入了解 MPlayer&#xff1a;Linux 系统中的多功能多媒体播放器一、MPlayer 的安装二、MPlayer 的基本使用三、MPlayer 音频功能详解1. 支持的音频格式2. 调整音频输出设备3. 使用音频滤镜和效果4. 音频输出格式转换5. 多声道与环绕声支持6. 音频控制&#xff1a;播放…...

Netty系列-7 Netty编解码器

背景 netty框架中&#xff0c;自定义解码器的起点是ByteBuf类型的消息, 自定义编码器的终点是ByteBuf类型。 1.解码器 业务解码器的起点是ByteBuf类型 netty中可以通过继承MessageToMessageEncoder类自定义解码器类。MessageToMessageEncoder继承自ChannelInboundHandlerAdap…...

OpenHarmony标准系统上实现对rk系列芯片NPU的支持(npu使用)

在上篇文章中&#xff0c;我们学习了移植rk的npu驱动到OpenHarmony提供的内核。本文我们来学习如何在OpenHarmony标准系统rk系列芯片如何使用npu OpenHarmony RK系列芯片运行npu测试用例 在移植npu驱动到OpenHarmony之后&#xff0c;来运行npu样例进行简单测试 1.O 测试准备…...

大表性能优化的关键技术

1 引言 在现代企业应用中,随着数据量的不断增长,大表的性能优化成为数据库管理的重要环节。本文将探讨大表性能优化的关键技术,包括索引优化、查询优化、分区分表、读写分离以及缓存策略等方面。通过综合运用这些技术,可以显著提升大表的处理效率和响应速度,确保系统的稳…...

广联达 Linkworks办公OA Service.asmx接口存在信息泄露漏洞

漏洞描述 广联达科技股份有限公司以建设工程领域专业应用为核心基础支撑&#xff0c;提供一百余款基于“端云大数据”产品/服务&#xff0c;提供产业大数据、产业新金融等增值服务的数字建筑平台服务商。广联达OA存在信息泄露漏洞&#xff0c;由于某些接口没有鉴权&#xff0c…...

如何成为成功的AI产品经理:经验与策略分享

引言 随着人工智能(AI)技术的迅猛发展,AI产品经理(AI PM)的角色变得越来越重要。Google AI产品负责人Marily Nika在最近的一次播客中分享了她在AI产品管理领域的宝贵经验和见解。本文将整理并总结她的核心内容,帮助有志于进入AI PM领域的人士了解如何准备、所需的核心技…...

spring loCDI 详解

文章目录 一、IoC & DI 基本知识1.1 IoC 的基本概念&#xff1a;1.2 IoC 的优势&#xff1a;1.3 DI 介绍&#xff1a; 二、IoC 详解2.1 Spring 容器&#xff1a;2.2 被存储 Bean 的命名约定&#xff1a;2.3 Bean 的存储方式&#xff1a;2.3.1 五大类注解&#xff1a;2.3.1.…...

遇到 Docker 镜像拉取失败的问题时该如何解决

遇到 Docker 镜像拉取失败的问题时&#xff0c;可以按照以下步骤进行排查和解决&#xff1a; 1. 检查网络连接 确保你的计算机可以访问互联网。尝试 ping 通 Docker Hub 或其他镜像仓库的域名&#xff1a; ping hub.docker.com2. 检查 Docker 服务状态 确保 Docker 服务正在…...

【C/C++】错题记录(三)

题目一 题目二 题目三 题目四 题目五 题目六 题目七&#xff1f;&#xff1f;&#xff1f; 题目八 这道题主要考查对数据类型和位运算的理解与运用。 分析选项 A&#xff1a; *((unsigned char *)(&number) 1)0xcd; 这里将 number 的地址强制转换为 unsigned char* 类型&a…...

深入理解Web浏览器与服务器的连接过程

目录 1. 域名解析&#xff1a;找到地址 2. TCP连接&#xff1a;建立通信 3. HTTP请求&#xff1a;点菜 4. 服务器处理请求&#xff1a;厨房做菜 5. HTTP响应&#xff1a;上菜 6. 客户端接收响应&#xff1a;品尝美食 7. 关闭TCP连接&#xff1a;吃完离开 8. 持久连接&a…...

深入解析 https

我的主页&#xff1a;2的n次方_ 1. 背景介绍 在使用 http 协议的时候是不安全的&#xff0c;可能会出现运营商劫持等安全问题&#xff0c;运营商通过劫持 http 流量&#xff0c;篡改返回的网页内容&#xff0c;例如广告业务&#xff0c;可能会通过 Referer 字段 来统计是…...

NP-hard问题

一、前置知识 1.多项式 多项式是由变量&#xff08;如x、y等&#xff09;和系数通过有限次的加、减、乘运算得到的表达式。例如3x^22x 1就是一个关于(x)的多项式 2.时间复杂度 时间复杂度是用来衡量算法运行效率的一个指标。它描述了算法运行时间随着输入规模增长而增长的量…...

【Nacos架构 原理】内核设计之Nacos通信通道

文章目录 Nacos通信通道 &#xff08;长链接&#xff09;现状背景场景分析配置服务 长链接核心诉求功能性诉求负载均衡连接生命周期 Nacos通信通道 &#xff08;长链接&#xff09; 现状背景 Nacos 1.X 版本 Config/Naming 模块各自的推送通道都是按照自己的设计模型来实现的…...

【单片机】单片机map表详细解析

1、RO Size、RW Size、ROM Size分别是什么 首先将map文件翻到最下面&#xff0c;可以看到 1.1 RO Size&#xff1a;只读段 Code&#xff1a;程序的代码部分&#xff08;也就是 .text 段&#xff09;&#xff0c;它存放了程序的指令和可执行代码。 RO Data&#xff1a;只读…...

考研笔记之操作系统(三)- 存储管理

操作系统&#xff08;三&#xff09;- 存储管理 1. 内存的基础知识1.1 存储单元与内存地址1.2 按字节编址和按字编址1.3 指令1.4 物理地址和逻辑地址1.5 从写程序到程序运行1.6 链接1.6.1 静态链接1.6.2 装入时动态链接1.6.3 运行时动态链接 1.7 装入1.7.1 概念1.7.2 绝对装入1…...

vim/vi常用命令大全

启动和退出Vim 命令/操作作用vim启动Vimvim filename直接打开指定的文件命令模式下&#xff0c;输入 :q退出&#xff0c;q!强制退出:wq保存并退出:wq!保存并强制退出vim中按下a进入编辑模式Esc退出编辑模式进入命令模式new创建新窗口close关闭窗口 光标移动 命令/操作作用h、…...

什么是大语言模型,一句话解释

定义 先说语言模型&#xff08;Language Model&#xff09;旨在建模词汇序列的生成概率&#xff0c;提升机器的语言智能水平&#xff0c;使机 器能够模拟人类说话、写作的模式进行自动文本输出。 白话&#xff1a;语言模式是一种解决机器与人类交流的手段&#xff0c;机器人与…...

【数据库】 MongoDB 撤销用户的角色和权限

在 MongoDB 中&#xff0c;撤销用户的角色和权限是一项重要的管理任务&#xff0c;确保用户仅能访问和操作他们需要的数据。以下是如何撤销用户的角色和权限的详细步骤。 1. 使用 MongoDB Shell 撤销角色 1.1 修改用户角色 要撤销用户的角色&#xff0c;可以使用 updateUser…...

vue2接入高德地图实现折线绘制、起始点标记和轨迹打点的完整功能(提供Gitee源码)

目录 一、申请密钥 二、安装element-ui 三、安装高德地图依赖 四、完整代码 五、运行截图 六、官方文档 七、Gitee源码 一、申请密钥 登录高德开放平台&#xff0c;点击我的应用&#xff0c;先添加新应用&#xff0c;然后再添加Key。 ​ 如图所示填写对应的信息&…...

【重学 MySQL】四十六、创建表的方式

【重学 MySQL】四十六、创建表的方式 使用CREATE TABLE语句创建表使用CREATE TABLE LIKE语句创建表使用CREATE TABLE AS SELECT语句创建表使用CREATE TABLE SELECT语句创建表并从另一个表中选取数据&#xff08;与CREATE TABLE AS SELECT类似&#xff09;使用CREATE TEMPORARY …...

WPS在表格中填写材料时,内容过多导致表格不换页,其余内容无法正常显示 以及 内容过多,导致表格换页——解决方法

一、现象 1&#xff0c;内容过多导致表格不换页&#xff0c;其余内容无法正常显示 2&#xff0c;内容过多&#xff0c;导致表格换页 二、解决方法 在表格内右击&#xff0c;选择表格属性 在菜单栏选择行&#xff0c;勾选允许跨页断行&#xff0c;点击确定即可 1&#xff0…...

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-01

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-01 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-01目录1. Beyond Text-to-Text: An Overview of Multimodal and Generative Artificial Intelligence for Education Using Topi…...

第一弹:C++ 的基本知识概述

文章目录 知识点 1&#xff1a;C 的概述1. C的特征2. C 程序的编辑、编译和执行3. 第一个 C 源程序4. 面向对象程序设计思想4.1 面向对象程序设计思想初始4.2 面向对象程序设计思想的核心 知识点 2&#xff1a;C 对 C 的扩展1. 作用域访问运算符 ::1.1 全局变量和局部变量1.2 作…...

在职场,没人告诉你的人情世故

职场中&#xff0c;想要过得游刃有余&#xff0c;就必须懂一些人情世故和处事原则。今天&#xff0c;给大家分享个人认为非常重要的5点人情世故&#xff0c;希望能帮你在职场里少吃点亏、多份从容。 01 不要空口道谢 在职场中&#xff0c;别人帮了你&#xff0c;口头道谢是基…...

激光切割机适用材质有哪些

激光切割机是一种利用激光束对各种材料进行高精度、高速度切割的机器设备。其适用材质广泛&#xff0c;包括但不限于以下两大类&#xff1a; 一、金属材料 不锈钢&#xff1a;激光切割机较容易切割不锈钢薄板&#xff0c;使用高功率YAG激光切割系统&#xff0c;切割不锈钢板的…...

C#自定义工具类-数组工具类

目录 数组工具类基本操作 1.排序&#xff1a;升序&#xff0c;降序 2.查找 1&#xff09;查找最值&#xff1a;最大值&#xff0c;最小值 2&#xff09;查找满足条件的单个对象 3&#xff09;查找满足条件的所有对象 4&#xff09;选取数组中所有对象的某一字段 完整代…...

18年408数据结构

第一题&#xff1a; 解析&#xff1a;这道题很简单&#xff0c;按部就班的做就可以了。 画出S1&#xff0c;S2两个栈的情况&#xff1a; 第一轮&#xff1a; S1: S2: 2 3 - 8 * 5 从S1中依次弹…...

Android 通过自定义注解实现Activity间跳转时登录路由的自动拦截

应用场景 在Android 中部分软件需要登录才能使用&#xff0c;但是有的页面又不需要登录&#xff0c;Android不同于Web可以直接拦截重定向路由&#xff0c;因此如果在Android中如果需要检测是否登录&#xff0c;如果没登录跳转登录的话就需要再每个页面中判断&#xff0c;当然也…...

安全开发指南

1. 准备工作与培训 安全文化与意识&#xff1a;建立并强化组织的安全文化&#xff0c;对所有成员进行安全意识培训。安全策略与标准&#xff1a;制定明确的安全开发策略、标准和流程&#xff0c;包括代码审查、安全测试、事件响应等。工具与技术选择&#xff1a;选择合适的开发…...

深圳网站制作公司报价/seo千享科技

开发 sdk 时经常遇到需要打包的情况&#xff0c;如果是多人开发的 sdk 自然是搭建自动化打包平台&#xff0c;利用自动化打包平台比较方便快捷&#xff0c;但单人开发的 sdk 还是配置打包脚本比较方便快捷&#xff0c;本文介绍两种常见的 sdk 开发方式下的打包方式。 1.使用 co…...

医药企业网站建设/秒收录关键词代发

C语言中内存的管理主要是依据malloc和free实现的&#xff0c;其中malloc主要是实现内存的分配&#xff0c;而free则是实现内存的释放。虽然这是我们已经很熟悉的&#xff0c;但是还是存在一些问题。特别是当结构体中存在指针的情况下&#xff0c;各种问题也就会展现出来。 其中…...

建网站做相亲/正规电商平台有哪些

系统环境 ubuntu16.04 安装chefDK 下载地址&#xff1a; https://packages.chef.io/files/stable/chefdk/4.12.0/ubuntu/16.04/chefdk_4.12.0-1_amd64.deb dpkg -i chefdk_4.12.0-1_amd64.deb安装完成后&#xff0c;~/.chef已经自动创建了 下面这个文件非必要&#xff0c;也…...

乐云seo商城网站建设/男生最喜欢的浏览器

声明&#xff1a; 以下内容为阅读由周志明编著的《深入理解Java虚拟机JVM高级特性与最佳实战》&#xff08;第二版&#xff09;自行总结记录&#xff0c;算不上完全解读了大神的意思&#xff0c;但也没有瞎写。如果写的不清楚的地方&#xff0c;还望能够自行阅读原著。这里写记…...

惠民建设局网站是哪个/友情链接大全

使用python请求服务器 可以查看header信息是这样的&#xff1a; Host: 127.0.0.1:3369 User-Agent: python-requests/3.21.0 Accept-Encoding: gzip, deflate Accept: / Connection: keep-alive很明显暴露了你不是普通用户&#xff0c;容易被封&#xff0c;所以需要把自己伪装…...

网站支付页面怎么做的/做网络推广要学些什么

武汉大学计算机学院 2014 年优秀大学生暑期夏令营通知类别:教务 发布人:admin 浏览次数:1717 次 发布时间:2014-06-11 08:08:36一、 夏令营时间、地点及内容安排 时间&#xff1a;7 月 9、10、11 三天 地点&#xff1a;武汉大学计算机学院 内容安排&#xff1a; 第一天上午 营员…...