本地部署CAS基础服务(以Windows为例)
一、CAS服务的下载 CAS可以通过两种方式来下载。第一种方式是使用cas overlay template模板自行构建,这种方式适合需要在官方cas的基础上进行二次开发的情况;第二种方式是导入已经构建好的war包,适用于需要快速部署,不需要定制化开发的情况。以下是下载方式: CAS Overlay Template:CAS Overlay Tem…
使用RestTemplate作为代理转发Http请求
RestTemplate是Spring提供的一个模板类,用于发送Http网络请求。利用它制作一个方向代理,可以使用RestTemplate的exchange方法来实现。具体分为以下几个步骤: 一、创建RestTemplate实例 创建RestTemplate实例直接new就行了,重要的是RestTemplate的配置。考虑到Http请求可能获取多种…
Zookeeper初探
Zookeeper概述 在分布式系统之中,集群各个机器的协同工作是一个比较难解决的点。对此ZooKeeper应运而生,开发者可以通过ZooKeeper来实现一些分布式一致性服务。同样的,Zookeeper也可以是一个集群,但是ZooKeeper集群之中的细节可以被很好的隐藏。这样说会有些抽象,可以用示意图简单地描述ZooKeeper的集群架构,其示…
Redisson分布式锁的原理
一个合格的分布式锁需要满足可重入、可重试、超时续约、主从一致性。而Redisson是一个基于Redis的分布式锁库,其满足了上述的条件。实现方式具体如下: 可重入:使用Redis的Hash结构,记录线程的ID以及可重入的次数 可重试:利用信号量和PubSub功能实现等待、唤醒、获取锁失败的重试机制 超时续约:使用watchDog,每隔一段时间就重置…
使用RedisTemplate执行LUA脚本发生IllegalStateException的解决方案
今天在使用LUA脚本解决Redis全局分布式锁的原子性,当调用lua脚本释放锁的时候,程序报出IllegalStateException异常。一开始以为是LUA脚本的问题,仔细检查之后并未发现问题。对此百思不得其解。 直到看到了一个博文,其中提到可能是返回值类型设定的问题。先来看一下最初的静态代码块中的初始化代码: static { UNLOCK_…
编译原理复习
第四章 语法分析器的功能 分析出单词符号串的基础上,程序的语法结构是否符合语法规则。 按文法的产生式识别输入的符号串是否为一个句子。 自上而下分析面临的问题 带回溯的分析,如果有左递归可能会无限循环,效率低,虚假匹配的问题,难以知道出错的位置。 LL(1)文法 左递归的消除 直接左递归 间接左递归 例子 消除回溯,提左公因子 LL(1)分析的思想 …
操作系统复习-零碎总结
调度算法 进程和作业调度算法 先来先服务(FCFS) 短作业优先(SJF) 高响应比优先(HRRN) 轮转调度算法(RR) 页面置换算法 最佳页面置换算法(OPT) 先进先出页面置换算法(FIFO) 最近最久未使用置换算法(LRU) 最少使用页面置换算法(LFU) 磁盘调度算法 FCFS SSTF SCAN CSCAN 二级页表 某计算机系统按字节…
操作系统复习-磁盘存储器管理
磁盘存储器管理 外存的组织方式 连续组织方式 链接组织方式 索引组织方式 连续组织方式 会出现外部碎片,只有这一种方式文件不能动态增长 主要优点 顺序访问容易 顺序访问速度快 主要缺点 会产生许多外部碎片 必须事先知道文件的长度 不能灵活的插入和删除记录 无法满足文件动态增长的需求 链接组织方式 隐式组织方式 文件目录的目录项中存储着指向链接文件的…
操作系统复习-文件管理
文件管理 文件和文件系统 文件时具有文件名的若干相关元素的集合。元素通常是记录,记录又是一组有意义的数据项集合。 文件、记录和数据项 数据项 基本数据项:用于描述一个对象的某种属性的集合,是数据组织中可以命名的最小逻辑数据单位,又称为字段。 组合数据项:是由若干个基本数据项所组成 记录 一组相关的数据项的集合 文件 文件有有结构文件和无结构文件两类…
操作系统复习-输入/输出系统
输入/输出系统 I/O系统的功能,模型与接口 I/O系统的基本功能 I/O系统的模型 I/O设备和设备控制器 I/O设备 设备的类型 按使用特征分类:(1)存储设备;(2)I/O设备。 按传输速率分类:(1)低速设备;(2)中速设备;(3)高速设备。  设备与设备之间的接口 设备控制器 基本功能 接受和识别命令 数据交换 标志和报告设备的状态 地址…