首先在本地文件夹创建一个登录脚本, 如: /Users/zhanghao/Documents/iterm2-ssh/my-ecs.sh
Docker 实战
mac 下使用 lrzsz
SpringBoot 参数校验
准备工作
引入相关依赖
1 | <dependency> |
Bean Validation 中的约束
约束 | 说明 |
---|---|
@Null | 被注释的元素必须为 null |
@NotNull | 被注释的元素必须不为 null |
@AssertTrue | 被注释的元素必须为 true |
@AssertFalse | 被注释的元素必须为 false |
@Min(value) | 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 |
@Max(value) | 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 |
@DecimalMin(value) | 被注释的元素必须是一个数字,其值必须大于等于指定的最小值 |
@DecimalMax(value) | 被注释的元素必须是一个数字,其值必须小于等于指定的最大值 |
@Size(max, min) | 被注释的元素的大小必须在指定的范围内 |
@Digits (integer, fraction) | 被注释的元素必须是一个数字,其值必须在可接受的范围内 |
@Past | 被注释的元素必须是一个过去的日期 |
@Future | 被注释的元素必须是一个将来的日期 |
@Pattern(value) | 被注释的元素必须符合指定的正则表达式 |
Hibernate Validator 附加的约束
约束 | 说明 |
---|---|
被注释的元素必须是电子邮箱地址 | |
@Length | 被注释的字符串的大小必须在指定的范围内 |
@NotEmpty | 被注释的字符串的必须非空 |
@Range | 被注释的元素必须在合适的范围内 |
代码中校验
spring 中可以直接从 aop 容器中获取
1 |
|
通过工厂方法获取
1 | ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); |
@Validated 与@Valid 的简单对比说明
@Valid 注解与@Validated 注解功能大部分类似;两者的不同主要在于:
- @Valid 属于 javax 下的,而@Validated 属于 Spring 下
- @Valid 支持嵌套校验,而@Validated 不支持
- @Validated 支持分组,而@Valid 不支持
普通方法校验参数
除了验证接口,我们还可以验证普通的方法,首先在需要验证的方法所在类上面增加注解 @Validated
1 |
|
注意:
- 基于 aop 机制,被验证的方法需要注册为组件
- 只能在类上面增加注解@Validated,不能在单个方法上
- 抛出的异常为 ConstraintViolationException,需要单独拦截,示例:
1 |
|
嵌套验证
当我们要验证的类 DemoBO 有成员属性为 OtherObject,对 OtherObject 中的属性进行校验,需要在 DemoBO 的成员属性 OtherObject 之上加上 @Valid
1 |
|
分组校验
在很多时候,同一个模型可能会在多处被用到,但每处的校验场景又不一定相同(如:新增用户接口、修改用户接口,参数都是 User 模型,在新增时 User 中 name 字段不能为空,userNo 字段可以为空;在修改时 User 中 name 字段可以为空,userNo 字段不能为空)。我们可以用 groups 来实现:同一个模型在不同场景下,(动态区分)校验模型中的不同字段。
创建分组 Create 和 Update 继承 Default
继承 Default 并不是必须的。只是说,如果继承了 Default,那么@Validated(value = Create.class)的校验范畴就为【Create】和【Default】;如果没继承 Default,那么@Validated(value = Create.class)的校验范畴只为【Create】,而@Validated(value = {Create.class, Default.class})的校验范畴才为【Create】【Default】。
Default 组和无参构造机制类似,当没有指定分组时,会默认当前校验属于 Default 组,但是一旦主动给当前校验指定
了分组(如上图中的 name 字段,主动指定了属于 Create 组),那么就不会再额外指定属于 Default 组了。
当然,也可以画蛇添足的主动指定所属分组为 Default。
1 | import javax.validation.groups.Default; |
1 | import javax.validation.groups.Default; |
创建实体类 Student
1 |
|
maven多仓库配置 - 公司仓库与阿里云仓库共存
以下操作在 maven 配置文件 settings.xml
中修改
配置公司账户信息 server
1 | <servers> |
删除掉原来的 mirror
1 | <mirrors> |
配置公司和阿里云 profile
1 | <profiles> |
配置 activeProfiles
1 | <activeProfiles> |
http 状态码大全
springboot-starter-kit 企业级脚手架
本文将从零开始搭建一个 springboot-starter-kit 脚手架项目,以支持当前主流的前后端分离架构,开箱即用,快速开发!
修复由于 zsh-autosuggestions 造成的粘贴慢
使用 zsh
在开启 zsh-autosuggestions 插件的时候,粘贴命令会像打字一样,尤其是长段的命令,需要等很长时间
官方有一个 issues 专门来讨论这个问题:https://github.com/zsh-users/zsh-autosuggestions/issues/238
解决办法:将以下代码粘贴到 .zshrc
文件中即可
Java8 Stream API
概述
Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作(aggregate operation),或者大批量数据操作 (bulk data operation)。Stream API 借助于同样新出现的 Lambda 表达式,极大的提高编程效率和程序可读性。同时它提供串行和并行两种模式进行汇聚操作,并发模式能够充分利用多核处理器的优势,使用 fork/join 并行方式来拆分任务和加速处理过程。通常编写并行代码很难而且容易出错, 但使用 Stream API 无需编写一行多线程的代码,就可以很方便地写出高性能的并发程序。
注册免费域名
本文将讲述如何通过 Freenom 注册免费域名
首先打开其注册网址:http://www.freenom.com/zh/index.html
输入一个域名,点击检测可用性,勾选喜欢的域名,
按照提示注册即可