哪种方式最有效地处理不同的有序集合?
Set<MyObj> ret = new TreeSet<>();
for (Foo foo : foos)
ret.add(new MyObj(foo));
Run Code Online (Sandbox Code Playgroud)
List<MyObj> ret = foos.stream().map(MyObj::new)
.distinct().sorted()
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
Set<MyObj> ret = foos.stream().map(MyObj::new)
.collect(Collectors.toCollection(TreeSet::new));
Run Code Online (Sandbox Code Playgroud)
第一种方式似乎是最不优雅但易于阅读的.第二种方式让我担心distinct
并且sorted
会两次处理流.最后一种方式感觉还可以,但是流中的TreeSet开销是多少?
有线索吗?谢谢.
我试图在QueryDSL中编写一个查询来获取由其parentId分组的表中最旧的元素.
SQL等价物应该是:
SELECT a.* FROM child a
INNER JOIN
(
SELECT parentId, MAX(revision) FROM child GROUP BY parentId
) b
ON (
a.parentId = b.parentId AND a.revision = b.revision
)
Run Code Online (Sandbox Code Playgroud)
现在在QueryDSL中,我坚持使用语法.
JPQLQuery<Tuple> subquery = JPAExpressions
.select(child.parent, child.revision.max())
.from(child)
.groupBy(child.parent);
HibernateQuery<Child> query = new HibernateQuery<>(session);
query.from(child)
.where(child.parent.eq(subquery.???).and(child.revision.eq(subquery.???))));
Run Code Online (Sandbox Code Playgroud)
如何使用子查询编写此查询?
表格看起来像这样:
___parent___ (not used in this query, but exists) parentId P1 | * P2 | * P3 | * ___child___ parentId | revision P1 | 1 | * P1 | 2 | * …
我正在优化算法,我注意到Hibernate重复创建和释放更新语句,而不是重用它们.这些都来自同一个查询.
15:57:31,589 TRACE [.JdbcCoordinatorImpl]:371 - Registering statement [sql : 'update ...
15:57:31,591 TRACE [.JdbcCoordinatorImpl]:412 - Releasing statement [sql : 'update ...
15:57:31,592 TRACE [.JdbcCoordinatorImpl]:525 - Closing prepared statement [sql : 'update ...
15:57:31,592 TRACE [.JdbcCoordinatorImpl]:278 - Starting after statement execution processing [ON_CLOSE]
15:57:31,594 TRACE [.JdbcCoordinatorImpl]:371 - Registering statement [sql : 'update ...
15:57:31,595 TRACE [.JdbcCoordinatorImpl]:412 - Releasing statement [sql : 'update ...
15:57:31,596 TRACE [.JdbcCoordinatorImpl]:525 - Closing prepared statement [sql : 'update ...
15:57:31,596 TRACE [.JdbcCoordinatorImpl]:278 - Starting after statement …
Run Code Online (Sandbox Code Playgroud) 我正在使用库 Vis.js 来显示网络。对于我的应用程序,我需要全屏显示网络,节点几乎接触到其容器的边界。
问题来自 network.fit(); 它不会放大到超过“1.0”的比例
我写了一个小提琴来展示这个问题:http : //jsfiddle.net/v1467x1d/12/
var nodeSet = [
{id:1,label:'big'},
{id:2,label:'big too'} ];
var edgeSet = [
{from:1, to:2} ];
var nodes = new vis.DataSet(nodeSet);
var edges = new vis.DataSet(edgeSet);
var container = document.getElementById('mynetwork');
var data = {
nodes: nodes,
edges: edges
};
var options = {};
var network = new vis.Network(container, data, options);
network.fit();
console.log( 'scale: '+ network.getScale() ); // Always 1
Run Code Online (Sandbox Code Playgroud)
如何强制 Vis 缩放直到网络全屏?
我正在尝试找到一种在 ES6 中创建类似抽象类的方法。到目前为止,我尝试的一切总是遇到语言和/或其语法的限制(也是我对原型设计的有限知识)。
基本的面向对象编程;我们声明一个类并扩展它。最终类必须访问其超类的某些字段和方法,但不是全部。它还改变了公共方法......
类声明应该是完美的封装,因此除了这段代码之外没有其他东西能够到达它(类似于命名空间)。
到目前为止,我在 ES5 中的实验是错误的......我非常感谢一些建议和帮助。
(function(){
// ==================================
function AbstractClass(params) {
var _myParams = params;
var _privateField = "Only AbstractClass can see me";
this.publicField = "Everybody can see me";
function privateFunc() {
// Does private stuff
}
}
AbstractClass.prototype.publicFunc = function() {
// Does public stuff
privateFunc(); // Works?
}
// ==================================
function FinalClass(params) {
// How to pass the params to the superclass?
}
FinalClass.prototype.publicFunc = function() {
// Override and calls the superclass.publicFunc()?
// …
Run Code Online (Sandbox Code Playgroud) 我使用 QueryDSL 来构建查询。结果必须注入到对象内。第一列是 groupBy,第二列是值,第三列是常量。
该常量是一个问题,因为 QueryDSL 希望将其作为参数,这会导致 Hibernate 出现此错误:
org.hibernate.QueryException:
Parameters are only supported in SELECT clauses when used as part of a INSERT INTO DML statement
[select event.datetime, count(event), ?1]
Run Code Online (Sandbox Code Playgroud)
上面的“?1”应该直接是一个常量字符串“TOTAL”。
这是我的代码:
final Expression<String> TOTAL = Expressions.constant("total");
final StringExpression date = Expressions.stringTemplate("DATE_FORMAT({0},'%Y-%m-%d')", event.datetime);
query.select(Projections.constructor(Stat2DGraphDto.class, date, event.count(), TOTAL))
query.from(event).groupBy(date);
query.fetch();
Run Code Online (Sandbox Code Playgroud)
如果我从构造函数中删除 TOTAL,它会按预期工作,但我需要这个常量来稍后准备 UNION。
我可以强制 QueryDSL 按此方式发送字符串吗?
我做了一个小提琴来展示这个问题:https : //jsfiddle.net/1xum5Lce/4/
HTML:
<ul class="font anim">
<li class="bckA">Hello</li>
<li class="bckB">World</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
CSS:
.bckA {
background-color: #FFFFAA;
}
.bckB {
background-color: #AAFFFF;
}
.anim li {
transition: all 200ms;
transform-origin: left;
}
.anim li:hover {
transform: scale(1.5);
box-shadow: 0px 0px 10px #000000;
}
.font {
font-size: 36px;
display: list-item;
list-style-type: decimal;
}
Run Code Online (Sandbox Code Playgroud)
悬停时的背景颜色和阴影仅覆盖标签,并且变换源位于项目符号和标签之间。
我需要将子弹包含在所有这些内容中。
请注意,由于<LI>
标签会动态更改其顺序,因此我不想手动添加编号。此外,在换行过程中,将子弹物理地放置在里面并不能正确处理页边距。
最好的方法是什么?
我一直在使用EWS(Exchange Web Service)从Java 8中的共享邮箱中读取电子邮件。
升级到Java 11 (Open JDK 11/Zulu Java 11)后,在阅读电子邮件时遇到异常。
这是例外:
java.lang.NoClassDefFoundError: javax/xml/ws/http/HTTPException在 Microsoft.exchange.webservices.data.core.ExchangeService.internalFindFolders(ExchangeService.java:370) ~[ews-java-api-2.0.jar:na]
java ×5
hibernate ×3
javascript ×2
querydsl ×2
azul-zulu ×1
css3 ×1
ecmascript-5 ×1
ecmascript-6 ×1
html ×1
java-11 ×1
java-stream ×1
jpa ×1
openjdk-11 ×1
optimization ×1
performance ×1
prototype ×1
spring ×1
syntax ×1
transactions ×1
treeset ×1
vis.js ×1