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

phpmysql网站开发视频中山电商网站制作

phpmysql网站开发视频,中山电商网站制作,开公众号的流程,响应式手机网站制作#x1f389;#x1f389;欢迎光临#x1f389;#x1f389; #x1f3c5;我是苏泽#xff0c;一位对技术充满热情的探索者和分享者。#x1f680;#x1f680; #x1f31f;特别推荐给大家我的最新专栏《Spring 狂野之旅#xff1a;从入门到入魔》 #x1f680; 本…  欢迎光临 我是苏泽一位对技术充满热情的探索者和分享者。 特别推荐给大家我的最新专栏《Spring 狂野之旅从入门到入魔》 本专栏带你从Spring入门到入魔 这是苏泽的个人主页可以看到我其他的内容哦 努力的苏泽http://suzee.blog.csdn.net/ 本文重点讲解原理如要看批量数据处理的实战请关注下文后续补充敬请关注 实例应用数据清洗和转换 使用Spring Batch清洗和转换数据 实例应用数据导入和导出 使用Spring Batch导入和导出数据 实例应用批处理定时任务 使用Spring Batch实现定时任务 目录 实例应用数据清洗和转换 使用Spring Batch清洗和转换数据 实例应用数据导入和导出 使用Spring Batch导入和导出数据 实例应用批处理定时任务 使用Spring Batch实现定时任务 介绍Spring Batch Spring Batch入门 解析 需求缔造假设我们有一个需求需要从一个CSV文件中读取学生信息对每个学生的成绩进行转换和校验并将处理后的学生信息写入到一个数据库表中。 数据处理 扩展Spring Batch 自定义读取器、写入器和处理器 与其他Spring项目的集成 与Spring Integration的集成 与Spring Cloud Task的集成 介绍Spring Batch Spring Batch是一个基于Java的开源批处理框架用于处理大规模、重复性和高可靠性的任务。它提供了一种简单而强大的方式来处理批处理作业如数据导入/导出、报表生成、批量处理等。 什么是Spring Batch Spring Batch旨在简化批处理作业的开发和管理。它提供了一种可扩展的模型来定义和执行批处理作业将作业划分为多个步骤Step每个步骤又由一个或多个任务块Chunk组成。通过使用Spring Batch可以轻松处理大量的数据和复杂的业务逻辑。 Spring Batch的特点和优势 可扩展性和可重用性Spring Batch采用模块化的设计提供了丰富的可扩展性和可重用性。可以根据具体需求自定义作业流程添加或删除步骤灵活地适应不同的批处理场景。 事务管理Spring Batch提供了强大的事务管理机制确保批处理作业的数据一致性和完整性。可以配置事务边界使每个步骤或任务块在单独的事务中执行保证了作业的可靠性。 监控和错误处理Spring Batch提供了全面的监控和错误处理机制。可以通过监听器和回调函数来监控作业的执行情况处理错误和异常情况以及记录和报告作业的状态和指标。 并行处理Spring Batch支持并行处理可以将作业划分为多个独立的线程或进程来执行提高作业的处理速度和效率。 Spring Batch入门 1. 安装和配置Spring Batch 首先确保你的Java开发环境已经安装并配置好。然后可以使用Maven或Gradle等构建工具来添加Spring Batch的依赖项到你的项目中。详细的安装和配置可以参考Spring Batch的官方文档。 2. 创建第一个批处理作业 在Spring Batch中一个批处理作业由一个或多个步骤组成每个步骤又由一个或多个任务块组成。下面是一个简单的示例演示如何创建一个简单的批处理作业 Configuration EnableBatchProcessing public class BatchConfiguration {Autowiredprivate JobBuilderFactory jobBuilderFactory;Autowiredprivate StepBuilderFactory stepBuilderFactory;Beanpublic Step step1() {return stepBuilderFactory.get(step1).tasklet((contribution, chunkContext) - {System.out.println(Hello, Spring Batch!);return RepeatStatus.FINISHED;}).build();}Beanpublic Job job(Step step1) {return jobBuilderFactory.get(job).start(step1).build();} } 解析 首先使用Configuration和EnableBatchProcessing注解将类标记为Spring Batch的配置类。然后使用JobBuilderFactory和StepBuilderFactory创建作业和步骤的构建器。在step1方法中定义了一个简单的任务块打印Hello, Spring Batch!并返回RepeatStatus.FINISHED。最后在job方法中使用jobBuilderFactory创建一个作业并将step1作为作业的起始步骤。 3. 理解Job、Step和任务块 Job作业作业是一个独立的批处理任务由一个或多个步骤组成。它描述了整个批处理过程的流程和顺序并可以有自己的参数和配置。 Step步骤块步骤是作业的组成部分用于执行特定的任务。一个作业可以包含一个或多个步骤每个步骤都可以定义自己的任务和处理逻辑。 任务块Chunk任务块是步骤的最小执行单元用于处理一定量的数据。任务块将数据分为一块一块进行处理可以定义读取数据、处理数据和写入数据的逻辑。 需求缔造 假设我们有一个需求需要从一个CSV文件中读取学生信息对每个学生的成绩进行转换和校验并将处理后的学生信息写入到一个数据库表中。 数据处理 数据读取和写入Spring Batch提供了多种读取和写入数据的方式。可以使用ItemReader读取数据例如从数据库、文件或消息队列中读取数据。然后使用ItemWriter将处理后的数据写入目标如数据库表、文件或消息队列。 首先我们需要定义一个数据模型来表示学生信息例如 public class Student {private String name;private int score;// Getters and setters// ... } 接下来我们可以使用Spring Batch提供的FlatFileItemReader来读取CSV文件中的数据 Bean public FlatFileItemReaderStudent studentItemReader() {FlatFileItemReaderStudent reader new FlatFileItemReader();reader.setResource(new ClassPathResource(students.csv));reader.setLineMapper(new DefaultLineMapperStudent() {{setLineTokenizer(new DelimitedLineTokenizer() {{setNames(new String[] { name, score });}});setFieldSetMapper(new BeanWrapperFieldSetMapperStudent() {{setTargetType(Student.class);}});}});return reader; } 支持的数据格式和数据源 Spring Batch支持各种数据格式和数据源。可以使用适配器和读写器来处理不同的数据格式如CSV、XML、JSON等。同时可以通过自定义的数据读取器和写入器来处理不同的数据源如关系型数据库、NoSQL数据库等。 数据转换和校验 Spring Batch提供了数据转换和校验的机制。可以使用ItemProcessor对读取的数据进行转换、过滤和校验。ItemProcessor可以应用自定义的业务逻辑来处理每个数据项。   我们配置了一个FlatFileItemReader设置了CSV文件的位置和行映射器指定了字段分隔符和字段到模型属性的映射关系。 接下来我们可以定义一个ItemProcessor来对读取的学生信息进行转换和校验 Bean public ItemProcessorStudent, Student studentItemProcessor() {return new ItemProcessorStudent, Student() {Overridepublic Student process(Student student) throws Exception {// 进行转换和校验if (student.getScore() 0) {// 校验不通过抛出异常throw new IllegalArgumentException(Invalid score for student: student.getName());}// 转换操作例如将分数转换为百分制int percentage student.getScore() * 10;student.setScore(percentage);return student;}}; }    在上述代码中我们定义了一个ItemProcessor对学生信息进行校验和转换。如果学生的分数小于0则抛出异常否则将分数转换为百分制。 最后我们可以使用Spring Batch提供的JdbcBatchItemWriter将处理后的学生信息写入数据库 Bean public JdbcBatchItemWriterStudent studentItemWriter(DataSource dataSource) {JdbcBatchItemWriterStudent writer new JdbcBatchItemWriter();writer.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider());writer.setSql(INSERT INTO students (name, score) VALUES (:name, :score));writer.setDataSource(dataSource);return writer; } 作业调度和监控 作业调度器的配置Spring Batch提供了作业调度器来配置和管理批处理作业的执行。可以使用Spring的调度框架如Quartz或操作系统的调度工具如cron来调度作业。通过配置作业调度器可以设置作业的触发时间、频率和其他调度参数。   在上述代码中我们配置了一个JdbcBatchItemWriter设置了SQL语句和数据源将处理后的学生信息批量插入数据库表中。 最后我们需要配置一个作业步骤来组装数据读取、处理和写入的过程 Bean public Step processStudentStep(ItemReaderStudent reader, ItemProcessorStudent, Student processor, ItemWriterStudent writer) {return stepBuilderFactory.get(processStudentStep).Student, Studentchunk(10).reader(reader).processor(processor).writer(writer).build(); } 在上述代码中我们使用stepBuilderFactory创建了一个步骤并指定了数据读取器、处理器和写入器。 作业执行的监控和管理Spring Batch提供了丰富的监控和管理功能。可以使用Spring Batch的管理接口和API来监控作业的执行状态、进度和性能指标。还可以使用日志记录、通知和报警机制来及时获取作业执行的状态和异常信息。   最后我们可以配置一个作业来调度执行该步骤 Bean public Job processStudentJob(JobBuilderFactory jobBuilderFactory, Step processStudentStep) {return jobBuilderFactory.get(processStudentJob).flow(processStudentStep).end().build(); } 我们使用jobBuilderFactory创建了一个作业并指定了步骤来执行。 通过以上的示例我们演示了Spring Batch中数据读取和写入的方式使用了FlatFileItemReader读取CSV文件使用了JdbcBatchItemWriter将处理后的学生信息写入数据库。同时我们使用了ItemProcessor对读取的学生信息进行转换和校验。这个例子还展示了Spring Batch对不同数据源和数据格式的支持以及如何配置和组装作业步骤来完成整个批处理任务。 错误处理和重试机制 Spring Batch提供了错误处理和重试机制以确保批处理作业的稳定性和可靠性。可以配置策略来处理读取、处理和写入过程中的错误和异常情况。可以设置重试次数、重试间隔和错误处理策略以适应不同的错误场景和需求。 首先我们可以在步骤配置中设置错误处理策略。例如我们可以使用SkipPolicy来跳过某些异常或者使用RetryPolicy来进行重试。 Bean public Step processStudentStep(ItemReaderStudent reader, ItemProcessorStudent, Student processor, ItemWriterStudent writer) {return stepBuilderFactory.get(processStudentStep).Student, Studentchunk(10).reader(reader).processor(processor).writer(writer).faultTolerant().skip(Exception.class).skipLimit(10).retry(Exception.class).retryLimit(3).build(); } 我们使用faultTolerant()方法来启用错误处理策略。然后使用skip(Exception.class)指定跳过某些异常使用skipLimit(10)设置跳过的最大次数为10次。同时使用retry(Exception.class)指定重试某些异常使用retryLimit(3)设置重试的最大次数为3次。 在默认情况下如果发生读取、处理或写入过程中的异常Spring Batch将标记该项为错误项并尝试跳过或重试直到达到跳过或重试的次数上限为止。 此外您还可以为每个步骤配置错误处理器以定制化处理错误项的逻辑。例如可以使用SkipListener来处理跳过的项使用RetryListener来处理重试的项。   Bean public SkipListenerStudent, Student studentSkipListener() {return new SkipListenerStudent, Student() {Overridepublic void onSkipInRead(Throwable throwable) {// 处理读取过程中发生的异常}Overridepublic void onSkipInWrite(Student student, Throwable throwable) {// 处理写入过程中发生的异常}Overridepublic void onSkipInProcess(Student student, Throwable throwable) {// 处理处理过程中发生的异常}}; }Bean public RetryListener studentRetryListener() {return new RetryListener() {Overridepublic T, E extends Throwable boolean open(RetryContext retryContext, RetryCallbackT, E retryCallback) {// 在重试之前执行的逻辑return true;}Overridepublic T, E extends Throwable void onError(RetryContext retryContext, RetryCallbackT, E retryCallback, Throwable throwable) {// 处理重试过程中发生的异常}Overridepublic T, E extends Throwable void close(RetryContext retryContext, RetryCallbackT, E retryCallback, Throwable throwable) {// 在重试之后执行的逻辑}}; }Bean public Step processStudentStep(ItemReaderStudent reader, ItemProcessorStudent, Student processor, ItemWriterStudent writer,SkipListenerStudent, Student skipListener, RetryListener retryListener) {return stepBuilderFactory.get(processStudentStep).Student, Studentchunk(10).reader(reader).processor(processor).writer(writer).faultTolerant().skip(Exception.class).skipLimit(10).retry(Exception.class).retryLimit(3).listener(skipListener).listener(retryListener).build(); } 批处理最佳实践 数据量控制在批处理作业中应注意控制数据量的大小以避免内存溢出或处理速度过慢的问题。可以通过分块Chunk处理和分页读取的方式来控制数据量。 事务管理在批处理作业中对于需要保证数据一致性和完整性的操作应使用适当的事务管理机制。可以配置事务边界确保每个步骤或任务块在独立的事务中执行。 错误处理和日志记录合理处理错误和异常情况是批处理作业的重要部分。应使用适当的错误处理策略、日志记录和报警机制以便及时发现和处理问题。 性能调优在批处理作业中应关注性能调优的问题。可以通过合理的并行处理、合理配置的线程池和适当的数据读取和写入策略来提高作业的处理速度和效率。 监控和管理对于长时间运行的批处理作业应设置适当的监控和管理机制。可以使用监控工具、警报系统和自动化任务管理工具来监控作业的执行情况和性能指标。 扩展Spring Batch 自定义读取器、写入器和处理器 Spring Batch提供了许多扩展点可以通过自定义读取器、写入器和处理器以及其他组件来扩展和定制批处理作业的功能。 public class MyItemReader implements ItemReaderString {private ListString data Arrays.asList(item1, item2, item3);private IteratorString iterator data.iterator();Overridepublic String read() throws Exception {if (iterator.hasNext()) {return iterator.next();} else {return null;}} } 自定义写入器 public class MyItemWriter implements ItemWriterString {Overridepublic void write(List? extends String items) throws Exception {for (String item : items) {// 自定义写入逻辑}} } 自定义处理器 public class MyItemProcessor implements ItemProcessorString, String {Overridepublic String process(String item) throws Exception {// 自定义处理逻辑return item.toUpperCase();} } 批处理作业的并行处理: Spring Batch支持将批处理作业划分为多个独立的步骤并通过多线程或分布式处理来实现并行处理。 多线程处理可以通过配置TaskExecutor来实现多线程处理。通过使用TaskExecutor每个步骤可以在独立的线程中执行从而实现并行处理。 Bean public TaskExecutor taskExecutor() {ThreadPoolTaskExecutor executor new ThreadPoolTaskExecutor();executor.setCorePoolSize(5);executor.setMaxPoolSize(10);executor.setQueueCapacity(25);return executor; }Bean public Step myStep(ItemReaderString reader, ItemProcessorString, String processor, ItemWriterString writer) {return stepBuilderFactory.get(myStep).String, Stringchunk(10).reader(reader).processor(processor).writer(writer).taskExecutor(taskExecutor()).build(); } 在上述代码中我们通过taskExecutor()方法定义了一个线程池任务执行器并将其配置到步骤中的taskExecutor()方法中。 分布式处理如果需要更高的并行性和可伸缩性可以考虑使用分布式处理。Spring Batch提供了与Spring Integration和Spring Cloud Task等项目的集成以实现分布式部署和处理。 与其他Spring项目的集成 与Spring Integration的集成 首先需要在Spring Batch作业中配置Spring Integration的消息通道和适配器。可以使用消息通道来发送和接收作业的输入和输出数据使用适配器来与外部系统进行交互。 Configuration EnableBatchProcessing EnableIntegration public class BatchConfiguration {Autowiredprivate JobBuilderFactory jobBuilderFactory;Autowiredprivate StepBuilderFactory stepBuilderFactory;Autowiredprivate MyItemReader reader;Autowiredprivate MyItemProcessor processor;Autowiredprivate MyItemWriter writer;Beanpublic IntegrationFlow myJobFlow() {return IntegrationFlows.from(jobInputChannel).handle(jobLaunchingGateway()).get();}Beanpublic MessageChannel jobInputChannel() {return new DirectChannel();}Beanpublic MessageChannel jobOutputChannel() {return new DirectChannel();}Beanpublic MessageChannel stepInputChannel() {return new DirectChannel();}Beanpublic MessageChannel stepOutputChannel() {return new DirectChannel();}Beanpublic JobLaunchingGateway jobLaunchingGateway() {SimpleJobLauncher jobLauncher new SimpleJobLauncher();jobLauncher.setJobRepository(jobRepository());return new JobLaunchingGateway(jobLauncher);}Beanpublic JobRepository jobRepository() {// 配置作业存储库}Beanpublic Job myJob() {return jobBuilderFactory.get(myJob).start(step1()).build();}Beanpublic Step step1() {return stepBuilderFactory.get(step1).String, Stringchunk(10).reader(reader).processor(processor).writer(writer).inputChannel(stepInputChannel()).outputChannel(stepOutputChannel()).build();} } 在上述代码中我们配置了Spring Batch作业的消息通道和适配器。myJobFlow()方法定义了一个整合流程它从名为jobInputChannel的消息通道接收作业请求并通过jobLaunchingGateway()方法启动作业。jobLaunchingGateway()方法创建一个JobLaunchingGateway实例用于启动作业。 与Spring Cloud Task的集成 首先需要在Spring Batch作业中配置Spring Cloud Task的任务启动器和任务监听器。任务启动器用于启动和管理分布式任务任务监听器用于在任务执行期间执行一些操作。 Configuration EnableBatchProcessing EnableTask public class BatchConfiguration {Autowiredprivate JobBuilderFactory jobBuilderFactory;Autowiredprivate StepBuilderFactory stepBuilderFactory;Autowiredprivate MyItemReader reader;Autowiredprivate MyItemProcessor processor;Autowiredprivate MyItemWriter writer;Beanpublic TaskConfigurer taskConfigurer() {return new DefaultTaskConfigurer();}Beanpublic TaskExecutor taskExecutor() {return new SimpleAsyncTaskExecutor();}Beanpublic Job myJob() {return jobBuilderFactory.get(myJob).start(step1()).build();}Beanpublic Step step1() {return stepBuilderFactory.get(step1).String, Stringchunk(10).reader(reader).processor(processor).writer(writer).taskExecutor(taskExecutor()).build();}Beanpublic TaskListener myTaskListener() {return new MyTaskListener();}Beanpublic TaskExecutionListener myTaskExecutionListener() {return new MyTaskExecutionListener();} }
http://www.dnsts.com.cn/news/118141.html

相关文章:

  • 山东德州如何网站建设教程怎么做网店
  • 网站添加flash个人养老金制度是什么意思
  • 商丘网站建设aliapp郑州seo课程
  • 免费微网站开发平台网站内部代码优化
  • 家用电脑怎么做网站精品网站建设费用 c磐石网络
  • 网站 版本 白名单 wap 解析网站监控怎么做
  • 做美陈网站宁波网站推广合作商
  • 做建筑设计的网站推荐公司建网站价格
  • 成都物流网站建设网站开发运营新人要注意什么
  • wordpress 导入工具潍坊百度网站优化
  • 海拉尔网站建设公司seo怎么优化简述
  • 2017主流网站风格网页ui设计尺寸
  • 那些网站做网批应用商店关键词优化
  • 网站开发哪里安全沈阳的网站制作公司
  • 设计素材网站上的素材可以商用吗建设电玩网站
  • 中小企业网站如何推广短剧
  • 电脑上怎样进入中国建设银行网站辽宁建设工程信息网官网 可登录中项网
  • 制作网站第一步百度指数资讯指数是指什么
  • 青海省城乡和住房建设厅网站组合图片可以用在网站做链接吗
  • 建设部申请自己网站wordpress 安全防范
  • 龙城网站建设网站怎么建设教程
  • 产看网站权重知名网站开发语言
  • 辽宁城建设计院有限公司网站wordpress标题加密
  • 电子商务网站建设小结推动高质量发展心得体会
  • 微信网站程序seo文章关键词怎么优化
  • 上海建设厅焊工证查询网站开发app和做网站
  • 做简历网站有什么网站静态化设计
  • 医院网站开发方案安徽省建设工程信息网招标公告
  • 网站制作温州成都网站设计学校
  • 桂阳网站开发wordpress评论区插件