文章中心

今天是2025年08月14日 星期四 欢迎 aihome 的加入!

Java知识面试题复习(三)Java面向对象

面向对象面向对象概述面向对象和面向过程的区别面向过程:优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。缺点:没有面向对象易维护、易复用、易扩展面向对象:优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护缺点:性能比面向过程低面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。

Activiti流程定义缓存源码分析9-流程缓存使用演示

缓存数据添加 可能读者学习到这里,一定非常好奇缓存数据的结构到底是什么?接下来,我们一睹为快吧,我们还是以开篇的流程为例,部署一个流程文档并启动新的流程实例,进而查看ACT_RU_TASK数据表的变化。根据上面缓存数据的解析步骤,我们可以推测出缓存的JSON数据应该是一个map集合,如图x-所示。图x- 节点缓存数据的JSON格式首先根节点必须有一个名称为"bpmn"(通...

activiti6.0自定义流程跟踪图(流程图高亮变色及连接线中文名字不显示bug优化及修复)

效果图:问题一:使用activiti生成流程图的时候,如果使用modeler设计器,那么连线的名称不会绘制出来,究其原因是activiti框架中的一个bug这是activiti工作流框架自带的一个bug需重新写jar包中方法。将该类中方法修改入下图if (labelGraphicInfo != null) {processDiagramCanvas.drawL...

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() { // 外