• Почему поток не останавливается?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Потому что переменная isRun не волатильная и синхронизация в читающем потоке не выполняется, так что с его точки зрения переменная значения не меняла.
    Ответ написан
    Комментировать
  • Почему поток не останавливается?

    Vamp
    @Vamp
    Тут есть две проблемы.

    Первая очевидная проблема в том, что main поток на первой же итерации впадает в сон на методе wait(), а в программе больше нет потоков, которые могли бы вызвать notify() и разбудить main. Поэтому main бесконечно ждёт и не может остановить liche и sude.

    Вторая совсем неочевидная в том, что синхронизация некорректно используется. У вас синхронизируется только запись в переменную isRun. Чтение этой переменной так же должно быть синхронизировано. Иначе это приведет к странным неуловимым багам.
    Ответ написан
    2 комментария
  • Как можно упростить этот java код?

    @p_A_m_A_git_I
    Не использовать в продакшене. ̶Е̶с̶т̶ь̶ ̶ш̶а̶н̶с̶ ̶ч̶т̶о̶ ̶в̶а̶с̶ ̶п̶о̶б̶ь̶ю̶т̶.̶

    public class Main {
        public static void main(String[] args) throws Exception {
            String inputFile = "", outputFile = "";
            String res = Files.lines(Paths.get(inputFile))
                    .map(line -> new int[]{
                            Integer.parseInt(line.split(" ")[0]),
                            Integer.parseInt(line.split(" ")[1])}
                    ).reduce((identity, accumulator) -> new int[]{
                            identity[0] + accumulator[0],
                            identity[1] + accumulator[1]
                    }).map(resArr -> {
                        if (resArr[0] > resArr[1]) return "1";
                        if (resArr[0] < resArr[1]) return "2";
                        return "DRAW";
                    }).get();
    
            PrintWriter printWriter = new PrintWriter(outputFile);
            printWriter.write(res);
            printWriter.close();
        }
    }
    Ответ написан
    3 комментария
  • Будет ли скомпилированный код C++ работать на всех архитектурах процессора?

    @res2001
    Developer, ex-admin
    Даже бинарник для х64 не будет работать под х32, что уж говорить о принципиально разных архитектурах.
    В исполняемом файле содержатся машинные команды для конкретной архитектуры процессора.
    Для другой архитектуры нужен другой исполняемый файл.
    То же самое актуально и для разных ОС (бинарники для линукс и винды не совместимы). Но, обычно, есть варианты запустить бинарник от другой ОС - виртуализация, wine в линукс, WSL в винде.

    Более того, например, если у вас приложение х64 и вы используете какую-то специфическую фичу процессора, которая есть только в определенных моделях процессора, то приложение будет корректно работать только на процессорах поддерживающих эту фичу. Если нужно, в приложении можно предусмотреть проверку процессора и если фича не поддерживается использовать какую-то универсальную реализацию.
    Ответ написан
    Комментировать
  • Моментальный перегрев процессора при включении, что делать?

    gbg
    @gbg Куратор тега Железо
    Любые ответы на любые вопросы
    Проверить термопасту и правильность установки радиатора. Есть еще экзотические варианты вроде отвала кристалла от термопластины.
    Ответ написан
    2 комментария
  • DDR4 vs DDR5 для сервера 1С предприятия на MSSQL?

    suffix_ixbt
    @suffix_ixbt
    https://www.babai.ru/
    Какая Вам разница от микроскопического зазора в пределах погрешности между ddr4 и ddr5 когда Вы не можете позволить себе серверное железо и и не хотите обсуждать кол-во оперативки ?

    Берите что дешевле (ddr4) и не жужжите !
    Ответ написан
    2 комментария
  • Почему не получается воспользоваться классом в Java?

    Jacen11
    @Jacen11
    совсем не понимаете что происходит? что по вашему происходит в шестой строке? там равно не хватает

    Ваш класс Person внутри другого класса LessonClass, а значит он требует экземпляра LessonClass и в статик методе его не создать как указано у вас.

    Делаю точь в точь,
    ага, конечно, оставьте эти сказки кому то другому. Не знаю что там за лекция, но там точно будет не так как у вас
    Ответ написан
    1 комментарий
  • Если бы вам предложили написать свою ОС с нуля (никаких Linux), какой ЯП вы бы выбрали?

    15432
    @15432
    Системный программист ^_^
    Rust
    Ответ написан
    Комментировать
  • Почему плохо работает ps/2 Клавиатура после отключения?

    @Drno
    В отличии от usb, ps/2 не предполагает подключение на «горячую»
    Инструкция 15летней давности гласит -
    ВыключитьЭВМ
    Подвключить клава/мышь
    Включить ЭВМ
    Ответ написан
    6 комментариев
  • Разница между if else и try catch?

    @Akela_wolf
    Extreme Programmer
    Есть такой принцип: "если убрать все обработчики исключений, программа должна нормально функционировать при условии ввода корректных данных" (Д.Томас, Э.Хант "Программист-прагматик"). Поэтому вопрос - является ли введенный пользователем нуль корректными данными? Если да - то его надо оборачивать в if. Если же это некорректные с точки зрения программы данные - то можно кидать исключение.

    То есть исключение должно выбрасываться при поступлении на вход программы некорректных данных. А какие именно данные считать некорректными - это определяет разработчик (или заказчик) программы.
    Ответ написан
    5 комментариев
  • Почему IDEA не видит класс Selenide именно в папке main > java?

    @Akela_wolf
    Extreme Programmer
    testImplementation

    И чему вы удивляетесь, когда у вас явно указано что selenide подключается только для тестов?
    Ответ написан
    Комментировать
  • Нагрев CPU на Asus ROG Zephyrus g14?

    tentrun
    @tentrun
    Fullstack (asp.net /react, vue, angular) deletant
    Если будешь вовремя обслуживать термоинтерфейс, ничего не будет. Температура деградации кристалла ~100-110, плавки bga шаров ~350
    Ответ написан
    1 комментарий
  • Нагрев CPU на Asus ROG Zephyrus g14?

    @ewgenc
    Паришься - не играйте, пусть стоит и пылится, тогда точно не «отвалится». Зачем покупать вещь, и страдать из-за неё? 80-85 абсолютно нормальная температура CPU под нагрузкой в ноутбуке, у некоторых и 100 рабочая.
    Ответ написан
    1 комментарий
  • Как решить вопрос ожидания в асинхронном программировании?

    @Akela_wolf
    Extreme Programmer
    Тут проблема не в асинхронном коде, а в том что обработка ваших данных занимает слишком много времени. Если бы у вас обработка данных была синхронной - была бы та же проблема.

    Таким образом, у вас 2 варианта:
    1. Увеличить таймаут на nginx (или кто там отвечает 502 Gateway timeout), чтобы он ждал ответа 10 минут. Пользователю при этом тоже придется ждать. На фронте в это время можно рисовать "крутилку" или запустить прямо в браузере тетрис :)
    2. Делать общение с фронтом асинхронным тоже. Пользователь загружает файл, файл уходит в обработку и фронту сразу же возвращается 200 OK + идентификатор задачи. Фронт с определенной периодичностью (10-30 секунд) опрашивает по идентификатору бэк "ну что, закончилась обработка?". И как только закончилась - бэк ему отдает итоговый файл. Пока обработка не закончилась - бэк может отдавать данные о количестве обработанных записей, что позволит фронту рисовать прогресс-бар, например.
    2а. Тоже самое что и в п.2, но уведомление о завершении задачи посылает бэк через WebSocket.
    Ответ написан
    Комментировать
  • Какой Exception лучше использовать в данном случае?

    @Akela_wolf
    Extreme Programmer
    java.lang.IllegalStateException
    Signals that a method has been invoked at an illegal or inappropriate time. In other words, the Java environment or Java application is not in an appropriate state for the requested operation.
    Ответ написан
    Комментировать
  • Почему ArrayList пустой?

    @Akela_wolf
    Extreme Programmer
    Так запрос же асинхронный. То есть вы его запускаете и говорите "вот когда данные придут - запиши их в список". И не дожидаясь пока запрос выполнится - возвращаете список (который, разумеется, пустой - запрос же еще в процессе выполнения).

    Поэтому, если уж вы начали использовать асинхронные запросы - надо жить в асинхронном мире дальше, везде протаскивая Mono и Flux.

    Либо переходить на Kotlin с его корутинами (которые прекрасно интегрируются с Mono/Flux)
    Ответ написан
    Комментировать
  • Логотипы на QR-кодах, какого размера?

    hint000
    @hint000
    у админа три руки
    Лучше всего никакого. Это в очередной раз маркетологическая хрень побеждает здравый смысл.
    QR устроен так, что в нём избыточная информация, это сделано специально для надёжного считывания, например, когда попала грязь, или уголок кода оторвался, или камера не может как следует сфокусироваться, и т.д.
    Чем больший кусок вы заслоните логотипом, тем меньше останется избыточной информации. Т.е. ваш QR ещё будет считываться в идеальных условиях, но чуть какой-то дефект или помеха - не считается. А ведь люди старались, изобретали, как закодировать именно с избыточностью. Если бы они знали, что их непростую интеллектуальную работу вот так маркетологи будут спускать в унитаз, то они бы заранее оставили пустое место в середине - вперёд, ребята, лепите логотипы вот сюда.
    Ответ написан
    Комментировать
  • Какое железо лучше для нагруженного веб-сервера?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Для нагруженных сервисов железо не так важно, важна архитектура.
    Железо - это вертикальное масштабирование и оно всегда имеет ограничения, с которыми все сталкиваются через полгод-год-два. Впрочем, этот твой вопрос тому доказательство.
    Надо делать упор на горизонтальное масштабирование, чтобы не зависеть от характеристик железа.
    Другими словами, должно быть много недорогих (слабых) серверов, а не один дорогой и мощный.
    Лично мне такой подход позволяет держать нагрузку ~24000 запросов в секунду на десяти дешёвых серверах.
    Если нагрузка возрастёт, то я куплю ещё 2-5-10 дешёвых серверов вместо того, чтобы думать о характеристиках железа
    Ответ написан
    Комментировать
  • Нормальная ли практика удалять, изменять, создавать данные get запросом, а не post?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Ненормальная. HTTP-клиенты, включая бразуер, рассчитывают на идемпотентность GET-запросов, а потому могут выполнить его без спросу или повторить произвольное количество раз. Так что не удивляейтесь, если после захода на страницу с комментариями произойдёт их удаление, хотя вы ничего не нажимали.
    Ответ написан
    2 комментария