• Почему рефлексия выводит для конструктора перечисления больше параметров, чем по факту?

    Видимо ты забыл сохранить изменения в файле, тк этот код выдаёт как и ожидалось:
    private Cities(int)
    https://java.godbolt.org/z/81xfr3fa4

    enum Cities {
    
      Moscow(45),
      Novosibirsk(50);
    	
      private int regionCode;
    	
      Cities(int regionCode)
      {
    	this.regionCode = regionCode;		
      }
    }
    
    class Main {
    
        public static void main(String[] args) {
            Class<?> clazz = Cities.class;		
    				
            for(var c: clazz.getDeclaredConstructors())
            {
    	        System.out.println(c.toGenericString());			
            }
        }
    }
    Ответ написан
    2 комментария
  • Движок на подобие википедии, варианты?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Кинопоиск - это самописанное на языке Java и фреймворке Spring решение, CMS там не используется.
    Ответ написан
    Комментировать
  • Как проверить, что строка содержит только цифры и символы?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    public static boolean isDotOrDigit(String s) {
            return s.chars().allMatch(c -> Character.isDigit(c) || c == '.');
    }
    Ответ написан
    2 комментария
  • Про асинхронность & многопоточность & мультипроцессинг в программировании?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Многопоточность
    Седой и строгий
    С терминологией в этой области у многих путаница. Ситуацию усложняет то, что одни и те же термины могут по-разному использоваться в разных контекстах и разных средах. Например самый общий термин "асинхронность" в общем смысле синоним многозадачности, то есть одновременного выполнения произвольного количества задач. Но часто под "асинхронностью" подразумевают мультиплексирование неблокирующихся сокетов в цикле событий. Конкурентность в контексте выполняемой работы - это одновременное выполнение разных задач. Параллельность в том же контексте - это одновременное выполнение одной задачи на разных данных. В контексте же того, как задачи выполняются, первое может означать, что асинхронность выполнения задач лимитировано конкурентным доступом к некому общему ресурсу, например процессору, а второе - возможность задач выполняться независимо друг от друга, например на разных ядрах. Запускать асинхронные задачи можно различными способами:
    1. В отдельных процессах, что обычно называют мультипроцессингом, и это как раз то, что делает Celery;
    2. В отдельных потоках, что называются многопоточностью;
    3. В сопрограммах или легковесных потоках, управляемых циклом событий, что часто называют асинхронностью, как я уже писал.
    4. На GPU;
    5. На разных машинах, что обычно происходит в распределённых системах.

    Первый вопрос мой состоит вот в чем: в асинхронном коде задачи как бы не выполняются абсолютно параллельно. Они выполняются по очереди, просто не приостанавливая главный поток, как в синхронном коде. А вот многопоточные и мультипроцессорные программы действительно выполняются параллельно (? или не совсем ?).

    С этим поможет разобраться, во-первых, понимание кооперативной и совместной или вытесняющей многозадачности, а во-вторых, понимание того, что многозадачность реализована на каждом уровне абстракции, от железа и ядра операционной системы до прикладного кода. В модели кооперативной многозадачности задачи самостоятельно отдают друг другу управление, когда достигают некоторой точки, в которой продолжить работу не могут. Например, при ожидании поступления данных из сети. В вытесняющей многозадачности есть некий планировщик, который решает какую из задач остановить, а какую запустить и старается распределить процессор между задачами примерно поровну. То, что называют асинхронным кодом, обычно использует кооперативную многозадачность. Если грубо, где-то в глубине среды исполнения крутится бесконечный цикл, на каждой итерации которого запускается одна из сопрограмм, работает пока не решит отпустить управление, после чего происходит следующая итерация и запуск следующей сопрограммы. Тонкость в том, что например питонячий цикл событий крутится внутри потока, который выполняется внутри процесса интерпретатора, который вместе с другими процессами в системе делит процессор под управлением системного планировщика. Так что некая асинхронная функция в вашем коде выполняется одновременно и кооперативно, и совместно. Её так же, как и любой поток в любом процессе может остановить системный планировщик, чтобы отдать процессор другой задаче. Абсолютной параллельности добиться в принципе невозможно, даже если у вас будет тысяча ядер, всё равно выполняемые на них задачи будут останавливаться, как минимум механизмом когерентности кэшей.
    Ответ написан
    Комментировать
  • Для чего в микросервисе задается порт 8080 если не используется http?

    @Everything_is_bad
    У нас
    вот у своих и спрашивай, нам-то откуда знать
    Ответ написан
    Комментировать
  • Как избежать Out Of Memory Error?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Может, Webflux + tus? При наличии tus не страшен Out Of Memory Error, ибо потом можно будет докачать.
    Ответ написан
    Комментировать
  • Как избежать Out Of Memory Error?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Я такую задачу решал реактивностью. У меня не Spring, правда, но с Reactor'ом тоже решается элементарно.
    Ответ написан
    5 комментариев
  • Как работает static final?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Одно на все приложение.
    Ответ написан
    Комментировать
  • Как работает static final?

    @rPman
    static по определению, без каких либо final и прочего, это поле класса а не экземпляра, сколько бы ты экземпляров объекта не создал, переменная будет одна и та же. Ты можешь (будешь) обращаться к этой переменной даже не имея экземпляра, т.е. ClassName.static_member_name, но конечно синтаксически ты можешь обращаться к статическому члену и через экземпляр объекта object_variable.static_member_name.

    final делает эту переменную - константой, т.е. мало того что эта переменная для класса будет в одном экземпляре, она не может быть изменена, а значит компилятор ее может оптимизировать до буквально ее отсутствия (например скалярные типы легко могут подставляться по мере использования в коде)
    Ответ написан
    Комментировать
  • В каком порядке изучать Java?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    В том же, в каком и в 2022-м.
    Ответ написан
    1 комментарий
  • О каких IT специалистах говорят, когда речь идет о дефиците кадров?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Откуда у вас миф о "50 человек на место, если убрать новичков"?

    Для уверенности буду говорить о бэкенде, но тимлид фронтов моей команды говорит, что и у фронта ситуация похожая. На одну нашу вакансию прилетает 50-200 резюме в неделю, в зависимости от активности рекрутёров, и все они от джунов, за исключением одного-двух слабых мидлов с опытом не больше трёх лет. Причём эти мидлы брезгливо морщатся на зарплаты меньше 300. Зачастую даже они получают оффер от другой компании быстрее, чем мы заканчиваем их собеседовать. Сильный мидл попадается раз в два-три месяца. Сеньоры не попадаются вообще. В некоторых банках уже несколько лет почти тысяча незакрытых вакансий.
    Ответ написан
    9 комментариев
  • Нужно ли подтверждать опыт работы программистом для собеседовании в иностранные компании?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Для самого заграничного нанимателя нужен только большой и уникальный опыт, которого нет у большинства их соотечественников. Если такой у вас есть и вы успешно пройдёте собеседования, то вам выдадут приглашение на работу. Дальше на основании этого приглашения в посольстве нужно будет получить рабочую визу. И вот тут-то у вас спросят бумажки. Устные подтверждения и налоговые выписки их не интересуют.
    Ответ написан
    Комментировать
  • Можете объяснить?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Я смотрел на сайтах и мне помогло
    Ответ написан
    Комментировать
  • Алгоритм двоичного поиска. Почему неправильно работает алгоритм?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Знаки в условиях перепутаны.
    Ответ написан
    Комментировать
  • Как запустить jar файл в консоле в интерактивном режиме?

    akelsey
    @akelsey
    START "title" [/D path] [options] "command" [parameters]

    или
    start java myapp
    Ответ написан
    Комментировать
  • Ошибка при работе со Spring Security. Как ее решить?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Причина написана в логах: не найден класс javax.xml.bind.DatatypeConverter
    В Java до 8й, включительно, эта библиотека входила в стандартную поставку, после 8й - ее надо добавлять как зависимость.
    Ответ написан
    Комментировать
  • Что это значит в джаве?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Книгу по Java даже не открывал, да?
    Это ООП
    Ответ написан
    1 комментарий
  • Как исправить ошибку "no main manifest attribute"?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Могу предположить проблемы в самом файле manifest:
    В файле MANIFEST.mf или Manifest.txt нет переноса строки. Из-за чего он игнорирует ваш файл. Убедиться в этом можно, если открыть jar каким-нибудь архиватором и заглянуть в директорию MANIFEST/MANIFEST.mf
    Вот, простой рабочий пример:

    Структура директорий и файлов:
    folder/package1/Dime2.java
    folder/package1/Dime2.class
    folder/MANIFEST.mf


    Выполненные команды:
    Компилируем в байт-код
    javac Dime2.java

    Создаем архив
    jar cfm dime.jar MANIFEST.mf package1/*.class

    Содержимое файла MANIFEST.mf (не забываем про перенос строки)
    Main-Class: package1.Dime2

    Содержимое файла Dime2.jar
    package package1;
    
    public class Dime2{
        public static void main(String [] args){
            try{
                System.out.println("Hello world");
                Thread.sleep(10000);
            } catch(Exception exc){}
        }
    }


    P.S. Обратите внимание на некоторых ОС необходимо дать права на запуск jar файла.
    Например, в linux
    chmod a+x dime.jar

    Ну и запускаем jar'ник
    java -jar dime.jar

    P.S. В примере я показал MANIFEST.mf, но без разницы. Можно и txt использовать
    Ответ написан
    1 комментарий
  • Законна ли Viber рассылка?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Нет, не законно.
    Ответ написан
    22 комментария
  • Как проверить Теорию 6 рукопожатий в БД с миллионами юзеров?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    графовая БД

    neo4j - самая известная
    ArangoDB - вам подойдет
    Ответ написан
    Комментировать