Как стать автором
Обновить
30
0
Олег Анонимыч @relgames

Java Developer

Отправить сообщение
Хм, вот про это я был не в курсе. Спасибо за дополнение, мне обязательно нужно будет больше узнать про нововведения Lift 2.2 :-)
Ну я написал о том, в чем имею некоторый опыт :-) Но с удовольствием бы почитал про sbt. Может, статью напишете? Поиск как-бэ намекает, что про sbt на Хабре еще не писали. Может, и сам напишу, если руки дойдут. Пока maven меня полностью устраивает. Причин использовать другие билд-тулы не вижу.
Перечитал 2 раза, не понял :) Что Вы имеете ввиду?
Скачал себе книгу, создал PDF. Там же целые главы еще не дописаны :-)
У Вас, кстати, ошибка в коде :) Посмотрите, например, что оно выведет для 3 или для 5 :)
заинтересовался, на бумажке набросал треугольник. в начале сделал через пропорцию (ну да, тот же тангенс), потом задумался — а что если посчитать приращения координат? типа, x увеличивается каждый раз, а y — через раз. тогда можно обойтись без деления, только сложением. дальше додумать не получилось, пора спать :)
Это все же не совсем функциональный подход :) Я выше написал Scala-way решение :)
Вот на Scala

println(1 to 100 map( i => if (i%3==0) "Fizz" else if (i%5==0) "Buzz" else if (i%15==0) "FizzBuzz" else i ))

Если серверов мало(допустим 2), а потоков много (допустим 20), то эта проверка может привести к неравномерному распределению запросов по потокам(Большая часть потоков может уйти к серверу под номером 0)

Почему может? Метод будет гарантированно равномерно выдавать 0 и 1, т.е. если будет 1000 вызовов метода, то 500 раз вернет 0 и 500 раз 1.

Набросал код для проверки pastebin.com/ixSXp5xu, распределение действительно равномерное.
Код действительно не потокобезопасный.

Я бы сделал так (немного измененный кусок кода из реальной системы, которую поддерживаю я):

    private AtomicInteger currentId = new AtomicInteger();

    public int getNextId() {
        for (;;) {
            int current = currentId.get();
            int next = current + 1;
            if (next>MAX_ID) {
                next = 0;
            }
            if (currentId.compareAndSet(current, next)) {
                return next;
            }
        }
    }


Ну и потом list.get(getNextId())
12 ...
37

Информация

В рейтинге
Не участвует
Откуда
Беларусь
Дата рождения
Зарегистрирован
Активность