Spring源码阅读(一)如何阅读Spring源码?

前言Spring源码,永远滴神!本来不是很想写这个系列的,因为我觉得阅读源码,学习源码是一件很基础的事情,程序员在面对一个神奇的黑盒的时候,研究其的输入输出只是一个基本的学习手段,我们只能做到推测它内部发生了什么,却不能将其利用,扩展,以及自己实现,这种程度的学习是很难让人尽兴的,这个时候对源代码的


Java多线程(五)——线程等待/通知机制之条件变量(二)

上一章节的最后,我们提到了Object提供的wait/notify的一些不足,主要有以下几点:notify只会随机唤醒等待在锁上的任意一个线程,并不一定是我们想要唤醒的。notifyAll会将全部等待在锁上的线程唤醒,虽然while(!保护条件)代码块保证了在全部唤醒线程时,被提前唤醒的线程不会执行


Java多线程(四)——等待,并心怀希望吧。线程的等待/通知机制(一)

等待/通知机制今天我们来看Java多线程的等待——通知机制。多线程的环境下,往往有这么一种需求,当某个线程执行到某个地方的时候,需要来自其他线程的数据,但我们又无法确定它是否已经准备就绪,你想让其他线程在准备好数据之后,给你打个招呼,在这之前,你就先等一会,等他招呼来了,你再继续执行。有的同学肯定第


Java多线程(三)——中断线程

今天我们继续来看多线程。中断线程概述要想中断一个正在执行中的线程,在远古时期Thread提供了一个方法,stop(),但他由于会造成很多问题,现在已经不推荐使用了。我初略看了一下stop的源码注释,大意讲的是stop()方法用于强制结束线程,但他天生不安全,如果一个线程使用stop方法结束,会导致其


对于前后端分离时,用户权限设计的一点思考

在模板引擎时代,对于用户权限的管理是后台的事情,无论是对于API的请求限制,还是对页面内容渲染的控制,比如对按钮级别的元素进行显示与隐藏,这些在模板引擎中都不是问题,各个模板引擎也开发了大量标签,帮助我们对页面上要显示的内容进行控制。但如今前后端分离的开发方式已经流行很长一段时间了,前后端各司其职,


Shiro安全框架(一)基本概念以及与SpringBoot的整合

ApacheShiro是一款运用广泛的Java安全框架,特点是使用起来比较简单,Api比较人性化。最近要用到这玩意,提前复习一下相关概念。(下文Shiro的核心组件部分摘自张开涛/著《跟我学Shiro》)1、Shiro的核心组件Subject:在Shiro中,Subject是对外API的核心,他代表


Java多线程(二)——守护线程,以及Java线程的“父子关系”

上一篇文章里,我们知道了,当线程对象被创建时如果不指定线程组,构造器会默认指定当前线程所在的线程组作为新线程的线程组,在线程组的层面上,子线程和父线程实际上是平级的,并没有实际上的区别。守护线程今天我们来看看守护线程。守护线程本身很简单,只要在线程start方法执行之前,为线程对象设置setDaem


Java多线程基础(一)——线程和线程组

工作中很少真正用到多线程,毕竟CRUD就完事了,但是作为一名Coder,还是很想弄明白底层的一些东西,之前也看过《Java并发编程实战》,但由于没有总结输出,以至于看了就忘==。前几天在学习JVM的类加载器的时候,发现线程里有一个getContextClassLoader()方法,心想着是时候对Th


JVM学习(三) 类加载器——双亲委派机制(二)

上一章我们了解到了双亲委派机制到底是个什么样的东西,但为什么要这样设计呢?今天主要在这方面进行探究。类加载器,虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远远不限于类加载阶段。对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加载器都拥


JVM学习(二) 类加载器——双亲委派机制(一)

类加载器类加载器用来把类加载到Java虚拟机中。从JDK1.2版本开始,类的加载过程采用父亲委托机制(双亲委托机制),这种机制能更好地保证Java平台的安全。在此委托机制中,除了Java虚拟机自带的根类加载器以外,其余的类加载器都有且只有一个父加载器。当Java程序请求加载器loader1加载Sam