5 dredh

尚未进行身份认证

在校大学生,目前正在学习当中

等级
TA的排名 44w+

Redis结合AQS实现Java版的可重入分布式锁

前言对于java的单进程应用来说,存在资源竞争的场景可以使用synchronized关键字和Lock来对资源进行加锁,使整个操作具有原子性。但是对于多进程或者分布式的应用来说,上面提到的锁不共享,做不到互相通讯,所以就需要分布式锁来解决问题了。废话不多说,直接进入正题,下面结合AQS和Redis来实现分布式锁。代码中大部分都是参考ReentrantLock来实现的,所以读者可以先去了解

2018-01-30 15:37:43

初始化与清理(3)

初始化当类的成员变量没有指定初始化值时,在实例化时会初始化一个默认的值,而方法的局部变量一定要进行初始化,否则编译器会报错。初始化顺序静态数据初始化非静态数据初始化构造器初始化当对多种初始化方式对同一个变量进行了初始化,该变量的值会被覆盖,例如一个非静态成员变量会首先被初始化为一个默认值,当构造器再对其初始化时,就会覆盖掉原来的默认值。publicclassMaker{//

2016-03-31 16:29:40

初始化与清理(2)

垃圾回收器如何工作引用计数引用计数是一种简单但速度很慢的垃圾回收计数。每个对象都含有一个引用计数器,当有一个引用连接至对象时,引用加1,当引用离开作用域或被置为null时,引用减1。当对象的引用变成0的时候,这个对象会被回收。但是这种方法有个缺陷,就是当两个对象互相引用,而且这个对象都不再需要的时候,两个对象都应该被回收,但是因为互相持有引用,所以引用计数不为0,导致它们都不能被回收停止-

2016-03-30 19:13:44

Centos系统下docker的安装与卸载

Docker简介Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。百度百科前提首先,你的

2016-03-04 09:57:06

初始化与清理(1)

用构造器确保初始化构造器的名称必须与类名完全相同。类的构造器相当于一个创建对象时执行的方法,当不写构造器的时候,会默认为类提供一个无参构造器。当写了一个有参数的构造器的时候,无参构造器便不会默认提供了,如果有需要的话,还是要再写。classRock{//无参构造器Rock(){}//有参数构造方法Rock(Stringstr){//这相当

2016-02-25 22:32:31

操作符

在最底层,Java中的数据是通过使用操作符来操作的。赋值运算符=在Java中,基本类型的赋值会改变被赋值变量的值,但是对对象的赋值改变的是引用classTank{intlevel;}publicclassAssignment{publicstaticvoidmain(String[]args){Tankt1=newTank(

2016-02-22 20:21:42

创建新的数据类型:类

类是对对象的抽象,好比猫狗都属于动物类,对象是类的一个实例。在Java中类是一种数据类型,用class关键字定义。字段和方法字段是类关联的一个成员,好比动物有体重、身高,这些就是动物的字段方法就是类的一个动作,好比动物可以吃东西,吃东西就是动物类拥有的一个方法方法的构成包括:名称、参数、返回值和方法体。ReturnTypemethodName(/*Argumentlist*/)

2016-02-22 15:09:44

Java编程思想初学

一切都是对象用引用操纵对象一切都可以视为是对象,但是对象要如何操纵呢?首先要创建一个对象的一个引用:Strings;这时创建的只是引用,并不是对象,默认值为null,此时如果去操纵这个对象,将会发生错误。因此需要进行初始化。Strings="thisisastring.";上面的代码新建了一个String对象,并把它与s进行了关联。创建对象创建对象,通常用new关键字实现Strin

2016-02-21 00:08:06
勋章 我的勋章
    暂无奖章