我正在测试Java的新主要更新AKA Java 8非常有趣.我正在使用流,特别是我正在使用这个简单的代码.
private void getAvg()
{
final ArrayList<MyPerson>persons = new ArrayList<>
(Arrays.asList(new MyPerson("Ringo","Starr"),new MyPerson("John","Lennon"),new MyPerson("Paul","Mccartney"),new MyPerson("George","Harrison")));
final OptionalDouble average = persons.stream().filter(p->p.age>=40).mapToInt(p->p.age).average();
average.ifPresent(System.out::println);
return;
}
private class MyPerson
{
private final Random random = new Random();
private final String name,lastName;
private int age;
public MyPerson(String name,String lastName){this.name = name;this.lastName = lastName;this.age=random.nextInt(100);}
public MyPerson(String name,String lastName,final int age){this(name,lastName);this.age=age;}
public String getName(){return name;}
public String getLastName(){return lastName;}
public int getAge(){return age;}
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中我非常清楚,但后来我也看到也可以用这种方式完成它.
final OptionalDouble average = persons.stream().filter(p->p.age>=40)
.mapToInt(MyPerson::getAge).average();
average.ifPresent(System.out::println);
Run Code Online (Sandbox Code Playgroud)
我检查了方法 …
我必须从升级Hibernate 4.2.3到Hibernate 4.3.4测试一些JPA 2.1规格.我只改变了这一行code
上一行:
final org.hibernate.service.ServiceRegistry serviceRegistry = new org.hibernate.service.ServiceRegistryBuilder().applySettings(hibConfiguration.getProperties()).buildServiceRegistry();
Run Code Online (Sandbox Code Playgroud)
新增代码行
final org.hibernate.service.ServiceRegistry serviceRegistry = new org.hibernate.boot.registry.StandardServiceRegistryBuilder().applySettings(hibConfiguration.getProperties()).build();
Run Code Online (Sandbox Code Playgroud)
问题我有一个主要方法只是为了测试一些,Criteria API但main method从未完成与最新Hibernate Version我已检索正在运行的线程,并与最新版本的线程如下.
ThreadList:
[threadID:]2 [threadName:] Reference Handler [isDaemon:] true [isAlive:] true
[threadID:]3 [threadName:] Finalizer [isDaemon:] true [isAlive:] true
[threadID:]4 [threadName:] Signal Dispatcher [isDaemon:] true [isAlive:] true
[threadID:]5 [threadName:] Attach Listener [isDaemon:] true [isAlive:] true
[threadID:]10 [threadName:] Abandoned connection cleanup thread [isDaemon:] true [isAlive:] true
[threadID:]11 [threadName:] pool-1-thread-1 …Run Code Online (Sandbox Code Playgroud) 我目前正在阅读O'reilly Java 8 Lambdas是一本非常好的书.我遇到过这样的例子.
我有一个
private final BiFunction<StringBuilder,String,StringBuilder>accumulator=
(builder,name)->{if(builder.length()>0)builder.append(",");builder.append("Mister:").append(name);return builder;};
final Stream<String>stringStream = Stream.of("John Lennon","Paul Mccartney"
,"George Harrison","Ringo Starr");
final StringBuilder reduce = stringStream
.filter(a->a!=null)
.reduce(new StringBuilder(),accumulator,(left,right)->left.append(right));
System.out.println(reduce);
System.out.println(reduce.length());
Run Code Online (Sandbox Code Playgroud)
这产生了正确的输出.
Mister:John Lennon,Mister:Paul Mccartney,Mister:George Harrison,Mister:Ringo Starr
我的问题被认为是reduce最后一个参数的方法BinaryOperator
我的问题是这个参数用于哪个?如果我改变
.reduce(new StringBuilder(),accumulator,(left,right)->new StringBuilder());
Run Code Online (Sandbox Code Playgroud)
如果我通过,NULL那么输出是相同的,然后返回NPE.
这个参数用于什么?
UPDATE
为什么如果我运行它parallelStream我收到不同的结果?
第一次运行.
returned StringBuilder length = 420
Run Code Online (Sandbox Code Playgroud)
第二轮
returned StringBuilder length = 546
Run Code Online (Sandbox Code Playgroud)
第三次运行
returned StringBuilder length = 348
Run Code Online (Sandbox Code Playgroud)
等等?为什么这个...不应该在每次迭代时返回所有值?
任何帮助都非常感激.
谢谢.
给出以下查询:
select ....................
from ......................
where
(
lower(c01) like ?
or lower(c02) like ?
or lower(c5x3_.c01) like ?
or lower(5x3_.c02) like ?
)
and(
(
lower(c03) like ?
or lower(c04) like ?
or lower(c5x3_.c03) like ?
or lower(5x3_.c04) like ?
)
/* ...Multiple further LIKEs... */
and status=1; /* status is a non-nullable value whose values can only be 1 or 2 */
Run Code Online (Sandbox Code Playgroud)
前10或12个限制是LIKE关于各种模式的 - 我知道这可能很慢,所以总是把状态标准放在第一位,即:
status=1;
and(other LIKEs)
Run Code Online (Sandbox Code Playgroud)
我的问题:首先应用更简单的限制是否会有性能提升(例如,在这种情况下,被比较的int值不能为空值,只有2个可能的值)?如果LIKE首先放置s并稍后显示状态检查,那么性能是否相同?
假设任何列都没有索引来简化问题.
我住在委内瑞拉,过去 10 年我们经历了 2 次 GMT 变化。
此代码在 Java 7 update 76 中运行
System.out.println(TimeZone.getTimeZone("America/Caracas"));
Run Code Online (Sandbox Code Playgroud)
哪个打印
sun.util.calendar.ZoneInfo[id="America/Caracas",offset=-16200000,dstSavings=0,useDaylight=false,transitions=5,lastRule=null]
Run Code Online (Sandbox Code Playgroud)
当然,最新的 JDK Java 8 Update 121 在 2016 年底我们有最新的更改。
sun.util.calendar.ZoneInfo[id="America/Caracas",offset=-14400000,dstSavings=0,useDaylight=false,transitions=6,lastRule=null]
Run Code Online (Sandbox Code Playgroud)
我想知道文档中的转换意味着什么。
无法使用自定义时区 ID 指定夏令时转换计划
但在委内瑞拉,没有实行夏令时,我想知道这种特殊情况下的过渡意味着什么,就像历史上格林尼治标准时间的总变化一样?
问题很简单,可以使用Criteria或DetachedCriteria在Hibernate中完成此查询吗?我想不是,但我想做这个问题可能存在一个解决方法.
SELECT
COLUMNS
FROM table
WHERE id not in (
SELECT * FROM (
SELECT id
FROM table
WHERE
SOMECONDITIONS
ORDER BY timestamp desc limit 0, 15
)
as t);
Run Code Online (Sandbox Code Playgroud)
我将@Dean Clark的答案标记为正确,但另一个问题出现如下
where can i find the findByCriteria from SessionFactory we are not using Spring
Run Code Online (Sandbox Code Playgroud) 我有一张这样的桌子。
ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
Run Code Online (Sandbox Code Playgroud)
后来我创建了一个像这样的哈希索引。
CREATE INDEX index ON table (column) USING HASH;
Run Code Online (Sandbox Code Playgroud)
后来我尝试了一些解释查询。
喜欢
explain Select * from table where column=132;
Run Code Online (Sandbox Code Playgroud)
我看到引擎正在使用 possible_keys 上的索引,并且在关键内容中显示了索引的名称!
但在文档中说 InnoDB 不允许哈希索引现在我想知道为什么我的 innoDB 据说允许哈希索引?
我有这个片段.
public final class StackOverflow{
class MyException extends Throwable{
}
private void a(){
try{
}catch(MyException | Exception e){
}
}
}
exception StackOverflow.MyException is never thrown in body of corresponding try statement
Run Code Online (Sandbox Code Playgroud)
我知道Exception也在扩展Throwable,也是一个经过检查的异常,MyException也在扩展Throwable,这也是一个经过检查的异常!
我的问题是为什么不需要在try catch中抛出异常,但MyException是?我认为两者都是检查异常所以哪个区别?
对不起,问题很简单.
我有一对多关系所有者 - >狗.
我将通过ID查询狗以及以EAGER方式引入所有者我使用Hibernate 4.1.6设置此代码而不使用XML映射.我只需要来自DOG和OWNER的一些字段使用Projections Hibernate生成的SQL是完美的,但是我的对象没有填充,因为DOG返回填充的字段但是返回的所有者是 DOG.OWNER==NULL我到目前为止使用的代码...我的entities.other代码省略简洁
@Entity
public class Owner implements Serializable
{
Set<Dog>dogs=new HashSet<Dogs>(0);
@OneToMany(fetch=FetchType.LAZY, mappedBy="owner")
public Set<Dogs> getDogs(){return this.dogs}
}
@Entity
public class Dog implements Serializable
{
private Owner owner;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="ownerid")
public Owner getOwner(){return this.owner;}
}
Run Code Online (Sandbox Code Playgroud)
这是我的方法.
public Dog getDogAndOwnerById(Integer dogId)
{
Projection p=Projections.projectionList()
.add(Projections.property("d.id"),"id")
.add(Projections.property("o.id"),"id");//and others fields
Session session = getHibernateTemplate().getSessionFactory().openSession();
Criteria like = session.createCriteria(Dog.class,"d")
.add(Restrictions.idEq(dogId)).setProjection(p)
.setResultTransformer(Transformers.aliasToBean(Dog.class))
.setFetchMode("owner",FetchMode.JOIN).createAlias("owner","o");
Dog dog = (Dog)like.uniqueResult();
//Object[]obj=(Object[])like.uniqueResult(); for(Object id:obj)System.out.println(id);
//System.out.println(obj.length);
session.close();
return dog;
//dog is OK …Run Code Online (Sandbox Code Playgroud) java hibernate projection resulttransformer hibernate-criteria
我正在阅读Kathy Sierra + Bert Bates 撰写的《OCA Java SE 8程序员I考试指南》。
关于finalize方法,我不太了解。它在第218页上指出:
调用
finalize()实际上可以导致保存对象以免被删除。
稍后在第222页:
您可以从中使对象不符合GC条件
finalize()。
英语不是我的母语,但是我在两种情况下都了解该finalize()方法可以防止对象被垃圾回收?是这样吗 还是我误解了?
java ×8
hibernate ×3
mysql ×3
java-8 ×2
exception ×1
finalize ×1
hash ×1
indexing ×1
java-stream ×1
jpa ×1
performance ×1
projection ×1
sql ×1
sql-like ×1
timezone ×1
where-clause ×1