自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 AbstractQueuedSynchronizer源码解析

AQS是什么?AQS是什么,相信大家都不陌生这个题目,那么AQS到底是什么呢? AQS的全称是 Abstract Queued Synchronizer, 从字面意思理解也就是 抽象队列同步器 ,实际上AQS确实就是排队同步队列 , 也是一个抽象类,需要 自定义 同步队列中 可执行权 的 获取和释放中的逻辑(重新定义获取和释放语义),也就是重写 tryAcquire tryRelease tr...

2019-10-10 17:17:32 286

原创 Spring源码之注解扫描Component-scan

本文主要介绍Spring的component-scan标签,了解spring是如果实现扫描注解进行bean的注册,主要实现实在 NamespaceHandler,NamespaceHandlerSupport 和 BeanDefinitionParser 三个接口中,还需要配置spring.handlers文件,在接下里的源码解析中会详细解析,在本篇博客中将使用ApplicationConnte...

2019-03-16 15:50:30 921

原创 Spring源码之ApplicationContext

本文是针对Srping的ClassPathXMLApplicationContext来进行源码解析,在本篇博客中将不会讲述spring Xml解析注册代码,因为ApplicationContext是BeanFactory的扩展版本,ApplicationContext的GetBean和xml解析注册BeanDefinition都是用一套代码,如果您是第一次看请先看一下XMLBeanFactory...

2019-03-06 17:42:38 3809 1

原创 Spring源码之BeanFactory.getBean()

本文是针对Srping的BeanFactory.getBean来进行源码解析,如果您是第一次看请先看一下XMLBeanFactory解析:https://blog.csdn.net/qq_30257149/article/details/87972291,可以更好的理解Spring的注册原理,本篇博客是跟源码一步步看spring怎么实现getBean源码,Spring版本为5.X,源码已经在每一行...

2019-03-01 11:41:21 11983 1

原创 Spring源码之XMLBeanFactory

本文是针对Srping的XMLBeanFactory来进行解析xml并将解析后的信息使用GenericBeanDefinition作为载体进行注册,xmlBeanFactory已经在Spring 3.1中被标记为不建议使用,但是我们分析源码不影响,因为源码并未改变,并ApplicationContext依旧使用XmlBeanDefinitionReader和DefaultListableBeanF...

2019-02-27 18:18:50 2821 10

原创 SpringBoot项目配置Mybatis数据源(注解方式)

采用阿里的Druid做线程池;首先在项目的build.gradle或pom文件中增加mysql或oracle的依赖//druid连接池compile ("com.alibaba:druid-spring-boot-starter:1.1.10")//oraclecompile ("com.oracle:ojdbc14:10.2.0.3.0")//mysqlcompile (...

2018-10-12 11:43:17 4159 5

原创 String.intern方法详解

记录创建String的两种方式,"" 和 new String()区别,String intern方法的使用和常量池。String的使用 (Jdk1.8)代码package com.com.string;/** * @Auther: lantao * @Date: 2019-04-15 13:53 * @Company: 随行付支付有限公司 * @maill: lan_ta...

2019-08-14 17:34:18 383

原创 Lock总结

Lock在我们日常研发中经常会使用到,比如ReenTrantLock,ReentrantReadWriteLock,StampedLock (JDK1.8新增),下面就详细介绍一下它们的使用方法。ReenTrantLockReenTrantLock支持公平锁和非公平锁,也是独占锁,下面来说一下ReenTrantLock下的方法和使用。**lock:**获取阻塞锁。// 默认是费...

2019-08-14 17:27:04 225

原创 Synchronized升级过程总结

要理解Synchronized,首先要清楚偏向锁,轻量级锁和重量级锁,在使用方面需要有wait/wait(time)/notify/notifyAll等,下面我们就来介绍一下Synchronized的流程和使用方法;Synchronized的升级过程(Java SE 1.6中为了减少获得锁和释放锁带来的 性能消耗而引入的偏向锁和轻量级锁)Synchronized的升级顺序是 无锁–&gt...

2019-08-14 17:23:57 1324 1

原创 数组原理

数据结构课程学习笔记。数组概念数组(Array)是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据, 并且不支持动态扩容。线性表线性表就是数据排成一条线一样的数据结构,每个线性表最多只有前后两个方向,数组,链表丶队列丶栈等都是线性表数据结构。非线性表非线性表就是数据不规则,与线性表是相对立的,比如二叉树丶堆丶等,在非线性表中,数据之间并不是简单的前后关...

2019-08-14 17:21:51 4369

原创 多线程的宏观和微观视角

首先我们在做并发编程的的时候会考虑到原子性丶可见性和有序性,在宏观上会考虑到安全性丶活跃性和性能;微观视角可见性:一个线程对共享变量的修改,另外一个线程能够立刻感知到,我们称为可见性;原子性:一个或者多个操作在 CPU 执行的过程中不被中断的特性称为原子性;有序性:就是我们代码的执行顺序,依赖等。(指令重排导致顺序被打乱);  线程工作内存: 是指 Cpu 的 ‘寄存器’ ...

2019-08-14 17:20:12 391

原创 Java线程生命周期和锁的简单使用

本文介绍了java线程的生命周期,Synchronized的几个方法简单的使用。线程生命周期初始状态(New)New Thread之后, 就绪状态(Ready)表示获取到了Cpu的执行时间片,也就是cpu的执行权,等待开始执行。 运行状态(Runable)执行start之后,开始运行。 阻塞状态(Blocked)在进入sync...

2019-08-14 17:18:23 232

原创 Sring Boot 自动装配

SpringBoot和新特性笔记。注解模式装配@sevice @Conrtroller @Repository @Component这几个注解在Srping源码的文章中已经将结果了,这里就不在赘述了。条件(Condition)装配Condition 注解作为条件,如果符合条件则将bean注入到IOC中,反之则不注入,实际是使用 @Conditional注解来实现,继承 Cond...

2019-08-14 16:26:56 168

原创 Spring源码之Aop

本文主要介绍Spring的aop:aspectj-autoproxy/标签,了解spring是如何实现扫描注解进行aop的,主要实现是在 AspectJAutoProxyBeanDefinitionParser的parser方法中,另外这里还需要了解一下NamespaceHandler, NamespaceHandlerSupport 和 BeanDefinitionParser 的关系,如果...

2019-08-14 15:22:04 233

原创 java内存模型

volatile语义:        volatile具有和synchronized的一样的语义,被volatile修饰的变量在 ‘读’ 时JMM会将该线程所对应的’本地内存’置为失效,线程接下来会从 ‘主内存’ 中直接获取,在 ‘写’ volatile 修饰的变量时JMM会将该线程对应的本地内存的共享变量直接写入到 ‘主内存’ 中。 ...

2019-04-15 14:36:41 124

原创 可见性丶原子性和有序性

先说一下概念:可见性:一个线程对共享变量的修改,另外一个线程能够立刻感知到,我们称为可见性;原子性:一个或者多个操作在 CPU 执行的过程中不被中断的特性称为原子性;有序性:指令重排导致顺序被打乱;  线程工作内存: 是指 Cpu 的 ‘寄存器’ 和 ‘高速缓存’,线程的 working memory 是cpu的寄存器和高速缓存的抽象描述,数据读取顺序优先级 是:寄...

2019-03-28 18:34:23 331

原创 @DependsOn或depends-on配置的使用

解释:首先要了解depends-on或@DependsOn作用,是用来表示一个bean A的实例化依赖另一个bean B的实例化, 但是A并不需要持有一个B的对象,如果需要的话就不用depends-on,直接用依赖注入就可以了或者ref标签。@DependsOn用法1:直接或者间接标注在带有@Component注解的类上面;2:直接或者间接标注在带有@Bean 注解的方法上面;...

2019-03-08 14:12:51 29883 4

转载 并发编程总结之synchronized细节问题

摘要:本节主要介绍了并发编程下怎么避免数据脏读和什么是synchronized的可重入锁,synchronized的可重入锁的几种使用场景下,是线程安全的。以及一些细节的synchronized使用问题和synchronized常见代码块示例Code可以直接Copy运行。 脏读 什么是脏读:对于对象的同步和异步方法,我们在设计程序,一定要考虑问题的整体性,不然会出现数据不一致的错误,...

2019-03-07 18:20:09 285

转载 并发编程总结之多线程基础

线程安全 当多个线程访问访问某一个类(对象或方法)时,这个类或对象或方法始终能表现出正确的行为或我们想要的结果,那么这个类(对象或方法)就是线程安全的。 synchronized:可以在任意的对象及方法上加锁,而加锁的这段代码称之为互斥区或者临界区。代码示例说明1运行main方法,main方法里有5个线程t1到t5,同一时间启动去访问MyThread类的Run方法。1...

2019-03-07 17:40:00 118

转载 自定义BeanDefinitionRegistryPostProcessor

BeanDefinitionRegistryPostProcessor继承自BeanFactoryPostProcessor,是一种比较特殊BeanFactoryPostProcessor。BeanDefinitionRegistryPostProcessor中定义的postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)...

2019-03-05 14:36:59 420

原创 FactoryBean的使用

BeanFactoryBeanFactory是接口,用于管理Bean的一个工厂。BeanFactory是IOC容器的核心接口,它主要作用就是实例化、定位、配置应用程序中的对象及建立这些对象间的依赖。 BeanFactory只是一个接口,并不是IOC容器的具体实现,Springp容器提供了很多种实现,如:XmlBeanFactory、ApplicationContext等。现在一般使用A...

2019-02-28 17:32:02 469

原创 xml配置文件中factory-bean与factory-method(spring使用工厂方法注入bean)

本文是BeanFactory.getBean()的子文章,用来世界史factory-bean和factory-method的使用工厂方式注入,直接上代码;public class UserFactory { //非静态方法 public User createUser(){ User user = new User(); user.setName("B...

2019-02-28 17:19:27 2745

原创 Spring LookUp-method 和@Lookup 注入

LookUp-method注入:lookUp-method是bean标签下的子元素,但似乎不是很常用,它是把一个方法声明返回某种类型的bean,但是实际上要返回的bean实在配置文件中配置。UserLookUp类package lantao;public class UserLookUp { public void showMe(){ System.out.println("...

2019-02-27 18:14:24 2492

原创 Feign Hystrix (HystrixCommonKey) 设置单独接口的超时时间和FallBack

Feign设置单独接口的超时时间和FallBack(HystrixCommonKey)HystrixCommonKey生成方法:类名#方法名(入参类型) final class Default implements SetterFactory { @Override public HystrixCommand.Setter create(Target<?> ...

2019-01-16 18:00:13 7142 5

原创 java锁

再说锁的时候先说一下 自旋锁 自旋锁原理非常简单,如果持有锁的线程能在很短时间内释放锁资源,那么那些等待竞争锁的线程就不需要做内核态和用户态之间的切换进入阻塞挂起状态,它们只需要等一等(自旋,就是自己没事站着cpu,啥也不干),等持有锁的线程释放锁后即可立即获取锁,这样就避免用户线程和内核的切换的消耗。但是线程自旋是需要消耗cup的,说白了就是让cup在做无用功,如果一直获取不到...

2018-12-05 16:09:34 122

原创 基于gradle创建springBoot web项目(idea版本)

1:创建纯净基于gradle的项目(idea版本)我们不基于https://start.spring.io 来创建项目,因为其中有很多配置是我们不需要的;第一步:FIle–&amp;amp;amp;amp;amp;amp;gt;New–&amp;amp;amp;amp;amp;amp;gt;Project&amp;amp;amp;amp;amp;amp;gt; 选择Gradle Home 地址;&amp;amp;amp;amp;amp;

2018-10-11 18:48:24 4039

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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