在配合 QA 进行代码测试,以及处理线上 BUG 时,代码往往已经被部署于服务器端,因此服务器端程序支持远程调试功能就尤为重要。

Java 原生支持调试功能,由于实际开发中使用 SpringBoot,因此本文探讨基于 jar 包的调试,远程调试的 IDE 为 IDEA

注: war 包调试、Eclipse 远程调试功能请另行了解,这不在本文的探讨范围内。

阅读全文

一、前言

SLF4J(Simple Logging Facade For Java), 它是针对各类 Java 日志框架的同一抽象,即日志门面。Java 的日志框架众多,SLF4J定义了统一的日志抽象接口。

默认情况下,SpringBoot 采用 Logback 来记录日志,并输出 INFO 级别日志到控制台。从下图可以看到,spring-boot-stater 的依赖中已经包含了 Logback,因此我们无需手动导入依赖。

阅读全文

一、LocaleResolver

国际化的支持中一个重要的类是 LocaleResolver,它提供了四种默认实现:

  1. AcceptHeaderLocaleResolver
    没有任何具体实现,通过浏览器头部的语言信息来进行多语言选择。
  2. FixedLocaleResolver
    设置固定的语言信息,这样整个系统的语言是一成不变的,用处不大。
  3. CookieLocaleResolver
    将语言信息设置到 Cookie 中,这样整个系统就可以获得语言信息
  4. SessionLocaleResolver
    将语言信息放到 Session 中,这样整个系统就可以从Session中获得语言信息。
阅读全文

前言

Web开发中JS校验可以涵盖大部分的校验职责,如用户名唯一性,生日格式,邮箱格式校验等等常用的校验。但是为了避免用户绕过浏览器,服务端的数据校验也是必要的,可以防止脏数据落到数据库中,本文将要介绍的Validation 来对数据进行校验。

简单叙述下 JSR303/JSR-349Hibernate ValidationSpring Validation 之间的关系。

阅读全文

一、WebSocket

1.1 HTTP与WebSocket

WebSocket 是一种网络通信协议。RFC6455 定义了它的通信标准。WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

我们知道,HTTP 协议是一种无状态的、无连接的、单向的应用层协议。它采用了请求/响应模型。通信请求只能由客户端发起,服务端对请求做出应答处理

这种通信模型有一个弊端:HTTP 协议无法实现服务器主动向客户端发起消息。这就注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。大多数 Web 应用程序将通过轮询请求。轮询的效率低,非常浪费资源(因为必须不停连接,或者 HTTP 连接始终打开)。

阅读全文