内存库与数据同步(2)
来源:互联网 发布:windows xp 激活密钥 编辑:程序博客网 时间:2024/05/20 18:20
public class DataSynchroMain { public static void main(String[] args) throws IOException, ParseException { SystemInit.init(DataSynchroMain.class); SysMessageOutPut soutput=new SysMessageOutPut(false); soutput.outInfo("数据同步程序已启动"); soutput.writeHeartTime(); String jsonpath=DirAndFile.combinePath(SystemInit.jarCurDir, "O_ecthin_forecast.json"); GeneralService gs=new GeneralService(); List<DateEntity> l = gs.GetJsonList(jsonpath); List<Long> filelist=new ArrayList<Long>(); List<Long> keylist=new ArrayList<Long>(); //数据同步时判断变量 int filecount=0; int keycount=0; for (int i = 0; i < l.size(); i++) { File file=new File(l.get(i).getFileath()); if(file.exists()) { filecount++; } if(RedisClientHelper.existsKey(l.get(i).getKey())){ keycount++; } if (RedisClientHelper.existsKey(l.get(i).getKey()) & file.exists()) { //内存库和文件数据都存在,比较修改时间 if(file.length()<=0) { continue; } String dtime=RedisClientHelper.getjedis_DataTime(l.get(i).getKey()); if("".equals(dtime) || dtime==null) { continue; } SimpleDateFormat fm=new SimpleDateFormat("yyyyMMddHHmmss"); Date d=fm.parse(dtime); long keytime=d.getTime(); long filetime=file.lastModified(); //秒 filelist.add(filetime); keylist.add(keytime); } } if(filecount<=0 & keycount<=0) { soutput.outInfo("内存库和文件都没有匹配数据,无法进行数据同步"); }else if(filecount>0 & keycount<=0) { soutput.outInfo("内存库没有键值对,执行将文件导入内存库"); DataWriteService dws=new DataWriteService(); dws.DateWrite(jsonpath, false); }else if(filecount<=0 & keycount>0) { soutput.outInfo("文件不存在,执行将内存库数据导出至文件"); DataReadService drs=new DataReadService(); drs.DateRead(jsonpath, false); soutput.outInfo("读取完成"); }else { soutput.outInfo("内存库和文件数据匹配,通过判断修改时间来进行数据同步"); //取储存时间的俩个list的最大值相比来判断哪里的数据发生了变化 if(Collections.max(keylist)<Collections.max(filelist)) { //说明文件有数据发生了变化;导write soutput.outInfo("文件有数据发生了变化,将文件数据导入内存库"); DataWriteService dws=new DataWriteService(); dws.DateWrite(jsonpath, false); }else if(Collections.max(keylist)>Collections.max(filelist)){ //内存库数据变化了,导read soutput.outInfo("内存库数据发生变化,正在将内存库数据读取至文件"); DataReadService drs=new DataReadService(); drs.DateRead(jsonpath, false); } } soutput.outInfo("程序结束");}}
备注:1.string判断为空要严谨,”“.equals()和==null同时用;
2.collection接口提供方法,可以取list里的最大值和最小值:Collections.max(list),Collections.min(ist);
3.数据同步仅通过修改时间来判断不够严谨,还要加上数据值得判断,相同时不进行同步。
阅读全文
0 0
- 内存库与数据同步(2)
- 内存库与文件数据同步
- ALV与内存数据同步更新
- 共享内存的数据同步
- 数据与内存(C)
- 如何同步内存数据和数据库数据?
- 同步与Java内存模型
- App UI 体验设计:内存、磁盘与网络如何优雅的同步数据?
- CUDA编程(七)共享内存与Thread的同步
- [Java 并发]多线程同步与Java内存模型(二)
- linux进程同步与通信(共享内存和信号量)
- CUDA入门学习(三):共享内存与线程同步
- jVM内存模型(二、重排序与同步)
- CUDA编程(七)共享内存与Thread的同步
- 数据同步canal 疑点——内存
- Oracle 与 Sql 数据同步
- redis与mysql数据同步
- rsync与inotify 数据同步
- OpenCV2:Mat介绍及常见用法
- Git的Patch功能
- 有关请求转发与请求包含,重定向的分析
- 各种缺少jar包出现的问题提示:类似org.aopalliance.intercept.MethodInterceptor这样
- windows下caffe编译不成功问题分析
- 内存库与数据同步(2)
- jodd发送http请求(util)
- css写三角符号-学习笔记
- 分片上传,断点续传,php文件操作,
- 如何成为富翁
- python 已知p,q,e求rsa的d
- oracle给原有数据依次增加ID的值
- centos7 L2TP/ipsec vpn搭建
- 不仅喝汤,也要吃肉,P2P平台如何抢占万亿汽车金融市场