集测的时候出现原来的功能不好使的情况(把我急死了);
手机号换绑(接口C)后,查询个人信息(接口I),显示的信息还是老的手机号.
后来看日志,发现接口C 和接口I 调用的ip不同,但是两个接口引用的是同一个常量啊?
我就突然想到了修改常量类之后,接口C 没有重新编译的问题.
为了确认这点,我找运维,请他把这两个接口的service class文件发给我,我使用jd-gui.exe 反编译,发现这两个接口中的ip确实不同.于是我决定找到问题的源头,我详细问了运维部署项目的流程.集测部署流程如下:
我就往上追溯到jenkins,于是我就找到负责jenkins 的同事,让她把最近一次jenkins部署的相关class文件发给我,我反编译,发现ip不对.那么问题就不在运维,而是在jenkins了.
而且这个同事把编译的结果清理之后,重新部署,发给我相同的class,我反编译之后,发现ip就对了.
所以出问题的环节锁定在jenkins 了.
于是我让该同事查看jenkins 具体构建代码,结果发现没有调用mvn clean
而且我马上做了一个测试
有两个类,一个是常量类,一个是测试类
常量类:
package test; public class Constant { public static final String username="黄威"; }
测试类:
package test; public class Huangwei { private String myName=Constant.username; public static void main(String[] args) { System.out.println(Constant.username); } }
编译之后,反编译Huangwei.class
结果如下:
接着我修改Constant类,把Constant中username的值改为"黄威2222222222222222"
保存之后,执行maven命令:mvn package
maven执行完之后,再次反编译Huangwei.class,仍然是:
根本原因:
因为maven发现Huangwei 类没有修改,所以没有重新编译.
但是Huangwei 引用的常量修改过了.
解决办法:添加mvn clean
参考:
相关推荐
- **MySQL**:作为目标数据库,接收从HDFS同步过来的数据。 4. **实训内容**: 主要任务是配置和运行DataX的JSON配置文件,完成HDFS到MySQL的数据同步。 5. **配置JSON文件**: JSON文件定义了数据读取(`...
- **匿名内部类**没有名字,主要用于实现接口或继承类,并立即创建其实例。它在定义时必须实现接口或继承类的所有抽象方法。 #### 4. 静态嵌套类与内部类的区别 - **静态嵌套类**(也称为“静态内部类”)不需要...
内部类可以直接访问外部类的所有成员,包括私有成员,但反过来不行。 ### 28. 匿名内部类的扩展性 匿名内部类可以继承其他类或实现接口。 ### 29. super.getClass() `super.getClass()`返回父类的`Class`对象,...
匿名内部类可以继承其他类或实现接口,但它没有名字,只能在声明时立即实例化,并且不能拥有任何成员变量或方法,除了从继承或实现中获得的那些。 ### super.getClass()方法调用 `super.getClass()`方法返回当前类...
而StringBuilder则没有同步方法,所以在单线程环境下效率更高。 8. **字符串常量池** 在Java中,字符串常量池是一个存储字符串字面量(常量)的区域,当创建一个字符串字面量时,会先检查该字符串是否已经存在于...
在Objective-C中,没有像C++和Java那样的抽象类概念,但NSOperation是一个未完全实现的类,通常作为其他操作类的基类。 9. **冒泡排序**:冒泡排序是一种简单的排序算法,它重复地遍历待排序的数列,一次比较两个...
如果一个源文件中没有公共类,则文件名可以随意。 7. 排序都有哪几种方法?请列举。用JAVA实现一个快速排序? 常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。快速排序是通过选择一...
为什么要有GC? GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域...
- **什么是嵌套类及内部类?** - 嵌套类是指在一个类的定义内部定义的类。 - 内部类可以访问外部类的成员,包括私有成员。 - **静态嵌套类** - 不依赖于外部类实例的内部类被称为静态嵌套类。 - **在外部类中...
10.1.7 接口中定义常量 10.1.8 Cloneable接口 10.1.9 Cloneable接口应用 10.1.10 抽象类与接口区别 10.2 内部类概念 10.3 成员内部类 10.3.1 创建内部类对象 10.3.2 内部类的this引用 10.3.3 成员内部类的...
- C正确,接口中的所有成员默认为`public static final`,即常量,不能定义变量。 - D错误,接口里的方法默认是`public`的,不能声明为`private`。 4. **Java线程操作方法**: - 不推荐使用`Thread.suspend()`...
在`scsi_ioctl.h` 文件中,可能会定义了`ioctl`命令的常量和结构体,用于传递和解析用户空间传递过来的参数。例如,可能有结构体定义了如何封装SCSI同步参数,以及`ioctl`函数的原型声明,使得其他模块可以调用这些...
例如,当系统接收到USB传输过来的PCM数据后,可能会先存储到缓冲区中,然后根据当前的USB帧计数器确定何时读取并处理这些数据,以避免因处理速度与接收速度不匹配而导致的音画不同步或数据丢失。 `pcm.c`和`pcm.h`...
- **重载**:在同一类中定义多个同名方法,但参数列表不同。 #### 23. **单例模式** 单例模式确保一个类只有一个实例,并提供一个全局访问点。例如: ```java public class Singleton { private static Singleton...
在C/C++中,`strcat`是一个内置函数,需要注意的是目标字符串需要有足够的空间来容纳复制过来的字符串。 ### 16. MFC与字符串 MFC(Microsoft Foundation Classes)提供了对字符串操作的支持,其中包括`CString`类...
- 多线程:包括Thread、Runnable、同步机制(synchronized、wait/notify等)以及并发库中的并发工具类。 - 泛型:提供类型安全,避免类型转换,增强代码可读性和复用性。 - I/O流:包括字节流和字符流,以及缓冲...
- **选项对话框和窗口类中的数据交换**:通过`DoDataExchange`函数实现数据同步。 #### 第十三课:图形保持功能与设备坐标转换 - **让CDC上输出的文字、图形具有保持功能**:使用元文件设备上下文实现图形的保存。 ...
- **FULL OUTER JOIN**:返回左右表的所有行,即使某些行在另一表中没有匹配。 #### 37. Hibernate的Session作用? - 管理持久化对象的生命周期。 - 提供事务支持。 - 执行 CRUD 操作。 #### 38. hibernate持久化...
3. **同步和原子操作**:CUDA中的同步函数如`__syncthreads()`用于确保线程块内的线程同步执行,避免数据竞争问题。原子操作如`atomicAdd()`、`atomicMax()`等可以保证对共享内存或全局内存的无锁更新,避免在并发...