让我们说我有一个程序,由于某种原因需要处理旧版本的序列化对象.
例如:反序列化时,可能会遇到其中一个版本.
class Pet {
private static final long serialVersionUID = 1L;
int paws;
}
class Pet {
private static final long serialVersionUID = 2L;
long paws; // handle marsian centipedes
boolean sharpTeeth;
}
Run Code Online (Sandbox Code Playgroud)
让我们假设(逻辑上)可以使用一些聪明的策略来设置非对象字段等将旧对象转换为新对象,但是:
我如何安排我的源代码?在编写转换器时,我可能需要在同一个源代码树中使用这两个版本,但是我如何在eclipse中处理它.
我应该在一个类加载器中进行反序列化,如果失败,请尝试使用另一个使用旧版本的类加载器(依此类推),还是有更好的方法?
什么是最好的策略?
在讨论java和/或垃圾收集的最近10年中,我无法防范的唯一性能损失是垃圾收集算法在分页内存架构中运行时或多或少会中断,并且堆的部分内容正在变得越来越多分页.
Unix系统(尤其是Linux)积极地记录了一段时间没有被触及的内存,虽然这对于你的普通泄漏应用程序来说是好的,但它会在内存紧张的情况下杀死javas性能.
我知道最好的做法是保持最大堆小于物理内存.(或者你会看到你的应用程序交换死亡)但是这个想法 - 至少在unix世界中,是内存可以更好地用于文件系统缓存等.
我的问题是:是否有任何分页(识别)垃圾收集算法?
我想知道是否可以在Java中扩展数组但不更改其名称,因为我有多个方法链接到此数组.我正在考虑创建一个名称相同但大两倍的新数组,然后将所有元素从第一个数组复制到第二个数组.这可能吗?
基本上我想在银行创建一个包含帐户的数组,如果客户创建了这么多的数据,那么数组就没有足够的元素,那么它应该扩展自己.
谢谢你的回复!
在oracle数据库中插入字符串时,一些国家字符会被问号替换,即使它们插入NCHAR或NVARCHAR列 - 应该能够处理所有Unicode字符.
使用Oracle的SQL Developer,sqlplus或使用JDBC驱动程序会发生这种情况.
数据库NLS_CHARACTERSET设置为WE8ISO8859P1(西欧iso-8859-1).用于NCHAR列的NLS_NCHAR_CHARACTERSET设置为AL16UTF16.(UTF-16)
任何不在NLS_CHARACTERSET中的字符似乎都被替换为反转的问号.
我需要用数据读取许多文件,但我无法使其工作.
例如:我有6个ASCII文件名为"雨,风等......"
这就是我的想法:
namelist<-c("rain","wind","sunshine hour","radiation","soil moisture","pressure")
for (i in 1:6){
metedata<-read.table('d:/namelist[i].txt')
metedata
}
Run Code Online (Sandbox Code Playgroud)
但那没用.我该怎么办?
如果我有:
int money;
money = 378;
Run Code Online (Sandbox Code Playgroud)
现在我想说多少钞票和硬币从这里出来..
瑞典有这些钞票:500,100,50,20和硬币10,5,1
所以我想从上面的money值得到输出:
3x100,1x50,1x20,1x5,3x1
我怎样才能做到这一点?