本文實際講解桶排序,非數據庫連接。下面補充正確的 JDBC 單元測試模板:
@SpringJUnitConfig(DataSourceConfig.class)
class UserRepositoryTest {
@Autowired DataSource dataSource;
@Autowired JdbcTemplate jdbcTemplate;
@Test
void testQueryUser() {
String sql = "SELECT id, username, email FROM users WHERE id = ?";
User user = jdbcTemplate.queryForObject(sql, (rs, rowNum) ->
new User(rs.getLong("id"), rs.getString("username"), rs.getString("email")), 1L);
assertNotNull(user);
assertEquals("admin", user.getUsername());
}
}
@Configuration
@PropertySource("classpath:db.properties")
class DataSourceConfig {
@Autowired Environment env;
@Bean DataSource dataSource() {
HikariDataSource ds = new HikariDataSource();
ds.setJdbcUrl(env.getProperty("db.url"));
ds.setUsername(env.getProperty("db.user"));
ds.setPassword(env.getProperty("db.password"));
ds.setMaximumPoolSize(10);
return ds;
}
@Bean JdbcTemplate jdbcTemplate(DataSource ds) {
return new JdbcTemplate(ds);
}
}
db.url=jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
db.user=root
db.password=123456
桶排序適用於均勻分佈數據,時間複雜度 O(n),非比較排序。核心步驟:建桶 → 分發 → 桶內排序 → 合併。代碼見原文 C 實現。