我之前有点问过这个问题 - JVM标志CMSClassUnloadingEnabled实际上做了什么?,但这一次略有不同!
如果我启动了-XX:+CMSPermGenSweepingEnabled设置了标志的Java VM,则会打印以下消息:
请在将来使用CMSClassUnloadingEnabled代替CMSPermGenSweepingEnabled
该-XX:+CMSPermGenSweepingEnabled标志通常用于缓解PermGen OutOfMemory错误,但是我在其他地方已经读过,人们已经发现通过遵循上述建议他们仍然有这些错误,但是通过坚持-XX:+CMSPermGenSweepingEnabled以及-XX:+CMSClassUnloadingEnabled他们的VM在重启之间保持更长时间.
是否-XX:+CMSClassUnloadingEnabled真的取代-XX:+CMSPermGenSweepingEnabled或者是否仍然有两个好处?
提前致谢
丰富ps:我知道perm gen问题的根本原因仍然是Classloader泄漏,这更多是关于JVM在我们使用上述选项时产生的消息.
我有一个Duck对象的集合,我想用多个键对它们进行排序.
class Duck {
DuckAge age; //implements Comparable
DuckWeight weight; //implements Comparable
String name;
}
List<Duck> ducks = Pond.getDucks();
Run Code Online (Sandbox Code Playgroud)
例如.我想主要根据他们的重量来排序,其次是他们的年龄.如果两只鸭子具有完全相同的重量和完全相同的年龄,那么让我们使用它们的名称作为三级键来区分它们.我可能会这样做:
Collections.sort(ducks, new Comparator<Duck>(){
@Override
public int compare(Duck d1, Duck d2){
int weightCmp = d1.weight.compareTo(d2.weight);
if (weightCmp != 0) {
return weightCmp;
}
int ageCmp = d1.age.compareTo(d2.age);
if (ageCmp != 0) {
return ageCmp;
}
return d1.name.compareTo(d2.name);
}
});
Run Code Online (Sandbox Code Playgroud)
我经常这样做,但这个解决方案闻不到.它不能很好地扩展,并且很容易搞砸.当然必须有一种更好的方法来使用多个键对Ducks进行排序!有人知道更好的解决方案吗?
EDIT删除了不必要的else分支
答案摘要:
不要这样做.法律和财务方面的影响将是灾难性的.寻找既定的第三方解决方案或聘请专家.切勿在共享服务器上存储任何敏感信息.研究最合适的加密机制.
我正在为一个客户建立一个网站,该网站需要将客户的银行信息(路由+账号)存储在数据库中以进行直接存款.以下是一些细节:
1)该网站最初将位于共享托管服务器上(这是我首先关注的问题).
2)我正在使用PHP/MySQL.
3)我打算使用mcrypt.
4)密钥将位于Web根目录之外.
请让我知道你的想法.如果可能的话,请向我提供有关ACH处理的一些资源.
谢谢!
编辑:我期待这样的回应,因为我也害怕安全问题.我向客户表达了我的担忧,这将是一个很好的支持.
编辑2:将离开这一点.首先对这个想法不满意!将调查PayPal的批量支付API.
在非服务器级计算机上,Java 6中的以下选项的默认值是什么?
Oracle的文档指出:
在运行服务器VM的服务器级计算机上,垃圾收集器(GC)已从先前的串行收集器(-XX:+ UseSerialGC)更改为并行收集器(-XX:+ UseParallelGC).
和
在运行具有并行垃圾收集器(-XX:+ UseParallelGC)的VM(客户端或服务器)的服务器级计算机上,初始堆大小和最大堆大小已更改
该页面没有描述非服务器级机器的默认值,只是例如初始堆大小是"合理的最小值".查看命令的"手册页",java有以下内容-Xms:
根据系统配置在运行时选择默认值
对不起,如果之前有人询问,我确实检查过但找不到任何东西......
在Unix中是否有一个函数来加密和解密批处理文件中的密码,以便我可以将它传递给bash文件中的其他命令?
我意识到这样做并不提供真正的安全性,如果他们正在看我的肩膀上的脚本,更多的是阻止有人意外地看到密码:)
我正在使用Red Hat 5.3.
我有一个类似于此的脚本:
serverControl.sh -u admin -p myPassword -c shutdown
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
password = decrypt("fgsfkageaivgea", "aDecryptionKey")
serverControl.sh -u admin -p $password -c shutdown
Run Code Online (Sandbox Code Playgroud)
这不会以任何方式保护密码,但会阻止某人意外地看到我的密码.
我正在查看运行Alfresco的JVM配置选项,主要是Alfresco Wiki上的这个文档.其中一个建议是使用JVM标志和.这样做的理由是:-Xcomp-Xbatch
如果您希望Hotspot预编译类,可以添加[-Xcomp和-Xbatch].但是,这将显着增加服务器启动时间,但会突出显示以后可能遇到的缺失依赖项.
从我在其他地方读到的关于-Xcomp和-Xbatch旗帜的内容,我想知道它们是否确实提供了任何好处.
-Xcomp 获得HotSpot以预先编译所有代码并进行最大程度的优化,从而推导出VM将通过系统的标准运行获得的任何分析.-Xbatch停止后台编译,这意味着在编译完成之前导致代码被编译的线程.但是,在编译完成后,先前阻塞的线程将不会运行已编译的代码,它仍将运行解释的代码.这是Java 6(Mustang)的一个变化 - 在Mustang之前,由于-Xbatch标志的存在而被阻止编译的线程一旦编译完成就保证在编译的代码中运行.因此,我猜测-Xbatch标志的推荐是在较旧的VM上运行Alfresco的遗留物.有人有想法吗?我倾向于摆脱这两面旗帜并依靠虚拟机来解决问题.
我想添加两件事,首先是我还没有访问Alfresco实例来测试这个,其次我不知道什么样的机器托管Alfresco而不是通过查看其他配置选项它必须是64位VM.尽管如此,我希望社区将有一些有用的输入,可能来自一般的HotSpot调整观点.
在java.lang.Double,有以下常量声明:
public static final double MAX_VALUE = 0x1.fffffffffffffP+1023;
public static final double MIN_NORMAL = 0x1.0p-1022;
Run Code Online (Sandbox Code Playgroud)
有什么P用?区别重要吗?
我知道L,D并F用于Longs,Doubles和Floats,但从未见过P以前.
我在我们的一个MongoDB数据库中找到了一个名为的集合my.collection.
有没有办法从MongoDB shell访问这个集合,尽管名称中有一个点?
> db.my.collection.findOne();
null
Run Code Online (Sandbox Code Playgroud)
我很确定这不正确.
JVM选项列表是否仍在任何地方维护?它似乎从甲骨文的网站上消失了,但幸运的是Wayback Machine有一个副本.
java ×5
jvm ×4
bash ×1
classloader ×1
comparable ×1
comparator ×1
jvm-hotspot ×1
mcrypt ×1
mongodb ×1
mysql ×1
passwords ×1
php ×1
security ×1
sorting ×1
unix ×1