启航·JVM概论
学习JVM并不是为了面试,更是为了深入去理解Java这门语言。
摸索·类加载子系统与加载过程
JVM是如何加载类呢?本期介绍类加载子系统与加载过程。
【JDBC系列】- jdbc的概念以及与数据库的交互流程
这篇来学习一下preparedstatement这个API的用法。
【JDBC系列】- jdbc的概念以及与数据库的交互流程
本次所学习的大致内容是jdbc的概念与理解,以及如何去使用jdbc来实现Java程序和数据库进行打交道。
Java设计模式-工厂模式
在大多情况下,我们都是用new去实例化对象。但是,有时候有的对象的类别有很多种,又存在着共性,就好比如汽车,有奔驰,红旗,宝马等品牌,如果是一个一个去创建类,那就需要创建很多,因此就需要用到工厂模式。
Java设计模式-责任链模式
拦截器可以拦截目标方法,进行一系列的操作。也可以取代代理对象的方法等功能。以下代码用JDK动态代理来实现一个拦截器的逻辑。
Java设计模式-动态代理
动态代理是指客户通过代理类来调用其它对象的方法,并且是在程序运行时根据需要动态创建目标类的代理对象。动态代理就需要建立真实对象和代理对象关系,再去实现代理逻辑方法。
Java设计模式-反射机制
反射的应用机制广泛,能够配置类的全限定名(包名 + 类型名)、方法和参数,完成对象的初始化,并且可以大大增强Java的可配置性,SpringIOC的基本原理就是如此。
锁的机制与底层优化原理
【多线程与高并发】- 锁的机制与底层优化原理
前言最近经常研究一些关于线程并发的问题,再开发中也实实在在遇到过许多的并发问题,之前所学的是如何解决这些问题,然而接下来就得理解一下底层原理。
简单例子首先用一个简单的例子来进行对锁的开篇认知。
如下代码,我们定义一个类,在这个类中提供了一个自增的方法。我们通过多线程的方式去执行自增,并且主线程也加入进行自增,最后输出这个值。这段代码都知道在自增的时候会出现并发问题,我们在通过加锁,控制对互斥资源的访问,最后就能得到期望的值。
1234567891011public class Number { int num = 0; public int getNum() { return num; } public void autoAccretion() { synchronized(this) { num++; } }}
123456789101112131415161718 ...