系列:《Java核心技术 卷1》笔记
文章目录
- 系列:《Java核心技术 卷1》笔记
- 一)简介
- 1. 语言特点
- 2. 数据类型
- 3. 枚举类型
- 4. 位运算符之移位
- 5. 直接输出数组
- 6. 新的日期时间
- 7. Java的传参方式
- 二)OOP
- 1. 封装
- 访问权限
- 2. 继承
- 3. 多态
- 4. 类之间的关系
- 5. 关键字
- 6. 初始化顺序
- 7. 抽象类和接口
- 8. lambda表达式
- 9. 内部类
- 10. 函数式接口
- 三)反射和代理
- 1. 什么是反射
- 2. 相关API
- 3. 静态代理
- 4. 动态代理
- 角色
- 实现机制
- 四)异常体系
- 1. 异常层次结构
- 2. 非检查型异常
- 3. 检查型异常
- 4. 如何处理
- 创建异常类
- 抛出异常
- 捕获异常
- 5. finally
- 6. 断言
- 五)泛型
- 1. 作用
- 2. 泛型类和泛型方法
- 3. 限制
- 4. 泛型擦除
- 六)集合
- 1. 迭代器
- 2. List
- 3. Queue & Deque
- 4. Set
- 5. Map
- 6. Collections
- 七)IO
- 1. 控制台
- 2. 文件IO
- 3. 序列化
- 4. 设计模式:装饰模式,适配模式
- 5. 网络IO
- 6. Java中的IO类型
- 八)并发
- 1. 什么是线程
- 2. 实现
- 3. 线程状态
- 4. 线程属性
- 5. 同步
- 6. 锁
- 条件对象:Condition
- 7. 深入
- 监视器和synchronized
- volatile
- 死锁
- 线程局部变量
- 8. 线程安全的集合
- 9. 线程池
一)简介
1. 语言特点
- 面向对象
- 健壮性
- 安全性
- 可移植性
- 解释型
2. 数据类型
img src='https://s2.51cto.com/images/blog//0_6613fbf103bc75101.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=/resize,m_fixed,w_1184' alt='java核心技术卷一中文电子版 java核心技术 卷一_Java' title="在这里插入图片描述" style="width: 447px; visibility: visible;">
col span="1" width="581">
col span="1" width="581">
td data-transient-attributes="table-cell-selection" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
td data-transient-attributes="table-cell-selection" class="table-last-row" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
td data-transient-attributes="table-cell-selection" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
td data-transient-attributes="table-cell-selection" class="table-last-row" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
td data-transient-attributes="table-cell-selection" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
td data-transient-attributes="table-cell-selection" class="table-last-row" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
td data-transient-attributes="table-cell-selection" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
td data-transient-attributes="table-cell-selection" class="table-last-row" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
td data-transient-attributes="table-cell-selection" class="table-last-column" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
td data-transient-attributes="table-cell-selection" class="table-last-column table-last-row" style="min-width: auto; overflow-wrap: break-word; margin: 4px 8px; border: 1px solid rgb(217, 217, 217); padding: 4px 8px; cursor: default; vertical-align: top;">
实现
说明
HashSet
允许一个null
LinkedHashSet
TreeSet
br>
br>
br>
br>
br>
br>
br>
br>
br>
br>
br>
6. Collections
常见API的使用。
七)IO
1. 控制台
2. 文件IO
3. 序列化
- 基本类型:DataInputStream
- 对象:ObjectInputStream
接口:Serializable
transient:序列化跳过当前关键字修饰的属性。
说明:可通过重载readObject和writeObject方法实现序列化
4. 设计模式:装饰模式,适配模式
具体:java的IO之适配器模式和装饰模式
字符流Reader/Writer,适配器: InputStreamReader和OutputStreamWriter
字节流InputStream/OutputStream,装饰器:FilterInputStream和FilterOutputStream
5. 网络IO
- ServerSocket
- Socket
6. Java中的IO类型
常见的BIO,阻塞IO。
然后是NIO,非阻塞IO,基础:IO多路复用
详情见:Java NIO浅析 美团技术团队
最后是AIO,异步IO。
八)并发
1. 什么是线程
进程中一个单一顺序的控制流。
2. 实现
- Thread
- Runnable
- Callable
3. 线程状态
新建:new Thread®
可运行:start
阻塞:试图获取内部的对象锁,失败,线程被阻塞(synchronized)
等待:线程等待另一个线程通知调度器出现一个方法时,线程进入等待(wait或join,或j.u.c的Lock或Condition
计时等待:Thread.sleep、Object.wait、Thread.join、Lock.tryLock以及Condition.await
终止:run方法正常退出,或一个没有捕获的异常
4. 线程属性
优先级
中断标志位:静态的Thread.interrupted(),检查当前线程是否被中断,回清除中断状态;成员方法isInterrupted()
说明:线程被阻塞,其他线程调用interrupt()中断当前线程,会抛出异常
守护线程
5. 同步
通过同步,实现存取的顺序访问
6. 锁
- synchronized
- ReentrantLock
条件对象:Condition
7. 深入
监视器和synchronized
monitor,略。
volatile
JMM模型:略
- 保证可见性,原理见JMM模型
三大特性:原子性,可见性,有序性
- 内存屏障:禁止指令重排
死锁
情形描述:多个线程同时被阻塞,它们中的一个或全部都在等待某个资源释放。
死锁产生的四个必要条件:
- 互斥:资源被线程占用,别的线程不能使用
- 非抢占:资源只能由占用者释放
- 请求和保持:占用资源的线程同时请求资源
- 循环等待:存在一个等待队列,P1占用P2需要的资源,P2占用P3的资源,…形成环路
如何解决死锁:synchronized,或Lock。
产生死锁的样例:可使用信号量,避免死锁(具体)
线程局部变量
ThreadLocal
方法:void set(T t)和T get()
场景一:管理数据库连接Connection,保证当前线程操作的都是同一个Connection,保证事务
8. 线程安全的集合
阻塞队列:BlockingQueue
- ArrayBlockingQueue:必须指定容量
- LinkedBlockingQueue:可指定容量,默认Integer.MAX_VALUE
- DelayQueue:无上限阻塞队列
- PriorityBlockingQueue:无上限
- TransferQueue
高效的映射、有序集和队列:ConcurrentHashMap、ConcurrentSkipListMap、ConcurrentSkipListSet、ConcurrentLinkedQueue
写数组:CopyOnWriteArrayList
9. 线程池
Executors:
ThreadPoolExecutor
- 核心线程
- 工作队列:阻塞队列BlockingQueue
- 最大线程数量 & 工作线程
- 工作线程存活时间
- 饱和策略
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/2052.html