Ответы пользователя по тегу Java
  • Стоит ли переквалифицироваться в android разработчика?

    @asd111
    Из раздражающего:
    1) Пожалуй самый раздражающий фактор это переход с Java на Kotlin потому что не все проекты переходят на Kotlin, а разработчики языка Java в добавок обещают внедрить фичи похожие на котлиновские в новых версиях и тогда не понятно будет обратный переход или нет.
    2) появляется понемногу Kotlin native который тоже отличается от Java и по сути требует ручного управления памятью.
    3) приложение можно написать на react native и опять же знания java не нужны в таком случае, но поскольку ты андроид разработчик то должен быть в курсе как там обстоят дела, чтобы в случае необходимости написать на react native.
    Ответ написан
  • Каким образом разбить Java приложение на слои/модули (JavaFX + Hibernate+PostgreSQL+Maven)?

    @asd111
    У тебя получился типичный шаблон MVC т.е. model(persistent) view(ui) controller(logic).
    Это нормальный шаблон проектирования, так часто делают. Т.е. когда логику пишут в контроллере, работу с данными в моделях, а работу с внешним видом во вьюхах.
    Если хочешь что то другое то посмотри шаблон MVVM т.е. model view viewModel -тоже популярный шаблон и говорят лучше чем MVC хотя там тоже все зависит от рук разработчика.
    Ответ написан
    Комментировать
  • Жив ли Java ME? Есть перспективы у проекта?

    @asd111
    java me кирдык. Учи андроид если знаешь джаву.
    Ответ написан
    Комментировать
  • Стоит ли читать "Алгоритмы на Java" Седжвика, если уже прочитал "Структуры данных и алгоритмы на Java" Лафоре?

    @asd111
    Книги рассматривают почти одно и то же. Достаточно прочесть одну.
    Алгоритмов и структур данных огромное множество и все виды в одну книгу не уместить.
    Есть базовый набор алгоритмов, которые должен знать каждый программист, и эту базу рассматривают в каждой книге.
    Главное запомнить что для многих задач есть готовые алгоритмы чтобы не городить тормозные велосипеды.
    Ответ написан
    Комментировать
  • Почему в большинстве университетов C# стал заменять Java?

    @asd111
    Потому что C# миленький
    Ответ написан
    Комментировать
  • В каких случаях используют С# и Java в веб-разработке?

    @asd111
    Банки и финансовые организации выбирают java или С#. В последнее время некоторые начали переходить на nodejs или golang правда это скорее исключение из правил на данный момент.
    Ответ написан
    Комментировать
  • Какой язык для backend`a, по вашему мнению, будет востребован ближайшее время?

    @asd111
    Если сомневаетесь, то php с фреймворками symfony-yii. Работу на php без фреймворков не рассматривайте, чтобы не терять время.
    Ответ написан
    Комментировать
  • Куда двигаться дальше senior разработчику? Новый язык, технологии, opensource, стартап?

    @asd111
    На мой взгляд вашему карьерному росту мешает то что вы работаете удаленно.
    Удаленно невозможно получить повышение по карьере до руководителя отдела разработки. Для многих senior программистов следующий шаг в карьере - руководитель отдела разработки.
    Если вы действительно хороший специалист и чувствуете в себе силы на что то большее, то я бы советовал искать работу не программистом, а руководителем отдела разработки в офис. Или искать работу в офис программистом с возможностью карьерного роста.
    Если кто то начнет смеяться что это невозможно, значит это невозможно лично для них.,т.к. из тех с кем я учился двое стали руководителями отдела разработки именно в сфере web разработки к 25-27 годам.

    А сколько лет было брату Павла Дурова на момент создания vk.com ? Вроде 23-25.
    Так что если разных нытиков слушать, то только самооценка пострадает, а толку не будет :)
    Павел Дуров не ждал до 30 чтобы cделать шаг в карьере и ты не жди :)
    Ответ написан
  • Java. Как отпимизировать работу программы?

    @asd111
    насколько я понял у вас больше всего памяти съедает list<string> и set<string> из за того что у вас в памяти хранятся миллионы строк.
    я думаю что лучше не делать list<string>из множеств а делать hashcode() получившегося из одного множества string и затем этот полувшийся из hashcode() integer добавить в set<integer>и если добавилось то сохранить строку на диск - такое решение должно кушать в несколько раз меньше памяти
    Ответ написан
    Комментировать
  • Зачем писать такой большой код?

    @asd111
    Насколько я понял метод InitializeArray находит минимум и максимум в массиве и затем печатает их.
    Поэтому желательно назвать метод InitializeArray так чтобы из названия было понятно что он делает. Например вместо InitializeArray можно назвать метод find_min_and_max_and_print_them - т.е. найти минимум и максимум и вывести их. От метода WriteLine можно избавиться потому что он ничего по сути не делает.
    Ещё можно обернуть в функцию место где создается массив и вводятся данные.
    И ещё нужно сделать чтобы размер массива где то указывался.
    В java конечно CamelCase, но на мой взгляд underscore легче читается.
    Куски кода нужно оборачивать в функции для инкапсуляции, т.е. чтобы скрыть подробности работы за названием функции, поэтому функциям нужно давать имена из которых понятно что данная функция делает. Например InitializeArray - не очень понятное название для функции которая ищет и выводит максимум и минимум. А например если такую функцию назвать Найти_минимум_и_максимум_в_массиве_и_вывести_значения - то сразу всё понятно.

    Код не проверял возможно есть ошибки, но думаю примерная суть понятна.
    Т.е. в целом можно сделать так:
    public class Main
    {
        const int ARRAY_SIZE = 5;
        public static void main(String[] args) throws IOException{
            int[] working_array = create_array_and_fill_it_from_stdin();
            find_max_and_min_in_array_and_print_them(working_array);
        }
        public static int[] create_array_and_fill_it_from_stdin(){
            int[] array = new int[ARRAY_SIZE];
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            for (int i = 0; i < array.length; i++){
                String s = reader.readLine();
                int value = Integer.parseInt(s);
                array[i] = value;
            }
            return array;
        }
        public static void find_max_and_min_in_array_and_print_them(int[] array){
            int max = array[0];
            int min = array[0];
            for (int i = 0; i < array.length; i++){
                if (max < array[i])
                    max = array[i];
                if (min > array[i])
                    min = array[i];
            }
            System.out.println("Minumum is: "+min);
            System.out.println("Maximum is: "+max);        
        }
    }
    Ответ написан
  • Как начать разработку с нейронными сетями на JAVA, какие возможности они открывать?

    @asd111
    Лучше на python или любом другом скриптовом языке, большинство хороших библиотек для нейронных сетей работают хорошо на python и С++.
    Алгоритмы такие как в Prisma - чистая математика, есть аналог (Ostagram) исходники открытые https://github.com/SergeyMorugin/ostagram там используется реализация алгоритма под авторством Leon A. Gatys, Alexander S. Ecker, Matthias Bethge ( ссылка на математическую теорию arxiv.org/pdf/1508.06576v2.pdf ). Реализация сделана на библиотеке torch под lua https://github.com/jcjohnson/neural-style
    Чтобы лучше понять что это такое можете посмотреть любые уроки по нейронным сетям. Там много математики, поэтому любовь к математике обязательна, иначе станет скучно.
    Ответ написан
    Комментировать
  • Как разработать игровой сервер wow/lineage и так далее?

    @asd111
    1. Нужно уметь ловить пакеты с твоего компьютера на сервер и обратно. Для этого есть специальные программы - снифферы, или анализаторы пакетов сети, другими словами wireshark, tcpdump и т.п.
    А с помощью дебагера(IDA pro) можно узнать какой код выполняется при нажатии например на кнопку "войти".
    2. Нужно уметь дешифровывать пакет если он зашифрован.
    3. Нужно знать какой пакет когда отправляется, т.е. что отправляется при логине, что отправляется во время игры и т.п.
    4. На основе протокола, полученного из трёх предыдущих действий пишешь свой сервер, который посылает нужные пакеты.

    Думаю по каждой известной игре уже есть готовые хотя бы наполовину протоколы серверов и т.п. и есть готовые хотя бы наполовину сервера и их разработчики - общайся побольше с ними, узнаешь много нового и сможешь им помочь.
    Например вот исходники одного изв серверов WOW https://github.com/mangoszero/server
    Вот немного о протоколе WOW dvlabs.tippingpoint.com/blog/2007/06/28/decoding-t...

    Для реверс инжиниринга нужно уметь использовать IDA Pro и т.п. дебагеры-дизассемблеры
    Вот пара статей как примерно пользоваться такими инструментами
    https://habrahabr.ru/users/drmefisto/topics/
    Фокус в том что можно поискать в исходниках клиента что происходит при нажатии на кнопку "войти" и т.п.
    В статьях у DrMefisto есть про то как делать кейгены или быстро крякать - принцип тот же. Вот в этой статье довольно подходящий пример https://habrahabr.ru/post/255935/

    Для начала попробуй повторить то что показывает DrMefisto - это даст тебе большее понимание что и как, затем возьми какую нибудь казульную игру, типа фермы какой нибудь, которая отправляет пакеты на свои сервера и попробуй получить все пакеты от клиента к серверу и наоборот с помощью wireshark.
    Затем попробуй сделать свой сервер к которому можно подключить клиент.

    Возможно есть способы слушать с помощью дебагера какие команды выполняет клиент(а значит узнать какие пакеты отправляет) при нажатии на ту или иную кнопку во время игры, но тут я не силен.
    Ответ написан
    1 комментарий
  • C++ vs Java for Android?

    @asd111
    На С++ под Android как правило пишут только игры. Всё остальное Java.
    Ответ написан
    Комментировать
  • Какой язык больше всего подходит для rest api?

    @asd111
    Лучше всего взять vds/vps и настроить как хочется.
    Выбрать можно тут https://poiskvps.ru/
    Бесплатно в целях обучения можно попробовать Heroku https://devcenter.heroku.com/categories/java - будет полностью рабочее приложение, но с небольшими ограничениями https://www.heroku.com/pricing
    Ответ написан
    Комментировать
  • BufferedReader или Scanner?

    @asd111
    Самый быстрый способ парсить большие файлы - C++ boost memory maped file + парсер на boost spirit
    https://habrahabr.ru/post/246257/
    Ответ написан
  • Какие примеры правильного Java кода можно привести?

    @asd111
    Ответ написан
    Комментировать
  • Что и на чём программировать в 13 лет?

    @asd111
    Купи книжку с задачами по олимпиадному программированию для школьников.
    И книжку на тему алгоритмы и структуры данных.
    Участвуй в городских и областных олимпиадах по информатике.
    Олимпиадное программирование очень хорошо развивает программистские навыки.
    Из языков думаю хорошим выбором будет python или С#.
    Я верю что ты сам писал чаты и простые игры, многие начинают как раз в 12-13 лет.
    Ты молодец. Не останавливайся на достигнутом. У тебя все получится.
    Ответ написан
    4 комментария
  • Важно ли Junior Java знать алгоритмы и структуры данных?

    @asd111
    Алгоритмы и структуры данных нужны всем. И ещё машинное обучение было бы полезно знать.
    Но для Junior достаточно знать синтаксис и уметь гуглить.
    Лучше пообщайся непосредственно с теми у кого есть вакансии junior java, т.к. это довольно растяжимое понятие.
    Ответ написан