将HTML转换为PDF:使用Spire.Doc的详细指南
目录
引言
1. 为什么选择 Spire.Doc?
1.1 主要特点
1.2 适用场景
2. 准备工作
2.1 引入 Spire.Doc 依赖
2.2 禁用 SSL 证书验证
3. 实现功能
3.1 主类结构
3.2 代码解析
4. 处理图像
5. 性能优化
5.1 异步下载图像
示例代码
5.2 批量处理优化
示例代码
6. 错误处理与日志管理
6.1 错误处理
示例代码
6.2 日志管理
示例代码
7. 总结
引言
在现代软件开发中,生成 PDF 文档的需求日益增长,尤其是在金融、教育、医疗等行业。PDF 格式以其固定的外观和出色的可移植性受到广泛欢迎。本文将详细介绍如何使用 Spire.Doc 库将 HTML 文件转换为 PDF 文件。本文包括完整代码示例、相关依赖管理,以及对过程中的关键概念的深入探讨。
1. 为什么选择 Spire.Doc?
Spire.Doc 是一款强大的 .NET 文档处理库,支持多种文档格式的创建、编辑和转换。使用 Spire.Doc 可以简化 HTML 转 PDF 的过程,支持复杂的 HTML 内容,包括图片、样式和链接等。
1.1 主要特点
- 无依赖:Spire.Doc 不依赖于 Microsoft Office,可以直接在服务器端运行。
- 高性能:能够快速处理和转换文档。
- 易于使用:提供友好的 API 接口,便于开发者快速上手。
1.2 适用场景
- 生成报表:将动态生成的 HTML 报告转换为 PDF。
- 文档归档:将在线文档归档为 PDF,便于存储和分发。
- 邮件发送:将用户生成的内容转换为 PDF,并通过邮件发送。
2. 准备工作
在开始之前,请确保你的开发环境中已配置 Java,并安装了 IDE(如 IntelliJ IDEA 或 Eclipse)。接下来,需要在项目中添加 Spire.Doc 依赖。
2.1 引入 Spire.Doc 依赖
在你的项目中,可以通过 Maven 引入 Spire.Doc,如下所示:
<dependency> <groupId>e-iceblue</groupId> <artifactId>spire.doc.free</artifactId> <version>5.2.0</version>
</dependency>
2.2 禁用 SSL 证书验证
在处理一些需要 HTTPS 连接的 HTML 内容时,可能会遇到 SSL 证书验证问题。为了避免这些问题,可以临时禁用 SSL 验证。下面是一个实现示例:
public static void disableSSLVerification() { try { TrustManager[] trustAllCerts = new TrustManager[]{ new X509TrustManager() { public X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[] certs, String authType) { } public void checkServerTrusted(X509Certificate[] certs, String authType) { } } }; SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); HttpsURLConnection.setDefaultHostnameVerifier((hostname, session) -> true); } catch (Exception e) { e.printStackTrace(); }
}
3. 实现功能
接下来,我们将实现一个完整的 Java 类,通过读取 HTML 文件,将其转换为 PDF。在这个过程中,我们将重点介绍文件读取、HTML 内容处理和 PDF 文件生成的步骤。
3.1 主类结构
以下是我们的主类 DocToPdfConverter
的结构,这里包含了所有必要的方法:
package com.dahua.saas.illegalpunish.controller; import com.spire.doc.Document;
import com.spire.doc.FileFormat;
import com.spire.doc.Section; import javax.net.ssl.*;
import java.security.cert.X509Certificate;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern; public class DocToPdfConverter { public static void main(String[] args) throws IOException { disableSSLVerification(); String inputHtml = "C:\\cloud\\dahua\\VIASBIllegalPunish\\file\\1912202400018.doc"; Document doc = new Document(); Section sec = doc.addSection(); String htmlText = readTextFromFile(inputHtml); sec.addParagraph().appendHTML(replaceImagesWithHighRes(htmlText)); doc.saveToFile("C:\\cloud\\dahua\\VIASBIllegalPunish\\file\\1912202400018.pdf", FileFormat.PDF); doc.dispose(); } // 读取文本文件内容 public static String readTextFromFile(String fileName) throws IOException { StringBuilder sb = new StringBuilder(); BufferedReader br = new BufferedReader(new FileReader(fileName)); String content; while ((content = br.readLine()) != null) { sb.append(content); sb.append(System.lineSeparator()); } return sb.toString(); } // 替换 HTML 文本中的图片链接为高分辨率图像 public static String replaceImagesWithHighRes(String html) { String imageUrlPattern = "https?://[^\\s\"'<>]+"; Pattern pattern = Pattern.compile(imageUrlPattern); Matcher matcher = pattern.matcher(html); StringBuffer resultHtml = new StringBuffer(); while (matcher.find()) { String imageUrl = matcher.group(); String highResImage = downloadImage(imageUrl); matcher.appendReplacement(resultHtml, highResImage); } matcher.appendTail(resultHtml); return resultHtml.toString(); } // 下载图片,返回高分辨率的图像数据 public static String downloadImage(String imageUrl) { try { URL url = new URL(imageUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.connect(); InputStream input = connection.getInputStream(); // 这里可以实现将输入流转换为适合插入 PDF 的格式 return imageUrl; // 现在只是返回原始 URL } catch (IOException e) { e.printStackTrace(); return imageUrl; } }
}
3.2 代码解析
-
禁用 SSL 验证:通过调用
disableSSLVerification()
方法来忽略 SSL 证书验证,以便可以访问 HTTP 和 HTTPS 内容。 -
读取 HTML 文件:使用
readTextFromFile()
方法读取指定路径下的 HTML 文件。这个方法使用BufferedReader
逐行读取,最终返回一个完整的 HTML 内容字符串。 -
处理图片链接:在
replaceImagesWithHighRes()
方法中,首先通过正则表达式查找所有的图片链接,然后下载高分辨率的图片。在这里,具体的下载逻辑需要根据实际情况实现,例如可以选择将图像转换为 Base64 格式,并替换 HTML 内容中的src
属性以达到嵌入图像的效果。 -
生成 PDF:使用 Spire.Doc 库创建一个新的
Document
对象,并添加一个Section
,然后通过appendHTML()
方法将处理后的 HTML 内容添加到文档中。最后,调用saveToFile()
方法将文档保存为 PDF 格式的文件。
4. 处理图像
在本示例中,downloadImage
方法返回的是原始的图像 URL。在实际应用中,您可能需要将下载的图片以适当的格式嵌入 PDF,例如将其转换为 Base64 字符串。下面是一个简单的实现示例:
public static String downloadImage(String imageUrl) { try { URL url = new URL(imageUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.connect(); InputStream input = connection.getInputStream(); // Convert InputStream to byte array byte[] imageBytes = input.readAllBytes(); String base64Image = Base64.getEncoder().encodeToString(imageBytes); return "data:image/png;base64," + base64Image; // Assuming image is PNG } catch (IOException e) { e.printStackTrace(); return imageUrl; }
}
5. 性能优化
在处理大量图像时,批量处理或异步下载可以显著提高程序的性能和响应速度。以下是一些优化建议和具体实现策略。
5.1 异步下载图像
使用 Java 的并发 API,可以实现异步下载图像。这意味着在处理 HTML 的同时,可以在后台下载图像,不阻塞主线程。
示例代码
使用 CompletableFuture
来实现异步下载图像的能力:
import java.util.concurrent.CompletableFuture; public static CompletableFuture<String> downloadImageAsync(String imageUrl) { return CompletableFuture.supplyAsync(() -> { try { URL url = new URL(imageUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.connect(); InputStream input = connection.getInputStream(); byte[] imageBytes = input.readAllBytes(); String base64Image = Base64.getEncoder().encodeToString(imageBytes); return "data:image/png;base64," + base64Image; // 假设图像为 PNG } catch (IOException e) { e.printStackTrace(); return imageUrl; } });
}
然后在 replaceImagesWithHighRes()
方法中,使用 Java 的流处理来启动异步下载:
public static String replaceImagesWithHighRes(String html) { String imageUrlPattern = "https?://[^\\s\"'<>]+"; Pattern pattern = Pattern.compile(imageUrlPattern); Matcher matcher = pattern.matcher(html); List<CompletableFuture<String>> futures = new ArrayList<>(); StringBuffer resultHtml = new StringBuffer(); while (matcher.find()) { String imageUrl = matcher.group(); CompletableFuture<String> future = downloadImageAsync(imageUrl); futures.add(future); matcher.appendReplacement(resultHtml, ""); // 先将占位符放入结果 HTML } matcher.appendTail(resultHtml); // 等待所有图像下载完成 CompletableFuture<Void> allOf = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])); allOf.join(); // 等待所有 CompletableFuture 完成 // 用下载后的图像替换 for (int i = 0; i < futures.size(); i++) { try { String downloadedImage = futures.get(i).get(); // 获取下载过的图像 String placeholder = ""; // 这里可以根据需要生成占位符 // 将占位符替换为实际的图像 resultHtml = new StringBuffer(resultHtml.toString().replaceFirst(Pattern.quote(placeholder), downloadedImage)); } catch (Exception e) { e.printStackTrace(); } } return resultHtml.toString();
}
通过以上方式,您可以实现图像的异步下载,从而提升程序的性能,特别是在处理大量数据时。
5.2 批量处理优化
如果 HTML 文件中包含大量的图像,您还可以采取以下措施进行批量处理:
- 限制并发量:在实际运行中,尤其是在网络条件不确定的情况下,限制并发请求的数量可以避免请求过载和资源竞争。可以使用 Java 的信号灯(Semaphore)来控制并发。
示例代码
import java.util.concurrent.Semaphore; private static final Semaphore semaphore = new Semaphore(5); // 最多允许 5 个并发下载 public static CompletableFuture<String> downloadImageAsync(String imageUrl) { return CompletableFuture.supplyAsync(() -> { try { semaphore.acquire(); // 获取信号量 try { // 文章前面提到的下载逻辑 URL url = new URL(imageUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); connection.connect(); InputStream input = connection.getInputStream(); byte[] imageBytes = input.readAllBytes(); String base64Image = Base64.getEncoder().encodeToString(imageBytes); return "data:image/png;base64," + base64Image; } finally { semaphore.release(); // 释放信号量 } } catch (IOException e) { e.printStackTrace(); return imageUrl; } });
}
通过这种方式,您可以控制并发量,从而降低服务器负载和提高下载成功率。
6. 错误处理与日志管理
在处理网络请求和文件操作时,错误处理至关重要。应确保在项目中实现有效的日志记录和错误处理机制。
6.1 错误处理
确保任何网络请求、文件读取和转换操作都能妥善处理异常情况。以下是一些建议:
- 捕获并记录异常:应在每个网络请求和文件操作中捕获异常并记录详细信息,以便后期调试。
- 使用重试机制:对于短暂的网络问题,可以使用重试逻辑重新尝试下载图像。
示例代码
public static String downloadImageWithRetry(String imageUrl, int retryCount) { for (int i = 0; i < retryCount; i++) { try { return downloadImage(imageUrl); // 使用之前定义的下载逻辑 } catch (IOException e) { if (i == retryCount - 1) { e.printStackTrace(); // 记录最终失败的情况 } } } return imageUrl; // 默认返回原始的 URL
}
6.2 日志管理
可以使用日志框架(如 SLF4J、Log4j)来进行日志管理。将日志记录在适当的级别(例如 INFO、WARN、ERROR),可以帮助开发人员在出现问题时快速定位。
示例代码
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; public class DocToPdfConverter { private static final Logger logger = LoggerFactory.getLogger(DocToPdfConverter.class); public static void main(String[] args) { try { // 主逻辑 } catch (Exception e) { logger.error("Error occurred during PDF conversion", e); } }
}
7. 总结
本文介绍了如何使用 Spire.Doc 将 HTML 文件转换为 PDF 的详细过程。我们探讨了图像处理方法,包括同步和异步下载,并提供了实用的性能优化建议。此外,我们还强调了错误处理和日志管理的重要性,以增强代码的健壮性。
应用这些技术,您将能够高效地处理 HTML 文档,转化为高质量的 PDF 格式,满足现代软件开发中的各种需求。如需进一步信息或帮助,欢迎随时联系我解答您的疑问。希望本文能够为您的开发工作提供实用的参考和指导!
相关文章:
将HTML转换为PDF:使用Spire.Doc的详细指南
目录 引言 1. 为什么选择 Spire.Doc? 1.1 主要特点 1.2 适用场景 2. 准备工作 2.1 引入 Spire.Doc 依赖 2.2 禁用 SSL 证书验证 3. 实现功能 3.1 主类结构 3.2 代码解析 4. 处理图像 5. 性能优化 5.1 异步下载图像 示例代码 5.2 批量处理优化 示例代…...
HarmonyOS 实践 - 设计模式在代码中的作用
文章目录 前言设计模式概述单例模式:全局状态管理代码分析 策略模式:界面主题切换代码分析 示例测试单例模式测试策略模式测试 体验评价总结 前言 在软件开发中,设计模式是公认的最佳实践,它能帮助开发者通过模块化和规范化的代码…...
kubeadm一键部署K8S 集群架构
kubeadm一键部署K8S 集群架构(centos7) https://www.k8src.cn/ https://kubernetes.io/zh-cn/docs/home/ https://blog.csdn.net/m0_58709145/article/details/140128179 https://blog.csdn.net/jiaqijiaqi666/article/details/129745828 Kubeadm init报错[ERROR CRI]: contai…...
[NSSCTF 2022 Spring Recruit]factor
给了: 说n是p*q 先求一下p*q factordb.com 然后再让pq 得到:31207540994438423298 接着用md5加密得到falg NSSCTF{7957a92ef959998115a6bda6d992656e}...
go 中使用redis 基础用法
1、安装redis 参考链接:https://www.codeleading.com/article/98554130215/ 1.1 查看是否有redis yum 源 yum install redis没有可用的软件包,执行1.2 1.2下载fedora的epel仓库 yum install epel-release --下载fedora的epel仓库1.3启动redis s…...
git branch -r(--remotes )显示你本地仓库知道的所有 远程分支 的列表
好的,git branch -r 这个命令用于列出远程分支。让我详细解释一下: 命令: git branch -rdgqdgqdeMac-mini ProductAuthentication % git branch -rorigin/main作用: 这个命令会显示你本地仓库知道的所有 远程分支 的列表。它不…...
回归预测 | MATLAB实现CNN-BiGRU卷积神经网络结合双向门控循环单元多输入单输出回归预测
回归预测 | MATLAB实现CNN-BiGRU卷积神经网络结合双向门控循环单元多输入单输出回归预测 目录 回归预测 | MATLAB实现CNN-BiGRU卷积神经网络结合双向门控循环单元多输入单输出回归预测预测效果基本介绍程序设计参考资料预测效果 基本介绍 CNN-BiGRU,即卷积神经网络(CNN)与双…...
【人工智能数学基础】——深入详解贝叶斯理论:掌握贝叶斯定理及其在分类和预测中的应用
深入详解贝叶斯理论:掌握贝叶斯定理及其在分类和预测中的应用 贝叶斯理论(Bayesian Theory)是概率论和统计学中的一个重要分支,它以托马斯贝叶斯(Thomas Bayes)命名,主要关注如何根据新的证据更…...
Gin-vue-admin(1):环境配置和安装
目录 环境配置如果443网络连接问题,需要添加代理服务器 后端运行前端运行 环境配置 git clone https://gitcode.com/gh_mirrors/gi/gin-vue-admin.git到server文件目录下 go mod tidygo mod tidy 是 Go 语言模块系统中的一个命令,用于维护 go.mod 文件…...
深入解析与防范:基于缓冲区溢出的FTP服务器攻击及调用计算器示例
深入解析与防范:基于缓冲区溢出的FTP服务器攻击及调用计算器示例 摘要 本文将详细探讨一种利用缓冲区溢出漏洞对FTP服务器进行远程攻击的技术,并通过分析给定代码示例,揭示其工作原理和潜在风险。我们将重点讨论如何在靶机上实现调用计算器…...
Gargoyle路由安装dockerd
ea8500刷石像鬼路由1.14.0,安dockerd,需先下载并安装以下依赖包,逐个安装。 kernel_5.10.176-1-6b05bc664d80d655942a20fb9ef8c3cd_arm_cortex-a15_neon-vfpv4.ipk kmod-br-netfilter_5.10.176-1_arm_cortex-a15_neon-vfpv4.ipk kmod-crypto…...
在linux系统的docker中安装GitLab
一、安装GitLab: 在安装了docker之后就是下载安装GitLab了,在linux系统中输入命令:docker search gitlab就可以看到很多项目,一般安装第一个,它是英文版的,如果英文不好可以安装twang2218/gitlab-ce-zh。 …...
滑动窗口
滑动窗口 标志: 利用两个指针 只进不退的特性 (样子与窗口类似) 解题模板 更新结果的时机 应该具体题目具体分析。 例题: 438. 找到字符串中所有字母异位词 - 力扣(LeetCode) 1658. 将 x 减到 0 的最小操作数 - 力…...
人工智能 AI 大模型研究设计与实践应用技术研究报告
人工智能 AI 大模型研究设计与实践应用技术研究报告 摘要: 本报告深入探讨了人工智能 AI 大模型的研究设计架构以及在各领域的实践应用技术。通过对模型架构、训练方法、优化策略的详细阐述,结合实际案例分析其在自然语言处理、计算机视觉、智能医疗等领…...
【深度学习】 零基础介绍卷积神经网络(CNN)
CNN学习 零基础介绍写个CNN最简单的代码一. 概述二. 搭建CNN1. 输入层2. 卷积层3. 激活层4. 池化层5. 全连接层6. 网络搭建小结7. 损失函数8. 梯度下降9. 反向传播10. 模型评估与正则化11. 尝试搭建自己的第一个CNN 三. 经典CNN结构四. 猫狗识别项目实践1. Paddle实现版本&…...
答题考试系统v1.6.1高级版源码分享+uniapp+搭建测试环境
一.系统介绍 一款基于FastAdminThinkPHPUniapp开发的小程序答题考试系统,支持多种试题类型、多种试题难度、练题、考试、补考模式,提供全部前后台无加密源代码,支持私有化部署 二.测试环境 系统环境:CentOS、 运行环境&#x…...
PowerMILL 客制化宏 - 变量
从PowerMILL2012起,命令起始支持变量。支持变量将使宏命令更加灵活和功能强大。可以对变量做一些运算而不依赖其它语言。 当前支持有变量类型为: INT; REAL; STRING; ENTITY; ARRAY LIST; OBJECT; 以下就…...
第五篇:前后端如何“扯皮”——HTTP 在开发中的应用
文章目录 第五篇:前后端如何“扯皮”——HTTP 在开发中的应用1. HTTP 在前后端分离中的作用1.1 前后端分离的崛起1.2 HTTP 的职责 2. RESTful API 与 GraphQL 的对比2.1 RESTful API:标准化的老兵2.2 GraphQL:灵活的新秀2.3 RESTful 和 Graph…...
如何在 Ubuntu 22.04 服务器上安装 Jenkins
简介 Jenkins 是一个非常流行的免费自动化工具,每个人都应该了解它。DevOps 工程师使用它来自动化代码构建、测试和部署。本文将重点介绍如何在新的 Ubuntu LTS 版本,即 Ubuntu 22.04 中安装 Jenkins。 但在此之前,让我们快速讨论一下 Jenk…...
关于代码注释
代码注释的重要性与最佳实践 在软件开发过程中,代码注释被认为是代码质量的一个重要组成部分。它不仅帮助开发人员理解和维护代码,还有助于团队协作和代码的可持续性。然而,如何有效地使用注释是一个值得深思的问题。本文将探讨代码注释的重…...
Mitt 库使用笔记
1. 介绍 Mitt 是一个轻量级的 JavaScript 库,用于在应用程序中实现事件触发和监听。它不依赖任何外部库,功能简洁,主要用于在模块间进行事件传递。 体积小:Mitt 的压缩版本仅有几千字节,非常适合在前端框架中作为事件…...
OpenCVE:一款自动收集NVD、MITRE等多源知名漏洞库的开源工具,累计收录CVE 27万+
漏洞库在企业中扮演着至关重要的角色,不仅提升了企业的安全防护能力,还支持了安全决策、合规性要求的满足以及智能化管理的发展。前期博文《业界十大知名权威安全漏洞库介绍》介绍了主流漏洞库,今天给大家介绍一款集成了多款漏洞库的开源漏洞…...
uniapp中的uni-file-picker组件上传多张图片到服务器
由于在uniapp官方文档中的uni-file-picker组件可实现图片上传功能,默认的是上传到自带的服务,所以我们要修改成自己的服务器 1. 添加 :auto-upload"false" 加上这个取消自动上传 <uni-file-picker v-model"jobAddUpdateForm.imag…...
LIF神经元模型的显隐转换
本文星主将介绍LIF神经元模型的显式和隐式转换(星主看见有论文[1]是这个称呼的,所以本文也称显式和隐式),并得到隐式模型的解析解。注意:理解本文内容需要有一定的微积分基础,如果大家看着数学头疼…...
Node的学习以及学习通过Node书写接口并简单操作数据库
Node的学习 Node的基础上述是关于Node的一些基础,总结的还行; 利用Node书写接口并操作数据库 1. 初始化项目 创建新的项目文件夹,并初始化 package.json mkdir my-backend cd my-backend npm init -y2. 安装必要的依赖 安装Express.js&…...
Android 获取屏幕物理尺寸
注:编译 sdk 需要使用 30 因为引入了 WindowMetrics、uild.VERSION_CODES.R 新 sdk 才存在的类和属性 某些场景处理 view ,对 view 显示的位置要求比较精确,通常我们使用context.getResources().getDisplayMetrics().widthPixels 获取到的宽、…...
【FFmpeg】解封装 ① ( 封装与解封装流程 | 解封装函数简介 | 查找码流标号和码流参数信息 | 使用 MediaInfo 分析视频文件 )
文章目录 一、解封装1、封装与解封装流程2、解封装 常用函数 二、解封装函数简介1、avformat_alloc_context 函数2、avformat_free_context 函数3、avformat_open_input 函数4、avformat_close_input 函数5、avformat_find_stream_info 函数6、av_read_frame 函数7、avformat_s…...
#渗透测试#红队全栈 powshell基础使用
声明! 学习视频来自B站up主 泷羽sec,任何违法事件与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!! 目录标题 认识powsehll打开方式 使用方式美化自己的powershell简单…...
Qt之自定义标题栏拓展(十)
Qt开发 系列文章 - user-defined-titlebars(十) 目录 前言 一、方式一 1.效果演示 2.创建标题栏类 3.可视化UI设计 4.定义相关函数 5.使用标题栏类 二、方式二 1.效果演示 2.创建标题栏类 3.定义相关函数 1.初始化函数 2.功能函数 3.窗口关…...
设计模式之创建型
1、What 关注对象的创建过程,旨在通过不同的方式来创建对象,以解耦对象的创建与其使用过程。这些模式提供了创建对象的灵活性和可扩展性,使得代码更加易于维护和管理。 1.1 单例模式 确保一个类只有一个实例,并提供一个全局访问…...
记录一下自己对网络安全法的笔记
仅记录一下自己对网络安全法的笔记 文章来源(https://www.cac.gov.cn/2016-11/07/c_1119867116_2.htm)(2016年11月7日第十二届全国人民代表大会常务委员会第二十四次会议通过)该法自2017年6月1日起施行。《网络安全法》是我国第一…...
Mybatis-plus-Join--分页查询
数据表四张: user: id,username,create_time,update_time product: id,name,price,number(库存),create_time,update_times order: id,quantity,order_time(下单时间),update_time order_detail:id,product_id,order_id,quant…...
EE308FZ_Sixth Assignment_Beta Sprint_Sprint Essay 5
Assignment 6Beta SprintCourseEE308FZ[A] — Software EngineeringClass Link2401_MU_SE_FZURequirementsTeamwork—Beta SprintTeam NameFZUGOObjectiveSprint Essay 5_Day9-Day10 (12.19-12.20)Other Reference1. WeChat Mini Program Design Guide 2. Javascript Style Gui…...
【AI日记】24.12.19 kaggle 比赛 2-8 | 睡眠质量提高
【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 参加:kaggle 比赛 Regression with an Insurance Dataset时间:8 小时 读书 书名:富兰克林自传时间:0.5 小时阅读原因:100 美元纸币上的人物 …...
string
1.对象创建 // // Created by 徐昌真 on 2024/12/15. // #include <iostream> #include <string>using namespace std;int main() {string s "意思是不要沉迷于空洞的幻想 也不要追求无用的虚名 强调了做事要脚踏实地 专注于实际的目标与行动";// 1. 无…...
观龙鱼之态,察疾病之征
龙鱼,以其独特的外形、优雅的游姿,成为众多养鱼爱好者的心头好。然而,这些水中的 “精灵” 一旦患病,其状态会发生明显变化。了解龙鱼患病的表现,对于鱼主人及时发现并治疗至关重要。 当龙鱼出现食欲不振的情况时&…...
【NLP 16、实践 ③ 找出特定字符在字符串中的位置】
看着父亲苍老的白发和渐渐老态的面容 希望时间再慢一些 —— 24.12.19 一、定义模型 1.初始化模型 ① 初始化父类 super(TorchModel, self).__init__(): 调用父类 nn.Module 的初始化方法,确保模型能够正确初始化。 ② 创建嵌入层 self.embedding n…...
一.photoshop导入到spine
这里使用的是 photoshoptospine脚本 下载地址:https://download.csdn.net/download/boyxgb/90156744 脚本的使用,可以通过文件的脚本的浏览,浏览该脚本使用该脚本,也可以将该脚本放在photoshop安装文件夹里的script文件夹下,具体路径:Photoshop\Presets\Scripts,重启photosho…...
docsify
macos ➜ ~ node -v v16.20.2➜ ~ npm --version 8.19.4全局安装 docsify-cli 工具 npm i docsify-cli -g➜ ~ docsify -vdocsify-cli version:4.4.4初始化项目 docsify init ./docsls -ah docs . .. .nojekyll README.md index.htmlindex.html 入口文件README.md 会…...
在Windows Server路由和远程访问服务中启用L2TP/IPsec VPN
背景 路由和远程访问服务(Routing and Remote Access Services,RRAS)是Windows Server上的一个角色,包含很多功能,可以用来搭建VPN。然而,在什么也不做的初始配置中,它只允许PPTP协议连接。然而…...
感知机收敛性定理证明
1. 问题描述 感知机收敛性定理假设: 存在一个参数向量 θ(被归一化为单位向量,,以及一个正数 ,使得对所有训练样本 满足: 这是线性可分的假设,意味着每个样本点与正确超平面之间有一个至少为的…...
监控易平台:提升IDC 数据中心运维效率与质量
一、引言 随着信息技术的飞速发展,IDC 数据中心作为信息存储、处理和传输的核心枢纽,其规模和复杂性不断增加。数据中心的稳定运行对于企业业务的连续性和发展至关重要,然而,传统的运维方式在面对日益增长的运维需求时,…...
WordPress 资源展示型下载类主题 CeoMax-Pro_v7.6 开心版
WordPress 资源展示型下载类主题 CeoMax-Pro_v7.6 开心版; CeoMax-Pro是一款极致美观强大的WordPress付费资源下载主题,它能满足您所有付费资源下载的业务需求! 你的想法与业务不能被主题所限制!CeoMax-Pro强大的功能࿰…...
java数据类型(补充-引用类型)
Java还提供了引用数据类型(Reference Types)。这些类型的变量存储的是对象的引用,而不是直接存储值。引用数据类型主要包括以下几类: 类型描述类(Class)每个对象都有自己的状态(属性或字段)、行为…...
【WRF教程第四期】WRF 初始化概述:以4.5版本为例
WRF 初始化(WRF Initialization) Building Initialization Programs编译方式 理想案例初始化(Initialization for Idealized Cases)理想化案例的输入可用的理想化案例 现实案例初始化(Initialization for Real Data Ca…...
「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
本篇将带你实现一个虚拟音乐控制台。用户可以通过界面控制音乐的播放、暂停、切换歌曲,并查看当前播放的歌曲信息。页面还支持调整音量和动态显示播放进度,是音乐播放器界面开发的基础功能示例。 关键词 UI互动应用音乐控制播放控制动态展示状态管理按钮…...
Navicat 17 功能简介 | SQL 美化
SQL美化 本期,我们将深入挖掘 Navicat 的实用的SQL代码美化功能。你只需简单地点击“SQL 美化”按钮,即可轻松完成 SQL 的格式化。 随着 17 版本的发布,Navicat 也带来了众多的新特性,包括兼容更多数据库、全新的模型设计、可视化…...
C++ 只出现一次的数字 - 力扣(LeetCode)
点击链接即可查看题目:136. 只出现一次的数字 - 力扣(LeetCode) 一、题目 给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 你必须设计并实现线性时间…...
Unity3D仿星露谷物语开发5之角色单例模式
1、目的 使用单例模式创建角色对象,保证整个游戏中只有一个角色,并且让游戏对象具有全局可访问性。 2、流程 (1)创建SingletonMonobehaviour脚本 Assets下创建Scripts目录用于存放所有的脚本,再创建Misk子目录&…...
解析在OceanBase创建分区的常见问题|OceanBase 用户问题精粹
在《分区策略和管理分区计划的实践方案》这篇文章中,我们介绍了在ODC中制定分区策略及有效管理分区计划的经验。有不少用户在该帖下提出了使用中的问题,其中一个关于创建分区的限制条件的问题,也是很多用户遭遇的老问题。因此本文以其为切入&…...