自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小宇哥x的博客

日常学习笔记

  • 博客(122)
  • 收藏
  • 关注

原创 字节飞书暑假实习面试总结

字节一面(1小时20分)问项目 TCP为啥是安全的? 4次挥手的过程,为什么不是3次? 等待2msl是为了什么? https的特点,对称加密和非对称加密的特点。 线程池用过吗,怎么用的? MySQL优化了解吗?做题(50分钟)全排列,分发糖果(✔)字节二面(60分钟)B+树和B树的区别。 200W数据放数据库中层数多高? 数据库加锁的系统调用是什么? 行锁是在什么情况下出现? TCP慢开始的过程,初始的时候是发的几个报文; 慢开始什么时候结束? 快重传出现的情况?..

2022-03-23 16:39:26 3108 1

原创 Java面试知识点总结(阿里,字节)

总结一下最近参加的面试中一些回答很差,或者称之为没答上的知识点,当前总共参加了:1. 阿里云---三面后养鱼一个月2. 字节跳动---三面(OC)3. 美团---一面(挂)

2022-03-23 16:30:49 1138

原创 Java知识难点总结二、基础篇2

文章目录Java知识难点总结一、基础篇21、hashCode 与 equals1.1、equals和==有什么区别?1.2、重写equals不重写hashCode会存在什么问题?总结2、ConcurrentHashMap和 Hashtable 的区别3、线程的生命周期和状态4、Spring Boot加载配置文件的优先级4.1、指定配置文件的名称和路径4.2、配置文件的加载顺序Java知识难点总结一、基础篇21、hashCode 与 equalsequals和hashCode都是Object对象中的.

2021-12-24 19:34:47 1107

原创 Java知识难点总结一、基础篇

文章目录Java知识难点总结一、基础篇1、八种基本数据类型的大小,以及他们的封装类2、Java的自动装箱与拆箱3、a=a+b与a+=b的区别4、深入解析单例模式的5种实现原理Java知识难点总结一、基础篇1、八种基本数据类型的大小,以及他们的封装类基本类型大小(字节)默认值封装类byte1(byte) 0Byteshort2(short) 0Shortint40Integerlong80LLongfloat40.0fFl.

2021-11-07 15:56:15 1663 2

转载 Java性能优化十七、缓存优化

文章目录缓存优化一、如何使用缓存优化系统性能1、前端缓存技术1. 本地缓存2.网关缓存2、服务层缓存技术1.进程缓存2.分布式缓存3、数据库与缓存数据一致性问题4、缓存穿透、缓存击穿、缓存雪崩总结二、双十一抢购性能瓶颈调优1、抢购业务流程2、抢购系统中的性能瓶颈1.商品详情页面2.抢购倒计时3.获取购买资格4.提交订单5.支付回调业务操作3、性能瓶颈调优1.限流实现优化2.流量削峰3. 数据丢失问题总结缓存优化一、如何使用缓存优化系统性能缓存是我们提高系统性能的一项必不可少的技术,无论是前端、还是后.

2021-07-08 09:55:45 1092

原创 Java性能优化十六、分布式事务调优

文章目录分布式事务调优一、如何设计更优的分布式锁1、数据库实现分布式锁2、Zookeeper 实现分布式锁3、Redis 实现分布式锁4、Redlock 算法总结二、电商系统的分布式事务调优1、分布式事务解决方案1.XA 规范2.二阶提交和三阶提交3. 事务补偿机制(TCC)4.业务无侵入方案——Seata(Fescar)总结分布式事务调优一、如何设计更优的分布式锁在 JVM 中,在多线程并发的情况下,我们可以使用同步锁或 Lock 锁,保证在同一时间内,只能有一个线程修改共享变量或执行代码块。但现.

2021-07-08 09:53:52 589

原创 Java性能优化十五、MySQL 参数优化

文章目录MySQL 参数优化一、数据库参数设置优化,失之毫厘差之千里1、MySQL 体系结构1.查询语句2.更新语句2、内存调优1. MyISAM 存储引擎参数设置调优2. InnoDB 存储引擎参数设置调优总结二、MySQL中InnoDB的知识点串讲1、InnoDB 体系架构1. 内存池2.后台线程3.存储文件2、InnoDB 逻辑存储结构1.表空间(Tablespace)2.段 (Segment)3.区 (Extent) / 页(Page)4.行(Row)3、InnoDB 事务之 redo log 工.

2021-07-08 09:51:51 428

原创 Java性能优化十四、MySQL 优化2

文章目录MySQL 优化2一、MySQL调优之索引:索引的失效与优化1、MySQL 索引存储结构2、覆盖索引优化查询3、 自增字段作主键优化查询4、 前缀索引优化5、 防止索引失效总结二、如何避免死锁三、什么时候需要分表分库1、什么时候要分表分库2、如何分表分库3、分表分库之后面临的问题1.分布式事务问题2.跨节点 JOIN 查询问题3.跨节点分页查询问题4.全局主键 ID 问题5. 扩容问题总结MySQL 优化2一、MySQL调优之索引:索引的失效与优化1、MySQL 索引存储结构索引是优化数据.

2021-07-08 09:49:06 167 1

转载 Java性能优化十三、MySQL 优化1

文章目录MySQL 优化1一、MySQL调优之SQL语句:如何写出高性能SQL语句1、慢 SQL 语句的几种常见诱因1.无索引、索引失效导致慢查询2.锁等待3. 不恰当的 SQL 语句2、优化 SQL 语句的步骤1. 通过 EXPLAIN 分析 SQL 执行计划2. 通过 Show Profile 分析 SQL 执行性能3、常用的 SQL 优化1.优化分页查询2.优化 SELECT COUNT(*)3. 优化 SELECT *总结二、MySQL调优之事务:高并发场景下的数据库事务调优1、并发事务带来的问题.

2021-07-08 09:46:47 379

原创 Java性能优化十二、设计模式优化并发编程

文章目录设计模式优化并发编程一、如何使用设计模式优化并发编程1、线程上下文设计模式2、Thread-Per-Message 设计模式3、Worker-Thread 设计模式总结二、生产者消费者模式:电商库存设计优化1、Object 的 wait/notify/notifyAll 实现生产者消费者2、Lock 中 Condition 的 await/signal/signalAll 实现生产者消费者3、BlockingQueue 实现生产者消费者总结三、装饰器模式:如何优化电商系统中复杂的商品价格策略1、什.

2021-07-08 09:43:51 418

原创 Java性能优化十一、设计模式优化

文章目录设计模式优化一、单例模式:如何创建单一对象优化系统性能1、什么是单例模式2、饿汉模式3、懒汉模式4、通过内部类实现懒汉模式总结二、原型模式与享元模式:提升系统性能的利器1、原型模式1.深拷贝和浅拷贝2.适用场景2、享元模式总结设计模式优化一、单例模式:如何创建单一对象优化系统性能在《Design Patterns: Elements of Reusable Object-Oriented Software》一书中,有 23 种设计模式的描述,其中,单例设计模式是最常用的设计模式之一。无论是在.

2021-07-08 09:41:35 432 1

原创 Java性能优化十、优化垃圾回收机制

文章目录优化垃圾回收机制一、如何优化垃圾回收机制1、垃圾回收机制1.回收发生在哪里?2.对象在什么时候可以被回收?3. 如何回收这些对象?2、GC 算法3、GC 性能衡量指标4、查看 & 分析 GC 日志5、GC 调优策略1. 降低 Minor GC 频率2. 降低 Full GC 的频率3.选择合适的 GC 回收器总结二、如何优化JVM内存分配1、JVM 内存分配性能问题2、对象在堆中的生存周期3、查看 JVM 堆内存分配4、JVM 内存分配的调优过程1.AB 压测2.分析 GC 日志3.参考指.

2021-07-07 21:27:21 1126 1

原创 Java性能优化九、JVM 调优

文章目录JVM 调优一、深入JVM即时编译器 JIT,优化Java编译1、类编译加载执行过程1.类编译2.类加载3.类连接4.类初始化2、即时编译1.即时编译器类型2.热点探测3、编译优化技术1. 方法内联2. 逃逸分析3.栈上分配4.锁消除5.标量替换总结JVM 调优一、深入JVM即时编译器 JIT,优化Java编译说到编译,我猜你一定会想到 .java 文件被编译成 .class 文件的过程,这个编译我们一般称为前端编译。Java 的编译和运行过程非常复杂,除了前端编译,还有运行时编译。由于机器.

2021-07-07 21:23:33 213

原创 Java性能优化八、JVM 内存模型

文章目录JVM 内存模型一、数据的强、弱一致性1、Java 存储模型2、重排序3、Happens-before 规则二、欲知 JVM调优先了解JVM内存模型1、从了解内存模型开始2、JVM 内存模型的具体设计1.堆(Heap)2.程序计数器(Program Counter Register)3.方法区(Method Area)4.虚拟机栈(VM stack)5.本地方法栈(Native Method Stack)3、JVM 的运行原理JVM 内存模型一、数据的强、弱一致性在并发编程中,Java 是通.

2021-07-07 21:20:23 487 1

原创 Java性能优化七、多线程调优2

文章目录多线程调优2一、并发容器的使用:识别不同场景下最优容器1、并发场景下的 Map 容器1.Hashtable与ConcurrentHashMap2.ConcurrentHashMap与ConcurrentSkipListMap3.什么是跳跃表2、并发场景下的 List 容器总结二、如何设置线程池大小1、线程池原理2、线程池框架 Executor3、计算线程数量总结三、如何用协程来优化多线程业务1、线程实现模型2、协程的实现原理3、Kilim 协程框架总结多线程调优2一、并发容器的使用:识别不同场.

2021-07-07 21:17:46 628

原创 Java性能优化六、多线程调优1

文章目录多线程调优1一、多线程调优(上):哪些操作导致了上下文切换?1、初识上下文切换2、多线程上下文切换诱因3、发现上下文切换总结二、多线程调优(下):如何优化多线程上下文切换?1、竞争锁优化1.减少锁的持有时间2.降低锁的粒度3. 非阻塞乐观锁替代竞争锁2、wait/notify 优化1.wait/notify 的使用导致了较多的上下文切换2.优化 wait/notify 的使用,减少上下文切换3.合理地设置线程池大小,避免创建过多线程4.使用协程实现非阻塞等待5.减少 Java 虚拟机的垃圾回收总结.

2021-07-07 21:15:02 1278

原创 Java性能优化五、多线程优化

文章目录多线程优化一、多线程之锁优化(上):深入了解Synchronized同步锁的优化方法1、Synchronized 同步锁实现原理2、锁升级优化1. 偏向锁2. 轻量级锁3. 自旋锁与重量级锁3、动态编译实现锁消除 / 锁粗化4、减小锁粒度总结二 、多线程之锁优化(中):深入了解Lock 同步锁的优化方法1、Lock 锁的实现原理2、锁分离优化 Lock 同步锁1. 读写锁 ReentrantReadWriteLock2. 读写锁再优化之 StampedLock总结三、多线程之锁优化(下):使用乐观.

2021-07-07 21:12:38 1221 3

原创 Java性能优化四、性能测试工具

文章目录推荐几款常用的性能测试工具1、ab2、JMeter3、LoadRunner总结推荐几款常用的性能测试工具常用的性能测试工具有很多,在这里我将列举几个比较实用的。对于开发人员来说,首选是一些开源免费的性能(压力)测试软件,例如ab(ApacheBench)、JMeter 等;对于专业的测试团队来说,付费版的 LoadRunner 是首选。当然,也有很多公司是自行开发了一套量身定做的性能测试软件,优点是定制化强,缺点则是通用性差。1、abab 测试工具是 Apache 提供的一款测试工具,具.

2021-07-07 21:10:05 2438 2

原创 Java性能优化三、通信优化

文章目录Java 通信优化一、网络通信优化之I/O模型:如何解决高并发下I/O瓶颈?1、什么是 I/O1.字节流2.字符流2、传统 I/O 的性能问题1.多次内存复制2.阻塞3、如何优化 I/O 操作1.使用缓冲区优化读写流操作2.使用 DirectBuffer 减少内存复制3.避免阻塞,优化 I/O 操作总结二、网络通信优化之序列化:避免使用Java序列化1、Java 序列化2、Java 序列化的缺陷1.无法跨语言2.易被攻击3.序列化后的流太大4.序列化性能太差总结三、网络通信优化之通信协议:如何优化.

2021-07-07 21:07:59 1384 5

原创 Java性能优化二、集合优化

文章目录Java 编程优化一、集合优化1、ArrayList还是LinkedList?1.ArrayList 是如何实现的?2.LinkedList 是如何实现的?3.ArrayList 和 LinkedList 遍历元素操作测试2、Stream如何提高遍历集合效率?1.Stream 如何优化遍历?2.合理使用 Stream3、深入浅出HashMap的设计与优化1.HashMap 的重要属性2.HashMap 添加元素优化3.HashMap 获取元素优化4.HashMap 扩容优化总结Java 编程优化.

2021-07-07 21:02:49 903

原创 Java性能优化一、编程优化

文章目录Java 编程优化一、String 字符串优化1、String 对象的实现2、String 对象的不可变性3、String 对象的优化1、如何构建超大字符串?2、如何使用String.intern 节省内存?3. 如何使用字符串的分割方法?二、慎重使用正则表达式1、什么是正则表达式?2、正则表达式引擎1. 贪婪模式(Greedy)2. 懒惰模式(Reluctant)3. 独占模式(Possessive)3、正则表达式的优化1.少用贪婪模式,多用独占模式2.减少分支选择3.减少捕获嵌套总结Java.

2021-07-07 20:57:58 388

原创 MySQL技术内幕读书笔记六、MySQL事务

文章目录一、MySQL事务1、认识事务1.1 概述1.2 分类2、事务的实现2.1 redo2.2 undo2.3 purge2.4 group commit3、事务控制语句4、事务的隔离级别5、分布式事务5.1 MySQL数据库分布式事务5.2 内部XA事务6、不好的事务习惯6.1 在循环中提交6.2 使用自动提交6.3 使用自动回滚7、长事务一、MySQL事务InnoDB存储引擎中的事务完全符合ACID的特性。ACID是以下4个词的缩写:原子性(atomicity)一致性(consisten.

2021-06-02 14:21:42 422

原创 MySQL技术内幕读书笔记五、MySQL锁机制

文章目录一、MySQL锁机制1、什么是锁2、lock与latch3、InnoDB存储引擎中的锁3.1 锁的类型3.2 一致性非锁定读(重要)3.3 一致性锁定读3.4 自增长与锁3.5 外键和锁4、锁的算法4.1 行锁的3种算法4.2 解决Phantom Problem5、锁问题5.1 脏读5.2 不可重复读(幻读)5.3 丢失更新6、阻塞7、死锁7.1 死锁的概念7.2 死锁的示例一、MySQL锁机制开发多用户、数据库驱动的应用时,最大的一个难点是:一方面要最大程度地利用数据库的并发访问,另外一方面.

2021-06-01 15:22:50 176 1

原创 MySQL技术内幕读书笔记四、MySQL索引与算法

文章目录一、索引1、InnoDB存储引擎索引概述2、数据结构与算法2.1 二分查找法2.2 二叉查找树和平衡二叉树3、B+树3.1 B+树的插入操作3.2 B+树的删除操作4、B+树索引4.1 聚集索引4.2 辅助索引(非聚集索引)4.3 B+树索引的管理5、Cardinality值5.1 什么是Cardinality5.2 InnoDB存储引擎的Cardinality统计6、B+树索引的使用(重点)6.1 不同应用中B+树索引的使用6.2 联合索引6.3 覆盖索引6.4 优化器选择不使用索引的情况6.5.

2021-05-31 21:32:01 182 2

原创 MySQL技术内幕读书笔记三、MySQL表结构

文章目录一、表结构1.1 索引组织表1.2 InnoDB逻辑存储结构1.2.1 表空间1.2.2 段1.2.3 区1.2.4 页1.2.5 行1.3 InnoDB行记录格式1.3.1 Compact行记录格式1.3.2 行溢出数据1.3.3 CHAR的行结构存储1.4 InnoDB数据页结构1.5 约束1.5.1 数据完整性1.5.2 约束和索引的区别1.6 分区表1.6.1 分区概述1.7 小结一、表结构1.1 索引组织表在InnoDB存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表称为.

2021-05-30 21:12:31 179

原创 MySQL技术内幕读书笔记二、MySQL文件类型

文章目录一、文件1.1 参数文件1.1.1 什么是参数1.1.2 参数类型1.2 日志文件1.2.1 错误日志1.2.2 慢查询日志1.2.3 查询日志1.2.4 二进制日志1.3 套接字文件1.4 pid文件1.5 表结构定义文件1.6 InnoDB存储引擎文件1.6.1 表空间文件1.6.2 重做日志文件1.7 小结一、文件构成MySQL数据库和InnoDB存储引擎表的各种类型文件。参数文件:告诉MySQL实例启动时在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的.

2021-05-30 19:08:24 264

原创 MySQL技术内幕读书笔记一、MySQL体系结构和存储引擎

文章目录一、MySQL体系结构和存储引擎1.1 定义数据库和实例1.2 MySQL体系结构1.3 MySQL存储引擎1.3.1 InnoDB存储引擎1.3.2 MyISAM存储引擎1.3.3 NDB存储引擎1.3.4 Memory存储引擎1.3.5 Maria存储引擎1.4 各存储引擎之间的比较1.5 连接MySQL二、InnoDB存储引擎2.1 InnoDB体系架构2.1.1 后台线程2.1.2 内存1.缓冲池2.LRU List、Free List和Flush List3.重做日志缓冲4.额外的内存池.

2021-05-29 21:28:39 540

原创 Redis设计与实现读书笔记九、二进制位数组和慢查询日志

文章目录一、二进制位数组1、位数组的表示2、GETBIT命令的实现3、SETBIT命令的实现3.1 带扩展操作的SETBIT命令示例4、BITCOUNT命令的实现5、BITOP命令的实现6、重点回顾二、慢查询日志1、慢查询记录的保存2、慢查询日志的阅览和删除3、添加新日志4、重点回顾三、监视器1、成为监视器2、向监视器发送命令信息3、重点回顾一、二进制位数组Redis提供了SETBIT、GETBIT、BITCOUNT、BITOP四个命令用于处理二进制位数组(bit array,又称“位数组”)。其中.

2021-05-26 15:31:21 443

原创 Redis设计与实现读书笔记八、Lua脚本的实现原理

文章目录一、Lua脚本1、创建并修改Lua环境2、Lua环境协作组件2.1 伪客户端2.2 lua_scripts字典3、EVAL命令的实现3.1 定义脚本函数3.2 将脚本保存到lua_scripts字典3.3 执行脚本函数4、EVALSHA命令的实现5、脚本管理命令的实现5.1 SCRIPT FLUSH5.2 SCRIPT EXISTS5.3 SCRIPT LOAD5.4 SCRIPT KILL6、脚本复制6.1 复制EVAL命令、SCRIPT FLUSH命令和SCRIPT LOAD命令6.2 复制E.

2021-05-26 15:29:37 303

翻译 Redis设计与实现读书笔记七、发布、订阅和事务的原理

文章目录一、发布与订阅1、频道的订阅与退订1.1 订阅频道1.2 退订频道2、模式的订阅与退订2.1 订阅模式2.2 退订模式3、发送消息3.1 将消息发送给频道订阅者3.2 将消息发送给模式订阅者4、查看订阅信息4.1 PUBSUB CHANNELS4.2 PUBSUB NUMSUB4.3 PUBSUB NUMPAT5、重点回顾二、事务1、事务的实现1.1 事务开始1.2 命令入队1.3 事务队列1.4 执行事务2、WATCH命令的实现2.1 使用WATCH命令监视数据库键2.2 监视机制的触发2.3 .

2021-05-26 15:26:46 99

原创 Redis设计与实现读书笔记六、哨兵Sentinel的实现原理

文章目录一、哨兵Sentinel1、启动并初始化Sentinel1.1 初始化服务器1.2 使用Sentinel专用代码1.3 初始化Sentinel状态1.4 初始化Sentinel状态的masters属性1.5 创建连向主服务器的网络连接2、获取主服务器信息3、获取从服务器信息4、向主服务器和从服务器发送信息5、接收来自主服务器和从服务器的频道信息5.1 更新sentinels字典5.2 创建连向其他Sentinel的命令连接6、检测主观下线状态7、检查客观下线状态7.1 发送SENTINEL is-.

2021-05-25 10:47:52 126

原创 Redis设计与实现读书笔记五、Redis主从复制

文章目录一、主从复制1、旧版复制功能的实现1.1 同步1.2 命令传播2、旧版复制功能的缺陷3、新版复制功能的实现4、部分重同步的实现4.1 复制偏移量4.2 复制积压缓冲区4.3 服务器运行ID5、PSYNC命令的实现6、复制的实现6.1 步骤1:设置主服务器的地址和端口6.2 步骤2:建立套接字连接6.3 步骤3:发送PING命令6.4 步骤4:身份验证6.5 步骤5:发送端口信息6.6 步骤6:同步6.7 步骤7:命令传播7、心跳检测7.1、检测主从服务器的网络连接状态7.2 辅助实现min-sla.

2021-05-24 21:19:28 129

原创 Redis设计与实现读书笔记四、Redis客户端和服务器

文章目录一、客户端1、客户端属性1.1 套接字描述符1.2 名字1.3 标志1.4 输入缓冲区1.5 命令与命令参数1.6 命令的实现函数1.7 输出缓冲区1.8 身份验证1.9 时间2、客户端的创建与关闭2.1 创建普通客户端2.2 关闭普通客户端2.3 Lua脚本的伪客户端2.4 AOF文件的伪客户端3、重点回顾二、服务器1、命令请求的执行过程1.1 发送命令请求1.2 读取命令请求1.3 命令执行器(1):查找命令实现1.4 命令执行器(2):执行预备操作1.5 命令执行器(3):调用命令的实现函数.

2021-05-24 18:19:01 720

原创 Redis设计与实现读书笔记三、Redis的持久化机制

文章目录一、RDB持久化1、RDB文件的创建与载入1.1 SAVE命令执行时的服务器状态1.2 BGSAVE命令执行时的服务器状态1.3 RDB文件载入时的服务器状态2、自动间隔性保存2.1 设置保存条件2.2 dirty计数器和lastsave属性2.3 检查保存条件是否满足3、RDB文件结构3.1 databases部分3.2 key_value_pairs部分3.3 value的编码4、重点回顾二、AOF持久化1、AOF持久化的实现1.1 命令追加1.2 AOF文件的写入与同步2、AOF文件的载入与.

2021-05-24 12:02:34 611

原创 Redis设计与实现读书笔记二、单机数据库的实现

文章目录二、单机数据库的实现1、数据库1.1 服务器中的数据库1.2 切换数据库1.3 数据库键空间1.3.1 添加新键1.3.2 删除键1.3.3 更新键1.3.4 对键取值1.3.5 其他键空间操作1.4 设置键的生存时间或过期时间1.4.1 设置过期时间1.4.2 保存过期时间1.4.3 移除过期时间1.4.4 计算并返回剩余生存时间1.4.5 过期键的判定1.5 过期键删除策略1.5.1 定时删除1.5.2 惰性删除1.5.3 定期删除1.6 Redis的过期键删除策略1.6.1 惰性删除策略的实.

2021-05-23 19:52:51 129

原创 Redis设计与实现读书笔记一、数据结构与对象

文章目录一、数据结构与对象1、简单动态字符串(SDS)1.1 SDS的定义1.2 SDS相比C字符串的优势1.2.1 常数复杂度获取字符串长度1.2.2 杜绝缓冲区溢出1.2.3 减少修改字符串时带来的内存重分配次数1.2.4 二进制安全1.2.5 兼容部分C字符串函数1.2.6 总结1.3 SDS API1.4 重点回顾2、链表(linkedlist)2.1 链表和链表节点的实现2.2 重点回顾3、字典(hashtable)3.1 字典的实现3.2 解决键冲突3.3 rehash3.4 渐进式rehas.

2021-05-23 14:26:04 621

原创 深入理解Java虚拟机读书笔记五、高效并发

文章目录高效并发一、Java内存模型与线程1、概述2、硬件的效率与一致性3、Java内存模型3.1 主内存与工作内存3.2 内存间交互操作3.3 对于volatile型变量的特殊规则3.4 原子性、可见性与有序性3.5 先行发生原则4、Java与线程4.1 线程的实现4.2 Java线程调度4.3 状态转换二、线程安全与锁优化1、概述2、线程安全2.1 Java语言中的线程安全2.2 线程安全的实现方法3、锁优化3.1 自旋锁与自适应自旋3.2 锁消除3.3 锁粗化3.4 轻量级锁3.5 偏向锁高效并发.

2021-05-18 19:47:26 472

原创 深入理解Java虚拟机读书笔记四、程序编译与代码优化

文章目录程序编译与代码优化一、前端编译与优化1、概述2、Javac编译器3、Java语法糖的味道3.1 泛型3.2 自动装箱、拆箱与遍历循环4、实战:插入式注解处理器5、本章小结二、后端编译与优化1、概述2、即时编译器2.1 解释器与编译器2.2 编译对象与触发条件2.3 编译过程2.4 实战:查看及分析即时编译结果3、提前编译器3.1 提前编译的优劣得失4、编译器优化技术4.1 优化技术概览4.2 方法内联4.3 逃逸分析4.4 公共子表达式消除4.5 数组边界检查消除程序编译与代码优化一、前端编译.

2021-05-18 19:44:27 669 1

原创 深入理解Java虚拟机读书笔记三、虚拟机执行子系统

文章目录虚拟机执行子系统一、虚拟机类加载机制1、概述2、类加载的时机3、类加载的过程3.1 加载3.2 验证3.3 准备3.4 解析3.5 初始化4、类加载器4.1 类与类加载器4.2 双亲委派模型4.3 破坏双亲委派模型5、Java模块化系统二、虚拟机字节码执行引擎1、概述2、运行时栈帧结构2.1 局部变量表2.2 操作数栈2.3 动态连接2.4 方法返回地址2.5 附加信息3、方法调用3.1 解析3.2 分派4、动态类型语言支持4.1 动态类型语言4.2 Java与动态类型4.3 javalang.i.

2021-05-18 19:40:53 864

原创 深入理解Java虚拟机读书笔记二、自动内存管理

文章目录自动内存管理一、Java内存区域与内存溢出异常1、运行时数据区域1.1、程序计数器1.2、Java虚拟机栈1.3、本地方法栈1.4、Java堆1.5、方法区1.6、运行时常量池1.7、直接内存2、HotSpot虚拟机对象探秘2.1、对象的创建2.2、对象的内存布局2.3、对象的访问定位2.4、实战:OutOfMemoryError异常2.4.1 Java堆溢出2.4.2 虚拟机栈和本地方法栈溢出2.4.3 方法区和运行时常量池溢出2.4.4 本机直接内存溢出二、垃圾收集器与内存分配策略1、对象已死.

2021-05-18 19:38:21 2041

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除