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

Java 8 开始新增的 Optional 类 - 创建 Optional 对象

创建一个 Optional 对象 有下面的一些方法可以被用来创建 Optional 对象。     empty 静态方法 如果你想创建一个空的 Optional 的对象,我们简单的使用 Optional 类提供的 empty() 静态方法: @Test public void whenCreatesEmptyOptional_thenCorrect() { Optional<String> empty = Optional.empty(); assertFalse(empty.isPresent()); } 需要注意的是,我们使用 isPresent() 方法来检查 Optional 对象中值的情况。 如果我们创建的 Optional 对象有值的话,isPresent() 方法将会返回 True,否则 isPresent() 这个方法将会返回 False。 我们将会在本页面的后续部分继续讨论有关 isPresent() 方法的使用。 of 静态方法 下面的方法将会创建一个 Optional 对象,在创建这个对象的时候,我们使用了另外的一个静态方法 of() 来进行创建: @Test public void givenNonNull_whenCreatesNonNullable_thenCorrect() { String name = "HoneyMoose"; Optional<String> opt = Optional.of(name); assertTrue(opt.isPresent()); } 需要注意的是,如果你使用 of 静态方法创建一个 Optional 对象的时候,你还是有机会面临空对象(NullPointerException)异常。 考察下面的代码,如果运行的话,你还是会命令到空对象异常,如果你初始化 Optional 为空的话。 @Test(expected = NullPointerException.class) public void givenNull_whenThrowsErrorOnCreate_thenCorrect() { String name = null; Optional.of(name); } ofNullable 静态方法 有时候,我们希望在我们的代码中使用 Null 值。 这个时候,你可以使用静态方法 ofNullable() ,这个静态方法将会告诉 Optional 对象是可能为 Null 的。 @Test public void givenNonNull_whenCreatesNullable_thenCorrect() { String name = "HoneyMoose"; Optional<String> opt = Optional.ofNullable(name); assertTrue(opt.isPresent()); } 通过上面的操作,我们可以在 Optional 使用 null,这样的话,如果你对 Optional 进行初始化的时候,不会因为null 的使用而导致异常。 @Test public void givenNull_whenCreatesNullable_thenCorrect() { String name = null; Optional<String> opt = Optional.ofNullable(name); assertFalse(opt.isPresent()); } https://www.ossez.com/t/java-8-optional-optional/13965

2022年08月03日 0Comments 555Browse 0Like Read more
Computer Science

Java 8 开始新增的 Optional 类

如果你写过一些 Java 代码的话,你应该知道 Java 中最常见的就是空指针异常错误。 这个错误的原因就是你对一个为空的对象进行操作了。 比如说,你有一个 List,但是这个 List 是空对象,如果你要向这个 List 中添加元素或者删除元素的话,你铁定会遇到空对象的异常。 Optional 类是一个可以为 NULL 的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。 Optional 是个容器:它可以保存类型T的值,或者仅仅保存 NULL。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。     Optional 类的引入很好的解决空指针异常。 概述 在本指南中,我们针对 Optional 来进行一些探讨。 Optional 这个类最新是从 Java 8 中引入的,其主要目的如上面我们介绍的,就是为了解决 Java 中广受诟病的空异常。 Java 从 类型级别(type-level) 给出了一个解决方案,用来替代 null。 In this tutorial, we’re going to show the Optional class that was introduced in Java 8. 如果你还想对 Java 的 Optional 了解更多的话,你可以直接访问 Oracle 提供的官方 API,访问地址为: Tired of Null Pointer Exceptions? Consider Using Java SE 8's Optional!   文章列表 因 Optional 有关的内容比较多,请通过下面的链接访问具体的小主题: Java 8 开始新增的 Optional 类 - 创建 Optional 对象 Java 8 开始新增的 Optional 类 - 检查 Optional 的值 Java 8 开始新增的 Optional 类 - Optional 中的方法 Java 8 开始新增的 Optional 类 - Optional 对象中的异常 Java 8 开始新增的 Optional 类 - Optional 对象中的返回 Java 8 开始新增的 Optional 类 - Optional 在 Java 8 中的 Chaining 特性 Java 8 开始新增的 Optional 类 - Optional 在 Java 9 中的 API Java 8 开始新增的 Optional 类 - Optional 可能存在的滥用 Java 8 开始新增的 Optional 类 - Optional 对象序列化 结论 如果你按照上面的顺序阅读完成相关文章的话,你应该对在 Java 8 中开始使用的 Optional 类有了一些基本的了解。 同时在这边文章中也对为什么要使用 Optional 对象来替代 null 检查进行了一些说明。 同时我们也对如何从 Optional 中获得值进行了一些说明,同时对如果值是 null ,我应该如何设置默认值使用的 orElse() 和 orElseGet() 方法进行了一些阐述。 最后,我们对 Optional 返回的值如何进行转换进行了描述,在对返回值进行转换的话,我们可能会使用到 map(), flatMap() 和 filter() 方法。 同时我们还对 Optional 的一些特性,方法进行了阐述和说明。 在最后,我们对为什么使用 Optional 为方法的参数是不好的选项的原因进行了说明,并且举例如何避免这个问题。 https://www.ossez.com/t/java-8-optional/13964  

2022年08月03日 0Comments 475Browse 0Like Read more
Computer Science

反向代理 413 Request Entity Too Large 问题

如果在服务器上使用了反向代理。 你可能会收到下面的错误信息: 413 Request Entity Too Large errors`。 问题和解决 问题的原因就是反向代理服务器针对 HTTP 访问的时候有限制, Nginx 在 Nginx 的配置文件中,添加下面的内容 client_max_body_size 100M; 上面的配置信息显示了具体的配置位置。 在默认情况下 Nginx 配置的 client_max_body_size 大小为 1M。 很多时候是肯定不够用的。 Apache Apache 在 http.conf 配置文件中有一个 LimitRequestBody 参数。 你可以将这个参数配置为:LimitRequestBody 104857600。 虽然你成功配置了上面的参数,但是有时候上面的参数在 Apache 中可能没有办法解决你的问题。 这是因为有时候和后台代理的程序也有关系。 总结 根据最近想买的一些调整,使用 Nginx 作为反向代理,会比 Apache 更加轻量,配置更加容易。   https://www.ossez.com/t/413-request-entity-too-large/13963

2022年08月03日 0Comments 924Browse 0Like Read more
Computer Science

看这个情况这块硬盘是要交代了

如果你收到你的存储提示下面的信息。     最好的办法就是先准备一块新的硬盘吧,因为你也不知道你这块硬盘什么时候突然就交代了。   https://www.ossez.com/t/topic/13962

2022年08月03日 0Comments 697Browse 0Like Read more
Computer Science

不知不觉 CDSN 也有了百万访问量了

只关注技术,不知不觉 CDSN 也有了百万访问量了。     今天正好过百万,发个小帖子纪念下吧。 能发点技术路上的心得,帮助帮助有需要的朋友就感觉欣慰了。 也感谢 CSDN 有这么一个平台让搞技术的还有一个 BB 的地方。 虽然有时候也不得不吐槽下 CSDN 的图片上传速度和排版方式,但是抱着有比没有强的心态,可以稍加克服。   https://www.ossez.com/t/cdsn/13961

2022年05月13日 0Comments 856Browse 0Like Read more
Computer Science

快速删除 node_modules

我们都知道 node_modules 文件夹中包含了大量的 node 需要的依赖库。 如果直接使用 Windows 的删除的话,非常耗时。 好在我们可以使用 node 自己提供的一个库来删除。 安装 rimraf rimraf 包的作用:以包的形式包装rm -rf 命令,就是用来删除文件和文件夹的,不管文件夹是否为空,都可以删除。 运行下面的命令来进行全局安装 rimraf npm install rimraf -g 进入需要清理的项目中,运行下面的命令: rimraf node_modules 就可以进行快速删除了。     上面的命令都是在命令行工具上执行的。   https://www.ossez.com/t/node-modules/13959

2022年05月09日 0Comments 747Browse 0Like Read more
Computer Science

Java 项目编译的时候提示 javax.xml.bind.annotation does not exist 错误

提示的错误信息为: javax.xml.bind.annotation does not exist     错误原因 这是因为针对这个老的项目,我们是使用 JDK 11 进行编译的。 但是 JDK 11 中已经没有: javax.xml.bind 这个包。 需要在 POM 的依赖中添加下面的内容: <dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-core</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.3.0</version> </dependency>     添加上面的依赖到 POM 文件中就可以解决编译的错误了。   https://www.ossez.com/t/java-javax-xml-bind-annotation-does-not-exist/13958

2022年05月09日 0Comments 958Browse 0Like Read more
Computer Science

Gitea 无法启动提示 (code=exited, status=203/exec) 错误

完整的提示信息为: ● gitea.service - Gitea (Git with a cup of tea) Loaded: loaded (/etc/systemd/system/gitea.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Fri 2020-12-04 17:11:57 CET; 3s ago Process: 3443 ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini (code=exited, status=203/EXEC) Main PID: 3443 (code=exited, status=203/EXEC) 根据启动日志查看,应该是权限问题。     解决办法 解决办法是通过修改目标目录的目录的权限,然后重新启动就可以了。 运行的命令为: chown -R git:git /var/lib/gitea/ chown -R git:git /var/lib/gitea/ 在完成安装后,你可以使用下面的命令: chmod 750 /etc/gitea chmod 640 /etc/gitea/app.ini 来修改权限为不可写的权限。   https://www.ossez.com/t/gitea-code-exited-status-203-exec/13957

2022年05月09日 0Comments 907Browse 0Like Read more
Computer Science

Nginx 的日志

Nginx 的日志主要有 2 个,一个是 access.log, 一个是 error.log。 如果你不进行任何配置的话,这 2 个日志将会使用默认的日志配置,这个日志将会位于 /var/log/nginx 目录中。 针对虚拟主机的配置 如果你使用了 Nginx 为虚拟主机的话。 那么你可以在你的虚拟主机的配置文件中配置针对每一个特定的虚拟主机输出的日志路径。     例如我们针对虚拟主机的配置。 这样针对这个虚拟主机的所有访问将会把日志设置到你设定的文件中了。 同时我们也建议使用 /var/log/nginx/ 这个目录中。 因为有时候 SELinux 的配置可能会提示你的日志文件无法生成。   https://www.ossez.com/t/nginx/13956

2022年05月08日 0Comments 727Browse 0Like Read more
Computer Science

正向代理与反向代理

我们都知道 Nginx 是常用的反向代理服务器。 但是什么是正向代理,什么是反向代理有时候概念好像不太好理解。 我们画了一个不好看的图来解释代理和反向代理     代理的理解 我们的简单理解就是这个代理是正向还是反向与代理服务器设置的位置有关。 这个代理服务器可能就是你计算机或者服务器上的进程。 正向代理 举例来说就是如果代理服务器离你很近,如果没有这个服务器你就没有办法访问网站,你必须要通过这个服务器才能访问所有的互联网资源的话,这个就是代理服务器。 比如说曾经的校园网,你没有办法直接通过校园网访问网络,你的所有访问必须要通过一个服务器转发后才能访问,那这个服务器就是正向代理服务器。 简单来说就是正向代理是为了客户服务的。 反向代理 反向代理更加靠近服务器一端。 反向代理等于在实际提供资源的服务器上提供一个屏障,所有外部的访问要获取服务器的资源之前,必须要通过这个反向代理才能获得这个服务器的资源。 对用户来说,就是如果不安装这个 反向代理服务器,用户还是可以任意访问互联网上的资源的。 简单来说就是反向代理是为服务器服务的。     结论 通常我们会为实际提供服务的服务器之前配置反向代理。 目前的反向代理服务器通常使用 Nginx,Apache 也是可以使用的,但 Apache 显得有点笨重,同时配置没有 Nginx 灵活,资源消耗更高。 我们也在逐步将反向代理服务器切换到 Nginx 上。   https://www.ossez.com/t/topic/13955

2022年05月08日 0Comments 878Browse 0Like Read more
1…7475767778…239
Archives
  • September 2026
  • August 2026
  • July 2026
  • 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,388)
    • Confluence (663)
    • Gradle (12)
  • U.S. (571)
  • 文化旅游 (146)

COPYRIGHT © 2020 CWIKIUS. ALL RIGHTS RESERVED.

THEME KRATOS MADE BY VTROIS

湘ICP备2020018253号-1