Java实现word excel ppt模板渲染与导出及预览 LibreOffice jodconverter
Java Office
一、文档格式转换
文档格式转换是office操作中经常需要进行一个操作,例如将docx文档转换成pdf格式。
java在这方面有许多的操作方式,大致可以分为内部调用(无需要安装额外软件),外部调用(需要安装额外软件)。
其中,内部调用的方式虽然简单,但是会遇到一些头痛的问题,例如:文档格式错误,字体错误,内容缺少。外部调用虽然麻烦,但可以在一定程度上解决这些问题。
在技术搭配上比较推荐:jodconverter+LibreOffice
jodconverter:jodconverter是一种Java OpenDocument转换器,能够转换不同格式的文档,依赖于Apache OpenOffice或 LibreOffice。
LibreOffice:LibreOffice 是一款功能强大的办公软件,默认使用开放文档格式 (OpenDocument Format , ODF), 并支持 docx, xlsx, pptx 等其他格式。
jodconverter是支持LibreOffice和Apache OpenOffice两种开源的Office软件的,但是从稳定性、转换效果、简单性,更推荐LibreOffice。
1 LibreOffice安装
LibreOffice官网:https://www.libreoffice.org/
LibreOffice下载地址:https://www.libreoffice.org/download/download-libreoffice/
LibreOffice 7.5.6:https://www.libreoffice.org/donate/dl/win-x86_64/7.5.6/zh-CN/LibreOffice_7.5.6_Win_x86-64.msi
其中,官方一般会发布两个版本,即最新版本和稳定版本,这里推荐稳定版本,根据自己的操作系统的版本下载对应的安装包。
其中安装流程一直点下一步就好了,记住安装路径就行。
2 项目maven依赖
<dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-local</artifactId><version>4.4.6</version>
</dependency>
3 代码逻辑与实现
- 创建OfficeManager
- 创建Converter
- 创建输入流与输出流
- 文档格式转换
- 关闭数据流和程序
3.1 创建OfficeManager
LocalOfficeManager.Builder builder = LocalOfficeManager.builder();
// 设置本地Office地址,推荐LibreOffice
builder.officeHome("D:/Program Files/LibreOffice");
// 部署主机,本地启动
builder.hostName("127.0.0.1");
// 部署端口,可以设置多个
builder.portNumbers(9000, 9001, 9002);
// 单任务过期时间 默认:120000 2分钟
builder.taskExecutionTimeout((long) (5 * 1000 * 60));
// 任务过期时间 默认:30000 3 秒
builder.taskQueueTimeout((long) (1000 * 60 * 60));
// 可以执行的最大任务数,默认200
builder.maxTasksPerProcess(1000);
// 构建
LocalOfficeManager manager = builder.build();
// 启动
manager.start();
3.2 创建Converter
LocalConverter converter = LocalConverter.builder().officeManager(manager).build();
3.3 创建输入流与输出流
// 测试word文档转pdf
// 创建输入流
FileInputStream input = new FileInputStream("E:/tmp/word/test.docx");
// 创建输出流
FileOutputStream output = new FileOutputStream("E:/tmp/word/test.pdf");
3.4 格式转换
// 进行格式转换
converter.convert(input).as(DefaultDocumentFormatRegistry.DOCX).to(output).as(DefaultDocumentFormatRegistry.PDF).execute();
3.5 关闭流
// 关闭流
output.close();
input.close();
manager.stop();
4 可支持的文档类型
public static final @NonNull DocumentFormat PDF = byExtension("pdf");
public static final @NonNull DocumentFormat SWF = byExtension("swf");
public static final @NonNull DocumentFormat HTML = byExtension("html");
public static final @NonNull DocumentFormat XHTML = byExtension("xhtml");
public static final @NonNull DocumentFormat ODT = byExtension("odt");
public static final @NonNull DocumentFormat OTT = byExtension("ott");
public static final @NonNull DocumentFormat FODT = byExtension("fodt");
public static final @NonNull DocumentFormat SXW = byExtension("sxw");
public static final @NonNull DocumentFormat DOC = byExtension("doc");
public static final @NonNull DocumentFormat DOCX = byExtension("docx");
public static final @NonNull DocumentFormat DOTX = byExtension("dotx");
public static final @NonNull DocumentFormat RTF = byExtension("rtf");
public static final @NonNull DocumentFormat WPD = byExtension("wpd");
public static final @NonNull DocumentFormat TXT = byExtension("txt");
public static final @NonNull DocumentFormat ODS = byExtension("ods");
public static final @NonNull DocumentFormat OTS = byExtension("ots");
public static final @NonNull DocumentFormat FODS = byExtension("fods");
public static final @NonNull DocumentFormat SXC = byExtension("sxc");
public static final @NonNull DocumentFormat XLS = byExtension("xls");
public static final @NonNull DocumentFormat XLSX = byExtension("xlsx");
public static final @NonNull DocumentFormat XLTX = byExtension("xltx");
public static final @NonNull DocumentFormat CSV = byExtension("csv");
public static final @NonNull DocumentFormat TSV = byExtension("tsv");
public static final @NonNull DocumentFormat ODP = byExtension("odp");
public static final @NonNull DocumentFormat OTP = byExtension("otp");
public static final @NonNull DocumentFormat FODP = byExtension("fodp");
public static final @NonNull DocumentFormat SXI = byExtension("sxi");
public static final @NonNull DocumentFormat PPT = byExtension("ppt");
public static final @NonNull DocumentFormat PPTX = byExtension("pptx");
public static final @NonNull DocumentFormat POTX = byExtension("potx");
public static final @NonNull DocumentFormat ODG = byExtension("odg");
public static final @NonNull DocumentFormat OTG = byExtension("otg");
public static final @NonNull DocumentFormat FODG = byExtension("fodg");
public static final @NonNull DocumentFormat SVG = byExtension("svg");
public static final @NonNull DocumentFormat VSD = byExtension("vsd");
public static final @NonNull DocumentFormat VSDX = byExtension("vsdx");
public static final @NonNull DocumentFormat PNG = byExtension("png");
public static final @NonNull DocumentFormat JPEG = byExtension("jpg");
public static final @NonNull DocumentFormat TIFF = byExtension("tif");
public static final @NonNull DocumentFormat GIF = byExtension("gif");
public static final @NonNull DocumentFormat BMP = byExtension("bmp");
5 完整代码
public static void main(String[] args) throws OfficeException, IOException {// =======================构建office管理器========================LocalOfficeManager.Builder builder = LocalOfficeManager.builder();// 设置本地Office地址,推荐LibreOfficebuilder.officeHome("D:/Program Files/LibreOffice");// 部署主机,本地启动builder.hostName("127.0.0.1");// 部署端口,可以设置多个builder.portNumbers(9000, 9001, 9002);// 单任务过期时间 默认:120000 2分钟builder.taskExecutionTimeout((long) (5 * 1000 * 60));// 任务过期时间 默认:30000 3 秒builder.taskQueueTimeout((long) (1000 * 60 * 60));// 可以执行的最大任务数,默认200builder.maxTasksPerProcess(1000);// 构建LocalOfficeManager manager = builder.build();// 启动manager.start();// ======================构建文档转换器======================LocalConverter converter = LocalConverter.builder().officeManager(manager).build();// ======================实现文档转换=======================// 测试word文档转pdf// 创建输入流FileInputStream input = new FileInputStream("E:/tmp/word/test.docx");// 创建输出流FileOutputStream output = new FileOutputStream("E:/tmp/word/test.pdf");// 进行格式转换converter.convert(input).as(DefaultDocumentFormatRegistry.DOCX).to(output).as(DefaultDocumentFormatRegistry.PDF).execute();// 关闭流output.close();input.close();manager.stop();
}
效果图
转换后
二、Spring Boot集成模式
jodconverter有对于Spring Boot的集成解决方案:jodconverter-spring-boot-starter
1 项目依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId>
</dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope>
</dependency>
<dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-spring-boot-starter</artifactId><version>4.4.6</version>
</dependency>
2 配置文件
jodconverter:local:office-home: D:/Program Files/LibreOfficeenabled: trueport-numbers:- 8100- 8101- 8102- 8103
3 测试单例
@SpringBootTest
class SpringBootOfficeApplicationTests {@Resourceprivate LocalConverter converter;@Testvoid contextLoads() throws IOException, OfficeException {// 测试word文档转pdf// 创建输入流FileInputStream input = new FileInputStream("E:/tmp/word/test.docx");// 创建输出流FileOutputStream output = new FileOutputStream("E:/tmp/word/test.pdf");// 进行格式转换converter.convert(input).as(DefaultDocumentFormatRegistry.DOCX).to(output).as(DefaultDocumentFormatRegistry.PDF).execute();output.close();input.close();}}
三、文档模板渲染输出
在基于java开发office项目中,需要完成一些文档数据的渲染和输出工作,例如将数据库中的数据渲染到表格中,然后输出pdf。
目前比较推荐的技术选型是
首先,刻画模板将模板需要填充部分特殊标记,然后转行为xml格式。
然后,利用模板引擎将数据与模板进行渲染。
最后,使用jodconverter转换为pdf输出。
目前比较推荐的模板引擎是freemarker
以word文档渲染后输出pdf为例
1 编写模板文件
在编写模板中,更推荐使用LibreOffice Writer是安装LibreOffice后自带的客户端。
在保存过程中,记得保存为:fodt格式的文件。
FODT文件是一种开放文档文本(Flat OpenDocument Text)文件的扩展名。OpenDocument是一种开放的文档标准,旨在提供一种用于创建和编辑文档的自由和开放的文件格式。FODT文件通常包含文本文档的内容,可以包括文字、格式设置、图像和其他与文档相关的元素。这个文件格式的一个常见用途是与LibreOffice和Apache OpenOffice等开源办公套件一起使用。
2 项目设计
2.1 项目依赖
<dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-local</artifactId><version>4.4.6</version>
</dependency>
<dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.32</version>
</dependency>
2.2 核心逻辑
freemarker工具类
public class FreemarkerUtils {public static final Configuration CONFIGURATION;public static final String TEMPLATE_DIRECTORY = "E:/tmp/word";static {// 初始化CONFIGURATION = new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);// 编码CONFIGURATION.setDefaultEncoding("UTF-8");//模板文件夹路径try {// CONFIGURATION.setClassForTemplateLoading(FreemarkerUtils.class, path);CONFIGURATION.setDirectoryForTemplateLoading(new File(TEMPLATE_DIRECTORY));} catch (IOException e) {throw new RuntimeException(e);}}public static String rendering(String templateName, Map<String, Object> params) throws IOException, TemplateException {Writer writer = new StringWriter();Template template = CONFIGURATION.getTemplate(templateName);template.process(params, writer);writer.close();return writer.toString();}
}
// ======================实现文档转换=======================
// 测试word文档转pdf
Map<String, Object> map = new HashMap<>(3);
map.put("name", "张山");
map.put("age", 18);
map.put("text", "性格开朗,热情大方,富有正义感,勤奋好学,对工作认真负责。");
String dom = FreemarkerUtils.rendering("模板1.fodt", map);
// 创建输入流
ByteArrayInputStream input = new ByteArrayInputStream(dom.getBytes());
// 创建输出流
FileOutputStream output = new FileOutputStream("E:/tmp/word/模板1.pdf");
// 进行格式转换
converter.convert(input).as(DefaultDocumentFormatRegistry.DOCX).to(output).as(DefaultDocumentFormatRegistry.PDF).execute();
2.3 效果展示
四、实现文档预览
如果文件格式转换和文档渲染是基于文件操作的话,文档预览是需要引出图片操作了。
文档预览需要让文档转换为pdf后再转换成图片进行查看。
实现pdf转换成图片推荐:apache.pdfbox
1 项目依赖
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.27</version>
</dependency>
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox-tools</artifactId><version>2.0.27</version>
</dependency>
2 具体代码
// 创建字节输出流
ByteArrayOutputStream output = new ByteArrayOutputStream();
// 进行格式转换
converter.convert(input).as(DefaultDocumentFormatRegistry.DOCX).to(output).as(DefaultDocumentFormatRegistry.PDF).execute();
// 创建文档
PDDocument document = PDDocument.load(output.toByteArray());
// 读取文档
PDFRenderer pdfRenderer = new PDFRenderer(document);
// 将文档每一张图片存入
for (int i = 0; i < document.getNumberOfPages(); i++) {BufferedImage bufferedImage = pdfRenderer.renderImageWithDPI(i, 600);ImageIO.write(bufferedImage, "PNG", new File("E:\\tmp\\word\\" + i + ".png"));
}
相关文章:
Java实现word excel ppt模板渲染与导出及预览 LibreOffice jodconverter
Java Office 一、文档格式转换 文档格式转换是office操作中经常需要进行一个操作,例如将docx文档转换成pdf格式。 java在这方面有许多的操作方式,大致可以分为内部调用(无需要安装额外软件),外部调用(需…...
【通意千问】大模型GitHub开源工程学习笔记(2)
使用Transformers来使用模型 如希望使用Qwen-chat进行推理,所需要写的只是如下所示的数行代码。请确保你使用的是最新代码,并指定正确的模型名称和路径,如Qwen/Qwen-7B-Chat和Qwen/Qwen-14B-Chat 这里给出了一段代码 from transformers import AutoModelForCausalLM, Aut…...
MQ - 35 四款MQ的架构设计与实现的对比
文章目录 导图概述RabbitMQ顺序消息定时和延时消息事务消息优先级队列死信队列WebSocketRocketMQ顺序消息定时和延时消息事务消息死信队列消息查询根据 Offset 查询消息根据时间戳查询消息据消息 ID 查询消息SchemaKafka顺序消息幂等事务消息消息查询...
spring6-IOC容器
IOC容器 1、IoC容器1.1、控制反转(IoC)1.2、依赖注入1.3、IoC容器在Spring的实现 2、基于XML管理Bean2.1、搭建子模块spring6-ioc-xml2.2、实验一:获取bean①方式一:根据id获取②方式二:根据类型获取③方式三ÿ…...
macOS - 使用 chromedriver
文章目录 下载对应的 chromedriver 下载 Chrome https://www.google.com/chrome/ 查看 版本 下载对应的 chromedriver http://chromedriver.storage.googleapis.com/index.html https://chromedriver.chromium.org/downloads 移动 sudo mv chromedriver /usr/local/bin/ $ c…...
项目进展(四)-双电机均可驱动,配置模拟SPI,调平仪功能初步实现!
一、前言 截止到今天,该项目也算实现基本功能了,后续继续更新有关32位ADC芯片相关的内容,今天对驱动芯片做一个总结,也对模拟SPI做一点总结吧 二、模拟SPI 由于模拟SPI还是得有四种模式(CPOL和CPHA组合为四种),下面…...
《学术小白学习之路13》基于DTM和主题共现网络——实现主题时序演化网络分析(数据代码在结尾)
《学术小白学习之路13》基于DTM和主题共现网络实现主题演化网络分析 一、数据导入二、数据预处理2.1分词2.2 向量化三、DTM建模3.1 主题一致性检验3.2主题建模四、计算主题的相似度4.1获取文档主题分布4.2 时期分组4.3相似度计算4.3.1第一时期和第二时期的对比4.3.2第二时期与第…...
实验三十三、三端稳压器 LM7805 稳压性能的研究
一、题目 LM7805 输出电压、电压调整率、电流调整率以及输出纹波电压的研究。 二、仿真电路 电路如图1所示。集成稳压芯片采用 LM7805CT。 三、仿真内容 (1)测量图1(a)LM7805CT 的电压调整率,测量条件为 I O 50…...
第三章 软件架构
固件框架由如下所示的构建块组成,如上图所示。 隔离边界。分区接口。分区。分区清单。分区管理器。以下各小节详细描述了这些构建块。 3.1 隔离边界 该框架定义了两种类型的隔离边界。 1、逻辑隔离边界,可用于以下情况: (1)通过一个由 IMPLEMENTATION DEFINED 机制定义…...
怎么保护苹果手机移动应用程序ipa中文件安全?
目录 前言 1. 对敏感文件进行文件名称混淆 2. 更改文件的MD5值 3. 增加不可见水印处理 3. 对html,js,css等资源进行压缩 5. 删除可执行文件中的调试信息 前言 ios应用程序存储一些图片,资源,配置信息,甚至敏感数…...
中秋节快乐
中秋节快乐,国庆节快乐...
【记录文】Android自定义Dialog实现圆角对话框
圆角的dialog还是蛮常用的,demo中正好用上了 自定义Dialog,代码中可以设置指定大小与位置 /*** author : jiangxue* date : 2023/9/25 13:21* description :圆角的矩形*/internal class RoundCornerView(context: Context,view: Int, StyleRes theme…...
架构案例2022(四十二)
促销管理系统 某电子商务公司拟升级其会员与促销管理系统,向用户提供个性化服务,提高用户的粘性。在项目立项之初,公司领导层一致认为本次升级的主要目标是提升会员管理方式的灵活性,由于当前用户规模不大,业务也相对…...
kafka 集群搭建 常用命令
1、集群搭建: <1> 将kafka 压缩包解压到某一目录 tar -zxvf kafka_2.12-3.5.1.tgz <2> 修改节点配置文件 vim config/server.properties broker.id0 log.dirs/tmp/kafka-logs <3> 将安装好的kafka 分发到其他服务器 scp -r kafka_2.12-2.4…...
【python】numpy库
文章目录 简单介绍功能示例代码 简单介绍 NumPy(Numerical Python的简称)是Python数值计算最重要的基础包。大多数提供科学计算的包都是用NumPy的数组作为构建基础。 NumPy是在一个连续的内存块中存储数据,独立于其他Python内置对象。NumPy…...
jvm垃圾收集算法
简介 由于《分代收集理论》和不同垃圾收集算法,Java堆应该被划分为不同区域,一般至少会把Java堆划分为新生代(Young Generation)和老年代(Old Generation)两个区域。 垃圾收集器可以只回收其中某一个或者…...
Arm机密计算架构技术(Armv9 CCA) 白皮书
1. 概述 在本篇文章中,我们将介绍机密计算(Confidential Computing)在现代计算平台中扮演的角色,并解释机密计算的原理。然后我们将说明 Arm 机密计算架构 (Arm CCA) 如何在 Arm 计算平台中实现机密计算。 看完本文后,您将能够: 定义机密计算描述复杂的系统信任链了解R…...
Magisk Delta以及EdXposed工具在逍遥模拟器上安装教程
材料准备: 1,逍遥模拟器 安卓9的镜像 2,EdXpose 的apk以及对应的zip文件 3,riru框架 zip文件 4,magisk delta 的apk文件以及magisk manager的apk文件 放心 这些我都打包放好了,还有已经打包好的逍遥模拟器镜…...
The Reversal Curse: LLMs trained on “A is B“ fail to learn “B is A“
(not an original, only classified as one to avoid cramming reference links) paper: https://owainevans.github.io/reversal_curse.pdf blog with interactions with the authors: Paper: LLMs trained on “A is B” fail to learn “B is A” — LessWrong This is a…...
专栏更新情况:华为流程、产品经理、战略管理、IPD
目录 前言 01 华为流程体系入门课 CSDN学院 02 产品经理进阶课 CSDN学院 03 BLM 战略方法论进阶课 04 IPD 进阶 100 例专栏 作者简介 前言 已上线四大课程专栏更新情况: 01 华为流程体系入门课(视频图文); 02 硬件产品经…...
微软(TTS)文本转语音服务API实现
此博客实现与java实现微软文本转语音(TTS)经验总结_java tts_${简简单单}的博客-CSDN博客之上,首先感谢博客源码的提供,本人在上面添加了一些详细的注释,方便大家跟好的理解和使用,毕竟我已经用原文调试了一…...
防火墙firewalld
title: 防火墙firewalld createTime: 2020-10-29 18:05:52 updateTime: 2020-10-29 18:05:52 categories: linux tags: centos7上的firewalld 的使用 一、firewalld的基本启动关闭命令 启动服务------systemctl start firewalld关闭服务------systemctl stop firewalld查看状…...
SW线光源是真实的(点光源)
点光源在渲染下真实 点光源地板反射是对的...
Vue Router的安装
安装 在我们使用脚手架搭建项目的时候,默认是没有帮我们安装的。需要自己手动进行安装。安装的 Vue-Router 插件时需要注意版本信息,Vue2.0 使用的是 Vue-Router3.x ,而 Vue3.0 使用的是 Vue-Router4.x。 通过命令安装 vue-router3 插件 $…...
ROS架构设计
ROS架构如图所示,可以将其分为三个层次:OS层、中间层和应用层。 1.OS层 ROS并不是一个传统意义上的操作系统,无法像Windows、Linux一样直接运行在计算机硬件之上,而是需要依托于Linux系统。所以在OS层,我们可以直接使…...
JSON.toJSONString() 解析之后 出现“$ref“:“$[x].xxx“
原因:JSON在处理数据时出现了相同数据,JSON自动将相同节点的数据使用引用方式代替。 解决方式: String jsonString JSON.toJSONString(params, SerializerFeature.DisableCircularReferenceDetect); SerializerFeature.DisableCircularRefer…...
2023研究生数学建模E题思路+模型+代码+论文(持续更新中) 出血性脑卒中临床智能诊疗建模
目录 E题思路 出血性脑卒中临床智能诊疗建模 完整思路代码模型论文获取见文末名片 完整思路代码模型论文获取见此 E题思路 出血性脑卒中临床智能诊疗建模 完整思路代码模型论文获取见文末名片 一、 背景介绍 出血性脑卒中指非外伤性脑实质内血管破裂引起的脑出血࿰…...
云可观测性安全平台——掌动智能
云可观测性安全平台是一个跨架构、跨平台的可观测性方案,实现对云环境下的细粒度数据可视化,满足安全部门对云内部安全领域的多场景诉求,包括敏感数据动态监管、云网攻击回溯分析、攻击横移风险监控、云异常流量分析。本文将介绍掌动智能云可…...
[ruby on rails] postgres sql explain 优化
一、查看执行计划 sql User.all.to_sql # 不会实际执行查询 puts ActiveRecord::Base.connection.explain(sql)# 会实际执行查询,再列出计划 User.all.explain# 会实际执行查询,再列出计划ActiveRecord::Base.connection.execute(EXPLAIN ANALYZE sql…...
YOLOv7改进:GAMAttention注意力机制
1.背景介绍 为了提高各种计算机视觉任务的性能,人们研究了各种注意机制。然而,以往的方法忽略了保留通道和空间方面的信息以增强跨维度交互的重要性。因此,我们提出了一种全局调度机制,通过减少信息缩减和放大全局交互表示来提高深…...
新疆 网站开发/哪里能搜索引擎优化
安装问题 PHP Fatal error: Uncaught Error: Call to undefined function tsingsun\swoole\server\posix_kill() in /data/app/im/vendor/tsingsun/yii2-swoole/src/server/Server.php:248 查了下,php的扩展posix没开,php版本php7.1,环境CentOS7,使用如下…...
临沂做网站建设的公司/seo自媒体培训
今日受朋友之托,为其友人安装几台无线路由。因其原已在使用中,而且因为电源问题导致几台设备故障,无法工作。故此次只需将新无线路由器填上原空缺即告完成。但在填补完空缺后,发生了一个很奇怪的现象。故在此对该现象凭借对无线的…...
刷网站排名软件/营销推广策略
雷锋网3月29日消息,今日阿里云在云栖大会 深圳峰会发布ET医疗大脑,宣布正式进入医疗AI领域。据称,经过一年多的研究训练,人工智能ET可在患者虚拟助理、医学影像、精准医疗、药效挖掘、新药研发、健康管理等领域承担医生助手的角色…...
seo关键词排名公司/长沙百度网站排名优化
作者: dave_cn 发表于 2010-07-18 21:20 原文链接 阅读: 148 评论: 2转载请注明出处。http://www.cnblogs.com/dave_cn/本程序需要ncurses库,ubuntu下安装ncurses可以执行下面命令:sudo apt-get install libncurses5-dev 关于ncurses的用法,读…...
门户网站群建设/灰色项目推广渠道
量化反馈控制是指:对状态空间进行划分, 在每个小区域上应于同一个控制输入u. 由于是可数划分,量化反馈控制器的控制输入u值至多是可列个.因信道传输容量有限导致量化控制的出现,如何避免因量化误差的存在破坏了系统的稳定性,是大家…...
国家开发银行网站/大连中小企业网络营销
人生的低估期应该怎么度过? 先把你生活中的事情,分为3大类: 完全能掌控的 ——(投入全部精力、财力) 只能掌控一部分的 ——(投入50%精力,保持适度期待) 根本掌控不了的 ——&…...