说我有以下mode.proto文件:
message EntityD {
optional EntityE ePointer = 1;
optional int32 dField = 2;
}
message EntityE {
optional EntityD dPointer = 1;
optional int32 eField = 2;
}
Run Code Online (Sandbox Code Playgroud)
这有两个实体--D和E,它们允许交叉链接.我的问题是,从以上*.proto生成java代码后无法创建一个循环:
public static void main(String[] args) throws Exception {
Model.EntityD.Builder dBuilder = Model.EntityD.newBuilder();
Model.EntityE.Builder eBuilder = Model.EntityE.newBuilder();
dBuilder.setDField(42);
eBuilder.setEField(7);
dBuilder.setEPointer(eBuilder);
eBuilder.setDPointer(dBuilder);
Model.EntityD d = dBuilder.build();
Model.EntityE e = eBuilder.build();
System.err.println("same d: "+(d==e.getDPointer()));
System.err.println("same e: "+(e==d.getEPointer()));
}
Run Code Online (Sandbox Code Playgroud)
我试图创建一个简单的D < - > E循环.相反,我得到这个:
same d: false
same e: false
Run Code Online (Sandbox Code Playgroud)

有IS周期中创建的模型,但只有具有一定深度的开始.
这是probuf生成的java代码的问题吗?protobuf是否正式支持图表中的周期?其他protobuf"输出"语言的预期结果是什么?(即c …
我刚刚在DirectByteBuffer.slice()中发现了这个:
public ByteBuffer slice() {
int pos = this.position();
int lim = this.limit();
assert (pos <= lim);
int rem = (pos <= lim ? lim - pos : 0);
int off = (pos << 0); // <---- what does this do
assert (off >= 0);
return new DirectByteBuffer(this, -1, 0, rem, rem, off);
}
Run Code Online (Sandbox Code Playgroud)
将int左移0的重点是什么?
我运行以下代码,它只是在无限循环中连接和关闭套接字:
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.nio.channels.SocketChannel;
import java.nio.channels.spi.SelectorProvider;
public class Main {
public static void main(String[] args) throws Exception {
Thread.sleep(1000);
InetAddress localhost = InetAddress.getByName("127.0.0.1");
InetSocketAddress localhostRpcbind = new InetSocketAddress(localhost, 111);
SelectorProvider selectorProvider = SelectorProvider.provider();
long iterations = 0;
while (true) {
try {
SocketChannel socketChannel = selectorProvider.openSocketChannel();
socketChannel.connect(localhostRpcbind);
socketChannel.finishConnect();
socketChannel.close();
iterations ++;
} catch (Exception e) {
System.err.println("after " + iterations + " iterations");
e.printStackTrace(System.err);
throw e;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
端口 111 是 rpcbind 的端口(已在我的计算机上启动并运行)。在第一次运行代码时,我会得到类似的信息:
after 28239 …Run Code Online (Sandbox Code Playgroud) 我有以下弹簧架豆。这个想法是它保留某物的一个实例,并在某物发生变化时触发一个更改事件(同时提供旧值和新值):
public class Holder<T> implements ApplicationEventPublisherAware {
private final Class<T> payloadType; //because java generics are incomplete
private T curr; //latest value being held
private ApplicationEventPublisher publisher; //spring context ref
public Holder(Class<T> payloadType) {
this.payloadType = payloadType;
}
public void change() throws Exception {
T prev = curr;
curr = payloadType.newInstance();
publisher.publishEvent(new ContentsChangedEvent<>(prev, curr));
}
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个对这些事件做出反应的监听器类:
@Named
public class Listener {
@EventListener
public void onChange(ContentsChangedEvent<Cat> event) {
//never gets called
}
@EventListener
public void onErasedChange(ContentsChangedEvent<?> event) {
//does get called …Run Code Online (Sandbox Code Playgroud) mysql jdbc 驱动程序有一个名为 rewriteBatchedStatements 的属性,当设置为 true 时,可以显着改善批量插入,但必须显式打开。
我现在不得不为多个项目执行此操作,并且找不到任何必须手动打开它的充分理由。
为什么这不是默认值?
我使用 JDBC4(通过 JDK6)使用最新的 JDBC4 驱动程序连接到 postgresql 9.0。
conn = dpaDs.getConnection();
PreparedStatement stmt = conn.prepareStatement("delete from fss where f_id=? and f_lastmodified=?");
UUID target = UUID.fromString("8c5c5ac2-3a2a-49f3-ae48-29226d6ea3e7");
stmt.setObject(1, target, 1111);
//non of these work
//stmt.setNull(2,93);
//stmt.setObject(2,null, 93);
//stmt.setObject(2,null, java.sql.Types.NULL);
//stmt.setNull(2, java.sql.Types.NULL);
int rowCount = stmt.executeUpdate();
int g = 8;
Run Code Online (Sandbox Code Playgroud)
将第二个参数设置为 null 的正确方法是什么?我知道我可以使用“where ... f_lastmodified is null”,但是没有办法解决这个问题吗?
我有一个数据库,其中包含一个名为groupid和组名的字段.
样本数据
groupid groupname
123 abc
234 bcr
1237 cde
Run Code Online (Sandbox Code Playgroud)
我喜欢将groupid与另一个输入数据进行比较,其大小大于组ID的大小.
我尝试了一个不能返回正确答案的查询
SELECT *
FROM mydata
WHERE groupid LIKE '12309098';
Run Code Online (Sandbox Code Playgroud)
我的预期答案是 abc
正确答案有哪些变化?
提前致谢