小编Sac*_*rma的帖子

使用hibernate.enable_lazy_load_no_trans解决Hibernate Lazy-Init问题

我一直患有臭名昭着的hibernate异常

org.hibernate.LazyInitializationException: could not initialize proxy - no Session
Run Code Online (Sandbox Code Playgroud)

现在社区正在欢呼

<property name="hibernate.enable_lazy_load_no_trans" value="true"/>

说它解决了问题,但小心使用它.

他们的意思是谨慎使用它?这个属性实际上做了什么?

请给我任何见解.提前致谢.

java persistence hibernate jpa lazy-initialization

53
推荐指数
3
解决办法
5万
查看次数

Java主要和次要垃圾收集

我一直在阅读Java中的垃圾收集和SO Q&A,但我对垃圾收集的类型感到困惑.

我们以吞吐量收集器为例.(又名并行收集器).文档称它使用多个线程来执行Minor集合,使用单个线程来处理Major集合(与Serial collector相同).

现在我的问题:

  1. Full GC的含义是什么:a)是否意味着小型和主要收藏品都已完成?或者b)完整GC ==主要收藏?哪一个?
  2. 如果a),是否意味着Minor Collection仍然使用多个线程完成,而Major是使用Single完成的?
  3. 如果b),是否意味着使用单线程清除了Young和Old Generations?

另外,4.Full GC是否仅影响OldGeneration或YoungGeneration?

提前致谢.

java garbage-collection

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

读/写分裂休眠

我有一个非常繁重的java webapp,它服务于数千个请求/秒,它使用一个主Postgresql数据库,它使用流(异步)复制将自身复制到一个辅助(只读)数据库.

因此,我使用URL将请求从主要分区(二级)分离(只读),以避免对错误主数据库进行只读调用,因为复制时间很短.

注意:我使用一个sessionFactory和一个由spring提供的RoutingDataSource,它根据一个键查找db.我对多租户感兴趣,因为我正在使用支持它的hibernate 4.3.4.

我有两个问题:

  1. 我不认为基于URL的分割是有效的,因为我只能移动10%的流量意味着没有很多只读URL.我应该考虑什么方法?
  2. 可能是,不知何故,在URL的基础上,我在两个节点之间实现了某种程度的分配,但是我将如何处理我的石英作业(甚至有单独的JVM)?我应该采取什么务实的方法?

我知道我可能不会在这里得到一个完美的答案,因为这真的很广泛,但我只想要你的意见.

我队里的伙计们:

  • Spring4
  • Hibernate4
  • Quartz2.2
  • Java7/Tomcat7

请关注.提前致谢.

java postgresql replication hibernate jpa

20
推荐指数
2
解决办法
6869
查看次数

无名变量声明 - 为什么它有效?

我很惊讶地看到这种行为.

这是一个bug还是什么?

for(Object obj = new Object(), Integer = new Integer(300);
    obj.toString().length()>3;
    System.out.println("on object's loop")) {

} //causes an infinite loop (not foreach loop, of course)
Run Code Online (Sandbox Code Playgroud)

上面的代码编译并运行正常,没有任何引用new Integer(300).为什么这样?

我只想知道为什么Integer = new Integer(300);没有任何参考可以.

java loops for-loop object

17
推荐指数
2
解决办法
1055
查看次数

Java String的split方法忽略空子串

今天发生在我身上的java的行为String.split()很奇怪.

实际上我想将一个字符串拆分"aa,bb,cc,dd,,,ee"为数组,.split(",")这给了我一个["aa","bb","cc","dd","","","ee"]长度为7 的String数组.

但是当我尝试将String拆分"aa,bb,cc,dd,,,,"为数组时,这给了我一个长度为4的数组意味着只["aa","bb","cc","dd"]拒绝所有下一个空白字符串.

我想要一个将String拆分"aa,bb,cc,dd,,,,"为数组的过程["aa","bb","cc","dd","","",""].

java.lang.String api有可能吗?提前致谢.

java regex arrays string split

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

Joda DateTime等于vs isEqual

我有两个相似的日期,我怀疑Joda DateTime api提供的比较:

log.info("comparing:"+abrDateTime+": and :"+breakStart+":"+abrDateTime.equals(breakStart));
Run Code Online (Sandbox Code Playgroud)

这打印

comparing:2015-07-14T12:25:47.000+05:30: and :2015-07-14T12:25:47.000+05:30:false
Run Code Online (Sandbox Code Playgroud)

使用DateTime.isEqual时

log.info("comparing:"+abrDateTime+": and :"+breakStart+":"+abrDateTime.isEqual(breakStart));
Run Code Online (Sandbox Code Playgroud)

打印:

comparing:2015-07-14T12:25:47.000+05:30: and :2015-07-14T12:25:47.000+05:30:true
Run Code Online (Sandbox Code Playgroud)

问题是我在我的应用程序中到处使用DateTime.equals方法,我应该将其更改为isEqual

注意:两个实例都具有相同的毫秒和相同的时区,如您在打印中看到的那样.

java datetime jodatime

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

JSP比较运算符行为

我想比较<c:if>JSP标签中的两种不同类型.基本上左边的一个Number总是正确的,一个是字符串,如果该字符串可以解析为数字,我收不到错误,但如果字符串不能被解析为Number我收到的javax.el.ELException: Cannot convert No of type class java.lang.String to class java.lang.Long.

几乎:

$ {1 ==""} //工作正常
$ {1 =="4"} //工作正常
$ {1 =="是"} //触发异常.

但即便是第3次比较在以前版本的JSP中也能正常工作,但现在它会导致异常.

==一段时间内的行为有变化吗?

任何建议都非常感谢

java spring jsp el

7
推荐指数
1
解决办法
823
查看次数

使用JasperReports API从bean异常中获取错误检索字段值

我正在尝试获取JasperReports生成的示例报告,但它抛出了一些我无法理解的异常.

我有一个豆子:

class DataBean {

    public String country;
    public String name;

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
Run Code Online (Sandbox Code Playgroud)

产生上述bean列表的类:

class DataBeanList {
    public ArrayList<DataBean> getDataBeanList() {
        ArrayList<DataBean> dataBeanList = new ArrayList<DataBean>();
        dataBeanList.add(produce("Manisha", "India"));
        dataBeanList.add(produce("Dennis Ritchie", "USA"));
        dataBeanList.add(produce("V.Anand", "India"));
        dataBeanList.add(produce("Shrinath", "California"));
        return dataBeanList;
    }

    private DataBean produce(String name, String country) {
        DataBean dataBean …
Run Code Online (Sandbox Code Playgroud)

java jasper-reports dynamic-reports

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

CPU线程、内核线程、操作系统线程、用户线程的区别

我已经阅读了很多关于并行性与并发性有何不同的文章,但我有很多问题,例如如何使用 Java 等编程语言实现并行性?

到目前为止,我所理解的是使用像 Java 这样的 VM 我们只能实现并发性,而并行性不在 JVM 的范围内,它的线程映射到(我在这里很困惑)操作系统线程或内核线程?

要了解多线程,需要了解 VM (JVM) 或进程的线程实际上是如何映射到 CPU 硬件的。请在这里帮忙。

如果我错了,请纠正我,以下是我认为我理解正确的几件事:

1. CPU 线程(英特尔超线程):通过在具有相同 ALU 的 CPU 中添加更多寄存器来提供硬件线程,因此实际上并不表现为双 CPU(如果 CPU 中有 2 个线程)和“只是”并发使用 ALU 可以掩盖(通过交错 MUXing 隐藏)主要无法提供真正的并行代码执行。

2. 内核线程:由内核启动,这些线程的数量可能比 CPU 线程多,但启动起来有点贵。

3. 操作系统线程:我不明白。我猜这就是您在调用本机线程时的意思,并且可能与之前的 #2(即内核线程)相同。

4. 用户线程:就像new Thread()在 JVM 或 .NET 中一样。我认为它们不被操作系统识别为线程,所以从并行性的角度来看,这里没有什么可以做的。

我需要了解 #4 中创建的线程如何映射到 #1,可能是 Windows/Linux/MacOS 的示例。

伙计们,我了解这个问题的范围有多大,但我可以接受简要信息并链接到任何详细文档。提前致谢。

java parallel-processing concurrency multithreading multitasking

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

Java 8对Class成员的属性进行排序

舱位声明:

class Entity {
    String name;
    SubEntity subEntity; // subEntity has a method getAmount() which returns int
}
Run Code Online (Sandbox Code Playgroud)

我理解Java 8我们可以这样排序:

entities.sort(Comparator.comparing(Entity::name));
Run Code Online (Sandbox Code Playgroud)

但有没有办法可以对子实体的属性进行排序,例如:

entities.sort(Comparator.comparing(Entity::SubEntity::getAmount()));
Run Code Online (Sandbox Code Playgroud)

PS:全部用于任何单线.

java java-8

6
推荐指数
3
解决办法
564
查看次数