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

Easyexcel(4-模板文件)

相关文章链接

  1. Easyexcel(1-注解使用)
  2. Easyexcel(2-文件读取)
  3. Easyexcel(3-文件导出)
  4. Easyexcel(4-模板文件)

文件导出

获取 resources 目录下的文件,使用 withTemplate 获取文件流导出文件模板

@GetMapping("/download1")
public void download1(HttpServletResponse response) {try (InputStream in = new ClassPathResource("测试.xls").getInputStream()) {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系String fileName = URLEncoder.encode("测试", "UTF-8").replaceAll("\\+", "%20");response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xls");EasyExcel.write(response.getOutputStream()).withTemplate(in).sheet("sheet1").doWrite(Collections.emptyList());} catch (Exception e) {e.printStackTrace();}
}

注意:获取 resources 目录下的文件需要在 maven 中添加以下配置,过滤对应的文件,防止编译生成后的 class 文件找不到对应的文件信息

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><configuration><encoding>UTF-8</encoding><nonFilteredFileExtensions><nonFilteredFileExtension>xls</nonFilteredFileExtension><nonFilteredFileExtension>xlsx</nonFilteredFileExtension></nonFilteredFileExtensions></configuration>
</plugin>

对象填充导出

模板文件信息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

@AllArgsConstructor
@NoArgsConstructor
@Data
public class User {@ExcelProperty(value = "用户Id")private Integer userId;@ExcelProperty(value = "姓名")private String name;@ExcelProperty(value = "手机")private String phone;@ExcelProperty(value = "邮箱")private String email;@ExcelProperty(value = "创建时间")private Date createTime;
}
@GetMapping("/download5")
public void download5(HttpServletResponse response) {try (InputStream in = new ClassPathResource("测试3.xls").getInputStream()) {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系String fileName = URLEncoder.encode("测试3", "UTF-8").replaceAll("\\+", "%20");response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xls");User user = new User(1, "张三", "12345678901", "zhangsan@qq.com", new Date());EasyExcel.write(response.getOutputStream(), User.class).withTemplate(in).sheet("模板").doFill(user);} catch (Exception e) {e.printStackTrace();}
}

注意:填充模板跟写文件使用的方法不一致,模板填充使用的方法是 doFill,而不是 doWrite

导出文件内容

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

List 填充导出

对象导出

模板文件信息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

@AllArgsConstructor
@NoArgsConstructor
@Data
public class User {@ExcelProperty(value = "用户Id")private Integer userId;@ExcelProperty(value = "姓名")private String name;@ExcelProperty(value = "手机")private String phone;@ExcelProperty(value = "邮箱")private String email;@ExcelProperty(value = "创建时间")private Date createTime;
}
@GetMapping("/download2")
public void download2(HttpServletResponse response) {try (InputStream in = new ClassPathResource("测试.xls").getInputStream()) {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系String fileName = URLEncoder.encode("测试", "UTF-8").replaceAll("\\+", "%20");response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xls");List<User> userList = new ArrayList<>();userList.add(new User(1, "张三", "12345678901", "zhangsan@qq.com", new Date()));userList.add(new User(2, "李四", "12345678902", "lisi@qq.com", new Date()));EasyExcel.write(response.getOutputStream(), User.class).withTemplate(in).sheet("模板").doFill(userList);} catch (Exception e) {e.printStackTrace();}
}

导出文件内容

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对象嵌套对象(默认不支持)

原因排查

模板文件信息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

@AllArgsConstructor
@NoArgsConstructor
@Data
public class User {@ExcelProperty(value = "用户Id")private Integer userId;@ExcelProperty(value = "姓名")private String name;@ExcelProperty(value = "手机")private String phone;@ExcelProperty(value = "邮箱")private String email;@ExcelProperty(value = "学生")private Student stu;@NoArgsConstructor@AllArgsConstructor@Datapublic static class Student {@ExcelProperty("姓名")private String name;@ExcelProperty("年龄")private Integer age;}
}
@GetMapping("/download3")
public void download3(HttpServletResponse response) {try (InputStream in = new ClassPathResource("测试2.xls").getInputStream()) {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系String fileName = URLEncoder.encode("测试2", "UTF-8").replaceAll("\\+", "%20");response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xls");List<User> userList = new ArrayList<>();userList.add(new User(1, "张三", "12345678901", "zhangsan@qq.com", new User.Student("张三", 12)));userList.add(new User(2, "李四", "12345678902", "lisi@qq.com", new User.Student("李四", 13)));EasyExcel.write(response.getOutputStream(), User.class).withTemplate(in).sheet("模板").doFill(userList);} catch (Exception e) {e.printStackTrace();}
}

导出文件内容

结果:Student 类的内容没有填充到模板文件中

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

查看 ExcelWriteFillExecutor 源码

可以看到 dataKeySet 集合中的数据只有 stu(没有 stu.name 和 stu.age),在! dataKeySet.contains(variable)方法中判断没有包含该字段信息,所以被过滤掉

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

修改源码支持

在 com.alibaba.excel.write.executor 包下创建 ExcelWriteFillExecutor 类,跟源码中的类名称一致,尝试修改 analysisCell.getOnlyOneVariable()方法中的逻辑以便支持嵌套对象,修改如下:

根据分隔符.进行划分,循环获取对象中字段的数据,同时在 FieldUtils.getFieldClass 方法中重新设置 map 对象和字段

if (analysisCell.getOnlyOneVariable()) {String variable = analysisCell.getVariableList().get(0);String[] split = variable.split("\\.");Map map = BeanUtil.copyProperties(dataMap, Map.class);Object value = null;if (split.length == 1) {value = map.get(variable);} else {int len = split.length - 1;for (int i = 0; i < len; i++) {Object o = map.get(split[i]);map = BeanMapUtils.create(o);}value = map.get(split[split.length - 1]);}ExcelContentProperty excelContentProperty = ClassUtils.declaredExcelContentProperty(map,writeContext.currentWriteHolder().excelWriteHeadProperty().getHeadClazz(), split[split.length - 1],writeContext.currentWriteHolder());cellWriteHandlerContext.setExcelContentProperty(excelContentProperty);createCell(analysisCell, fillConfig, cellWriteHandlerContext, rowWriteHandlerContext);cellWriteHandlerContext.setOriginalValue(value);cellWriteHandlerContext.setOriginalFieldClass(FieldUtils.getFieldClass(map, split[split.length - 1], value));converterAndSet(cellWriteHandlerContext);WriteCellData<?> cellData = cellWriteHandlerContext.getFirstCellData();// Restyleif (fillConfig.getAutoStyle()) {Optional.ofNullable(collectionFieldStyleCache.get(currentUniqueDataFlag)).map(collectionFieldStyleMap -> collectionFieldStyleMap.get(analysisCell)).ifPresent(cellData::setOriginCellStyle);}
}

导出文件内容

查看导出的文件内容,此时发现嵌套对象的内容可以导出了

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对象嵌套 List(默认不支持)

原因排查

模板文件信息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

@AllArgsConstructor
@NoArgsConstructor
@Data
public class User {@ExcelProperty(value = "用户Id")private Integer userId;@ExcelProperty(value = "姓名")private String name;@ExcelProperty(value = "手机")private String phone;@ExcelProperty(value = "邮箱")private String email;@ExcelProperty(value = "创建时间")private Date createTime;@ExcelProperty(value = "id列表")private List<String> idList;
}
@GetMapping("/download4")
public void download4(HttpServletResponse response) {try (InputStream in = new ClassPathResource("测试2.xls").getInputStream()) {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系String fileName = URLEncoder.encode("测试", "UTF-8").replaceAll("\\+", "%20");response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xls");List<User> userList = new ArrayList<>();userList.add(new User(1, "张三", "12345678901", "zhangsan@qq.com", new Date(), Arrays.asList("234", "465")));userList.add(new User(2, "李四", "12345678902", "lisi@qq.com", new Date(), Arrays.asList("867", "465")));EasyExcel.write(response.getOutputStream(), User.class).withTemplate(in).sheet("模板").doFill(userList);} catch (Exception e) {e.printStackTrace();}
}

执行后会发现报错 Can not find ‘Converter’ support class ArrayList.

EasyExcel 默认不支持对象嵌套 List 的,可以通过自定义转换器的方式修改导出的内容

自定义转换器

public class ListConvert implements Converter<List> {@Overridepublic WriteCellData<?> convertToExcelData(List value, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {if (value == null || value.isEmpty()) {return new WriteCellData<>("");}String val = (String) value.stream().collect(Collectors.joining(","));return new WriteCellData<>(val);}@Overridepublic List convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty, GlobalConfiguration globalConfiguration) {if (cellData.getStringValue() == null || cellData.getStringValue().isEmpty()) {return new ArrayList<>();}List list = new ArrayList();String[] items = cellData.getStringValue().split(",");Collections.addAll(list, items);return list;}
}
@AllArgsConstructor
@NoArgsConstructor
@Data
public class User {@ExcelProperty(value = "用户Id")private Integer userId;@ExcelProperty(value = "姓名")private String name;@ExcelProperty(value = "手机")private String phone;@ExcelProperty(value = "邮箱")private String email;@ExcelProperty(value = "创建时间")private Date createTime;@ExcelProperty(value = "id列表", converter = ListConvert.class)private List<String> idList;
}

导出文件内容

可以看到 List 列表的数据导出内容为 String 字符串,显示在一个单元格内

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Map 填充导出

简单导出

模板文件信息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注意:map跟对象导出有所区别,最前面没有.

@GetMapping("/download4")
public void download4(HttpServletResponse response) {try (InputStream in = new ClassPathResource("测试3.xls").getInputStream()) {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系String fileName = URLEncoder.encode("测试", "UTF-8").replaceAll("\\+", "%20");response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xls");Map<String, String> map = new HashMap<>();map.put("userId", "123");map.put("name", "张三");map.put("phone", "12345678901");map.put("email", "zhangsan@qq.com");map.put("createTime", "2021-01-01");EasyExcel.write(response.getOutputStream(), User.class).withTemplate(in).sheet("模板").doFill(map);} catch (Exception e) {e.printStackTrace();}
}

导出文件内容

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

嵌套方式(不支持)

模板文件信息

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

@GetMapping("/download4")
public void download4(HttpServletResponse response) {try (InputStream in = new ClassPathResource("测试3.xls").getInputStream()) {response.setContentType("application/vnd.ms-excel");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系String fileName = URLEncoder.encode("测试", "UTF-8").replaceAll("\\+", "%20");response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xls");Map<String, String> map = new HashMap<>();map.put("userId", "123");map.put("name", "张三");map.put("phone", "12345678901");map.put("email", "zhangsan@qq.com");map.put("createTime", "2021-01-01");map.put("student.name", "小张");map.put("student.age", "23");EasyExcel.write(response.getOutputStream(), User.class).withTemplate(in).sheet("模板").doFill(map);} catch (Exception e) {e.printStackTrace();}
}

导出文件内容

注意:Easyexcel 不支持嵌套的方式导出数据

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

相关文章:

Easyexcel(4-模板文件)

相关文章链接 Easyexcel&#xff08;1-注解使用&#xff09;Easyexcel&#xff08;2-文件读取&#xff09;Easyexcel&#xff08;3-文件导出&#xff09;Easyexcel&#xff08;4-模板文件&#xff09; 文件导出 获取 resources 目录下的文件&#xff0c;使用 withTemplate 获…...

国产linux系统(银河麒麟,统信uos)使用 PageOffice 动态生成word文件

PageOffice 国产版 &#xff1a;支持信创系统&#xff0c;支持银河麒麟V10和统信UOS&#xff0c;支持X86&#xff08;intel、兆芯、海光等&#xff09;、ARM&#xff08;飞腾、鲲鹏、麒麟等&#xff09;、龙芯&#xff08;LoogArch&#xff09;芯片架构。 数据区域填充文本 数…...

Window11+annie 视频下载器安装

一、ffmpeg环境的配置 下载annie之前需要先配置ffmpeg视频解码器。 网址下载地址 https://ffmpeg.org/download.html1、在网址中选择window版本 2、点击后选择该版本 3、下载完成后对压缩包进行解压&#xff0c;后进行环境的配置 &#xff08;1&#xff09;压缩包解压&#…...

SAP GR(Group Reporting)配置篇(七)

1.7、合并处理的配置 1.7.1 定义方法 菜单路径 组报表的SAP S4HANA >合并处理的配置>定义方法 事务代码 SPI4...

共建智能软件开发联合实验室,怿星科技助力东风柳汽加速智能化技术创新

11月14日&#xff0c;以“奋进70载&#xff0c;智创新纪元”为主题的2024东风柳汽第二届科技周在柳州盛大开幕&#xff0c;吸引了来自全国的汽车行业嘉宾、技术专家齐聚一堂&#xff0c;共襄盛举&#xff0c;一同探寻如何凭借 “新技术、新实力” 这一关键契机&#xff0c;为新…...

优化表单交互:在 el-select 组件中嵌入表格显示选项

介绍了一种通过 el-select 插槽实现表格样式数据展示的方案&#xff0c;可更直观地辅助用户选择。支持列配置、行数据绑定及自定义搜索&#xff0c;简洁高效&#xff0c;适用于复杂选择场景。完整代码见GitHub 仓库。 背景 在进行业务开发选择订单时&#xff0c;如果单纯的根…...

每日一题 LCR 079. 子集

LCR 079. 子集 主要应该考虑遍历的顺序 class Solution { public:vector<vector<int>> subsets(vector<int>& nums) {vector<vector<int>> ans;vector<int> temp;dfs(nums,0,temp,ans);return ans;}void dfs(vector<int> &…...

cocos creator 3.8 Node学习 3

//在Ts、js中 this指向当前的这个组件实例 //this下的一个数据成员node&#xff0c;指向组件实例化的这个节点 //同样也可以根据节点找到挂载的所有组件 //this.node 指向当前脚本挂载的节点//子节点与父节点的关系 // Node.parent是一个Node,Node.children是一个Node[] // th…...

微信小程序底部button,小米手机偶现布局错误的bug

预期结果&#xff1a;某button fixed 到页面底部&#xff0c;进入该页面时&#xff0c;正常显示button 实际结果&#xff1a;小米13pro&#xff0c;首次进入页面&#xff0c;button不显示。再次进入时&#xff0c;则正常展示 左侧为小米手机第一次进入。 遇到bug的解决思路&am…...

【计组】复习题

冯诺依曼型计算机的主要设计思想是什么&#xff1f;它包括哪些主要组成部分&#xff1f; 主要设计思想&#xff1a; ①采用二进制表示数据和指令&#xff0c;指令由操作码和地址码组成。 ②存储程序&#xff0c;程序控制&#xff1a;将程序和数据存放在存储器中&#xff0c;计算…...

Apache Maven 标准文件目录布局

Apache Maven 采用了一套标准的目录布局来组织项目文件。这种布局提供了一种结构化和一致的方式来管理项目资源&#xff0c;使得开发者更容易导航和维护项目。理解和使用标准目录布局对于有效的Maven项目管理至关重要。本文将探讨Maven标准目录布局的关键组成部分&#xff0c;并…...

Android 功耗分析(底层篇)

最近在网上发现关于功耗分析系列的文章很少&#xff0c;介绍详细的更少&#xff0c;于是便想记录总结一下功耗分析的相关知识&#xff0c;有不对的地方希望大家多指出&#xff0c;互相学习。本系列分为底层篇和上层篇。 大概从基础知识&#xff0c;测试手法&#xff0c;以及案例…...

【Xbim+C#】创建圆盘扫掠IfcSweptDiskSolid

基础回顾 https://blog.csdn.net/liqian_ken/article/details/143867404 https://blog.csdn.net/liqian_ken/article/details/114851319 效果图 代码示例 在前文基础上&#xff0c;增加一个工具方法&#xff1a; public static IfcProductDefinitionShape CreateDiskSolidSha…...

IntelliJ+SpringBoot项目实战(四)--快速上手数据库开发

对于新手学习SpringBoot开发&#xff0c;可能最急迫的事情就是尽快掌握数据库的开发。目前数据库开发主要流行使用Mybatis和Mybatis Plus,不过这2个框架对于新手而言需要一定的时间掌握&#xff0c;如果快速上手数据库开发&#xff0c;可以先按照本文介绍的方式使用JdbcTemplat…...

利用oss进行数据库和网站图片备份

1.背景 由于网站迁移到香港云 服务器&#xff0c;虽然便宜&#xff0c;但是宿主服务器时不时重启&#xff0c;为了预防不可控的因素导致网站资料丢失&#xff0c;所以想到用OSS 备份网站数据&#xff0c;bucket选择在香港地区创建&#xff0c;这样和你服务器传输会更快。 oss…...

Excel - VLOOKUP函数将指定列替换为字典值

背景&#xff1a;在根据各种复杂的口径导出报表数据时&#xff0c;因为关联的表较多、数据量较大&#xff0c;一行数据往往会存在三个以上的字典数据。 为了保证导出数据的效率&#xff0c;博主选择了导出字典code值后&#xff0c;在Excel中处理匹配字典值。在查询百度之后&am…...

实验室管理平台:Spring Boot技术构建

3系统分析 3.1可行性分析 通过对本实验室管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本实验室管理系统采用SSM框架&#xff0c;JAVA作为开发语言&a…...

操作系统进程和线程——针对实习面试

目录 操作系统进程和线程什么是进程和线程&#xff1f;进程和线程的区别&#xff1f;进程有哪些状态&#xff1f;什么是线程安全&#xff1f;如何实现线程安全&#xff1f;什么是线程安全&#xff1f;如何实现线程安全&#xff1f; 进程间的通信有哪几种方式&#xff1f;什么是…...

使用 cnpm 安装 Electron,才是正确快速的方法

当然&#xff0c;下面是总结的几种安装 Electron 的方法&#xff0c;包括使用 npm 和 cnpm&#xff0c;以及一些常见的问题解决技巧。 ### 1. 使用 npm 安装 Electron #### 步骤 1: 初始化项目 在你的项目目录中初始化一个新的 Node.js 项目&#xff1a; bash npm init -y …...

【人工智能】PyTorch、TensorFlow 和 Keras 全面解析与对比:深度学习框架的终极指南

文章目录 PyTorch 全面解析2.1 PyTorch 的发展历程2.2 PyTorch 的核心特点2.3 PyTorch 的应用场景 TensorFlow 全面解析3.1 TensorFlow 的发展历程3.2 TensorFlow 的核心特点3.3 TensorFlow 的应用场景 Keras 全面解析4.1 Keras 的发展历程4.2 Keras 的核心特点4.3 Keras 的应用…...

Win10 LTSC 1809系统下Docker 4.0.0与CVAT 2.31.0的完美搭配:避坑指南与性能优化

Win10 LTSC 1809系统下Docker 4.0.0与CVAT 2.31.0的完美搭配&#xff1a;避坑指南与性能优化 在工业级计算机视觉标注领域&#xff0c;CVAT&#xff08;Computer Vision Annotation Tool&#xff09;凭借其开源特性和强大的标注功能&#xff0c;已成为许多研究团队的首选工具。…...

安卓蓝牙开发避坑指南:Bluedroid初始化流程中的5个关键细节

安卓蓝牙开发避坑指南&#xff1a;Bluedroid初始化流程中的5个关键细节 在安卓蓝牙协议栈开发中&#xff0c;Bluedroid的初始化流程是系统与蓝牙硬件建立通信的基础桥梁。许多看似随机的蓝牙功能异常&#xff0c;往往源于初始化阶段某些参数的微妙配置差异。本文将深入剖析五个…...

FLUX.1-dev实战教程:像素幻梦中多LoRA叠加与风格混合生成技巧

FLUX.1-dev实战教程&#xff1a;像素幻梦中多LoRA叠加与风格混合生成技巧 1. 像素幻梦工坊简介 Pixel Dream Workshop&#xff08;像素幻梦工坊&#xff09;是基于FLUX.1-dev扩散模型构建的专业像素艺术生成工具。与传统AI绘图工具不同&#xff0c;它专为像素艺术创作优化&am…...

PDF-Parser-1.0智能办公:告别手动复制粘贴的PDF处理方案

PDF-Parser-1.0智能办公&#xff1a;告别手动复制粘贴的PDF处理方案 1. 为什么需要智能PDF解析工具 在日常办公场景中&#xff0c;PDF文档处理是一个高频且痛苦的工作环节。根据统计&#xff0c;职场人士平均每周需要处理15-20份PDF文件&#xff0c;包括合同、报告、发票等各…...

velocity-subtemplate-variable-fix

为什么你的 Velocity 子模板变量总是失效&#xff1f;一行代码解决了阅读前提&#xff1a;你正在用 Velocity 做模板引擎开发&#xff0c;主模板能正常渲染&#xff0c;但子模板里一用变量就报空指针或者路径找不到。先说我的血泪史 昨晚被一个问题折磨了两个小时&#xff1a; …...

语言清洗令:禁用for循环的第一年——软件测试从业者的专业复盘与策略革新

2025年全球编程社区发起的“语言清洗运动”&#xff0c;标志着软件开发范式的重大转折。这项运动的核心是禁用传统循环语句&#xff08;如for、while&#xff09;&#xff0c;以推动声明式编程的普及&#xff0c;减少迭代错误并提升代码可读性。作为软件测试从业者&#xff0c;…...

解析 C++ 中的‘生存期保护’:利用生命周期注解规避 99% 的悬挂指针风险

解析 C 中的“生存期保护”&#xff1a;利用生命周期注解规避 99% 的悬挂指针风险尊敬的各位开发者&#xff0c;各位对 C 内存安全孜孜不倦的探索者们&#xff0c;大家好&#xff01;在 C 的广阔世界中&#xff0c;指针和引用以其强大的能力&#xff0c;赋予了我们对内存的直接…...

三三复制系统模式介绍

三三复制系统模式介绍&#xff1a;从底层逻辑到合规落地在社交电商与团队裂变领域&#xff0c;三三复制系统凭借其低门槛、高稳定性的特点&#xff0c;成为企业实现用户快速增长与业绩倍增的重要工具。不同于传统多级分销的复杂层级&#xff0c;三三复制系统以“三”为核心基数…...

脉冲雷达系统仿真:从理论建模到Matlab代码实现

1. 脉冲雷达系统仿真入门指南 第一次接触雷达系统仿真时&#xff0c;我和大多数初学者一样&#xff0c;面对满屏的数学公式和专业术语完全摸不着头脑。直到把实验室那台老式示波器玩坏了三次之后&#xff0c;我才真正理解脉冲雷达仿真的核心逻辑——它本质上就是在计算机里搭建…...

爆款AI写教材工具登场!一键生成低查重教材,轻松开启编写之旅

编写教材的困境与AI的解决方案 在编写教材时&#xff0c;如何准确地满足多样化的需求呢&#xff1f;不同年级的学生在认知能力上存在显著差异&#xff0c;教材内容若过于深奥或过于简单都无法达到效果&#xff1b;而课堂教学和自主学习等不同的环境对教材的要求各不相同&#…...