小编rob*_*lco的帖子

如何测试两个电子邮件地址的相等性

有没有一种全面的方法来测试两个电子邮件地址是否相等?我知道我可以普遍降低两者。但是还有一些其他规则因服务器而异。例如,“william.burroughs@gmail.com”、“will.iam.burroughs@gmail.com”和“williamburroughs@gmail.com”都等同于gmail。但我不认为这在所有情况下都是正确的。因此,给定两个电子邮件地址,我需要确保它们是等效的。目前我的代码不认为“william.burroughs@gmail.com”和“williamburroughs@gmail.com”是相同的。我可以开始特殊的外壳,比如“gmail”,所以它们是,但我希望有更好的方法。

java email

5
推荐指数
1
解决办法
2998
查看次数

阻塞方式为BlockingQueue(或其他东西)提供+ drainTo

我正在寻找一些看似简单的东西,一个带有"添加"和"排泄"的非阻塞版本的集合.像这样的东西:

List itemsToProcess = queue.addOrDrainAndAdd( item );
if ( itemsToProcess != null )
    process( items );
Run Code Online (Sandbox Code Playgroud)

在我看来,如果我将这些作为单独的"offer"和"drainTo"调用,我可以提供两次调用,然后再进行第一次调用.我还需要一个像"while(!queue.offer(item))"这样的循环,这样在它耗尽后,报价就会起作用,我认为这也需要我检查排水是否返回一个空集合(因为两个可能会叫排水管).我天真的实现是这样的,但它似乎不是最佳的:

void addBatchItem( T item ) {
   while ( !batch.offer( item ) ) {
       List<T> batched = new ArrayList<>( batchSize );
       batch.drainTo( batched );
       process( batched );
   }
}
Run Code Online (Sandbox Code Playgroud)

然后我想也许有更好的方法,我只是不知道.谢谢!

编辑:

好的,这是一个解决方案(基于ArrayBlockingQueue阻塞):

public void add( T batchItem ) {
    while ( !batch.offer( batchItem ) ) {
        flush();
    }
}

public void flush() {
    List<T> batched = new ArrayList<>( batchSize );
    batch.drainTo( batched, batchSize ); …
Run Code Online (Sandbox Code Playgroud)

java concurrency

5
推荐指数
1
解决办法
1737
查看次数

为什么Hibernate将BIGINT映射到BigInteger

在大多数数据库中,BIGINT是64位整数.有谁知道为什么Hibernate将这些映射到BigInteger而不是Long?我可以很好地处理这些问题,但我只是很好奇.

您可以在Dialect.java中看到此类型的默认映射.我甚至发现了一个hibernate问题,但没有任何评论表明为什么会出现这种情况.

https://hibernate.atlassian.net/browse/HHH-7318

我认为必须有这个选择的理由,但我没有与谷歌取得任何成功.

另外,对我的数据库方言进行子类化并覆盖它会产生什么影响呢?

谢谢!

hibernate jpa jdbc

5
推荐指数
1
解决办法
3227
查看次数

我何时使用@Bean而不是@Component?

我对春天的一些事感到困惑.

首先,我什么时候想在一个显式的@Configuration类上使用@Component和一个@Bean来实现@Component?

我可以考虑使用@Component的唯一原因是在@Configuration类中保存自己创建的@Bean方法.还有其他原因吗?

也就是说,如果我使用@Configuration类,我似乎可以手动编写这些bean的接线.IOW,我在@Component上使用@Inject我现在可以在@Bean构造函数中显式指定依赖项(当我在bean方法中创建它时).那么我什么时候想使用@Inject?我觉得我要在这里挖一个兔子洞.

是否有任何好的教程或博客涵盖了做出这些决定的最佳实践或规则?

谢谢

spring dependency-injection

3
推荐指数
1
解决办法
757
查看次数

Heroku DATABASE_URL 作为 Maven 的 JDBC Url

我在 Heroku 上的应用程序使用 DATABASE_URL。这很容易用 Java 解析为带有用户名和密码的 JDBC URL。那里没有问题。但是,我有一个带有 maven 插件的 JOOQ 生成器和 Flyway 迁移器,我不知道如何将这些插件需要的 JDBC URL、用户名和密码获取到 maven 中。所以目前我在应用程序启动时这样做,这并不理想。当我的应用程序启动时,我会获取 DATABASE_URL,解析它,然后执行 flyway 迁移和 jOOQ 代码生成。但我希望这发生在实际构建过程中,而不是在应用程序启动期间。

基本上我需要格式为 (postgres://user:pass@ec2-host:1234/path-to-db) 的 Heroku 环境变量可以在 maven 中作为这样的属性访问 (jdbc:postgresql://ec2-host :1234?user=user&password=pass)。

我认为解决方案可能在于 maven build helper 插件,但我无法完全正确地获得正则表达式属性规范。

谢谢

heroku maven jooq flyway

2
推荐指数
1
解决办法
1358
查看次数