Java Web应用程序在JVM中的执行过程
Java Web 应用开发完成,编译打包后得到一个 War 包,将这个 war 放入到 Tomcat 容器路径下,启动 Tomcat 就可以通过 HTTP 访问这个 Web 应用了。
Java Web 应用是被 Tomcat 加载运行的,所以也称 Tomcat 为 Web 容器。
Java Web 应用开发完成,编译打包后得到一个 War 包,将这个 war 放入到 Tomcat 容器路径下,启动 Tomcat 就可以通过 HTTP 访问这个 Web 应用了。
Java Web 应用是被 Tomcat 加载运行的,所以也称 Tomcat 为 Web 容器。
现实环境是有些甲方的物理服务器是Widnwos系统,还不能切换Linux,就必须在 Windows 运行 Java 程序,cmd 的控制台窗口很容易被误关闭,需要把 Java 程序注册为 Windows 随机启动。
UTF-8编译的 Java 应用程序,在 Windows 运行,指定了文件编码为 UTF-8 ,控制台显示的中文仍乱码。
右键 cmd 控制台 > 属性,可以看到当前代码页为:936 (简体中文 GBK),该代码只能显示 GBK 编码的中文。
或直接在控制台输入 chcp 命令,会输出当前:【活动的代码页:936】
需要通过 chcp 命令修改代码页,chcp 65001。(65001为UTF-8的代码页)
Windows 中 运行 Java 程序脚本新建一个 startup.bat
文件,内容如下。
1 | title xxx-server |
JVM 全称是 Java Virtual Machine,属于程序虚拟机。
JVM 封装了一组自定义的字节码指令集,有自己的程序计数器和执行引擎,内存管理机制,线程及栈管理机制,看起来就像一台完整的计算机,这就是JVM被称为机器的的原因。
Java消息服务(Java Message Service,JMS)应用程序接口是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。
Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
远程调试生产环境(或远程环境)的 Java 应用,以便快速定位某些在本地环境难以重现的问题。
远程部署的可能是个 Jar 包 或 Tomcat、Jetty 应用,若定位生产问题是通过反复修改 log 发包,效率就太低下了。
Java 提供了 JPDA 远程调试将本地源码与部署服务器连接,可以在本地控制断点的运行。
JDK 8 的新特性中包含了一个新的 Stream API,可以写出高效、干净、简洁的代码。
Stream 操作将要处理的集合看作一种流,流在管道中传输,并且可以在管道的节点上进行处理, 比如筛选, 排序,归集等。
Stream 不是数据结构,并不保存数据,它的主要目的在于计算。
Lambda 和 Stream 存在的最大最大缺点是不好调试。不过 IDEA 2019 已集成了 Stream 的调试插件 Java Stream Debugger。
新项目,创建了一个统一响应的对象,有一个 isSuccess()
的方法判断是否成功,然后发现响应结果中多了个 success
属性。
然后在 Controller 层把要响应的数据直接 JSON 序列化输出,发出确实多了 success
属性,可以定位是 JSON 序列化出了问题。
几种简单的序列号生成器的实现方式,涉及了单例模式使用,多例集合管理。
汇总 Java 的各种随机数生成方式,而不仅只有 java.util.Random 。