您好,我是湘王,这是我的51CTO博客,欢迎您来,欢迎您再来~在JDK1.5之前,Java的多线程都是靠synchronized来保证同步的,这会引起很多性能问题,例如死锁。但随着Java的不断完善,JNI(Java Native Interface)使得Java能越过JVM直接调用本地方法,例如CAS。CAS是Compare And Swap(比较与交换)的缩写,它用于实现多线程同步的原子指令
Read More
moregeek program
【多线程】 cas 机制解析及应用( 原子类 . 自旋锁 )、解决 aba 问题_perceus的博客-多极客编程
@TOC
CAS ( Compare and swap)
1、解析CAS
CAS:全称 Compare and swap,字面意思:”比较并交换“,一个 CAS 涉及到以下操作:
我们假设内存中的原数据V,旧的预期值A,需要修改的新值B。
比较 A 与 V 是否相等。(比较)
如果比较相等,将 B 写入 V。(交换)
返回操作是否成功
CAS 伪代码:
下面写的代码不是原子的, 真实的 CA
Read More
Read More
JAVA CAS单点登录之一:搭建CAS服务器-多极客编程
前言这一段时间,心血来潮研究了下CAS这个应用。对它感兴趣,几年前就有过,就是一直没有踏实好好研究,一直是断断续续的纸上谈兵,东看看,西看看。CAS说白了主要涉及权限认证相关,逻辑非常简单。但真正部署起来,也不是一件容易事。我想主要原因如下。由于知名原因,访问官网非常有难度,系统全面地获取资料非常难,且中文资料更少国内虽然已经有很多博客论坛已经分享了很多部署步骤和认证流程,但一步步真正演练起来,非
Read More
Read More
Exchange2013 SP1 CAS实现NLB的详细配置及介绍-多极客编程
Exchange2013 SP1 CAS实现NLB的详细配置及介绍上一篇我们介绍了Exchange2013 sp1 DAG详细安装配置及介绍,今天呢介绍如何部署Exchange2013 SP1 CAS服务NLB配置,那什么是NLB呢,说白了,NLB就是Exchange CAS角色的高可用,为了提高服务器可用性的一个高可用服务,需要在本机启用windows 系统自带的网络负载均衡来完成。在Excha
Read More
Read More
Exchange2010 配置CAS NLB(网络负载均衡)CAS Array(阵列)--注意事项-多极客编程
要实现两台前端CAS服务器在其中一台出现故障时自动切换到另一台,我们需要做负载均衡群集和CAS Array阵列来实现,到两台CAS服务器上分别添加网络负载平衡的功能 打开网络负载平衡管理器新建一个群集 添加群集IP地址为192.168.1.254/24 群集操作模式选多播,单播与多播有什么区别大家可以找相关资料学习一下 接下来把另一台CAS服务器也加入到此群集中来 中间
Read More
Read More
Exchange 2010高可用平台的搭建和配置-多极客编程
环境描述 IP address Server name Server role 备注 10.62.9.12 Dhcashub01 Exchang(cas/hub) 10.62.9.13 Dhcashub02 Exchang(cas/hub) 10.62.9.
Read More
Read More
Exchange 2013 SP1部署系列5:NLB负载均衡配置-多极客编程
首先在CAS01和CAS02上安装网络负载均衡功能组件,首先安装CAS01,CAS02按照相同的步骤进行安装即可,打开服务器管理器,点击添加角色和功能两台客户端访问服务器安装完成NLB之后,打开CAS01上的网络负载平衡管理器右击,选择“新建群集”在主机栏中输入“CAS02.corp.robin.com”,然后点击“连接”下一步点击“添加”按钮添加群集IP地址输入完整的Internet名称,这里设
Read More
Read More
CAS学习之Remember Me功能(1)-多极客编程
CAS通过简单的配置就可以实现免登陆的功能。即当用户登录系统之后,关闭浏览器,用户可以直接进入系统无需再次验证。具体配置步骤如下:1、在deployerConfigContext.xml中增加如下配置:<property name="authenticationMetaDataPopulators">
<list>
&
Read More
Read More
CAS学习之认证扩展OpenLDAP(2)-多极客编程
在之前的文章中,扩展了一个简单的认证方式,及密码需要以用户名开头。在以前的项目中,经常使用LDAP作为单点登录的统一认证源,为此想尝试扩展一个LDAP的认证方式。我在项目中比较常用的LDAP服务器是SunOne LDAP、Oracle Internet Directory、Oracle Directory Server Enterprise Edition和Oracle Unified Direc
Read More
Read More
CAS学习之认证扩展使用(1)-多极客编程
关于认证方面,CAS是非常灵活的。在CAS服务端的配置文件deployerConfigContext.xml中可以定义任何自己想要的认证方式,例如JDBC方式认证、LDAP方式认证。并且,可以同时启用多种认证方式,形成一个认证流。当第一个认证未通过时,第二个认证启用。如果第一个认证通过,第二认证就不会启用。以此类推。下面一个简单的例子结束添加新认证方式的步骤。1、集成抽象类AbstractUser
Read More
Read More
CAS学习之RESTFUL API使用(1)-多极客编程
CAS环境搭建完成之后,由于项目中需要模拟CAS登陆并获取相应的TICKET,专门学习了一下RESTFUL API的使用。以下例子代码实现的功能是模拟登陆CAS,生成ST为各个集成了CAS的应用使用。将RESTFUL API的调用封装到了一个类中:package com.feiquan16.cas.util;
import java.io.IOException;
import java.util
Read More
Read More
CAS学习之环境搭建问题(1)-多极客编程
现在做了好几个单点登录的项目,之前一直使用的是Oracle Access Manager(OAM)这款产品。在做项目的时候,有一个公司自己已经搭建了一套单点登录平台,他们是使用开源的CAS作为单点登录平台的。我们需要通过OAM这款产品替代现有的CAS。为了寻找CAS中的应用平滑迁移到OAM上,首先需要自己搭建一套CAS,充分了解CAS的功能和原理。为此,有了第一步:CAS环境搭建。在这个过程中,犯
Read More
Read More
基于sfGuardPlugin的symfony和CAS单点登录的集成-多极客编程
项目中碰到需要将symfony集成到CAS中,但是由于采用了sfGuardPlugin插件做为用户控制,google不得,经过试验以下代码可以满足实现单点登录及自动创建用户功能,不足之处请大家悉心指教,谢谢。
需要更改以下文件并将phpCAS客户端中CAS.php置于plugins/sfDoctrineGuardPlugin/modules/sfGuardAuth/lib/vendor,更改的文
Read More
Read More
CAS之困-观CAS3.4代码有感-多极客编程
CAS现在是一个越来越庞大的东西,和Spring捆绑的很深。什么spring mvc webflow能弄的都弄上了。让本来以为可以很容易集成的事情,变成一种很纠结的工作了。
小工程用上真的有点大材小用,大项目(平台式)又和现有的技术有点不一致,需要容忍一下垃圾(不用的东西,谓之垃圾,并无贬义)。
反观其代码,除了核心级接口,关于持久等的实现那是捆绑在spring 和hibernat
Read More
Read More