Size: a a a

2020 October 20

К

Константин in JUG NN
почему 1с? я пришел джава вакансию предлагать)
источник

MB

Maxim Belov in JUG NN
Константин
почему 1с? я пришел джава вакансию предлагать)
Посмотри описание чата и поймёшь куда постить вакансии
источник

Cm

Cadovvl me in JUG NN
Так это чат джавистов? О позор моим сединам, что же я тут делаю?
источник

MB

Maxim Belov in JUG NN
Cadovvl me
Так это чат джавистов? О позор моим сединам, что же я тут делаю?
Паш, ты тут свой, не стесняйся)
источник

Cm

Cadovvl me in JUG NN
Maxim Belov
Паш, ты тут свой, не стесняйся)
Прияно, приятно :)
источник

Cm

Cadovvl me in JUG NN
Вообще я пару недель назад смотрел полуторачасовой видос "как объявить константу в C++". Иногда мне кажется, что я пошел куда-то никуда...
источник

MB

Maxim Belov in JUG NN
Cadovvl me
Вообще я пару недель назад смотрел полуторачасовой видос "как объявить константу в C++". Иногда мне кажется, что я пошел куда-то никуда...
А как же C++20?)
источник

MB

Maxim Belov in JUG NN
С другой стороны ‘private static final’
источник

Cm

Cadovvl me in JUG NN
Новая версия лучше не делает. Там появился constexpr, но его не везде можно применять...
источник
2020 October 24

V

Viacheslav Tikhonov in JUG NN
Привет!
Можно вопрос к знатокам многопоточности?
Есть такой код:
Map<String, List<Data>> cache = new HashMap<>();
String currentBatch;      
public void onNext(Data data) {        
   String batchId = data.getBatchId();          
   synchronized (this) {            
        if (cache.get(batchId) == null) {                
            CompletableFuture.runAsync(() -> processBatch(currentBatch, cache.get(currentBatch));
            currentBatch = batchId;      
            cache.put(batchId, new ArrayList<>());
        }
    }        
   cache.get(currentBatch).add(data);
}

Почему-то так происходит, что периодически в функцию processBatch передается уже изменённое значение currentButch. Пытался как-то зафиксировать порядок вызова функции и обновления значения currentBatch, вставляя между ними, например, инкремент AtomicInteger - не помогает.
источник

II

Iurii Iurchenko in JUG NN
Привет!
Да тут дело не в многопоточности даже, ты похожий прикол можешь и с одним потоком получить.
Разгадка в лямбде
() -> processBatch(currentBatch, cache.get(currentBatch)
которая выполняется лениво когда-то потом и лениво же читает значение поля объекта.
Поскольку ты лямбду передал через асинхронный вызов какому-то другому треду, то передающий тред считает свою работу выполненной и выходит из synchronized блока.
Фиксится тривиально. currentBatch надо сначала прочитать в локальную переменную и вот её передать уже в лямбду.
По хорошему тоже самое надо сделать и с cache.get()
источник

V

Viacheslav Tikhonov in JUG NN
О, спасибо! В эту сторону даже и не подумал..
источник

MV

Max Vorontsov in JUG NN
Здесь банальный computeIfAbsent не подойдёт вам? И без блокировок обойтись
источник
2020 October 29

D

Daniela in JUG NN
источник
2020 October 30

SS

Sergey Smyshlyaev in JUG NN
источник

MB

Maxim Belov in JUG NN
Кто вообще сейчас пользуется weblogic? Есть такие?)
источник

IK

Igor Karabasov in JUG NN
Ынтырпрайз часто
источник

SS

Sergey Smyshlyaev in JUG NN
Maxim Belov
Кто вообще сейчас пользуется weblogic? Есть такие?)
Ну вот там список есть с айпишниками
источник
2020 November 03

SS

Sergey Smyshlyaev in JUG NN
Господа, как вам статья? https://vlfig.me/posts/microservices
источник

V

Viacheslav Tikhonov in JUG NN
Очень много букв. И уже начиная с заявленных 3 причин успеха микросервисов возникает ощущение, что это взгляд технаря-программиста. А должно все плясать прежде всего от бизнес задачи, на мой взгляд
источник