Задать вопрос
Ответы пользователя по тегу Java
  • Почему объект java считывается справа налево?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Обычно для конкатенации строк используют не сложение а специальный билдер.

    Вместо
    String hhh = new String("qwe");

    пишут
    StringBuilder sb = new StringBuilder("qwe");

    Операция сложения для строк вообще введена неправильно во многих языках.
    Сложение - коммутативно. Но для строк это правило не работает.
    Ответ написан
    Комментировать
  • Какие потоки имеют внутренний буфер в Java IO?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Ты задаешь вопросы в основном по абстрактным классам. А в них обычно нет ничего интересного.
    И размер буфера это как раз особенности реализации в наследнике.

    Для буферизации InputStream можно использовать такую обертку.

    BufferedInputStream strm = new BufferedInputStream(new FileInputStream("file"), 128 * 1024);
    Ответ написан
    Комментировать
  • Как расшифровать .class файл?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Приложение JD-Gui поможет тебе анализировать (декодировать) байткод class files.

    https://java-decompiler.github.io/

    Если речь идет о криптографии (дешифрование) то это отдельная тема. Но мне кажется
    что тут пока не доказано применение шифрования. И это во много раз сложнее
    чем декодирование.
    Ответ написан
  • Все возможные переменные окружения для JDK?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Обычно настраивают JAVA_HOME - это корень дистрибутива.
    CLASSPATH - это там где лежит lib/*.jar и
    PATH - это где bin/ и все выполнимые приложения из
    комплекса JDK.

    Первую настраивать не обязательно. Обычно это просто для удобства переключения между
    дистрибутивами. А две другие соотв идут как зависимость от хоума.
    Ответ написан
    Комментировать
  • С какого раздела можно начинать читать Algorithms in Java от Седжвика если уже знаешь джаву?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Седжвик делает упор на алгоритмы. Вот и читай про алгоритмы. Сортировки. Поиск. Алгоритмы на графах.

    Или ты думаешь что документация по Java раскрывает тебе графовые алгоритмы?
    Бери содержание и смотри.
    Ответ написан
    Комментировать
  • Вызов объектом метода своего класса - это статическое связывание или динамическое?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Будет использован invokevirtual
    class MyClass
    {
       public void method()
       {
         System.out.println("OK");
       }
    
    
       public static void main(String[] args) {
         MyClass obj = new MyClass();
         obj.method();
    
       }
    }


    Compiled from "MyClass.java"
    class MyClass {
      MyClass();
        Code:
           0: aload_0
           1: invokespecial #1                  // Method java/lang/Object."<init>":()V
           4: return
    
      public void method();
        Code:
           0: getstatic     #7                  // Field java/lang/System.out:Ljava/io/PrintStream;
           3: ldc           #13                 // String OK
           5: invokevirtual #15                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
           8: return
    
      public static void main(java.lang.String[]);
        Code:
           0: new           #21                 // class MyClass
           3: dup
           4: invokespecial #23                 // Method "<init>":()V
           7: astore_1
           8: aload_1
           9: invokevirtual #24                 // Method method:()V
          12: return
    }
    Ответ написан
    Комментировать
  • Не удается решить проблему, что делать?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Говорит нет такого сайта https://repo.implario.dev

    Тут ничего не поделать. Доктор сказал - в морг.
    Ответ написан
    Комментировать
  • Как работать с большими json файлами, которые получаются по запросу в Андроид приложении?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    В Андроиде насколько я помню есть API для работы с SQLite БД. Это в тех случаях
    когда тебе надо экономить память но и работать с данными тоже надо.
    Можно попробовать 1 раз скачать список станций и считая его достаточно
    стационарным - положить в БД
    и потом делать с ним joins из других запросов.
    Ответ написан
    Комментировать
  • Возможно ли написать так сказать кейлоггер на java если да то что использовать?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Для автоматизации тестирования - посмотри Robot
    https://docs.oracle.com/en/java/javase/21/docs/api...
    но его функционал в основном завязан на графические приложения
    созданные с java.awt.
    Ответ написан
    Комментировать
  • Как вычитать код страницы в Java?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Вот посмотри как тут пишут https://www.geeksforgeeks.org/selenium-with-java-t...
    Ответ написан
  • Как проверить, что строка содержит только цифры и символы?

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

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Тебе не нужно мокать StringJoiner. Это точно тестовый антипаттерн потому
    что сам по себе Стринг джойнер не является источником данных. Это все равно
    что мокать функцию синуса или квадратный корень. Это просто звучит как бред.

    А мокать тебе надо твою бизнес логику которая продуцирует данные для другой
    бизнес логики которая тестируется. Вот.
    Ответ написан
    Комментировать
  • Как транспонировать биты числа максимально быстро?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Ищется функция вида

    def transpose(matrix uint16) : uint16 = {}

    Если она ДЕТЕРМИНИРОВАНА тоесть зависит от аргумента и все. То можно ее ускорить
    путем МЕМОИЗАЦИИ тоесть создания просто таблицы расчитанных значений.
    Это будет очень быстро.

    Это удобно поскольку таблица получается не очень большая и влезает в разумные
    рамки памяти. Если допустим мы говорим о 32х битах то можно изучать варианты.
    В реальном мире линейного распределения аргументов не бывает. Распределение
    всегда косит в какую-то сторону, и этим можно вользоваться, создавая кеши значений
    типа LRU или дисковые базы данных как делают например, для
    тяжелых расчетов или в вебе для медленных источников данных.
    Ответ написан
    Комментировать
  • Не запускается код из-за ошибки Process finished with exit code 1, почему?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    У тебя
    Tables.check();
    не обрабатывает исключение.
    Ответ написан
  • Как из базы данных MySQL в Java получить результат запроса в виде объекта?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    [maiorow, mWbs0yt, 3, [1,8], [8,9,10,11,12], dir_str, ZXC120, 3, [7], [13], DirLid, ZXC121, 3, [2], [1,2,3,4,5,6,7]]

    Это какая-то чепуха полученная методом toString. Спутались запятые и вообще непонятно где
    объекты начинаются и где заканчиваются.

    Распечатай отдельно чему у тебя равен direction_json и object_types. И я не уверен что они являются
    строками. Возможно на уровне БД это более сложный объект. Короче узнай его тип.
    Ответ написан
    Комментировать
  • Как научиться разрабатывать большие проекты на Java, если раньше писал на PHP?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Я много писал веб на PHP (с фреймворками), но давно хотел перейти на Java, Spring и т.д.

    Поздравляю. Ты теперь откроешь для себя целую вселенную и поймешь что Java - очень разная.
    Например стоило-бы отличать Java Android и все остальное.

    По поводу процесса компилляции. Почитай про технологии JSP-страничек. Она очень похожа
    на PHP по своей задумке. И там реакция на изменения кода чуть быстрее чем в Servlet-приложении
    хотя JSP идеологически является макросом над сервлетом.

    Но в топике верно выше написали что от серверного рендеринга сейчас уходят. И современные Java-веб
    приложения обычно делают 2 команды. Первая делает только дизайн фронта. Вторая - обычно микросервисы
    которые с этим фронтом взаимодействуют. Почитай также про GraphQL. Это полезно для развития.
    И многие вещи в Java были добыты эволюционным путем. В частности такая мануфактура как
    дизайн и бизнес-логика имеют четкое разделение и это правильно. Это стабилизирует релиз
    и позволяет бизнесу делать и тестировать фичи независимо. Например фича нового REST сервиса
    может быть создана и оттестирована еще до того как готов дизайн и наоборот. Дизайн на моках
    можно показать заказчику пока сервис только в разработке.

    Оказалось, что приложению надо 3-4 минуты, только чтобы стартануть на машине разработчика.

    Это нормально. Мне попадались очень тяжелые монолиты которые на мощных машинах стартовали
    по 30-40 минут. Да и такое бывает. Это тяжелая приставка *enterprise. И конечно это идеологически
    отличает Java от PHP. Для корпоративных приложений в принипе неважно сколько они стартуют.
    Главное когад они уже стартовали и 30 минут прогревали кеши из БД например то биржа будет
    работать быстрее в runtime. Вот. А подготовку к работе можно делать и 30 минут - это тоже ОК.
    Главное что клиент это не замечает в силу закрытого опер-дня и Blue-Green deployment.
    Тоже почитай про это кстати. Полезно.

    Из-за долгих перезапусков (тем более на новом для меня проекте) разработка шла долго и мучительно.

    Могу посоветовать сфокусироваться на модульных тестах. То как ты разрабатывал раньше, сверяя
    каждый символ с браузером - может быть не эффективным. По сути если ты написал бизнес-логику
    и дизайн для нее готов и твоя задача просто проверить что функии получили на вход инпуты
    и выдали верные аутпуты - то значит задача на 99% решена и можно релизить.

    С точки зрения например корпоративного процесса разработки - любая фича разрабатывается 1 день. Это я меряю
    по себе. Беря во внимание чтение ТЗ. Разработку. Цикл тестирование. Деплойменты. Аксептенсы и прочее.
    И если тебя просят покрасить кнопочку с красного цвета на синий - ты спокойно сообщай что
    это занимает 1 день в конвейере процессов. И это нормально. Это корпоративная бюрократия.
    И Java - бюрократична. И ты главное не стрессуй а просто используй эту бюрократию в свою
    пользу. Пей кофе. Читай книги пока идет deploy pipeline.
    Ответ написан
    2 комментария
  • Можно ли демонстрировать или отображать программу .exe в окне своей же программы?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Да можно. Если речь идет например о том чтобы в HexEdit открыть сам HexEdit.
    Но некоторые ОС в момент исполнения файла могут накладывать на него блокировку
    поэтому редактировать его будет нельзя или перемещать тоже будет нельзя.
    Ответ написан
  • Как задать url pattern для фильтра в Spring Framework?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Предположительно это может реализовано в AntPathMatcher. Посмотри как там документация
    описывает

    https://docs.spring.io/spring-framework/docs/curre...
    Ответ написан
    Комментировать
  • Не запускается сервер Minecraft на ядре Forge, как это исправить?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Возможно такое. Серверная JDK поставляется без UI компонентов. Так называемая headless-версия.

    Проверить можно следующим тестом.
    assertEquals(true, GraphicsEnvironment.isHeadless());
    Ответ написан
    Комментировать
  • Куда двигаться дальше, чтобы создать web приложение?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Обязательно ли нужно уметь их писать? Я думал, что Spring будет автоматически создавать их, а от нас будет требоваться создавать контроллеры, модели и т.п.

    С точки зрения новых подходов к разработке backend (GraphQL) вообще нет смысла изучать
    методы DEL/GET/PUT. Все будет заменяться на POST, который делает всю работу и в нем-же будут
    коды ошибок и прочее.

    С этой точки зрения сервлет является таким-себе странным рудиментом. Вроде он существует.
    Обеспечивает команды HTTP-протокола. Но кому нужны эти все команды - непонятно?

    Можете запрограммировать приложение с сервлетом типа превед-мир чтоб понять как оно
    будет работать. Но вряд-ли в современном бизнес-программировани или промышленном
    программировании от вас кто-то этого потребует.
    Ответ написан