主要是spg项目的数据库,把casset表中的数据导入到virtualObj表。
开始用的算法:List<Casset> list=cassetManager.findAll();把casset中的记录全部取出来(取到内存),然后逐条与virtualObj中的记录比较virtualObjManager.findVirtualObjByAssetIdAndTypeId(*,*);,然后插入。
导致问题:
1.一次取出全部casset的记录(130000条)数据量太大,内存不够,堆溢出;
2.而且每插入一条数据都要遍历virtualObj表做比较避免数据重复,当virtualObj表记录逐渐增多时操作越来越慢。
改进:
算法:减小list的大小,List<Casset> list=cassetManager.findByConferenceId();每次取一个会议的论文插入virtualObj,解决了问题一,但问题二仍然存在,太慢,不可行。
改进二:
问题二是导致插入太慢的主要原因,因此要避免每插入一条数据都要遍历virtualObj并和每一条数据进行比较的操作,具体采用了如下算法:采用一个标志数组flag[140000]初始为0,下表代表casset表中的id号;VirtualObj中已存在的论文就将flag置1,这样在从 casset中取一条记录(主键id)插入VirtualObj的时候就不用再遍历VirtualObj进行比较,只要看flag[id]为0,则插入,为1 则数据已存在。(速度提高了很多啊)
同时,在对flag数组进行设置时,VirtualObj表中的数据要分段取出,每次取5000个(一次全部取出的话会占用过多的内存,速度变慢)。
最终代码:
int[] flag=new int[140000];
for(int j=0;j<140000;j++)
flag[j]=0;
//取出assetId在70000-140000范围内的记录,共3000多条
//这里只给出了一个分段70000-140000范围
List<VirtualObj> list1=virtualObjManager.findVirtualObjBySiteIdAndRange(5, 70000, 140000);
Iterator<VirtualObj> it1=list1.iterator();
while(it1.hasNext()){
int assetid=it1.next().getAssetId();
flag[assetid]=1;
System.out.println("++++:assetId="+assetid+"===:"+flag[assetid]+" ---"+virtualObjManager.findVirtualObjByAssetIdAndTypeId(assetid, 5).get(0).getName());
}
//执行插入操作
for(int id=70000;id<140000;id++){
if(flag[id]==0){
Casset casset=cassetManager.findCassetById(id);
if(casset!=null){
VirtualObj obj=new VirtualObj();
obj.setAssetId(casset.getId());
obj.setTypeId(5);
obj.setCreateTime(casset.getCreatetime());
obj.setModifiedTime(casset.getLastmodifytime());
obj.setAcl(700);
obj.setName(casset.getTitle());
obj.setFilePath(casset.getPdf_url());
obj.setSecondName(casset.getPdf_url());
obj.setType("pdf");
obj.setIcon("pdf");
obj.setCategory("文档");
virtualObjManager.addVirtualObj(obj);
System.out.println("++++:Id="+id+"---"+casset.getTitle());
}
}
}
分享到:
相关推荐
以下是两种推荐的工作总结写作方法: 1. **便签总结法**: - 这种方法利用手机自带的便签应用,便于随时记录和回顾。 - "今日总结"部分列出一天完成的任务,以数字顺序排列,清晰明了。 - "我的反思"是对计划与...
【小学教师见习两天总结】 在小学教师的见习过程中,我深感教育工作的艰巨与责任重大。"十年树木,百年树人"这句话充分体现了教育的长期性和深远影响。在为期两天的见习中,我体验了从理论到实践的转变,对教师这一...
【自动监测室上半年工作总结】 自动监测室在上半年的工作中,主要负责大气和水质监测站的运维,确保数据的准确性和及时性。以下是具体的工作总结: 一、大气主动站运维 1. 运行管理:目前设有3个大气监测站点,...
- **会议时间**:通常在每月10日左右举行,具体时间需提前两天确定。 - **参会人员**:包括总裁、副总裁、总裁助理、各中心总监和指定人员。 - **会签准备**:参会人员需准备工作报告,对议题进行充分思考,定期...
这份压缩包包含了核心的学习资料,主要聚焦于如何高效地制定工作计划以及撰写工作总结,这两项技能对于任何职业阶段的人员来说都是至关重要的。 工作计划是项目或任务管理的基础,它帮助我们明确目标、分配资源、...
在这篇工作总结中,我要特别感谢我的导师和同事们。他们不仅在业务上给予了我详尽的指导,更在精神上激励我,帮助我明确了自己的职业目标。这次实习经历不仅锻炼了我的专业技能,更重要的是,它塑造了我的个性品质,...
在党员下沉社区参与疫情防控的工作中,主要职责是协助社区干部对出入人员和车辆进行登记管理,执行“每户两天出入一人”的规定。工作中,不仅严格把控,还提供了贴心的服务,如帮助不会使用手机的老年人进行二维码...
通过对前一天工作的总结回顾,不仅可以对完成的任务进行梳理,还能够从中发现问题、总结经验,为接下来的工作提供指导和方向。与此同时,制定工作计划则能够使团队明确目标,有效规划资源,以期在接下来的工作中获得...
工作总结是每一位职场人反思自我工作成效、提炼经验教训的重要方式,同时也是为接下来的工作计划提供方向的蓝本。在此,我将以刚刚完成的7日工作总结以及即将展开的8日工作计划为框架,细致地梳理和规划,以期在职业...
"工作总结模板"是这样一个工具,它包含了两个核心部分:日工作总结跟踪确认表和争议问题清单,皆以Excel格式提供,方便数据录入、整理和分析。 首先,我们来看“日工作总结跟踪确认表”。这个模板是每天工作后进行...
这篇工作总结涵盖了学院大学生红十字会项目部的主要工作内容、成果、存在的不足以及未来的展望。以下是对这些内容的详细分析: 1. **工作简介** - **部门改名**:项目部由原来的外联部在2021年下半年更名为现名,...
【村清产核资工作总结】 本文主要介绍了两个关于...这两篇文章反映了农村集体资产清产核资工作的系统性和复杂性,旨在通过严谨的工作流程和透明的操作,实现农村集体资产的规范化管理和保护,促进农村经济健康发展。
【天燃气公司2021年安全工作总结报告】 在2021年度,天燃气公司遵循“安全第一、预防为主、综合治理”的安全生产方针,积极开展各项安全工作,旨在增强员工的安全意识,预防事故发生,确保公司运营的稳定和安全。...
《企业复工复产疫情防控工作总结》 企业疫情防控是当前社会经济发展的重要任务,尤其在企业复工复产阶段,确保疫情防控的有效性至关重要。本文将详细解析XX企业所实施的疫情防控措施,旨在为企业提供参考,以确保...
这篇文档是关于XX年某水电站的检修工作总结,主要涵盖了该年度的安全生产情况、"安全生产年"活动的实施、规范化管理的推进以及安全风险预控管理的推广等多个方面。以下是对这些知识点的详细说明: 1. **安全生产...
工作总结是衡量工作成效和提升自我管理能力的重要手段。在IT行业中,有效的工作总结不仅可以帮助我们追踪项目进度,还可以促进个人技能的积累与成长。以下是一些关于如何撰写工作总结的建议,结合了便签法和日事清...
- 实验通知单:教师需提前一天提交演示实验的通知,分组实验则需提前两天,以便实验员有足够时间准备。 - 实验仪器管理:实验员需要根据通知单准备齐全、清洁、完好并及时的实验器材,对于破损的仪器要填写“仪器...
3. 所有员工都应参加会议,会议记录由专人负责,纪要应在会议后两天内以电子和书面形式分发,并要求签收。 4. 会议纪律严格,迟到、早退或缺席者将受到行政或经济处罚。 五、考核 会议讨论并确认的工作计划将成为...
在这份工作总结中,我将详细阐述这两个主题的实践和体会。 首先,谈到“小学生自我管理”,这不仅是一个教育理念,更是一种培养现代小学生必备素质的方法。在现代教育理念中,教师的角色逐渐由知识的灌输者转变为...