Clay 的技术空间

用进废退 | 艺不压身

前言

在日常开发中,避不开的就是参数校验,有人说前端不是会在表单提交之前进行校验的吗?在后端开发中,不管前端怎么样校验,后端都需要进行再次校验,这是为了系统安全。因为前端的校验很容易被绕过,当使用 PostMan 来测试时,如果后端没有校验,容易引发安全问题。值得一提的是,本文适用于 Spring Boot 与 Spring Cloud 项目。

JSR303 简介

JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方的参考实现是 Hibernate Validator。值得一提的是,Hibernate Validator 提供了 JSR-303 规范中所有内置 Constraint 的实现,除此之外还有一些附加的 Constraint。

常用约束注解

约束注解的名称约束注解的说明
@Null 用于校验对象为 Null
@NotNull 用于校验对象不能为 Null,无法校验长度为 0 的字符串
@NotBlank 用于校验 String 类,不能为 Null,且 trim() 之后的 size 大于零
@NotEmpty 用于校验集合类、String 类不能为 Null,且 size 大于零,但是带有空格的字符串校验不出来
@Size 用于校验对象(Array、Collection、Map、String)长度是否在给定的范围之内
@Length 用于校验 String 对象的大小必须在指定的范围内
@Pattern 用于校验 String 对象是否符合正则表达式的规则
@Email 用于校验 String 对象是否符合邮箱格式
@Min 用于校验 Number 和 String 对象是否大等于指定的值
@Max 用于校验 Number 和 String 对象是否小等于指定的值
@AssertTrue 用于校验 Boolean 对象是否为 true
@AssertFalse 用于校验 Boolean 对象是否为 false
阅读全文 »

Github 项目地址

前言

与以前相比,Incubator Dubbo Ops 项目中 master 分支的代码进行了大量重构,重构之后的代码目前在 develop 分支;同时 develop 分支的部署方式发生了不少变化,主要体现在 develop 分支采用了前后端分离的部署方式,下面将会分别详细介绍 master 与 develop 分支具体的部署方式。此教程的创建日期为 2018-12-20,由于官方项目正在不断迭代开发中,因此此教程在日后可能与官方的最新代码不同步,一切以官方的 Github 说明文档为准。

incubator-dubbo-ops master 分支(截止 2018-12-20)

incubator-dubbo-ops-master

阅读全文 »

单一应用架构

all-in-one

  • 优点
    1. 简单实用、便于维护,开发成本较低
  • 缺点
    1. 部署麻烦,添加、修改个别模块功能,需要重新将所有模块的代码部署到各个服务器
    2. 单台服务器的性能有限,不适合对外提供所有模块功能
    3. 存在单点故障问题
  • 关键点
    1. 数据访问框架(ORM)
      阅读全文 »

前言

本文主要介绍 Spring + Spring MVC + MyBatis 整合(SSM),开发工具基于 Eclipse + Maven。值得一提的是,下文只给出 SSM 整合所需的最小配置内容,在生产环境需要适当优化项目的配置,尤其是 Log4j2Druid 的配置。完整的项目代码可以直接从 GitHub 下载对应章节 ssm-study

版本说明

名称版本
Spring4.3.2.RELEASE
MyBatis3.4.1
Druid1.0.25
Log4j22.6.2
MySQL5.7.26
阅读全文 »

前言

本文主要介绍如何使用 Eclipse 创建基于 Maven 的 Web 项目(动态),适用于任何版本的 Eclipse。

快速开始

创建 Maven Web 项目

  • 创建 Maven 项目,并自定义工作空间的位置

阅读全文 »

SpringBoot

SpringBoot 站点

SpringBoot 特性

  1. 创建独立的 Spring 应用程序
  2. 嵌入的 Tomcat,无需部署 WAR 文件,适用于准生产环境
  3. 简化 Maven 配置
  4. 自动配置 Spring
  5. 提供生产就绪型功能,如指标、健康检查、外部配置
  6. 开箱即用,无需 XML 配置
阅读全文 »

Eclipse 在线安装阿里巴巴 Java 开发规约插件

打开 Eclipse –> Help –> Install New Software,填写插件的 URL 地址: https://p3c.alibaba.com/plugin/eclipse/update, 然后根据界面提示一步步安装,最后重启 Eclipse。安装成功后,工具栏会新增下图所示的图标。可以通过右键菜单、Toolbar 按钮两种方式手动触发代码检测,同时结果面板中可以对部分实现了 QuickFix 功能的规则进行快速修复。

alibaba-p3c-1

alibaba-p3c-2

阅读全文 »

大纲

JUC 介绍

JDK 5 中增加了并发大师 Doug Lea 的并发库,这一引进给 Java 线程的管理和使用提供了极大的便利性。在 Java 5 提供的 java.util.concurrent(简称 JUC)包中,增加了在并发编程中很常用的实用工具类,用于定义类似于线程的自定义子系统,包括线程池、异步 IO 和轻量级任务框架。JUC 提供了可调的、灵活的线程池,还提供了设计用于多线程上下文中的 Collection(即线程安全的集合类)实现等。常用的 JUC 包有以下几个:

  • java.util.concurrent
    • java.util.concurrent.locks
    • java.util.concurrent.atomic
阅读全文 »