JAVA每日小知识(关于excel下载时插入和stream流遍历优化)

**1、**在windows系统下启动rocketmq操作:

在bin目录下使用cmd

分别输入

start mqnamesrv.cmd

start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true

**2、**在stream流中需要new对象时,可能会出现new很多对象堆积在堆中,这是需要用try,finally在finally中将new的对象为null,并用gc收集

如下:

复制代码
List<ChildModelParamDTO> childModelParamDTOS = childModels.stream().map(childModel -> {
                ChildModelParamDTO childModelParamDTO=new ChildModelParamDTO();
           try {
               LambdaQueryWrapper<PredictionModelParam> eq1 = new QueryWrapper<PredictionModelParam>().lambda()
                       .eq(PredictionModelParam::getPredictionModelId, childModel.getId());
               PredictionModelParam predictionModelParam = predictionModelParamMapper.selectOne(eq1);
               childModelParamDTO.setCode(childModel.getCode());
               childModelParamDTO.setName(childModel.getName());
               childModelParamDTO.setParameterWeight(predictionModelParam.getParameterWeight());
               return childModelParamDTO;
           }
           finally {
               childModelParamDTO=null;
               System.gc();
           }
        }).collect(Collectors.toList());

**3、**在使用easyexcel时,由于监听器无法被spring管理,所以无法在监听器内部使用mp,此时可以用重写的方式将

excel中数据添加进数据库中,如:

复制代码
 EasyExcel.read(file, PredictionParamExcelDTO.class, new ReadListener<PredictionParamExcelDTO>() {
            @Override
            public void invoke(PredictionParamExcelDTO predictionParamExcelDTO, AnalysisContext analysisContext) {
                PredictionParam predictionParam = null;
                try {
                    predictionParam = new PredictionParam();
                    predictionParam.setMaterialCode(predictionParamExcelDTO.getMaterialCode());
                    predictionParam.setMaterialName(predictionParamExcelDTO.getMaterialName());
                    predictionParam.setProductionLine(predictionParamExcelDTO.getProductionLine());
                    predictionParam.setCapacity(Integer.valueOf(predictionParamExcelDTO.getCapacity()));
                    predictionParamService.save(predictionParam);
                } catch (Exception e) {
                    e.printStackTrace();
                    log.error("模板上传失败");
                    throw e;
                }
            }

            @Override
            public void doAfterAllAnalysed(AnalysisContext analysisContext) {

            }

        }).sheet().doRead();

4、 下载excel的同时,将数据写入excel中:

复制代码
try {
          httpServletResponse.setContentType("application/vnd.ms-excel");
          String fileName = URLEncoder.encode("D:/idea/idea_projects/mwlc-dcm-requirement-backend/predictionParamExcel.xlsx", "UTF-8");
          httpServletResponse.setHeader("content-disposition", "attachment;filename="+fileName);

          ServletOutputStream outputStream;
          outputStream=httpServletResponse.getOutputStream();
          EasyExcel.write(outputStream)
                  .head(PredictionParamExcelDTO.class)
                  .excelType(ExcelTypeEnum.XLSX)
                  .sheet("日基准产能表模板")
                  .doWrite(这里放需要写入excel的数据);
                   
          outputStream.close();


      }catch (IOException o){
          throw new RuntimeException(o);
      }
相关推荐
看浪的路人8 分钟前
第9讲:大模型应用监控与可观测性——OpenTelemetry + Prometheus + Grafana 全链路追踪
java·前端·spring
临床数据科学和人工智能兴趣组19 分钟前
在R语言的生态系统中,字符串处理一直是一个重要且复杂的任务
开发语言·正则表达式·r语言·r语言-4.2.1
大侠归来20 分钟前
事务能回滚吗?Pipeline 算事务吗?
java·数据库·oracle
蜗牛互联网20 分钟前
Python调用Gemini Structured Outputs实现工单路由门禁
java·开发语言·人工智能·python
SEO_juper36 分钟前
给网页做可引用性评分:判断内容够不够让 AI 引用(GEO 工具,附代码)
开发语言·人工智能·爬虫·python·seo·独立站
Wang's Blog40 分钟前
Java 项目实战: 交友项目 - 产品定位、功能模块与客户端原型解读
java·开发语言·交友
Wang's Blog43 分钟前
Java 项目实战:交友项目 —— 项目导读与整体架构
java·架构·交友
今年下半年1 小时前
【短信发送】Spring Boot整合多种短信接口的实现(附源码)
java·spring boot·后端·sms·qcloudsms
盛世宏博北京1 小时前
十二防档案库房总线架构设计:恒湿消毒净化一体机 RS485 组网实战笔记
开发语言·笔记·php·恒湿机·档案八防温湿度
wespaul1 小时前
VeapAI 自然语言操作实战|第 04 篇:系统数据加工——把系统自身的元数据吃成知识
java·大数据·运维·数据库·人工智能