• Почему шаблонизатор не передает данные в контроллер?

    xez
    @xez
    Senior Junior Roo
    В post используется @RequestBody
    Ответ написан
    Комментировать
  • Как получить список всех классов во время выполнения?

    @mayton2019
    Bigdata Engineer
    Как-то мне надо-было посмотреть какие зависимости использует реал-тайм одного бизнес-процесса.

    Я запускал логгирование действий класслоадера. И потом анализировал лог.

    $ java -verbose:class -jar application-1.0.jar
    Ответ написан
    5 комментариев
  • Какая из книг лучшая для изучения java?

    @katuha07
    торчу от Python и ассемблера
    Герберт Шилдт "Java: руководство для начинающих" или Николай Прохоренок "Основы Java" . И во второй книге кстати рассмотрены основные классы стандартной библиотеки, получение данных из сети Интернет, работа с базой данных MySQL. И куча примеров для более хорошего восприятия материала
    Ответ написан
    Комментировать
  • Какая из книг лучшая для изучения java?

    @mayton2019
    Bigdata Engineer
    подскажите одну книгу,которую буду читать и не жалеть о том что теряю время в пустую

    Просьба очень странная. Даже невозможно нормального ответить.
    Авторов обычно трое. Шилдт. Эккель. И Хорстман. Все пишут про Java. Примерно
    одно и тоже. Но поскольку ты очень занятой и тебе времени не хватает - то я тебе
    не советую читать ничего. Работай и задавай вопросы здесь. Когда появится желание
    читать - выбери жестко одну тему. Например рефлексия. И читай только про нее.
    Вот так.
    Ответ написан
    1 комментарий
  • Какая из книг лучшая для изучения java?

    egor_nullptr
    @egor_nullptr
    Герберт Шилдт "Java: руководство для начинающих"
    Ответ написан
    Комментировать
  • Как почитать строку в java?

    @Wan-Derer
    Например, перебирая посимвольно с помощью цикла и метода String.charAt().
    И лучше выбрать другое имя для метода калькулятора.
    Ответ написан
    3 комментария
  • Существуют ли в opensource-проекты с хорошей архитектурой?

    @mayton2019
    Bigdata Engineer
    SOLID может на каком-то этапе противоречить например KISS. Например вы, как старший разработчик можете видеть "вперед" и прогнозировать потребность бизнеса в расширении какого-то функционала. И будете закладывать Open/Closed и прочие философии. А разработчик уровня Junior который неделю назад пришел на проект - этого не знает и будет писать "как чукча". Тоесть буквально то что надо сделать - тои напишет. И между вами может возникнуть спор как раз на тему SOLID против KISS. Но вы можете ошибаться в своём прогнозе потребности бизнеса. Или бизнес может передумать. В этом случае правда оказалась на стороне святой простоты (Santa simplicitas).

    Как вы понимаете такие антагонизмы не могут быть удовлетворены аж никогда. Поэтому вы никогда не найдете проекты которые удовлетворяют ВСЕМ философиям которые перечислены в списке одновременно.
    Ответ написан
    Комментировать
  • Почему не работают библиотеки Java?

    xez
    @xez Куратор тега Java
    Senior Junior Roo
    1. Рекомендую использовать Intellij Idea
    2. В импортах у вас указаны пакеты из java EE, а у вас java SE.
    3. Если библиотеки не входят в ваш SDK, их надо подключать отдельно. Либо скачав и указав в classpath (IDE с этим может помочь), либо используя maven / gradle.
    Ответ написан
    Комментировать
  • Как создать функцию которая может принимать любые типы переменных?

    xez
    @xez Куратор тега Java
    Senior Junior Roo
    Примерно так:
    <T> void genericMethod(T argument) {
            // argument extends object
            System.out.println(argument);
        }

    т.к. не понтяно какой тип будет у аргумента, он будет обладать только свойствами Object

    <T extends SomeType> void someMethod(T argument) {
            System.out.println(argument);
        }
    
        abstract class SomeType implements SomeInterface {
        }
    
        interface SomeInterface {
            //TODO :: some methods
        }

    Можно указать, что аргумент наследуют к.л. тип и тогдаможно вызывать методы этого типа.
    Ответ написан
    1 комментарий
  • Почему Java выводит список данных в таком формате?

    al_gon
    @al_gon
    Предположительно у Вас метод toString в Organization не переопределённ.
    Если Вы сделаете System.out.println(new Organization("ФАР", "4444-55555-1", "FAR@GMAIL.COM", 18)) , то тоже будет не очень.
    Ответ написан
    2 комментария
  • Где и как подтянуть теорию по некоторым темам Java Core?

    @mayton2019
    Bigdata Engineer
    По Multithreading
    "Что выведет следующий фрагмент кода"

    Это - самый плохой класс задач на мультипоточку. Я видел много таких. Большинство из них основаны на Race Conditions и бывало и такое что негативный эффект не воспроизводится хотя и ожидается в задаче. А не воспроизводится по тесяче причин. По другой операционке или по другой версии JDK/JRE. Вобщем что
    выведет код
    нужно выкинуть и заменить его на какой-то модульный тест да и еще и под нагрузкой. И беря
    во внимание комплексность самого вопроса я-бы не стал такое выводить например в собеседования. Так
    можно и мидла макнуть головой в сортир. Попробуйте распознать в коде например задачу обедающих
    философов. Я готов спорить на коньяк что если вы никогда не слыхали - то не распознаете подвох.

    Где и как подтянуть теорию Multithreading(М). Ответ - нигде. Самый лучший вариант - начать писать много кода
    с мультипоточкой и наблюдать. Очень многие эффекты книги не объясняют. И 99% новичек нигде не прочитает
    про разницу между использованием synchronized и atomic.

    Вобщем берите код с нагрузкой и наблюдайте.
    Ответ написан
    2 комментария
  • Съезжает ли индексы после удаления записей?

    @mayton2019
    Bigdata Engineer
    Индексы, будучи созданными один раз - остаются навечно.
    Если из таблицы удалены данные (50%) - то примерно
    столько - же данных будет удалено соотвественно и из индекса.

    Дисковое пространство которое занимает индекс - обычно не освобождается.
    Тут надо читать документацию по конкретной БД. Oracle может вести себя так,
    Postgres - как-то иначе.

    P.S. Интересная терминология. Съезжает...
    P.P.S Лётчик?
    Ответ написан
    Комментировать
  • Как ускорить процесс получения большого объема данных?

    compilator
    @compilator
    Senior Data Engineer
    Сходу - это выглядит как обычная батчевая обработка данный. Легко реализуется с помощью spark.
    Ответ написан
    4 комментария
  • Как ускорить процесс получения большого объема данных?

    @rPman
    что именно занимает так много времени, проведи профилирование чтобы выяснить где больше всего проводит времени твой код - например внутренняя обработка данных или база данных?
    для 10 000 данных весь процесс занимает около 20-25 мин.
    для такого объема записей это слишком большой срок для базы данных

    Что за анализ выполняется для этих данных что так медленно? почти наверняка это сделано ОЧЕНЬ не эффективно, особенно если вылезает вот это:
    Если стрим записи в БД сделать параллельным (parallelStream()), то появляется проблема при записи в БД, так как некоторые потоки пытаются одновременно обновить одни и те же данные.

    получается что для каждой единицы данных ты проводишь анализ в базе, совершаешь действия для этой записи и переходишь к следующей, логично что если в такой схеме делать это параллельно, порядок нарушается и если результат одной задачи будет зависеть от другой - можно получить 'поврежденные' данные

    Правильно - разделить свою задачу на три - анализ, обработка и сохранение данных. Затем анализ и/или обработку переделать на работу с одновременно большим количеством данных.. в оперативной памяти, а уже потом записать результат.

    Классический пример: для каждой записи ты делаешь запрос - найти соответствующий объект(ы) в базе, прочитать их, изменить и записать результат в базе. нужно сделать так - выгрузить сразу много записей (условно по 1000), изменить их с учетом того что это будет происходить в оперативной памяти, многократная запись одних и тех же объектов не будет занимать столько времени как запись в базу.

    Возможно у тебя этап загрузки из базы уже часть анализа, возможно придется переделать запрос с учетом того что он работает с большим количеством объектов, может даже больше информации выгружать.

    Современные даже десктопные машины с 16-32гб (а серверные с 128-256 легко) оперативной памяти позволяют вообще зхагрузить большую часть данных в оперативную память и обработать ее там эффективнее чем это получится делать через sql прослойку, которая рассчитана не на скорость обработки а на надежность хранения и многопользовательский доступ.
    Ответ написан
    4 комментария
  • Как ускорить процесс получения большого объема данных?

    @mayton2019
    Bigdata Engineer
    Сложно обсуждать перформанс-проблему без исходного кода.

    Я-бы предложил как всегда ударить кувалдой. Тоесть запустить по приложению JProfiler и просто посмотреть что он покажет. Проблемных мест может быть 3. Это чтение из базы. Второе это собственно проверки и валидации. Как они реализованы? Насколько качественно? И третье это собсно запись в БД. Используется ли JDBC-batch?

    SpringQuartz, cron, view здесь вообще непричем и их наличие только путает нас и вносит новые ненужные вопросы. Лучше решать проблему как одну java-функцию с входом и выходом.
    Ответ написан
    4 комментария
  • Как получить элементы ArrayList в другом классе?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Если в другом классе, то в Main надо было бы сделать метод-аксессор, но у вас не другой, у вас наследник, так что можно напрямую обращаться. Нули вы получаете потому, что JUnit запускает метод positiveTriangleCheckTest, а метод main никто не выполняет.
    Ответ написан
    2 комментария
  • Какой инструмент-конструктор выбрать для разработки UI для REST API?

    @Wan-Derer
    Я тоже бэк :) Когда возник вопрос "для себя" делать простой фронт, попытался изучать React как самый популярный. Но чёт не осилил, какой-то он предельно странный. А вот Angular зашёл! Много слышал что он очень сложный, но я особых сложностей не узрел, по крайней мере для моих примитивных задач. Говорят, Angular заходит именно бэкам т.к. у нас нет проблем с основами ООП.
    Я думаю что фронт лучше делать именно на фронтовых фреймворках чем на Java-шаблонизаторах (таймлиф, мусташ и пр.). Во-первых, их (шаблонизаторов) несколько и непонятно какой учить. А на фронте 3 фреймворка и все популярны. Потом - ты получаешь ещё одну специальность, пусть и на примитивном уровне. Далее - тренируясь с "настоящим" фронтом, ты начинаешь лучше понимать что нужно фронту и, соответственно, лучше пишешь бэк.
    Я учил Angular по курсу Владилена Минина. Правда, он довольно старый (по 8-9 версии, а сейчас актуальна 14), но в целом актуальный. Плюс и минус этого курса - автор объясняет не "академично", а исключительно на примерах. Минус - тяжело потом что-то искать в официальных доках Ангуляра, просто не знаешь как формулировать запрос. Плюс - зная как должен выглядеть твой фронт, ты практически сразу начинаешь его писать (конечно, самые основы HTML/CSS знать надо).
    Удобно писать и отлаживать бэк и фронт отдельно. А запускать фронт "на проде" можно как на отдельном сервере (Nginx, Apache), так и "заэмбедить" в Jar-файл и тогда он будет работать на "встроенном" сервере (Tomcat, Netty).
    ЗЫ: да, учил "для себя", но активно использую по работе :))
    Ответ написан
    Комментировать
  • Какой дистрибутив java выбрать для обучения?

    xez
    @xez Куратор тега Java
    Senior Junior Roo
    Берите любую lts.
    Ответ написан
    Комментировать
  • Как можно практически закрепить знания JAVA SE?

    @mayton2019
    Bigdata Engineer
    Мне кажется ты слега перегрел себя. Что там оттачивать в Enum? Какой вопрос тебя могут спросить на собеседновании на джуна и на который ты не знаешь ответ.

    В твоей ситуации я был. Это похоже на усталость. Ничего не надо делать. Надо просто отдохнуть.
    Для систематизации-же заведи себе в гитхабе проектик типа FAQ. И складывай туда code-samples
    по каждому вопросу.
    Ответ написан
    Комментировать
  • Преобразовать из Json в Java обьект?

    xez
    @xez Куратор тега Java
    Senior Junior Roo
    У вас на входе не класс Dev, а массив/список Device
    Ответ написан
    4 комментария