利用Aviator和策略模式实现一套简单的流程系统
迷路的老鼠 5年前 (2019-10-12) 8393浏览 5评论
业务开发时,我们经常会面对很多复杂且长的流程,整个流程写下来可能,这个流程可能是一次执行,也可能是分节点,节点需要每次手动触发,那么我们的代码会很复杂,而且对于新手也很难掌握。同时,业务需求可能经常发生变更,又或者我们需要创建同样类似的流程,不得不对...
迷路的老鼠 5年前 (2019-10-12) 8393浏览 5评论
业务开发时,我们经常会面对很多复杂且长的流程,整个流程写下来可能,这个流程可能是一次执行,也可能是分节点,节点需要每次手动触发,那么我们的代码会很复杂,而且对于新手也很难掌握。同时,业务需求可能经常发生变更,又或者我们需要创建同样类似的流程,不得不对...
迷路的老鼠 5年前 (2019-10-10) 4438浏览 2评论
什么是垃圾回收器 Java垃圾回收器是Java虚拟机(JVM)的三个重要模块(另外两个是解释器和多线程机制)之一,为应用程序提供内存的自动分配(Memory Allocation)、自动回收(Garbage Collect)功能 内存的分配和回收都发...
迷路的老鼠 5年前 (2019-10-10) 4732浏览 2评论
Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有“作用域”的概念,只有对象的引用才有“作用域”。垃...
迷路的老鼠 5年前 (2019-10-09) 4582浏览 2评论
抽象的队列式的同步器,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常用的ReentrantLock/Semaphore/CountDownLatch… ReentrantLock的锁实现是基于Abstrac...
迷路的老鼠 5年前 (2019-10-09) 4677浏览 3评论
先行发生原则(Happens-Before)是判断数据是否存在竞争、线程是否安全的主要依据。 先行发生是Java内存,模型中定义的两项操作之间的偏序关系,如果操作A先行发生于操作B,那么操作A产生的影响能够被操作B观察到。 Java内存模型中存在的天...
迷路的老鼠 5年前 (2019-10-08) 5905浏览 3评论
volatile和synchronize虽然目前业务层关注的比较少,但是他们是内存模型里面比较特殊的两个关键字,我们可以利用他们来了解一下内存模型里是如何解决多线程问题的。 指令重排 计算机在执行程序时,为了提高性能,编译器和处理器的常常会对指令做重...
迷路的老鼠 5年前 (2019-09-30) 4063浏览 2评论
java内存模型(JMM)和内存结构经常会被搞混,十个面试的人有九个以为问的是JVM内存结构,其实java的内存模型也是很重要的基础架构,决定了上层技术架构,通常面试官问你 volatile或者synchronized时,那么请注意了,他是想问你内存...
迷路的老鼠 5年前 (2019-09-30) 4281浏览 2评论
枚举我们应用的场景很多,也有一部分的高阶用户可以降低系统的复杂度,实现系统的解耦和封装,本文将从某一个场景举例说明。 场景:现有一接口,调用方传入一个枚举值比如1/2/3/4等,需要返回一个对象,该对象的内容根据枚举值一一对应,对象属性值没有重复性。...
迷路的老鼠 5年前 (2019-09-29) 6443浏览 6评论
本文将详细的聊一下Collection 相关的一些细节 前面说到了Collection包含List、Set等(queue这里不详谈),前面也说到了List是有序可重复,Set是无序不重复,这是两个特点。那我们就先这两个点总结一下,是怎么实现这两个特点...
迷路的老鼠 5年前 (2019-09-27) 5574浏览 5评论
导读 一直想复习和总结一下集合里面的一些事情,现在终于可以安安心心写写了,可能不全面,可能有错误,欢迎指正。作为概述,本文仅简要描述一下集合体系下常用的集合类以及优缺点,在后文会继续每个集合类做详细的总结和解析。 这里,先用一张图来大概了解一下常用的...