我有一个简单的 Hibernate 3.6 和 MySQL 设置。我想了解锁定的工作原理。我的代码在这里:
package hibernate;
import java.util.*;
import org.hibernate.*;
public class HibernateGames {
public static void main(String[] args) {
//main transaction
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
Message loaded = (Message) session.get(Message.class, 21l);
session.lock(loaded, LockMode.PESSIMISTIC_WRITE);
//concurrent transaction
Session session2 = HibernateUtil.getSessionFactory().openSession();
Transaction tx2 = session2.beginTransaction();
Message loaded2 = (Message) session2.get(Message.class, 21l);
tx2.commit();
session2.close();
//main transaction committed
Message loadedAtLast = (Message) session.get(Message.class, 21l);
tx.commit();
session.close();
HibernateUtil.shutdown():
}
}
Run Code Online (Sandbox Code Playgroud)
据我了解,每个数据库中有两种主要类型的锁:独占锁和共享锁。第一个完全阻止对该行的所有操作,第二个允许其他用户从该行读取或获取自己的共享锁。第一个由select.. update语句设置,第二个由select .. lock in …
想象一下,我们有一些类A.java.它以某种方式使用B.java,即导入它,调用它的方法,使用它的属性等.我们编译文件.
现在我想更深入地了解我们得到了什么.
A.class是否存储了有关B内部的一些信息?什么信息 - 只是名称,被调用的方法,使用的最终变量?如果在编译之后A.class中没有关于B的那么多信息 - 为什么我们不能编译A而没有B.class?
如果我们将B.class中的B.class替换为另一个B.class - 当它工作时,何时不工作?
如果A.class使用新的B.class运行正常,A.class是否可以使用OLD B.class中的一些信息,这些信息在编译期间被合并到A.class中?也许我们最终可能在我们的项目中有一个B.class 的混合逻辑?
基于上述问题的答案:我们能否以某种方式编译依赖于其他类的类而不知道它们在编译时的确切实现,并仅在运行时提供依赖性?
我有一些 Maven 依赖,里面有大量资源。我想在我的代码中迭代这些资源。我该怎么做?
我看到几个选项。
1)我可以用一些类似于此处所示的代码来读取Jat:Readcontents of jar file给定的特定路径
问题是我必须指定 mu jar 文件的确切路径,这是一个问题,因为:
2)我可以使用Resources.getResource或其他一些典型的“从类路径读取”方法来读取资源(例如:从jar中读取资源文件)。但我从未见过任何代码可以从某个文件夹中一一读取资源。仅读取具有预定义名称的一个资源的代码。
我的任务有什么理想的方法吗?
我有一个Maven插件,它为我的java项目生成源代码并将它们放入' target/generated-sources '文件夹中.我需要在编译时使用这些源代码.我想在修改它的时候将它们放在我的项目中,已经生成了.当然,我想把它们放在' src '文件夹下的正确文件夹中,而不是' target/generated-sources '.我如何使用Maven组织这个?
换句话说,我希望能够:
通过运行我的特殊源生成插件的一些目标来生成我需要的源代码(已经完成,源代码包含我指定的包)
将这些生成的源移动到标准Maven布局的' src/main/java/... '文件夹中.
从' target/generated-sources '文件夹中删除它们,因为否则mvn clean install命令会引发错误,说明我有"重复的类".实际上,如果我只是将生成的源从目标复制到src - 我必须使用相同名称和包的类,尽管其中一个位于目标文件夹中.
哪个Maven插件可以用这个?我想这是一个典型的任务.
我正在考虑一个JSch库使用的例子,可以在这里找到:http:
//www.jcraft.com/jsch/examples/ScpFrom.java.html
我无法理解这个例子中的几种代码模式.他们来了:
是否有任何理由偏爱SF而不是SFTP,可以使用相同的库运行?
为什么我们scp -f <remote file>在远程主机上运行而不是简单地运行scp source_file_path destination_file_path?为什么在远程主机上执行更好?
在转移的开始有一条线
while(true){
int c=checkAck(in);
if(c!='C'){
break;
}
...
Run Code Online (Sandbox Code Playgroud)
这封神奇的C信是什么意思?为什么C?
为什么要一直发送这个信号?
// send '\0'
buf[0]=0; out.write(buf, 0, 1); out.flush();
Run Code Online (Sandbox Code Playgroud)这怎么可以读取文件大小?
long filesize=0L;
while(true){
if(in.read(buf, 0, 1)<0){
// error
break;
}
if(buf[0]==' ')break;
filesize=filesize*10L+(long)(buf[0]-'0'); //What is this??
}
Run Code Online (Sandbox Code Playgroud)以下是阅读Spring Reference产生的问题,请帮忙.
(1)我是否需要手动创建ApplicationContext?我是否需要第二个AplicationContext实例?
(2)我们有以下配置说明:
<context:annotation-config/>
<context:component-scan base-package=".."/>
<mvc:annotation-driven/>
Run Code Online (Sandbox Code Playgroud)
这些说明是否与自己复制?在哪些情况下是的,其中没有?
(3)我对Spring引入的从字符串转换为对象的所有方式都有点困惑:PropertyEditor,Conversions,Formatting ..这是一个简单的用例:我有一个处理一些POST请求的Spring MVC控制器.该请求是填写某种形式的结果.表单是某个实体的Web表示.因此,给定用户提交新的项目表单.在该表单中,存在一个日期字段和一个管理者名称字段,可从现有管理者列表中选择.输入的日期应转换为Project对象的Date属性,经理的名称 - 转换为Manager属性,由此名称创建或定位(即我想将Manager注入他的Project).在这种情况下我应该使用什么?属性编辑器,格式化程序,还有别的什么?
(4)通常,我可以说在类路径中找到的所有@interface类都可以被Spring用作注释吗?换句话说,我怎么知道我的项目中可以使用哪些注释?所有这些都可以在我的类路径中找到,或者我需要以某种方式注册它们?
(5)我试图在没有aspectj.jar的情况下使用spring aop:刚刚为这个方面创建了一个Aspect和addred XML定义(没有任何注释).结果它抛出"class not found Exception:org/aspectj/weaver/BCException".所以看起来我不能在没有aspectJ库的情况下使用Spring AOP?
想象一下,我们有
volatile int publisher = 0;
volatile List<String> list = Arrays.asList("Buenos Aires", "Córdoba", "La Plata");
volatile String[] array = {"Buenos Aires", "Córdoba", "La Plata"};
Run Code Online (Sandbox Code Playgroud)
据我所理解.
列表和数组中的初始值正确发布,并且对所有读取线程都可见.
初始化后添加的所有值都不是安全发布的.
我们仍然可以安全地阅读和发布它们
//in Thread 1
list.add("Safe City");
array[2] = "Safe city";
publisher = 1;
//in Thread2
if(publisher == 1) {
String city = list.get(3);
city = array[2];
}
Run Code Online (Sandbox Code Playgroud)
我对吗?
我的Java项目是使用Maven构建的,并在Intellij Idea的帮助下编写.我有很多开源项目依赖项,我想广泛研究它们以了解它们的工作原理.为此我经常在Idea中使用一个用法搜索,即Find Usages选项,它告诉我在哪里可以找到某些类的用法.它也可以是"在路径中查找"选项或其他一些代码导航工具.
问题是我不确定是否已下载所有来源.这就是为什么我的搜索可能给出错误的结果.
问题是:我如何强制Idea和Maven下载我项目的所有资源并完成所有搜索?
我们不需要指定我们使用的Maven依赖项和插件的版本和其他参数。我们只能在父 POM 中执行一次,或者可以通过其他方式在子 POM 中继承该属性。
不幸的是,我多次遇到无法轻松找到依赖项和插件的真实参数的项目。即依赖项的版本为空,但在父 POM 中没有有关此的信息。
所以我的问题是:
在Maven中指定依赖和插件的参数有哪些可能的方式?即,如果版本号既不存在于子 POM 的插件中,也不存在于父 pom 的插件管理中,我可以在哪里查找版本号?
有没有 Maven 命令可以找出 Maven 从哪里获取这些参数?例如,我可能会使用该dependency:tree命令。它将打印一个依赖项列表,这将帮助我理解我所困扰的版本依赖项。但这是一个黑客,它不能帮助我使用插件。也许有更好的东西?
我坚持使用XSD的"选择"元素描述.它指出,只有一个元素,来自该标记内的元素可以在有效的XML中找到:
允许所选组中包含的一个且仅一个元素出现在包含元素中.
(http://msdn.microsoft.com/en-us/library/ms256109%28v=vs.110%29.aspx)
从另一方面看,属性maxOccurs ="unbounded"可能会改变相反的情况,现在任何数量的元素都可能出现在'choice'所描述的类型中:请参考这个问题:
那么在里面有选择指标的类型中可以找到多少个元素?
鉴于我在Windows系统中开发MapReduce任务,在将它们移动到HDFS集群之前,我想在本地运行MapReduce.我只想检查我的mapper逻辑,inputSplits,输入/输出格式等是如何工作的.有可能吗?
java ×7
maven ×3
classpath ×1
collections ×1
compilation ×1
concurrency ×1
hadoop ×1
hdfs ×1
hibernate ×1
jar ×1
jsch ×1
locking ×1
mapreduce ×1
maven-plugin ×1
resources ×1
scp ×1
sftp ×1
spring ×1
spring-aop ×1
spring-mvc ×1
sql ×1
ssh ×1
volatile ×1
xml ×1
xsd ×1