2 Crystal X.

尚未进行身份认证

我要认证

聚为一团火,散是满天星

等级
TA的排名 1k+

Java - 【设计模式】旨在减少分支的策略模式(Strategy Pattern)

设计模式 - 策略模式(Strategy Pattern)目的: 多种算法相似的情况下,使用什么方法可以减少方法中的判断语句?-> [减少方法中的分支语句!]一:目的-> 对于一个int[] arr,我们需要对其分别采用十种排序方式进行排序,该怎么办呢?-> 如果直接在方法体中使用if...else...或switch...case...,那么该方法内部涉及到了许多方法的调用,后期维护十分不方便。二:思路将算法类似的功能使用一个单独的类进行封装,这些类由于相似性,现使其继承自

2020-09-20 17:10:31

Java - 【设计模式】观察者模式(Observer Pattern)

设计模式 - 观察者模式(Observer Pattern)-> 解决问题:一个对象的状态发生改变,如何通知其他对象?被观察对象(Subject)观察对象(Observer)-> 注意: 互相指定,互相包含!一:被观察对象(Subject)1> 维护一个可变对象,该对象变化对应一个方法,该方法内部需要通知所有观察者(notifyAllObservers) private int state; public void setState(int state) {

2020-09-20 16:13:24

JVM - 【GC】垃圾回收期的发展及选择

GC的演变及选择推荐官网链接:【点我(有据可循)】一:图示二:GC选择除非您的应用程序有非常严格的暂停时间要求,否则请先运行您的应用程序并允许VM选择收集器(如果没有特别要求。使用VM提供给的默认GC就好)。如有必要,请调整堆大小以提高性能。 如果性能仍然不能满足您的目标,请使用以下准则作为选择收集器的起点:如果应用程序的数据集较小(最大约100 MB),则选择带有选项-XX:+ UseSerialGC的串行收集器。如果应用程序将在单个处理器上运行,并且没有暂停时间要求,则选择带有

2020-09-17 23:04:14

Java - 【方法区】OOP多态上下转型(非静态内容)

类在方法区中的存储(非静态内容)一:测试代码package xyz.xx.day02.down;/** * 多态上下转型测试 */public class OOPTest1 { public static void main(String[] args) { Cat cat = new Cat("咪咪",1,"白色"); System.out.println(cat); Animal ani = new Cat("咪咪",2,"白色"

2020-09-17 21:52:58

JVM - 【GC】使用JProfiler查找指定类的GCRoot(s)

GC篇 - 使用JProfiler查找指定类的GC-Root(s)一:JProfiler下载安装与集成二:测试package xyz.xx.chapter3;/** * 使用JProfiler查找某个类的GcRoot(s) */public class GCRootTest { public static void main(String[] args) { Obj o = new Obj(); try { Thread

2020-09-16 17:40:00

JVM - 【GC】四种引用类型

Java四种引用类型强引用(StrongReference)软引用(SoftReference)弱引用(WeakReference)虚引用(PhantomReference)一:继承关系图(JDK1.2)二:强引用(StrongReference)不可被回收package xyz.xx.chapter2;/** * -XX:+PrintGCDetails * * 强引用如果为可触及状态不会被GC回收 */public class StrongReferenceTest1

2020-09-16 09:40:31

JVM - 【字符串常量池】字符串拼接操作

字符串拼接操作String a = "hello" + "world";final String a = "hello";String b = a + "world";String a = "hello";String b = a + "world";一:方式一分析及验证二:方式二分析及验证三:方式三分析及验证含有变量的字符串在拼接时,根据JDK版本不同,底层实现也相应不同;四:面试题注意:JDK9及之后现不做分析(~)package xyz.xx.

2020-09-15 15:59:40

JVM - 【字符串常量池】new String(“hello“)会创建几个对象?

new String(“hello”)会创建几个对象 ?一:测试package xyz.xx.chapter1;/** * new String()会创建几个对象? */public class StringTest2 { public static void main(String[] args) { // 2 String a = new String("hello"); // 1 String b = "hello

2020-09-15 14:43:45

JVM - 【IDEA】JDK6、7、8、9、11、14安装配置

IDEA JDK安装及配置一:国内下载地址https://repo.huaweicloud.com/java/jdk/二:安装(Windows x64)可自定义指定JDK安装目录,JRE默认:C:\Program Files\JavaJDK11、JDK14安装后默认没有JRE三:IDEA配置配置编译环境配置运行环境...

2020-09-15 11:35:56

JVM - 【字符串常量池】-XX:StringTableSize

字符串常量池 - StringTable一:配置常量池大小-XX:StringTableSize=60013JDK1.6默认为1009,JDK1.7之后默认为60013,字符串常量池底层为HashTable,合理增大常量池大小会解决Hash冲突问题JDK1.8开始1009是可以设置的最小值二:测试(常量池大小对执行效率的影响)package xyz.xx.chapter_string;import java.io.BufferedReader;import java.io.F

2020-09-14 23:30:35

JVM - 【执行引擎】解释器与JIT

执行引擎 - 解释器与JITExecute EngineInterpreterJust-In-Time Compiler一:什么是解释器与JIT?1> 解释器解释器将字节码直接翻译为机器指令执行(Java);在Python中不存在字节码,cPython会直接将python程序翻译为机器指令执行。2> JITJust-In-Time 即时编译器,属于后端编译器(程序运行时动态编译),常与解释器配合使用,互惠互利。二:HotSpot执行引擎策略  

2020-09-14 19:13:38

JVM - 【对象实例化过程】6个阶段

对象实例化过程 - 六个阶段加载类元信息至"方法区"在堆中分配内存内存规整内存不规整处理并发问题加锁设置TLAB(Thread Local Allocation Buffer)-XX:+UserTLAB-XX:TLABWasteTargetPercent=1%默认赋值成员变量赋默认值< clinit >设置对象头信息显式初始化成员变量代码块构造函数(< init >)一:显式初始化阶段package xyz

2020-09-14 11:07:45

JVM - 【对象内存布局】3部分

对象内存布局对象在JVM中是如何存储的?对象头中都有哪些东西?一:对象头(Header)1> 运行时元数据HashCodeGC分代年龄对象持有的锁对象持有的锁状态线程ID…2> 类型指针指向元数据类型(指明当前类类型)obj.getClass()二:实例数据(Instance Data)1> 父类数据2> 子类数据三:对齐填充(Padding)确保内存规整附加图片(理解性)...

2020-09-14 11:03:26

JVM - 【HotSpot代码优化】标量替换

HotSpot代码优化 - 标量替换问题:代码中所有new的对象都是分配在Heap上吗? NO!一:单词汇总scalar n.标量aggregate n.聚合量aggressive adj. 好斗的,侵略性的escape vt.逃避、逃逸analysis n.分析allocation n.分配eliminate vt.消除、排除、淘汰二:优化参数-XX:+D

2020-09-13 23:48:29

JVM - 【HotSpot参数配置】Heap

Heap链接:Java虚拟机规范一:堆参数初始化配置-Xms MemoryStart-Xmx MemoryMax二:-XX:-UseAdaptiveSizePolicy三:查看配置后的堆内存大小1> jvisualvm2> jps + jstat -gc PID3> -XX:+PrintGCDetails四:堆内存详细划分...

2020-09-13 17:08:00

Java - 【OOP】类、抽象类与接口

Java类、抽象类、接口一:类(Class)类是面向对象编程封装后的产物,内部封装有成员属性与成员方法,成员有相应的访问修饰符修饰以控制其作用域与外界对其访问权限。二:抽象类(Abstract Class)抽象类是对类的抽象,在类的基础上添加一些新功能/特性,同时也增加了一些限制;1> 限制抽象类不可以通过new创建实例(匿名实现类除外)2> 特性*允许有普通成员变量和成员方法的存在(在类的基础上进行的拓展)抽象类中新增抽象方法(abstract修饰),抽象方法不具

2020-09-13 09:26:31

Java - 【package】包与访问修饰符

目录包(package)包的定义包的导入访问修饰符private默认protectedpublic一:包(Package)java中的包使对文件夹的一种抽象描述;1> 包的定义/* 包的定义 a) package ...必须放在文件第一句非注释位置,有且只能有一句*/package kyleeo.util;public class Demo{ public Demo(){} public void show(){ System.ou

2020-09-13 09:02:47

JVM - 【运行时数据区】VMS

VMS:Virtual Mechine Stack(虚拟机栈)每个线程都会有自己的VMS,VMS本质上是一个栈,栈内部数据类型为“栈帧”;栈帧:局部变量表(LocalVariablesTable) 操作数栈/表达式栈(Operand Stack/Expression Stack) 一:配置VMS大小JVM - 【HotSpot参数配置】-Xss二:局部变量表从编译后的字节码指令可以看出:byte、short、int、char、boolean在写入操作数栈中都会以.

2020-09-12 11:48:53

JVM - 【HotSpot参数配置】-Xss

Java HotSpot VM OptionsVMS:Java Virtual Machine Stack每个线程都有自己独立的VMS、PC、NMS一:查看JVM中VMS默认大小-XX:+PrintFlagsInital二:设置VMS大小注意:测试实验结果:-Xss512k 会将ThreadStackSize设置为512k,递归测试正常-XX:ThreadStackSize=512k 会将Thr...

2020-09-11 09:43:58

JVM - 【类加载子系统】ClassLoader

ClassLoader:在ClassLoaderSubSystem中Loading阶段加载.class文件进入内存形成Class类 一、ClassLoader的分类package xyz.xx.chapter2;/** * F4 查看当前类的Hierarchy(等级图) * Ctrl+Shift+T 搜索指定类 */public class ClassLosderTest { public static void main(String[

2020-09-09 12:33:13

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到王者
    签到王者
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 推荐红人
    推荐红人
    发布高质量Blink获得高赞和评论,进入推荐栏目即可获得
  • 精彩红人
    精彩红人
    发布高质量Blink获得高赞和评论,进入精彩栏目即可获得
  • 阅读者勋章Lv4
    阅读者勋章Lv4
    授予在CSDN APP累计阅读博文达到90天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。
  • 分享王者
    分享王者
    成功上传51个资源即可获取