2021

今天开个很久没搞的工程,刚开的时候一片红,很自然的想到,要去配置一下项目的JDK,但是配置好之后,又出了个诡异问题:项目可以运行,但是import项目内部自己写的类的时候,都出现了红色错误。虽然import显示错误,但是实际类是存在的!! 就像下面这样: 那么碰到这类问题之后要如何解决呢?下面说说解决步骤: 第一步:菜单中选择File - Invalidate Caches/Restart... 第二步:在弹出框中,选择Invalidate and Restart 静静等待IDEA重启,此时就可以看到红色import错误没有啦!

2020

昨天公司里碰到一件令人哑然失笑的事情。帮朋友公司做的一个项目,做SIT测试的时候发现一些bug,仔细查了下原因,原来是因为当初觉得这个项目比较简单,交给了几个新入职的新丁,也算是给他们练练手,结果其中一位写了一段代码出现了问题结果导致bug的出现。 虽然问题不大很快就修复了,但是正所谓初生牛犊不怕虎,这位出问题的新丁不太服气,一直嚷嚷着他这段代码是从CSDN上找到的,别人都说好用他才用的。问了问他是否理解原文中那么写的原因,结果才支支吾吾了半天讲不清楚,最后也承认他只是看到那段代码的结果是他要的,并不是理解中间一些方法的运用到底是什么逻辑。 真是又好气又好笑,想想现在的年轻人真是有个性,自己当年遇到这种情况只敢虚心求教,哪敢都没明白就去用一段代码,别人指出问题还忿忿不平。 也许是自己老了吧。晚上和一个刚从国外归国的同学说起这个事情,他倒是深有体会,说到他们在国外留学时,遇到技术问题想...

还记得去年分享过一篇日期格式化使用 YYYY-MM-dd 的潜在问题的文章不? 历史又重演了… 事故现场我们来写个单元测试,重现一下这个问题。 测试逻辑: 创建两个日期格式化,一个是出问题的YYYY-MM-dd,另一个是正确用法yyyy-MM-dd 分别去格式化两个不同的日期:2020年12月26日(周六),2020年12月27日(周日) 具体代码如下: public class Tests { @Test public void test() throws Exception { SimpleDateFormat df1 = new SimpleDateFormat("YYYY-MM-dd"); SimpleDateFormat df2 = new SimpleDateFormat("yyyy-MM-dd"); ...

每个人或多或少总会碰到要使用并且自己完成编写一个最基础的Bash脚本的情况。真实情况是,没有人会说“哇哦,我喜欢写这些脚本”。所以这也是为什么很少有人在写的时候专注在这些脚本上。 我本身也不是一个Bash脚本专家,但是我会在本文中跟你展示一个最基础最简单的安全脚本模板,会让你写的Bash脚本更加安全实用,你掌握了之后肯定会受益匪浅。 为什么要写Bash脚本其实关于Bash脚本最好的解释如下: The opposite of “it’s like riding a bike” is “it’s like programming in bash”. A phrase which means that no matter how many times you do something, you will have to re-learn it every single time. — J...

2020年12月22日,Spring Cloud 2020.0 正式发布GA版本! 版本说明每次Spring Cloud的大版本发布,我们都要先弄清楚,它对应的Spring Boot版本是哪个! 该版本的Spring Cloud对应的是Spring Boot 2.4,但需要注意的是,必须从2.4.1开始。 由于Spring Boot 2.4.0中大量配置相关的Bug。因此要使用这个最新的Spring Cloud版本,就必须选用 Spring Boot 2.4.1 及之后的版本构建应用。 更多版本关系和文档索引可见:springcloud.com.cn。如果您正要学习Spring Cloud,那么我的这个免费教程可能很适合你哟! 更新内容发布内容 Spring Cloud Commons的Bootstrap被默认禁用。导入配置的新方法采用Spring Boot 2.4新出的spr...

GraalVM是一种高性能的虚拟机,它可以显著的提高程序的性能和运行效率,非常适合微服务。最近比较火的 Java 框架 Quarkus默认支持 GraalVM 下图为 Quarkus 和传统框架(SpringBoot) 等对比图,更快的启动数据、更小的内存消耗、更短的服务响应。 Spring Boot 2.4 开始逐步提供对 GraalVM 的支持,旨在提升上文所述的 启动、内存、响应的使用体验。 安装 GraalVM 目前官方社区版本最新为 20.3.0 ,是基于 OpenJDK 8u272 and 11.0.9 定制的,可以理解为 OpenJDK 的衍生版本 。 官方推荐的是 SDKMAN[3] 用于快速安装和切换不同版本 JDK 的工具 ,类似于 nodejs 的 nvm[4]。 使用类似命令即可完成指定版本安装和指定默认版本 sdk install java 11....

前几天在《Spring Boot 2.4 对多环境配置的支持更改》一文中,给大家讲解了Spring Boot 2.4版本对多环境配置的配置变化。除此之外,还有一些其他配置变化,所以今天我们就继续讲讲其他的更新内容! spring.profiles.include对于这个配置项,你是否熟悉呢?从字面意思也不难理解,应该就是用来引入一些其他配置的配置(因为有个include嘛),实际作用也确实如此! 当我们的应用有很多配置信息的时候,比如当用到了很多中间件MySQL、Redis、MQ等,每个中间件的配置都是一大串的,那么这个时候我们为了配置更简洁一些,可能就会对其做分组。 如果你有用过这样的配置方式,那么在升级2.4版本的时候一定要注意,因为原来的配置方法会失效! 2.4之前的分组配置先来看看2.4版本之前的分组配置,我们用下面这个例子来介绍: spring: profiles: ...

在目前最新的Spring Boot 2.4版本中,对配置的加载机制做了较大的调整。相关的问题最近也被问的比较多,所以今天就花点时间,给大家讲讲Spring Boot 2.4的多环境配置较之前版本有哪些变化。 多环境配置2.4版本之前 先回顾下,2.4版本之前,我们在yaml配置文件中,使用spring.profiles来定义不同环境的标识,比如下面这样: spring: profiles: "dev"name: dev.didispace.com---spring: profiles: "test"name: test.didispace.com---spring: profiles: "prod"name: prod.didispace.com 2.4版本之后 而在本次2.4版本升级之后,我们需要将spring.profiles配置用spring.config.activat...

近日,Spring Boot官方发布了本年度最后一次版本更新,主要针对目前维护的三个版本: 2.4.x:第一个bug修复版本 2.4.1 2.3.x:常规维护版本 2.3.7 2.2.x:常规维护版本 2.2.12 由于2.2.x和2.3.x已经非常稳定,所以我们主要关注本次2.4.1的更新。 2.4.1版本内容由于在Spring Boot 2.4.0版本中,对原有的配置加载机制做了较大改动,不少开发者反映在升级的时候也出现了各种不同的问题。而这次2.4.1的发布,主要着手解决了不少关于配置相关的Bug。下面我们一起看看这次都解决了哪些重要问题: 通过通配符匹配的配置文件互相覆盖的问题 配置属性与JavaBean之间绑定的顺序问题 允许递归配置文件组的引用 外部应用程序属性加载顺序的问题 @Name在Kotlin中绑定失败的问题 Redis健康检查器对性能消耗过大的问题 Act...

前段时间Spring Boot发布了本年度最后一个重要更新版本:Spring Boot 2.4.0。 最近在社群里也开始有讨论关于Spring Boot 2.4的一些使用问题。我发现有很多Spring Cloud用户也急切着想要体验最新版本的Spring Boot,然后碰到了一些问题,其中被提出来最多的就是配置无法加载的问题。 我没有去深究这个问题如何去解决,因为之前,在发布说明中有提及过,在Spring Boot 2.4版本中对配置文件的处理做了较大的改动,如果你只是简单的使用application.properties或application.yaml,那么还能无缝衔接。但如果用了更为复杂的配置方式,很可能会失败。 所以,当你采用Spring Cloud Config来管理配置和加载的时候,就很容易出现这样的问题。同时,从Spring Boot和Spring Cloud的版本支持...

2020年11月12日,Spring官方发布了Spring Boot 2.4.0 GA的公告。 在这个版本中增加了大量的新特性和改进,下面我们一起看看在这个重要版本中都有哪些值得关注的内容! 更新内容 版本命名的更改,从2.4开始,版本名将去除RELEASE后缀,所以这次的版本不是2.4.0.RELEASE,而是2.4.0 改进了 application.properties 和 application.yml 文件的处理方式。如果您只有一个简单的 application.properties 或 application.yml 文件,那么您的升级应该是无缝的。但是,如果您有更复杂的设置,那么如果您想使用新特性,则可能需要进行一些更改。更细节的内容可参考: https://github.com/spring-projects/spring-boot/wiki/Spring-Bo...

昨晚看了几个老外分享的面试题,还挺有意思的。下面我们分两期来一起看看都是些怎么样的问题难到了老外?如果是你,是否可以都答对呢? 如果您对原文感兴趣,也可以通过这个链接查看:https://levelup.gitconnected.com/tricky-java-interview-questions-cfc546fd03ab Q1:下面Java代码的输出是什么?public class Test { public static void main(String[] args) { method(null); } public static void method(Object o) { System.out.println("Object method"); } public static void ...

作为目前应用最为广泛的软件开发管理软件,JIRA、Confluence等产品几乎被所有的科技型公司所应用。我们的每天的任务管理、文档编写等工作几乎都在这些软件的帮助下进行和管理。当然我也不例外,在读书时候就已经是Atlassian公司的忠实用户,不论在工行、在永辉还是独立创业,在软件研发管理上,这套软件的应用一直都是我所推崇和首选的,在我的博客中(didispace.com)也有分享过相关的应用经验。 前些日子,Atlassian公司宣布:从2021年2月2日开始,将停止销售新的本地化部署服务许可证,并停止对本地化部署产品的新功能开发。 同时,在其官方的Self-Managed部分也可以看到相关提示: 本次停售所影响的产品不光我们最常用的Jira、Confluence还有:Crowd(统一认证工具,类似LDAP)、Bamboo(持续交付工具,类似jenkins)、Bitbuck...

Hello World 对于每一个开发者来说都不陌生,因为在我们学习任何一个语言或框架的时候,都会有一个Hello World的案例来帮助我们快速入门。 如果我们使用JavaScript来输出Hello World的话,可以这样写: alert("Hello World"); 放入HTML: <html> <script type="text/javascript"> alert("Hello World"); </script></html> 在浏览器中打开就可以如下情况输出Hello World了: 挑战:仅用六个字符来编写JavaScripte上面我们在JavaScript中实现Hello World的时候,除去HTML相关的标签和属性,上面的实现语句alert("Hello World");一共使...

2020年10月28日 Spring Data自更改版本控制方案之后的第一个版本发布,版本号为:2020.0.0,代号Ockham。在这之前,版本号采用名字来标标示,比如:Neumann-RELEASE。 本次的发布内容中,包含了这些主要亮点: 最新的版本命名规则,以及最新的spring-data-bom Reactive SpEL上下文扩展和审计的支持 Spring Data Neo4j 6.0中加入SDN-RX Spring Data JDBC中加入Oracle方言 重构了Spring Data R2DBC 升级到Redis 6.0,包括支持ACL身份验证以及对Sorted Set命令的支持 增加了对RxJava 3的支持 支持De-lombok生产环境代码 更多关于本次的升级内容可见文档:Release-Train-Ockham Spring Boot支持 该版本的Spri...