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

秦皇岛哪家做网站好天津网站建设求职简历

秦皇岛哪家做网站好,天津网站建设求职简历,免费开设网站,物业管理系统和物业管理软件有时您需要将大量数据导出到JSON到文件中。 可能是“将所有数据导出到JSON”#xff0c;或者是GDPR“可移植性权利”#xff0c;您实际上需要这样做。 与任何大型数据集一样#xff0c;您不能只将其全部容纳在内存中并将其写入文件。 它需要一段时间#xff0c;它会从数据… 有时您需要将大量数据导出到JSON到文件中。 可能是“将所有数据导出到JSON”或者是GDPR“可移植性权利”您实际上需要这样做。 与任何大型数据集一样您不能只将其全部容纳在内存中并将其写入文件。 它需要一段时间它会从数据库中读取大量条目并且您需要注意不要使此类导出使整个系统超载或耗尽内存。 幸运的是借助Jackson的SequenceWriter和可选的管道流这样做非常简单。 看起来像这样 private ObjectMapper jsonMapper new ObjectMapper();private ExecutorService executorService Executors.newFixedThreadPool(5);Asyncpublic ListenableFutureBoolean export(UUID customerId) {try (PipedInputStream in new PipedInputStream();PipedOutputStream pipedOut new PipedOutputStream(in);GZIPOutputStream out new GZIPOutputStream(pipedOut)) {Stopwatch stopwatch Stopwatch.createStarted();ObjectWriter writer jsonMapper.writer().withDefaultPrettyPrinter();try(SequenceWriter sequenceWriter writer.writeValues(out)) {sequenceWriter.init(true);Future? storageFuture executorService.submit(() -storageProvider.storeFile(getFilePath(customerId), in));int batchCounter 0;while (true) {ListRecord batch readDatabaseBatch(batchCounter);for (Record record : batch) {sequenceWriter.write(entry);}}// wait for storing to completestorageFuture.get();} logger.info(Exporting took {} seconds, stopwatch.stop().elapsed(TimeUnit.SECONDS));return AsyncResult.forValue(true);} catch (Exception ex) {logger.error(Failed to export data, ex);return AsyncResult.forValue(false);}} 该代码可以做一些事情 使用SequenceWriter连续写入记录。 它使用OutputStream初始化所有内容均写入其中。 这可以是简单的FileOutputStream也可以是如下所述的管道流。 注意这里的命名有点误导– writeValues(out)听起来像是您指示作者现在写东西 而是将其配置为以后使用特定的流。 SequenceWriter初始化为true 表示“包装在数组中”。 您正在编写许多相同的记录因此它们应在最终JSON中表示一个数组。 使用PipedOutputStream和PipedInputStream将SequenceWriter链接到InputStream 然后将InputStream传递到存储服务。 如果我们明确地处理文件则不需要这样做-只需传递FileOutputStream就可以。 但是您可能希望以不同的方式存储文件例如在Amazon S3中并且putObject调用需要一个InputStream从该InputStream可以读取数据并将其存储在S3中。 因此实际上您正在写入一个OutputStream而该OutputStream会直接写入InputStream当被输入以读取该输入流时会将所有内容写入另一个OutputStream 存储文件是在单独的线程中调用的因此写入文件不会阻塞当前线程当前线程的目的是从数据库中读取数据。 同样如果使用简单的FileOutputStream则不需要这样做。 整个方法被标记为Asyncspring因此它不会阻止执行-它被调用并在准备就绪时完成使用内部Spring executor服务和有限的线程池 这里未显示数据库批处理读取代码因为它随数据库的不同而不同。 关键是您应该分批提取数据而不是SELECT * FROMX。 OutputStream包装在GZIPOutputStream中因为带有重复元素的JSON之类的文本文件可从压缩中显着受益 主要工作是由Jackson的SequenceWriter完成的显而易见的一点是–不要假设您的数据可以容纳在内存中。 它几乎永远不会做所以批量处理和增量写入都是如此。 翻译自: https://www.javacodegeeks.com/2018/08/writing-big-json-files-jackson.html
http://www.huolong8.cn/news/486688/

相关文章:

  • 百度站长工具怎么查排名网站无法处理请求
  • 要点营销网站男科医院在线咨询免费
  • 网站被黑是怎么回事怎么建立一个网站搜关键词会跳出
  • 网站建设运营知乎网站在空间费用
  • 网络平台的推广方法清远网站seo公司
  • 河南红旗渠建设集团网站建立网站的请示
  • 安庆市城乡建设网站贵阳网页设计培训学校
  • 服装公司电商网站建设规划好听的网络科技公司名字
  • 石家庄建设企业网站银川网站建设联系电话
  • 阿里云服务器做网站安全吗抖音如何推广引流
  • asp.net 网站开发架构容桂电子商务网站建设
  • 成都网站制作定制微分销免费平台
  • 海外seo网站推广梁平网站建设
  • 高端的培训行业网站开发合肥做网站公
  • 南山网站制作产品设计流程8个步骤
  • 门户网站建设询价公告网站 代备案
  • 购买服务器后如何做网站做网站迅雷下载链接设置
  • 网站开发工程师报名地点北京做网站制作的公司哪家好
  • 昆明手机网站推荐网络公司注册资金
  • 网站换空间上怎么办宁波建设网站
  • 上海做ui网站最好的公司企业网址怎么弄
  • 茂名建站公司模板青岛做网络推广的公司有哪些
  • 政务网站建设云计算中心电子商务网站建设需要哪种语言
  • 室内设计师在哪找登封seo公司
  • 视频网站建设流程图邯郸网站设计招聘网
  • 徐州专业做网站较好的公司网站目录架构
  • 微信分享接口网站开发网站搜索引擎怎样做
  • 黄岩区信誉好高端网站设计自己的网站怎么接广告
  • 创建网站超市app开发公司入
  • 保山市住房和城乡建设厅网站秦皇岛百度网站排名