`
xzzeng0901
  • 浏览: 8660 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

增量打不上去?

 
阅读更多

中午吃饭讨论到了增量打不上的问题。

这样子的情况:

你修改了A类,编译成Jar包,把jar包名称、A.class、路径发给实施地测试验证,实施地按要求操作了,重启服务后,发现增量没打上啊,拿服务端日志一看,还是原来的情况。

于是怀疑实施地没根据这个jar包名称和路径替换class文件,要实施地的把打好增量的jar包发过来,反编译一看,是这个class文件啊,增量打进去了啊。

为什么?难道是正式库和测试库搞混了?...

然后波哥说到一种情况,你修改了A类,是B类调用A类的东西,那么编译之后,把B.class文件发过去就行了。

的确有这种情况。

事实是怎样子的呢?看一个例子(来自于秦小波老师的书)

public class Constant{	
	//定义一个常量
	public final static int MAX_AGE = 150;
};
public class TestClient{
	public static void main(String[] args){
		System.out.println("人类极限寿命是:" + Constant.MAX_AGE);
	}
};

 

分别javac编译java执行一下,输出的是150.

 

然后修改常量类,把150改成200。改完后,重新编译常量类javac Constant.java,因为TestClient没修改,所以直接执行java TestClient.

结果是:输出的还是150.



 

为什么?因为java对于final修饰的基本类型和String类型,编译器会认为它是稳定态,所以在编译的时候就直接编译到字节码中了,避免在运行期间引用,以提高代码的执行效率。

 

所以,这个测试的Demo说明的就是这种情况,虽然TestClient没有修改,但是也要重新编译一下,再执行,才会出正确的结果200.

那么这种情况在eclipse中是不会出现的,因为在eclipse中,修改了Constant类,eclipse会自动编译所有引用类。

 

再回到打增量的问题,我们是怎么做的呢?修改了常量类中的final String XXX_SQL,修改了之后,的确是用eclipse把整个工程编译了,可是发给实施地的却是这一个常量类class文件,

那么实施地的引用这个常量类的class还是原来的class。。。问题显而易见。

 

所以,这种情况的增量打不上,解决办法:修改了的final修饰的基本类型和String类型的常量,被哪些类引用了,把那些类也编译好了一起发过去。

回到波哥说的那种情况,那就是若是只修改了常量,那直接发引用的类就行了,常量类不发也可以。

  • 大小: 28.6 KB
2
2
分享到:
评论

相关推荐

    全球市场跟踪月报:2021年5月,美股的增量资金来自哪里?(22页).pdf

    在股市风格上,成长股重新超越价值股,中小盘股继续跑赢大盘股。科技巨头的一季度财报强劲,进一步促进了成长股的表现。 资金流向方面,4月份EPFR数据显示,资金流入新兴市场的趋势放缓,而美股更偏好成长和金融...

    增量调制 增量调制 增量调制

    - **过载噪声**:当信号的变化速率超过了调制器的最大跟踪斜率时,调制曲线无法跟上原始信号的变化,从而产生过载噪声。 ##### 2. 最大跟踪斜率 最大跟踪斜率是指增量调制系统能够正确跟踪信号变化的最大斜率,...

    Jenkins增量更新部署

    增量部署是指在已有部署的基础上,只更新自上次部署以来发生变更的部分,而非重新部署整个应用。这种策略大大减少了部署时间,降低了服务器资源的消耗,并且减少了对运行中服务的影响。 2. **Jenkins 构建配置**:...

    oracle 增量恢复详细记录

    在增量备份过程中,RMAN会比较当前数据块的SCN与上一次备份时的Checkpoint SCN,如果当前数据块的SCN大于或等于Checkpoint SCN,则认为该数据块已发生变化,需要被备份。 - **变化跟踪文件 (Change Tracking File):...

    增量复制或增量备份

    1.可以实现增量复制,即只复制“更新时间”或“大小”变化了的文件。 本软件特别适合文件数量巨大,但是更新数量较少的情况。 比如:几十万甚至上百万个文件当中只更新其中几千个文件的情况 2.可以实现“正则表达式...

    数据备份的几种模式(全备份、增量备份、差异备份和永久增量备份)

    差异备份则是在全备份基础上,备份自上次全备份以来所有变化的数据,与增量备份相比,恢复更快,但备份文件可能会更大。 合成全备份是一种优化的增量备份方法,通过合并全备份和多个增量备份,形成一个新的全备份,...

    增量编译方法

    ### 增量编译方法在Quartus II 11.0中的应用 ...综上所述,增量编译是Quartus II 11.0中一项非常实用的功能,它不仅提高了设计者的效率,还减少了资源消耗。通过合理的使用和管理,可以极大地提升FPGA设计的开发体验。

    个人使用的打增量包批处理命令

    综上所述,这个个人使用的打增量包批处理命令可能是对项目源代码进行版本控制操作,找出变更,使用构建工具进行编译和打包,可能还涉及到文件内容的批量替换,并且整个过程通过一个定制的批处理脚本来自动化。...

    增量式模糊控制

    增量式模糊控制是一种先进的控制策略,它在传统的模糊逻辑控制(Fuzzy Logic Control,FLC)基础上进行优化,旨在提高系统的动态性能、响应速度和控制精度。与传统的模糊控制器相比,增量式模糊控制的主要特点在于它...

    如何使文件夹增量备份事半功倍?.docx

    确保源文件夹和目标文件夹位于不同的存储介质上,以确保数据安全。 4. 单击“分析”按钮,GoodSync将自动检测两个文件夹之间的差异,找出新增或修改的文件。 5. 最后,点击“同步”按钮,GoodSync将开始执行增量...

    增量型PID-PLC程序

    增量型PID程序相比于传统的位置型PID,其输出变化量是基于上一次控制周期与本次控制周期的偏差变化,这使得它在某些控制场景下具有更好的控制效果和稳定性。 PID调节的实质是根据输入的偏差值,即设定值(SP)与...

    rman增量备份图解

    差异增量备份是基于上一次全量备份或最近的0级增量备份进行的,只备份自上次全量或0级增量以来发生改变的数据块。这意味着每次差异增量备份只会包含新更改的数据,这样做的好处是恢复时只需要最近的一次全量备份...

    ETL中的数据增量抽取机制研究

    根据不同的应用场景和技术要求,数据增量抽取机制有很多种实现方式,常见的包括但不限于以下几种: 1. **时间戳方法**:利用源数据中的时间戳字段来判断数据是否发生了变化,从而确定哪些数据需要被抽取。 2. **...

    Kettle实现增量抽取数据

    在本场景中,我们将探讨如何使用Kettle从Oracle数据库中的两个表之间实现增量数据抽取,且这个过程并不依赖于时间戳。 首先,理解增量抽取的概念至关重要。增量抽取是从源系统中提取自上次抽取以来发生改变的新数据...

    增量调制_增量调制_

    2. **比较**:将当前采样的信号值与上一时刻的信号值进行比较,计算两者的差值。这个差值是增量调制的关键,因为它决定了输出脉冲的产生。 3. **量化**:根据差值大小,如果差值大于预设的阈值,那么就认为发生了...

    增量更新 相关资料

    - 下载到的增量包会在用户设备上与旧apk进行合并,这个过程需要对文件系统进行操作,将增量包中的内容智能地覆盖或添加到旧应用的相应位置。 - 合并过程中必须确保文件结构和依赖关系的正确性,以避免应用崩溃或...

    增量式PID的simulinks仿真实现

    综上所述,增量式PID的Simulinks仿真是一种有效的方法,用于理解和优化控制系统。通过实际操作,我们可以深入理解增量式PID的工作机制,以及如何在Simulink环境中进行控制器设计和性能评估。提供的压缩包文件“增量...

    增量式PID算法

    4. **更新输出**:将上一周期的输出加上计算得到的增量,得出当前周期的控制输出。 5. **限制输出**:确保控制输出在允许的范围内,如必要可进行饱和处理。 6. **更新积分项**:考虑到积分项可能导致饱和,可以使用...

    增量调制译码(声音数字编码,增量调制,增量亮调制译码实验)

    量化则是将采样的值映射到有限的数字等级上;编码则涉及到如何用二进制码字表示这些量化后的值,常见的编码方式有脉冲编码调制(PCM)、线性预测编码(LPC)等。 增量调制是一种简单的脉冲编码调制方法,其原理是...

    JAVA增量包打包工具

    无论你的代码库是在国内的Gitee上,还是国际化的GitHub或GitLab,或是传统的SVN仓库,都能轻松管理。 4. **多模块项目支持**: 在大型项目中,通常会采用模块化架构,每个模块负责不同的功能。此工具能够处理这种...

Global site tag (gtag.js) - Google Analytics