记录后端相关的学习笔记
...小于 1 分钟
private IDatabaseConnection createDatabaseConnection(Connection conn, String schema) {
IDatabaseConnection dbUnitConn = new DatabaseConnection(conn, schema);
DatabaseConfig config = dbUnitConn.getConfig();
config.setProperty(DatabaseConfig.PROPERTY_ESCAPE_PATTERN, "\"?\"");
config.setProperty(DatabaseConfig.FEATURE_ALLOW_EMPTY_FILEDS, true);
String dbName = conn.getMetaData().getDatabaseProductName().toLowerCase();
if (dbName.contains("oracle")) {
// 注意这里没有使用 OracleDataTypeFactory, 而是自己的 MyOracleDataTypeFactory
config.setProperty(DatabaseConfig.PROPERTY_DATETYPE_FACTORY, new MyOracleDataTypeFactory());
} else if (dbName.contains("mysql")) {
config.setProperty(DatabaseConfig.PROPERTY_DATETYPE_FACTORY, new MySqlDataTypeFactory());
config.setProperty(DatabaseConfig.PROPERTY_METADATA_HANDLER, new MySqlMetadataHandler());
}
}
list.stream()
.filter(item -> item.getDate() <= curDate)
.collect(Collectors.groupingBy(item -> item.getClass() + "_" + item.getName(),
Collectors.maxBy(Comparator.comparing(ADto::getScore)))
.values()
.stream()
.collect(Collectors.toList())
.stream()
.filter(item -> item.isPresent())
.map(item -> item.get())
.collect(Collectors.toList());
JUnit 测试时,对应 Mocked 方法,我们可以返回自己想要的返回值或异常,但是有时希望验证一下,我们调用时传的参数是否正确。
此时,可以使用 ArgumentCaptor 来收集参数,进而做验证。
示例:
ArgumentCaptor<TestIn> argCaptor = ArgumentCaptor.forClass(TestIn.class);
// 调用 (注意,这里指定了类型,不指定的话有些时候不能正确执行,比如, dao.find(any()) 就不知实际该匹配哪个,可能返回 null)
testService.doMethod(any(TestIn.class)).thenReturn(1);
// 参数收集
verify(testService).doMethod(argCaptor.captor());
// 参数校验
assertEquals("0", argCaptor.getValue().getInArg());
Comparator<ADto> comparator = Comparator
.comparing(ADto::getClass, Comparator.nullsLast(Comparator.naturalOrder()))
.thenComparing(ADto::getScore, Comparator.nullsLast(Comparator.reverseOrder()))
.thenComparing(ADto::getName, Comparator.nullsLast(String::compareTo));
list.sort(comparator);
本笔记以 Python - 100 天从新手到大师 为学习教程,记录一些学习笔记。
除了 int 和 float,Python 还支持其他数字类型,例如 Decimal 或 Fraction。
用单引号('……')或双引号("……")标注的结果相同,可交替使用,例 "doesn't"
,'"Yes," they said.'
。
反斜杠 \
用于转义,例 'doesn\'t'
。
字符串字面值可以包含多行。 一种实现方式是使用三重引号:"""..."""
或 '''...'''
。 字符串中将自动包括行结束符,但也可以在换行的地方添加一个 \
来避免此情况(避免换行,就是加 \
后不换行)。 参见以下示例: