我是祖国的花朵:关于分布式锁,为了使得加锁操作具有原子性,不可以使用多条命令来完成,我们可以使用带多个参数的set命令来完成,如下所示:jedis.set(String key, String value, String nxxx, String expx, int time)
第一个为key,我们使用key来当锁,因为key是唯一的。
第二个为value,我们传的是requestId,通过给value赋值为requestId,我们就知道这把锁是哪个请求加的了,在解锁的时候就可以有依据。
第三个为nxxx,这个参数我们填的是NX,意思是SET IF NOT EXIST,即当key不存在时,我们进行set操作;若key已经存在,则不做任何操作;
第四个为expx,这个参数我们传的是PX,意思是我们要给这个key加一个过期的设置,具体时间由第五个参数决定。
第五个为time,与第四个参数相呼应,代表key的过期时间。
0 点赞 评论 收藏
分享
永不放弃shh:笔记: java有两种对象:实例对象和Class对象。每个类的运行时的类型信息就是用Class对象表示的。它包含了与类有关的信息。实例对象就通过Class对象来创建的。 有三种获得Class对象的方式: Class.forName(“类的全限定名”) 实例对象.getClass() 类名.class (类字面常量)
0 点赞 评论 收藏
分享
Ruoji55555:垃圾收集器总结: 最初使用Serial+Serial Old收集垃圾,最简单,两者都是单线程的,所以只适合少内存使用。 随着内存增大,开始使用Parallel Scavenge +Parallel Old , 这两个其实就是前面两个Serial的多线程版本,性能更好一点,在JDK1.6-1.8中作为默认垃圾回收器。 随着内存进一步增大,出现了ParNew+CMS的组合,其中ParNew是Parallel Scavenge为了配合CMS出现的改进版本,CMS是并发标记清除。看似性能更好,实则存在巨大的缺陷:CMS会导致大量的内存碎片, 而内存碎片太多的时候,会使用Serial Old这个单线程的收集器进行垃圾收集(雾).... 从JDK1.7之后出现了G1垃圾收集器,在JDK1.8之后开始完善,它支持更大的内存(大概几百G),特点是逻辑分代,物理不分代,它的stop-the-world时间可以小于200ms。还有一个在JDK11中推出的垃圾回收器ZGC,还正在开发,它的逻辑、物理都不分代,而且能支持16T的内存,传说停顿时间只有1ms(***C++!)
0 点赞 评论 收藏
分享
Joe_Hu:对于最后的问题我的一些理解: Collection是一个集合的顶层接口,Collections是进行集合操作的工具类, Array是数组这个对象的类,Arrays是进行数组操作的工具类 Executor是线程池的接口,Executors是进行线程池相关的操作的工具类
0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享
性别男:(1)抽象类是一个类,只能被继承,一次只能继承一个抽象类。而接口可以被一次实现多个。<br />
(2)抽象类可以有构造方法,接口没有。但是这两个都不能有自己的实例对象。<br />
(3)抽象类的修饰符可以是public、private、protect、默认,但接口只能是public(JDK8后添加了关键字default,但这个default不等同于抽象类的默认)。<br />
(4)抽象类中可以有抽象方法也可以没有抽象方法。接口中的方法都是没有方法体的。(JDK1.8后增加了default和static关键字可以在接口中写方法体)<br />
<div>
<br />
</div>
0 点赞 评论 收藏
分享
0 点赞 评论 收藏
分享
创作者周榜
更多
关注他的用户也关注了: