• Данные из бд в xml на java?

    @acwartz
    Тут должна быть ваша реклама.
    Ну вот тут в подробностях рассказано: https://www.ibm.com/developerworks/xml/tutorials/x...
    Вкратце:
    получаете выборку.
    Создаете xml-документ.
    Вручную прописываете в нем ноды и ноды с данными.
    Записываете xml куда-нибудь файл там или стрим.

    Профит.

    Если не учебное задание, то базы данных сами умеют генерировать XML:
    https://ils.unc.edu/courses/2013_fall/inls623_001/...
    Ответ написан
    Комментировать
  • Почему REST забыл про JSON?

    @acwartz Автор вопроса
    Тут должна быть ваша реклама.
    Не смотря на то что пример самого спринга работает без доп. аннотаций к классу/полям класса, решение оказалось очень простым:
    @JsonSerialize
    public class Tag {
    	@JsonProperty("id")
    	private long Id;
    	
    	@JsonProperty("name")
    	private String Name;
    	
    	@JsonProperty("createdAt")
    	private ZonedDateTime CreatedAt;
    	
    	@JsonProperty("updatedAt")
    	private ZonedDateTime UpdatedAt;
    ....


    При таком использовании:
    @RestController
    public class RESTAPI {
    	private static final AtomicLong counter = new AtomicLong();
    	@GetMapping("/tags")
    	Tag tags(@RequestParam(name = "name", defaultValue = "anytag") String tagName) {
    		return new Tag(this.counter.incrementAndGet(), tagName);
    	}
    }
    Ответ написан
    1 комментарий
  • Почему конструктор в классе-оболочке не рекомендуется использовать с JDK9?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Современные архитектурные принципы отдают предпочтения фабричным методам. Правила хорошего тона требуют, чтобы конструктор не занимался ни чем, кроме инициализации полей. Фабричный метод же может делать очень много дополнительных операций, вроде интернирования. Фабричный метод может осуществлять операции на уровне экземпляров, например возвращать синглтон. Фабричный метод может возвращать не только экземпляр класса, но и его подтипы. Фабричные методы могут иметь говорящие имена. И т.д. и т.п.
    Ответ написан
    Комментировать
  • Зачем json считывать через Scanner?

    Erik_Mironov
    @Erik_Mironov
    Старые вопросы: *Dies from cringe*
    Зачем считывать файл через Scanner?


    С помощью класса Scanner вы можете читать данные из файла точно так же, как и с помощью BufferedReader'а, BufferedInputStream'а и других классов, способных читать файловые данные. Почему же здесь использовали Scanner известно только тому, кто написал этот класс, потому что есть более подходящие классы для подобных операций.

    Зачем использовать цикл? нельзя взять и всю прочитать без цикла?


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

    Зачем строке происваевать данные файла?


    В переменной fromJson мы сохраняем прочитанные данные, а поскольку JSON представляет собой обычный набор текста, то использование типа String более чем подходит для этой операции. Вы также можете использовать коллекции или массивы для этого.

    Зачем указывать тип объекта в конце?


    Метод fromJson десериализует JSON, прочитанный из Reader'а (в данном случае из строки) в объект класса, указанного вторым аргументом.
    Ссылочка на спек класса
    https://www.javadoc.io/doc/com.google.code.gson/gs...
    Ответ написан
    Комментировать
  • Зачем json считывать через Scanner?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    JSON - это просто текст. И чтение JSON ничем не отличается от чтения любого текстового файла.
    Использование Scanner - один из способов чтения текстового файла. В данном случае, далеко не лучший способ.
    Например, здесь https://javadevblog.com/kak-schitat-fajl-v-string-... показаны 4 разных способа прочитать текстовый файл в String-переменную.
    Ответ написан
    Комментировать
  • Каким способом лучше извлечь данные из БД?

    @Ryabos Автор вопроса
    Думаю я нашел ответ. Старик JDBC.
    String key = resultSet.getMetaData().getColumnName(index)
    String value = resultSet.getString(index)
    Ответ написан
    Комментировать
  • Как описать в коде, чтобы выбирался нужный кейс по введённому слову в консоль Java?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Ответ написан
    Комментировать
  • Возможно ли работать с 3d графикой Java?

    Да, через Opengl, например.
    https://coderlessons.com/tutorials/java-tekhnologi...
    Ответ написан
    Комментировать
  • Добавление строки к строке до определённого (бесконечно большого) числа и нахождение в ней символа 'а'. Как решить?

    Erik_Mironov
    @Erik_Mironov
    Старые вопросы: *Dies from cringe*
    Вам не нужно конкатенировать миллиарды символов, вы можете посчитать количество повторов в исходной строке, а затем умножить это число на количество полных повторов строки + остаток
    static long repeatedString(String s, long n) {
            /* Кол-во повторов в исходной строке */
            int rep = (int) s.toLowerCase()
                    .chars()
                    .filter(c -> c == 'a').count();
    
            /* Кол-во циклов, в которых исходная строка будет полностью скопирована */
            long cycles = (n / s.length()) - 1;
    
            /* Кол-во повторов в остаточной строке, которой не хватило на полный цикл */
            int remainder = (int) s.toLowerCase()
                    .substring(0, (int) n % s.length())
                    .chars()
                    .filter(c -> c == 'a').count();
    
            return rep * cycles + remainder + rep;
    }
    Ответ написан
    2 комментария
  • Какие есть аналоги сервиса Яндекс.Маршрутизация?

    searchency
    @searchency
    Spartan.by
    Яндекс маршрутизация аналоги, какие есть альтернативы, похожие сервисы?
    Список аналогов яндекс маршрутизации которые удалось найти. У каждого сервиса есть свои преимущества и недостатки, есть пару очень интересных сервисов

    Список пополню если что то попадется интересное
    Ответ написан
    Комментировать
  • Какие есть аналоги сервиса Яндекс.Маршрутизация?

    @autobusiness
    У меня знакомые работают с CourierCloud , очень довольны и ценой и возможностями.
    Ответ написан
    1 комментарий
  • Для чего используются геттеры и сеттеры в Java?

    Maksclub
    @Maksclub
    maksfedorov.ru
    Нет никакого смысла, если нормально программировать и строить простой удобный код. Этакий способ формально соблюсти инкапсуляцию и сокрытие данных: состояние приватное? Приватное :)

    Чреваты тем, что плодят высокую связанность в коде, состояние и управляется снаружи (на основе геттеров) и контролируются инварианты где угодно и как угодно. По сути превращаем сущности в структуры, но тк это все же бизнес-объекты, а знания бизнес-состояния нужно — то они гуляют по всему проекту и ничем не ограничены... заплетая и заплетая код снова и снова, а также погружая в эти «сущности» все больше и больше знаний...
    Доходит до того, что через заказ можно достать товар, через товар можно достать поставщика, через поставщика пользователя с данными аутентификации... и все работает со всем... плодя кучу сервисов и взрывая мозг...

    По вопросу

    Нужны только бля быстрых CRUD и для совместимости с кучей библиотек. А также говнокодерам «использовать данные в сервисах»

    Сеттеры и геттеры нужны для разных манипуляций: валидация, костыльного маппинга, сериализации и десерриализации.

    Хорошими и современной практикой сейчас является — не использование и геттеров и сеттеров...

    Литература:
    https://martinfowler.com/bliki/TellDontAsk.html
    https://www.martinfowler.com/bliki/AnemicDomainMod...
    Закон Деметры

    Мои изыскания:
    Зачем (не)нужны геттеры?
    Геттеры/сеттеры и проблема с инкапсуляцией (примеры на Symfony, аналог Spring в php с аналогичной плохой практикой)
    Ответ написан
    3 комментария
  • Для чего используются геттеры и сеттеры в Java?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Вопрос, кстати, очень даже не глупый.
    Вы абсолютно правильно заметили насчет нарушения инкапсуляции гетерами и сеттерами, но никто же не заставляет вас их писать. Если вы считаете, что объет должен быть иммутабельным - устанавливаете все поля final и инициализируете их только через конструктор. Насчет геттеров - тоже, в зависимости от бизнес-логики, не всегда они нужны.
    По этой теме почитайте литературу про ООП (например "Объектно ориентированный подход" Вайсфельда).
    И еще, например, Егор Бугаенко по этой теме имеет мнение (относиться к нему стоит со здоровым скептицизмом).
    https://www.youtube.com/watch?v=lfdAwl3-X_c&t
    Ответ написан
    4 комментария
  • Почему появляется InvocationTargetException?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Во-первых, вы бы приложили стэк-трейс с ошибкой. Было бы понятно что там у вас происходит.
    Во-вторых, в конструкторе у вас что-то непонтяное происходит: зачем-то создается и инициализируется локальная переменная storage. Если вы хотите инициализировать переменную класса, лучше сразу так и писать:
    private HashMap<Level, ArrayList<Sudoku>> storage = new HashMap<>();
    Ответ написан
    4 комментария
  • В каком порядке инкрементируется переменная в циклах Java?

    @eandr_67
    web-программист (*AMP, Go, JavaScript, вёрстка).
    На каждой итерации внешнего цикла внутренний цикл начинается заново - с создания переменной j, инициализации её значением 2 и т.д.

    При выполнении break прекращается только внутренний цикл. Внешний как выполнялся, так и продолжает выполняться - пока значение i не достигнет 100.

    С точно тем же результатом внутренний цикл можно было бы записать без break:
    for(int j = 2; isPrime && j < i; j++) { isPrime = i % j != 0; }

    P.S. А алгоритм, мягко говоря, не блещет. Банальное решето Эратосфена намного эффективнее:
    boolean[] arr = new boolean[100];
    for(int i = 2; i < 100; ++i) {
      if (arr[i]) { continue; }
      for (int j = i * i; j < 100; j += i) { arr[j] = true; }
      System.out.print(i);
      System.out.print(' ');
    }
    Ответ написан
    1 комментарий
  • Мобильное приложение на базе Интернет магазина?

    Decadal
    @Decadal
    коротко: да, реально, но сложно.

    для мобильного приложения нужно делать отдельную апишку, особенно если у вас MPA, в котором в ответах от бекенда генерируется html а не json.

    Реально ли сделать быстрое приложение?

    Правильный вопрос таков: реально ли найти специалистов, которые готовы сделать быстрое приложение и быстрый бекенд в заданных условиях? Скорость работы приложения зависит как от организации поставки данных на бекенде, так и от внутренней оптимизации.

    Хотелось бы создать приложение существующего интернет магазина, не переделывая и не переписывая с нуля сайт.

    надеюсь, эта фраза не означает "мы ничего не будем делать на бекенде". Дописывать под потребности мобильного приложения придётся 100%.
    Ответ написан
    3 комментария
  • Exception: Unable to determine JDK_HOME, у меня скачан JDK kit, в чём дело?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    JDK_HOME - это переменная окружения, которая указывает на папку, где лежит JDK.
    Если, у вас ее нет, тогда нужно ее установить самостоятельно.
    Ответ написан
    Комментировать
  • JRE и runtime в java?

    JRE - это программа, которая читает java-байткод и преобразует его в машинный код.
    runtime - это либо JRE, либо общее обозначение момента, когда программа исполняется.
    В этом смысле runtime может употребляться в словосочетании "проверка в рантайме", к примеру.
    Ответ написан
    1 комментарий
  • Вопрос про массивы в Java, и понимание разницы между С++ и Java?

    zagayevskiy
    @zagayevskiy Куратор тега Java
    Android developer at Yandex
    Разница между этими переменными в том, что вторая неинициализированна, и в ней null.
    В джаве все массивы "динамические", то есть выделены в куче, а не на стеке.
    С++ статичесий язык а Java ООП

    Путаете мягкое с тёплым. Джава тоже статически типизированный язык.
    В джаве, в отличие от С++ все объекты выделяются в куче, поэтому все переменные(кроме примитивов) содержат в себе ссылку. Массив в джаве тоже выделяется в куче, а массив объектов (Integer это объект в отличие от int) это, на самом деле, массив ссылок.
    int[] a; // a == null
    int[] b = new int[5]; // b == [0, 0, 0, 0, 0]
    int[] c = new int[]{1, 2, 3}; // c == [1, 2, 3]
    Integer[] d; // d == null
    Integer [] e = new Integer[5]; // e == [null, null, null, null, null]
    Integers [] f = new Integer[]{1, 2, 3}; // f == [Integer(1), Integer(2), Integer(3)} случился autoboxing, то есть автоматическая запаковка примитивов в соответствующий объект.
    Ответ написан
    1 комментарий
  • Вопрос про массивы в Java, и понимание разницы между С++ и Java?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    Integer[] arr = new Integer[5];   // так вы объявляете массив длинной 5 элементов.
    Integer[] arr1; // переменная arr1 объявлена, но не инициализирована.

    Можно написать так:
    Integer[] arr;
    arr = new Integer[5];


    Если хотите динамических массивов - изучайте коллекции. В java есть коллекции на все случаи жизни.
    Ответ написан
    1 комментарий