JAVASE
S031302306
Hello world!
展开
-
【JVM】对象分配过程
引用别人的文章,一图胜千言: 对象分配流程图 1、依据逃逸分析,是否可以栈上分配?如果可以,则使用标量替换,把对象分配到栈空间上,如果线程销毁或方法调用结束后,自动销毁,不需要GC回收器介入。进行第3步操作。 2、不满足逃逸分析,判断对象是否是大对象?如果是,直接分配到堆上 Old Generation 老年代上。如果对象变为垃圾后,由老年代GC 收集器(比如 Parallel Old, CMS, G1)回收。不是大对象,则进行第3步操作。 3、判断是否可以在 TLAB中分配?如果是,在 ...转载 2022-05-21 17:05:30 · 572 阅读 · 0 评论 -
从一道例题看Java类、实例初始化的顺序
例题: class Father{ private int i = test(); private static int j = method(); static { System.out.print("(F1)"); } Father(){ System.out.print("(F2)"); } { System.out.print("(F3)"); } public int test() { System.out.print("(F4)");原创 2020-12-22 10:58:23 · 168 阅读 · 0 评论 -
反射概述与Class对象的三种获取方式
Java反射机制: 在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性。这种动态获取的信息以及动态调用对象方法的功能称为Java语言的反射机制。 类加载器: 负责将.class文件加载到内存中,并为之生成对应的Class对象。 Bootstrap ClassLoader 根类加载器 ...原创 2020-02-02 09:49:37 · 236 阅读 · 0 评论 -
Java设计模式: 单例模式
单例模式: 内存中只存在一份该类的实例对象, 分为懒汉式和饿汉式单例模式。 开发中:建议使用饿汉式单例模式 (例如JDK中的Runtime类),因为饿汉式不存在线程安全问题。 面试中:建议谈谈懒汉式单例模式,因为其中会涉及延迟加载的思想和线程安全的问题,技术含量高点。 package ms.gaoke.pattern; /* 1: 饿汉式 单例模式 * 1. 构造方法私有化, 阻止其...原创 2020-02-01 12:33:24 · 142 阅读 · 0 评论 -
泛型 ? extends E ? super E
package cn.itcast.generic; import java.util.ArrayList; import java.util.Collection; public class SupperGenericDemo { public static void main(String[] args) { // 泛型如果明确写的时候,前后必须一致 ,c2,c3,c4会报错 ...原创 2018-09-02 13:41:03 · 246 阅读 · 0 评论 -
设计模式--单例模式
单例设计模式概述: 单例模式就是要确保类在内存中只有一个对象,该实例必须自动创建,并且对外提供。 优点 : 在系统内存中只存在一个对象,因此可以节约系统资源,对于一些需要频繁创建和销毁的对象单例模式无疑可以提高系统的性能。 缺点 : 没有抽象层,因此扩展很难。 职责过重,在一定程序上违背了单一职责。 TestSinglePattern...原创 2018-08-30 09:34:21 · 212 阅读 · 0 评论 -
死锁问题 JAVA代码
MyLock.java 锁对象代码: package cn.itcast.dieLock; public class MyLock { public static Object Lock1 = new Object(); public static Object Lock2 = new Object(); } DieLock.java: package cn.itcast....原创 2018-08-24 13:55:16 · 166 阅读 · 0 评论 -
多线程 Lock
SellTickets.java package cn.itcast.lock; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; public class SellTickets implements Runnable { private int ticket...原创 2018-08-24 13:38:56 · 217 阅读 · 0 评论 -
反射越过泛型检查
ReflectionDemo.java: package cn.itcast.reflection; import java.lang.reflect.Method; import java.util.ArrayList; /** * 我给你ArrayList<Integer>的一个对象,我想在这个集合中添加一个字符串数据,如何实现呢? * */ public cla...原创 2018-08-31 08:49:55 · 221 阅读 · 0 评论 -
设计模式--装饰设计模式
装饰设计模式概述: 装饰模式就是使用被装饰类的一个子类的实例,在客户端将这个子类的实例交给装饰类。是继承的替代方案 优点: 使用装饰模式,可以提供比继承更灵活的扩展对象的功能,它可以动态的添加对象的功能,并且可以随意的组合这些功能 缺点: 正因为可以随意组合,所以就可能出现一些不合理的逻辑 Phone.java package cn.itcas...原创 2018-08-31 08:46:34 · 201 阅读 · 0 评论 -
设计模式--模版设计模式
模版设计模式概述: 模版方法模式就是定义一个算法的骨架,而将具体的算法延迟到子类中来实现 优点: 使用模版方法模式,在定义算法骨架的同时,可以很灵活的实现具体的算法,满足用户灵活多变的需求 缺点: 如果算法骨架有修改的话,则需要修改抽象类 案例:计算一段程序的运行时间: TemplatePattern.java package cn.itcas...原创 2018-08-31 08:10:47 · 243 阅读 · 0 评论 -
多线程同步方法 synchronized
SellTickets.java package cn.itcast.synchronize; public class SellTickets implements Runnable{ private int tickets = 100; //定义同一把锁 private Object obj = new Object(); @Override public void ru...原创 2018-08-24 08:35:59 · 210 阅读 · 0 评论 -
JAVA多线程常见面试题总结
1:多线程有几种实现方案,分别是哪几种? 两种。 继承Thread类 实现Runnable接口 扩展一种:实现Callable接口。这个得和线程池结合。 2:同步有几种方式,分别是什么? 两种。 同步代码块 同步方法 3:启动一个线程是run()还是start()?它们的区别? start(); ...原创 2018-08-27 21:00:22 · 365 阅读 · 0 评论 -
多线程匿名内部类实现
package cn.itcast.innerclass.startThread; /** * 匿名内部类的格式: * new 类名或者接口名(){ * 重写方法; * }; * 本质:是该类或者接口的子类对象 * */ public class InnerClassStartThread { public static void main(String[] a...原创 2018-08-27 20:46:49 · 236 阅读 · 0 评论 -
JAVA实现多线程的三种方式
方式一:继承Thread类 MyThread.java package cn.itcast.createThread; /** * 方式一: 继承Thread类 * 步骤: * a:自定义MyThread类继承Thread类 * b:MyThread类里面重写run方法 * 为什么是run方法?: * 不是类 中所有的代码都需要被线程执行的...原创 2018-08-27 20:34:34 · 270 阅读 · 0 评论 -
JAVA生产者与消费者代码优化
Student.java package cn.itcast.productAndConsumer; public class Student { private String name; private int age; private boolean flag; public synchronized void setFun(String name, int age){ ...原创 2018-08-27 07:30:42 · 192 阅读 · 0 评论 -
JAVA生产者与消费者案例
Student.java package cn.itcast.productAndConsumer; public class Student { private String name; private int age; private boolean flag; public String getName() { return name; } public void ...原创 2018-08-27 07:03:34 · 586 阅读 · 0 评论 -
Double类型数据精度丢失问题
public BigDecimal(double val) 注: 此构造方法的结果有一定的不可预知性。有人可能认为在 Java 中写入 new BigDecimal(0.1) 所创建的 BigDecimal 正好等于 0.1(非标度值 1,其标度为 1),但是它实际上等于 0.10000000000000000555111512312578270211815834045410156...原创 2018-08-10 15:21:50 · 15805 阅读 · 0 评论 -
一台电脑如何安装多个版本的JDK
1 . 准备两个版本的jdk我的两个jdk路径为: C:\Program Files\Java\jdk1.6.0_43 C:\Program Files\Java\jdk1.8.0_2512 2 . 设置两个子JAVA_HOME,一个总设置两个子JAVA_HOME: JAVA_HOME6 = C:\Program Files\Java\jdk1.6.0_43 JAVA_HOME8 = C转载 2017-03-28 11:32:57 · 21333 阅读 · 0 评论