我目前面临以下问题:我需要从中获取信息的 3 个表,并且这两个连接都是一对多的。出于某种原因,第二个连接创建了重复的行,结果第二个返回值变得混乱(bb.count 乘以第二个连接行的数量)
SELECT aa.id, sum(bb.count), count(DISTINCT cc.id)
FROM aaaa aa
LEFT JOIN bbbb bb ON bb.aa_id = aa.id
LEFT JOIN cccc cc ON cc.bb_id = bb.id
GROUP BY aa.id
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有其他查询的情况下获得正确的 bb.count 总和?我删除第二个左连接的那一刻一切都很好,不幸的是我需要它作为第三个返回值,并且我无法将它们分组而不导致结果重复(排序)行。
可以说有
bb1.count = 9
bb2.count = 5
Run Code Online (Sandbox Code Playgroud)
有 2 行,cc.bb_id = bb1.id
我得到的结果是 23 而不是 14。
前几天我遇到了Vert.x期货的一个奇怪的问题,它没有破坏代码但是让我感到困扰.
没有参数的Future会产生以下警告:
未来是一种原始类型.应该参数化对泛型类型Future的引用
添加参数,解决问题:
Future<YourClassName> future = ...
Run Code Online (Sandbox Code Playgroud)
处理期货清单时,您也可以将其参数化:
List<Future<YourClassName>> future = ...
Run Code Online (Sandbox Code Playgroud)
但CompositeFuture.all()似乎无法处理参数化列表并强制您删除参数.
是否有任何方法可以使参数化的期货清单工作,CompositeFuture或者我们是否只需忽略该警告?它没有破坏任何东西,但仍然很高兴找到一个解决方案来摆脱这个警告.
我是Java的新手,所以如果已经在其他地方回答了这个问题,那么我要么不知道搜索正确的内容还是我无法理解答案.
所以问题是:我在列表中有一堆对象:
try(Stream<String> logs = Files.lines(Paths.get(args))) {
return logs.map(LogLine::parseLine).collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)
这就是添加属性的方式:
LogLine line = new LogLine();
line.setUri(matcher.group("uri"));
line.setrequestDuration(matcher.group("requestDuration"));
....
Run Code Online (Sandbox Code Playgroud)
如何对日志进行排序,以便最终得到列表,其中具有相同"uri"的对象仅以平均requestDuration显示一次.
例:
object1.uri = 'uri1', object1.requestDuration = 20;
object2.uri = 'uri2', object2.requestDuration = 30;
object3.uri = 'uri1', object3.requestDuration = 50;
Run Code Online (Sandbox Code Playgroud)
结果:
object1.uri = 'uri1', 35;
object2.uri = 'uri2', 30;
Run Code Online (Sandbox Code Playgroud)
提前致谢!
我一直试图模拟通过构造函数传入的类,并且到目前为止我遇到的所有示例都在构造函数内初始化了依赖项。根据我的理解,jest 用其重写的构造函数替换了此类依赖项,但因为我自己传递依赖项,所以在初始化时我需要一个可以通过的实例UnderTest。
对于它的价值,我理想地寻找 Mockito 式的行为,类似的东西。
const mockedDependency = ???
const underTest = new UnderTest(mockedDependency)
...
Proceed to write tests for underTest
Run Code Online (Sandbox Code Playgroud)
这是我要测试的代码。请假设它MockedDependency有自己的依赖项,也传递给构造函数。
export default class UnderTest {
private mockedDependency : MockedDependency
constructor(mockedDependency: MockedDependency) {
this.mockedDependency = mockedDependency
}
public methodUnderTest(parameter: string) {
const mockedResult = this.mockedDependency.returnSomething(parameter)
return this.doSomethingElse(mockedResult)
}
public methodUnderTest2(parameter1: string, parameter2: string) {
const mockedResult = this.mockedDependency.returnSomething2(parameter1, parameter2)
return this.doSomethingElse(mockedResult)
}
private doSomethingElse(mockedResult: string) {
return mockedResult
}
}
Run Code Online (Sandbox Code Playgroud)
您将如何进行单元测试UnderTest课程?mockedDependency在每个测试中或通过输入设置方法结果的方法的奖励点。 …
average ×1
collections ×1
duplicates ×1
future ×1
java ×1
java-8 ×1
java-stream ×1
jestjs ×1
koa ×1
left-join ×1
list ×1
node.js ×1
postgresql ×1
sorting ×1
typescript ×1
unit-testing ×1
vert.x ×1