摘要:
此处源码分析,主要是基于读锁,非公平机制,JDK1.8。 问题: 1、ReentrantReadWriteLock是如何创建读锁与写锁? 2、读锁与写锁的区别是什么? 3、锁的重入次数与获取锁的线程数分别是用哪种方式记录的? 4、当队列中出现多个共享模式的线程节点连续排列时,那么当第一个共享模式的线 阅读全文
摘要:
一:代码 虽然只有一句,但是源码却比较多: 这个方法中各个方法意义: 1、tryRelease(arg),尝试去解锁,通过改变state的值来释放锁,如果state的值变成了0,那么返回true,则锁释放完成,否则返回false; 2、unparkSuccessor,如果继任的线程节点存在,就去唤醒 阅读全文
摘要:
为了表述清楚假设当前请求获取锁的线程名称为“线程x” (1)非公平锁的第一步:当“线程x”请求获取到锁的时候,直接调用compareAndSetState(0, 1),这个方法会将判断state=0?如果等于0,说明这个锁没有被占领,那么“线程x”直接获取,这就是非公平锁,竞争锁成功之后,就将属性T 阅读全文
摘要:
先来看看这个state的定义: 同步的状态,是一个volatile修饰的私有整形变量,volatile修饰的变量是一个多线程可见的,但是多线程可见,并不能保证操作是原子的。在AbstractQueuedSynchronizer下的compareAndSetState方法保证了操作的原子性,volat 阅读全文
摘要:
上一篇如果已经操作成功,说明casServer已经实现了,下面就是搭建casClient与casServer联合调试。代码已经上传到github上。你可以下载看看,如果自己在搭建的过程中遇到问题,你也可以加我qq。 在github上,我创建了两个项目,分别是myCasServer,myCasClie 阅读全文
摘要:
最近工作比较忙,空闲的时间在搞单点登陆系统,自己写了一套SSO在GitHub上,过程走通了。通过这个例子,自己熟悉了流程,而且破天荒的使用了抽象设计模式,并且熟悉了cookies和session的使用,可以说受益不少。如果你也在学习单点登陆系统,强烈建议看看源码,这个系统的源码比较少,网上也有很多思 阅读全文
摘要:
书接上回。 实例8:if-then -else语句 实例9:case语句: 实例10:循环语句,while ···· end while: 实例11:循环语句,repeat···· end repeat: 实例12:循环语句,loop ·····end loop: 实例13,ITERATE,相当于关 阅读全文
摘要:
存储过程:其实就是存储在数据库中,有一些逻辑语句与SQL语句组成的函数。由于是已经编译好的语句,所以执行速度快,而且也安全。 打开mysql的控制台,开始编写存储过程。 实例1: 编写存储过程: 执行存储过程: 查看执行结果: 语句解释: 1、delimiter // ,声明分隔符:DELIMITE 阅读全文
摘要:
双向一对一的实例我已经上传到GitHub,entrance项目上了,感兴趣的可以下载下来跑跑,这里讲两个在运行过程中遇到的问题。 问题一:上一篇博客的最后我留下了问题。一对一关联查询注解@OneToOne的实例详解 问题点:文章的最后,单向一对一程序在执行save语句的时候,分别执行了下面的语句: 阅读全文
摘要:
表的关联查询比较复杂,应用的场景很多,本文根据自己的经验解释@OneToOne注解中的属性在项目中的应用。本打算一篇博客把增删改查写在一起,但是在改的时候遇到了一些问题,感觉挺有意思,所以写下第二篇专门讲修改。 一、单向@OneToOne实例详解 假设一个场景,一个人只能领养一只宠物,根据人能够找到 阅读全文