小编Bim*_*thy的帖子

具有嵌入对象的实体的Hibernate Criteria

我有一个实体"UserDetails",它有以下变量:

  1. 字符串userId
  2. 字符串userName
  3. UserContact userContact(其中UserContact是一个Embeddable类)

UserContact具有以下变量:

  1. 字符串phoneNumber
  2. String email
  3. 弦城

获取以下列表的Hibernate标准是什么:

userName ='sam'且city ='New York'的用户

我尝试了以下操作并获得了运行时异常,它无法识别变量'city':

List<UserLogin> list = session.createCriteria(UserLogin.class)
    .add(Restrictions.eq("userName","sam"))
    .add(Restrictions.eq("city", "New York"))
    .list();
Run Code Online (Sandbox Code Playgroud)

java orm hibernate hibernate-criteria

10
推荐指数
1
解决办法
7277
查看次数

Struts2中的拦截器线程是否为UNsafe?

我知道Struts2 Action类是线程安全的,因为操作放在Value Stack中.值栈依次是Action Context的一部分.由于Action Context是线程本地的,因此存储在Action Context(包括值栈)中的值对于每个线程都是唯一的.因此,Actions是线程安全的.

但考虑一下拦截器:它们非常有用,它们为程序员完成所有那些繁琐的小工作......比如验证,获取参数值等等.但需要考虑的是:拦截器可以在多个请求之间共享.那么这会使拦截器线程不安全吗?

考虑到这个问题,我试图在网上浏览一些与此问题相关的好文章.我发现了一篇非常好的文章,他们已经清楚地提到了一个示例拦截器如何不是线程安全的.

该网页是:http: //www.bullraider.com/java/struts2/tutorials/interceptors-and-thread-safety

我从这篇文章中得知,拦截器线程不安全的主要原因是拦截器只创建了一次.即每个拦截器只有一个对象.因此,当线程之间共享Interceptor 的相同实例时,实例字段不安全.

在文章的最后,提到有些情况,甚至拦截器都是线程安全的.但他们没有提到任何此类案件.我在网上冲浪找到答案......但是徒劳无功:(

任何人都可以告诉我或给我一个链接,在那里我可以找到如何使拦截器线程安全(或拦截器线程安全时的情况是什么)?

java struts2 thread-safety interceptor

9
推荐指数
1
解决办法
3616
查看次数

"两个"arraylist和linkedlist的好处......可能在java中?

当然,我知道arraylist和linkedlist之间的性能差异.我自己运行了测试,看到了arraylist和linkedlist之间插入/删除和迭代的巨大差异,这是一个非常大的列表.

(纠正我,如果我错了)我们通常更喜欢arraylist over linkedlist,因为:

1)我们实际上比插入/删除更频繁地进行迭代.所以我们更喜欢迭代比插入/删除更快.

2)链表的内存开销远远超过了arraylist

3)没有办法在批量插入/删除时将列表定义为链表,在迭代时作为arraylist.这是因为arraylist和linkedlist具有根本不同的数据存储技术.

我错了第3点[我希望如此:)]?是否有可能将这两个数据结构的好处放在一个列表中?我想,数据结构设计师必须考虑到它.

java complexity-theory linked-list arraylist data-structures

8
推荐指数
1
解决办法
873
查看次数

hibernate中的@ManyToAny注释

我无法理解在Hibernate中使用@ManyToAny注释.在哪种情况下应该使用它?我用谷歌搜索了,但几个网站上的解释只是在我的头上反弹了......

有人能用一个简单的例子来解释吗?与@ManyToMany和@ManyToOne有什么不同?

annotations hibernate

8
推荐指数
1
解决办法
3997
查看次数

Threads和println()语句之间的关系

我试图创建一些场景来演示跨线程共享变量时的可见性问题.我注意到在我测试的几乎所有情况下,如果在run()内部,我在使用共享变量的同一代码块中添加了System.out.println()语句,则无法生成可见性问题.我将举一个例子:

配置详细信息 - Oracle Java6 64位,Eclipse Juno SR 2

  • 1)有可见性问题:

    public class NoVisibility_Demonstration extends Thread {
    boolean keepRunning = true;
    public static void main(String[] args) throws InterruptedException {
        NoVisibility_Demonstration t = new NoVisibility_Demonstration();
        t.start();
        Thread.sleep(1000);
        t.keepRunning = false;
        System.out.println("keepRunning is false");
    }
    public void run() {
        int x = 1;
        while (keepRunning) 
        {
            //System.out.println("If you uncomment this line, the code will work without the visibility issue");
            x++;
    
        }
        System.out.println("x:"+x);
    }
    
    Run Code Online (Sandbox Code Playgroud)

    }

输出:线程保持无限运行

  • 2)没有可见性问题:

上面的相同代码,带有未完成的println()运行中的语句()

OUTPUT:

...

如果取消注释此行,代码将在没有可见性问题的情况下工作

如果取消注释此行,代码将在没有可见性问题的情况下工作

如果取消注释此行,代码将在没有可见性问题的情况下工作 …

java multithreading

8
推荐指数
1
解决办法
219
查看次数

当我们在java中使用peek()和poll()时,为什么要使用element()和remove()

当我们有peek()和poll()时,在Queue接口中使用element()和remove()会有什么用?

我检查了文档,发现这些方法也存在于java 7中.提到的唯一区别是element()和remove()会抛出空队列的异常.如果队列为空,我们可以手动抛出异常(如果需要的话).

是否真的有必要为这个唯一的区别保留两套方法?如果我们开始根据这些差异制作不同的方法,我认为java类和接口将充满大量的方法.这是一种真正的面向对象的风格吗?

编辑:只是为了让我的问题清楚,所以我不会得到相同的"你需要异常使用这个,否则使用"答案.我无法理解的是有很多这样的方法,其中有一个具有相同差异的额外方法将是有用的.那么为什么它仅在某些情况下实现而在其他情况下不实现?为什么同样的原则没有全面应用?我可以理解,也许只有语言创作者可以回答这些原因.我想知道这种方法是否符合OOP原则?

java queue data-structures

6
推荐指数
1
解决办法
9318
查看次数

界面是否解决了"致命的死亡钻石"问题?

界面是否解决了死亡问题的致命钻石

我不这么认为,例如:

// A class implementing two interfaces Interface1 and Interface2.
// Interface1 has int x=10 and Interface2 has int x = 20

public class MultipleInterface implements Interface1, Interface2{

    public void getX(){
        System.out.println(x);
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,我们得到一个模棱两可的x.

虽然接口是解决方法模糊性的好方法,但我猜它们在变量的情况下会失败?

我对么?如果我遗失了什么,请赐教.

java interface multiple-inheritance

5
推荐指数
4
解决办法
1万
查看次数

正则表达式替换Java文件中的所有字符串文字

在我的程序中,我将逐行读取一个java文件,如果该行中有任何字符串文字,我将用(例如)"ABC"替换它.

有没有正则表达式这样做?

防爆.如果传递给我的程序的Java文件是:

public class TestClass {

    private static final boolean isNotThis = false;

    public static void main(String[] args) {
        String x = "This is a test String";
        dummyMethodCall();
        if(isNotThis){
            makeItThat();
            System.out.println("work is done");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

那么输出java文件应该是:

public class TestClass {

    private static final boolean isNotThis = false;

    public static void main(String[] args) {
        String x = "ABC";
        dummyMethodCall();
        if(isNotThis){
            makeItThat();
            System.out.println("ABC");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我愿意知道正则表达式,它将帮助我检测所有字符串文字,并用我选择的特定字符串替换它们.

编辑:

对我来说真正的挑战是避免字符串中的那些引号字符.(如果有人在字符串中放置带有转义字符的引号字符)

java regex string

2
推荐指数
1
解决办法
4295
查看次数