我总是能够为在32位Windows XP(Java 1.4,1.5和1.6)上运行的Java SE分配1400兆字节.
java -Xmx1400m ...
Run Code Online (Sandbox Code Playgroud)
今天我在使用Java 1.5_16和1.6.0_07的新Windows XP机器上尝试了相同的选项并得到错误:
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.
Run Code Online (Sandbox Code Playgroud)
通过反复试验,我可以在这台机器上分配1200兆字节.
任何想法为什么一台机器将允许1400和另一台只有1200?
编辑:该机器有4GB的RAM,大约3.5GB,Windows可以识别.
我不是一个优秀的java程序员,这只是我的爱好,但我渴望知道的不仅仅是普通的东西.
我想解决java中多线程的数学问题.我的数学问题可以分成工作单元,我想在几个线程中解决.
但是我不希望有一定数量的线程处理它,而是相应的线程数量与cpu核心量相对应.我的问题是,我在互联网上找不到一个简单的教程.我找到的只是固定线程的例子.
那么你能帮助我找到一个好的tuturial的链接或者能给我一个简单而好的例子吗?那会非常好:)
为什么enum的构造函数不能访问静态字段和方法?这对于类非常有效,但不允许使用枚举.
我要做的是将我的枚举实例存储在静态Map中.考虑这个允许通过abbreivation查找的示例代码:
public enum Day {
Sunday("Sun"), Monday("Mon"), Tuesday("Tue"), Wednesday("Wed"), Thursday("Thu"), Friday("Fri"), Saturday("Sat");
private final String abbreviation;
private static final Map<String, Day> ABBREV_MAP = new HashMap<String, Day>();
private Day(String abbreviation) {
this.abbreviation = abbreviation;
ABBREV_MAP.put(abbreviation, this); // Not valid
}
public String getAbbreviation() {
return abbreviation;
}
public static Day getByAbbreviation(String abbreviation) {
return ABBREV_MAP.get(abbreviation);
}
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为枚举不允许在其构造函数中使用静态引用.然而,如果实现为类,它只能找到:
public static final Day SUNDAY = new Day("Sunday", "Sun");
private Day(String name, String abbreviation) {
this.name = name;
this.abbreviation = abbreviation;
ABBREV_MAP.put(abbreviation, …Run Code Online (Sandbox Code Playgroud) 如何配置JPA/Hibernate将数据库中的日期/时间存储为UTC(GMT)时区?考虑这个带注释的JPA实体:
public class Event {
@Id
public int id;
@Temporal(TemporalType.TIMESTAMP)
public java.util.Date date;
}
Run Code Online (Sandbox Code Playgroud)
如果日期是太平洋标准时间(PST)的2008年2月3日上午9:30,那么我希望将数据库中存储的2008年2月3日下午5:30的UTC时间.同样,当从数据库中检索日期时,我希望它被解释为UTC.所以在这种情况下530pm是在UTC时间下午5点.当它显示时,它将被格式化为太平洋标准时间上午9:30.
Eclipse昨天运行正常(自从我在大约一年前安装它以来).现在突然间我在启动时遇到以下错误:
"A Java Runtime Environment (JRE) or Java Development Kit (JDK) must be available in order to run Eclipse. No Java virtual machine was found after searching the following locations:
C:\Program Files\eclipse\jre\bin\javaw.exe
javaw.exe in your current PATH"
Run Code Online (Sandbox Code Playgroud)
我没有在我的机器上更改任何相关的Eclipse/Java,但昨天我的机器上应用了Windows更新,所以也许这与它有关(但我没有看到任何会影响Java的东西).我查看了有关向PATH添加内容或向Eclipse ini添加-vm选项(无法使其工作)或将jre文件夹复制到eclipse\jre的所有其他帖子(这有效但不看起来像是一个很好的长期解决方案).所以我真的想弄清楚如何让事情回到"默认"设置而不会弄乱东西.
我在跑 Windows 7, Eclipse Helios and Java 1.6.0_26.
这是半咆哮,半问题.
是否值得使用Grails?我正在尝试开发一个相对简单的数据库驱动的Web应用程序.我的专长是Java,所以Grails自然是个不错的选择.起初我想过使用Spring,JPA和Hibernate,但我之前已经使用过它,并且遇到了各种繁琐的配置和编码工作.Grails称自己为解决这个问题.
我对Grails最大的挫败感是所有不起作用的小事.我的意思是,它不会像人们直觉认为的那样起作用.边缘非常粗糙.我经常遇到问题.有时这是我缺乏Grails的理解 - 有时候我发现了合法的Grails错误.
一个主要问题是缺乏良好的Eclipse集成.有一个Groovy和Grails插件,但除了语法高亮之外它没有什么作用.从Java调用Groovy,反之亦然,配置非常痛苦.没有良好的IDE支持是一个主要的失败.
发生的事情是我坐下来尝试开发我的Web应用程序.在一天结束时,我意识到我花了大约85%的时间调试与Grails相关的问题.如果不是Eclipse的问题,那么它的预先加载,在视图中获取,一个一对多的关系,怪异的空文件的错误行为,怪异的财产/消气错误 -它只是不停去.这只是我今天遇到的问题的一个例子.我与Grails的最后一次坐下来产生了许多不同的问题.
我有时想知道它是否值得.我很好奇其他人是否经历过这种情况.是否有人真正使用Grails来高效地创建Web应用程序?是否还有其他我需要考虑的快速Web开发框架?
我有一个由Integer键入的Map.使用EL,我如何通过其键访问值?
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "One");
map.put(2, "Two");
map.put(3, "Three");
Run Code Online (Sandbox Code Playgroud)
我认为这会有效,但它没有(地图已经在请求的属性中):
<c:out value="${map[1]}"/>
Run Code Online (Sandbox Code Playgroud)
跟进:我追查了问题.显然${name[1]},使用数字进行地图查找Long.我想通了这一点,当我换HashMap到TreeMap和收到的错误:
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long
Run Code Online (Sandbox Code Playgroud)
如果我将地图更改为:
Map<Long, String> map = new HashMap<Long, String>();
map.put(1L, "One");
Run Code Online (Sandbox Code Playgroud)
然后${name[1]}返回"一".那是什么?为什么<c:out>将数字视为一个长数.对我来说似乎违反直觉(因为int比长期更常用).
所以我的新问题是,是否有EL符号通过Integer值访问地图?
有没有办法使用Jackson JSON处理器进行自定义字段级序列化?例如,我想要上课
public class Person {
public String name;
public int age;
public int favoriteNumber;
}
Run Code Online (Sandbox Code Playgroud)
序列化为以下JSON:
{ "name": "Joe", "age": 25, "favoriteNumber": "123" }
Run Code Online (Sandbox Code Playgroud)
注意,age = 25被编码为数字而favoriteNumber = 123被编码为字符串.开箱即用杰克逊编组int了一个号码.在这种情况下,我希望favoriteNumber被编码为字符串.
JPA实体类是否可以包含两个嵌入(@Embedded)字段?一个例子是:
@Entity
public class Person {
@Embedded
public Address home;
@Embedded
public Address work;
}
public class Address {
public String street;
...
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,一个Person可以包含两个Address实例 - 家庭和工作.我正在使用JPA和Hibernate的实现.当我使用Hibernate Tools生成模式时,它只嵌入一个Address.我想要的是两个嵌入式Address实例,每个实例的列名都有区别或预先设置了一些前缀(例如家庭和工作).我知道@AttributeOverrides,但这要求每个属性都被单独覆盖.如果嵌入的object(Address)变大,因为每个列需要单独重写,这会很麻烦.
有一种观点认为在关系数据库中不应该允许空值.也就是说,表的属性(列)不应该允许空值.来自软件开发背景,我真的不明白这一点.似乎如果null在属性的上下文中有效,那么应该允许它.这在Java中非常常见,其中对象引用通常为null.没有广泛的数据库经验,我想知道我是否在这里遗漏了一些东西.