Ответы пользователя по тегу Java
  • Как работает класс Calendar в этом коде?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    В прошлом вопросе вы же сказали, что решили вопрос.

    Как решить проблему с «Unable to create converter for class»?
    На виртуальном устройстве в настройках был установлен часовой пояс GTM-0, а у меня +2. Это и решило проблему.


    А я еще тогда обратил ваше внимание на то, что время у вас и так указано в миллисекундах.
    public static Calendar getDate() {
    Calendar date = Calendar.getInstance();
    date.setTimeInMillis(timestamp * 1000);
    return date;
    }

    А сеттер setTimeInMillis принимает время в миллисекундах. Так зачем вы умножаете timestamp на 1000?
    Не нужно умножать на 1000. Иначе вы в качестве текущего года получаете 53152 вместо 2021

    Вот, для наглядности:
    public static void main(String[] args) {
        long timestamp = System.currentTimeMillis();
        Calendar calendar = Calendar.getInstance();
    // Ваш код:
        calendar.setTimeInMillis(timestamp * 1000);
        System.out.println(calendar.getTime());
    // Мой код:
        calendar.setTimeInMillis(timestamp);
        System.out.println(calendar.getTime());
      }
    Ответ написан
  • Как вынести отдельное количества продукта с листа java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день.
    А какое отношение клиентская часть имееть к серверному?
    При добавлении количества товара в input общая цена не изменяется

    Это срабатывает на клиенте и тут может помочь JavaScript, а не Java

    Как вынести отдельное количества продукта с листа java?

    Не думаю, что вопрос корректен, если честно. Вам нужно на клиенте суммировать стоимость товара внутри корзины. Соответственно. вынесение товаров в отдельный лист на сервере не поможет
    Ответ написан
  • Как добавить значения в json массив?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Вот, решениe для Jackson:
    https://stackoverflow.com/questions/43981487/how-t...
    Вот, решение для Gson:
    https://stackoverflow.com/questions/47111676/gson-...
    Вот, решение для SImple Json:
    https://stackoverflow.com/questions/50402343/how-t...
    Ответ написан
    Комментировать
  • Подходит ли книга Брюса Эккеля "Философия Java" для изучения ЯП с полного нуля?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Если выбираешь именно между книгами по Java, то можешь присмотреться к следующим:
    Г. Шилдт - Java руководство для начинающих (или например, ,Java Head First O'Reilly)
    Далее подойдет Б. Эккель - Философия Java
    Также можно еще Г.Шилдт - Полное руководство по Java
    Затем можно глянуть на Рауль-Габриэль Урма - Современный язык Java

    Ну и конечно же прочитать такие книги, как:
    Clean Code,
    Роберт Лафоре - Структуры данных и алгоритмы java,
    Дж. Блох - Java. Эффективное программирование
    Ответ написан
    Комментировать
  • Почему возникает ошибка компиляции Android приложения?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Реимпортируйте класс R..
    Затем почистите кеш (Invalidate cache & restart) и перезапустите заново. Должно помочь.
    Также проверьте есть ли в xml такой id R.id.textViewTitle
    Ответ написан
    1 комментарий
  • ITextPDF - Java. Почему не отображаются шрифты на кириллице?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Cannot resolve constructor 'Paragraph(java.lang.String, com.itextpdf.text.Font)'

    Очевидно, что такого конструктора не существует. Посмотрите, в исходниках какие конструкторы существуют.
    Вот, например, документация
    https://kb.itextpdf.com/home/it5kb/examples/using-fonts
    https://www.tutorialspoint.com/itext/itext_setting...
    Ответ написан
    Комментировать
  • Как обращаться к классу через интерфейс?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    В фреймворках например, в том же Spring, реализован такой принцип, как DI (dependency injection). Все сводится к тому, что вы можете внедрить интерфейс, вместо самой реализации. Это упрощает процесс тестирования и разработки, так как вы можете "подсунуть" другую реализацию этого интерфейса. Например, на production вам нужно подключиться к реальной БД и использовать соответствующие репозитории, а во время тестирования вы можете замокать другие реализации интерфейса.
    Допустим, что у вас есть интерфейс IServer с методом connect()
    А реализации у него могут быть разные. Например,
    FtpConnect implements IServer,  SshConnect implements IServer
    Соответственно, внедрив зависимость IServer в код, вы можете указать какая реализация данного интерфейса должны быть внедрена.
    Посмотрите на фреймворки:
    Guice -
    https://www.baeldung.com/guice
    Dagger -
    https://dagger.dev/
    Ответ написан
  • Как указывать параметр запроса "кириллицей" на OpenWeatherMap?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Вот, что написано в документации по поводу названия городов.
    By city name. Input the city name or its part and get the list of the most proper cities in the world. Example - Lon or Lond or London. The more precise city name you put the more precise list you will get. To make it more precise put the city's name or its part, comma, the name of the county or 2-letter country code. You will get all proper cities in chosen county. The order is important - the first is city name than comma than county. Example - Lon, UK or Lon, GB or London, GB or Lon, England. By geographic coordinates.


    Соответственно, с кириллицей не работает. Но вы можете добавить такой функционал. Например, в приложении заведите enum с англ. и с русскими названиями городов. Например, LONDON ("London", "Лондон")

    Организовал ввод названия города через меню и вот таким образом

    Я бы например, сделал бы не ввод названия города, а выбор из выпадающего списка. А то мало ли на какой языке пользователь решит ввести название города.
    Ответ написан
  • Зачем нужны типы данных byte и short в Java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Зачем в языке программирования так много типов данных?
    Особенно byte или short, ведь их полностью заменяет int. Зачем они нужны? В чем их профит?

    Тип данных int занимает 4 байта, а byte - 1 байт, а short - 2 байта.
    Соответственно, в условиях ограниченной памяти нужно использовать только соответствующие типы примитивов.

    60436b2020216873254157.png
    Ответ написан
  • Как создать сервис бронирования на java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Я как-то раз писал сервис по бронированию номеров отелей. Это реальный проект или учебный?
    Если реальный проект, то посмотрите в сторону использования API Hotelbeds или GoGlobal.
    Рекомендую Hotelbeds. У них в тестовом режиме доступно до 50 запросов в сутки, а в препродакшн неограниченное кол-во запросов. Правда, нужно заплатить сумму 3-4К у.е. и рассказать про деятельность (b2b, b2c) и т.д.

    Если учебный проект, то тут зависит от того в каком объеме вы хотите реализовать вашу задачу.
    Например, для поиска можно подключить Hibernate Search или ElasticSearch, а можно обойтись простым sql запросом.

    Есть класс комнат и класс с резервацией, а так-же DTOшки к ним, теперь мне нужно написать примерно такой код: если в коллекции есть комната X, проверить, есть ли промежуток дат (timestamp) от A1 до A2.
    Фишка в том, что я приблизительно понимаю что делать и в то же время не знаю, как это написать.


    Как вы и сказали, код писать не буду, но расскажу примерно, как это можно сделать. Предположим, что есть некий контроллер, метод которого принимает некий DTO состоящий из: номера комнаты (roomNum), а также 2-х дат (from & to).
    Далее вы передаете этот DTO на уровень сервисного слоя и обрабатываете. Далее вам необходимо на уровне репозитория написать метод, который ищет по вхождению даты.
    Вот, похожий вопрос:
    https://stackoverflow.com/questions/39784344/check...
    Вот, примеры кода:

    findAllByStartDateLessThanEqualAndEndDateGreaterThanEqual(OffsetDateTime endDate, OffsetDateTime startDate);


    или:

    @Query(value = "from EntityClassTable t where yourDate BETWEEN :startDate AND :endDate")
    public List<EntityClassTable> getAllBetweenDates(@Param("startDate")Date startDate,@Param("endDate")Date endDate);


    Несколько аспектов, на которые вам нужно обратить внимание:
    - также нужно проверить номер на занятость. Т.е. если у вас есть резервация на указанную дату, то не бронировать номер.
    - Если номер не найдет, то выбросить исключение и т.д.
    Ответ написан
    Комментировать
  • С помощью чего открыть .jar плагин minecraft чтобы изменить его?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Если вкратце, то изучите реверс индженеринг.
    Jar это по факту тот же zip. Но внутри архива лежат class файлы (байткод). Соответственно, вам нужно декомпилировать их в исходники или можете поискать исходники (source code) на гитхаб, битбакет и т.д. Вдруг, это опенсорсный проект.
    Можете начать с этого аналогичного вопроса:
    https://stackoverflow.com/questions/647116/how-to-...
    А лучше начните изучение самого языка, а потом вопросов будет относительно меньше.
    Ответ написан
    2 комментария
  • GSON - Как объявить переменные для хранения названий из сложного JSON?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Есть такой сайт - www.jsonschema2pojo.org
    На сайте вы также найдете maven плагин для быстрой конвертации
    Результат

    -----------------------------------com.example.Address.java-----------------------------------
    
    package com.example;
    
    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;
    
    public class Address {
    
    @SerializedName("street")
    @Expose
    public String street;
    @SerializedName("suite")
    @Expose
    public String suite;
    @SerializedName("city")
    @Expose
    public String city;
    @SerializedName("zipcode")
    @Expose
    public String zipcode;
    @SerializedName("geo")
    @Expose
    public Geo geo;
    
    }
    -----------------------------------com.example.Company.java-----------------------------------
    
    package com.example;
    
    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;
    
    public class Company {
    
    @SerializedName("name")
    @Expose
    public String name;
    @SerializedName("catchPhrase")
    @Expose
    public String catchPhrase;
    @SerializedName("bs")
    @Expose
    public String bs;
    
    }
    -----------------------------------com.example.Example.java-----------------------------------
    
    package com.example;
    
    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;
    
    public class Example {
    
    @SerializedName("id")
    @Expose
    public int id;
    @SerializedName("name")
    @Expose
    public String name;
    @SerializedName("username")
    @Expose
    public String username;
    @SerializedName("email")
    @Expose
    public String email;
    @SerializedName("address")
    @Expose
    public Address address;
    @SerializedName("phone")
    @Expose
    public String phone;
    @SerializedName("website")
    @Expose
    public String website;
    @SerializedName("company")
    @Expose
    public Company company;
    
    }
    -----------------------------------com.example.Geo.java-----------------------------------
    
    package com.example;
    
    import com.google.gson.annotations.Expose;
    import com.google.gson.annotations.SerializedName;
    
    public class Geo {
    
    @SerializedName("lat")
    @Expose
    public String lat;
    @SerializedName("lng")
    @Expose
    public String lng;
    
    }
    Ответ написан
    1 комментарий
  • Как передать параметр из properties в Spring Boot в js файл?

    azerphoenix
    @azerphoenix Автор вопроса, куратор тега Java
    Java Software Engineer
    Отвечу на свой вопрос.
    Если это классическое MVC приложение и например, используется шаблонизатор thymeleaf, то можно получить доступ к конфигам yml || properties следующими способами:

    1)
    ${@environment.getProperty('css.specific.name')}

    2) Либо используя аннотацию @ConfigurationProperties
    а в html использовать:
    <span th:text="@foo.getBar()"></span>

    Полезная ссылка по теме:
    https://stackoverflow.com/questions/56102116/acces...

    P.S. Использование Controller || ControllerAdvice для подобных целей не приветствуется.

    Ну а если у вас REST приложение, то это настраивается на клиентской стороне внутри js фреймворка.
    Ответ написан
    Комментировать
  • Как сделать get request java?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Ответ на ваш вопрос легко ищется поисковиком.
    Вот, пример:
    https://www.baeldung.com/java-http-request
    Вот, примерный код. Только обработайте исключения и подправьте под себя
    public class Main {
    
    
    	public static void main(String[] args) {
    		final String urlAdress = "http://example.com"; // url куда нужно совершить запрос
    		URL url = new URL(urlAdress);
    		HttpURLConnection con = (HttpURLConnection) url.openConnection();
    		con.setRequestMethod("GET");
    		int status = con.getResponseCode(); // совершаем запрос
    		BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); // читаем ответ
    		String inputLine;
    		StringBuffer content = new StringBuffer();
    		while ((inputLine = in.readLine()) != null) {
    		    content.append(inputLine);
    		}
    		in.close();
    		con.disconnect();
    	}
    
    }
    Ответ написан
  • Зачем нужен Queue?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Для начала было бы неплохо разобраться в таких терминах, как: FIFO & LIFO
    FIFO - first in - first out. "Первым пришел - первым ушел". Это наглядный пример очереди. Обслужен будет тот клиент, который стоит первым в очереди.
    LIFO - last in - first out. "Последним пришел - первым ушел".Это наглядный пример работы стека. Т.е. это обратный принцип FIFO. Первым обслуживается тот клиент, который стоит в конце очереди (вверху стека).
    Теперь, зная что такое FIFO & LIFO стоит отметить, что Queue (с англ. очередь) - это интерфейс, который основан на принципе FiFO.
    Выбор реализации jcf зависит от вашей цели, так как каждая из коллекций выполняет ту или иную операцию за разное время. Это отображено в таблице ниже:
    603e3b8cc408a641092521.png
    Полезная ссылка по теме:
    https://codenza.app/java-collections/
    https://www.examclouds.com/ru/java/java-core-russi...
    Ответ написан
    Комментировать
  • Какой курс по архитекторству лучше пройти?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Как мне кажется, у разработчика, которого назначили архитектором не должно быть вопросов касаемых становления архитектором, так как получение этой должности уже подразумевает под собой наличие необходимых навыков. Но тем не менее вопрос был задан, а значит, скину статейку, которая может быть вам полезна:
    https://medium.com/javarevisited/top-5-courses-to-...
    Тут указаны курсы на coursera, которые вам могут быть полезны.
    Ну а если найдете полезные материалы по вашему вопросу, то буду рад их увидеть) Может, понадобится когда-то)
    Ответ написан
    Комментировать
  • Как решить проблему с "Unable to create converter for class"?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Вот, аналогичная проблема, на которую уже дали ответ:
    https://stackoverflow.com/questions/32367469/unabl...
    Ответ написан
    9 комментариев
  • Как настроить корзину Bootstrap 5 через jstl?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    У вас есть ошибки в js коде и как мне кажется было бы лучше этот код переписать под себя, нежели использовать готовый.

    <c:forEach var="product" items="${listProducts}">
        var product_price =
        ${product.price}
        var product_count =
        ${product.count}
        </c:forEach>

    Тут по факту происходит следующее. Вы итерируете по списку listProducts, а затем создаете 2 переменные product_price и product_count. Притом в каждой итерации меняете значение этой переменной на соответствующий элемент в цикле. Т.е. значения переменных будут равны значению конечного элемента.
    + будет лучше, если добавление и удаление товаров будет происходить аяксом
    Ответ написан
  • Как решить эту задачку?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Добрый день!
    Так как это домашняя работа, то вместо написания кода я предоставлю вам цепочку событий. А код уже напишите сами.
    Итак, начали вы работу правильно использовав класс Scanner. Затем вы получаете 3 переменных math, history & geometry.
    Обратите, что согласно условию задачи значение типа переменной int указано в минутах.
    Т.е. 35 минут, 40 минут и 39 минут. (35 )
    Соответственно, вам сперва нужно просуммировать количество времени затраченное на домашнюю работу.
    Т.е. int result = math + history + geometry Так вы получите общее затраченное время.
    Затем вас просят перевести минуты в часы.
    1 час = 60 минут. Соотвественно, получившийся результат разделить на 60 и получить количество часов, а затем разделить по модулю и получить кол-во минут
    Ответ написан
  • Как решить javax.persistence.EntityExistsException в Hibernate?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    LikeKey,
    очень полезные ресурсы по каскадам
    https://www.baeldung.com/jpa-cascade-types
    https://vladmihalcea.com/a-beginners-guide-to-jpa-...
    Ответ написан
    Комментировать