上一页 1 2 3 4 5 6 7 8 9 ··· 13 下一页
摘要: 传统数据库:范式+ER图(1:1/1:N/N:N,主外键) NoSQL简介 聚合模型:KV键值,BSON,列族,图形 NoSQL数据库分类 KV键值Redis 文档型数据库(bson) MongoDB 列存储数据库 HBase 图关系数据库Neo4J CAP原理 CAP+BASE 传统的关系型数据库A... 阅读全文
posted @ 2019-05-01 20:52 FigSprite 阅读(219) 评论(0) 推荐(0)
摘要: JVM将整个运行环境当做一个单例对象。 要点: 构造器私有化 含有一个该类的静态变量来保存这个唯一实例 对外提供获取该实例对象的方式 几种常见形式: 饿汉式:直接创建对象,不存在线程安全问题 懒汉式:延迟创建对象 饿汉就是很着急,想吃东西,无论我当前要不要这些实例,它都着急着把它创建出来。 懒汉就是 阅读全文
posted @ 2019-05-01 12:54 FigSprite 阅读(252) 评论(0) 推荐(0)
摘要: 之前说的都是通过注释的方式配置,接下来说说如何使用配置文件配置AOP 还是原来的代码,去掉所有注释,接下来配置最基本的几个bean。 然后使用<aop:config>标签进行配置,然后配切面<aop:aspect>,用ref指定是哪个bean,用 order指定优先级,然后使用各个通知子标签,进行通 阅读全文
posted @ 2019-04-29 16:54 FigSprite 阅读(255) 评论(0) 推荐(0)
摘要: 这部分主要针对众多相同切面表达式进行提取重用,方便编码。 这里用到了@Pointcut(),首先定义一个方法,用于声明切入点表达式,一般这个方法里不再需要填入其他代码。 然后其他通知注释中使用value=""的方式使用这个切点表达式 至于其他类,如果也想使用这个切点表达式,和引用其他函数方法的方法一 阅读全文
posted @ 2019-04-29 16:37 FigSprite 阅读(197) 评论(0) 推荐(0)
摘要: 顾名思义,就是切面的优先级,比如当两个切面都是前置通知时,先执行哪一个。 创建一个新类VlidationAspect.java 看看结果: 如果此时我想更改顺序,就需要在类名上使用@Order()注释,括号里的数值越小,优先级越高 看看结果: 阅读全文
posted @ 2019-04-29 16:23 FigSprite 阅读(225) 评论(0) 推荐(0)
摘要: 返回通知:是在方法正常结束之后执行的通知,可以访问方法返回值。 使用@AfterReturning注释,我们还可以在注释里面指定一个返回值的名字,然后再方法中使用它。 当方法出异常,就不会有这个通知了 异常通知:是在方法出现异常后执行的通知,可以访问异常对象 使用@AfterThrowing注释,我 阅读全文
posted @ 2019-04-28 17:51 FigSprite 阅读(3186) 评论(0) 推荐(0)
摘要: 后置通知指的是,在目标方法执行后(无论是否发生异常),执行的通知 我们使用@After()注释 我们写一个除数为0的操作让它异常,看看情况: 还是把提示语句打印出来了。 注意一点,后置通知还不能读取返回结果,需要在返回通知里才可以得到返回结果。 阅读全文
posted @ 2019-04-28 14:24 FigSprite 阅读(373) 评论(0) 推荐(0)
摘要: 我们使用AspectJ对Spring进行AOP操作,有两种方式,注解和XML配置方式,先在pom.xml中声明jar包 <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <versi 阅读全文
posted @ 2019-04-28 14:07 FigSprite 阅读(1098) 评论(0) 推荐(0)
摘要: 我们先聊聊一个经典面试题:i=i++; 我们知道在虚拟机底层它实际上做了三步: int temp =i; i = i + 1; i = temp; i++实际上的操作分为三个部分:读、改、写 我们看看下面的例子: public class TestAtomicDemo { public static 阅读全文
posted @ 2019-04-27 20:41 FigSprite 阅读(184) 评论(0) 推荐(0)
摘要: 先来看一个例子: public class VolatileTest { public static void main(String[] args) { ThreadDemo td = new ThreadDemo(); new Thread(td).start(); while (true) { 阅读全文
posted @ 2019-04-27 19:40 FigSprite 阅读(2222) 评论(2) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 ··· 13 下一页