摘要:AQS 和 ReentrantLock 1、公平锁和非公平锁 (1)定义 公平锁:在竞争环境下,先到临界区的线程比后到的线程一定更快的获取得到锁; 非公平锁:在竞争环境下,先到临界区的线程未必比后到的线程更快地获取得到锁; (2)实现 公平锁:将竞争的线程放进一个先进先出的队列中,只有持有锁的线程执
阅读全文
摘要:synchronized 1、定义: synchronized:是一种互斥锁,一次只能允许一个线程进入被锁住的代码块; 2、场景: (1)修饰实例方法,对应锁是对象实例 (2)修饰对象方法,对应锁是当前类的class实例 (3)修饰代码块,对应锁是传入synchronized的对象实例 3、原理:
阅读全文
摘要:CAS (compare and swap) 翻译过来是比较并交换,但他是一个原子性操作。cpu指令为 cmpxchg CAS CAS 有三个操作数:当前值A、内存值V、要修改的新值B 假设 当前值A 跟 内存值V 相等,那就将 内存值V 改成B 假设 当前值A 跟 内存值V 不相等,要么就重试,要
阅读全文
摘要:Redis 过期策略 对 key 设置有效期,redis 的删除策略: 定期删除+惰性删除。 定期删除指的是 redis 默认每 100ms 就随机抽取一些设置了过期事件的 key ,检查是否过期,如果过期就删除。如果 redis 设置了 10 万个 key 都设置了过期时间,每隔几百毫秒就要检查
阅读全文
摘要:1、redis速度快: (1)基于内存操作:纯内存操作,内存本身就很快 (2)单线程:Redis服务器核心是基于非阻塞的IO多路复用机制,单线程避免了多线程的频繁上下文切换问题 (3)使用了高效的数据结构,例如哈希表和跳表; 2、 如果不做其他操作,redis重启则会丢失数据,故提供持久化机制,RD
阅读全文
摘要:结构特点List是存储单列数据的集合,Map是存储键值对这样的双列数据的集合; List中存储的数据是有顺序的,并且值允许重复;Map中存储的数据是无序的,它的键是不允许重复的,但是值是允许重复的。 实现类 1、List接口有三个实现类: 1.1 LinkedList 基于链表实现,链表内存是散列的
阅读全文
摘要:1、异常发生的原因 通常包含以下几大类: 用户输入了非法数据。 要打开的文件不存在。 网络通信时连接中断,或者JVM内存溢出。 2、三种常见异常类型 检查性异常:最具代表的检查性异常是用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被
阅读全文
摘要:1、接口与类相似点: 一个接口可以有多个方法。 接口文件保存在 .java 结尾的文件中,文件名使用接口名。 接口的字节码文件保存在 .class 结尾的文件中。 接口相应的字节码文件必须在与包名称相匹配的目录结构中。 2、接口与类的区别: 接口不能用于实例化对象。 接口没有构造方法。 接口中所有的
阅读全文
摘要:1、封装的优点 良好的封装能够减少耦合。 类内部的结构可以自由修改。 可以对成员变量进行更精确的控制。 隐藏信息,实现细节。 2、实现Java封装的步骤 修改属性的可见性来限制对属性的访问(一般限制为private),例如: public class Person { private String
阅读全文
摘要:1、泛型方法 你可以写一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。 下面是定义泛型方法的规则: 所有泛型方法声明都有一个类型参数声明部分(由尖括号分隔),该类型参数声明部分在方法返回类型之前(在下面例子中的<E>)。 每一个类型参
阅读全文
摘要: SELECT alarm_name as alarmName, alarm_time as alarmTime, alarm_main_level as alarmLevel, device_name as deviceName, ent_name as entName FROM t_devic
阅读全文
摘要:1、并发编程三要素 (1)原子性:一个或者多个操作,在执行过程中不能被打断;或者全部不执行; (2)可见性:多线程共享变量时,变量修改后,其他线程可以立即看到 (3)有序性:执行顺序为代码中的顺序 2、实现可见性的方法有哪些? lock || synchronized:同一时刻只有一个线程能够获取锁
阅读全文