模拟java 数据处理

import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;


/**
 * 
 * 
 * 模拟1一万只表 ,計算 cost times:83 ms 秒0 s
 * 模拟10万只表 ,計算 cost times:397 ms 秒0 s
 * 机器双核,4G内存测试
 * Intel(R) 6 Series/C200 Series Chipset Family 4 port Serial ATA Storage Controller - 1C00
 * @author Administrator
 *
 */
public class Test {

 
  static Random r = new Random();
  static Map<String,List<Meter>> map = new HashMap<String,List<Meter>>();
static{
int temp=0,temp2 ;

int a =0;
while(a<1000){  
List<Meter> aList = new ArrayList<Meter>();
for(int i=1,j=i+1;i<10;j++,i++){
Date dat = null;
Calendar cd = Calendar.getInstance();
       cd.add(Calendar.DATE, i);
       dat = cd.getTime();
       
       if(i==1){
        temp = i+r.nextInt(10);
       }else{
        temp += i+r.nextInt(10);
       }
       aList.add(new Meter("meter"+a,dat,temp));
       
}
map.put("meter"+a, aList);
a++;

}


}


//yyyy-MM-dd HH:mm:ss

static SimpleDateFormat dformat = new SimpleDateFormat("yyyy-MM-dd");
 
public static void main(String[] args) {
long bg = System.currentTimeMillis();
System.out.println("开始計算。。。。");
Map<String,List<Meter>> map2 = new HashMap<String,List<Meter>>();
String tempMeterNo = null;
   for(Map.Entry<String,List<Meter>> m:map.entrySet()){
            System.out.print(" ");
            
        List<Meter> cList = new ArrayList<Meter>(); 
            for(int i=0;i<m.getValue().size();i++){
            tempMeterNo = m.getKey();
           
            Meter m1 = m.getValue().get(i);

//System.out.println(m1.getMeterNo()+"-"+dformat.format(m1.getDay())+"-"+m1.getVal());
if(i<m.getValue().size()-1){
Meter m2 = m.getValue().get(i+1);
int v = m2.getVal()-m1.getVal();
//計算差值
Meter m3 = new Meter(m1.getMeterNo(),m1.getDay(),v);
cList.add(m3);
}


}
            map2.put(tempMeterNo, cList);

}
System.out.println("=======結束計算============");

long ed = System.currentTimeMillis();
System.out.println("計算 cost times:"+(ed-bg)+" ms 秒"+(ed-bg)/1000+" s");
//打印输出结果

/* long b2 = System.currentTimeMillis();
for(Map.Entry<String,List<Meter>> m:map2.entrySet()){
          // System.out.print("  結果 ");
           
        List<Meter> cList = new ArrayList<Meter>(); 
           for(int i=0;i<m.getValue().size();i++){
            tempMeterNo = m.getKey();
           
            Meter m1 = m.getValue().get(i);


//System.out.println(m1.getMeterNo()+"-"+dformat.format(m1.getDay())+"-"+m1.getVal());
           }
       }
   long e2= System.currentTimeMillis();
   System.out.println("打印 cost times:"+(ed-bg)+" ms");*/


}


public static Date getdate(int i)
    {
        Date dat = null;
        Calendar cd = Calendar.getInstance();
        cd.add(Calendar.DATE, i);
        dat = cd.getTime();
        SimpleDateFormat dformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Timestamp date = Timestamp.valueOf(dformat.format(dat));
        return date;
    }


}


class Meter {

public String meterNo;
public Date day;
public int val;


public Meter(String meterNo, Date day, int val) {
super();
this.meterNo = meterNo;
this.day = day;
this.val = val;
}
public String getMeterNo() {
return meterNo;
}
public void setMeterNo(String meterNo) {
this.meterNo = meterNo;
}
public Date getDay() {
return day;
}
public void setDay(Date day) {
this.day = day;
}
public int getVal() {
return val;
}
public void setVal(int val) {
this.val = val;
}



}
Jmockdata(再也不用苦逼的造测试数据了) Jmockdta是一款实现模拟JAVA类型或对象的实例化并随机初始化对象的数据的工具框架。单元测试的利器。     The plug-in of Jmockdata what through random algorithm mock java data.   Jmockdata插件通过随机算法模拟Java数据.   版本信息 Jmockdata-2.0 发布时间 2017-02-03 Jmockdata-1.0 发布时间 2017-01-04 具体介绍和用法可以参考如下:   0. 模拟数据入口方法 JMockData.mock(JmockDataWrapper) 1. 被模拟数据必须继承JmockDataWrapper经过它的包装 2. 被模拟数据最好是plain bean,只提供getter,setter,has,is方法的才可以被模拟 3. 框架默认实现了40个元数据类型的数据模拟器包括:   byte.class,Byte.class,byte[].class,Byte[].class, short.class,Short.class,short[].class,Short[].class, int.class,Integer.class,int[].class,Integer[].class, long.class,Long.class,long[].class,Long[].class, float.class,Float.class,float[].class,Float[].class, double.class,Double.class,double[].class,Double[].class, boolean.class,Boolean.class,boolean[].class,Boolean[].class, char.class,Character.class,char[].class,Character[].class, String.class,String[].class, BigDecimal.class,BigDecimal[].class, BigInteger.class,BigInteger[].class, Date.class,Date[].class 通过对以上基本元数据类型的模拟实现,本框架可以轻松模拟由以上元数据结构组成的BEAN、LIST、SET、ARRAY等复杂深度的数据结构的数据模拟。   4. 可以通过JmockDataContext 获取模拟过程的所有上下文信息,甚至可以打印整个模拟类型树   5. 可以通过JMockDataManager 注册模拟数据类型,重写模拟数据算法,注册模拟数据类拦截器等 6. 可以通过实现MockData来实现一个模拟数据类型 7. 可以通过实现JmockDataTemplate,或者继承JmockDataTemplateDefault来重写模拟数据算法 8. 可以通过实现JmockDataInterceptor来实现一个拦截器 9. 具体示例实践请参考https://github.com/jsonzou/jmockdata-demo 10. 有问题或者对本框架有新的想法,请联系我, 作者:jsonzou 标签:Jmockdata
Java中,我们可以使用Apache Flink(原Kafka Streaming、LinkedIn Naiad等项目合并而来的一个实时流处理框架)的API来模拟Flink的数据处理流程。Flink以其高吞吐量、低延迟和容错能力而闻名。以下是使用Java模拟Flink数据处理的基本步骤: 1. **设置环境**:首先需要添加Flink Java SDK到你的项目依赖中,并创建FlinkContext对象来管理流处理任务。 ```java import org.apache.flink.api.common.functions.MapFunction; import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; // 创建流处理环境 StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); ``` 2. **读取数据源**:可以模拟从文件、Kafka主题或其他源头读取数据,通常会使用`env.addSource()`函数。 ```java DataStream<String> text = env.socketTextStream("localhost", 9999); // 模拟网络数据源 ``` 3. **数据转换(Mapping)**:通过实现MapFunction对数据进行预处理和转换。 ```java DataStream<MyEvent> events = text.map(new MapFunction<String, MyEvent>() { public MyEvent map(String value) throws Exception { return parseAndProcess(value); } }); ``` 4. **数据处理管道**:创建一系列操作,如过滤(filter)、聚合(reduce或window)和排序等。 ```java DataStream<MyProcessedData> results = events.filter(...).keyBy(...).sum(...); ``` 5. **保存结果**:最后将处理后的数据输出到文件、数据库或另一个数据目的地。 ```java results.print(); // 输出到控制台做调试 results.writeAsText("output.txt"); // 写入文件 ``` 6. **启动和提交作业**:配置并运行流处理任务。 ```java env.execute("Java Flink Data Processing Simulation"); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值