自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

u010502101的博客

成长中的菜鸟程序员

  • 博客(362)
  • 资源 (4)
  • 收藏
  • 关注

原创 3、解析复杂Json进阶

场景一没有头的Json数组 “e:/person”文件内容如下,文件中是没有头的json数组[ { "id" : 1, "name" : "lzj", &quot

2018-06-03 23:05:11 786

原创 5.2、Gson拾遗——对象中属性有选择性的序列化为json字符串

对象序列为json字符串时,可以指定对象中某些属性或者排除某些属性序列化为json字符串。Gson中提供了两种方式。方式一在要序列化的对象属性上用注解@Expose指定,并在创建Gson的时候,用excludeFieldsWithoutExposeAnnotation()激活注解。public class Person { private int id; @Expo...

2018-06-03 16:27:59 1109

原创 5.1、Gson拾遗——serializeNulls支持空对象序列化

在对象序列化为json字符串时,默认是不序列化NULL对象的,如果在序列化时设置serializeNulls了,就可以支持NULL的序列化。注意serializeNulls对反序列化没有影响。 示例如下 1、注释掉builder.serializeNulls() public static void main(String[] args) { GsonBuilder...

2018-06-03 12:15:16 6581 2

原创 4、java对象与json序列化和反序列化进阶——TypeAdapter适配器

在Gson中提供了TypeAdapter适配器用于处理java对象与json之间的不规则序列化与反序列化问题。 例如,有一json文件 “e:/person”,其内容为{ "name" : "lzj", "cars" : ["baoma", "audi"]}任务一: 把e:/person文件中的jso

2018-06-03 12:06:50 1021

原创 1.3、java中数组、集合、泛型与json的序列化和反序列化

1、json与java中的数组序列化与反序列化 /*json与java中的数组序列化与反序列化*/ @Test public void arrayBetweenJsonJava(){ Gson gson = new Gson(); /*把java中数组序列化为json形式*/ String[] src = {"a", "b"...

2018-06-02 23:24:35 7338

原创 2.2、用JsonReader解析文件流中的json

有时,json字符串存储在一个文件中,Gson中提供了JsonReader来处理此种情况,只需要为json文件创建一个字符流对象,并把改字符流对象传给JsonReader即可。 例如在“e:/user.json”文件中有如下内容{ "id" : "2", "name" : "lzj", "age" :

2018-06-02 22:14:43 13212

原创 2.1、用JsonParser解析json树模型

解析json字符串可以像解析DOM一样,解析每一个节点。Gson的jar包中提供了JsonParser类,专门用于解析json字符串的,注意只是json节点的内容解析出来,并不像前两节把整个json字符串反序列化为一个对象。 public static void main(String[] args) { String jsonString = "{\"id\":1,...

2018-06-02 18:14:35 26084 1

原创 1.2、java中的原始数据类型与Json序列化与反序列化

1、将java中的原始数据类型序列化成Json字符串 java中原始数据类型即为int、String、Integer等。 @Test public void primitiveToJson(){ Gson gson = new Gson(); int id = 1; int[] array = {10, 20, 30}; ...

2018-05-31 23:32:03 947

原创 1.1 java对象与json的序列化与反序列化

Google Gson是一个开源的基于java的库,用于将java对象序列化为json,或者将json返序列化为java对象。 下面以Gson的入门程序为例,创建一个maven工程,并导入Gson的依赖<dependency> <groupId>com.google.code.gson</groupId> <artifactId&am

2018-05-31 23:04:06 477

原创 读取文件进行修改,然后修改的内容写回文件

java.util.regex包下的Pattern和Matcher,再加上正则表达式,在java中可以实现非常强大的字符串处理功能。Pattern用来创建一个正则表达式的匹配模式,Matcher用来根据正则匹配字符串。下面举例一些重要API的用法。一、Pattern1、public static boolean matches(String regex, CharSequence input) m

2018-05-07 23:28:02 5453 2

原创 基于xml方式配置spring batch

从平面文件(Flat File)中批量读取数据 章节用的是编码方式配置spring batch的job任务的,本节就是把上篇博客中job任务改成基于xml配置的方式配置job,因为公司中现在很大一部分还是用的xml方式配置job。案例:还是读取User.txt文件中数据,并把每条数据中满足年纪是偶数的打印出来。1、创建spring boot工程,并在pom.xml文件中引入所需要的jar包...

2018-04-14 21:16:22 4827

原创 基于编码配置方式整合Spring boot + Spring batch + Quartz

前面一节中已经介绍了基于xml配置方式整合Spring boot + Spring batch + Quartz ,本节介绍基于编码配置方式整合Spring boot + Spring batch + Quartz。具体spring batch和quartz的使用请看其它参考,下面进行整合。 案例:定时,在距当前5s后,每隔3s执行一次job任务,job任务是读取User.txt文件中内容,并把...

2018-04-13 21:38:11 2740

原创 整合spring boot + quartz + spring batch + mybatis

quartz负责定时,spring batch负责批量,mybatis负责持久化数据库,具体每个框架的介绍请参考其它文章,本节主要做spring boot + quartz + spring batch + mybatis的整合。案例:指定距当前时间5s后,每隔3s时间执行一次批处理任务,批处理任务是读取数据库表记录并打印出来。 数据库采用DB2数据库,库表为users,记录为: ...

2018-04-13 20:13:53 10945 2

原创 基于xml配置方式整合Spring boot + Spring batch + Quartz

Spring batch提供了强大的批处理功能,比如ItemReader、ItemProcess、ItemWriter,还有Tasklet,但定时功能不够强大;Quartz提供了通过JobDetail、Trigger、SchedulerFactory提供了强大的定时器功能,但批处理功能不够强大,两者一拍即合,Spring做了两者的整合,整合的jar包见: <dependency...

2018-04-12 20:23:03 3308 4

原创 Scheduler作业调度

Scheduler在quartz中负责调度作业的,用来绑定trigger和jobdetail。 用法如下:public class TestHelloJob { public static void main(String[] args) throws SchedulerException, InterruptedException { SimpleDateFormat s

2018-04-05 23:48:14 482

原创 CronTrigger定时接口

CronTrigger是quartz中基于日历的作业调度,比SimpleTrigger接口更强大常用。 CronTrigger的定时时间可以由cron表达式表示,cron表达式由7个字符表达式表示,格式:[秒][分][小时][日][月][周][年]cron表达式中允许的字符 特殊字符的意义: 定时时间的示例: 举例:从2017年到2018年的每月每天的上午8:30执行作业public cla

2018-04-05 17:41:33 648

原创 SimpleTrigger接口

Trigger是quartz中设置定时的接口,该接口两个比较常用的实现接口SimpleTrigger和CronTrigger。 SimpleTrigger接口的作用:在一个指定的时间段内执行一次作业任务或是在指定时间间隔内多次执行作业任务。示例用法 首先创建一个Job任务,任务只是简单的打印public class HelloJob implements Job { public void

2018-04-05 16:02:30 617

原创 Trigger

Trigger是Quartz中的触发器,用来告诉调度器什么时候触发Job的执行。在Trigger的实例中可以定义触发Job的开始时间和结束时间等信息。 首先创建一个Job的实现类,在Job的实现类中获取Job的开始时间和结束时间public class HelloJob implements Job { public void execute(JobExecutionContext cont

2018-04-01 23:29:58 193

原创 JobExecutionContext与JobDataMap

JobExecutionContext可以理解为Job实例的上下文,可以通过它获取job运行时的环境以及属性信息,一个Job对应一个JobExecutionContext的实例。当Scheduler调用一个Job时就会将JobExecutionContext传递给job的execute方法。JobDataMap实现了Map接口,用法同Map类似,它可以装在任何可序列化的数据对象,执行Job时用来传递

2018-04-01 22:47:44 2425

原创 JobDetail获取Job的属性信息

Job实例是实现了Job接口的类,只覆写一个execute执行方法。JobDetail为Job实例提供了许多设置属性,一级JobDataMap成员属性,它用来存储特定Job实例的状态信息,调度器需要借助JobDetail对象添加Job实例。 Job的生命周期:每次调度完job时,在执行execute方法之前创建新的job实例;当调用完成后,job实例对象会被垃圾回收。以Hello World 的J

2018-04-01 17:34:29 3890

原创 Quartz之hello world

1、首先创建一个maven工程,在pom中引入quartz的依赖 <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.3.0</version> </depen

2018-04-01 16:57:28 179

原创 作业优化——本地分区

在批处理的时候,如果要读取的文件或数据库非常大,执行一个批处理会花非常长的时间,此时考虑本地分区比较合理。本地分区:把要读取的非常大的文件或数据库表分成不同的块,然后启动多个线程处理这些分成的块。spring batch提供了Partitioner接口来实现划分分区,下面以读取数据库表为例,把库表划分成不同的块进行读取进行处理。 user表: 首先实现Partitioner类,对库表进行分区,按

2018-04-01 10:47:22 505 1

原创 监听器Listener

在spring batch中主要以以下四种监听器为主:Step监听器 :监听step的执行开始和结束;Job监听器 :监听job的执行开始和结束;SkipListener监听器 :在读、处理、写的过程中,监听跳过的异常;ChunkListener监听器 :监听的chunk的执行开始和结束,或者监听chunk出错。一、Step监听器首先创建一个step监听器,实现StepExe...

2018-03-25 22:03:11 777 4

原创 作业优化——在step中使用异步操作

异步处理就是:如果一条数据正在处理,后面又来了一条数据,可以不用等前面的数据处理完进行处理。异步处理也是用多线程实现的,但与上章节在step中使用多线程有所不同,多线程方式:每个线程处理一批数据,互不干扰,开辟晚的线程有可能比开辟早的线程先执行完毕;异步方式:异步方式按读取数据的先后顺序执行,读取一批数据后交给线程处理,又读取一批数据后,如果前面的数据还没执行完毕,可以不用等待,从线程池中拿新的线程

2018-03-25 19:59:11 676

原创 作业优化——在step中使用多线程

假设一个step中要执行一项读数据、然后处理数据,最后写数据的任务,如果数据非常大,需要很长的一段的时间才能处理完,此种情况下就可以创建多个线程来同时执行该任务,缩短任务的执行时间。但是要在读的任务上加 Synchronized 标识,保证同一个时刻只有一个线程在读,使每个线程读取的数据不一样。如果不加Synchronized,有可能两个线程在同时读数据,读的数据会有部分重叠,影响数据的处理。在sp

2018-03-25 17:27:50 1012 1

原创 异常处理——skip

在一个step中,不管reader还是process,还是write,出现了指定的错误都可以跳过,继续执行后面的数据。 @Bean public Step chunkStep(){ return stepBuilderFactory.get("chunkStep1") .chunk(3)

2018-03-22 22:41:12 516

原创 异常处理——retry

当spring batch在处理批量时,有时因为某些原因,使批量在第一次执行时出错,比如锁表之类的,出错之后,可以进行多次执行出错的地方。 //job @Bean public Job fileReaderJob(){ return jobBuilderFactory.get("fileReaderJob") .start(chunkStep()

2018-03-20 23:13:39 604

原创 Step之间传递数据

Step之间传递数据有两种方式:一、通过step_execution 或者 job_execution来在不同step中传递数据.但是如果数据量大的话,这将不是一种好的方式.因为spring batch默认会通过job repository将 setp_execution和job_execution进行持久化。 如果把要传递的数据放在setp_execution或者job_execution中进行传

2018-03-20 16:42:56 4341 5

原创 异常处理——restart重启

当spring batch批处理时遇到异常,可以采用如下方式一、restart1、在job中阻止重启 //job //在job中设置了preventRestart会阻止job重启,第一次不管执行成功还是失败,都不会重启第二次 @Bean public Job fileReaderJob(){ return jobBuilderFactory.get("f

2018-03-19 23:47:07 3103

转载 Jaxb2实现JavaBean与xml互转的方法详解

本文实例讲述了Jaxb2实现JavaBean与xml互转的方法。分享给大家供大家参考,具体如下:一、简介JAXB(Java Architecture for XML Binding) 是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到 XML实例文档。Jaxb 2.0是J

2018-03-16 21:02:37 4796 1

转载 xml与java对象的相互转换

JAXB 元素使用说明 @XmlRootElement@XmlRootElement 注解用于标注类或枚举类型,用它标注的类在映射后的 schema 中会以一个全局元素的形式出现,元素的类型是一个包含 Java 类属性的 XML 复杂数据类型。我们可以通过 @XmlRootElement 注解的 name 属性来定制映射的 schema 全局元素的名称,一般来说以 @XmlRootElement

2018-03-13 16:54:35 1049

原创 数据写入——写入到数据库中

spring batch提供了JdbcBatchItemWriter类,用来把数据写入到数据库中。 示例:本例把下面的User.txt文件中的数据保存到Mysql数据库中。ID,NAME,AGE1,lzj,282,tom,203,terry,304,lerry,185,bob,256,linda,277,marry,398,long,229,kin,3310,jiken,40在

2018-03-11 17:31:37 8411

原创 数据写入——写入到xml

spring batch提供了StaxEventItemWriter,用来把数据写入到xml文件中。示例:把下面User.txt文件中的数据写入到xml文件中。ID,NAME,AGE1,lzj,282,tom,203,terry,304,lerry,185,bob,256,linda,277,marry,398,long,229,kin,3310,jiken,40首先读取txt文

2018-03-11 12:20:19 1124

原创 数据写入——写入到txt、csv等平面文件

spring batch读取完数据,然后执行process,执行完毕开始写入文件,本章以写入txt、csv等平面文件为例。 Spring batch提供了FlatFileItemWriter类来实现写入文件时的配置。 示例:读取下面User.xml文件,然后把xml中数据写入UserWrite.txt文件中。<?xml version="1.0" encoding="UTF-8"?><root

2018-03-10 23:34:51 1223

转载 System.getenv()和System.getProperty() 的区别

System.getenv()和System.getProperty() 的区别1、System.getenv() 方法是获取指定的环境变量的值。它有两种方法,一种是接收参数为任意字符串,当存在指定环境变量时即返回环境变量的值,否则返回null。另外一种是不接受参数,那么返回的是所有的环境变量。下面是它们的源码(1)接收参数为任意字符串public static String getenv(Stri

2018-03-10 23:14:20 10273

原创 数据处理——实现数据校验

spring batch提供了对数据校验的功能,先读取数据,然后校验数据,最后写入数据。 在spring batch中实现检验,先定义一个类去实现Validator接口,然后Spring batch提供了一个ValidatingItemProcessor类,用于去执行Validator的接口类。实质ValidatingItemProcessor也是实现了ItemProcessor接口,执行校验就相

2018-03-10 21:51:06 2726

原创 数据处理——实现数据过滤

实现spring batch中的ItemProcessor接口,并重写接口中的process方法来实现数据过滤。示例:从一个list源中读取数据,只过滤出与”A”差值大于10的数据。1、该作业配置如下:import java.util.Arrays;import org.springframework.batch.core.Job;import org.springframework.batch

2018-03-10 17:01:31 8220

原创 数据处理——ItemProcessor接口

spring batch中需要实现ItemProcessor接口来进行批量处理读入的数据。下面以批量把大小字母转化为小写字母为例首先批量读字母,然后进行处理,最后打印出来,整个job作业配置如下import java.util.Arrays;import org.springframework.batch.core.Job;import org.springframework.batch.cor

2018-03-08 22:54:36 3990

原创 读数据——从数据库中批量读取数据

下面以mysql为例,用spring batch批量从mysql数据库表users表中读取数据。 uers表目前数据如下: 下面用spring batch批量读取该表,首先配置数据源#配置step执行多少次commit一次spring.batch.chunk.size=4#数据源配置spring.datasource.url=jdbc:mysql://localhost:33...

2018-03-07 22:28:34 12252 6

原创 读数据——从xml文件中批量读取数据

假设有一个User.xml文件,其内容如下:<?xml version="1.0" encoding="UTF-8"?><root> <user> <id>1</id> <name>lzj</name> <age>28</age> </user> <user> <id>2</id> <name>

2018-03-06 22:53:27 9126

helm-tiller.tar

由于谷歌被强,无法下载谷歌镜像,特此提供Helm的服务器端Tiller的镜像,该镜像可以在k8s中用于创建pod

2020-11-19

kubeadm-basic.images.tar.gz

安装kubeadm时,需要登录到google才能下载google镜像,由于国内不能登录google,所以上传google的镜像

2020-06-10

android入门教程

对于没了解过android开发的同学非常适合。

2015-10-04

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除