CAS

Exchange Server在前端服务器上生成了很多用户的配置文件

怎甘沉沦 提交于 2020-08-07 09:55:08
问题现象 在Exchange 2010前端服务器C盘的users目录下生成了很多用户的配置文件,这些用户并没有直接登录exchange服务器。 问题原因 如果用户登录到OWA并更改其密码,则将在CAS服务器上创建用户的配置文件。 参考链接: https://social.technet.microsoft.com/forums/exchange/en-US/caf14f66-62e0-4b76-8fa8-7a41812a5dcf/exchange-2010-users-in-cusers 更多IT资讯,您还可以关注下方的公众号获取 来源: oschina 链接: https://my.oschina.net/u/4277371/blog/4293652

JUC并发编程基石:AQS之主流程源码解析

本秂侑毒 提交于 2020-08-07 09:52:37
文源网络,仅供学习之用,如有侵权请联系删除。 由于AQS的源码太过凝练,而且有很多分支比如取消排队、等待条件等,如果把所有的分支在一篇文章的写完可能会看懵,所以这篇文章主要是从正常流程先走一遍,重点不在取消排队等分支,之后会专门写一篇取消排队和等待条件的分支逻辑。 读源码千万别在每个代码分支中来回游走,先按一个正常的分支把流程看明白,之后再去重点关注其他分支,各个击破。我相信看完正常流程,你再去分析其他分支会更加得心应手。 本篇将主要方法名都做了目录索引,查看时可通过目录快速跳到指定方法的逻辑。 执行流程 AQS的执行流程大体为当线程获取锁失败时,会加入到等待队列中,在等待队列中的线程会按照从头至尾的顺序依次再去尝试获取锁执行。 当线程获取锁后如果还需要等待特定的条件才能执行,那么线程就加入到条件队列排队,当等待的条件到来时再从条件队列中按照从头至尾的顺序加入到等待队列中,然后再按照等待队列的执行流程去获取锁。 所以AQS最核心的数据结构其实就两个队列,等待队列和条件队列,然后再加上一个获取锁的同步状态。 AQS数据结构 AQS最核心的数据结构就三个 等待队列 源码中head和tail为等待队列的头尾节点,在通过前后指向则构成了等待队列,为双向链表,学名为CLH队列。 条件队列 ConditionObject中的firstWaiter和lastWaiter为等待队列的头尾节点

SCCM 软件更新点日志

瘦欲@ 提交于 2020-08-07 09:33:01
SCCM软件更新点 顶级站点上的同步: 软件更新同步开始,WSUS同步管理器向运行在软件更新点上的WSUS发送请求以开始与Microsoft同步。软件更新元数据从Microsoft同步并且数据存储在WSUS数据库中。当WSUS完成同步时,WSUS同步管理器进行同步该软件会将元数据更新到SCCM数据库。该软件更新存储在SCCM数据库中的元数据作为配置项。 通过数据库复制将软件更新配置项发送到子站点。同步成功完成后,WSUS同步管理器将在Windows应用程序日志里创建状态消息ID6702,WSUS同步管理器将同步请求发送到所有子站点。 子站点和辅助站点上的同步: 父站点的软件更新配置项通过子站点上的数据库复制进行同步,在顶级站点成功同步结束时,顶级站点向子站点发送同步请求,然后子站点开始同步。在子站点上的软件更新点上运行的WSUS从在父站点上的软件更新点上运行的WSUS同步软件更新元数据。同步成功完成后,WSUS同步管理器将创建状态消息ID 6702。 如果未正确配置以下之一,则会发生同步错误: 在远程服务器上安装了活动软件更新点后,需要在站点服务器(CAS管理中心站点或PRI主站点)上安装WSUS管理控制台 在IIS中为软件更新点和WSUS网站配置的端口设置必须相同。 该计算机和管理员帐户必须能够从站点服务器访问IIS中WSUS站点下的虚拟目录。

天翼杯2020_wp_by_LQers

扶醉桌前 提交于 2020-08-07 06:39:58
misc 签到 curl -H "Range: bytes=6291450000-" --output /dev/stdout http://das.wetolink.com:8941/6GTest.file flag{51a295f02d6f591b49fb0fa9d9003c9b} strange number crypto easyRSA 先找出e,再穷举flag。 hardRSA 题目脚本: 从题目看也是Coppersmith partial d的情况,只是这里由于$n$由$p、q、r$三个素数组成,因此需要我们重新推导同余方程 已知:$kbits = 540$、$p$、$qr$、$d_0$的值,$d_0 = d \mod 2^{kbits}$ 推导如下: 通过上式可以求得所有的$s \mod 2^{kbits}$的值,同时我们知道 联立公式$1 \times q$和公式$2 \times k(p-1)$,可以得到公式 $$ed_0q = q + kq(p-1)(qr-s+1) \tag{3}$$ $$k(p-1)qr = kq(p-1)(s-q) \tag{4}$$ 相加得到: $$ed_0q + k(p-1)qr = q+kq(p-1)(qr-q+1)$$ 即: $$ed_0q + k(p-1)qr-k(p-1)q(qr-q+1) = q \mod 2^{kbits}$

Cas客户端源码解析

余生长醉 提交于 2020-08-07 06:20:49
Cas客户端的调用流程主要有几个过滤器实现: casSingleSignOutFilter casValidationFilter casAuthenticationFilter casHttpServletRequestWrapperFilter casAssertionThreadLocalFilter 这5个过滤器的调用顺序之上而下依次执行,只有这几个过滤器执行完毕后,才会进入自己的过滤器中。 SingleSignOutFilter 1. 拦截登录请求,通过有无ticket(url参数)参数判断,即登录后回来的第一步。如果有ticket,则创建session,并且记录session和ticket的一对一关系,此后将不会有ticket参数; 2. 拦截登出请求,根据服务端传过来的ticket参数,找到对应的session,销毁session; 源码如下: public boolean process(HttpServletRequest request, HttpServletResponse response) { if (this.isTokenRequest(request)) { this.logger.trace("Received a token request"); // 将cookie和session建立对应关系 this.recordSession

一文读懂JAVA多线程

为君一笑 提交于 2020-08-07 03:40:43
一文读懂JAVA多线程 背景渊源 摩尔定律 提到多线程好多书上都会提到摩尔定律,它是由英特尔创始人之一Gordon Moore提出来的。其内容为:当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。换言之,每一美元所能买到的电脑性能,将每隔18-24个月翻一倍以上。这一定律揭示了信息技术进步的速度。 可是从2003年开始CPU主频已经不再翻倍,而是采用多核,而不是更快的主频。摩尔定律失效。那主频不再提高,核数增加的情况下要想让程序更快就要用到并行或并发编程。 并行与并发 如果CPU主频增加程序不用做任何改动就能变快。但核多的话程序不做改动不一定会变快。 CPU厂商生产更多的核的CPU是可以的,一百多核也是没有问题的,但是软件还没有准备好,不能更好的利用,所以没有生产太多核的CPU。随着多核时代的来临,软件开发越来越关注并行编程的领域。但要写一个真正并行的程序并不容易。 并行和并发的目标都是最大化CPU的使用率,并发可以认为是一种程序的逻辑结构的设计模式。可以用并发的设计方式去设计模型,然后运行在一个单核的系统上。可以将这种模型不加修改的运行在多核系统上,实现真正的并行,并行是程序执行的一种属性真正的同时执行,其重点的是充分利用CPU的多个核心。 多线程开发的时候会有一些问题,比如安全性问题,一致性问题等,重排序问题

CountDownLatch、Semaphore、CyclicBarrier、Condition源码分析

和自甴很熟 提交于 2020-08-07 01:46:49
一、CountDownLatch 1.1 定义 它是一个同步辅助类,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。一个倒数计算的概念。 初始化给定一定的整数参数值,然后通过countDown()来实现倒数功能,在这个整数倒数到 0 之前,调用了 await() 方法的程序都必须要等待,当到达0后, 释放所有等待线程。 1.2 源码分析 对于 CountDownLatch,我们仅仅需要关心两个方法,一个是 countDown () 方法,另一个是 await () 方法。 1.2.1 countDown() CountDownLatch有一个同步内部类 Sync : 它使用AQS状态表示计数,实现同步控制。 /** * Synchronization control For CountDownLatch. * Uses AQS state to represent count. */ private static final class Sync extends AbstractQueuedSynchronizer { private static final long serialVersionUID = 4982264981922014374L; Sync(int count) { setState(count); } int getCount() { return

史上最全单例模式的写法以及破坏单例方式

穿精又带淫゛_ 提交于 2020-08-06 13:47:01
今天跟大家讲一个老生常谈的话题,单例模式是最常用到的设计模式之一,熟悉设计模式的朋友对单例模式都不会陌生。网上的文章也很多,但是参差不齐,良莠不齐,要么说的不到点子上,要么写的不完整,我试图写一篇史上最全单例模式,让你看一篇文章就够了。 单例模式定义及应用场景 单例模式是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式是创建型模式。许多时候整个系统只需要拥有一个全局对象,这样有利于我们协调系统整体的行为。 比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。 我们写单例的思路是,隐藏其所有构造方法,提供一个全局访问点。 1、饿汉式 这个很简单,小伙们都写过,这个在类加载的时候就立即初始化,因为他很饿嘛,一开始就给你创建一个对象,这个是绝对线程安全的,在线程还没出现以前就实例化了,不可能存在访问安全问题。他的缺点是如果不用,用不着,我都占着空间,造成内存浪费。 public class HungrySingleton { private static final HungrySingleton hungrySingleton = new HungrySingleton(); private

远程关键数据定期备份

半腔热情 提交于 2020-08-06 13:39:29
远程数据备份和恢复历来分散的原因有两个:移动大量的数据到集中的位置的高额成本,以及远程恢复时缓慢的访问时间。带宽成本高昂,而且在许多远程站点,甚至提供足够的可用性也是夸张的。使问题复杂化的是,传统的备份是批量化的行为,涉及在有限的时间内移动大量的数据。用以支持这种跨越广域网活动的额外的带宽需要证明是不可能的。还有恢复的问题:通过一个小管道备份是痛苦的,恢复数据卷可能是极其痛苦的。 因此,企业往往按照“迷你数据中心”模式实施ROBO备份,每个地点配置自己的备份服务器和磁带驱动器或小型带库。有人在远程办公室定期插入和移走磁带,并且幸运的是,磁带不定期会送到一个外部地点。不同站点的数据保护质量和一致性有着显著的不同。 远程办公室备份技术 对于远程备份,一些技术已经逐渐发展,并导致备份模式的转换和新的可供选择的方案。这些变化包括从改进传统的远程备份模式,到消除远程备份的需要,可能甚至远程服务器和存储。这些包括: 磁盘: 和一般而言的备份一样,低成本,高容量基于磁盘的备份已经成为提升远程保护的主要推动者。使用磁盘能够减少磁带固有的停-起情况、,对可靠性的担心,以及顺序的工作调度和资源管理约束。这些问题使本地远程备份特别痛苦。但是记住磁带的两个优势很重要——低单位储存成本和可运输性——可能成为最主要的因素。 数据复制: 有限的备份运作能力和把数据移动到其它站点的需要

一文为你理清Java中的各种锁

岁酱吖の 提交于 2020-08-06 13:34:27
Java中的锁的概念挺多,从思想的角度,分为各种锁。下面让我们来分别认识一下他们。 可重入锁、不可重入锁 我们一般用的都是可重入锁。可重入锁指的是当一个线程获取到一个锁后,如果再次获取这个锁的话,依然可以获取到。 而不可重入锁,指的是当一个线程获取到一个锁后,如果再次获取这个锁的话,就不能再获取到了。不可重入锁会导致死锁,所以我们一般是不会使用不可重入锁的。 公平锁、非公平锁 AQS框架可以实现公平锁和非公平锁。AQS框架中包含三个主要元素,一个是状态status,用来表示表示锁是否被占用;另一个是当前线程;最后一个是队列,用来保存被阻塞的线程。 如果用来保存被阻塞线程的队列是按顺序获取锁的,队首线程先获取锁,那么这就是公平锁,每个线程都能够按照进入队列的顺序获取到锁。 如果用来保存被阻塞线程的队列不是按照顺序来获取锁的,而是大家一起竞争锁,那么就是非公平锁,这样可能会导致某些线程一直获取不到锁而被饿死。 非公平锁原理 线程A进入AQS后,发现state=0,则采用CAS方式更改state=1,并设置自己为当前线程。 线程B进入AQS后,发现state=1,没有办法修改,只能去队列排队了。 线程A执行完成,将state设为0,抹掉自己的痕迹,唤醒线程B。 线程C进入AQS,发现state=0,果断CAS为1,将自己设为加锁线程。线程 B醒来后发现state=1了,只能继续排队。