摘要:
一、什么是注解 了解什么是注解? Annotation Annotation是从JDK5.0 开始引入的技术 注解的作用: 可以对程序做出解释 (类似于平时写的注释) 可以被其他程序读取(如:编译器等) 注解的格式: 以 @[注释名] 的形式在代码中存在,并且还可以添加一些参数 e.g. @Supp 阅读全文
摘要:
三、Lock锁 (重点) 传统 Synchronized 相当于排队,队列 耦合性: 判断代码模块构成质量的属性,不影响已有功能,但影响未来拓展 耦合性越强,模块之间的联系越紧密,但独立性越差 Java编程追求的一条原则:高内聚 低耦合! Lock 接口 实现类: ReentrantLock 可 阅读全文
摘要:
字节跳动客户端一面遇到的算法题 由于是第一次,面试时有点小紧张,上来就给我整了一道手撕算法,着实有点懵,想了很久都没有思路.... 过了几天才想着要把这道题解决,实在是懒狗捏 https://www.nowcoder.com/discuss/694139?source_id=profile_crea 阅读全文
摘要:
对于各种锁的理解 公平锁、非公平锁 公平锁 : 不允许插队,必须先来后到 非公平锁: 允许插队(默认都是非公平锁) 可重入锁 synchronized 这里是同一把锁 package com.liu.lock8.reentrantLock; public class Demo01 { public 阅读全文
摘要:
二十、原子引用 解决ABA问题 ⇒ 引入原子引用 对应思想:乐观锁 原子引用类 AtomicStampedReference<>(initialRef , initialStamp) 带版本号的原子操作! AtomicStampedReference<Integer> atomicStampedRe 阅读全文
摘要:
十九、深入理解CAS 什么是CAS ? 想进大厂 ⇒ 必须深入研究底层 理解计算机网络 操作系统 compareAndSet(int expect , int update) : 比较并交换 expect ⇒ 期望值 update ⇒ 更新值 如果期望值达到了,就更新为update的值,否则就不更新 阅读全文
摘要:
十八、单例模式 程序员必会!!! 1、饿汉式 // 饿汉式单例 public class Hungry { // 在饿汉式单例下 这些资源一起全部加载进来 // 会造成空间浪费 private byte[] data1 = new byte[1024]; private byte[] data2 = 阅读全文
摘要:
十七、Volatile 的可见行 和非原子性验证 什么是volatile ? volatile 是一种轻量级的同步机制,相对于synchronized来说 保证可见性 ⇒ JMM 主内存中的共享变量修改之后,会通知所有线程备份到各自的工作内存中 不保证原子性 禁止指令重排 保证可见性 package 阅读全文
摘要:
一、什么是JMM? JMM指的是Java内存模型,即 Java Memory Model Java内存模型并不是一种实际存在的东西,而是一种人为形成的约定,是一种概念。 关于JMM,我们需要了解一些相关的同步约定 : 线程在解锁前,必须将线程中的工作内存中存储的值即时刷新到主内存中的共享变量! 线程 阅读全文
摘要:
十五、异步回调 异步调用 类似于Ajax ⇒ 调用的结果不需要等待 Future 设计的初衷: 对将来的某个事件的结果进行建模 一般使用Future的增强类: CompletableFuture 常用的方法: runAsync(Runnable run) 没有返回值的异步回调 runAsync(Ru 阅读全文
摘要:
十四、ForkJoin 什么是fork join JDK1.7开始 并行执行任务!提高效率 ⇒ 针对大数据量 大数据 ⇒ MapReduce (把把任务拆分成小任务) ForkJoin 特点 : 工作窃取 已经执行完任务的线程会将尚未执行完的线程中的任务窃取过来,避免线程等待造成资源浪费 ⇒ 提高效 阅读全文