08 2019 档案
摘要:设计模式 装饰者模式、适配器模式 类别 同步阻塞IO(BIO) BIO是一个连接一个线程。 传统的同步阻塞模型开发中,ServerSocket负责绑定IP地址,启动监听端口;Socket负责发起连接操作。连接成功后,双方通过输入和输出流进行同步阻塞式通信。 该模型最大的问题就是缺乏弹性伸缩能力,当客
阅读全文
摘要:实现方式 Thread 1. 继承Thread类,重写run方法 2. 创建子类实例,即创建了线程对象 3. 调用实例的start方法来启动线程 Runnable 1. 实现Runnable接口,实现run方法 2. 创建类实例,将此实例作为Thread的target创建一个Thread对象,该Th
阅读全文
摘要:强引用Strong Reference 只要强引用存在,垃圾收集器永远不会回收被引用的对象。 软引用Soft Reference 类,还有用但并非必需的对象。 对于软引用关联的对象,在将要发生内存溢出异常之前,将会把这些对象列进回收范围之中进行第二次回收。 弱引用Weak Reference 类,被
阅读全文
摘要:Spring是一个开源的轻量级Java SE / Java EE开发应用框架。在传统应用程序开发中,一个完整的应用是由一组相互协作的对象组成。所以开发一个应用除了要开发业务逻辑之外,最多的是关注如何使这些对象协作来完成所需功能,而且要低耦合、高内聚 Spring框架可以帮我们管理对象及其依赖关系,另
阅读全文
摘要:typora root url: ./ CPU多核并发缓存架构 JMM(Java线程内存模型)底层实现原理 基于CPU缓存模型建立的,屏蔽掉了底层不同计算机的区别。 所有的共享变量都存储在主内存。每条线程还有自己的工作内存。线程对变量的所有操作都必须在工作内存中进行,而不能直接读写主内存中的变量。
阅读全文
摘要:Jvm内存结构,一般是面试官对Java虚拟机这块考察的第一问。 Java虚拟机的内存结构一般可以从 线程共有 和 线程私有 两部分起头作答,然后再详细说明各自的部分,类似树状结构的作答,好处就是思路清晰,面试官听着也舒服。 线程共有的包括Java堆和方法区,线程私有的包括虚拟机栈、本地方法栈和程序计
阅读全文
摘要:类加载时机 Java虚拟机规范并没有强制约束类加载过程的第一个阶段时机,但对初始化阶段由严格规定5中必须立即对类进行初始化的情况: 1. 遇到new、getstatic、putstatic或invokestatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其初始化。 使用new关键字实
阅读全文
摘要:typora root url: ./ 类文件结构 魔数Magic Number 每个Class文件的头4个字节是 魔数 。值为0xCAFEBABE 唯一作用:确定这个文件是一个能被虚拟机接受的Class文件 Class文件的版本 紧挨着魔数的4个字节是Class文件的 版本号 :第5、6个字节是
阅读全文
摘要:加载和存储指令 将常量压入栈的指令 aconst_null 将null对象引用压入栈 iconst_m1 将int类型常量 1压入操作数栈 iconst_0 将int类型常量0压入操作数栈 iconst_1 将int类型常量1压入操作数栈 lconst_0 将long类型常量0压入栈 bipush
阅读全文
摘要:typora root url: ./ JVM调优思路 目的:减少full GC次数、减少STW时间(一次GC的时间) 手段: 1. 打印GC日志 2. 分析日志得到关键性指标 3. 分析GC原因,调优JVM参数 案例 高性能硬件上的程序部署策略 通过64位JDK来使用大内存 前提:有把握把应用程序
阅读全文
摘要:typora root url: ./ 垃圾收集 垃圾收集器关注的是线程共享的这部分内存。 用来监控JVM的运行情况,可以用它来查看和浏览Heap Dump、Thread Dump、内存对象实例情况、GC执行情况、CPU消耗以及类的装载情况。 回收方法区 永久代的垃圾收集主要回收两部分内存:废弃常量
阅读全文
摘要:JVM内存结构 JVM内存的运行时数据区: 线程私有(在线程启动时创建) 程序计数器Program Counter Register 一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。 虚拟机栈VM Sta
阅读全文
摘要:主从复制集群 概念 :主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。 使用场景 : 1. 读写分离:使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。 2. 数据实时备份:当系统中某个节点发生故障时,可以方便的
阅读全文
摘要:性能分析 慢查询日志分析 ①查询慢查询日志的状态 ②开启慢查询日志(当mysql重启时会重置) ③查询mysql默认限制慢sql语句的上限时间值 ④设置long_query_time的值 ⑤显示慢sql的条数 分析慢查询日志的工具 mysqldumpslow explain查看执行计划 之前好像讲过
阅读全文
摘要:MySQL锁的介绍 锁是数据库系统区别于文件系统的一个关键特性。锁机制用于管理对共享资源的并发访问。 表级锁 例如MyISAM引擎,其锁是表锁设计。并发情况下的读没有问题,但是并发插入时的性能要差一些。 直接锁定整张表,在你锁定期间,其它进程无法对该表进行写操作。如果你是写锁,则其它进程读也不允许。
阅读全文
摘要:索引基础 索引介绍 定义 索引是满足某种特定查找算法的数据结构。这些数据结构会以某种方式指向数据,从而实现高效查找。 优势 提高了查询速度 劣势 降低更新表的速度,因为更新表时,MySQL不仅要保存数据,还要保存索引文件。 建立索引会占用磁盘空间的索引文件。 索引分类 主键索引 根据主键pk_col
阅读全文
摘要:typora root url: ./ SQL语法顺序和执行顺序 SQL语法顺序 SQL执行顺序 第一步:加载from子句的前两个表计算笛卡尔积,生成虚拟表vt1; 第二步:筛选关联表符合on表达式的数据,保留主表,生成虚拟表vt2; 第三步:如果使用的是外连接,执行on的时候,会将主表中不符合on
阅读全文