理解一下Shiro的登录过程

摘要: Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码学、会话管理和可用于安全的任何应用程序。 Controller中的登录语句: Subject subject = SecurityUtils.getSubject();//获取当前用户 //封装用户的登录数据 Use 阅读全文
posted @ 2020-11-13 18:45 菜鸟向前冲冲冲 阅读(392) 评论(0) 推荐(0) 编辑

理解java中的流Stream

摘要: 概念: 流:代表任何有能力产出数据的数据源对象或者是有能力接受数据的接收端对象<Thinking in Java>,换句话说:是对输入或输出设备(文件,网络,内存)的抽象。 流的本质: 数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 Stream 使用一种类似用 SQL 语句 阅读全文
posted @ 2020-11-01 18:08 菜鸟向前冲冲冲 阅读(252) 评论(0) 推荐(0) 编辑

关于线程中断的理解

摘要: 什么是中断?中断可以理解为线程的一个标识位属性,代表一个运行中的线程是否被其他线程进行了中断操作。它是一种协作机制,线程可以通过这种机制来通知另一个线程,告诉它在合适的或者可能的情况下停止当前工作,并转而执行其他的工作。 interrupt()方法 我们知道,要想中断一个线程,那么就调用该线程的in 阅读全文
posted @ 2020-10-26 18:38 菜鸟向前冲冲冲 阅读(965) 评论(1) 推荐(0) 编辑

简单理解下Unsafe的park和unpark的原理

摘要: 我们知道各种并发框架如CountDownLatch、CyclicBarrier和Semaphore是基于AQS (AbstractQueuedSynchronizer)框架实现的,AQS框架借助于两个类: Unsafe(提供CAS操作) //JDK9以后引入了VarHandle变量句柄,代替了Uns 阅读全文
posted @ 2020-10-26 15:22 菜鸟向前冲冲冲 阅读(3221) 评论(0) 推荐(2) 编辑

简单理解下ReentrantLock的加锁过程

摘要: 源码版本:JDK10 首先我们知道ReentrantLock默认是非公平的和可重入的,基于AQS实现,(AQS是什么?AbstractQueuedSynchronizer:一个队列同步器,用来构建锁或者其他同步组件的基础组件,之所以叫队列同步器,是因为它使用一个由双向链表实现的队列来完成线程的排队等 阅读全文
posted @ 2020-10-24 20:23 菜鸟向前冲冲冲 阅读(416) 评论(0) 推荐(0) 编辑

简单理解下Thread.join()方法

摘要: 线程A中调用线程B的join方法:线程A会阻塞直到线程B执行完毕或者当B线程被中断,A线程才继续执行。 简单来说:强制让一个线程阻塞直到另一个线程执行完毕后再继续向下执行。 应用场景:一个线程的执行依赖于另一个线程的执行结果,如在主线程中对多个子线程执行的结果进行汇总,需要等待子线程执行完毕。 实现 阅读全文
posted @ 2020-10-23 11:23 菜鸟向前冲冲冲 阅读(229) 评论(0) 推荐(0) 编辑