开发工具分享
  • 首页
  • 计算科学
  • 文化旅游
  • 项目和网站
    • OSSEZ 计算技术
    • USRealEstate 社区
    • 地区文化
    • CWIKI.US
    • BUG.OSSEZ.COM
    • RSS.OSSEZ.COM
Computer Science
Computer Science

Java Jackson 中如何 Pending JSON 对象到数组中

希望的输出格式为: [ { "title" : "欢迎来到 USRealEstate 经纪和服务", "image_url" : "https://cdn.usreio.com/discourse-uploads/original/1X/fdefbad432b0e756611496fc9e13e5bdc16c8eef.jpeg", "created_at" : "2021-05-02T18:17:49.413Z" }, { "title" : "不可或缺的美国房屋检查", "image_url" : "https://cdn.usreio.com/discourse-uploads/optimized/1X/47bcb58402b4df4cce4ec3106fda57f08fcc4321_2_1024x418.png", "created_at" : "2021-10-19T18:12:04.224Z" }, { "title" : "关于 USRealEstate - 不动产", "image_url" : null, "created_at" : "2021-05-02T19:53:48.489Z" }] 这个是一个数组格式的 JSON 数据,如何使用 ArrayNode 来生成数据呢?     解决办法 我们可以使用下面的解决办法: 首先初始化一个 ArrayNode 对象 ArrayNode newsletterArrayNode = mapper.createArrayNode(); 在上面的代码中 mapper 为 ObjectMapper 对象。 使用的是下面的代码进行实例化的 ObjectMapper mapper = new ObjectMapper(); 因为是数组,但是数组中存储的是 JsonNode,因此我们可以使用下面的代码: for (JsonNode topicsNode : topicsNodes) { ObjectNode newsletterNode = mapper.createObjectNode(); newsletterNode.set("title", topicsNode.get("title")); newsletterNode.set("image_url", topicsNode.get("image_url")); newsletterNode.set("created_at", topicsNode.get("created_at")); newsletterArrayNode.add(newsletterNode); } 代码说明 上面代码中首先针对 newsletterArrayNode 中的 ArrayNode ,我们需要先初始化一个 ObjectNode 对象。 然后将内容设置到 ObjectNode 中。 在完成 newsletterNode 的对象初始化后可以使用 add 方法,将内容添加到 ArrayNode 对象中。 因为我最后只需要一个数组,因此直接将 newsletterArrayNode 对象输出就可以了。 也可以转换为字符串来存储。   https://www.ossez.com/t/java-jackson-pending-json/13843

2022年01月06日 0Comments 605Browse 0Like Read more
Computer Science

Java Jackson 中的 mapper

在我们在 Java 程序创建的时候,如果需要处理 Jackson,我们可能会用到下面一句话。 private ObjectMapper mapper = new ObjectMapper(); 这个用于创建 ObjectMapper 中的 mapper。 说明 ObjectMapper 对象的创建的成本是比较高的。 因此在创建的时候,我们尽量是创建一次多次使用。 例如我们在使用 Spring Batch 进行批量处理的时候,我们会在 Tasklet 最开始的时候初始化 mapper 对象。 而不是在每次需要的时候再初始化。     如上面的代码,在任务开始的时候我们就对这个对象进行初始化了。   https://www.ossez.com/t/java-jackson-mapper/13841

2022年01月06日 0Comments 671Browse 0Like Read more
Computer Science

AWS 上传的 S3 文件重新载入的时候简体中文显示乱码

在我们将文件上传到 S3 后再次重新从界面中下载的时候发现上传文件的简体中文为乱码。     问题和解决 这是因为在上传的文件的时候文件的 meta 数据设置为 text。 如果是这样的话,上传的文件中的简体中文会显示为乱码。     在源代码上传中,如果使用的是 String 进行上传的话,将会默认使用 text。     尽管所有的文本中都使用了 UTF-8,但是因为这个 UTF-8 是没有 BOM 格式的,因此没有办法识别为 UTF-8 版本。 因此我们在这里需要设置 metadata 元数据。 byte[] bytes = newsletterJSON.getBytes(StandardCharsets.UTF_8); ByteArrayInputStream contentsAsStream = new ByteArrayInputStream(bytes); ObjectMetadata md = new ObjectMetadata(); md.setContentType(MediaType.JSON_UTF_8.toString()); PutObjectResult putObjectResult = s3Client.putObject("com.ossez.real.estate", "kb/newsletter.json", contentsAsStream, md); 考虑上面的代码。 在上面的代码中,我们设置了 ObjectMetadata 对象中的内容类型。 其他 另外,如果你将 String 保存为文件,然后使用 S3 的客户端从文件中读取后上传的话是没有这个问题的。 这个问题的存在就是将 String 保存在内存中的数据直接上传到 S3 上。   https://www.ossez.com/t/aws-s3/13840

2022年01月06日 0Comments 679Browse 0Like Read more
Computer Science

AWS CloudFront 如何设置 TTL

TTL 指的是内容的刷新时间。 通常默认情况下 AWS CloudFront 的刷新时间是 24 个小时,可以理解就是如果你更新了 S3 的内容,你可能需要等 24 小时才能看到变化。 具体操作要比这个复杂更多。 我们可以通过设置 TTL 来设置刷新时间。 进入 Behaviors 界面 选择需要调整的 Behaviors,然后单击编辑。     设置缓存策略 在这里可以通过选择禁用缓存来让 AWS 不再设置缓存。     通过上面的配置,如果你的 S3 内容更新了,通过 CDN 访问的 S3 内容也会同时被更新。   https://www.ossez.com/t/aws-cloudfront-ttl/13839

2022年01月06日 0Comments 918Browse 0Like Read more
Computer Science

MariaDB 日期类型格式的长度问题

在我们对 MariaDB 日期类型进行字段设置的时候,通常我们可能没有考虑后面的长度问题。     在默认的字段配置的时候,我们可能都不会设置这个长度。 意义 实际上,这个长度决定了你日期类型的精度。 可用的定义为 3, 6 如果设置为 3 的话,定义的精度为毫秒,如果定义成 6 的话,精度为纳秒。 如果不设置的话,定义的精度为秒。 主要是在程序中对时间类型数据进行对比判断可能会出现精度问题导致判断不准确。 例如,如果不设置精度为 3 那么数据:2021-12-20 19:31:39.400 将会在数据库中存储为: 2021-12-20 19:31:39 如果你将数据取出来进行判断的话,会因为丢精度导致判断不准确。 上图显示了设置精度为 3 的数据存储结果。 如果不设存储精度,那么存储的数据如下: 需要根据实际情况确定存储的精度问题。   https://www.ossez.com/t/mariadb/13834

2021年12月21日 0Comments 987Browse 0Like Read more
Computer Science

Java 日期类型比较没有返回正确的结果

最近在数据库处理的时候发现日期对比的时候没有返回正确的结果。 但是保存的时间实际上是相同的。 代码如下: if (!mlsPhoto.getDateUpdate().equals(photo.getDateUpdate())) { } 因为这里使用了 equals 方法。 问题解决 经过 Debug 后,这 2 个日期的纳秒数是不同的,查看下对象如下。     我们会发现其中一个对象有纳秒,一个对象没有。 但是 fastTime 是相同的。 如果使用 equals 那么这个方法比较的是毫秒,所以是不相等的。 因为多了一个 0。     如上图显示的毫秒比较,因此这里不能使用这个比较方法。 在这里,我们转换成了 JODA 对象,然后再对比,通常能够削减精度。 DateTime dbDateTime = new DateTime(mlsPhoto.getDateUpdate()); DateTime mlsDateTime = new DateTime(photo.getDateUpdate()); if (!dbDateTime.isEqual(mlsDateTime)) { } 说白了这个问题就是精度的问题。   https://www.ossez.com/t/java/13833

2021年12月21日 0Comments 846Browse 0Like Read more
Computer Science

Spring Batch 异步调用任务

在默认的情况下任务的调用并不是异步执行的。 这会导致前端会返回 500 服务器错误,因为一个任务的执行时间可能会超过几分钟。     如上面的图片显示的错误,API 返回了超时。 解决办法 可以配置 Batch 批量程序采取异步执行的方式。 Spring RestController 的代码不需要改变,还是使用 JobLauncher 来运行的。 代码如下: JobParameters jobParameters = new JobParametersBuilder().addDate("timestamp", new Date()).toJobParameters(); JobExecution jobExecution = jobLauncher.run(cloudSyncJob, jobParameters); logger.debug("JOB ID - [{}]", jobExecution.getJobId()); 需要修改的地方是你的 Batch 配置类。 需要增加下面这段代码。 /** * Config to async run Batch Jobs * * @param jobRepository * @return */ @Bean public SimpleJobLauncher simpleJobLauncher(JobRepository jobRepository) { SimpleJobLauncher jobLauncher = new SimpleJobLauncher(); jobLauncher.setJobRepository(jobRepository); jobLauncher.setTaskExecutor(new SimpleAsyncTaskExecutor()); return jobLauncher; } 这里面最关键的一句话就是: jobLauncher.setTaskExecutor(new SimpleAsyncTaskExecutor());     上面的这段代码是最关键的部分。   https://www.ossez.com/t/spring-batch/13832

2021年12月14日 0Comments 858Browse 0Like Read more
Computer Science

Maven 3 进行安装

什么是 Maven 在了解Maven之前,我们先来看看一个Java项目需要的东西。首先,我们需要确定引入哪些依赖包。例如,如果我们需要用到commons logging,我们就必须把 commons logging的jar包放入classpath。 如果我们还需要 log4j,就需要把log4j相关的jar包都放到classpath中。这些就是依赖包的管理。 其次,我们要确定项目的目录结构。例如,src目录存放Java源码,resources目录存放配置文件,bin目录存放编译生成的.class文件。 版本 Maven 的版本越新越好。 在很多时候,请不要使用 Maven 3 以下的版本。3. 下载 在当前的运营环境下,针对 Windows 请下载:apache-maven-3.8.4-bin.zip 如果是在 Linux 的环境下,请下载 apache-maven-3.8.4-bin.tar.gz 下载的链接地址为:Maven – Download Apache Maven     解压 你可以将下载的压缩文件保存到你操作系统上的任何地方。 我们假设我们将解压的文件夹保存到目录中: D:\DKits\Maven 有关这个文件夹中的内容,请参考下面的图:     配置环境 进入你的 Windows 环境配置界面中然后选择 Environment Variables 在这里,我们创建一个名为 MAVEN_HOME 的变量,变量的值为你 Maven 安装的路径。     随后将你的 Maven 安装路径添加到你的 PATH 目录中。     检查安装环境 在 cmd 命令行工具中,运行 mvn -v 命令。 如果你能够看到下面的输出的话,则说明配置已经成功,并且可以开始用了。     C:\Users\huyuc>mvn -v Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d) Maven home: D:\DKits\Maven\bin\.. Java version: 11.0.11, vendor: Red Hat, Inc., runtime: C:\Program Files\RedHat\java-11-openjdk-11.0.11-1 Default locale: en_US, platform encoding: Cp1252 OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows C:\Users\huyuc> https://www.ossez.com/t/maven-3/13831#maven-installationwhat-is-the-maven-1

2021年12月14日 0Comments 917Browse 0Like Read more
Computer Science

OpenJDK 8 安装

通常 OpenJDK 8 和 11 都能互相编译和通用。 我们建议使用 11,但是如果你使用 JDK 8 的话也是没有问题的。 建议配置使用 OpenJDK,不建议使用 Oracle JDK,主要是因为版本问题。 OpenJDK is working, system doesn’t require install Oracle JDK. 下载 针对使用 OpenJDK,我们可以使用 RedHat 的编译版本来进行下载和安装。 下载地址为:Red Hat build of OpenJDK Download | Red Hat Developer 请针对你操作系统使用不同的版本,当然你也可以安装 Windows 的版本,通常没有什么问题。     安装 双击下载后的安装程序后进行安装。 通常你不需要对配置进行修改,使用默认配置单击 OK 就行。 版本和环境检查 运行下面的命令来检查安装 Java 的版本。 java -version 如果你能够看到你安装的版本的话,就说明配置已经成功了。 C:\Users\huyuc>java -version openjdk version "11.0.11" 2021-04-20 LTS OpenJDK Runtime Environment 18.9 (build 11.0.11+9-LTS) OpenJDK 64-Bit Server VM 18.9 (build 11.0.11+9-LTS, mixed mode) C:\Users\huyuc>   https://www.ossez.com/t/openjdk-8/13830  

2021年12月14日 0Comments 1146Browse 0Like Read more
Computer Science

Confluence 如何在页面中显示目录

在默认情况下,Confluence 是不能在页面中显示目录和当前页面中的内容导航的。 因此我们可以使用的是 Confluence 分区。     然后有上面几种分区方式。     选择你需要的分区后再添加必要的宏就可以了。 出现的分区效果图如下图所示。     上面就显示了 Confluence 的分区效果图。   https://www.ossez.com/t/confluence/13828

2021年12月14日 0Comments 989Browse 0Like Read more
1…7980818283…237
Archives
  • June 2026
  • May 2026
  • April 2026
  • March 2026
  • February 2026
  • January 2026
  • December 2025
  • November 2025
  • October 2025
  • September 2025
  • August 2025
  • July 2025
  • June 2025
  • May 2025
  • April 2025
  • March 2025
  • February 2025
  • January 2025
  • December 2024
  • November 2024
  • October 2024
  • September 2024
  • August 2024
  • July 2024
  • June 2024
  • May 2024
  • April 2024
  • March 2024
  • February 2024
  • January 2024
  • December 2023
  • November 2023
  • October 2023
  • September 2023
  • August 2023
  • July 2023
  • June 2023
  • May 2023
  • April 2023
  • December 2022
  • November 2022
  • October 2022
  • September 2022
  • August 2022
  • May 2022
  • April 2022
  • March 2022
  • February 2022
  • January 2022
  • December 2021
  • November 2021
  • October 2021
  • September 2021
  • August 2021
  • July 2021
  • June 2021
  • May 2021
  • April 2021
  • March 2021
  • February 2021
  • January 2021
  • December 2020
  • November 2020
  • October 2020
  • September 2020
  • August 2020
  • July 2020
  • June 2020
  • May 2020
  • April 2020
  • March 2020
  • February 2020
  • January 2020
  • December 2019
  • November 2019
  • October 2019
  • September 2019
  • August 2019
  • July 2019
  • June 2019
  • May 2019
  • April 2019
  • March 2019
  • February 2019
  • January 2019
  • December 2018
  • November 2018
  • October 2018
  • September 2018
  • August 2018
  • July 2018
  • June 2018
  • May 2018
  • April 2018
  • March 2018
Categories
  • Computer Science (2,367)
    • Confluence (663)
    • Gradle (12)
  • U.S. (514)
  • 文化旅游 (146)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1