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

怎样做服务型网站网站优化外包推荐

怎样做服务型网站,网站优化外包推荐,做微页的网站,网络营销是什么的产生主要源于网络市场的复杂性一、项目场景 项目中要实现交易报表,处理大规模数据导出时,出现单个Excel文件过大导致性能下降的问题,需求是导出大概四千万条数据到Excel文件,不影响正式环境的其他查询。 二、方案 1.使用读写分离,查询操作由从库…
一、项目场景

项目中要实现交易报表,处理大规模数据导出时,出现单个Excel文件过大导致性能下降的问题,需求是导出大概四千万条数据到Excel文件,不影响正式环境的其他查询。

二、方案
1.使用读写分离,查询操作由从库处理
2.数据分批查询
3.异步导出数据
4.生成和拆分多个Excel文件
三、实现

1.pom.xml中添加以下依赖:


<dependencies><!-- Spring Boot Starter Data JPA --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!-- Spring Boot Starter Async --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Apache POI for Excel --><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId></dependency>
</dependencies>

包括SpringBoot、Spring Data JPA、异步处理相关的依赖,以及用于生成Excel文件的Apache POI库。

2.application.properties中加入数据库配置,以及异步任务执行器的配置:

# Database configuration
spring.datasource.url=jdbc:mysql://localhost:3306/yourdatabase
spring.datasource.username=yourusername
spring.datasource.password=yourpassword
# Async configuration
spring.task.execution.pool.core-size=10
spring.task.execution.pool.max-size=20
spring.task.execution.pool.queue-capacity=500
spring.task.execution.thread-name-prefix=Async-thread

3.使用从库进行查询
减轻主库的查询压力,建议在架构上使用读写分离,查询操作由从库处理。这样可以确保主库的操作性能和其他接口查询不受影响。

@Service
public class DataService {@Autowiredprivate DataRepository dataRepository;public List<Data> fetchData(int offset, int limit) {return dataRepository.findAll(PageRequest.of(offset, limit)).getContent();}
}

4.数据分批查询策略
防止一次性查询大量数据导致内存溢出,采用分页查询的方式,每次查询部分数据进行处理。

@Service
public class DataExportService {@Autowiredprivate DataService dataService;@Asyncpublic void exportData() {int pageSize = 10000;int pageNumber = 0;List<Data> dataBatch;do {dataBatch = dataService.fetchData(pageNumber, pageSize);if (!dataBatch.isEmpty()) {// 导出数据到ExcelexportToExcel(dataBatch, pageNumber);}pageNumber++;} while (!dataBatch.isEmpty());}
}

5.异步任务配置
通过@EnableAsync注解启用异步任务,并配置一个任务执行线程来单独执行导出任务。

@Configuration
@EnableAsync
public class AsyncConfig implements AsyncConfigurer {@Overridepublic Executor getAsyncExecutor() {ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();executor.setCorePoolSize(10);executor.setMaxPoolSize(20);executor.setQueueCapacity(500);executor.setThreadNamePrefix("Async-");executor.initialize();return executor;}
}

6.导出任务接口实现
使用@Async注解将导出任务的方法标记为异步执行。

@Service
public class DataExportService {@Autowiredprivate DataService dataService;@Asyncpublic void exportData() {// 数据查询和导出的逻辑}
}

7.生成和拆分Excel文件
使用Apache POI处理Excel,查询到的数据批次,将数据分成多个Excel文件,避免单个文件过大。

public void exportToExcel(List<Data> dataBatch, int batchNumber) {Workbook workbook = new XSSFWorkbook();Sheet sheet = workbook.createSheet("Data");int rowNum = 0;for (Data data : dataBatch) {Row row = sheet.createRow(rowNum++);row.createCell(0).setCellValue(data.getId());row.createCell(1).setCellValue(data.getName());// 其他数据列}try (FileOutputStream fos = new FileOutputStream("data_batch_" + batchNumber + ".xlsx")) {workbook.write(fos);} catch (IOException e) {e.printStackTrace();}
}
http://www.khdw.cn/news/13182.html

相关文章:

  • 邀请码网站怎么做软文发布推广平台
  • 用自己网站做邮箱域名搜索引擎推广案例
  • 清远网站推广优化公司站长之家app下载
  • 零基础网站建设入门到精通视频教网络优化的工作内容
  • 做网单哪个网站最好用淘宝推广工具
  • 包头市建设局网站汕头网站建设平台
  • 网站建设小程序开发seo推广外贸独立站建站
  • 厦门seo报价南京seo公司教程
  • 学生做的动漫网站网络营销课程实训报告
  • 建设官方网站怎么登录北京计算机培训机构前十名
  • 智能建站源码如何制作自己的网站?
  • 个人做网站开发免费b站软件推广网站2023
  • 衡水需要做网站的公司seo关键词优化排名软件
  • 做淘客的网站关键词有哪些福州网站排名
  • 做服装找工作网站搜狗网站收录
  • 专业做化妆品外包材的招聘网站百度推广开户公司
  • 网站开发的选择是什么推广公司app主要做什么
  • 做网站的结论和心得鸡西seo
  • 需要郑州网站建设滁州网站seo
  • 怎么做虚拟的网站做网站多少钱
  • 网站外链怎么做下载优化大师安装桌面
  • app定制seo在线优化平台
  • 智慧团建官网登录seo短期课程
  • 有域名 有固定ip怎么做网站全网搜索引擎优化
  • 网站网络营销方案宁波seo链接优化
  • 合肥做网站便宜mdyun百度seo站长工具
  • wordpress微信群导航主题搜索引擎优化与推广技术
  • 网站开发文档的示例新的seo网站优化排名 网站
  • 免费建站网站一级熟熟俱乐一级夫妇性活五月天噪综合常用的网络营销推广方法有哪些
  • 网站建设公司的案例网销怎么销售的