• В pom.xml используют JSTL ${versions.wildfly}?

    EreminD
    @EreminD
    Кое-что умею
    ну, кроч, там же, в помнике, есть секция properties, где можно задать значения и таскать их по всему пому

    вот, например
    <properties>
            <java.version>1.8</java.version>
            <hibernate.version>4.3.5.Final</hibernate.version>
            <log4j.version>2.6</log4j.version>
    </properties>


    а если, при запуске, я захочу переопределить значение, скажем для log4j.version, то я просто могу
    mvn clean install -Dlog4j.version=тут новое значение


    В статьях такое пишут
    ${versions.wildfly}
    просто потому, что версия не важна и предполагается, что вы используете самую актуальную (ну или самую стабильную версию)

    Зачем такое вообще делать?
    Предположим, у вас в проекте много зависимостей от одного поставщика
    Spring, например. У него там тьма пакетов. При этом, рекомендуется использовать эту тьму всегда одной версии для всех (они их так и релизят)
    Если версия задается только в одном месте - легко будет ее переопределить для всего проекта
    Ответ написан
    Комментировать
  • Реально ли устроиться Junior C++ Программистом не имея профильного образования\сертификатов?

    @Interface
    Прохождение учебника может почти ничего не значить - делайте свои проекты, это может стать существенно более значимым толчком в развитии.

    Хотите узнать возьмут ли вас джуном, это же элементарно проверить: делаете резюме и идете на агрегаторы вакансий, смотрите на спрос. Если добьетесь собеседования - уже здорово. Там вы либо найдете работу, либо получите тот самый фидбек который ждете. Поймете что надо подтянуть и свой уровень в целом.

    Если никто не пишет / не отвечает - значит резюме не достаточно впечатляющее или просто нет вакансий.

    Есть мнение, что работодателей интересует в основном коммерческий опыт: если не получилось найти работу - попробуйте найти практику, стажировку (не курсы, а именно стажировку), может быть можете написать что-то для каких-то знакомых на крайний случай.
    Ответ написан
    Комментировать
  • Реально ли устроиться Junior C++ Программистом не имея профильного образования\сертификатов?

    Immortal_pony
    @Immortal_pony
    На бумажки всем чихать.
    А вот опыт лучше заиметь. Реализуйте хотя бы парочку простых проектов для себя.
    Ответ написан
    Комментировать
  • Как конвертировать XML в объект класса?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Используя Jackson
    XmlMapper xmlMapper = new XmlMapper();
    SomeClass obj = xmlMapper.readValue(xmlStr, SimpleBean.class);

    или используя JAXB
    JAXBContext jaxbContext = JAXBContext.newInstance(SomeClass.class);
    Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
    StreamSource source = new StreamSource(new StringReader(xmlStr));
    JAXBElement<SomeClass> element = unmarshaller.unmarshal(source, SomeClass.class);
    SomeClass someClass = element.getValue();
    Ответ написан
    4 комментария
  • Как создать форму на Java в IntelliJ IDEA 2018?

    TopMetaFizick
    @TopMetaFizick
    Все двоит и троит...
    JFrame, JTextFiled , JScrollPane, JTextArea, JLabel - это все компоненты, которые здесь нужны.
    И используй менеджер компоновки GridBagLayout, - этого вполне хватит.
    Ответ написан
    Комментировать
  • Как в JavaFX создать поток который будет добавлять Label, пока не нажать кнопку Stop?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    JavaFX, как и многие другие gui-библиотеки, однопоточна. При создании окна создаётся Event Dispatch Thread, внутри которого будет работать цикл событий и обработчики событий. Вы не должны пытаться из главного потока или любого другого потока взаимодействовать с элементами графического интерфейса - это приведёт к сбою. Вы не должны внутри обработчиков событий запускать потоки - это приведёт к сбою. Если вам надо из другого потока изменить, например, текст метки, то придётся создать задание для EDT:
    Platform.runLater((() -> someLabel.setText("Hello"));

    Если вам нужно внутри обработчика нажатия на кнопку запустить на выполнение длительную задачу, придётся использовать Task и Service:
    public class Example extends Application {
        ...
    
        btn.setOnAction(act -> {
            Service<Void> service = new Service<Void>() {
                @Override
                protected Task<Void> createTask() {
                    return new Task<Void>() {
                        @Override
                        protected Void call() throws Exception {
                            // Долгий код
                            return null;
                        }
                    };
                }
            };
            service.start();
        });
    }

    Примечание
    На самом деле поток обработки событий в JavaFX называется JavaFX Application Thread, но это непринципиально.
    Ответ написан
    3 комментария
  • Как эффективно сгруппировать строки?

    leahch
    @leahch
    3D специалист. Dолго, Dорого, Dерьмово.
    Как ни странно, итерировать группы совсем не обязательно!
    1) группа у вас состоит из одного элемента. В вашем примере F и X - две группы, в которые нужно положить номера строк.
    2) за один проход бежим по строкам и добавляем их в соответствующие группы термов, которые держим в hashtable, где ключом у нас сам терм, а значением - массив из номеров строк.
    3) после того, как заполнили хеш, пробегаемся по нему один раз и смотрим, у кого длина массива больше единицы, это и будут исходные группы.

    Если нам нужно дополнительно сформировать группы из двух-трех термов, то делает все тоже самое, но ключом ставим treeset из этих элементов.

    import java.util.Arrays;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map.Entry;
    import java.util.TreeSet;
    
    public class Groups {
    
    	public static void main(String[] args) {
    		String[] myData = {
    				"F;I;J", 
    				"F;X;A",
    				"X;D;P",
    
    				"A;B;C",
    				"X;Y;Z",
    				"J;A;Z",
    				"U;V;W",
    				"E;E;E",
    				"D;F;G",
    		};
    		
    		HashMap<String, TreeSet<Integer>> groups = new HashMap<String, TreeSet<Integer>>();
    		
    		for(int line=0; line< myData.length; line++ ) { // бежим по строкам
    			
    			List<String> terms = Arrays.asList(myData[line].split(";")); // разбиваем на термы
    			
    			for(String term: terms) { // пробегаем по термам
    				TreeSet<Integer> group = groups.get(term); // выдергиваем группу
    				
    				if(group == null) { // если группы нет
    					group = new TreeSet<Integer>();
    					groups.put(term, group);
    				}
    				group.add(line); // добваляем строку
    			}
    		}
    		
    		// выводим результат
    		for(Entry<String, TreeSet<Integer>> group: groups.entrySet()) {
    			if(group.getValue().size() >1)
    				System.out.printf("%s - %s\n", group.getKey().toString(), group.getValue().toString());
    		}
    	}
    }


    И результат

    A - [1, 3, 5]
    D - [2, 8]
    F - [0, 1, 8]
    J - [0, 5]
    X - [1, 2, 4]
    Z - [4, 5]
    Ответ написан
    33 комментария
  • Какие языки программирования можно осилить без математики?

    pavel9609
    @pavel9609
    Студент-программист
    Вообщем-то ещё раз скажу, что сказали другие. Почти все языки программирования можно выучить без особого знания математики. Там что нужно вообщем-то понять команды языка, идеологию и как программировать на нём.
    Встаёт другой вопрос куда со знанием языка податься. Сайты можно клепать и без знания математики, делать скрипты также. Но вот если вы захотите податься в машинное обучение, то вам придётся лезть в математическую статистику. Если захотите создать игровой движок, то тогда вам нужна матричная и линейная алгебра.
    Ответ написан
    Комментировать
  • Какие языки программирования можно осилить без математики?

    @res2001
    Developer, ex-admin
    Да и если не веб - то же самое.
    Математика понадобится, если вы пойдете в область разработки, где нужна математика, в большей части прикладных задач математикой не пахнет. Само изучение языка программирования к математике отношения не имеет.
    Просто математический склад ума зачастую это то что предрасполагает к занятию программированием, при этом саму математику можно и не знать.
    Не суйтесь в науку, ЦОС, машинное обучение, компьютерную графику, криптографию - все остальное обходится без большой математики, на уровне максимум 7 класса школы, а чаще и 4 достаточно.
    Ответ написан
    Комментировать
  • Самостоятельное практическое задание для новичков в Java?

    @zelan
    Кратко обо мне не получится.
    книжки перед сном бесполезны, все новое нужно сразу закреплять.

    Напишите менеджер паролей для сайтов/аккаунтов.

    1) программа пишет/читает/редактирует/выводит на экран информацию об аккаутах (номер записи, сайт, логин, пароль) из файла (xml, json, любой другой формат).

    Напиши api для:
    для получения списка всех записей
    удаления записи по номеру
    изменения всех данных по номеру
    получения записи по номеру

    номер записи уникален. комбинация сайта и логина уникальна.
    Выполнять в main, консольный интерфейс не нужен.

    2) Изменить программу так, чтобы она работала с базой данный вместо файла. База H2 (режим embedded), работа с базой через JDBC. Если интересно, то можно использовать базу в режиме шифрования. Ведь пароли все таки храните.

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

    3) Добавить UI, пусть будет JavaFX. Окно логина/пароля. После авторизации выводится окно с таблицей, содержащей информацию в незашифрованном виде. UI должен использовать api с предыдущих шагов. Окна для редактирования, подтверждения удаления и др.

    4) Дальше писать рано. Фреймворки рано. Работайте c IDE, изучайте возможности.

    Если не хотите писать настольное приложение, то можно написать клиент-сервер. Простейший вариант - сервлет+restapi.
    В качестве контейнера иcпользуете Tomcat. GUI на HTML/CSS/JS. Запустив приложение на tomcat, заходите на страницу, сервер(tomcat) возвращает страницу с логином, вводите логин-пароль -> ajax запрос -> получаете данные -> выводите таблицу и т.д.

    Как это все делать? Ищите в интернете, набивайте шишки и т.д.

    Это довольно сложное задание для новичка без опыта. Но это без проблем сделает любой с опытом работы в 2-3 месяца. Оно охватывает много важных тем: работа с файлами, работа с бд, работа с ui. Это минимум с которого можно начать.
    Ответ написан
    2 комментария
  • Работа с BigDecimal, как отбросить дробную часть?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    BigDecimal a = BigDecimal("15");
    BigDecimal b = BigDecimal("2");
    BigInteger c = a.divide(b).toBigInteger();
    Ответ написан
    2 комментария
  • Работа с BigDecimal, как отбросить дробную часть?

    @Cr2ed
    Ответ написан
    Комментировать
  • Какой выбрать ноутбук для fron-end'а?

    mashletov
    @mashletov
    Math.random()
    Любой в магазине за ~50-65 т.р. с IPS матрицей и разрешением минимум 1920x1080.
    Ответ написан
    1 комментарий
  • Как влияет импорт библиотек из пакета на производительность и размер байт кода Java?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Как правильно написал уже MaxLich, на производительность это не влияет. Директива import просто позволяет вам не писать полностью квалифицированные имена классов, а компилятору понимать, что на то место в коде, где указан Map надо подставить java.util.Map. После компиляции в байткоде остаются только полные имена классов, директивы import не сохраняются, и никакого дополнительного кода в результирующий объектный модуль не загружается.

    Зато импорт через звёздочку влияет на стоимость сопровождения. Плохо влияет. Во многих командах действует правило "Заимпортил звёздочку, получил по мордочке". И стайлер checkstyle ругается на неявные импорты.
    Ответ написан
    6 комментариев
  • Сдохнет или нет jvm без пэгинации?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Java
    Седой и строгий
    Смотря что у вас в строках, какими ресурсами располагает хост, какой сборщик мусора используется, как настроена JVM и т.д. и т.п. Есть программы на Java, которые работают с терабайтными хипами.
    Ответ написан
    Комментировать
  • Почему вылезает ошибка?

    @klim76
    android/java/sql
    int[] arr = new int[8];

    if (arr[8] == 1) break;

    всё потому что программисты странные люди и почему то считаю с нуля
    Ответ написан
    Комментировать
  • «Философия» всех языков программирования. Миф или реальность?

    Выучите в начале Си, япы делятся на 2 типа:

    1) Си
    2) Все остальные

    Потому что Си это отец всех языков, любой компилятор, или интерпретатор так или иначе пишется на Си. Это во многом определяет логику. Тем более что книжка по Си не такая уж и большая, брошюра из 200 страниц. Си это детерминированный язык, после него любой другой будет проще даваться.
    Ответ написан
  • «Философия» всех языков программирования. Миф или реальность?

    Veneomin
    @Veneomin
    Философия одна и таже, синтаксис разный. Если дорос до уровня "работаю и получаю деньги" на одном языке программирования то выучить другой не проблема.
    Ответ написан
    Комментировать
  • Почему поиск уникальных значений в двух таблицах Excel работает медленно и как сделать чтобы было быстрее?

    @igorsmi
    Full stack web developer
    Скажу коротко, если перенести всё в SQL, разница в скорости будет огромная.
    Ответ написан
    Комментировать
  • Для чего используется Java в современном вебе?

    @ivodopyanov
    NLP, python, numpy, tensorflow
    У вчерашних студентов много кода на Java почти наверняка будут более понятны и поддерживаемы, чем много кода на Python.

    Java используется для больших и долгосрочных продуктов.
    Python же позволяет что-нибудь сбацать по-быстренькому.
    Ответ написан
    1 комментарий