NoteDeep

java 本地环境

jdk > jre > jvm

jdk 比 jre 多了很多开发时的工具.
从docker官方镜像来看,8-jre 的 /usr/local/openjdk-8/bin 目录下有:
java jjs keytool orbd pack200 policytool rmid rmiregistry servertool tnameserv unpack200
而 8-jdk 镜像有:
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

升级到 jdk17

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

指定 jdk 版本运行

./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

java bff 侧是如何确认当前用户的语言的?

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

分层领域模型规约

  • DTO( Data Transfer Object):数据传输对象,Service或Manager向外传输的对象。
  • VO( View Object):显示层对象,通常是Web向模板渲染引擎层传输的对象。

Servlet

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

面向对象编程

java 嵌套类
https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html

java 可见性
/** * 从外部类访问一个classA中的 nested class A.B , * 首先根据定义的可见性,看能在哪里访问到。 * 然后如果外部类继承了,就可以直接写 B * 没有继承就只能写 A.B */

jackson

https://github.com/FasterXML/jackson-docs


评论列表

    java 本地环境
    升级到 jdk17
    指定 jdk 版本运行
    java 输出日期字符串:推荐用 DateTimeFormatter
    java bff 侧是如何确认当前用户的语言的?
    分层领域模型规约
    Servlet
    异常处理