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

38. 考古学家

题目描述

有一个考古学家发现一个石碑,但是很可惜,发现时其已经断成多段,原地发现n个断口整齐的石碑碎片。为了破解石碑内容,考古学家希望有程序能帮忙计算复原后的石碑文字组合数,你能帮忙吗?

输入描述

第一行输入n,n表示石碑碎片的个数。

第二行依次输入石碑碎片上的文字内容s,共有n组。

输出描述

输出石碑文字的组合(按照升序排列),行末无多余空格。

用例

输入3
a b c
输出abc
acb
bac
bca
cab
cba
说明
输入3
a b a
输出aab
aba
baa
说明
一、问题分析

首先读题,仔细看描述中的内容,发现需求是

1.有一个考古学家发现一个石碑,但是很可惜,发现时其已经断成多段

2.原地发现n个断口整齐的石碑碎片

3.为了破解石碑内容,考古学家希望有程序能帮忙计算复原后的石碑文字组合数

4.输入描述:第一行输入n,n表示石碑碎片的个数。

第二行依次输入石碑碎片上的文字内容s,共有n组。

5.输出描述:输出石碑文字的组合(按照升序排列),行末无多余空格。

二、解题思路

1.首先我们读取碎片个数int n;

scanf("%d", &n);

2.然后我们读取文字内容,存储为一个二维字符数组(通过动态分配内存实现)

char **fragments = (char **)malloc(n * sizeof(char *));

for(int i = 0; i < n; i++) {

fragments[i] = (char *)malloc(100 * sizeof(char));

scanf("%s", fragments[i]);

}

3.然后通过递归的方式手动生成所有可能的碎片文字排列组合情况,将这些排列组合存储在另一个动态分配内存的二维字符数组中。

char **result = NULL;

int resultSize = 0;

permute(fragments, 0, n, &result, &resultSize);

4.之后对这些排列组合进行排序

qsort(result, resultSize, sizeof(char *), compare);

5.排序后去除重复的组合

removeDuplicates(&result, &resultSize);

6.之后逐行输出这些排列组合

for(int i = 0; i < resultSize; i++) {

printf("%s\n", result[i]);

free(result[i]);

}

7.释放动态分配的内存避免内存泄漏

free(fragments);

free(result);

return 0;

8.使用到的库有标准库,标准输入输出库,字符串处理库

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

9.定义一个交换函数,用于交换两个字符指针所指向的字符串,在生成排列组合的过程中,通过交换指针指向的字符串来改变顺序,从而得到不同的排列情况。它接受两个二级字符指针作为参数,通过中间临时指针temp实现两个指针所指向字符串的交换。

void swap(char **a, char **b) {

char *temp = *a;

*a = *b;

*b = temp;

}

10.生成排列组合函数,这是一个递归函数,用于生成给定字符串数组fragments的所有全排列情况,并将结果存储到动态分配内存的result数组中,同时通过resultSize指针记录结果数组的大小(元素个数)。

递归终止条件:当start参数等于size - 1时,表示已经固定了前面所有位置的元素,当前位置就是最后一个位置了,此时已经生成了一种完整的排列组合。首先为这个新的排列组合分配足够的内存空间(根据每个碎片字符串长度和碎片个数计算所需字节数,额外加1是为了存储字符串结束符\0),然后通过循环将各个碎片字符串拼接起来形成一个完整的排列组合字符串newPerm。接着使用realloc函数动态调整result数组的内存大小,为新的排列组合字符串分配空间,并将其存储到result数组中,同时更新resultSize值。

递归生成排列组合部分:在start小于size - 1时,通过循环将当前位置start的元素与它后面的元素依次交换(通过调用swap函数),然后对剩余的元素(即从start + 1位置开始)递归调用permute函数来生成所有可能的排列情况,在一次递归调用返回后,再将交换的元素交换回来,回复原来的顺序,继续下一次交换和递归调用,以此类推,最终生成所有的排列组合情况。

void permute(char **fragments, int start, int size, char ***result, int *resultSize) {

if(start == size - 1) {

char *newPerm = (char *)malloc((strlen(fragments[0]) * size + 1) * sizeof(char));

newPerm[0] = '\0';

for(int i = 0; i < size; i++) {

strcat(newPerm, fragments[i]);

}

(*result) = (char **)realloc(*result, (*resultSize + 1) * sizeof(char **));

(*result)[*resultSize] = newPerm;

(*resultSize)++;

return;

}

for(int i = start; i < size; i++) {

swar(&fragments[start], &fragments[i]);

permute(fragments, start + 1, size, result, resultSize);

swap(&fragments[start], &fragments[i]);

}

}

11.比较函数,为qsort排序函数提供自定义的比较规则。qsort函数要求传入一个比较函数指针,用于比较两个元素的大小关系。在这里,比较的元素是字符指针(指向字符串),所以先通过*(char **)a和*(char **)b解引用得到实际的字符指针,再使用strcmp函数比较这两个指针所指向的字符串的大小(按照字典序比较),返回比较结果,供qsort函数根据这个结果对数组元素进行排序。

int compare(const void *a, const void *b) {

return strcmp(*(char **)a, *(char **)b);

}

12.去重函数,用于去除result数组中的重复字符串。通过循环遍历result数组,比较相邻的两个字符串(使用strcmp函数),如果不相等,就将当前字符串保留(将其复制到索引为j的位置,同时j自增1);如果相等,说明是重复的字符串,就释放其占用的内存空间(通过free函数)。最后将最后一个字符串也添加到去重后的数组中,并更新resultSize的值为去重后的数组元素个数,实现去重功能。

void removeDuplicates(char ***result, int *resultSize) {

int i, j;

for(int i = 0, j = 0; i < *resultSize - 1; i++) {

if(strcmp((*result)[i], (*result)[i + 1]) != 0) {

(*result)[j++] = (*result)[i];

}else {

free((*result)[i]);

}

}

(*result)[j++] = (*result)[*resultSize - 1];

*resultSize = j;

}

三、具体步骤

使用的语言是C

#include <stdio.h>
#include <stdlib.h>
#include <string.h>// 交换两个字符串
void swap(char **a, char **b) {char *temp = *a;*a = *b;*b = temp;
}// 生成全排列的函数,采用递归的方式
void permute(char **fragments, int start, int size, char ***result, int *resultSize) {if (start == size - 1) {// 为新的排列组合分配内存空间char *newPerm = (char *)malloc((strlen(fragments[0]) * size + 1) * sizeof(char));newPerm[0] = '\0';for (int i = 0; i < size; i++) {strcat(newPerm, fragments[i]);}// 将新的排列组合添加到结果数组中(*result) = (char **)realloc(*result, (*resultSize + 1) * sizeof(char **));(*result)[*resultSize] = newPerm;(*resultSize)++;return;}for (int i = start; i < size; i++) {swap(&fragments[start], &fragments[i]);permute(fragments, start + 1, size, result, resultSize);swap(&fragments[start], &fragments[i]);}
}// 比较两个字符串指针指向的字符串是否相等
int compare(const void *a, const void *b) {return strcmp(*(char **)a, *(char **)b);
}// 去除结果数组中的重复字符串
void removeDuplicates(char ***result, int *resultSize) {int i, j;for (i = 0, j = 0; i < *resultSize - 1; i++) {if (strcmp((*result)[i], (*result)[i + 1])!= 0) {(*result)[j++] = (*result)[i];} else {free((*result)[i]);}}(*result)[j++] = (*result)[*resultSize - 1];*resultSize = j;
}int main() {int n;scanf("%d", &n);char **fragments = (char **)malloc(n * sizeof(char *));for (int i = 0; i < n; i++) {fragments[i] = (char *)malloc(100 * sizeof(char));  // 假设每个碎片字符串最长100个字符,可根据实际调整scanf("%s", fragments[i]);}char **result = NULL;int resultSize = 0;permute(fragments, 0, n, &result, &resultSize);// 排序qsort(result, resultSize, sizeof(char *), compare);// 去重removeDuplicates(&result, &resultSize);for (int i = 0; i < resultSize; i++) {printf("%s\n", result[i]);free(result[i]);}free(fragments);free(result);return 0;
}

相关文章:

38. 考古学家

题目描述 有一个考古学家发现一个石碑&#xff0c;但是很可惜&#xff0c;发现时其已经断成多段&#xff0c;原地发现n个断口整齐的石碑碎片。为了破解石碑内容&#xff0c;考古学家希望有程序能帮忙计算复原后的石碑文字组合数&#xff0c;你能帮忙吗&#xff1f; 输入描述 第…...

商用车自动驾驶,迎来大规模量产「临界点」?

商用车自动驾驶&#xff0c;正迎来新的行业拐点。 今年初&#xff0c;交通部公开发布AEB系统运营车辆标配征求意见稿&#xff0c;首次将法规限制条件全面放开&#xff0c;有望推动商用车AEB全面标配&#xff0c;为开放场景的商用车智能驾驶市场加了一把火。 另外&#xff0c;…...

中建海龙:科技助力福城南产业片区绿色建筑发展

在快速发展的城市化进程中&#xff0c;绿色建筑以其环保、节能、可持续的特点日益受到重视。作为建筑工业化领域的领军企业&#xff0c;中建海龙科技有限公司&#xff08;简称“中建海龙”&#xff09;凭借其卓越的科技实力和创新举措&#xff0c;在推动绿色建筑发展方面做出了…...

selenium-side-runner + edge快速使用

安装和配置 Node.js 与 Selenium-Side-Runner 1. 安装 Node.js 为了使用 selenium-side-runner,首先需要在你的系统上安装 Node.js。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时,它允许开发者编写服务器端代码。 通过 Winget 安装 Node.js(适用于 Windows 10/…...

ARM发布Armv9.5架构:迈向更强性能与灵活性的新时代

2024年11月30日&#xff0c;ARM正式发布了其最新的Armv9.5架构&#xff0c;这是Arm技术发展的又一重要里程碑。从表中信息来看&#xff0c;Armv9.5架构的发布标志着该公司的架构系列在性能、灵活性和可扩展性方面取得了进一步突破。本次发布不仅是技术上的提升&#xff0c;更是…...

Pytorch的自动求导模块

文章目录 torch.autograd.backward()基本用法非标量张量的反向传播保留计算图指定输入张量高阶梯度计算 与 y.backward() 的区别torch.autograd.grad()基本用法非标量张量的梯度高阶梯度计算多输入、多输出的梯度计算未使用的输入张量保留计算图 与 backward() 的区别 torch.au…...

【React】- 跨域PDF预览、下载(改文件名)、打印

我们经常会碰到跨域来方位PDF&#xff0c;同时需要下载、打印的需求&#xff0c;通常由于浏览器的安全策略&#xff0c;可以预览&#xff0c;但是下载和打印可能会受限&#xff0c;这时候怎么办呢&#xff1f; 1.创建一个隐藏的标签 要下载 iframe 中的 PDF 文件&#xff0c;…...

HuggingFace 模型文件详解:如何加载本地模型?

HuggingFace 模型文件详解 在使用 HuggingFace 下载大型语言模型&#xff08;如 LLaMA-3-1-8B&#xff09;后&#xff0c;会发现模型目录下包含多个文件和文件夹。本文将详细介绍这些文件的作用以及它们在模型加载和推理过程中的功能。 文件结构总览 models--meta-llama--Lla…...

Boost之buffer

目录 一、定义和介绍 二、示例 1、点 单点 多点 2、线 3、面 单面 多面 三、总结 四、测试代码 一、定义和介绍 buffer函数是boost库(algorithms)算法模块中的构建缓冲区函数。 其函数原型为(此处为带策略型): template<typename GeometryIn, typename MultiPolygon, typen…...

[redux] ts声明useSelector和useDispatch

先安装 安装 | Redux 中文官网 npm install react-redux npm install reduxjs/toolkit 定义一个切片 import { createSlice } from reduxjs/toolkit;const userSlice createSlice({name: user,initialState: {name: lsm,age: 24,},reducers: {}, }); //注意这里写导出redu…...

计算机网络 (19)扩展的以太网

前言 以太网&#xff08;Ethernet&#xff09;是一种局域网&#xff08;LAN&#xff09;技术&#xff0c;它规定了包括物理层的连线、电子信号和介质访问层协议的内容。以太网技术不断演进&#xff0c;从最初的10Mbps到如今的10Gbps、25Gbps、40Gbps、100Gbps等&#xff0c;已成…...

Ubuntu 23.10 换源

查看当前Ubuntu系统的版本 使用命令&#xff1a; lsb_release -a 中科大源&#xff1a; deb https://mirrors.ustc.edu.cn/ubuntu-old-releases/ubuntu/ mantic main restricted universe multiverse deb-src https://mirrors.ustc.edu.cn/ubuntu-old-releases/ubuntu/ man…...

如何在 Ubuntu 22.04 上优化 Apache 以应对高流量网站教程

简介 在本教程中&#xff0c;我们将学习如何优化 Apache 以应对高流量网站。 当运行高流量网站时&#xff0c;确保你的 Apache Web 服务器得到优化对于有效处理负载至关重要。在本指南中&#xff0c;我们将介绍配置 Apache 以提高性能和可扩展性的基本技巧。 为高流量网站优…...

Android 性能优化:内存优化(实践篇)

1. 前言 前一篇文章Android性能优化&#xff1a;内存优化 &#xff08;思路篇&#xff09; 大概梳理了Android 内存原理和优化的必要性及应该如何优化&#xff0c;输出了一套短期和长期内存优化治理的SOP方案。 那么这一篇文章就总结下我最近在做内存优化如何实践的&#xff0…...

开源数据集成平台白皮书重磅发布《Apache SeaTunnel 2024用户案例合集》!

2025年新年临近&#xff0c;Apache SeaTunnel 社区用户案例精选&#x1f4d8;也跟大家见面啦&#xff01;在过去的时间里&#xff0c;SeaTunnel 社区持续成长&#xff0c;吸引了众多开发者的关注与支持。 为了致谢一路同行的伙伴&#xff0c;也为了激励更多人加入技术共创&…...

用python编写一个放烟花的小程序

import pygame import random # 代码解释及使用说明&#xff1a; # 首先&#xff0c;导入 pygame 和 random 库。pygame 用于创建游戏窗口和图形绘制&#xff0c;random 用于生成随机数。 # 初始化 pygame&#xff0c;并设置屏幕尺寸为 800x600 像素&#xff0c;设置窗口标题为…...

以一个实际例子来学习Linux驱动程序开发之“设备类”的相关知识【利用设备类实现对同一设备类下的多个LED灯实现点亮或关闭】

前言 对于一个设备的驱动程序来说&#xff0c;其实上层用户主要看到的、用到的就是设备文件和设备类&#xff0c;当然用得最多的是设备文件&#xff0c;虽然设备类用得不多&#xff0c;但也是每一个设备注册实例化时必须要用到的东西&#xff0c;本篇博文就以一个简单的例子说…...

培训机构Day22

今天主要还是围绕着jquery讲解的&#xff0c;没有什么可说的。 知识点&#xff1a; 常用事件类型&#xff1a; 1.click&#xff1a;单击事件。鼠标&#xff0c;或键盘都可以触发。 2.dblclick&#xff1a;双击事件。 3.contextmenu&#xff1a;右键事件。 4.键盘相关事件&…...

Synopsys软件基本使用方法

Synopsys软件基本使用方法 1 文件说明2 编译流程3 查看波形4 联合仿真 本文主要介绍Synopsys软件vcs、verdi的基本使用方法&#xff0c;相关文件可从 GitHub下载。 1 文件说明 创建verilog源文件add.v、mult.v、top.vmodule add (input signed [31:0] dina,input signed [3…...

信息科技伦理与道德1:研究方法

1 问题描述 1.1 讨论&#xff1f; 请挑一项信息技术&#xff0c;谈一谈为什么认为他是道德的/不道德的&#xff0c;或者根据使用场景才能判断是否道德。判断的依据是什么&#xff08;自身的道德准则&#xff09;&#xff1f;为什么你觉得你的道德准则是合理的&#xff0c;其他…...

手机租赁平台开发实用指南与市场趋势分析

内容概要 在当今快速变化的科技时代&#xff0c;手机租赁平台的发展如火如荼。随着越来越多的人希望使用最新款的智能手机&#xff0c;但又不愿意承担昂贵的购机成本&#xff0c;手机租赁平台应运而生。这种模式不仅为用户提供了灵活的选择&#xff0c;还为企业创造了新的商机…...

ABAQUS三维Voronoi晶体几何建模

材料晶体塑性理论与细观尺度上晶体几何模型相融合的模拟方法为探究材料在塑性变形过程中的行为机制以及晶体材料优化开辟了新途径。本案例演示在CAD软件内通过Voronoi建立晶体三维模型&#xff0c;并将模型导入到Abaqus CAE内&#xff0c;完成晶体材料的有限元建模。 在AutoC…...

职场常用Excel基础04-二维表转换

大家好&#xff0c;今天和大家一起分享一下excel的二维表转换相关内容~ 在Excel中&#xff0c;二维表&#xff08;也称为矩阵或表格&#xff09;是一种组织数据的方式&#xff0c;其中数据按照行和列的格式进行排列。然而&#xff0c;在实际的数据分析过程中&#xff0c;我们常…...

如何使用 ChatGPT Prompts 写学术论文?

第 1 部分:学术写作之旅:使用 ChatGPT Prompts 进行学术写作的结构化指南 踏上学术写作过程的结构化旅程,每个 ChatGPT 提示都旨在解决特定方面,确保对您的主题进行全面探索。 制定研究问题: “制定一个关于量子计算的社会影响的研究问题,确保清晰并与您的研究目标保持一…...

【深度学习】Java DL4J基于 LSTM 构建新能源预测模型

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探…...

Jetson系列部署YOLOv8模型教程

简介 NVIDIA Jetson系列是专为边缘计算设计的紧凑型计算模块&#xff0c;其目标用户为AI开发者、嵌入式系统工程师以及需要在设备端实时进行数据处理与AI推断的创新者。通过提供灵活的硬件平台&#xff0c;结合NVIDIA强大的GPU计算资源&#xff0c;Jetson系列能够支持复杂的机…...

【HAProxy】如何在Ubuntu下配置HAProxy服务器

HAProxy 是一款免费、开源且强大的反向代理程序&#xff0c;它为 HTTP 和 TCP 基础的应用提供了高可用性、负载均衡以及代理功能&#xff0c;因此对于管理高流量服务器&#xff08;或 Web 应用&#xff09;来说&#xff0c;通过将负载分散到多个节点服务器上&#xff0c;它是一…...

gesp(C++一级)(7)洛谷:B3863:[GESP202309 一级] 小明的幸运数

gesp(C一级)&#xff08;7&#xff09;洛谷&#xff1a;B3863&#xff1a;[GESP202309 一级] 小明的幸运数 题目描述 所有个位数为 k k k 的正整数&#xff0c;以及所有 k k k 的倍数&#xff0c;都被小明称为“ k k k 幸运数”。小明想知道正整数 L L L 和 R R R 之间&a…...

【数据库系统概论】数据库完整性与触发器--复习

在数据库系统概论中&#xff0c;数据库完整性是指确保数据库中数据的准确性、一致性和有效性的一组规则和约束。数据库完整性主要包括实体完整性、参照完整性和用户定义完整性。以下是详细的复习内容&#xff1a; 1. 数据库完整性概述 数据库完整性是指一组规则&#xff0c;这…...

【YOLOv8模型网络结构图理解】

YOLOv8模型网络结构图理解 1 YOLOv8的yaml配置文件2 YOLOv8网络结构2.1 Conv2.2 C3与C2f2.3 SPPF2.4 Upsample2.5 Detect层 1 YOLOv8的yaml配置文件 YOLOv8的配置文件定义了模型的关键参数和结构&#xff0c;包括类别数、模型尺寸、骨干&#xff08;backbone&#xff09;和头部…...

使用 commitlint 和 husky 检查提交描述是否符合规范要求

在上一小节中&#xff0c;我们了解了 Git hooks 的概念&#xff0c;那么接下来我们就使用 Git hooks 来去校验我们的提交信息。 要完成这么个目标&#xff0c;那么我们需要使用两个工具&#xff1a; 注意&#xff1a;npm 需要在 7.x 以上版本。 1. commitlint 用于检查提交信…...

QT集成IntelRealSense双目摄像头3,3D显示

前两篇文章&#xff0c;介绍了如何继承intel realsense相机和opengl。 这里介绍如何给深度数据和色彩数据一块显示到opengl里面。 首先&#xff0c;需要了解深度数据和彩色数据是如何存储的。先说彩色数据。彩色图像一般都是RGB&#xff0c;也就是每个像素有三个字节&#xf…...

Vue 中el-table-column 进行循环,页面没渲染成功

文章目录 前言效果图代码示例可能出现的问题及原因解决思路 前言 实现效果&#xff1a;el-table-column 进行循环&#xff0c;使之代码简化 遇到的问题&#xff1a; data进行默认赋值&#xff0c;操作列的删除都可以出来&#xff0c;其他表格里面的数据没出来 效果图 示例&am…...

渗透测试-非寻常漏洞案例

声明 本文章所分享内容仅用于网络安全技术讨论&#xff0c;切勿用于违法途径&#xff0c;所有渗透都需获取授权&#xff0c;违者后果自行承担&#xff0c;与本号及作者无关&#xff0c;请谨记守法. 此文章不允许未经授权转发至除先知社区以外的其它平台&#xff01;&#xff0…...

Spring Boot 实战篇(四):实现用户登录与注册功能

目录 Spring Boot 实战篇&#xff08;四&#xff09;&#xff1a;实现用户登录与注册功能 一、用户注册功能 &#xff08;一&#xff09;前端页面设计&#xff08;简要提及&#xff09; &#xff08;二&#xff09;后端实现 二、用户登录功能 &#xff08;一&#xff09;…...

VScode SSH 错误:Got bad result from install script 解決

之前vscode好好的&#xff0c;某天突然连接报错如下 尝试1. 服务器没有断开,ssh可以正常连接 2. 用管理员权限运行vscode&#xff0c;无效 3. 删除服务器上的~/.vscode-server 文件夹&#xff0c;无效 试过很多后&#xff0c;原来很可能是前一天anaconda卸载导致注册表项 步…...

openGauss与GaussDB系统架构对比

openGauss与GaussDB系统架构对比 系统架构对比openGauss架构GaussDB架构 GaussDB集群管理组件 系统架构对比 openGauss架构 openGauss是集中式数据库系统&#xff0c;业务数据存储在单个物理节点上&#xff0c;数据访问任务被推送到服务节点执行&#xff0c;通过服务器的高并…...

【ArcGISPro/GeoScenePro】检查并处理高程数据

数据 https://arcgis.com/sharing/rest/content/items/535efce0e3a04c8790ed7cc7ea96d02d/data 数字高程模型 (DEM) 是一种栅格,可显示地面或地形的高程。 数字表面模型 (DSM) 是另一种高程栅格,可显示表面的高度,例如建筑物或树冠的顶部。 您需要准备 DEM 和 DSM 以供分析…...

WebRTC的三大线程

WebRTC中的三个主要线程&#xff1a; signaling_thread&#xff0c;信号线程&#xff1a;用于与应用层交互worker_thread&#xff0c;工作线程&#xff08;最核心&#xff09;&#xff1a;负责内部逻辑处理network_thread&#xff0c;网络线程&#xff1a;负责网络数据包的收发…...

HTML-文本标签

历史上&#xff0c;网页的主要功能是文本展示。所以&#xff0c;HTML 提供了大量的文本处理标签。 1.<div> <div>是一个通用标签&#xff0c;表示一个区块&#xff08;division&#xff09;。它没有语义&#xff0c;如果网页需要一个块级元素容器&#xff0c;又没…...

C# 在PDF中添加和删除水印注释 (Watermark Annotation)

目录 使用工具 C# 在PDF文档中添加水印注释 C# 在PDF文档中删除水印注释 PDF中的水印注释是一种独特的注释类型&#xff0c;它通常以透明的文本或图片形式叠加在页面内容之上&#xff0c;为文档添加标识或信息提示。与传统的静态水印不同&#xff0c;水印注释并不会永久嵌入…...

Unity2022接入Google广告与支付SDK、导出工程到Android Studio使用JDK17进行打包完整流程与过程中的相关错误及处理经验总结

注&#xff1a;因为本人也是第一次接入广告与支付SDK相关的操作&#xff0c;网上也查了很多教程&#xff0c;很多也都是只言片语或者缺少一些关键步骤的说明&#xff0c;导致本人也是花了很多时间与精力踩了很多的坑才搞定&#xff0c;发出来也是希望能帮助到其他人在遇到相似问…...

docker部署项目

docker部署项目 &#xff08;加载tar包&#xff1a;docker image load -i mysql.tar&#xff09; 一、jdk环境配置 1.jdk下载地址 --Java Archive | Oracle 中国 --选择好版本进入 --下载Linux x64 Compressed Archive的链接 2.解压 --创建文件夹&#xff1a;mkdir /ro…...

C# 设计模式(创建型模式):工厂模式

C# 设计模式&#xff08;创建型模式&#xff09;&#xff1a;工厂模式 引言 在软件设计中&#xff0c;创建型模式是用来创建对象的设计模式&#xff0c;它们帮助我们将对象的创建过程从业务逻辑中分离出来&#xff0c;减少代码的重复性和耦合度。工厂模式作为创建型设计模式之…...

REMARK-LLM:用于生成大型语言模型的稳健且高效的水印框架

REMARK-LLM:用于生成大型语言模型的稳健且高效的水印框架 前言 提出这一模型的初衷为了应对大量计算资源和数据集出现伴随的知识产权问题。使用LLM合成类似人类的内容容易受到恶意利用,包括垃圾邮件和抄袭。 ChatGPT等大语言模型LLM的开发取得的进展标志着人机对话交互的范式…...

Lumos学习王佩丰Excel第二十三讲:Excel图表与PPT

一、双坐标柱形图的补充知识 1、主次坐标设置 2、主次坐标柱形避让&#xff08;通过增加两个系列&#xff0c;挤压使得两个柱形挨在一起&#xff09; 增加两个系列 将一个系列设置成主坐标轴&#xff0c;另一个设成次坐标轴 调整系列位置 二、饼图美化 1、饼图美化常见设置 …...

【Vue】v-if 和 :is 都是 Vue 中的指令,但它们用于不同的目的和场景

v-if v-if 是一个条件渲染指令&#xff0c;用于根据表达式的真假值来决定是否渲染一块内容。当 v-if 的表达式为真&#xff08;truthy&#xff09;时&#xff0c;Vue 会确保元素被渲染到 DOM 中&#xff1b;当表达式为假&#xff08;falsy&#xff09;时&#xff0c;元素不会被…...

private static final Logger log = LoggerFactory.getLogger()和@Slf4j的区别

一、代码方面 - private static final Logger log LoggerFactory.getLogger()方式 详细解释 这是一种传统的获取日志记录器&#xff08;Logger&#xff09;的方式。LoggerFactory是日志框架&#xff08;如 Log4j、Logback 等&#xff09;提供的工厂类&#xff0c;用于创建Lo…...

【项目】基于趋动云平台的Stable Diffusion开发

【项目】基于趋动云平台的Stable Diffusion开发 &#xff08;一&#xff09;登录趋动云&#xff08;二&#xff09;创建项目&#xff1a;&#xff08;三&#xff09;初始化开发环境&#xff1a;&#xff08;四&#xff09;运行代码&#xff08;五&#xff09;运行模型 &#xf…...

Git的.gitignore文件详解与常见用法

诸神缄默不语-个人CSDN博文目录 在日常使用 Git 进行版本控制时&#xff0c;我们经常会遇到一些不需要被提交到远程仓库的文件&#xff08;例如日志文件、临时配置文件、环境变量文件等&#xff09;。为了忽略这些文件的提交&#xff0c;Git 提供了一个非常有用的功能&#xf…...