briarbear | 熊大

/- 记录技术成长点滴 -/


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

Java-反射机制的核心原理

发表于 2018-07-09 | 分类于 Java

0. 说明

由于最近被一个同学问到Java的反射,我给它讲了反射,可是发现,我只是讲了什么是反射,别人却说,反射的实现原理是啥,这才发现我答非所问。后来去网上查了资料,大部分都只是讲到反射的使用,关于原理的这部分,却很少涉及,这是又拿起了《深入理解Java虚拟机》,尝试从中找答案。

阅读全文 »

设计模式-Java中三种代理模式

发表于 2018-07-05 | 分类于 设计模式

代理模式是常用的结构性设计模式之一,它为对象的间接访问提供了一个解决方案,可以对对象的访问进行控制。可以在目标对象的基础上,增加额外的功能操作,即扩展目标对象的功能。

体现编程思想:不修改原模块代码或方法,通过代理的方式来扩展

完整代码见文末链接

阅读全文 »

Java并发-Synchronize与volatile应用示例(售票系统)

发表于 2018-07-04 | 分类于 Java

场景描述:假设现在我们总共有1000张票要进行出售,共有10个出售点,那么当售票到最后只有一张票时每个售票点如何去处理这唯一的一张票?或者对于某一张票而言,假设它正在售票站1售票的程序执行过程中,但是还没有出售,那么此时,其他售票站改如何去处理这张票呢?

阅读全文 »

Java并发-阻塞队列实现生产者消费者

发表于 2018-07-04 | 分类于 Java

1. 阻塞队列

前文中讲到过:阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。阻塞队列常用于生产者和消费者的场景,生产者是向队列中添加元素的线程,消费者是从队列取元素的线程。阻塞队列就是生产者用来存放元素,消费者用来获取元素的容器

  • 完整代码见文末
阅读全文 »

Java并发-Java中的阻塞队列

发表于 2018-07-04 | 分类于 Java

本文摘自《Java并发编程的艺术-方腾飞》

本节将介绍什么是阻塞队列,以及Java中阻塞队列的4种四种处理方式,并介绍Java7(Java8相同)中提供的7种阻塞队列,稍后分析阻塞队列的一种实现方式

阅读全文 »

Spring-AOP核心原理及手写实现

发表于 2018-07-03 | 分类于 Spring

1. 基本原理

Spring AOP构建在动态代理基础之上,因此,Spring对AOP的支持局限于方法拦截(AspectJ静态代理框架能够实现更为高级的功能,本文不做介绍)

Spring AOP使用的动态代理,所谓的动态代理就是说AOP框架不会去修改字节码,而是在内存中临时为方法生成一个AOP对象,这个AOP对象包含了目标对象的全部方法,并且在特定的切点做了增强处理,并回调原对象的方法

Spring AOP中的动态代理主要有两种方式 :

  1. JDK动态代理:JDK动态代理通过反射来接收被代理的类,并且要求被代理的类必须实现一个接口。JDK动态代理的核心是InvocationHandler接口和Proxy类
  2. CGLIB动态代理: 如果目标类没有实现接口,那么Spring AOP会选择使用CGLIB来动态代理目标类。CGLIB(Code Generation Library),是一个代码生成的类库,可以在运行时动态的生成某个类的子类,注意,CGLIB是通过继承的方式做的动态代理,因此如果某个类被标记为final,那么它是无法使用CGLIB做动态代理的
  3. 下面将手动实现一个AOP功能(完整代码见文末)
阅读全文 »

Spring-IOC核心原理及手写实现

发表于 2018-07-03 | 分类于 Spring

0. IOC基本原理

建议不要硬着头皮看Spring代码,本身代码800多m,就是不上班开始看,也不知道什么时候看完,如果想学学IOC,控制反转这些建议看看jodd项目,比较简练,但是我仍然不建议过多看这些框架的代码,因为这些代码要完成任务需要很多琐碎的类实现,比如读取某个包下的所有类,解析class的头文件,反射各种信息,再加上封装。很有可能读源码的过程中掉在各种细节出不来,所以读这种源码不必事无巨细,理解原理即可。

阅读全文 »

设计模式-三种工厂模式

发表于 2018-06-27 | 分类于 设计模式

建议结合示例源码理解


1 简单工厂模式

简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态(static)方法,因此简单工厂模式又被称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式

阅读全文 »

Java并发-ThreadLocal理解与适用场景

发表于 2018-06-26 | 分类于 Java

Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的ThreadLocal变量

  • ThreadLocal并不是解决多线程共享变量的问题,既然变量不共享,更谈不上同步到问题
  • ThreadLocal 提供了线程本地变量的实例。它与普通变量的区别在于,每个使用该变量的线程都会初始化一个完全独立的实例副本。ThreadLocal 变量通常被private static修饰。当一个线程结束时,它所使用的所有 ThreadLocal 相对的实例副本都可被回收

阅读全文 »

Java集合-ArrayDeque工作原理及实现

发表于 2018-06-26 | 分类于 Java

【转载】原文链接

阅读全文 »
1234
Briar·bear

Briar·bear

Java程序员成长之路

34 日志
7 分类
24 标签
GitHub
© 2019 Briar·bear
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4