我有两个表:entitytype和project.以下是create table语句:
Create table project (
pname varchar(20) not null,
primary key(pname)
);
create table entitytype(
entityname varchar(20) not null,
toppos char(100),
leftpos char(100),
pname varchar(20) not null,
primary key(entityname),
foreign key(pname) references project(pname) on delete cascade on update cascade
);
Run Code Online (Sandbox Code Playgroud)
当我尝试将任何值插入entitytype表时,我收到以下错误:
ERROR: insert or update on table "entitytype" violates foreign key constraint "entitytype_pname_fkey"
Detail: Key (pname)=(494) is not present in table "project".
Run Code Online (Sandbox Code Playgroud)
谁能说清楚我做错了什么?
我在O'Reilly Media撰写的“ Java泛型和集合:加快Java开发过程”一书中遇到了以下声明。
Java语法要求类型参数只能出现在使用点分形式的方法调用中。即使该方法
toList在调用代码的同一类中定义,我们也不能按以下方式将其缩短:
List<Integer> ints = <Integer>toList();//编译时错误这是非法的,因为这会混淆解析器。
这是方法的签名:
public static <T> List<T> toList(T... arr)
我确实收到了以上代码的参数不匹配错误(无与预期的整数数组)。编译器错误是逻辑上的。但是,在这种情况下,我不了解书中最后一条语句的含义- 这是非法的,因为这会混淆解析器。
解析器在哪里变得困惑?这只是简单的签名不匹配,因此不应该被允许。我想念什么吗?
谢谢你的帮助。
在观察者设计模式中,主体通过调用update()每个观察者的操作来通知所有观察者.一种方法是这样做
void notify() {
for (observer: observers) {
observer.update(this);
}
}
Run Code Online (Sandbox Code Playgroud)
但是这里的问题是每个观察者都按顺序更新,观察者的更新操作可能不会被调用,直到更新之前的所有观察者.如果有一个观察者有一个无限循环的更新,那么它之后的所有观察者将永远不会得到通知.
题: