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

JWT 如何解码和获得令牌失效的日期

如果你有一个 JWT 的字符串。 你在使用 JWT 的时候可能希望了解 JWT 这个令牌过期的时间。你可以对 JWT进行解码,解码的网站是 JWT 的官网 。 访问上面的网站,然后将你的 JWT 字符串拷贝到需要解码的字符串上,然后对字符串进行解码。     在解码的对象后,你会看到 exp。 上面的 exp 就是JWT 过期的日期。 JWT 的 exp 是一个数字的组合,这是因为这个字符串使用的是 Unix 的时间。 1970年, Unix正式诞生,在第一版《Unix Programmer’s Manual》中把“1971年11月3日”定义为“自1970年1月1日0時0分0秒以来以1/60秒为单位的时间”。此后,这个定义由于可定义的时间范围,时区,闰秒等问题被重新定义。 可以使用下面的方法,将 Unix 时间戳,转换为可以识别的日期对象。 /** * Format Unix Time UTC TimeZone to EST Time * * @throws Exception */ @Test public void unixTimeStampTest() throws Exception { DateTime dateTime = new DateTime(1602516354 * 1000L, DateTimeZone.UTC); logger.debug("dateTime for EST is - [{}]", dateTime.toDateTime(DateTimeZone.forID("America/New_York"))); } 运行上面的代码,将会输出为: 2020-10-12 16:06:31.858 DEBUG --- [ main] com.insight.sco.service.test.UtilTest : dateTime for EST is - [2020-10-12T11:25:54.000-04:00] 上面的时间是将时间转换为美国东部时间。   https://www.ossez.com/t/jwt/580

2020年10月13日 0Comments 1032Browse 0Like Read more
Computer Science

Junit-jupiter-api 和 junit-jupiter-engine 的区别是什么

我们都知道 JUnit 是用于进行单元测试的。但是 Junit 5 和 Junit 4 的区别比较大。 很多时候你可能会遇到 Junit 引擎配置错误导致测试无法进行。 junit-jupiter-api JUnit 5 Jupiter API 的测试,你需要使用这个 API 来写测试和进行扩展。 junit-jupiter-engine JUnit 5 的测试引擎,从 Junit 5 开始,Junit 使用 jupiter 来作为测试引擎。在运行时(runtime)的时候,你需要使用这个引擎来进行测试。 junit-vintage-engine 针对 Junit 5 以下的版本,包括 Junit 4 和 3,Junit 使用的是 vintage 测试引擎。 如果你的测试使用的是 Junit 4 的代码进行编写的话,那么你需要 Junit 4 的测试引擎。 总结 你需要 junit-jupiter-api 和 junit-jupiter-engine 来在 Junit 5 中书写和运行测试。 因此,你需要在你的 POM 中定义上面 2 个 Package。     针对老的 JUnit 4 的的项目,你需要将 junit-jupiter-engine 引擎替换为 junit-vintage-engine 引擎才能够让你的测试正式跑起来。 https://www.ossez.com/t/junit-jupiter-api-junit-jupiter-engine/579

2020年10月12日 0Comments 756Browse 0Like Read more
Computer Science

Maven 依赖中的 dependencies 和 dependencyManagement

有时候我们对 dependencies 和 dependencyManagement 可能会有点晕。 我们简单来说这个就常考虑在 parent pom 中定义的情况。 简单来说就是 dependencyManagement 管版本,dependencies 管依赖。 dependencies 所有在 dependencies 中定义的依赖都会被在子项目中自动引入,并被子项目继承。 dependencyManagement dependencyManagement 提供的是版本号的管理方式。 举个常用的例子: 如果我们在 parent pom 中定义了: <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.6.1</version> <scope>test</scope> </dependency> 那么在子 pom 中,就不需要重新定义 <artifactId>junit-jupiter-engine</artifactId> 的版本号了,子项目会到父项目中去找 junit-jupiter-engine 的版本号。当然你也可以在子项目中定义 junit-jupiter-engine 的版本号。 这个允许你来选择与父版本不同的版本号。     区别和使用 如果你想定义一个 jar 或者 Package 在所有子项目都使用的话,你需要使用 dependencies 来进行定义。这样所有你在 dependencies 中定义的 Package 将会自动被导入到子项目中。 dependencyManagement 只是声明依赖,并不实际导入 Package。所以在 dependencyManagement 中声明的 Package 还必须在子项目中再声明一次。 https://www.ossez.com/t/maven-dependencies-dependencymanagement/578

2020年10月12日 0Comments 1037Browse 0Like Read more
Computer Science

Discourse 对发布的内容没有办法进行编辑

按照 Discourse 的快捷键来说,你可以使用键盘上的 e 来对发布的内容进行编辑。     但你会发现不管你怎么用鼠标选择都没有办法编辑,哪怕是把你的鼠标放到要编辑的主题上面。 ##原因和解决 出现上面情况的原因是 Discourse 不知道你选择了那个主题,不知道你要对那个主题进行编辑。 你需要使用键盘上的 K / J 键先对主题进行导航和选择。     当主题被选择后,会在左侧显示为红色,然后你就可以使用快捷键 e 对选择的主题进行编辑了。 https://www.ossez.com/t/discourse/575/2

2020年10月11日 0Comments 641Browse 0Like Read more
Computer Science

Jackson 的 JsonManagedReference 和 JsonBackReference 注解

在 Hibernate 或者 ORM 映射中,我们可能会存在 1 对多的情况。 在这个时候,如果你使用 Jackson 将对象序列化的时候,就会出现双向引用导致的无限递归(infinite recursion)的情况。 @JsonManagedReference 和 @JsonBackReference 注解就是为了避免这个双向引用的情况。 @JsonBackReference 和 @JsonManagedReference:这两个标注通常配对使用,通常用在父子关系中。 假设我们有 2 个对象。 一个对象是 QIndex 和 QTitle 一个 QIndex 可能对应有多个 QTitle。 那么在 JPA 中的对应关系的 QIndex 应该定义为: @OneToMany(mappedBy = "qIndex", cascade = CascadeType.ALL, orphanRemoval = true) @OrderBy("questionNumber ASC") @JsonManagedReference private List<QTitle> qTitleList = new ArrayList<>(); 在 JPA 的 QTitle 中应该定义为: @ManyToOne() @JsonBackReference private QIndex qIndex; 在序列化的时候,@JsonManagedReference 注解的属性则会被序列化,@JsonBackReference 的注解将会被忽略。 @JsonManagedReference 注解,通常说明这个字段是一个双向引用的字段,这个字段在这个双向引用中的角色为 “父”,与这个字段对应的引用需要注解为 @JsonBackReference。 @JsonBackReference 注解,通常说明这个字段是关联的一个双向引用字段,这个字段在这个双向引用的角色是 “孩子”。这个字段的值只能是对象(Bean),不能是 集合(Collection),图(Map),数组(Array)和枚举类型(enumeration)。 总结 @JsonManagedReference 和 @JsonBackReference 总是成对出现的 @JsonManagedReference 定义在父级角色 @JsonBackReference 定义在孩子级角色 @JsonBackReference 不能使用任何集合和数组等多的数据结构     有了上面的解释,应该比较容易的理解为了避免双向引用导致无限递归而出现的问题的。 https://www.ossez.com/t/jackson-jsonmanagedreference-jsonbackreference/574  

2020年10月11日 0Comments 1043Browse 0Like Read more
Computer Science

CentOS 8 Apache 安装后 SSL 重定向提示证书错误

在启用 SSL 后,我们也希望将主域名重定向到 www。 希望实现的操作是,当用户访问 https://cwikius.cn 的时候,浏览器应该能够自动重定向到 https://www.cwikius.cn。 如果我们按照 80 端口的 http 配置的,你可能会得到浏览器的安全配置。 比如说,我们最开始的配置是: # --- CWIKIUS.CN --- <VirtualHost *:443> ServerName cwikius.cn Redirect 301 / https://www.cwikius.cn/ </VirtualHost> 当我们访问的时候,浏览器会提示连接的 SSL 问题。     原因和解决 这是因为如果你在 HTTPS 的 SSL 中也这样配置是不允许的。因为这个可能会导致安全性问题和攻击。 在 HTTPS 建立连接之前,浏览器会首先校验你的证书,如果你的证书有问题,或者没有配置,浏览器是不会给你重定向。 因此你需要修改上面的参数配置为: # --- CWIKIUS.CN --- <VirtualHost *:443> ServerName cwikius.cn SSLEngine on SSLProtocol ALL -SSLv2 -SSLv3 SSLCertificateFile 证书存储的绝对路径 SSLCertificateKeyFile 证书存储的绝对路径 SSLCertificateChainFile 证书存储的绝对路径 Redirect 301 / https://www.cwikius.cn/ </VirtualHost> 通过上面的配置,你的 HTTPD 和浏览器在校验证书完成后给你的访问重定向了。     简单来说,出现这个问题的原因就是 SSL 必须在校验证书完成后才能进行下一步的操作,不管是重定向还是访问网站。 https://www.ossez.com/t/centos-8-apache-ssl/573

2020年10月10日 0Comments 802Browse 0Like Read more
Computer Science

Spring boot 的彩色日志

我们基本上都知道 Spring 使用的是 logback 为日志配置的。 如果在你的项目中启用了你自己定义的 logback.xml 配置的话,本来是彩色的日志输出就变成黑白色了。 瞬间感觉有点没那么好看了,有没有什么办法让 Spring 在自己的项目中的日志输出也输出彩色呢?     如何修改配置 其实需要修改的地方有几个,但是都是比较简单的修改。 你只需要配置下就行了。 application.properties 在上面的配置文件中添加下面的配置: spring.output.ansi.enabled=always 这里如果不配置的话,你的日志系统中将不会显示为彩色的日志。 如果你使用的 application.yml 为配置文件的话。 你的配置文件应该看起来如下: spring: output: ansi: enabled: always logback.xml 你项目中的 logback.xml 配置文件。 首先需要 include 下面的资源到 logback.xml 这个配置文件上面。 <include resource="org/springframework/boot/logging/logback/defaults.xml" /> 然后在输出的 pattern 中,使用下面的配置 <pattern>${CONSOLE_LOG_PATTERN}</pattern> 这样你的控制台就可以输出彩色的配置了。 这样配置的原因很简单,因为 CONSOLE_LOG_PATTERN 这个参数是在资源 org/springframework/boot/logging/logback/defaults.xml 中定义的。 具体定义的内容为: <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> 你可以访问下面的链接来查看官方的配置: https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot/src/main/resources/org/springframework/boot/logging/logback/defaults.xml   我们可以在这里直接引用在官方配置属性配置就可以了,这样你的配置文件就可以输出为彩色的日志了。   如上图,我们可以看到输出的彩色日志。   https://www.ossez.com/t/spring-boot/565

2020年10月09日 0Comments 805Browse 0Like Read more
Computer Science

IntelliJ IDEA 重做快捷键和配置哲学

在开始使用 IntelliJ IDEA 的时候,有一组非常重要的快捷键你可能不太适应。 尤其是针对从 Eclipse 转移过来的用户。 那就是重做和撤销快捷键。Redo 和 Undo 。 快捷键 在 Windows 中,很多用户都知道撤销的快捷键是 Ctrl +Z,如果是重做的话,那快捷是 Ctrl + Y。 但是 IntelliJ IDEA 的重做快捷键却不是这么定义的,IntelliJ IDEA 定义 Ctrl + Shift + Z 为重做。 这就导致不少用户在转过来后一脸懵逼。 其实,你也可以在搜索上,搜索关键词 redo 和 undo 来了解 IntelliJ IDEA 定义的快捷键。     经过一段时间的了解,IntelliJ IDEA 的快捷键定义哲学应是尽量保持后面的字母不变,在不同功能切换中添加 Ctrl, Alt ,和 Shift 的组合。 比如说搜索对话框,基本上所有人都知道双击 Shift 可以打开搜索对话框。 如果是搜索 Classes,快捷键是 Ctrl + N 如果是搜索 Files,快捷键是 Ctrl + Shift + N 如果是搜索 Symbols,快捷键是 Ctrl + Alt + Shit + N 最后一个是 Action,Action 和 双击 Shift 打开搜索对话框的快捷键不一样,使用的是 Ctrl + Shift + A,使用 Action 的第一个字母。     从这里的配置,我们大致了解下 IntelliJ IDEA 的快捷键配置哲学就是尽量保持第一个和最后一个键位不变,在中间添加其他功能键,以便于你记忆。 https://www.ossez.com/t/intellij-idea/563  

2020年10月09日 0Comments 933Browse 0Like Read more
Computer Science

JUnit 5 测试 Spring 引擎的时候提示 junit-vintage 错误

在 Spring 项目中运行测试的时候,得到错误: TestEngine with ID 'junit-vintage' failed to discover tests” with Spring 这个错误的原因是 JUnit 的引擎,使用了 junit-vintage 引擎。 junit-vintage 是 Junit 4 中使用的引擎,如果你的项目使用了 Junit 5 的话,你需要在 spring-boot-starter-test 中将 JUnit 4 的引擎从测试中删除。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> junit-vintage-engine 和 junit-jupiter-engine 有什么不同 junit-vintage-engine 是 JUnit 4 中使用的测试引擎。 junit-jupiter-engine 是 JUnit 5 中使用的测试引擎。 如果你的 Spring 项目使用的新的 Spring Boot 版本的话,你应该默认使用了 JUnit 5 的引擎,因此为了兼容性,你需要在 spring-boot-starter-test 这个 POM 引用的时候将 JUnit 4 的引擎去除掉。     上面的这个配置你可以尝试下能解决你的问题。   https://www.ossez.com/t/junit-5-spring-junit-vintage/562

2020年10月09日 0Comments 1058Browse 0Like Read more
Computer Science

IntelliJ IDEA 的 Spring 项目如何查看 @Value 的配置和值

当你打开项目或者项目中的文件的时候,如果你有 Spring 的 Value 的配置,Intellij 将会自动将参数替换为值。 如果你单击上面的值,那么这个配置参数将会显示为配置的参数名。     如果你还想显示值的话,你需要重新打开这个文件或者项目。 有没有什么快捷键可以快速进行切换。 快捷键 这个配置是在 Intellij 的 Code > Folding 中进行配置的。 快捷键是是 Ctrl + NumberPad + 快捷键是是 Ctrl + NumberPad - NumberPad +,这个键是数字小键盘上的 + 号 NumberPad -,这个键是数字小键盘上的 - 号     因为这个快捷键在小键盘上,因此可能你比较难找到。 我们在这里标识出来。     Intellij 的快捷键定义。   https://www.ossez.com/t/intellij-idea-spring-value/561

2020年10月09日 0Comments 675Browse 0Like Read more
1…129130131132133…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