与此问题相关
前提:
这些是我的假设,根据我的阅读,经验和理解,他们可能是错的,如果他们是,请评论,我会编辑问题.
题:
我有一个不在二级缓存中的对象.由于一些糟糕的编程或其他约束,加载对象的代码在同一个休眠会话中被多次调用.回顾是使用HQL查找查询,例如
hibernateTemplate.find("from Foo f where f.bar > ?", bar);
Run Code Online (Sandbox Code Playgroud)
在添加查询缓存之前,如果上述代码在同一个Hibernate会话中被调用了N次,那么数据库就会有N次命中
然后我想看看如果添加查询缓存会发生什么:
Query query = session.createQuery("from Foo f where f.bar > ?");
query.setCacheable(true);
query.setParameter(bar);
query.list();
Run Code Online (Sandbox Code Playgroud)
当我添加查询缓存时,我注意到在同一个会话期间,hibernate不会再次访问数据库N次,每个会话只有一次.
Foo不在第二级缓存中的object()在数据库中被更改,那么查询缓存(跨会话范围)将返回错误的标识符,从而返回错误的对象.那是对的吗?顺便说一下,在相关问题中声称查询缓存不适用于会话缓存范围.我想知道这个说法或其他什么吗?
Eclipse正在显示当我在调试模式下打开任何程序时无法连接到VM错误.这是异常堆栈
java.net.SocketException: socket closed
at java.net.PlainSocketImpl.socketAccept(Native Method) //I dont know which socket is closed in my PC
at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
at java.net.ServerSocket.implAccept(ServerSocket.java:453)
at java.net.ServerSocket.accept(ServerSocket.java:421)
at org.eclipse.jdi.internal.connect.SocketTransportService.accept(SocketTransportService.java:95)
at org.eclipse.jdi.internal.connect.SocketTransportImpl.accept(SocketTransportImpl.java:56)
at org.eclipse.jdi.internal.connect.SocketListeningConnectorImpl.accept(SocketListeningConnectorImpl.java:135)
at org.eclipse.jdt.internal.launching.StandardVMDebugger$ConnectRunnable.run(StandardVMDebugger.java:107)
at java.lang.Thread.run(Thread.java:619)
Run Code Online (Sandbox Code Playgroud)
即使我的Localhost工作正常,我ping 127.0.01和localhost都工作正常,即使我重新启动我的电脑甚至得到相同的错误.不知道我的PC中关闭了哪个套接字.请帮助我..我正在使用eclipse 8.x.
我是Play框架的新手,我想知道它是否有任何"伴侣"MV**JavaScript框架.
是否有任何框架(Backbone.js,Angular.js,Knockout.js,Ember.js等)
如果没有,是否有任何MV**框架应该避免使用Play的任何特定原因?
是否可以通过sbt/other命令行工具升级已安装的Scala版本?
我确定有办法,但经过快速搜索我找不到任何东西,我错过了什么吗?
在许多书籍/ 博客文章中,自调用匿名函数模式的方式如下:
(function() {
var foo = 'bar';
})();
Run Code Online (Sandbox Code Playgroud)
但是,在此上运行JSLint会出现此错误:
将调用移动到包含该函数的parens中.
例如将其改为此作品:
(function() {
var foo = 'bar';
}());
Run Code Online (Sandbox Code Playgroud)
问题
function(){}()抛出一个SyntaxError: Unexpected token ( function(){}()) - 工作正常
编辑:这是对此的一些后续(虽然我不会说完全重复):JSLint错误:"将调用移动到包含该函数的parens",所以我的主要问题是#3,为什么它完全有效?
在Java Concurrency in Practice中我认为令人惊讶的一个例子(至少我)是这样的:
public class Foo {
private int n;
public Foo(int n) {
this.n = n;
}
public void check() {
if (n != n) throw new AssertionError("huh?");
}
}
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是(至少对我来说)声称这不是线程安全的,不仅它不安全,而且检查方法也有可能抛出断言错误.
解释是,如果没有同步/标记n为volatile,则不同线程之间没有可见性保证,并且n的值可以在线程读取时更改.
但我想知道它在实践中发生的可能性有多大.或者更好,如果我能以某种方式复制它.
所以我试图编写会触发断言错误的代码,没有运气.
有没有直接的方法来编写一个测试,证明这个可见性问题不仅仅是理论上的?
或者它是否在最近的JVM中发生了变化?
编辑:相关问题:非线程安全对象发布
这可能是那里最新手的Kotlin问题:如何在Kotlin中将Char添加到字符串中?
例如
fun main(args: Array<String>) {
val char = 'H'
val string = "ello World"
val appendingWorks = string + char //but not what I want...
//val prependingFails = char + string //no .plus(str:String) version
val prependingWorkaround1 = char.toString() + string
val prependingWorkaround2 = "" + char + string
val prependingWorkaround3 = String(charArray(char)) + string
}
Run Code Online (Sandbox Code Playgroud)
当试图在Char上调用+(例如plus)时,没有版本接受右边的String,因此'H' + "ello World"不编译
第一个解决方法可能已经足够好了,但对于我来说,从Java的工作原理来看,这是一个回归:( String test = 'H' + "ello World";编译好...)
我也不喜欢上一个解决方法,至少在java.lang.String我有一个接受单个char的构造函数,或者我可以使用java.lang.Character.toString(char c) …
我最近读到了Quasar,它为JVM提供了"轻量级"/类似Go的"用户模式"线程(它还有一个像Akka一样的Erlang启发的Actor系统,但这不是主要问题)
例如:
package jmodern;
import co.paralleluniverse.fibers.Fiber;
import co.paralleluniverse.strands.Strand;
import co.paralleluniverse.strands.channels.Channel;
import co.paralleluniverse.strands.channels.Channels;
public class Main {
public static void main(String[] args) throws Exception {
final Channel<Integer> ch = Channels.newChannel(0);
new Fiber<Void>(() -> {
for (int i = 0; i < 10; i++) {
Strand.sleep(100);
ch.send(i);
}
ch.close();
}).start();
new Fiber<Void>(() -> {
Integer x;
while((x = ch.receive()) != null)
System.out.println("--> " + x);
}).start().join(); // join waits for this fiber to finish
}
}
Run Code Online (Sandbox Code Playgroud)
据我所知,上面的代码没有产生任何JVM /内核线程,所有这些都是在用户模式线程中完成的(或者他们声称)这应该更便宜(就像我正确理解的Go一样)
我的问题是 - …
我想遍历dom节点的所有属性并获取名称和值
我试过这样的事情(文档对此并不是很冗长,所以我猜了一下):
for attr in element.attributes:
attrName = attr.name
attrValue = attr.value
Run Code Online (Sandbox Code Playgroud)
循环错误:
for attr in element.attributes:
File "C:\Python32\lib\xml\dom\minidom.py", line 553, in __getitem__
return self._attrs[attname_or_tuple]
KeyError: 0
Run Code Online (Sandbox Code Playgroud)
我是Python新手,请温柔
我是Play框架的新手,并且已经过了2.1 样本,在这个computer-database例子中,我发现了以下不完全理解的表单定义.
什么是角色Computer.apply和Computer.unapply在这里?
val computerForm = Form(
mapping(
"id" -> ignored(NotAssigned:Pk[Long]),
"name" -> nonEmptyText,
"introduced" -> optional(date("yyyy-MM-dd")),
"discontinued" -> optional(date("yyyy-MM-dd")),
"company" -> optional(longNumber)
)(Computer.apply)(Computer.unapply)
)
Run Code Online (Sandbox Code Playgroud)
(来自controllers/Application.scala)
编辑:这似乎是一个很好的资源:https://groups.google.com/forum/?fromgroups =#!topic/play-framework/dxNQ8E81YJs但仍不确定我完全了解全局.
java ×3
scala ×3
akka ×1
concurrency ×1
hibernate ×1
javascript ×1
kotlin ×1
minidom ×1
python ×1
python-3.x ×1
quasar ×1
query-cache ×1
sbt ×1