文章中心

今天是04月18日 星期五 欢迎 yunmawaimai 的加入!

Activiti流程定义缓存源码分析1

背景 何为缓存,缓存就是将系统或者程序中经常使用但不频繁更新的数据(或者对象)放置到内存中,以便其使用时可以进行快速地查找,而不必再去从数据库(或者其它介质)中获取数据或者创建新的重复实例操作,这样做的好处就是可以减少系统开销,提高系统运行效率。缓存在项目中占据很大的比重,如何合理的运用缓存往往决定一个系统的性能瓶颈。目前市面上比较成熟的第三方缓存框架有Redis、Memca...

Activiti源码——持久化模型

Activiti持久层是基于MyBatis框架定制了一套自己的使用方式, 本文记录的是在学习改模型时的流程及总结。一 持久层对象的封装 在activiti中持久层所有的操作模型都需要实现org.activiti.engine.impl.persistence.entity.Entity接口, 持久层对象统一交给org.activiti.engine.impl.persistence.entity.EntityManager实现类 来管理,比如 一个重要的抽象类org.

Activiti流程定义缓存源码分析8-流程缓存自定义原理

上面我们浓墨重彩地讲述了自定义节点缓存类以及将其注入流程引擎配置类实例的过程,可能读者有个疑问?节点定义的缓存数据格式是什么呢?流程引擎执行节点的时候,又是如何获取并解析节点所缓存的数据呢?这也是接下来我们需要重点讲解的地方。任务节点的缓存信息当然是在任务需要执行的地方进行解析了,比如任务的完成操作或者任务节点的入库操作。关于这一点读者可以参考之前的章节。在此我们直接找到任务节点的行为执行类Use...

Activiti流程定义缓存源码分析7-流程缓存自定义

接下来,重点看一下Activiti中如何自定义流程缓存。 上面我们提到过自定义类首先需要继承StandaloneProcessEngineConfiguration类并通过动态属性注入方式为引擎配置类注入processDefinitionInfoCache属性值。实现代码如清单x-所示。代码清单x-MyStandaloneProcessEngineConfiguration.j...

java 匿名类_java提高篇(十)-----详解匿名内部类

在java提高篇-----详解内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客。在这篇博客中你可以了解到匿名内部类的使用、匿名内部类要注意的事项、如何初始化匿名内部类、匿名内部类使用的形参为何要为final。一、使用匿名内部类内部类匿名内部类由于没有名字,所以它的创建方式有点儿奇怪。创建格式如下:new 父类构造器(参数列表)|实现接口(){//匿名内...

匿名内部类不能访问外部类方法中的局部变量

这里所说的“匿名内部类”主要是指在其外部类的成员方法内定义,同时完成实例化的类,若其访问该成员方法中的局部变量,局部变量必须要被final修饰。原因是编译程序实现上的困难:内部类对象的生命周期会超过局部变量的生命周期。局部变量的生命周期:当该方法被调用时,该方法中的局部变量在栈中被创建,当方法调用结束时,退栈,这些局部变量全部死亡。而内部类对象生命周期与其它类一样:自创建一个匿名内部类对象,系统为该对象分配内存,直到没有引用变量指向分配给该对象的内存,它才会死亡(被JVM垃圾回收)。所以完全可能

Java 在匿名内部函数中为外部函数变量赋值的解决方案

新人一枚,请多包涵。    Java匿名内部函数本人不怎么主动使用,但是经常会调用一些API,其中会调用一些接口,而这些接口是需要使用匿名内部类来实现的,于是就遇到了一些问题。    就比如okHttp3 的接口调用 OkHttpClient okHttpClient = new OkHttpClient(); final Request okRequest = new R...

匿名内部类使用外部变量为什么用 final 修饰

事实上, 匿名内部类使用外部变量时, 因为匿名内部类和外部变量的生命周期不同, 此时匿名内部类中的该变量其实是原来变量的副本方法内的外部变量作用域: 当前方法匿名内部类引用外部变量作用域: 匿名内部类的方法由此可见, 作用域不同, 即生命周期不同如果不使用 final 修饰外部变量, 那么在匿名内部类中修改变量引用时, 就会产生歧义, 好像在匿名内部类中可以修改已经不在作用域的外部变量, 然后外部变量的生命周期已经结束@Test public void test() { // 外

Java非对称加密的源代码(RSA)

鉴于rsa加密的重要性和相关源代码的匮乏,经过整理特此贴出。需要下载bcprov-jdk14-123.jar。  import javax.crypto.Cipher;  import java.security.*;  import java.security.spec.RSAPublicKeySpec;  import java.security.spec.RSAPrivateKeySpec;

匿名对象的值传递前言一般调用参考文档

前言在学习线程池的时候,发现采用创建匿名对象的时候,匿名对象内外的传递并非形参通用传递。这不经让我回忆起在校期间用SWING编写的一个socket音乐播放器在监听器里面也遇到过同样的问题:JList实现随意切换歌曲、更新线程以及问题分析,时间久远了,应该是采用全局变量解决的,当初以为是十天的课设,时间仓促,未来得及深究。这次来分析一下。

为什么内部类引用的外部变量必须用final修饰(JDK1.8可以不用final修饰, 但外部变量也不可更改, 即相当于隐性的final修饰)

final 是保护 所修饰的类、方法、变量不能被改变的,并不占用内存。  真正的原因是因为生命周期的原因。方法中的局部变量,方法结束后这个变量就要释放掉,而final会保证这个变量始终指向一个对象。  首先,内部类和外部类其实是处于同一个级别,反编译中可以看到都是对象级别的类文件,内部类不会因为定义在方法中就会随着方法的执行完毕而跟随者被销毁。问题就来了,如果外部类的方法中的变量不定义...