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