CAS

Cas no attributes come to client

蹲街弑〆低调 提交于 2021-02-10 09:34:46
问题 i am building SSO application with CAS. in spring client, no attributes came with CasAssertionAuthenticationToken . there are lots of samples on net, they seems to have no problem with this ( is something obvious missing?) for cas server, its all default configuration except i changed registered service default to make sure that is not the problem. this part look like this: <bean class="org.jasig.cas.services.RegexRegisteredService"> <property name="id" value="1"/> <property name="name" value

Cas no attributes come to client

≯℡__Kan透↙ 提交于 2021-02-10 09:34:25
问题 i am building SSO application with CAS. in spring client, no attributes came with CasAssertionAuthenticationToken . there are lots of samples on net, they seems to have no problem with this ( is something obvious missing?) for cas server, its all default configuration except i changed registered service default to make sure that is not the problem. this part look like this: <bean class="org.jasig.cas.services.RegexRegisteredService"> <property name="id" value="1"/> <property name="name" value

Godiag GT100 + CAS4测试平台密钥同步测试

£可爱£侵袭症+ 提交于 2021-02-07 12:35:29
今天,我们要使用 Godiag GT100 和Godiag CAS4测试平台进行钥匙同步测试。 步骤如下: 1.连接Godiag GT100,Godiag CAS4测试平台,CAS4模块和电源。 2.打开Godiag GT100的电源按钮。 3.将密钥放入Godiag CAS4测试平台。然后GODIAG GT100 CANL和CANH指示灯将闪烁并发送数据。 4.现在,GT100 CANL和CANH指示灯熄灭。原因是我们还没打开Godiag CAS4测试平台的“Start”按钮。 4.现在,打开CAS4 Test Platform的“开始”按钮,GODIAG GT100 CANL和CANH指示灯将闪烁并发送数据。 5.关闭CAS4 Test Platform的“Start”按钮,GODIAG GT100 CANL和CANH指示灯仍然闪烁,并且还在发送数据。 6.再次按下CAS4 Test Platform的“Start”按钮。等待约15秒钟后,GODIAG GT100 CANL和CANH指示灯将熄灭。 7.从GODIAG CAS4测试平台上拔下钥匙,然后将再次发送数据,并且GODIAG GT100 CANL和CANH指示灯将闪烁,这意味着钥匙和CAS4模块已同步。 8.当密钥和CAS4模块不同步时,如果将密钥放入GODIAG CAS4测试平台,则GODIAG GT100

Strange behavior in sun.misc.Unsafe.compareAndSwap measurement via JMH

徘徊边缘 提交于 2021-02-07 07:37:34
问题 I've decided to measure incrementation with different locking strategies and using JMH for this purpose. I'm using JMH for checking throughput and average time as well as simple custom test for checking correctness. There are six strategies: Atomic count ReadWrite locking count Synchronizing with volatile Synchronizing block without volatile sun.misc.Unsafe.compareAndSwap sun.misc.Unsafe.getAndAdd Unsynchronizing count Benchmark code: @State(Scope.Benchmark) @BenchmarkMode({Mode.Throughput,

2年java,蚂蚁一面,卒

喜你入骨 提交于 2021-02-06 08:40:14
作为程序员,我也希望做一枚运营狗。可惜并没多少时间,所以每到过节都发水文。端午快乐。 本文原于掘金试水,加个反差的标题,与预期一致,我也明白了为什么某些公众号质量和流行度相悖。事实就是这样,价值大的文章,都是那么小众。反而是这种初级的随手写的小东西,更加受欢迎。但这种文章如果你喜欢,我会觉得特别悲伤。 因为, 你正在为了面试而迎合面试官,而不是为了工作而汲取知识 。 正文如下,如有雷同,纯属巧合。 其实我一个都没答上来。并不是因为我笨,是因为我不会。在大佬的帮助下,现在我会了,求求你再给我一个机会。 TreeSet/HashSet 区别 顾名思义,首先是结构上的不同 1、TreeSet背后的结构是TreeMap,也就是红黑树,能够实现自动排序。它通过equals方法或者compareTo方法进行内容的比较。 2、HashSet背后是HashMap,key是无序的,只能做外部排序。既然是Hash,那么就要重写其中对象的hashCode和equals方法 另外,还有个细微的差别可以拿来装b: 1、HashSet可以接受null值,有且只有一个 2、TreeSet默认不可以接受null值,会直接抛出空指针异常 set里没有重复数据,treeSet里连虚无都没有。 HashMap 如何解决冲突,扩容机制 烂大街的问题,问哪答哪吧。这样的东西就是靠背。 HashMap的内部结构其实是数组

Redis简单使用

我与影子孤独终老i 提交于 2021-02-05 16:41:27
Redis 知识点 redis的全称为远程字典服务器 Redis中文网 中Redis的介绍: Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings) , 散列(hashes) , 列表(lists) , 集合(sets) , 有序集合(sorted sets) 与范围查询, bitmaps , hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication) , LUA脚本(Lua scripting) , LRU驱动事件(LRU eviction) , 事务(transactions) 和不同级别的 磁盘持久化(persistence) , 并通过 Redis哨兵(Sentinel) 和自动 分区(Cluster) 提供高可用性(high availability)。 1. 为什么使用Redis redis是一种内存字典,访问速度远快于访问磁盘 随着文件变大,一个data page默认4k,这意味着在没有一个类似B+树的索引时查找一个大文件中的磁盘数据需要的寻址时间变长 随着访问量增加和需要取出的数据量变大磁盘I/O变大,而磁盘带宽有限 关系型数据库必须给出schema类型(字节宽度)以利于存储

Java游戏服务器4

独自空忆成欢 提交于 2021-02-05 10:09:02
1)消息识别器: 根据消息号,创建一个Builder。 2)javassist:动态修改字节码。==》用于ormtest 原生反射很慢,那我可以用javaassist来加速 3)一些框架没有实现类,是怎么实现出来的。 4)多线程与IO 5)先讲解移动。 攻击的话,就是涉及到多线程的问题。 6)A和B同时攻击C时,A和B 分别在自己的线程,因此有并发访问安全的问题。 7)多个线程操作同一份数据,数据不一致的问题。解决方案 (1)加锁 synchronized: 一个减血的函数暂时没有问题: 执行效率不高甚至都不是关键的。 但是如果有别的函数呢? attkUser(User user); 这种带来了死锁。 互砍造成了死锁!!! jps ==》 得到进程及其对应的pid,,如自己Server的pid。 jstack 7996 ==》得到死锁信息。 数据不一致,和死锁。 减少锁的粒度,可以减少死锁(并非避免死锁)。 但是开发困难,与业务逻辑重合了。 (2)脏读:多线程操作同一份数据,脏读。 volatile也不行。它只保证2个线程是可见的。 不能是原子的。 (3)atomic: 单个操作,能保证线程安全,用cas原语保证,但是十分臃肿! 道具的id,任务的状态。。。对象太大,太臃肿的。 但是,同时操作a和b,则依然是数据不一致的问题。 来源: oschina 链接: https://my

Cannot resolve 'setCasServerUrlPrefix' in 'SingleSignOutFilter'

ぐ巨炮叔叔 提交于 2021-02-05 08:50:54
问题 After a recent upgrade of a Spring Boot application that relies on CAS for authentication, the project no longer compiles due to the fact that the setCasServerUrlPrefix method can't be found on SingleSignOutFilter : java: cannot find symbol symbol: method setCasServerUrlPrefix(java.lang.String) location: variable singleSignOutFilter of type org.jasig.cas.client.session.SingleSignOutFilter The involved code is: @Bean public SingleSignOutFilter singleSignOutFilter() { SingleSignOutFilter

高并发情况下使用乐观锁保证系统稳定性和幂等性

喜你入骨 提交于 2021-02-04 09:40:37
加粗样式 ## 高并发情况下使用乐观锁保证系统稳定性和幂等性 今天我们会介绍在高并发的情况下,保证系统稳定性和幂等性的同时如何最大化系统效率 我们可以先想想这个场景,现在我们在维护一个学生管理系统,系统内的数据库储存了所有学生的信息。这一天新来了一位同学小明,学生管理员小红和小刚把小明的个人信息插入到数据库中,碰巧小红和小刚同时点击了提交按钮。 这样一来数据库中会有两条小明的信息,不符合预期。 解决方案 方案一 第一种解决方案就是向数据库中加入唯一索引 CREATE UNIQUE INDEX student_id_unique ON Students ( studentId ) ; 这样一来有效的解决了上诉问题,当第二条数据被插入库中时会被拒绝。 可是请求不为Insert而是Update呢?单单加入唯一索引并不能保证幂等性。 方案二 我们可以利用InnerDB自带的数据库隔离机制来解决问题,隔离级别有Read Uncommitted, Read Committed, Read Repeatable, 和 Serializable。这四个级别可以逐个解决脏写、脏读、不可重复读、幻读这几类问题。有关此类详细说明的文章网上有很多,这里就不一一介绍了。 在这里只有Serializable可以帮助我们解决问题,通过序列化强制隔离不同事物,让事物只能一个一个的去运行。

Java并发包异步执行器CompletableFuture

て烟熏妆下的殇ゞ 提交于 2021-02-04 06:32:38
前言 CompletableFuture是对Future的一种强有力的扩展,Future只能通过轮询isDone()方法或者调用get()阻塞等待获取一个异步任务的结果,才能继续执行下一步,当我们执行的异步任务很多,而且相互之前还要依赖结果的时候,可能会创建很多这样的Future,并通过get或者轮询等待执行结果返回之后继续执行,这样的代码显得很不方便而且也不高效。 通过前面的CompletionStage接口给我们提供了一系列将多个阶段(甚至是异步的)的结果相互关联执行的方法,如果把它和Future结合起来,那么可将这种便利与高效编程方式用于异步任务的执行。CompletableFuture就是这样的一个类,同时继承了CompletionStage和Future,可以帮助我们简化异步编程的复杂性,并且提供了函数式编程的能力,可以通过lambda表达式的风格处理各个执行阶段的结果。 实现 CompletableFuture通过以下策略实现了接口CompletionStage: 依赖的非异步阶段提供的操作可以由完成当前CompletableFuture的线程执行,也可以由完成方法的任何其他调用者执行。 所有没有显式指定Executor参数的异步方法都使用ForkJoinPool.commonPool执行(除非它不支持至少两个并行级别,否则将创建一个新线程来运行每个任务).为了简化监视