我使用Hibernate访问遗留数据库.对于某些表,不强制执行父子引用完整性,并且long
对子表中的某些"父"列使用0值而不是NULL来表示"无父".
我仍然希望在@ManyToOne
和@OneToMany
字段中使用这些关系,但是EntityNotFound
因为0值与主表中的任何记录不对应而得到错误.
我有什么选择?
我正在使用mongodb的java驱动程序,文档说:
"你应该创建一个Mongo实例,并且可以在每个请求中使用它."
使用单个实例听起来像单身.
在其他地方,对于不同的库,我已经阅读了说明,我应该创建一个静态引用,因为它是线程安全的.
有人可以解释单例和创建静态引用之间的差异吗?
因此,我需要静态或通过单例实例化的实际代码是:
Mongo m = new Mongo( "localhost" , 27017 );
Run Code Online (Sandbox Code Playgroud)
有人可以解释这两种方法和潜在的差异吗?
我有一个HashMap
键是类型String
的值,值是类型LinkedList
的类型String
.
所以基本上,这就是我想要做的.
while (contentItr.hasNext()) {
String word = (String) contentItr.next();
if (wordIndex.containsKey(word)) {
LinkedList temp = (LinkedList) w.get(word); //Error occurs here
temp.addLast(currentUrl);
} else {
w.put(word, new LinkedList().add(currentUrl));
}
}
Run Code Online (Sandbox Code Playgroud)
我第一次添加一个键,值对,我没有收到任何错误.但是,当我尝试检索与现有密钥关联的链接列表时,我得到以下异常:
java.lang.Boolean cannot be cast to java.util.LinkedList.
Run Code Online (Sandbox Code Playgroud)
我没有可能的解释为什么会发生此异常.
我遇到了以下java代码.这里接口包含两个方法,其中只有一个方法在枚举中实现.它是name()
自动实现的.我的问题是它怎么可能?我之前没有读过关于枚举中自动方法实现的任何规则.那么这里发生了什么?此外,代码没有给出任何类型的编译时错误.
interface Named {
public String name();
public int order();
}
enum Planets implements Named {
Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune;
// name() is implemented automagically.
public int order() { return ordinal()+1; }
}
Run Code Online (Sandbox Code Playgroud) 我有一个JLabel
和一个按钮,JLabel
显示按钮被按下的次数,但是,我不知道如何更新JLabel
显示按下按钮的次数.
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class SimpleGui {
private JFrame f = new JFrame("Basic GUI"); // create Frame
int pressed = 0; // tracks number of button presses.
JLabel label1 = new JLabel("You have pressed button " + pressed + "times.");
private JButton start = new JButton("Click To Start!");
public SimpleGui() {
// Setup Main Frame
f.getContentPane().setLayout(new GridLayout(0, 1));
start.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
calculate();
}
});
// …
Run Code Online (Sandbox Code Playgroud) 我需要在同一台机器上运行的两个Java应用程序(两个不同的JVM)之间共享数据.我确切地说要共享的数据很大(大约7 GB).应用程序必须非常快速地访问数据,因为它们必须以非常高的速率应答传入的查询.我不希望应用程序为每个应用程序保存一份数据副本.
我已经看到一个选项是使用内存映射文件.应用程序A从某处获取数据(比如数据库)并将其存储在文件中.然后应用程序B可以使用访问这些文件java.nio
.我不知道到底内存映射文件是如何工作的,我只知道数据存储在一个文件,这个文件(或它的一部分)映射到内存的区域(虚拟内存?).因此,这两个应用程序可以读写内存中的数据,并且更改会自动(我猜?)提交到文件中.我也不知道文件的最大大小是否完全映射到内存中.
我的第一个问题是两个应用程序在这种情况下共享数据的不同可能性(我的意思是考虑到数据量非常大,并且访问这些数据必须非常快)?我确切地说这个问题与内存映射I/O无关,它只是知道解决同一问题的其他方法是什么.
我的第二个问题是使用内存映射文件的优缺点是什么?
谢谢
假设我有一个Object
s(特别是一个Object[]
)数组和一个Constructor对象数组.
任何人都可以向我推荐一些可以查看Constructor对象的Java代码,并根据我的数组中对象的实际类型选择最具体的Java代码.换句话说,我想要一种算法的实现,javac
用于在一组重载方法中进行选择.
我有一点问题.我正在开发一个Android applikation.在那里,您可以动态地从其他应用程序(包)加载类.首先,我不想"破解"第三方应用程序,我想尝试为自己的应用程序构建插件.那我有什么?
2测试应用程序和包含两个应用程序的1个库.
所以app1的代码:
package com.ftpsynctest.app1;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
import android.app.Activity;
import android.content.pm.PackageManager.NameNotFoundException;
import android.os.Bundle;
import com.syncoorp.ftpsyncx.commons.SyncFile;
import dalvik.system.PathClassLoader;
public class App1Activity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SyncFile f = new SyncFile("bla");
String classname = "com.ftpsynctest.app2.classcall";
String classpath = getApk("com.ftpsynctest.app1") + ":" + getApk("com.ftpsynctest.app2");
PathClassLoader myClassLoader = new dalvik.system.PathClassLoader(classpath, ClassLoader.getSystemClassLoader());
try {
Class c = Class.forName(classname, true, myClassLoader);
for (Method m : c.getDeclaredMethods()) {
System.out.println("Method: " + m.getName());
for (Type t …
Run Code Online (Sandbox Code Playgroud) 假设我在Java中有一个接口:
interface I {
void add(I foo);
}
Run Code Online (Sandbox Code Playgroud)
,以及实现此接口的两个C和D类.
有什么办法可以修改界面,这样我才能这样做:
C c = new C();
c.add(new C());
Run Code Online (Sandbox Code Playgroud)
, 但不是
c.add(new D());
Run Code Online (Sandbox Code Playgroud)
?
我在考试中有这个问题,但我唯一的想法是在方法的定义中使用instanceof运算符:
class C implements I {
public void add(I foo) {
if (foo instanceof C) {
System.out.println("instance of C");
} else {
System.out.println("another instance");
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何修改界面使我产生相同的效果.
谢谢
在Concurrency in Practice中,它表示你可以使用volatile变量if
写入变量不依赖于其当前值.
所以,如果你有一个共享的,可变的变量a
,并且所有的线程都是这样做的a++
(它们没有得到值,它们只是++
).
然后根据引用,volatile
即使a++
不是原子的,你应该能够做到这一点,对吗?