class IdGenerator {
public static String newId(String prefix){
return (prefix
+ Long.toHexString(System.currentTimeMillis())
+ Integer.toHexString((new SecureRandom()).nextInt(0x10, 0xff))
).toLowerCase();
}
}
в результате имеем дубли:
+--------------------------+-----------------+
|created_at |id |
+--------------------------+-----------------+
|2023-06-10 08:01:00.974621|pref188a3adde9e59|
|2023-06-10 08:01:00.973099|pref188a3adde9e59|
|2023-06-10 08:01:01.001172|pref188a3adde9ea1|
|2023-06-10 08:01:00.978899|pref188a3adde9ea1|
|2023-06-10 08:01:00.982872|pref188a3adde9ee1|
|2023-06-10 08:01:00.999865|pref188a3adde9ee1|
|2023-06-10 08:01:00.967545|pref188a3adde9ee2|
|2023-06-10 08:01:01.011697|pref188a3adde9ee2|
|2023-06-10 08:01:01.250904|pref188a3addfc198|
|2023-06-10 08:01:01.255140|pref188a3addfc198|
+--------------------------+-----------------+
Есть подозрение, что оптимизатор не выполняет еще раз этот метод, а просто использует результат повторно.
Подскажите, пожалуйста, как это можно победить и в любом случае исполнять этот метод?
если securerandom сделать final static полем генератора, какой результат?
Просто как альтернатива, очень удобная штука... https://aeroncookbook.com/agrona/id-generators/
Спасибо, посмотрю
Опасные вещи советуете, Александр😏
Знание - сила 😎
Обсуждают сегодня