摘要:
分布式锁的三种实现方式: 1、基于数据库:1)利用唯一索引约束;2)利用数据库自带排他锁 2、基于缓存:利用setnx()返回值 3、基于ZooKeeper:1)利用ZooKeeper同一个目录下只能有一个唯一文件名;2)利用ZooKeeper分布式锁客户端Curator 注:需要考虑的因素:单点、 阅读全文
摘要:
一、Synchronized synchronized中文解释是同步,那么什么是同步呢,解释就是程序中用于控制不同线程间操作发生相对顺序的机制,通俗来讲就是2点,第一要有多线程,第二当多个线程同时竞争某个资源的时候会有先后顺序。在java中有三种写synchronized的方式: 第一种:写在普通方 阅读全文
摘要:
是什么? 自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。 为什么 把一个基本类型包装成一个类,这样就可以使这个类型具有很多可以调用的方法。而且Java向面像对象语言的靠 阅读全文
摘要:
在多线程中,提到线程安全、线程同步,我们经常会想到两个关键字:volatile和synchronized,那么这两者有什么区别呢? 1. volatile修饰的变量具有可见性 volatile是变量修饰符,其修饰的变量具有可见性。 可见性也就是说一旦某个线程修改了该被volatile修饰的变量,它会 阅读全文
摘要:
本文我们一起讨论Java类的加载、链接和初始化。 Java字节代码的表现形式是字节数组(byte[]),而Java类在JVM中的表现形式是 java.lang.Class类 的对象。一个Java类从字节代码到能够在JVM中被使用,需要经过加载、链接和初始化这三个步骤。这三个步骤中,对开发人员直接可见 阅读全文
摘要:
一、相同点 都是用来进行值或对象的比较。 二、不同点 对于“==”而言,对于基本类型(char,byte,short,int,long,float,double,boolean),对比的是值,所以是相等的,对于引用对象,对比的是引用的对象的堆地址,例如: 注意对于包装类例如Integer而言,有一些 阅读全文
摘要:
开发高性能并发应用不是一件容易的事情。这类应用的例子包括高性能Web服务器、游戏服务器和搜索引擎爬虫等。这样的应用可能需要同时处理成千上万个请求。对于这样的应用,一般采用多线程或事件驱动的 架构 。对于Java来说,在语言内部提供了线程的支持。但是Java的多线程应用开发会遇到很多问题。首先是很难编 阅读全文
摘要:
1. 什么是抽象类 在面向对象编程中,我们通过类来描述事物,这个描述可以是抽象的,因为不可能通过类描述所有的属性和行为,可能同一类事物的不同个体有着行为上的差异。例如我们想用一个类描述鸟的所有基本属性和行为,而所有的鸟都继承自这个类,我们可以把它称为基类。而鸟的叫声是有差异的,我们很难在基类中定义鸟 阅读全文