4 AlbenXie

尚未进行身份认证

我要认证

暂无相关简介

等级
TA的排名 1k+

三 实战:第09讲:案例实战:面对突如其来的 GC 问题如何下手解决

本课时我们主要从一个实战案例入手分析面对突如其来的 GC 问题该如何下手解决。想要下手解决 GC 问题,我们首先需要掌握下面这三种问题。如何使用 jstat 命令查看 JVM 的 GC 情况? 面对海量 GC 日志参数,如何快速抓住问题根源? 你不得不掌握的日志分析工具。工欲善其事,必先利其器。我们前面课时讲到的优化手段,包括代码优化、扩容、参数优化,甚至我们的估算,都需要一些支撑信息加以判断。对于 JVM 来说,一种情况是 GC 时间过长,会影响用户的体验,这个时候就需要调整某些 J

2020-06-28 18:08:03

二 垃圾回收:第08讲:案例实战:亿级流量高并发下如何进行估算和调优

本课时主要讲解如何在大流量高并发场景下进行估算和调优。我们知道,垃圾回收器一般使用默认参数,就可以比较好的运行。但如果用错了某些参数,那么后果可能会比较严重,我不只一次看到有同学想要验证某个刚刚学到的优化参数,结果引起了线上 GC 的严重问题。所以你的应用程序如果目前已经满足了需求,那就不要再随便动这些参数了。另外,优化代码获得的性能提升,远远大于参数调整所获得的性能提升,你不要纯粹为了调参数而走了弯路。那么,GC 优化有没有可遵循的一些规则呢?这些“需求”又是指的什么?我们可以将目标归结为三点

2020-06-27 23:19:18

二 垃圾回收:第07讲:大厂面试题:有了 G1 还需要其他垃圾回收器吗?

本课时我们主要来看下这两个高频的面试考题:G1的回收原理是什么?为什么 G1 比传统 GC 回收性能好? 为什么 G1 如此完美仍然会有 ZGC?我们在上一课时,简要的介绍了 CMS 垃圾回收器,下面我们简单回忆一下它的一个极端场景(而且是经常发生的场景)。在发生 Minor GC 时,由于 Survivor 区已经放不下了,多出的对象只能提升(promotion)到老年代。但是此时老年代因为空间碎片的缘故,会发生 concurrent mode failure 的错误。这个时候,就需要降级为.

2020-06-27 21:16:48

二 垃圾回收:第06讲:深入剖析:垃圾回收你真的了解吗?(下)

由于上一课时篇幅比较多,我们在这一课时重点讲解上一课时中提到的 CMS 垃圾回收器,让你可以更好的理解垃圾回收的过程。在这里首先给你介绍几个概念:Minor GC:发生在年轻代的 GC。 Major GC:发生在老年代的 GC。 Full GC:全堆垃圾回收。比如 Metaspace 区引起年轻代和老年代的回收。理解了这三个概念,我们再往下看。CMS 的全称是 Mostly Concurrent Mark and Sweep Garbage Collector(主要并发­标记­清除­垃圾收

2020-06-27 20:42:19

二 垃圾回收:第06讲:深入剖析:垃圾回收你真的了解吗?(上)

本课时我们重点剖析 JVM 的垃圾回收机制。关于 JVM 垃圾回收机制面试中主要涉及这三个考题:JVM 中有哪些垃圾回收算法?它们各自有什么优劣? CMS 垃圾回收器是怎么工作的?有哪些阶段? 服务卡顿的元凶到底是谁?虽然 Java 不用“手动管理”内存回收,代码写起来很顺畅。但是你有没有想过,这些内存是怎么被回收的?其实,JVM 是有专门的线程在做这件事情。当我们的内存空间达到一定条件时,会自动触发。这个过程就叫作 GC,负责 GC 的组件,就叫作垃圾回收器。JVM 规范并没有规定垃圾回

2020-06-27 18:46:42

二 垃圾回收:第05讲:大厂面试题:得心应手应对 OOM 的疑难杂症

在前面几个课时中,我们不止一次提到了堆(heap),堆是一个巨大的对象池。在这个对象池中管理着数量巨大的对象实例。而池中对象的引用层次,有的是很深的。一个被频繁调用的接口,每秒生成对象的速度,也是非常可观的。对象之间的关系,形成了一张巨大的网。虽然 Java 一直在营造一种无限内存的氛围,但对象不能只增不减,所以需要垃圾回收。那 JVM 是如何判断哪些对象应该被回收?哪些应该被保持呢?在古代,刑罚中有诛九族一说。指的是有些人犯大事时,皇上杀一人不足以平复内心的愤怒时,会对亲朋好友产生连带责任。诛

2020-06-27 17:24:22

一 基础原理:第04讲:动手实践:从栈帧看字节码是如何在 JVM 中进行流转的

在上一课时我们掌握了 JVM 的内存区域划分,以及 .class 文件的加载机制。也了解到很多初始化动作是在不同的阶段发生的。但你可能仍对以下这些问题有疑问:怎么查看字节码文件? 字节码文件长什么样子? 对象初始化之后,具体的字节码又是怎么执行的?带着这些疑问,我们进入本课时的学习,本课时将带你动手实践,详细分析一个 Java 文件产生的字节码,并从栈帧层面看一下字节码的具体执行过程。工具介绍工欲善其事,必先利其器。在开始本课时的内容之前,先给你介绍两个分析字节码的小工具。java

2020-06-27 15:24:14

一 基础原理:第03讲:大厂面试题:从覆盖 JDK 的类开始掌握类的加载机制

本课时我们主要从覆盖 JDK 的类开始讲解 JVM 的类加载机制。其实,JVM 的类加载机制和 Java 的类加载机制类似,但 JVM 的类加载过程稍有些复杂。前面课时我们讲到,JVM 通过加载 .class 文件,能够将其中的字节码解析成操作系统机器码。那这些文件是怎么加载进来的呢?又有哪些约定?接下来我们就详细介绍 JVM 的类加载机制,同时介绍三个实际的应用场景。我们首先看几个面试题。我们能够通过一定的手段,覆盖 HashMap 类的实现么? 有哪些地方打破了 Java 的类加载机制?

2020-06-27 14:03:51

一 基础原理:第02讲:大厂面试题:你不得不掌握的 JVM 内存管理

本课时我们主要讲解 JVM 的内存划分以及栈上的执行过程。这块内容在面试中主要涉及以下这 3 个面试题:JVM 是如何进行内存区域划分的? JVM 如何高效进行内存管理? 为什么需要有元空间,它又涉及什么问题?带着这 3 个问题,我们开始今天的学习,关于内存划分的知识我希望在本课时你能够理解就可以,不需要死记硬背,因为在后面的课时我们会经常使用到本课时学习的内容,也会结合工作中的场景具体问题具体分析,这样你可以对 JVM 的内存获得更深刻的认识。首先,第一个问题:JVM的内存区域是怎么高效划分

2020-06-27 13:04:15

一 基础原理:第01讲:一探究竟:为什么需要 JVM?它处在什么位置?

从本课时开始我们就正式进入 JVM 的学习,如果你是一名软件开发工程师,在日常工作中除了 Java 这个关键词外,还有一个名词也一定经常被提及,那就是 JVM。提到 JVM 我们经常会在面试中遇到这样的问题:为什么 Java 研发系统需要 JVM? 对你 JVM 的运行原理了解多少? 我们写的 Java 代码到底是如何运行起来的?想要在面试中完美地回答这三个问题,就需要首先了解 JVM 是什么?它和 Java 有什么关系?又与 JDK 有什么渊源?接下来,我就带你拨开这些问题的层层迷雾,想要...

2020-06-27 11:19:49

深入浅出 Java 虚拟机——专题

课程目录开篇词开篇词:JVM,一块难啃的骨头基础原理第01讲:一探究竟:为什么需要 JVM?它处在什么位置?第02讲:大厂面试题:你不得不掌握的 JVM 内存管理第03讲:大厂面试题:从覆盖 JDK 的类开始掌握类的加载机制第04讲:动手实践:从栈帧看字节码是如何在 JVM 中进行流转的垃圾回收第05讲:大厂面试题:得心应手应对 OOM 的疑难杂症第06讲:深入剖析:垃圾回收你真的了解吗?(上)第06讲:深入剖析:垃圾回收你真的了解吗?(下)第07讲:大厂面试题:有了 G

2020-06-27 11:03:22

模拟(手写)ArrayList

1、自定义异常类IllegalArgumentMyException类package com.example.demo.collection;/** * @Description 自定义非法参数异常 * @Auther gf.x * @Date 2020/5/24 15:38 */public class IllegalArgumentMyException extends RuntimeException{ public IllegalArgumentMyExcept

2020-06-03 20:24:52

oracle创建用户并授权

oracle数据库的权限系统分为系统权限与对象权限。系统权限( database system privilege )可以让用户执行特定的命令集。例如,create table权限允许用户创建表,grant any privilege 权限允许用户授予任何系统权限。对象权限( database object privilege )可以让用户能够对各个对象进行某些操作。例如delete权限允许用户删除表或视图的行,select权限允许用户通过select从表、视图、序列(sequences)或快照

2020-05-26 23:43:12

手动启动 oracle 服务

手动启动 Oracle 服务为了学习,我们常常会在个人PC上安装 Oracle 数据库,这大大影响了计算机的运行速度,尤其是计算机开机速度,如果 Oracle 使用频率并不是非常高,我们可以禁止 Oracle 服务的自动启动,真正用到的时候再手动启动 Oracle 服务。此文用到的 Oracle 版本: oracle 11g R2步骤一:修改 oracle 服务为手动启动打开服务窗口:使用win + r快捷键打开运行窗口,输入命令services.msc按回车。 在标准视...

2020-05-26 21:12:28

Oracle11g数据库的下载与安装

1、到oracle官网找到11g下载本人百度云保存了32位、64位的oracle11g文件链接: https://pan.baidu.com/s/1qTNmWzmfUwac5ynFfN_q4g 密码: yvp12、下载后解压文件3、双击setup安装4、提示未提供邮件,选择是忽略即可5、安装选项中选择创建和配置数据库6、因在本机测试安装,选择桌面类7、安装目录保持默认,设置好全局数据库管理员的密码,并记住8、弹出提示密码过于简单,选择是,忽略提示继续安

2020-05-26 00:59:09

Java数组及数组工具类Arrays的使用

package com.example.demo;import org.junit.Test;import java.util.Arrays;/** * @Description 数组工具类Arrays的使用 * @Auther gf.x * @Date 2020/5/16 18:58 */public class TestArrays { //1. System.arraycopy()数组复制方法 @Test public void test() { .

2020-05-19 22:09:40

MySQL8.016安装和配置——Windows

一、安装环境OS:Windows 10MySQL:mysql 8.0.16二、安装过程(一)下载根据自己电脑配置,从官方网站下载MySQL安装文件。选择操作系统类型,然后点击Download。进入下载页面,不用管其他的,直接点击最下方 No thanks,just start my download,开始下载。(二)安装1、双击安装文件,开始安装。安装之前系统需要进行一些准备,耐心等待。进入安装首页,选择接受协议,点击Next。2、选择安装方式。最简单的是开发者默认方式

2020-05-19 21:55:05

数据库设计规范化的 5 个要求

通常情况下,可以从两个方面来判断数据库是否设计的比较规范。一是看看是否拥有大量的窄表,二是宽表的数量是否足够的少。若符合这两个条件,则可以说明这个数据库的规范化水平还是比较高的。当然这是两个泛泛而谈的指标。为了达到数据库设计规范化的要求,一般来说,需要符合以下五个要求。要求一:表中应该避免可为空的列。虽然表中允许空列,但是,空字段是一种比较特殊的数据类型。数据库在处理的时候,需要进行特殊的处理。如此的话,就会增加数据库处理记录的复杂性。当表中有比较多的空字段时,在同等条件下,数据库处理的性能

2020-05-18 00:16:18

你不得不知道的 MySQL 优化原理

说起MySQL的查询优化,相信大家收藏了一堆奇淫技巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型….. 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用。MySQL逻辑架构如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架构图。.

2020-05-18 00:15:15

MySQL 性能优化的最佳 20+ 条经验

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显。关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过 多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库。希望下面的这些优化技巧对你有用。1. 为查询缓存优化你的查询大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQ

2020-05-18 00:09:29

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 分享学徒
    分享学徒
    成功上传1个资源即可获取