Spring声明式事务的实现方式选择(JDK动态代理与cglib)

1、简介Spring声明式事务的具体实现方式是动态决定的,与具体配置、以及事务代理对象是否实现接口等有关。2、使用JDK动态代理的情况在满足下面两个条件时,Spring会选择JDK动态代理作为声明式事务的实现方式。(1)事务代理类必须实现接口且不能显式继承父类(Object这个父类不算)。(2)配...

2018-05-04 16:36:30

阅读数 714

评论数 1

REQUIRES_NEW不起作用导致整个事务回滚——Spring事务传播机制

1、Propagation.REQUIRES_NEW的作用假设有个对象A,有a()方法,有个对象B,有b()方法。在a方法中调用了b方法,b方法被称为内嵌事务,不管a方法是否开启事务,只要b方法的事务的隔离级别为REQUIRES_NEW,则一定会在调用b方法时产生一个新的事务。2、一个场景A的a(...

2018-05-03 10:38:08

阅读数 562

评论数 1

Java面试题及回答集锦(基础篇)

1、问题:如果A和B对象循环引用,是否可以被GC?回答:可以,现在的虚拟机基本都是通过可达性分析算法来判断对象是否存活的,而不是通过简单的引用计数法来判断对象是否存活。可达性分析算法使用一系列的“GC Roots”对象(虚拟机栈中引用的对象、静态属性引用对象)作为起始点,这些节点向下搜索的路径称为...

2018-03-16 13:46:19

阅读数 425

评论数 0

数据库面试题

1、数据库有哪些索引?根据功能分类唯一索引(Unique):可单列也可多列组合,每个索引值对应唯一的记录,且索引的字段具有唯一性,最多只能有一个NULL。主键索引(Primary Key):可单列也可多列组合,其值唯一标识表中的一行,不能为NULL。聚集索引(Cluster):一个表只能包含一个聚...

2018-03-16 13:46:07

阅读数 286

评论数 0

计算机基础之操作系统

1、进程进程是具有独立功能的程序在一个数据集合上的动态性:进程的一次执行,生命周期有创建、活动、暂停、终止等过程。并发性:多个进程实体同存于内存中,能在同一时间段内运行。独立性:进程实体能独立运行,独立获得自由,独立接收调度。异步性:进程按照各自独立的,不可预知的速度执行,异步性会导致执行结果的不...

2018-03-02 13:14:14

阅读数 356

评论数 0

Redis原理知识点集锦

1、Redis有哪些数据结构?字符串String、字典Hash、列表List、集合Set、有序集合SortedSet。高级数据结构HyperLogLog:基数统计GEO:地理位置PUB/SUB:订阅发布2、Redis是单进程单线程的吗?是的。Redis是基于内存的单进程单线程KV数据库,基于C语言...

2018-02-26 12:51:04

阅读数 1088

评论数 0

Dubbo实现原理浅析

一、电商系统架构演进1、单一应用架构当网站规模很小时,采用单一应用框架,把所有的服务集中在一个应用中,但随着网站规模增大,单一应用框架会越来越难维护。2、垂直应用架构把应用垂直的拆分开来,拆分成如支付、查询等垂直模块,每个模块都有从顶层显示层到底层数据持久层的业务逻辑,每个模块都是一个独立的子系统...

2018-02-25 17:23:38

阅读数 2695

评论数 0

Java动态代理讲解——深入浅出

一、代理模式        要讲解动态代理,就要先说代理模式,这是一种最常用的设计模式。该模式中有以下三个角色。        抽象角色:通过接口或抽象类声明真实角色实现的业务方法,即被代理类与代理类都要实现的接口。        代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方...

2018-02-25 12:24:23

阅读数 262

评论数 0

最通俗易懂的NIO讲解

一、NIO是什么?NIO的全称是New I/O,与之相对应的是Java中传统的I/O,这里都指的是Java的API包。传统的IO包提供的是同步阻塞IO,即当用户线程发出IO请求后,内核会去查看数据是否已经就绪,若未就绪,则用户线程会处于阻塞状态(让出CPU),当数据就绪后,内核会将数据复制到用户线...

2018-02-23 12:33:53

阅读数 2905

评论数 0

Java NIO:浅析I/O模型

也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较基础的知识:I/O模型。下面本文先从同步和异步的概念 说起,然后接着阐述了阻塞和非阻塞的区别,接着介绍了阻塞IO和非阻塞IO的区别,然后介绍了同步IO和异步I...

2018-02-23 10:09:30

阅读数 123

评论数 0

设计模式集锦

1、简单工厂模式、工厂模式、抽象工厂模式的区别?简单工厂模式(静态工厂模式):简单工厂是一个类,其中一个静态方法,根据传入的参数来生成特定的对象。工厂模式:工厂模式提供了一个抽象的工厂类,该类有一个生产抽象产品的接口,程序员可根据需要继承抽象工厂实现生产特定产品的方法,并且自己实现特定的产品。工厂...

2018-02-21 11:23:01

阅读数 195

评论数 0

分布式锁的作用及实现(Redis)

一、什么是分布式锁?要介绍分布式锁,首先要提到与分布式锁相对应的是线程锁、进程锁。线程锁:主要用来给方法、代码块加锁。当某个方法或代码使用锁,在同一时刻仅有一个线程执行该方法或该代码段。线程锁只在同一JVM中有效果,因为线程锁的实现在根本上是依靠线程之间共享内存实现的,比如synchronized...

2018-02-19 15:29:38

阅读数 58801

评论数 44

最容易理解的Consistent Hashing讲解(一致性哈希算法使用场景及原理)

一、使用场景        考虑一个场景,有一个redis集群,那么我们如何分配不同的要缓存的数据,使之能够尽可能均匀的存储到各个redis服务器上呢?肯定有人会想到使用传统的hash + 取模 算法。        服务器ID = hash(object) % N                ...

2018-02-16 17:17:02

阅读数 546

评论数 0

SpringMVC 原理 (面试必备)

一、简介SpringMVC是Spring框架的一个子模块,类似于AOP,IOC等模块。也是通常所说的那层薄薄的Web层,也就是MVC架构中的C(Controller),负责接收分发用户请求。二、原理详细解释这幅图。1、用户发起请求,一般是HTTP请求,带有URL和参数。2、DispatcherSe...

2018-02-14 13:21:15

阅读数 1443

评论数 0

Spring AOP 原理 (面试必备)

一、AOP是什么?    AOP的全称是Aspect Orient Programming,即面向切面编程。是对OOP(Object Orient Programming)的一种补充,战门用于处理一些具有横切性质的服务。常常用于日志输出、安全控制等。       上面说到是对OOP的一种补充,具体...

2018-02-13 16:02:26

阅读数 23654

评论数 2

Spring IOC 和 DI原理 (面试必备)

一、IOC是什么?IOC全称为“Inversion of Control”,即控制反转,不是一种技术,而是一种设计思想。在这种设计思想中,你设计好的对象交给容器管理,而不是在应用程序内部对对象进行管理。控制的含义是IOC容器控制了对象(也可以包括文件及其他外部资源);而反转的含义是IOC容器负责创...

2018-02-13 12:00:55

阅读数 2915

评论数 2

Java并发之ConcurrentHashMap详解

一、ConcurrentHashMap是什么?      ConcurrentHashMap是线程安全的并发容器,是用来替代在多线程环境下的HashMap,因为HashMap是线程不安全的,多线程环境下put操作可能会导致死循环,CPU利用率上升到100%。虽然有同步容器Hashtable和Col...

2018-02-12 18:18:54

阅读数 422

评论数 0

Java并发之ReentrantLock原理详解

一、ReentrantLock是什么?    ReentrantLock是Lock接口的默认实现,是一种独占锁。相对synchronized而言,ReentrantLock提供了更多的操作方式以及更细粒度的加锁方式。    主要特性:    (1)可重入。ReentrantLock是可重入锁,因为...

2018-02-12 12:13:03

阅读数 467

评论数 1

Java并发之AQS(AbstractQueuedSynchronizer)原理讲解

一、什么是AQS?    AQS的全称是AbstractQueuedSynchronizer,即抽象队列同步器,其底层是volatile与CAS,而其上层则是基于该抽象类构建的许多并发组件,如ReentrantLock、Semaphore等。AQS自身实现了一些基本方法,还剩余一些面向上层的方法,...

2018-02-10 17:51:31

阅读数 475

评论数 0

Java并发之CAS与原子类实现原理讲解

一、CAS是什么?CAS的全称是Compare and Swap,即比较并交换。比较的是当前内存中存储的值与预期原值,交换的是新值与内存中的值。这个操作是硬件层面的指令,因此能够保证原子性。Java通过JNI(本地方法调用)来使用这个原子操作,也是乐观锁最常用的机制。CAS操作包含三个操作数——内...

2018-02-10 12:40:29

阅读数 521

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭