从docker官方镜像来看,8-jre 的 /usr/local/openjdk-8/bin 目录下有:
java jjs keytool orbd pack200 policytool rmid rmiregistry servertool tnameserv unpack200
appletviewer hsdb jarsigner javac javap jdb jhat jmap jsadebugd jstatd orbd rmic schemagen tnameserv wsimport
clhsdb idlj java javadoc jcmd jdeps jinfo jps jstack keytool pack200 rmid serialver unpack200 xjc
extcheck jar java-rmi.cgi javah jconsole jfr jjs jrunscript jstat native2ascii policytool rmiregistry servertool wsgen
gradle 版本和 java 版本的兼容性:https://docs.gradle.org/current/userguide/compatibility.html
升级 gradle 版本:https://docs.gradle.org/current/userguide/upgrading_version_7.html
gradle 指定对应的java版本(参考java plugin文档):https://docs.gradle.org/3.3/userguide/java_plugin.html#sec:java_convention_properties
spring cloud 和 spring boot 的版本兼容性 https://spring.io/projects/spring-cloud
./gradlew -Dorg.gradle.java.home=/Users/lrwan/Library/Java/JavaVirtualMachines/liberica-1.8.0_312 xxx:bootRun
java 输出日期字符串:推荐用 DateTimeFormatter
https://www.liaoxuefeng.com/wiki/1252599548343744/1303985694703650
locale 本质上是基于请求的 Accept-Language header 的 Language_(Region|Country)
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language
language codes: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
A servlet is a small Java program that runs within a Web server.
* Servlets receive and respond to requests from Web clients,
* usually across HTTP, the HyperText Transfer Protocol.
runtime exception 是 unchecked exceptions
通常是如果一切正常的话本不该发生的异常,但是的确发生了。比如空指针、ArrayIndexOutOfBoundException, ClassCastException 等。
从语言本身的角度讲,程序不该去catch这类异常,并不鼓励终端程序员这么做,因为完全没要必要。因为这类错误本身就是bug,应该被修复,出现此类错误时程序就应该立即停止执行。因此,应该让程序自动终止执行,程序员不该做诸如 try/catch 这样的事情,而是应该查明原因,修改代码逻辑
调用方不需要 catch 处理的,调用方不需要关心 runtime exception
https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
/**
* 从外部类访问一个classA中的 nested class A.B ,
* 首先根据定义的可见性,看能在哪里访问到。
* 然后如果外部类继承了,就可以直接写 B
* 没有继承就只能写 A.B
*/
https://github.com/FasterXML/jackson-docs