Ответы пользователя по тегу Java
  • Как переобразовать hashCode обратно в строку?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Технически можно обратить но практически, в зависимости от алгоритма, вероятнее всего это будет брутфорс. Почитайте о "Теореме о бесконечных обезьянах". Т.е. условно говоря хэш 1\2\3\4\5 значного числа вы найдете довольно быстро, а вот что то сложнее ...
    На эту тему, точнее схожую, на хабре был забавный, а главное практический прикол с файловой системой которая все хранит в числе pi, а как известно абсолютно все известное и нет существует в числе pi.
    Ответ написан
  • Какую версию Java(JDK) лучше всего выбрать для обучения?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Java 8. Еще до 2025 года будет поддерживаться.
    7 версия проживет еще до 2022 года.
    Плюсы 8ки, кровавый энтерпрайз едва только на нее переползает. Нет сложностей для новичка в виде модулей, из коробки присутствует javafx.
    В общем на данный момент лучше именно 8ки учить, на данный момент самая ходовая везде, даже в том же андроиде скрипя зубами.
    Ответ написан
  • Как купить и прикрутить SSL сертификат для самописного REST сервиса?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    nginx в роли прокси и в него сертификат от letsencrypt.
    Ответ написан
  • Есть ли возможность использовать Android JNI в обычном Java приложении?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    С чего вы решили что вот так просто можно взять нативные библиотеки и перетащить их с одной платформы на другую без пересборки.
    1) Необходимо чтобы совпадали архитектуры.
    2) Необходимо чтобы совпадало окружение, т.е. ядро системы(если задействованы оттуда вызовы), библиотеки вокруг(опять же их версии и то что они не изменены в угоду конкретной ОС).
    3) Соблюдены внешние API системы.

    Условно вы можете подсунуть часть библиотек которые обычные(если это так и они не изменены):
    liblog.so - могу ошибаться но это чисто андроидная либа и под обычным линуксом используется частично для какразтаки сборки нативных приложух под андроид но не как зависимость библиотек на линуксе.
    libz.so - это zlib
    libm.so - это часть libc. Снова лотерея, библиотека монструозная и можно сказать это второе ядро системы.
    libc.so - см. libm.so
    libdl.so - см. libm.so
    libstdc++.so - даже думать не надо, легко найдете но опять же подойдет ли?
    Места где они ищутся и под какими именами можете просимлинкать.

    Можете представить что пытаетесь пересадить карбюратор ВАЗ на какой нибудь FIAT.
    Ответ написан
  • Как сделать защищённую базу данных SQLite в Java приложении?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Если в условиях стоит что кто то именно украдет\получит бд.
    Шифруйте базу, пароль привязывайте к уникальному чемуто этого железа. К примеру некий хэш из mac+цп пк+sn hdd. Если сопрут то надо будет как минимум еще и узнать все необходимые данные из чего собирается пароль.
    Ответ написан
  • Где взять полные либы Телеграм бота для Java?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Сделай проект на мавене, все зависимые либы подтянутся.
    Ответ написан
  • Какая будет структура программы?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Раз сомневаетесь то то покажите что у вас уже есть и что не нравится. Пока вопрос выглядит как задание и может улететь в бан.
    Ответ написан
  • Зачем учить jvm языки кроме Java?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Вот есть напиток кофе. одним подавай кофе со сливками, другим с молоком, третьим с сахаром а четвертым вообще двойной крепости и без кофеина.
    Тут таже ситуация. Если Вам привычнее java пишите на ней т.к. вакансий все еще очень много, хочется нового ну кто Вам запрещает?
    Ответ написан
  • Как делать что-то при открытие окна в JavaFX FXML?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    В случае с FXML из конструктора контроллера еще нельзя обращаться к fxml элементам, зато есть метод initialize() который отрабатывает уже после инициализации всего fxml, используйте его.
    Ответ написан
  • Как найти эффективное решение задачи (Java)?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Виктор Мальков,
    еще в копилку, не короче но вызовет приступ у ненавистников лямбд и стримов
    IntStream.rangeClosed(1, n).forEach(i -> {
                IntStream.rangeClosed(1, n).forEach(j -> 
                    System.out.print((i + j) % 2 == 0 ? '*' : '-'));
            System.out.println();});


    Еще изврат, правда будет работать только с нечетными числами но зато в один цикл! =).
    IntStream.rangeClosed(1, n*n).forEach(i -> System.out.print(i % n != 0 ? (i % 2==0 ?'*':'-') : '\n'));
    Ответ написан
  • Как связать таблицу где ее pk ключ является составным от pk внешней таблицы и поля cамой таблицы??

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Мы тут в первую очередь чтобы помочь в решении проблемы которая уже возникла, а тут скорее голая просьба решить задачу. Где Ваши попытки? Где суть проблемы по итогам Ваших проб и ошибок?
    Есть гениальная поговорка хоть и не помню дословно но помню смысл "Попробуй объясни обезьяне суть проблемы и получишь ответ на свой вопрос", как то так. Так к чему я, попробуйте для начала сами себе объяснить вопрос, возьмите бумажку и на ней начеркайте что есть и как хотите, хоть текстом хоть диаграммой, попробуйте в живую объяснить суть девушке\жене\ребенку\брату\другу. Уверен что ответ сам придет, вот если по какой то причине даже так не осеняет то уже с результатами умозаключений идите сюда.
    Без обид но я крайне часто вижу тенденцию, что все обленились и гораздо проще бежать спрашивать ответ, вместо того чтобы хоть чуть чуть напрячь извилины и попробовать пораскинуть мозгами с разных сторон. А что случится если внезапно окажитесь без интернетов да без опытных умов вокруг и спросить будет негде?
    Ответ написан
  • (Java) Как отсортировать этот массив объектов?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Читать основы, и даже не jav'ы в частности.
    Ответ написан
  • Java проблемы с кодировкой, поможете?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    ReversedLinesFileReader(File file, int blockSize, String encoding)
              Creates a ReversedLinesFileReader with the given block size and encoding.
    Ответ написан
  • Наследование методов Java?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Thread myThread = new Thread() {
        public void run() {
           //тут код ваш
        }  
    };

    Или вот так с лямбдами
    Thread myThread  = new Thread(() -> {
        //тут код ваш
    });
    Ответ написан
  • Как продолжить изучение Java после JavaCore?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Берете яйца в руки и идите собеседоваться. Не прокатит, сразу узнаете причины как минимум сами по вопросам на которых плавали. В нормальной конторе посмотрят знания и спокойно, если действительно знаете описанное, возьмут.
    Ответ написан
  • [Мне хочется странного] Можно-ли подменить класс при импорте в Java?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Курите рефлексии, класслоадеры, агенты. Выбирайте что вам больше подойдет.
    Ответ написан
  • Как конвертировать .jar в .exe на JDK 11?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Ну начнем по порядку.
    Java как язык и среда крайне консервативная и любые нововведения как правило воспринимаются в штыки. Плохо это или хорошо вопрос крайне тонкий и в глазах потребителя всегда разный. Со стороны энтерпрайза это просто восхитительно, есть огромный выбор в хороших специалистах, есть огромное время поддержки нужной версии которая обкатана годами и уже почти все известно о всех тонкостях. Со стороны мелких инноваторов и разработчиков развитие идет непостижимо медленно а значит есть отставание от трендов и оно значительное.
    Предрекая вопрос что за бред привожу следующий факт по поддержке версий:
    J2SE 1.4 выход 2002 год, конец поддержки 2013
    J2SE 5.0 выход 2005 год, конец поддержки 2015
    J2SE 6 выход 2006 год, конец поддержки 2018
    J2SE 7 выход 2011 год, конец поддержки 2022
    J2SE 8 выход 2014 год, конец поддержки 2025
    J2SE 9-10 вышли в 2017/18 годах, проходные бэты и ключевой момент развития и политики java в котором произошло множество огромных изменений политики. Особенно изменилась лицензия по моему именно где то тут и очень сильно, рекомендую почитать холивары на эту тему.
    J2SE 11 вышла в 2018, конец поддержки 2026 год.
    Если вдаваться в абстракцию могу предложить следующую иллюстрацию. (еще раз это просто иллюстрация для понимания и попыток провести параллель с чем то иным).
    Предположим что майкрософт идет тем же трендом что и оракл как и весь мир большого бизнеса. На выходе имеем следующее:
    -основная ОС на которую ориентируются большие игроки рынка софта и игр является winXP.
    -миром до сих пор правят однопоточные но многогерцовые процессоры которые правда уперлись в 5Ггц. Зачем менять то что и так прекрасно в простоте. Просто удешевляем и "ухолодняем" производство. Да и вообще у основной массы все еще камни уровня 1 поток и 3.4 ГГц. Ориентируемся на это.
    -миром видеокарт до сих пор правят dx9c без новомодных нововведений, без cuda\opencl, без dxr, без подходом низкоуровнего апи вида вулкана\dx12. Зачем менять то что итак прекрасно работает и давно известно с каждой стороны. Видеокарты выходят давно упер в возможности выходя из ревизии к ревизии с фиксами багов и удешевлением производства. Да и в общем то зачем что то новое, т.к. у основной массы еще графика уровня встройки.
    - всякие nvme\m2\pcie4 все от лукавого, зачем это если у массового пользователя все еще sata2 hdd который едва ли выдает что то среднее.
    -мониторы у всех в среднем 800х600 пикслей, а зачем больше то?
    + На выходе с этими ориентировками имеем универсальный продукт(софт\игру) которая будет работать вообще у всех в среднем отлично, все возможные баги были известны и пофикшены еще 10 лет назад. Новомодное все от лукавого и только у единиц энтузиастов, а значит не берем их в расчет или берем пытаясь выдать это как фичу.

    Теперь немного пояснений к вышесказанному, разработчики, большие естественно, получают колоссальное преимущество т.к. их много, есть выбор, они знают и понимают что и как происходит, у них есть богатый стаж как делать можно и как нельзя, а главное почему. Изучение языка и стандарта версии крайне подробное, тонны книг, курсов, обсуждений. С другой стороны никаких новшеств нет, все как на уровне 10 лет назад так и осталось, хочешь круглую кнопочку так забудь или только медленными костылями за которые сразу объявят костылеписателем рукожопом.

    Надеюсь параллель понятна. Теперь к вопросу.
    Сейчас, я напомню 2019 год, скажу честно видел не один десяток энтерпрайз решений которые до сих пор все еще развиваются на jre7. Есть те кто скрипя зубами переходит на jre8, но пока, опять же лично мои наблюдения, это вот прям скрипя зубами о асфальт, очень нехотя, очень не хочется.

    Касательно компиляции в ехе, нет такого понятия в мире java. Опять же дам пояснения.
    Java это про изоляцию хостового железа от софта. Т.е. у Вас есть софт которому глубоко фиолетово сколько там ядер, какая ФС, какая ОС и т.д. .JRE это "виртуальная машина" и в этом ее прелесть, "есть один бинарник который работает везде и которому пофиг где он был запущен" главное чтобы была JRE.
    И вот тут возникает прикол, самих реализаций JRE множество, есть платные, есть бесплатные, есть условно платные, у каждой своя лицензия и ограничения Каждая решает свои проблемы.

    Так вот, предложу очередную аналогию. Предположим Вы создали автомобиль который ездит на "топливе", все замечатально, в вашем определении топливо "все что горит". На практике же на бензине он как бы работает и так как ожидалось. На дизельном как то вообще не очень. На авиационном, ну работает правда не долго. На водородном вот даже не заводится.

    Ну ладно хватит вокруг да около, а то развел демагогию. Лично мое мнение и практика, JAVA приложения вообще нельзя, еще раз НЕЛЬЗЯ собирать в ехе или любую другую самодостаточную сборку.
    Банально но потому что Вы врезаете пользователя или СЕБЯ в лицензию или ограничения. Ну например вы собрали ехе который по сути включает jre под win10 и скинули мне, а у меня winXP и нифига не работает, а если работает то с совершенно непонятными логами багов. Вот скинули бы jar файл с пометкой что собран под jre7 то проблем бы не было от слова совсем.

    А, и к слову, даже встроенный механизм java по сборке так называемых native сборок не решает проблем разношерстности от слова совсем.

    PS. надеюсь не зря написал такое эссе и донес свою мысль. Мысль основывается на моих наблюдениях и опыте.
    Ответ написан
  • Как перебрать ресурсы с помощью цикла?

    jamakasi666
    @jamakasi666 Куратор тега Java
    Просто IT'шник.
    Упихай ресурсы в массив, читай циклом.
    <resources>  
    <string-array name="myStringsArray">  
        <item>adamt1</item>  
        <item>adama1</item>  
        <item>adama1t</item>  
        <item>adam2</item>  
        <item>adama2</item>
        <item>adama2t</item>
    </string-array>
    
    
    ....
    String[] myStringsArray= getResources().getStringArray(R.array.myStringsArray);
    for (int i = 0; i < 11; i+=3) {
                 items.add(new Send( myStringsArray[i]));
                 items.add(new Send2( myStringsArray[i+1],myStringsArray[i+2]));
    }
    Ответ написан