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

江浙沪做网站的公司惠阳东莞网站建设

江浙沪做网站的公司,惠阳东莞网站建设,个人网址是什么,网站备案怎么备案用jackson转json有时您需要将大量数据导出到JSON到文件中。 也许是“将所有数据导出到JSON”#xff0c;或者是GDPR“可移植性的权利”#xff0c;您实际上需要这样做。 与任何大型数据集一样#xff0c;您不能只将其全部容纳在内存中并将其写入文件。 这需要一段时间… 用jackson转json 有时您需要将大量数据导出到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用jackson转json
http://www.pierceye.com/news/337221/

相关文章:

  • 网站建设济南云畅网络技术有限公司厦门最新通告
  • ozon电商平台seo关键词搜索和优化
  • 网站收录查询情况科技网站导航
  • 如何做有后台的网站模板网站和定制网站的优劣势对比
  • 在360网站做公告怎么弄南平建设企业网站
  • 网站建设电影动漫制作专业什么电脑最适合
  • 企业做网站公司有哪些wordpress登陆不了一直返回首页
  • 汽车网站建设公司哪家好长春做网站多少钱
  • 雄安移动网站建设php网站用什么软件
  • 网站开发税收分类山东平台网站建设制作
  • 企业自助建站网手机怎么制作钓鱼网站
  • 家乡ppt模板免费下载网站x wordpress 视差 主题
  • 淄博张店外贸建站公司手机微信网页版
  • 网站建设全域云网站建设流程详解
  • 梅州市五华县建设银行网站写作网站招聘
  • 博物馆网站建设情况工业互联网龙头公司排名
  • 做网站用什么系统做网站开发电脑配置
  • 企业网站推广的主要方法上海中汇建设发展有限公司网站
  • 郑州做网站公司电话网站是否有管理员权限
  • 开发建设信息的网站广东省建设厅的注册中心网站首页
  • 用cms做的网站 的步骤有域名如何做网站
  • h5个人网站源码江苏启安建设集团有限公司网站
  • 网站开发net教程网站后台登陆路径
  • 织梦网站模板安装教程国外设计有名网站
  • 最专业企业营销型网站建设南充 网站开发
  • 国外有哪些网站做推广的比较好北京展览馆网站建设
  • 国外英语写作网站网站后台 刷新
  • 如何制作自己的网站详情页设计
  • 南京免费自助建站模板wordpress 增加侧边栏
  • 做信息分类网站难吗广告设计公司有哪些