【速览】Java基础(JavaSE)(更新中)

一、背景

这个技术出现的背景、初衷和要达到什么样的目标或是要解决什么样的问题。这个问题非常关键,也就是说,你在学习一个技术的时候,需要知道这个技术的成因和目标,也就是这个技术的灵魂。如果不知道这些的话,那么你会看不懂这个技术的一些设计理念。

二、优缺点

这个技术的优势和劣势分别是什么,或者说,这个技术的 trade-off 是什么。任何技术都有其好坏,在解决一个问题的时候,也会带来新的问题。另外,一般来说,任何设计都有 trade-off(要什么和不要什么),所以,你要清楚这个技术的优势和劣势,以及带来的挑战。

三、适用场景

这个技术适用的场景。任何技术都有其适用的场景,离开了这个场景,这个技术可能会有很多槽点,所以学习技术不但要知道这个技术是什么,还要知道其适用的场景。没有任何一个技术是普适的。注意,所谓场景一般分别两个,一个是业务场景,一个是技术场景。

四、核心组成

技术的组成部分和关键点。这是技术的核心思想和核心组件了,也是这个技术的灵魂所在了。学习技术的核心部分是快速掌握的关键。

基本语法

JDK、JRE、JVM

权限修饰符

-类内部包内部子类外部包
public
protected×
default××
private×××

常量

数据类型

  • 基本数据类型
类型名称含义bit
整型byte字节8
整型short短整型16
整型int整型32
整型long长整型64
浮点型float浮点数32
浮点型double双精度浮点数64
字符char字符16
布尔型boolean布尔型1
  • 引用数据类型
    String
    数组
    接口

面向对象

抽象

封装

继承

多态

高级应用

异常处理

多线程

在这里插入图片描述

  • 概念
    程序:指令+数据(静态)
    进程:执行程序的过程
    线程:操作系统能够进行运算调度的最小单位。在Java中,线程是程序执行流的最小单元。

  • 线程创建
    1、Thread Class(继承),重写run()方法,调用start()方法
    底层:实现 Runnable 接口
    缺点:OOP单继承
    2、【推荐】Runnable 接口(实现),实现run()方法,传入对象(静态代理),调用start()方法
    3、Callable 接口(实现)

  • 线程状态
    1、new
    2、runnable
    3、running
    4、blocked
    5、dead

  • 线程停止
    1、线程正常停止
    2、使用标志符
    3、不使用stop或destroy等过时方法

  • 线程休眠 sleep
    模拟网络延时,倒计时等;不会释放锁

  • 线程礼让 yield
    让当前线程暂停,但不阻塞;礼让不一定成功

  • “插队” join
    当一个线程调用另一个线程的join()方法时,调用线程会被阻塞,直到被加入的线程完成其任务。

  • 优先级 priority 1~10
    先设置优先级,再启动

  • 守护线程 daemon
    为了服务其他线程而存在的;
    记录日志、监控内存、垃圾回收;
    当所有的非守护线程都终止时,守护线程也将自动终止

  • 线程同步 synchronized
    队列+锁(变化的对象,增删改)
    缺点:性能问题
    同步方法:确保同一时刻只有一个线程可以执行该方法
    同步块:允许你在一段代码块内执行同步操作,而不是整个方法
    死锁:指两个或多个线程陷入了永久等待的状态,每个线程都在等待另一个线程释放资源
    锁:lock 显式锁(手动开关)

  • 线程协作
    生产者消费者问题(管程法、信号灯法)
    wait():等待,释放锁
    notify():唤醒等待的线程

  • 线程池 ExecutorService
    提升速度、减少资源消耗、便于管理
    execute()/shutdown()

集合

List
  • ArrayList
Set
  • HashSet
Map

-HashMap

概要

变量

流程控制

数组

面向对象

异常

多线程

常用类

枚举

集合

泛型

I/O流

网络编程

反射 Reflection

Class 类

Java8新特性

注解

五、底层原理

技术的底层原理和关键实现。任何一个技术都有其底层的关键基础技术,这些关键技术很有可能也是其它技术的关键基础技术。所以,学习这些关键的基础底层技术,可以让你未来很快地掌握其它技术。

六、对比

已有的实现和它之间的对比。一般来说,任何一个技术都会有不同的实现,不同的实现都会有不同的侧重。学习不同的实现,可以让你得到不同的想法和思路,对于开阔思维,深入细节是非常重要的。

参考

集合:https://www.bilibili.com/video/BV1YA411T76k/?spm_id_from=333.337.search-card.all.click&vd_source=2657cb270ac61e9520442429c5dacab7
Java 并发编程核心 78 讲

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值