王小凤
简介sb
好文
jvm动图图解 GC 算法
'javax.validation:validation-api常用注解'
一、概述在我们应用程序的业务逻辑中,经常会碰到参数校验的情况,手动的在代码层上面进行校验就会带来很不好的体验,阅读、维护的成本会大大增加,造成冗余。因此有了这个JSR 303。 Bean Validation为JavaBean提供了相应的API来给我们做参数的验证。通过Bean Validation比如@NotNull @Pattern等方法来对我们字段的值做进一步的教研。 Bean Validation 是一个运行时框架,在验证之后错误信息会直接返回。 完整的jar包:javax.validation:validation-api:2.0.1.Final.jar 包 注意:SpringBoot2 项目web组件已经内置了这个依赖了 123456<!--添加依赖--><dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>2.0.1.Final</v...
'javax.validation:validation-api常用注解'
一、概述在我们应用程序的业务逻辑中,经常会碰到参数校验的情况,手动的在代码层上面进行校验就会带来很不好的体验,阅读、维护的成本会大大增加,造成冗余。因此有了这个JSR 303。 Bean Validation为JavaBean提供了相应的API来给我们做参数的验证。通过Bean Validation比如@NotNull @Pattern等方法来对我们字段的值做进一步的教研。 Bean Validation 是一个运行时框架,在验证之后错误信息会直接返回。 完整的jar包:javax.validation:validation-api:2.0.1.Final.jar 包 注意:SpringBoot2 项目web组件已经内置了这个依赖了 123456<!--添加依赖--><dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>2.0.1.Final</v...
Mysql事务
1、什么是事务? 在mysql中,事务是一组原子性的sql语句,或者说是一个独立的工作单元 事务有四个特性: 原子性(Atomicity):一个事务必须被视为不可分割的最小工作单位 一致性(Consistency) 隔离型(Isolation) 持久性(Durability) 2、redo log 与 undo log如何查看日志 ①redo log redo log叫做重做日志,用来实现事务的持久性。该日志文件由两部分组成:重做日志缓冲(redo log buffer)以及重做日志文件(redo log),前者是在内存中,后者在磁盘中。当事务提交之后会把所有修改信息都会存到该日志中。 redo log 有什么作用? mysql 为了提升性能不会把每次的修改都实时同步到磁盘,而是会先存到Boffer Pool(缓冲池)里头,把这个当作缓存来用。然后使用后台线程去做缓冲池和磁盘之间的同步。 总结:redo log是用来恢复数据的,用于保障已提交事务的持久化特性。 ②undo log undo log 叫做回滚日志,用于记录数据被修改前的信息。他正好...
java简洁编码
一、方法1、方法不要返回 null别处调用方法时,避免不必要的空指针 反例: 正例: 2、总是在 Switch 语句的 Default 中抛出异常 当 value == 3 时,将会出现无法找到的提示,而不会让人不知所谓。 123456789101112// Badswitch (value) { case 1: foo(); break; case 2: bar(); break;}// Goodswitch (value) { case 1: foo(); break; case 2: bar(); break; default: throw new ThreadDeath("That'll teach them");} 二、常量与变量1、如果变量的初值会被覆盖,就没有必要给变量赋初值1234567891011121314// BadList<UserDO> userList = new ArrayList<&...
GitfLow
一、什么是gitFlow工作流 Gitflow 实际上只是 Git 工作流程的抽象概念。这意味着它规定了要设置什么样的分支以及如何将它们合并在一起。 gitFlow流程图: 我们将在下面讨论分支的目的。 git-flow 工具集是一个具有安装过程的实际命令行工具。 git-flow 的安装过程很简单。 git-flow 的软件包可在多个操作系统上使用。 在 OSX 系统上,您可以执行 brew install git-flow。 在 Windows 上,您需要下载并安装 git-flow。安装 git-flow 后,您可以通过执行 git flow init 在项目中使用它.Git-flow 是一个围绕 Git 的包装器。 git flow init 命令是默认 git init 命令的扩展,除了为您创建分支外,不会更改存储库中的任何内容 # 二、操作1.(Feature branches)功能分支 每个新功能都应该驻留在自己的分支中,可以将其推送到中央存储库以进行备份/协作。但是,功能分支不是从主分支分支,而是使用开发作为其父分支。当一个功能完...
Java Iterator(迭代器)
结构图: 1、简述java迭代器 Iterator迭代器的定义:迭代器(Iterator)模式,又叫做游标(Cursor)模式。GOF给出的定义是,提供一种方法访问一个容器container对象中各个元素,而又不需暴露该对象的内部细节。迭代器通常被称为“轻量级”对象,因为创建它的代价小。 它用于逐个遍历集合对象元素 它适用于所有Collection类,如上结构图所示 它支持read和remove操作 注意:对collection类遍历进行remove时不能使用for或者foreach,只能使用迭代器去操作,否则抛同步异常 2、java Iterator源码 类图 方法 123456789101112131415161718192021222324252627282930public interface Iterator<E> { /** * 检查集合中是否还有元素 */ boolean hasNext(); /** * 返回迭代的下一个元素 * @throws NoSuchElemen...
java Streams操作
Streams(流)java.util.Stream 表示能应用在一组元素上一次执行的操作序列。Stream 操作分为中间操作或者最终操作两种,最终操作返回一特定类型的计算结果,而中间操作返回Stream本身,这样你就可以将多个操作依次串起来。Stream 的创建需要指定一个数据源,比如 java.util.Collection 的子类,List 或者 Set, Map 不支持。Stream 的操作可以串行执行或者并行执行。 首先看看Stream是怎么用,首先创建实例代码需要用到的数据List: 123456789List<String> stringList = new ArrayList<>();stringList.add("ddd2");stringList.add("aaa2");stringList.add("bbb1");stringList.add("aaa1");stringList.add("bbb3");stringList.add(&...