摘要:
Enum源码: Enum.java /* * Copyright (c) 2003, 2009, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject 阅读全文
摘要:
设计模式分为创建型、行为型和结构型 设计模式的6大原则: 1、开闭原则:对扩展开放,对修改关闭 2、里氏替换:任何父类出现的地方,子类都可以替换。子类不要重写和重载父类的方法 3、迪米特原则:减少类之间的耦合,调用依赖类封装好的方法,不对其进行修改 4、接口隔离:接口最小化,实现的接口不应包含不需要 阅读全文
摘要:
堆dump文件分析 Java代码: public class HeapTest2 { static class OOMObject { private byte[] arrs = new byte[64 * 1024]; // 会占用64k的堆内存 } public static void fill 阅读全文
摘要:
先复习Java中的异常 java.lang.Throwable 顶层父类 |– Error错误:JVM内部的严重问题,如OOM,程序员无法在代码中无法处理。 |–Exception异常:普通的问题。通过合理的处理,程序还可以回到正常执行流程。要求程序员要进行处理。 |–RuntimeExceptio 阅读全文
摘要:
前言 进程:进程是操作系统资源分配的最小单位 进程有自己的虚拟地址空间,这个空间包括了各种资源,例如堆、栈,各种段,它们其实都是虚拟地址空间的一块区域。所以说进程是资源分配的最小单位。 线程:线程是操作系统任务调度和执行的最小单位。 线程包含在进程之中,是进程中实际运作单位 协程:协程运行在线程之上 阅读全文
摘要:
ArrayList是容量可以改变的非线程安全集合。内部实现使用数组进行存储(需要一块内存连续的空间),集合扩容时会创建更大的数组空间,把原有数据复制到新的数组中。 ArrayList支持对元素的快速随机访问,但是插入与删除速度通常很慢(会涉及元素的移动,时间复杂度为O(n))。 public cla 阅读全文
摘要:
Lock Lock是顶层接口,它的实现逻辑并未用到synchronized,而是利用了volatile的可见性。 public interface Lock { /** * Acquires the lock.获取锁 * 如果锁不可用,则当前线程将被禁用以用于线程调度,并处于休眠状态,直到获得锁为止 阅读全文
摘要:
一、 线程不安全验证: /** * SimpleDateFormat线程安全测试 * 〈功能详细描述〉 * * @author 17090889 * @see [相关类/方法](可选) * @since [产品/模块版本] (可选) */ public class SimpleDateFormatT 阅读全文
摘要:
了解HashMap原理之前先了解一下几种数据结构: 1、数组:采用一段连续的内存空间来存储数据。对于指定下标的查找,时间复杂度为O(1),对于给定元素的查找,需要遍历整个数据,时间复杂度为O(n)。但对于有序 数组的查找,可用二分查找法,时间复杂度为O(logn),对于一般的插入删除操作,涉及到数组 阅读全文
摘要:
在分布式时代,分库分表是非常常见的,在微服务系统中,各个系统通常有自己的独立的数据库,所以,事务很难靠数据库本身保证,只能靠业务系统来控制。这就是分布式事务的由来。 在分布式系统中,每一个机器节点虽然都能够明确知道自己在事务操作过程中的结果是成功或失败,但却无法直接获取到其他分布式节点的操作结果。( 阅读全文