随笔分类 - Java基础栈
摘要:1. 类加载过程 验证 —— 准备 —— 解析 —— 初始化 验证阶段: 判断.class文件符合规范标准 准备阶段:给类以及静态变量分配内存并给初始值 “0” 解析阶段: 维护哥哥字段,方法类的内存指针或偏移量 初始化阶段: 变量赋值(真实的值),执行代码 什么时候一个类会进行初始化阶段? 1.n
阅读全文
摘要:Reference 引用类型 抽象父类,java.lang.ref包下 作用: GC时通过GC Root可达性分析+引用类型来判断对象是否应该回收 先上结论 没有被Reference引用的对象默认为强引用 强引用:GC时通过GC Root可达性分析判断,只要被GC Root链路关联则不回收 (顺便说
阅读全文
摘要:代理模式 意图:为其他对象提供一种代理以控制对这个对象的访问。 说白话就是在不侵入原来功能的基础上,附加一些功能。例如在执行方法前后打印日志啊,统计一下执行方法次数啊,一些异常处理啊.. 1.什么是代理模式 我看来整个代理模式大同小异就是这重要的三者 1. 被代理类 2.代理类 3.需要被增强的方法
阅读全文
摘要:正确的应用场景+合适的线程数量 = 快速运行速度 Tomcat是目前比较流行的 Web 容器,接受请求之后都会转交给线程池处理,这样可以有效提高处理的能力与并发度 经典老题: 创建线程池时应该给多大的核心线程数,最大线程数? 抛开场景谈线程数都是耍流氓, 场景的话 一般分为IO密集型与CPU密集型,
阅读全文
摘要:ThreadLocal 是啥? 有什么作用?怎么玩? 底层如何实现? 听说过ThreadLocal内存泄漏吗? 为啥? ThreadLocal key为啥设计成弱引用呢? 三步走玩转ThreadLocal 1.ThreadLocal详解 是啥: ThreadLocal专门为线程服务,为线程提供一个单
阅读全文
摘要:类加载过程 Class文件加载到虚拟机中 流程就是加载 - 连接 - 初始化,其中连接部分又分为 验证 - 准备 - 解析 到这over (也有说法是五个阶段,加载,验证,准备,解析,初始化 连着进行,其实是一样的,【其中解析阶段的顺序不一定,有可能初始化之后才开始】) 加载阶段 通过全类名获取定义
阅读全文
摘要:1.volatile关键字的作用? 2.volatile如何实现的?(底层原理) 3.volatile平时怎么用? 1.volatile关键字的作用? 老生常谈 张口就来 volatile保证可见性,不保证原子性,防止指令重排 这里简单过一下 1.1.保证可见性? 当线程安全问题(多个线程操作同一共
阅读全文
摘要:fail-fast 快速失败 fail-safe 安全失败 说的是在Iterator遍历的过程中,是不能够修改集合数据的,否则就会抛出ConcurrentModificationException。 看个demo 执行结果 看一下我们第35行抛了异常 ConcurrentModificationEx
阅读全文
摘要:单例单例,就是只允许实例化一个对象。一般实现方式也就是将构造方法私有化,然后对外暴露一个获取实例的接口 单例 可以说源自于设计模式中的单例模式吧,多种实现演进,变得越来越靠谱 最早单例模式分为懒汉式 饿汉式 懒汉式: 懒汉式很简单啊,就是全局变量声明时候直接new了,但是这样会有个占用内存的问题,因
阅读全文
摘要:BigDecimal是 java.math包下提供的一种用于精确运算的类型 用于表示数字。进行数字间的判断。比较数字大小。 阿里巴巴开发手册原文 试验 输出结果 造成这种结果是因为精度问题! BigDecimal中 equals源码 bigDecimal0 和 bigDecimal1 传的都是整数,
阅读全文
摘要:同步机制 Synchronization 画了一个简易的Java内存模型 在JVM中,主内存是公共区域,每个线程有自己独立的工作内存,所以就会有可见性的问题(两个线程同时从主内存拿到变量n到自己的工作内存,一个线程对其更改完放回主内存,是否会通知到另一个线程) synchronized 关键字 是同
阅读全文
摘要:集合: java.util包下的集合类 都是 fail-fast 快速失败的 如果多线程并发使用都是造成 并发修改异常 java.util.concurrent 包下都是 fail-safe 支持并发的 ArrayList 初始大小10 扩容每次1/2 ArrayList 默认初始化是0 第一次ad
阅读全文
摘要:多线程: 正确的应用场景+合适的线程数量 = 快速运行速度 场景:cpu密集型程序 与IO密集型程序 多核CPU 处理 CPU 密集型程序,我们完全可以最大化的利用 CPU 核心数,应用并发编程来提高效率 因为系统IO的时候是cpu是处于空闲的,可以使用多个线程来利用这个cpu空闲时间。所以于IO密
阅读全文
摘要:maven指令 mvn clean package 依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。mvn clean install 依次执行了clean、resources、compile、test
阅读全文
摘要:java常用指令: javac -> 编译 java -> 运行 jps -> 查看当前java相关进程 jinfo ->查看某一参数具体值 jinfo -flags 进程号 打出该java进程下所有JVM配置信息 jinfo -flag PrintGCDetails 进程号 -> 查看某个java
阅读全文

浙公网安备 33010602011771号