Задать вопрос
Ответы пользователя по тегу Java
  • Есть сервера, которые стоит написать именно на Java, а не на Node?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Многое зависит от ваших умений и знаний, а также от задачи, которую нужно решить..

    Если вы владеете лучше нодой, то пишите на ноде. Другое дело, сможет ли нода решить задачу, которую вам нужно решить. На java написано куча библиотек, которые решают множество повседневных задач. Сам язык и его фреймворки используются в highload cистемах в энтерпрайз.

    Я широко использую язык Java для повседневных задач, но также иногда предпочитаю использовать Go.
    Ответ написан
    Комментировать
  • Как избежать Out Of Memory Error?

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

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Для сборки артефакта используйте соответствующие плагины от maven или gradle.
    Если в проекте есть зависимости, то погуглите такой термин, как fat jar.
    maven build fat jar
    gradle build fat jar
    Ответ написан
    Комментировать
  • Как сохранить данные в PostgreSQL в Spring Data JDBC?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Да, можно каскадно. Можно выставить CascadeType.ALL или как вариант выбрать только MERGE & PERSIST
    Ответ написан
    Комментировать
  • Есть ли пример расширяемого приложения на базе Spring для клиентов?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Вам по факту нужен базовый функционал + возможность установки плагинов.
    Благо у спринга есть готовый фреймворк
    https://github.com/spring-projects/spring-plugin
    Ответ написан
    Комментировать
  • Как использовать конкретную версию Джава?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Для удобства я использую sdkman.
    https://sdkman.io/
    В частности для временного использования указанной версии `sdk use java xxx` и для постоянного использования `sdk set java xxx`
    Ответ написан
    Комментировать
  • Какой пет проект можно реализовать на Java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    В связи с этим вопрос: а что на Java можно такое реализовать, чтобы охватывало много разных технологий?

    Нуу, напишите сервис колл-центра или какой-нибудь онлайн чат. Можно также написать что-нибудь на микросервисах. Можно взять понравившийся вам сайт и скопировать его функционал. Можно принять участие в опенсорс проектах, как вариант
    Ответ написан
    Комментировать
  • Какую книгу взять новичку в разработке микросервисов на Spring Framework?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Если хотите быстро войти в курс дела, то можете глянуть курсы на Udemy.
    Например, у Сергея Каргополова есть курс по микросервисам на английском. А так разумеется, что для академических знаний книга не помещает.

    `Java в Облаке Джоша Лонга` не рекомендую. Это скорее даже рекламная книжка компании Pivotal, нежели что-то академическое.

    Микросервисы spring в действии. можно прочитать
    Ответ написан
    2 комментария
  • Hibernate не видит entity. Как пофиксить?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый вечер.
    А кто пропишет в файл конфигурации, что этот класс является entity?)

    Обратите внимание на эту строку -
    <mapping class="hibernate.entity.User"/>

    <?xml version='1.0' encoding='utf-8'?>
    <!DOCTYPE hibernate-configuration PUBLIC
            "-//Hibernate/Hibernate Configuration DTD//EN"
            "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
    <hibernate-configuration>
        <session-factory>
            <property name="connection.url">jdbc:mysql://localhost:3306/spring_course</property>
            <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
            <property name="connection.username">root</property>
            <property name="connection.password">springcourse</property>
            <property name="current_session_context_class">thread</property>
            <property name="dialect">org.hibernate.dialect.MySQLDialect</property>
            <property name="show_sql">true</property>
           
             <mapping class="hibernate.entity.User"/>
        </session-factory>
    </hibernate-configuration>
    Ответ написан
  • Hibernate не видит entity?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Недавно столкнулся с похожей ситуацией, когда один и тот же проект работал на моем ноуте, а в ноуте коллеги нет. Там правда, была проблема в rabbitmq.
    Как именно вы поднимаете БД? Если в докере, то попробуйте разные образы. Проверьте создается ли БД, есть ли нужные привилегии у пользователя и т.д. Может быть проблема даже не в коде...
    Ответ написан
    Комментировать
  • Как вносить изменения в шаблон страницы без перезагрузки томкат?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Установите live reload

    https://chrome.google.com/webstore/detail/liverelo...
    https://addons.mozilla.org/ru/firefox/addon/live-r...
    https://addons.mozilla.org/ru/firefox/addon/livere...

    И включите возможность в İDE (по ссылке ниже есть инструкция для intellij idea)
    https://stackoverflow.com/questions/33349456/how-t...
    Ответ написан
    Комментировать
  • Как сохранить разметку текста при конвертации в HTML?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    не знаю поможет ли вам это...
    Вот, например, если используете JSOUP, то выбрав элемент вы можете скинуть в этот метод и он сохранит форматирование текста
    public class HtmlToPlainText {
    
        public static String getPlainText(Element element) {
            FormattingVisitor formatter = new FormattingVisitor();
            NodeTraversor.traverse(formatter, element); // walk the DOM, and call .head() and .tail() for each node
    
            return formatter.toString();
        }
    
        private static class FormattingVisitor implements NodeVisitor {
            private static final int maxWidth = 80;
            private int width = 0;
            private StringBuilder accum = new StringBuilder(); // holds the accumulated text
    
            // hit when the node is first seen
            public void head(Node node, int depth) {
                String name = node.nodeName();
                if (node instanceof TextNode)
                    append(((TextNode) node).text()); // TextNodes carry all user-readable text in the DOM.
                else if (name.equals("li"))
                    append("\n * ");
                else if (name.equals("dt"))
                    append("  ");
                else if (StringUtil.in(name, "p", "h1", "h2", "h3", "h4", "h5", "tr"))
                    append("\n");
            }
    
            // hit when all of the node's children (if any) have been visited
            public void tail(Node node, int depth) {
                String name = node.nodeName();
                if (StringUtil.in(name, "br", "dd", "dt", "p", "h1", "h2", "h3", "h4", "h5"))
                    append("\n");
                else if (name.equals("a"))
                    append(String.format(" <%s>", node.absUrl("href")));
            }
    
            // appends text to the string builder with a simple word wrap method
            private void append(String text) {
                if (text.startsWith("\n"))
                    width = 0; // reset counter if starts with a newline. only from formats above, not in natural text
                if (text.equals(" ") &&
                        (accum.length() == 0 || StringUtil.in(accum.substring(accum.length() - 1), " ", "\n")))
                    return; // don't accumulate long runs of empty spaces
    
                if (text.length() + width > maxWidth) { // won't fit, needs to wrap
                    String[] words = text.split("\\s+");
                    for (int i = 0; i < words.length; i++) {
                        String word = words[i];
                        boolean last = i == words.length - 1;
                        if (!last) // insert a space if not the last word
                            word = word + " ";
                        if (word.length() + width > maxWidth) { // wrap and reset counter
                            accum.append("\n").append(word);
                            width = word.length();
                        } else {
                            accum.append(word);
                            width += word.length();
                        }
                    }
                } else { // fits as is, without need to wrap text
                    accum.append(text);
                    width += text.length();
                }
            }
    
            @Override
            public String toString() {
                return accum.toString();
            }
        }
    
    }
    Ответ написан
    Комментировать
  • При считывании отображаются пустые поля?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Ну, во-первых, вы можете использовать try-with-resources вместо try-catch.
    Во-вторых, стрим гораздо лучше закрывать в finally блоке, если решили все же использовать try catch
    В-третьих, лучше писать в логи те эксепшены FileNotFoundException и IOException
    В-четвертых, вы закрываете ObjectInputStream, но не FileInputStream (а надо бы)
    Теперь, по существу - предположу, что вы Contact contact = new Contact("", "", "", 0);
    Можно гораздо лучше написать данный участок кода. Например, считывать данные и если null, то используя класс Optional создавать новый пустой объект (или не создавать вовсе).
    Было бы неплохо, выложить содержимое вашего файла Contact.txt, чтобы иметь представление о том, как именно хранятся данные в файле. Как вы его читаете. Нужно ли их как-то разделять и т.д.
    Ответ написан
    Комментировать
  • Как почитать строку в java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    На самом деле можно по-разному реализовать ваш функционал.
    Все зависит от того, насколько глубоко вы хотите копнуть...
    Если вы только изучаете java, а судя по методу main, это так и есть, то коллега вам уже подсказал.
    А так можно например, глянуть в сторону постфиксных операторов https://stackoverflow.com/questions/12269191/postf...
    Или например, реализовать паттерн интерпретатор для реализации функционала калькулятора и т.д. В общем, вариантов куча
    Ответ написан
    1 комментарий
  • Если в API ArrayList поддерживает сериализацию, нужно в самом классе ставить implements Serializable?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Элементы, которые должны быть сериализованы должны имплементировать интерфейс Serializable
    Если вы пишете кастомную реализацию интерфейса list и т.д., то нет необходимости имплементировать интерфейс Serializable

    Что касается DAO, как отметил коллега, он реализуется иным способом и обычно, предоставляет методы для работы с БД.
    Ответ написан
    Комментировать
  • Как ускорить процесс получения большого объема данных?

    azerphoenix
    @azerphoenix Автор вопроса, куратор тега Java
    Java Software Engineer
    Проблему решил путем применения Spring Batch.
    Ответ написан
    Комментировать
  • Как вернуть maven в intellij idea?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    Maven может поставляться вместе с программой в виде одноименного плагина или же может быть установлен отдельно, но при этом необходимо будет в настройках указать путь расположения к нему.
    Если решите установить отдельно, то рекомендую использовать sdkman. Он как раз поддерживается на устройствах мак и линукс. Ну и обновите плагин или сам софт полностью
    Ответ написан
    Комментировать
  • Почему не выводит метод say?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    public String say(String something) {
            return "Ты чё не знаешь, что рыбы не разговаривают?";
        }


    Fish myFish = new Fish();
            myFish.say("Привет");


    Обратите внимание, что метод возвращает переданное значение через return в место вызова метода. Вот, только вы ее не выводите в консоль и не присваиваете к переменной

    попробуйте
    Fish myFish = new Fish();
    String fishSay = myFish.say("Привет");
    System.out.println(fishSay);
    Ответ написан
    Комментировать
  • Есть ли инструменты для отслеживание памяти для Spring?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Доброго времени суток.
    Есть много разных инструментов, в том числе, как коллега подсказал visualVM.
    Если используете İntellij İDEA, то в него встроены некоторые инструменты для профайлинга.
    Если вам необходимо провести удаленный профайлинг, то можете еще воспользоваться возможностями удаленного дебага (Intellij IDEA -> Remote JVM debug)
    Ответ написан
    Комментировать