秋招要点
悲观锁 每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。 乐观锁 每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量, 像乐观锁适用于写比较少的情况下,…
Maven 中optional.true和scope.provided之间的区别
1. 介绍 在添加依赖项时,我们可以使用optional标志,或将scope设置为“provided”。在这两种情况下,依赖关系都将在声明它们的模块的classpath中,但是使用将它们定义为依赖关系的模块不会在其他项目中传递它们,即不会形成依赖传递。 2.从语义来上理解 optional 可选的,可以理解为此功能/此依赖可选,如果不需要某项功能,…
thumbnail
4.强大的 Stream API
1. 了解 Stream Java8中有两大最为重要的改变。第一个是 Lambda 表达式;另外一个则是 Stream API(java.util.stream.*)。 Stream 是 Java8 中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。 使用Stream API 对集合数据进行操…
3.方法引用与构造器引用
方法引用 当要传递给Lambda体的操作,已经有实现的方法了,可以使用方法引用!(实现抽象方法的参数列表,必须与方法引用方法的参数列表保持一致!) 方法引用:使用操作符 “::” 将方法名和对象或类的名字分隔开来。 如下三种主要使用情况: * 对象::实例方法 * 类::静态方法 * 类::实例方法 (x)->System.out.print…
thumbnail
2.函数式接口
什么是函数式接口 只包含一个抽象方法的接口,称为函数式接口。 可以通过 Lambda 表达式来创建该接口的对象。(若 Lambda 表达式抛出一个受检异常,那么该异常需要在目标接口的抽象方法上进行声明)。 可以在任意函数式接口上使用 @FunctionalInterface 注解,这样做可以检查它是否是一个函数式接口,同时 javadoc 也会包含…
1.Lambda表达式
为什么使用 Lambda 表达式 Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力得到了提升。 从匿名类到 Lambda 的转换 匿名内部类 new Thread(new Runnable() { @…
thumbnail
MyBatis
1. 简介 原名叫ibatis 底层是对JDBC封装 数据访问层框架 2. 使用 配置文件 context.xml 放在MATE-INF目录 负责配置数据库以及数据库连接池 可以将鼠标悬停在标签上,可以看到标签的相应语法,?表示0个或一个,顺序也得遵守 事务回滚 一般操作一个session 只要session没关闭 之前的所有执行的sql都是一个事…