Вы видите копию треда, сохраненную 9 июня 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?
А: Вкатиться нелья, ты должен был родиться программистом.
https://github.com/random76/Java-Thread/wiki
https://github.com/qqqlll/Java-Thread/wiki
К чему эта книга на втором пике? Она не имеет к Java никакого отношения.
Плюсую, оч странно
Так и быть, возьму
Да я то тоже гуглил. Иначе бы не писал потом сюда. Нет, бы по-человечески Ораклу написать что с Java 11 FX больше не поддерживается. Нет, блин, все чики поки идите и скачивайте, мы нигде вас не предупредим что нихера ничего нет и страничку и инфу не обновим. А я просто хочу пройти пару туториалов с их же сайта.
пикрелейтед
Но зачем тебе, это устарело, тебе нужен жаваскрипт и реакт нейтив.
Или более точнее - тебе нужен вот тот челик челкан-фронтендер за 200к в месяц из соседнего отдела, пишешь тасочку и отдаешь ему.
Я не хочу фронтендером. Я Java FX мне надо что создать оконное приложение для себя для определенных целей.
Нахер опять эту книжку в оппик? Ее никто тут не читал и не обсуждал.
Если я должен родиться программистом, то поздно ли вкатываться в -30, -10, -5 лет?
Удивительно, но я пишу код на джаве. С использованием типичных для энтерпрайза фреймворков типа того же спринга. Шокирующими откровениями и срывом покровов порадовать не могу.
Так может это для тебя не откровения и не шокирующие, а для других будут. Расскажи... как ты дрочишь стоя на голове
Пишу по пару методов за спринт, это примерно 8 часов в 10 дней. Остальное время сижу на митингах, ревьюю код, даю советы, тусуюсь на кухне, смотрю видосики.
Вообще не убедительный доклад. То, что он это использует с бородатых годов, и что у него в браузере фх не тормозит, ну молодец, чо. Дальше что? Плюс его в конце парировали вопросом, что его приложение просто тестируется на только одной платформе, и он просто надеется, что оно так же будет работать на всех остальных, мобайле и в вебе.
Кроссплатформенный софт так и не взлетел со времен взлета джавы и ее апплетов (~1995)
Веб-морды на реакте это все-таки не кроссплатформа, у них одна платформа - 2 браузера, и желательно свежие версии. Поэтому у них меньше проблем.
Что.
Он про рабочие дни лолка
Я там вообще не увидел попыток "продать" кому-то JavaFX/Swing. Скорее это рассказ про текушее положение дел. И я с ним согласен в том смысле что хайп вокруг технологии часто затмевает реальное положение дел.
Я знаю много inhouse разработок на Swing - просто потому что бек на Яве и Ява програмистам проще освоить Swing чем JS+Electron. Но эти разработки не распространяются за пределами компаний и потому о них никто не знает.
Следует соответствовать определениям предметной области, то есть геометрии.
>Квадрат — это прямоугольник, у которого все стороны равны.
JavaFX легко подключается мавеном на любой версии, и не нужны никакие ждк, где он прибит гвоздями.
Я бы и свинг вынес в отдельную библиотеку, и JDBC, и коллекции, и конкаренси, и стримы. Чтобы ты сам с нуля собирал и конфигурировал единый организм только из нужных частей. Таков смысл священного мавена.
Как показывает практика - оба от Шейп.
CentOS 7.x;
СУБД PostgreSQL 10;
OpenJDK 11;
Scala 2.13;
Apache Tomcat 7;
ActiveMQ 5.11;
Spring 4.3;
поиск: Elasticsearch 6.x;
Nginx 1.14.
А как они сайт одновременно крутят из томката и нгинкса?
Нгинкс обычно так и юзают - статику раздают самим нгинксом (он умеет это лучше), остальные запросы перенаправляют им же на томкат/апач/etc.
Ты хотя бы убунту осилил поставить? Охуеваю немного от подобных. Что вы там учите?
Охуеваю от таких выпадов. Что там ставить в убунте? "Далее" нажимать? Учу то, что требуют от джунов. Приложение на спринге разворачиваю из встроенного томката. Обычный веб-сервер мне не нужен был, встроенного томката хватало. Да и думал, что джаве хватает только App Server и то необязательно весь, обычные веб-сервера как апач для пхп не нужны.
> Приложение на спринге разворачиваю из встроенного томката.
Спринг бут, конечно, хорошо, но на работе всё же может понадобиться потыкать сервер приложений хотя бы на уровне заливания war-ника через веб-морду.
> думал, что джаве хватает только App Server
Нгинкс не даёт ничего такого, что можно было бы сделать без него, только перформанс.
>Что там ставить
>джаве хватает только App Server
>обычные веб-сервера не нужны.
>Учу то, что требуют от джунов
Охуенно авторитетное мнение
Энтерпрайз - 95%+ Software Engineering
Ты должен в идеальное знание языка, полное понимание SOLID, экстенсивные знания в системах и архитектурах, понимание CI/CD, осведомленность о подходах продукт менеджмента
Еще нужно уметь пользоваться джирой, очень важный навык, часто на собесах спрашивают
Что-то я не понял, чего там учить? Я сейчас открыл, просто какой-то сильно модифицированный TODO-list для управления проектом.
Нужно как шизик самому себе задачи назначать и выполнять? Или я в глаза долблюсь и какого-то функционала не вижу?
И интеграция с гитхабом что-то не работает. install Jira сделал, даже дал доступ ко всем репам, но все равно не заработало.
>Что-то я не понял, чего там учить?
Ничего не надо там учить, конечно. Но вон тот булшит о "подходах продукт менеджмента" напомнил, что среди нанимателей встречаются долбоящеры, которые реально любят упоминать даже джиру.
Какой?
Они не просто "встречаются", их в принципе дохуя. Можно открыть hh, вбить в поиске "jira" и увидеть овер 2к вакансий.
>Можно открыть hh, вбить в поиске "jira" и увидеть овер 2к вакансий.
И сколько из них будет вакансий разраба, а сколько менеджера?
>>644097
>>644109
>>644328
Аноны, я примерно знаю, что делают разрабы на работе и как примерно копроративный процесс налажен сам немного стажировался на дотнет + жс CRM
Мне интересно конкретика, вот над какими, к примеру, конкретными задачами вы работаете в течении рабочего дня. Какие технологии используете. Например, хуярите там данные какие-то из базы, потом их в XMLину заправляете, а затем оно должно за н-ое количество миллисекунд улететь в какой-то модуль говна чего-то. Продумываете какие-то модули архитектуры взаимодействия сервисов, или это может только синьоры-архитекторы делают раз в месяц. Просто хотелось бы какой-то конкретики, потому что у меня только какое-то сильно абстрактное и отдаленное представление об этом.
>>644472
В жире, вроде, только аналитики, тимлиды и прожект-менеджеры что-то серьезное делают, ты просто хуяришь там таски и пишешь микроотчеты, с пометками пакетов в SVN/git. Хотя мб подход везде сильно разный.
А вы тоже с радостью вышли поработать на следующей неделе, потому что дядям с бизнес задачами нужны деньги?
Из последнего есть система в которую приходят транзакции их другой системы, она их обрабатывает и отправляет в другие системы.
Надо было добавить способ на основе данных во входящей транзакции присвоить ей некий тип выходной системы. Ну и сделать так чтобы правила классификации можно было менять в процессе работы.
в общем очень увлекательно
> система в которую приходят транзакции, она их обрабатывает и отправляет
Охуенно описал, подходит для любого энтерпрайз бэкэнда
Так и есть, это типичный энтерпрайз бекенд из палаты мер и весов.
Вот что говорит автор:
>Хотя ни один метод явно не захватывает две блокировки, объекты, вызывающие методы setLocation и getImage могут всё же попытаться захватить две одинаковые блокировки. Если поток вызывает метод setLocation в ответ на обновление, пришедшее от приемника GPS, он сначала обновляет местоположение такси, а затем проверяет, достигло ли оно места назначения. Если это так, он сообщает диспетчеру, что ему нужен новый пункт назначения. Так как оба метода - setLocation и notifyAvailable – объявлены как synchronized, поток, вызывающий метод setLocation, захватывает блокировку экземпляра Taxi и затем блокировку экземпляра Dispatcher. Аналогично, поток, вызывающий метод getImage, захватывает блокировку экземпляра Dispatcher, а затем блокировку на каждом экземпляре Taxi (по одному). Две блокировки будут захвачены двумя потоками в различном порядке, что приводит к риску возникновения взаимоблокировки.
Но я все равно не понимаю, ну захватил поток метод setLocation(), потом захватил блокировку Такси, ну и что? setLocation() всего лишь вызывает жалкий методик из Диспетчера, который добавляет данное такси в коллекцию, и все. Что может пойти не по плану?
Потом захватил блокировку Диспетчера, фикс.
Просили же рассказать что делаешь на работе, а не для чего. Как архитектура согласовывается, строго по заданиям от умных дядь или ты пилишь интерфейсы, классы и паттерны, какие в голову придут? Сколько в среднем строк в методе? Есть ли демократия в выборе библиотек или заставляют писать на чем дают? И т.д.
Описание не читал, многа букаф. Код почитал. Смысл в том что нельзя захватывать два лока в разной последовательности, а тут происходит именно это:
1) setLocation (лок taxi), dispatcher.notifyAvailable (лок dispatcher)
2) getImage (лок dispatcher), t.getLocation (лок taxi)
Если нужно захватывать два лока, то все ветки исполнения должны делать это в одном порядке.
Ну так составь конкретный список вопросов наподобие этих, а не "расскажите плез чё-нить, ой нет, меня этот ответ не устраивает".
Ах, вот оно что. А я думал, каждый поток будет спокойно брать свое, а потом отдавать блокировки, ведь в самих методах ничего блокирующего не происходит. Спасибо.
Ну ок, у меня сейчас так:
>Как архитектура согласовывается, строго по заданиям от умных дядь
>Есть ли демократия в выборе библиотек
Сам уже достаточно умный дядя (сеньор), архитекторов надо мной нет. Демократия ограничена только здравым смыслом и устоявшейся инфраструктурой. Грубо говоря, сменить завтра СУБД по велению левой пятки нам не дадут, а вот выкорчевать спринг, возникни вдруг у меня такое желание, я бы мог.
>более менее изучен Джавакор
Пройди тест и скрин сюда.
http://www.quizful.net/test/java_se_basic
Не нужно.
psvm дальше иде подскажет
Я имею твою мать, но она не мой предок.
надо сделать прогу, которая по айди запрашивает в БД и печатает на сетевом принтере. в нете нашёл несоклько примеров этого, только один сработал(другие просто выкидывают что принт фэилд или вообще ничего). оказалось что рабочий пример генерит только картинку и печатает её, оказываеца есть ДокПринтДжоб и ПринтДжоб и они принимают вроде бы разные типы, а те типы ещё другие типы. И в общем пойдёшь по этом типам и хуй чё поймёшь, и с чего начинать не поймёшь.
Кароче, как разобраца с javax.print?
игруха но только рогалик с текстом или спрайтами, а иначе ты забудешь что собрался изучать жаву
Так и что, код изменять пробовал, пробовал понять что в "нерабочих" примерах идет не так и почему выкидывает print failed?
Ну давай с этого места и начнем. Кидай код, и кидай ошибку какую выдает. Строку там, сообщения, что есть.
Мимо мидл бекенд, 70% скучные задачи по типу настрой какой нить новый рест апи, или какая нибудь бизнесс логика слава богу сбежал с энтерпрайз поддержки, там 100% это скучные задачи, 25% веселые задачи по типу написание оптимизированного кода, либо изобрести какой нибудь хитрый алгоритм и 5% практически нерешаемая фигня которую ты пишешь 5 недель а по итогу она уже нахер никому не нужна, либо ты уже сам не понимаешь как этот говнокод работает
Нихуя ты выдал. Наверняка убийца, или маньяк какой-нибудь, да? В любом случае, опасен для общества это точно.
Проиграл
Будет ли хорошей практикой выделить этот элемент при помощи легковесного SAX, чтобы потом только для него построить DOM и отправить в XSLT?
Я бы выделил нужный кусок с помощью StAX или SAX и перегнал его в pojo, с xslt бы не связывался.
Даже Durgasoft платный.
Взял етот курс пока что, только первое впечатление что я никогда не буду это использовать ведь я крудошлеп
https://www.coursera.org/specializations/pcdp
>Но XSLT предполагает, что вход будет в виде DOM, а держать в памяти всё дерево XML наверное будет не разумно.
Вовсе нет, вполне возможно использовать StreamSource или SAXSource.
А потом transformer.transform(streamSource, outputTarget)
Не понял.
Спрашиваю потому, что когда нечего делать, смотрю видосы как делают сайты на ютубе всякими веб технологиями и, по-моему, ни разу не видел, чтобы кто-то воспользовался concurrent пакетом или синхронайздом. Почему так?
Только когда нужно найти, где проебалась блокировка записи в таблице, и две одновременные транзакции что-то поломали.
Часто, но в основном на уровне засунуть что-то в ExecutorService, собрать через CompletableFuture результат. Ничего космического.
Плагин для майкрафта.
Чтобы стать мастером параллелизма, как Брайн Гетц и не изобретать свои велосипеды.
Нет. Но в общих чертах знать не помешает.
Можно стать мастером однопотока, как создатель питончика, он тоже крутой чувак.
Портреты Brian Goetz и Mark Reinhold должны висеть у каждого джависта в кубикле!
Икону Джошуа Блоха на шею.
Надо так делать - прочел один параграф, прорешал задачки, затем отдохнул немного и прорешал 5 интегралов.
Может ты имел в виду gc?
Хуя ты дебс, твой ответ ни для интовой, ни для плавучей арифметики не является верным. Тебе бы математику класс так за шестой подучить.
Я другой анон, прочитал Шилда и Блоха, тоже собрался изучать спринг уже, думал кор хорошо знаю, а оказалось пикрил. Даже не знаю что делать теперь.
Тест хороший, затрагивает много тонкостей языка, разбор правильных решений было интересно почитать, много нового узнал.
Все равно есть вещи, которые надо помнить. О которых компилятор ничего не скажет.
Например string pool, Кэш целочисленных wrapper классов и Boolean.
Ну так в каком месте это тонкости? Это базовая хуйня, которая в любой хорошей книжке должна быть написана английским по белому.
Они повелись на мой троллинг.
Может, книжка хуевая была просто? И зачем ты читаешь одеревеневшее говно мамонта?
Я уже прочитал, она всего 250 страниц была, и то я все deprecated пропускал. А IntegerCache в 1.5 появился.
Просто в джаве так много старых классов и хотелось узнать, что чему и когда пришло на замену.
30 лет чтоли уже?
class Super {
static void hueta(String x) {
System.out.println("Super: " +x);
}
}
class Subclass extends Super {
void hueta(String x) {
System.out.println("Subclass: " + x)
}
}
Super x = new Subclass();
x.hueta(3);
Вот нахуя такое спрашивать? Откуда я знаю что это выведет, какой долбаеб будет такое писать?
Это вроде перекрытие метода. Нужно, потому что static нельзя оверрайднуть.
Смотря что именно в джаве не устраивает. Может ты памятью хочешь сам упралять.
С чего? Размер внутреннего буфера в чарах так задаем.
Заебись код. Минимум 3 ошибки (семиколон, инта в аргументе, перекрытие), не учитывая модификаторы доступа, т.к. непонятно где будет psvm. "Обожаю" такие задачи. Кстати, если кому интересно: на тестах OCA/OCP вопросов с ответом "не компилится" очень мало, по ощущениям около 5-10 вопросов из 80, т.е. там так не нужно ломать глаза и представлять себя компилятором, выискивая лишние закрывающие скобки и прочую синтаксическую чухню. Да и те вопросы про компиляцию что есть они обычно "высокоуровневые", типа скастится ли stream.mapToInt() в LongStream. Лично я был удивлен этому обстоятельству, потому что подготовительная книжка долбила вопросами на внимательность синтаксиса процентов 50% времени. Основные вопросы про "что выведет код" без варианта о компайл эррор, но местами с эксепшенами.
У меня нет статистики. Часто вижу что компании предлагают своим сотрудникам сдавать за счет компании, как повышение квалификации. Но я для себя сдавал, на свои кровные. Типа челлендж на знание sdk и умение быстро соображать - в среднем по 1,5 минуте на вопрос, а там нередко пара одностраничных классов прилагается к прочтению; спойлер: читать их обычно детально не требуется для ответа на вопрос, тут нужно быстро-быстро уловить суть и найти что спрашивают.
Если ты уже джавист, не важно. Для вкатывальщиков может иметь смысл - и самому заодно потренироваться, и в резюме указать.
Было бы меньше эксепшенов при valueOf(String str)
upd
Посмотрел исходники lang.Enum<T> valueOf
Там он берет значение str-ключом из мапы в классе Class, внезапно.
> все равно
Нет, не всё равно. Компилятору похуй, что там за необязательные рекомендации, и ебать за них не должен. Вдруг завтра рекомендации изменятся, и теперь методы нужно писать в snake_case. И что, весь существующий код должен перестать компилиться, если имена констант и методов совпадут посте привеления из к одному регистру?
>Было бы меньше эксепшенов при valueOf(String str)
В правильно написанной программе таких эксепшенов в принципе не должно происходить. Как по мне, использовать valueOf для чего-то, кроме store/load -- плохой тон, как и ручное вбивание строковых представлений enum-ов.
>Посмотрел исходники
Исходники хуйня. Это детали реализации, которые тебя вообще ебать не должны никак. Мало того, что это нарушает programming against interfaces (хотя я бы этот принцип назвал programming against API, чтобы некоторые болезные не думали, что весь API должен состоять исключительно из жабьих интерфейсов), так ещё и реализация может быть совершенно разная в зависимости от вендора.
Столько всякого устаревшего говна нужно перелопатить. В какой-то момент начинаешь делать проект тупо копипастом, каких то классов с разных библиотек и других проектов. Самое удивительное, что в итоге вся эта куча гавна ещё и умудряется работать.
Хотя, может я просто представлял себе программирование немного по другому. Решение каких-что весёлых задач и придумывание необычных фич, а в итоге просто ебашишь какую-то архаичную срань.
Я вот начинал с крестов, джава теперь мне кажется псевдокодом
Остальное так или иначе верно для всех языков. Это только небольшие проекты писать приятно.
Спасибо, идите нахуй.
Шел 2020, но каждый нубо-вебмастер продолжает вешать регистрацию на каждый выпук в своем пет-проекте
Есть же временные фейкопочты и пароль 123
Эта параша мало того, что без SSL, так ещё и фейковые мейлодомены не принимает. Ору с клоуна, который серьезно думает, что ради его ссаного тестика кто-то будет палить свое реальное мыло, чтобы потом получать рекламу от педрильного клуба любителей пощекотать очко.
А вдруг тебе оффер придет за хороший тест.
А меня не взломаете?
пароль стандартный
Что с ценами? Есть скидки как GeekBrains?
Бугаенко плз, твоя хуета никому не нужна.
> Ору с клоуна, который серьезно думает, что ради его ссаного тестика кто-то будет палить свое реальное мыло
Ору с клоуна, который думает что не будут. Будут еще как. 90% людей идиоты, которые ставят свое реальное мыло на все говносайты, да еще и пароль один и тот же везде.
Все работает, заходим по двачеинвайту.
Сап /pr/
Почитал я тут эти ваши местные треды, и встретил такую мысль "Spring чуть-чуть быстрее, чем Django". Это правда? Где об этом можно что-то почитать?
что есть быстрее?
Получается искать на хх стажерские вакансии и подаваться только туда? Это конечно не весело
А раньше надо было тамошние биткоины пополнять, чтобы тесты проходить.
warning: [options] bootstrap class path not set in conjunction with -source 8
1 warning
Я не знаю что это значит,Прости меня
Он для андроидщиков.
А чё мавен волшебным образом решит эту проблему?
такая же проблема,да и я вроде выбирал мавен
Спасибо. Мда уж, какой же уебищный у оркала сайт. На каждой странице разное оформление, тупая навигация.. Не то что у мелкомягких, там все аккуратно и выглажено. Эх.
А я про сайт оракла.
Это сайт jcp, они его унаследовали после поглощения джавы. Там нет смысла ради дизайна нанимать жс-еров.
Ну и проблемы у ява программистов.
Причем, очень хочется, что бы по крайней мере, у меня самого глаза не вытекали от дизайна 90 и можно было добиться native look&feel под мак.
Или так не бывает?
awt.Robot умеет за положением курсора шпионить.
Неа, там панель инструментов прямо встроена. Показать не могу.
Только сейчас вспомнил.
Лучше продолжу писать персистентные двусвязные списки.
Каким образом массив байт преобразуется в строку? Я не понимаю, к чему там байтовый сдвиг и конъюнкция.
Это такой способ взять отдельно 4 старшие и 4 младшие бита из байта. Каждым 4 битам один шестнадцатеричный символ соответствует.
А ты как думал, мань? Ты должен доказать, что ты достоин того, чтобы тебе платили деньги — просто так их никто не даст :) Поэтому извольте поработать несколько месяцев бесплатно. Ну а если несогласен, то вали в пятёрочку работать на кассу, ибо у нас таких как ты по несколько десятков человек на место :)
Да, я сначала погуглил.
Свинг считается устаревшим.
Javafx вроде и жив. Но тоже вырвиглазный. Я нашел тему AquaFX, мимикрируюшую под мак, но хрен там плавал, уже давно заброшено, и под современным маком выглядит как нового.
Как говно оно выглядит, сраная автозамена
делай форк аквы и доделывай до конца
давай критикуй по делу
Стоит признать, что используя js можно меньше задрачивать оформление. Много всего готового.
На свинге/фх добиться приемлимого внешнего вида в разы сложнее, и все самому.
на fx или свинге формочку накидать - дело пары часов. На джава скрипте это нетривиальная задача, на которую надо нанимать верстальщика
Кто-то отстал от жизни, сидя с заболоченным интернетом в банке?
В js так же есть готовые библиотеки компонентов, и простую формочку накидать быстрее, чем jvm будет разогреваться.
QT
Скоро PWA всех убъёт. Они кросс-платформенны из коробки и пишутся на привычных всем технологиях. Вот дадут им больше разрешений, тогда и заживём.
Поня.
И что? Там много архаичных деталей. Например при создании класса альт таб нажми, и у тебя панель с его названием поверх всего экрана останется перед лицом. Они даже свой layout сделали, потому что ни один свинговый их не устраивал.
Да, потому что тот же Спринг очень похож с EE и поддерживает многие аннотации из EE.
JPA аннотации это часть JEE, JAXB аннотации - тоже.
CDI - полностью поддерживается спрингом.
А теперь расскажи что из C# ты в Яве сможешь использовать?
нашел
Скачал последнюю версию, ничего не поменялось.
И у них всех будет высшее техническое?
>поддерживает многие аннотации из EE
Ну да, на том основании, что спринг умеет распознавать @Inject в добавок к своим аннотациям, давайте все теперь бросимся штудировать CDI, EJB, JSF, поставим гласфиш...
А там и до лямбд доберемся
>Например при создании класса альт таб нажми, и у тебя панель с его названием поверх всего экрана останется перед лицом.
Нет.
Вроде реакт нейтив пилят под десктопы, типа https://proton-native.js.org, правда хз насколько это близко к нативному лукнфилу.
>добиться native look&feel под мак
>Или так не бывает?
Нет. Натив на маке в принципе ничем не скопируешь, тупо потому что он выходят на голову выше всего остального.
Открой какой-нибудь клинмаймак или хотя бы телеграмм на маке, поизучай. Все на других ОС на голову ниже.
Нет, я н-не такой! Я один раз просто от... невнимательности создал проект без градла.
https://ipsoftware.ru/pdf/Swing_2nd_ed_Ivan_P.pdf
Надо было в цикле не 256, а 0xFF, но это просто сделает код немного хакернее.
Ты думаешь я буду всю книгу перечитывать, чтобы отрисовать одну картинку? Я уже понял, что дело где-то в EDT. Но я ебал в эту хуйню лезть.
Это все из-за того, что в джаве принято конечный элемент делать excluded. Без этого можно было красиво написать для цвета 0xff.
Потянул, нет нихуя. Пойду твою мать за анус тянуть теперь.
С картинкой из файла работает. Не понятно нихуя.
Ну что тебе непонятно, блядь? Что ты в режиме с прозрачностью делаешь рандом всего лишь младших 8 бит, оставляя альфу в нуле? Или что ты не можешь ревалидейт вручную сделать?
Точно, только вспомнил, что я уже работал с типами BImage раньше и там был какой-то нюанс. Анон выше сохранил свой анус.
>>647547
Можно просто поставить режим без альфы.
Ептить, прям школьные годы вспоминаются канвас в дельфи/VCL. Какой нахуй спринг, теперь это тред про рисование на канвасе джпанели. Спасибо, анончик, за ностальжи.
В 0,9 раз меньше жрет памяти, чем электрон!
В общем, создал через плагин shadow jar-файл и даже добавил все, но ИДЕЯ не видит импорты.
Добавил так:
dependencies {
implementation files("d:/path/file.jar")
}
Судя по закрывающим фигурным скобкам у тебя метод max() объяслен внутри метода main(). Это не джаваскрипт, так делать нельзя. Методы в методах могут быть только в виде лямбд или внутри анонимных классов. Вынеси свой метод на уровень выше.
Не туда смотришь. Смотреть надо на самое первое "красное" вхождение, остальное это побочные эффекты парсинга. Первое вхождение это скобка после max. И тебе идея говорит, что в данном месте нужен statement (выражение). А объявление метода стейтментом не является. В общем вот сюда смотри: >>648056
thnx
На третьем пике, это так выглядит Котлин, по мнению Москвабадцев?
рельсы
То ли дело websphere.
Как стать джуниор-жабистом, не насосаться веберских хуёв в кубикле и начать писать говня-код для барина?
Открываешь фирму, делаешь красивый лендинг с тестимониалами
пишешь 10 years of experience in
CLOUD TECHNOLOGIES
MACHINE LEARNING
ARTIFICIAL INTELLIGENCE
BLOCKCHAIN
даешь небольшую рекалму в гугл
находишь лоха, пишешь ему свой говнокод
трусторb, навидал таких фирмачек дохуя пока фрилансил
У меня такой вопрос, как вообще происходит сборка jar со сторонними зависимостями?
Вот у меня есть набор своих инструментов в jar, все бы ничего, но я бы хотел добавить внешние зависимости еще.
Как это вообще делается? Помещаются все зависимости в этот jar или какими-то манифестами прописываются для gradle(maven) зависимости, которые потом пакетный менеджер докачивает?
Можно просто базис объяснить, как это устроенно, без особых деталей, мне просто понять общую картину.
Открыл я джарники и вижу только пакеты локальные. Это мне никак не помогло с моим вопросом. ты зеленый или просто тупой??
Зависимости можно упаковать в один жарник мавеном с помощью плагинов. Гугли maven fat jar.
в градле небось тоже можно, но он для хипсторков
Да это и без тебя знаю. А как делать правильно? Как мне подключить джарник, если у него внешняя зависимость, другой джарник?
У тебя вопрос тупой, точнее комплексный. Каша какая-то, нихера непонятно. Тебя интересует сама сборка или результат сборки? Если со стороны результата, то существует минимум три способа:
1) Самый простой способ: положить либы отдельно в папочку рядом с твоим джарником и подключать их в команде запуска параметром cp. Так твой джарник остается девственно чистым, и соблюдаются лицензии либ, если в них прописан запрет на перепаковку.
2) Перепаковка. Открываем все либы, достаем классы, упаковываем в свой джарник. Еще раз: достаем class файлы, кладем к себе. В этом отличие от способа 3.
3) Лоадер джарников. Либы как есть, не доставая class файлы, кладем к себе в джарник. Для запуска такой конструкции нужно специальным образом генерить свой джарник, подключать туда джарлоадер. На выходе получается тоже толстый джарник, но либы нетронуты, лицензии сохранены.
Очевидно, что для каждого из способов настройка билд системы будет уникальной. Какой именно способ использовать зависит от обстоятельств, некоторые плюсы и минусы я перечислил.
>>648361
Тебе может показаться что первый способ он такой неудобный, типа че ваще, либы отдельно, все так просто и топорно? Поэтому вот небольшой пример из жизни. Такая вот хуйня: в параметрах запуска килобайты, блядь, текста. И это считается норм. Второй и третий способ тут просто нежизнеспособны - все это в один джарник тащить. Но для мелких домашних проектов можно и перепаковать, не страшно. Даже иногда насрав на лицензии. А вот есть еще такая хуйня как спринг бут. Вот там генерится джарник и с class файлами, и с джарниками, и с лоадерами. Как видишь, все три способа имеют применение.
Раз уж у нас карантин, решил апнуть свои скиллы до миддла, а че учить - хз. Наверное, больше надо прочитать про устройство самой жабы/спринга внутри, подрочить алгоритмы и структуры данных, а посему, есть ли у анона волшебные книжки, которые расскажут обо всем этом? По одной на каждую тему.
Сайты/курсы/другие шаманские методы обучения приветствуются
>>1635313 →
>>1635318 →
Вот я книжки кидал. Pro Spring бери, Pro Spring Boot и Pro Scalability. Concurrency еще желательно бы хорошо знать. Алгоритмы по Седжвику и Вейну. Ну и экзамен само сабой рекомендую, дает просраться.
>>648366
Еще вопрос, у меня сейчас есть сорцы, я через гредл подключаю стороннюю библиотеку compile files("d:/path/my.jar"), которая лежит вообще в другой внешней папке (даже другом диске).
Как мне это все это организовать и опубликовать на гитхабе? (как правильно вообще)
1) Создать подобие папки vendor в проекте и кинуть туда все эти джарники и прям так залить на гитхаб?
2) Или как-то оформить их и залить уже в репозиторий maven и потом оттуда уже подключать как все остальные либы? (Я даже не знаю, могу ли я, простой колхозный парень, залить в репу мавена что-то свое?).
2.1) Если я могу заливать в maven, и у меня вдруг появиться свой jar-ник с внешними зависимостями (например подключу логгер), как нужно будет тогда правильно этот мой джарник организовать? Прописывать какой-то лоадер, или же maven/gradle что-то указывать дополнительно?
Если опять туплю - ссори, я просто общей картины не до конца понимаю, но хочется делать сразу правильно.
сделай папочку lib и в градле относительный путь к этой папочке и либе в этой папочке
Казань брал В npm заливал, в центальный мавен - не заливал. В мавене использую локальный репозиторий, который ~/user/.m2. С машины на машину пересаживаюсь не часто, но когда такое происходит, то скачиваю репо с кодом своей библиотеки, и mvn install устанавливаю в опять же локальный репо на новой машине. В pom файле по id артифакта подхватывается зависимость из локального репо. Кстати в градле тоже можно pom файл, все дила.
Насчет гитхаба, по разному делают в зависимости от вероисповедания и других примет. В т.ч. закидывают бинарные ресурсы в репо и ничего такого в этом нет (твой вариант 1). Но мне больше нравится следующий вариант: в репозитории только код, импорты там на либы в коде. А сами либы поставлять отдельно, в зависимости насколько они самостоятельные. Если прям большие красивые, то можно отдельный репозиторий для них создать на гитхабе, и на первом указать, что используется либа вот оттуда. Если либа маленькая или их много - часто эксплуатируют механизм релизов - прикладывают к коммиту полный архив программы, готовый к запуску, т.е в комплекте с либами.
https://twitter.com/ilmarihei/status/1245364174667960320?s=20
aop не тег а префикс неймспейса, а так да.
Рожденный хрюкать летать не может.
Учит подскакивать кабанчиком
Просто добавляй туда как можно больше элементов до посинения, он сам увеличится.
Внимательно почитай. У меня есть хеш-функция, которая возвращает подпись длиной 32 байта, а мне надо 64. Можно просто склеить, но это не очень подходит. Может есть какие-то специальные алгоритмы?
Ты тупой или прикалываешься?
>У меня есть хеш-функция
Хеш-функция возвращает результат всегда одного размера вне зависимости от входных данных, в этом ее смысл. Нужен результат другого размера? Берешь другую хеш-функцию.
Я не знаю, какая хеш функция будет использоваться, вот в чем дело. И мне надо работать с результатами разных размеров.
Так бы сразу и написал.
Нет таких алгоритмов, только юзать другую хеш-функцию. Если пытаться растянуть существующий хеш, даже на 64 битах будет 2^32 значений. По коллизиям это то же самое, что
> склеить
, только биты в другом порядке будут.
Такие вот они, энтепрайзы, загадочные...
Хешируешь полученный хеш своей хеш-функцией, возвращающей результат нужного размера.
Можно написать дженерик метод и всегда возвращать 64-битный ноль.
Как вариант, в зависимости от задачи можно не растягивать хеши до максимального, а наоборот, усекать большие хеши до 32, или сколько там у тебя.
Бамп
2 вариант - ленивая инициализация. Делай как хочешь, но второй вариант более бестпрактисный.
>нужно
Кто сказал? Это темочка для холивара. Можно и так, и так. А можно еще и через instance initializer, самый редкий способ, но он есть. Всего получается три способа. Как удобно так и делай. Может быть какие-то гайдлайны и рекомендуют что-то одно, но я не помню/не читал. Предпочтительнее конечно в конструкторе, он именно для того и предназначен, чтобы конструировать класс, т.е. инициализировать переменные-зависимости. Однако если класс маленький проще и удобнее по-быстрому нахуячить напрямую в полях. Мне кажется основное здесь - не размазывать чать туда, часть сюда, делать все консистентно. И если инициализация сложная, все-таки предпочитать конструктор. В твоем случае поле инициализируется новым объектом с кучей параметров, это можно назвать случаем "сложной" инициализации.
Однако, если ты продвинутый пользователь:
Буква D в слове SOLID говорит нам о том, что сам класс вообще не должен создавать объекты, а должен получать их извне (DI), например ссылкой в конструктор. Коллекции обычно исключение.
Освежил, был неправ.
-version
Я не он, я тот кто картинки кинул. Но я поддержу, всю айти инфу проще гуглить на англ. Ответ прост - эти технологии там изобрели, поэтому там больше коммьюнити. И запрос проще составить. На русском можно гуглить только 1С, у меня так подруга гуглит. Тут опять же работает правило - где изобрели, там больше коммьюнити, там больше инфы. Так что учи англ, это реально необходимо в нашей профессии.
Какой нашей профессии? Я вечерком просто люблю игры на Джаве пописать, просто для себя. Не дай боже работать программистом
прости
>И мне надо работать с результатами разных размеров.
Ну ты уж опиши поподробней, что значит "работать" и откуда вообще эти хэши приходят.
В нормальной ситуации хэш используется для проверки целостности данных, у тебя же получается могут кинуть любую последовательность байт и ебитесь как хотите.
>А можно еще и через instance initializer, самый редкий способ, но он есть.
Это просто синтаксический сахер, его компилятор вкорячивает в каждый конструктор.
>Однако, если ты продвинутый пользователь:
А вот это категорически верно, не дело UI компонента заморачиваться созданием таймеров, будте добры передать при создании.
>сам класс вообще не должен создавать объекты
а кто должен создавать объекты?
мимо фанат егора бугаенко
Программист.
Понимаю, что ты провоцируешь, но я все равно попытаюсь.
Создавать должен клиент этого класса. Не говоря уже про DI фреймворки, если рассматривать простой пример: метод мейн и должен создавать, например, передавая все это глубже.
Loose coupling не просто так придумали, в этом же есть зерно смысла: если классы мало цепляются друг за друга, с ними проще работать, поддерживать, тестировать в конце концов, передавая фейковые объекты внутрь тестируемого класса.
>фанат егора бугаенко, борца за чистоту ООП
SOLID и есть ООП, но у этого человека, и многих других, свое трактование. Принципиальная позиция что класс должен быть самодостаточным и уметь создавать свои ресурсы сам тоже имеет право на жизнь. Это очередной холивар, но пока выигрывают лузекопульщики. Руководствоваться нужно здравым смыслом и брать лучшее из обоих миров.
@EventListener
@Async("superExecutor")
public void myListener(MyEvent event) {
System.out.println("Called!");
}
superExecutor:
@Bean
public Executor superExecutor() {
ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
executor.setThreadNamePrefix("SuperExecutor-");
executor.initialize();
return executor;
}
Вопрос, почему myListener может иногда не вызываться? (Читаю логи, воспроизвести не удалось).
Фига ты быстрый. А они нужны? Почему-то решил что он из параметра метода возьмет тип ивента, пойду почитаю доку внимательно
Жопа читает ввод юзера и проверяет на паттерн:
if(Pattern.matches("[a-zA-Z0-9]", usrMessage)){
System.out.println("this is balls.");
continue;
}
Если соответствует, то пропускает итерацию. По идеи. Проблема в том, что если напечатать " ;%*(( " или какой-либо отдельный неальфанумерной символ, то всёравно проходит проверку(возвращает тру и делает континью).
Ну очевидно оттого что ты не умеешь пользоваться инструментом. Ты написал, буквально: "если в строке есть один символ a-zA-Z0-9, то ок". А хотел написать видимо так: "если вся строка состоит лишь из символов a-zA-Z0-9, то ок".
Pattern.matches("[\\W]", usrMessage)) ???
Помогает когда первый символ неальфанумерал, а если №№, %% или ";DROP TABLE SHIPPING то пропускает.
Тут дело в том, что matches() проверяет строку на соответствие полностью, т.е. целиком. Данный паттерн работает только если строка состоит из одного символа и этот символ не цифробуква.
>>649709
Правильный ответ написан вот здесь. Нужно составлять паттерн, который проверяет всю строку целиком: ^[a-zA-Z0-9]++$
Вариант с отрицанием тоже возможен, но не с методом matches() у строки, а с методом Matcher.find(). Тогда это то что нужно: "ищем первый символ не из класса". Матчер получается из Pattern.compile("").matcher(). Сам паттерн можно и нужно кешировать, и из него делать матчеры каждый раз, либо ресетить матчер новым инпутом.
В пейнте.
Дохуя старперов в конторе?
Я знаю
Что это?
Если уж пошло на то что как бы хорошо объявлять timer в конструкторе, это относится к другим переменным и объектам? То есть так лучше чем я бы объявил всё в классе? Нихуя не понятно, так же больше писать, легче запутаться.
Тебе в C++-тред.
Будем методы для всех тривиальных задач тащить в стандартную либу, чтобы их потом использовал один анон из десятка тысяч?
Ну кстати какой-нибудь DI фреймворк возможно и будет. Раз уже несколько HTTP клиентов есть.
Ты посмотри на то уёбище которое нам преподносится как решение для логгирования изкоробки.
Это легаси.
а лучше не сделать, это идеал
А как лучше? switch case в for выглядит конечно так себе, но если я сделаю отдельную функцию для возвращения картинки то программа будет 2 раза проезжаться по массиву - получается медленней
а нет не будет
Нормально делай - нормально будет.
ладно
Волею судеб мне нужно отладить jar, который исполняется на удаленном сервереwebsphere.
Внутри у джара всего один класс, в импортах которого прописаны классы из компонента сервера, на котором jar исполняется.
Класс я изменил и собрал новый jar, который должен работать заместо прежнего.
Вопрос: какого хуя сервер, при вызове уже моего измененного jar'а, пиздит, что не может найти эти классы из импортапри том, что оригинальный jar запускается без проблем?
Дело, насколько мне позволяют мои хуевые знания джавы, может быть в classpath?
В .classpath оригинального jar'а есть такие записи:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/VMM API"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
<classpathentry kind="src" path=".apt_generated">
<attributes>
<attribute name="optional" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/com.ibm.ws.ast.st.runtime.runtimeTarget.v85.bi/wps.v85">
<attributes>
<attribute name="owner.project.facets" value="jst.utility"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/IBM Process Server v8.5 JRE">
<attributes>
<attribute name="owner.project.facets" value="java"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
Я попробовал подложить этот файл .classpath в свой jar и нихуя не изменилось - ошибка та же.
ЧЯДНТ?
Волею судеб мне нужно отладить jar, который исполняется на удаленном сервереwebsphere.
Внутри у джара всего один класс, в импортах которого прописаны классы из компонента сервера, на котором jar исполняется.
Класс я изменил и собрал новый jar, который должен работать заместо прежнего.
Вопрос: какого хуя сервер, при вызове уже моего измененного jar'а, пиздит, что не может найти эти классы из импортапри том, что оригинальный jar запускается без проблем?
Дело, насколько мне позволяют мои хуевые знания джавы, может быть в classpath?
В .classpath оригинального jar'а есть такие записи:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/VMM API"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
<classpathentry kind="src" path=".apt_generated">
<attributes>
<attribute name="optional" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/com.ibm.ws.ast.st.runtime.runtimeTarget.v85.bi/wps.v85">
<attributes>
<attribute name="owner.project.facets" value="jst.utility"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/IBM Process Server v8.5 JRE">
<attributes>
<attribute name="owner.project.facets" value="java"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="bin"/>
</classpath>
Я попробовал подложить этот файл .classpath в свой jar и нихуя не изменилось - ошибка та же.
ЧЯДНТ?
Для начала сделай наоборот - подложи свой класс в тот jar, ты говоришь там всего один класс.
Подложил, ошибки те же:
>CWTBG0019E: Неожиданная исключительная ситуация во время выполнения. Информация об исключительной ситуации: 'com.lombardisoftware.component.common.workflow.WorkflowProcessItemException: Unresolved compilation problems: The import javax.ejb cannot be resolved The import org.eclipse cannot be resolved...
Причем, если обращаться к тому классу, что лежал в джаре изначально, никаких ошибок нет.
Что-то ты нам недоговариваешь. Что он там вообще компилирует если ты ему класс файл подкладываешь? На лету там только JSP компилируются. Давай уж полный стекртейс ошибки.
Дальше .classpath - это настройки Эклиспа к тому что деплоиться на сервер он напрямую не относится. Рассказывай чем собирается проект и во что war или ear.
Нужно было начинать с начала, наверное, пардон.
В общем: есть система, которая крутится на Websphere Application Server, этой системе нужно получить атрибуты пользователя из репозитория самого WAS. Известно, что сделать это можно при помощи компонента, встроенного в WAS - Virtual Member Manager, у которого есть свой апи, который лежит где-то в каталогах самого WAS.
Есть работающий jar, который мне нужно изменить - https://us-south.git.cloud.ibm.com/ryancox/BPM.VMM_LDAP_Toolkit/blob/master/source/VMMUtil.jar.
Я заливаю этот jar на сервер через веб-морду, дальше WAS неизвестным мне образом этот jar подхватывает и в этой же веб-морде дает мне выполнить любой его метод с указанием входных параметорв.
Тот jar, что по ссылке, запускается и работает, я могу его дебажить удаленно.
Я хочу добавить в jar еще один класс, исользующий тот же апи, что есть в импортах у работающего класса import com.ibm.websphere.wim.*. Для этого я импортирую рабочий jar в Eclipse, добавляю новый класс и экспортирую это как новый jar с тем же .classpath, что и у исходного jar'а.
После выкладки на сервер пробую: вызываю метод из класса, который лежал в jar изначально - все работает, вызываю метод из своего класса - валится с ошибками импорта.
Доступа к серверу, а соответственно, и к полному стектрейсу, у меня, увы, нет.
Как-то так.
А в них нет никакого глубинного смысла, расписывать нечего.
А какие тебе подробности то нужны епта
НЕ НАДО! У нас уже и так логгеров дохуя.
По хорошему надо из jul сделать интерфейс для логгеров типа sl4j и пусть logback, log4j и остальные делают реализации.
Там на самом деле не так много надо переделать, повыкидывать часть методов, чтобы API стало полегче (всякие resource bundle и кастомные уровни). И договориться с ребятами из log4j чтобы они своц логгере поддержали новое API.
вот как здесь https://docs.spring.io/spring-hateoas/docs/current/reference/html/#mediatypes.custom
> HATEOAS
Загуглил эту хуйню. Предлагается добавлять ссылки для навигации ("действий") к возвращаемым в виде json данных? Складывается ощущение, будто они заново хтмл изобретают, но только в виде json. А xml-версия так вообще почти один в один хтмл.
>Я хочу добавить в jar еще один класс, исользующий тот же апи, что есть в импортах у работающего класса import com.ibm.websphere.wim.*. Для этого я импортирую рабочий jar в Eclipse, добавляю новый класс и экспортирую это как новый jar с тем же .classpath, что и у исходного jar'а.
Тебе надо импортировать не jar а проект. В jar есть исходный код и файлы проект Эклипс - тебея надо для начала распаковать эту всю фигню и добиться чтобы проект компилировался (там надо будет какие-то библиотеки добавить). Потому уже в этот проект добавляешь свой класс и собираешь jar-ку.
На картинке ты?
ОК, пасибки, буду дальше ковырять.
Я написал такую залупу, которая выдаёт мне принтеры в моей сети и аттрибуты поддерживаемых флэворов:
https://pastebin.com/My6XvX5s
Я не понимаю, что значит "Rep Classname: [B". Это байтстрим, как вывести полное название?
Конечная цель: пичатать инфу из БД на принтере brother ql-820nwb и Zebra.
Ещё, принтер джава неспособна отсылать на принтр простой текст? Видны только маймы типа: image/gif, image/jpeg, png и application/octet-stream. Как отправить обычный текст, только сделав картинку?
Так и сделал:
Исходный jar распаковал, импортировал как проект в Eclipse, добавил один класс, экспортировал jar.
При экспорте поставил галку "Export class files with compile errors". В итоге не работает нифига.
На скриншоте build path проекта.
Почему исходный jar на сервере работает, а новый нет?
Работаю над небольшим личным проектиком и столкнулся с проблемой сбора жарки. Использую идею в качестве ИДЕ и в ней собирается, запускается, работает все нормально. А при попытке запуска жарки она выдает ошибку, что не хватает Bean в конфигах для интерфейса который наследует JPARepository. Может кто сталкивался с таким и знает что гуглить или уже само решение. Жарку собираю через иде, через Build Artifacts. Пробовал добавлять Bean в конфиг, но он тогда требует реализации методов JPARepository и я хуй знает будет ли оно доставать нормальную реализацию или пустую из конфига. За любую помощь спасибо.
А вот в эклипсе таких проблем нет, и вообще он лучше. Работала бы там тёмная тема нормально не использовал бы эту идею обосанную
Как прокачать знания в базах данных? Все эти уровни изоляции транзакций, написание сложных SQL запросов, тюнинг SQL запросов, индексы и как их правильно создавать, администрирование и тюнинг СУБД.
откажись от хибернейта и напиши какую-нибудь многопользовательскую игру с основе постгре
Не юзаешь мавен - значит ты пидор
наследование - плохо
Обычно без дженериков обходимся, почти всегда хватает интерфейсов и Object.
А кастить плохо, типобезопасность идёт нахуй. Делается это обычно от нехватки времени на рефакторинг, либо тупо не хочется лезть в код, который страшно сломать.
делается это от веры в ооп и что всё можно выразить через объекты реального мира и наследование
Че вы там пишете что получается класс на 30 дженериков?
Наследования-то и нету почти. Обычно приходится интерфейсы кастить. И никакое агрегирование тут не поможет, ибо нужны только данные, а не методы с логикой, которые выносятся в сервисы.
Дженерик это узконаправленный инструмент для обобщенного кода
Там где нужен обобщенный код там и дженерики. У меня в текущем проекте это например классы используемые в цепочке обработки различных документов, имеющих общий интерфейс.
Где такой код не нужен там их нет.
Твой вопрос как минимум странный.
сраный эклипс!
Насколько я понял, надпись unbound означает, что у тебя нет jar (вернее они не найдены) в этой библиотеке. Попробуй или поискать их в интернетах или взять IBM Rational Application Developer for WebSphere там они по идее уже должны идти в комплекте.
Он и в зеркало так же смотрит.
Лол, охуеть ты высрал.
Допустим, есть интерфейс Animal, у него есть реализации Cat и Dog. Далее, какой-нибудь метод принимает Animal, а какой-нибудь другой метод передаёт ему конкретный объект Cat или Dog. Первый метод должен по-разному работать в зависимости от конкретного типа.
Понятно, что интерфейсы создавались не для этого, и что здесь подошёл бы какой-нибудь паттерн типа стратегии, но ведь куда проще наговнокодить цепочку instanceof-ов и забить.
>Первый метод должен по-разному работать в зависимости от конкретного типа.
static void handleAnimal(Animal animal, int animalType)
Им в 1.4 дан кастинг из Object и instanceof, не хочу, хочу жрать жава 5.0 с дженериками.
Что такое? Это джаверы ?! Пидоры, блядь. Говно жрут.
Ничем не лучше. Вместо цепочки instanceof будет свич по списку типов (это скорее будет enum, а не int). И всё равно придётся править код в нескольких местах вместо одного.
По-взрослому это делается через несколько экземпляров приложения и балансировщик перед ними
>Не понял.
Есть два (или больше) томката и есть перед ними, например, nginx, который проксирует на них запросы. Переключаешь nginx на один томкат, в это время обновляешь второй.
Теперь понял, спасибо.
Накатил миграцию на базы, переключил томкаты. Пользователи понасоздавали новых данных и запороли какую-нибудь хертушку. Тут же подрывается менеджер и кричит чтобы все возвращали взад! Но не тут-то было - миграцию накатили, пользователи уже понасоздавали говнеца в базе и простой откат просто запорет запуск приложения, т.к. поля объектов уже не мапятся на таблицы.
В большинстве случаев ничего не мешает делать миграции базы так, чтобы не ломать старую версию и иметь возможность быстро откатиться. Грубо говоря, достаточно не удалять сразу старые колонки и таблицы, даже если они как бы не нужны в новой версии.
Привет всем, есть система в спринге, нужно чтобы эта система при запросе создавала дополнительный процесс/субпроцесс и продолжала работать дальше, не ожидая ответа/завершения процесса. При этом нужно чтобы данные об этом процессе (прогресс и тд) записывались в БД.
Существует ли какая нибудь библиотека для таких вещей? Смотрел в сторону Flowable и Activiti, но неуверен если это то, что мне нужно. В целом не ебу в какую сторону копать
Че делать
Эх ты
Хз. Ну, есть Spring Initializr. Я читал про архетипы, когда изучал мавен, но больше нигде никогда про них не слышал.
Да и редко есть необходимость быстро создавать проект, их один раз только создают, а затем долго пишут.
Ну делай, раз надо.
jdbcTemplate.update("UPDATE table SET field = 'value' where id = id")
Как параметры вставлять - нагуглишь
ой я на флудил,safari ебучее
анон огромное спасибо; понял в чем ошибка была, я там где value ставил двойные ковычки
одинарные ковычки это синтаксис sql чи шо?
да, это sql
а преимущества у него какие? а то использовал его поверхностно, не вкусил всех прелестей, а с гибернейтом одно гавно...
>если его все равно jvm перепиливает в процессорные инструкции
Жвм то разные могут быть. И процессоры. И ос.
А байткод один.
а где сам запрос?
Сложно было заскриншотить с номерами строк?
Падает на первом обращении к резалт сету - первый вызов getString(). Курсор в резалт сете не передвинут на первую позицию. Обычно делают if (rs.next()) или while (rs.next()).
Например кокомпиляция в байткод позволяет проводить оптимизации, инлайны там, реордеринг, заменять какой-либо код интринсиками и тд.
Ну ты поидее должен знать, что в резалт сете есть некий вируальный курсор, указывающий на записи. В твоем случае как на скрине без единово вызова next или другого метода позиционирования курсора rs.isBeforeFirst() вернет true.
Байт-код, в теории, работает быстрее интерпретации - парсить меньше, исполнять легче. Но в реальности это не всегда так, джава вот иногда медленнее ноды. И всё же есть куча интерпретируемых языков, намного медленнее джавы, тот же питон.
>в реальности
Всем похуй на скорость, важна только скорость, с которой ты ебашишь круды. Она должна быть быстрее чем у конкурента.
пушка; все работает как надо, ОГРОМНОЕ СПАСИБО
Некоторые зачем-то пытаются юзать жабу не по назначению, берут её вместо крестов и потом говорят, что она слишком медленная.
тогда гугли sumatra
Добавил пхп.
>Ну ты поидее должен знать, что в резалт сете есть некий вируальный курсор
С чего бы? В моем контракте это не указано.
Что, совсем хуёво? Я так понимаю, мне предстоит копаться в хуйне, которая старше, чем мой дед? Плюс в целом информации не особо много, сплошной кровавый энтерпрайз с весьма специфическими вещами.
> Перекатиться с охуенных крестов на джаву
Это называется скатиться. Я вот кресты недоосилил и вкатился в жабу.
Но да неважно. Именно EE (сервлеты, jsp, ejb, jms, jax-rs) в далёкой перспективе так себе, новое в основном на спринге пишут. Но перекатиться с одного на другое несложно. Джава вполне востребована, скучновато, правда, но без работы не останешься.
Перестанешь бороться с языком - ну там всякие UB и забытый деструктор.
И начнешь бороться со всякими дикими бизнес требованиями сделайте кнопку синей, если поле А равно тому-то, а поле ХУЙ не заданно или равно значению поля ПИЗДА и багами фреймворков.
А зачем закрывать не крестиком?
Если это не написать то при закрытии окна программа остается запущенной. Ее не видно (нет больше окон) и никак ее не закроешь если в процессах не убить.
Спасибо трипл
Специалист по телеграм ботам на связи. Опишите вашу проблему. Держу ферму ботов и собственную жаба библиотеку (потому что могу себе позволить).
Напиши вывод файлов в папке сортированных по формату или алфавиту.
Делай круд. Типичный интернет-магазин.
Да
А, я понял. Надо еще функцию RbTree -> RbTree добавить
Ни разу не видел эту хуйню.
))))))))
Иннер нестатик классы нужны чтобы обращаться к полям внешнего класса. Нет обращений к полям внешнего класса значит внутренний класс может быть беспроблемно превращен в статик.
ладно
Как вариант, выделить общие сущности, утилиты и т.п. в отдельный проект-библиотеку, сделать мавен репозиторий, разместить библиотеку в репозиторий, подключить артефакт через помник в нужные микросервисы
Помоги разобраться с сертификатами.
Делаю post-запрос из веб-сервиса и получаю ошибку:
[10.04.20 17:13:02:010 GMT+05:00] 00000100 com.ibm.ws.ssl.core.WSX509TrustManager E CWPKI0823E: Ошибка согласования SSL: подписант с SubjectDN [CN=xxx, OU=xxx, OU=xxx, O=IBM, C=US] был отправлен с хоста [xxx:9443]. Может потребоваться добавление подписанта в локальное хранилище доверенных сертификатов [C:/Users/user/WASLiberty/usr/servers/mytestserver/resources/security/key.p12], расположенное в псевдониме конфигурации SSL [defaultSSLConfig].
Сижу уже три часа - хуй пойми как этот сертификат добавить в это хранилище.
Экспортировал сертификат из браузера - дает экспортировать только в формате p7b, чтобы его преобразовать в p12 нужны ключи какие-то.
Как достать ключ этот?
охуенная постановка вопроса, с такими вопросами советую пойтись в гугл
Сделали из няшного кобола какой-то котлин.
Заводить JEP и написать, чтобы сломали обратную совместимость с легаси жавой 14.
Я нашёл рабочий кусок кода, который подправил. Печатаю лэйблы на принтере Brother QL-820NWB с ленточным питанием, но они не печатаются если указываю длину этикетки меньше 15 см:
Line 26: double height = fromCMToPPI(15);
Если меньше(line 14), принтер говорит, что выбран/указан не тот тип медиа. В настройках принтера указываю длину хоть 15 мм хоть 280 - всёравно только больше 15ти печатает. В некоторых случаях печатает на этикетке длиной указаной в настройках принтера(хоть 40мм, хоть 50), но я не смог отследить в каких. Хотя, это не важно т.к. надо что бы из джавы указывало длину. Может быть из джавы можно изменять настройки принтера и указывать там длину этикетки?
https://pastebin.com/72XfeDLC
Тебе следовало указать сертификат этого сервиса выдан ли партнерами одного из корневых CA или речь о самоподписанном сертификате? Проверить легко: в браузере открываешь и если зеленый замочек то первое, если класная хуйня то второе. Соответственно и пути решения разные. Если первое, то тебе повезло, просто апдейт JRE сделай, т.к. в файле jre/lib/security/cacerts отсутствует нужный корневой сертификат. Если JRE < 2017, то такое очень вероятно, т.к. в 2018 у комодо и геотраст появились новые сертификаты. Проверить, есть ли корневой CA в хранилище помогает тулза jre/bin/keytool, точную команду не помню, но эта утилита решает вообще все вопросы с этими серификатами. И вот если сертификат самоподписанный, необходимо ее использовать чтобы добавить этот сертификат к себе в хранилище. В свое время я очень хорошо разобрался в вопросе, знал команды и даже написал консользую хуйню для определения корректности сертификатов удаленно, по урлу. Так что ты просто плохо гуглил.
В ООН.
Начать с основ спринга, а дальше само пойдёт.
Окей.
Суть такова: у меня есть объекты, которые будут сохраняться в базе (хибернейтом), у них есть поле ID. Допустим, я создаю объект в приложении, даю ему какой-то ID (для этого использую статическое поле Atomic Integer, которое инкрементится каждый раз). ID уникальны, всё хорошо.
Потом мне нужно этот объект сохранить в базу. Для этого помечаю поле ID аннотацией @Id.
А потом я перезапускаю приложение, и мой AtomicInteger (последний ID) идёт на хуй. То есть, обнуляется. Получается, что нужно либо сохранять куда-то текущее значение и поднимать его на старте, либо держать в базе агрегатную функцию или как-то иначе дёргать базу для получения каждого нового ID.
В-общем, какие-то решения приходят в голову, но явно есть best practice на эту тему.
чиво
Сериализация.
Текущее значение никуда сохранять не надо т.к. оно уже есть - это id последней записи. Просто подгружаешь его при инициализации SELECT max(id)+1 FROM table. Но это ручной метод. Есть же аннотация @GeneratedValue и стратегии к ней, а еще можно собственный генератор имплементировать интерфейсом IdentifierGenerator.
Чем банальный автоинкремент не устраивает? При инсёрте БД сама подставит нужное значение.
Или ID нужен на уровне логики?
Хуйню несешь. Id тебе должна генерировать база. Делаешь Entity e = repository.save(e) и id записывается в объект.
Значит так. 3 этапа.
1.
Пишешь крад сервлетами. Авторизацию/аутентификацию/ фильтрами. Без жпа. Только сессии, только конекшн, только нативный скл. Минимальные стили . Пушишь в репу.
Важно понимать, как это работает на низком уровне. Только jsp эта вот хуииа тебе ещё понадобится в жизни. Обязательно миграции бд - самое лёгкое - флайвей. Реализовать минимальные релейшены между таблицами.
2. Крад на том же спринг буте, но уже с жпа, нормальными стилями, с бутстрапом, с нормальной спринг секьюой. Таймлиф или фримаркер. Миграция - ликвбейс. Реализовать все виды релейшенов между таблицами.
3. Фул рест крады, с джаваскриптом и норм стилями. С рассылкой почты, с рекапчами, с полным логированием, миграция на выбор.
1) выведи список товаров в таблице с его ценой в доларах, каждая товар привязан к определенной группе (овощи, фрукты)
2) товары можно редактировать, добавлять и удалять
3) сверху сайта делаешь 2 кнопки, 1 меняет язык интерфейса, 2 валюту в таблице
4) сделать агрегацию данных в таблице, группировку по группе, сортировку и хуйню с фильтрацией по цене.
5) по клику на товар отображаешь координату на карте гугла и рисуешь кастомную точку на карте, это должно работать в 2 стороны
6) всю эту хуйню(Данные) отображаешь в hightchart, в идеале если нарисуешь сам на d3.js
7) в footer рисуешь кота, по клику на которого выскакивает бочка и переворачивается, HR сразу ахуеет
Что у тебя в резюме? Гит зелёный? Сколько пед проектов? Пили стори про собесы и отклики!
>Что у тебя в резюме
Корзина без опыта. Вышка есть.
>Гит зелёный
Не особо.
>Пили стори про собесы и отклики
Для этого есть другие треды >>1640071 →
Может запилю когда-нибудь фулл-стори, но зачем? Всем похуй же. Ты в интернетах миллион подобных историй найдёшь.
>>656099
>>656100
Спасибо, вот это мне и нужно было. Получается, в конструкторе можно любую хуйню вместо ID подставлять:
User newUser = new User(12345, "Петя");
... а правильный ID потом запишет база/хибернейт?
> Или ID нужен на уровне логики?
Задумался, нужен ли он мне кроме как для работы с базой. Наверное, нет. В веб-приложении все новые объекты должны сохраняться в базу. А я просто на десктопном проекте работаю, там всё по-другому.
>в конструкторе
Ты вообще не должен конструктор при создании сущностей использовать. Все через сериализацию через ObjectMapper.
Спасибо большое, все так и сделаю. Ничего не понял, правда, ну буду гуглить.
>Получается, в конструкторе можно любую хуйню вместо ID подставлять
Не надо хуйню, не заполняешь просто, оставляешь null
Того.
Тебе все данные приходят по ресту в виде json. Ты их преобразуешь в объекты. Или что не так?
Нахуя? Чтобы руками конвертировать входящие данные в DTO вместо того, чтобы это делал спринг? А профит какой? И всё равно это бесполезно - структура DTO и сущностей почти никогда не совпадает.
Сайт-визитка не на пхп.
Мамку ебал?
Рады будем видеть снова, когда накушаешься второго питона в легаси.
Вот у меня вопрос, что можно делать подобного на Джаве в свободное время, чтобы с одной стороны и себя занять, и общество поддержать?
На бартер с гречкой и масками
-понимаю как работают аннотации.
-принципы mvc
- как добавлять новые зависимости через pom.xml
- знаю для чего нужны контроллеры и сервисы, как их писать, какие аннотации добавлять и т.д.
-Как брать данные из http запроса и его тела
- как связать два класса с помощью @AutoWired
- как подключить Базу Данных и работать с нею с помощью интерфейса CrudRepository
Куда двигаться дальше? Что я упустил? Как углубить свои знания? Что ещё обязательно нужно знать для вката?
Направь меня Анонче
теперь нужно спрингдату изучить, спринг секурити, ангуляр и как дружить его с спринг секурити и всякое такое. чуваки со знанием только жабы не нужны или скилы и опыт должны быть на охуительном уровне.
Сделал конструктор без id. Успех. Сущности сохраняются, id подставляется.
Но меня смутил тот момент, что id это маленький int, а не Integer (и не может быть null). Провёл небольшой эксперимент, выяснилось, что hibernate нормально съедает объекты со значением id по умолчанию, которое равно 0. Вручную подставленный 0 в конструкторе тоже работает, а вот всё остальное (-1, 1, 10 пробовал) порождает ошибку detached entity passed to persist. Так-то.
Spring Data, Spring Security
React/Angular и вся хуйня что с ними в пачку идет (redux, material ui, typescript)
Pub/Sub
+ немного девопса непомешает (AWS/Google Cloud, Kubernetes, Terraform).
Нужно сделать POST-запрос с параметрами пикрелейтед.
Делаю через HttpURLConnection - получаю статус 400 Bad request.
Через swagger и soapUi работает без проблем.
ЧЯДНТ?
Попробуй включить дебаг https://www.rgagnon.com/javadetails/java-debug-HttpURLConnection-problem.html
И сравни с тем, что передается через swagger или soapUi
А нехуй писать json в строке.
> 2D
Скучно. Для любого языка каждый день появляются десятки новых либ для 2D-графики. 3D, конечно, сложнее, но почему либ для неё единицы, и ни одна из них не
> simple and lightweight
, а все задротские?
https://www.cnews.ru/news/top/2020-04-13_ibm_hochet_vozrodit_mertvyj
Может и джаву когда-нибудь раскопают...
В 1 варианте функция рисования так же возвращает наведена ли мышь на кнопку.
Во 2 варианте эти функции разделены, но приходится отдельно создавать экземпляр или как это называется класса.
Какой вариант лучше, помогите пожалуйста.
Вот когда за ООП и Java Core пояснить сможешь, можешь приступать
Типичный java-девелопер из 2040 года
https://github.com/Elco-/NaturalSelec... вот ссылка откуда скачал
Ну вот например есть логгер в джарнике "A.jar", как при подключение в свой проект он мне скажет (или не скажет), что ему нужен логгер для работы?
Или у него логгер будет уже внутри в своем каком-то classpath?
Как это организуется вообще?
Установи JDK. Версия здесь, думаю, не важна, так что можно взять последнюю. Добавь в PATH, чтобы в командной строке команды java и javac выполнялись.
Дальше скопируй папку img в папку src. В этой папке запусти из командной строки
> javac Bacterium.java Food.java Form.java Main.java
Это скомпилирует исходники, получится набор class-файлов.
Дальше пиши
> java Main
И всё запустится.
>как при подключение в свой проект он мне скажет (или не скажет), что ему нужен логгер для работы?
В репе рядом с сами джарником будет лежать pom.xml, где указаны его зависимости
Во-первых у тебя первый способ не рисует кнопку а второй рисует
Во-вторых гугли Fluent Api, можно все в одну строку засунуть если хочется
В-третьих isClicked срабатывает один раз сразу после создания кнопки, тебе нужна работа с событиями, если хочешь обработчик кнопки написать.
Допустим ,но как это вообще можно устроить?Я вертелся вокруг этого компаратора,но ничего не смогу сделать
а как выглядит параметр то? Вынесен в какойто интерфейс или просто поле с одним и тем же именем?
>>658985
>>658987
Как уже озвучил товарищ выше, основная "проблема" тут это получение "общего параметра". Если два разных типа можно привести к одному, например параметр вынести в интерфейс, то проблем нет (test31), если же два типа никак не связаны, то твое решение будет с ручными кастами (test32), а это плохо, это признак code smell.
Ну сразу было понятно что тут какие-то архитектурные проблемы. В принципе если нужное поле называется одинаково и имеет одинаковый тип, то можно вместо кастов доставать его по имени поля через рефлекшн апи, но это тоже какая-то кодовая проктология
Градл - это сахарок для мавена, как котлин для жабы.
ломбок тебе в помощь
Про это я понял,нужно еще массив из всех значений общего параметра создавать?И как с строками тут работать,если это общий параметр?
Да
>И как с строками тут работать
str1.compareTo(str2)
>нужно еще массив из всех значений общего параметра создавать?
Для чего? Ты же объекты с параметром сортируешь, а не сами параметры.
Добро пожаловать в джаву.
Вот этого я уже не вывожу и впринципе уже ничего практически ,солнышко,ты можешь мне помочь задачу решить?Мне осталось только в алфавитном порядке отсортировать и вывести
Суть такая,Array Лист из 2 классов,у обоих классов есть общий параметр(строка),так вот уже обьедененный массив нужно вывести в алфавитном порядке(т.е. по параметру),помоги,пожалуйста,у меня дедлайн скоро
У тебя List<Object> чтоли? Общего родителя/интерфейса нету? Тогда будет что-то типа такого
list.sort(Comparators.comparing(a -> {
if (a instance of A){
return ((A) a).getStringFromA();
} else if (a instance of B){
return ((B) a).getStringFromB();
}
throw new RuntimeException();
}))
>>659021
"instance" моя Идея ваще не распознает
Попробуй сюда как нить вписать в самом первом методе,если можешь ,пожалуйста
Чел,прошу не думай что это наглость,я просто отчаился уже и мне срочно нужна спасительная рука
https://pastebin.com/fmFiqKtY
Тебе-то что, если это небольшая утилитка для личного пользования? Её хоть на жабе, хоть на коболе пиши, никому от этого ни холодно ни жарко.
потому что instanceof слитно, опечатался.
Еще можно использовать A.class.isAssignableFrom(a)
В твоем случае явно проблемы с дизайном классов, все поля было бы логично собрать в одном классе.
Можешь показать как изначально выглядело задание
Первый-предок двух вторых ,и у него есть 3 параметра :Возраст,Имя,Фамилия
У второго их 3(+предка) :Номер школы,и массив под оценки,другой под участие в олимпиадах
У студента же их (+предка) :средняя оценка,и массив под оценки за курсовые.
В этом чертовом методе уже была проведена проверка на грант(строки с if)
>>659199
"Реализовать и напечатать общий массив школьников и студентов,которые должны получить грант,отсортировав его по фамилиям"
как я понимаю, от тебя хотели примерно такого
https://pastebin.com/pNTLwi9b
все методы естественно не расписывал
Огромное спасибо,нужно побольше про интерфейсы почитать,и кажется о нормальном дизайне классов задуматься
Можешь пояснить 47 строку?Она вносит всех с грантов в новый массив,да?
Модель - это не только данные, но и логика. Здесь кроме корабликов будут ещё и правила игры, проверки и прочее.
Вью - то как данные видит пользователь, то есть формочка с квадратиками либо консольный интерфейс.
Контроллер - прослойка между моделями и вью, например, при нажатии на кнопки на форме дёргается специальная функция, которая запускает логику и возвращает данные, эта функция контроллер и есть.
Вот только mvc не особо тебе поможет в разработке игр, это всего лишь концепция разделения кода проекта на 3 логических части.
спасибо зайка
если у тебя лист интов List<Integer> list = new ArrayList();
то будет примерно так
list.sort((a,b) -> Integer.compare(a,b))
Я бы сказал что зашафли цифры, затем раздели надвое и половину отсортируй по возрастанию, половину по убыванию, потом склей обратно. Но это всеравно выглядит как дичь, как задача поставлена?
Если посмотришт интерфейс компаратора то увидишь метод
int compare(T o1, T o2)
Компаратор всегда сравнивает 2 объекта, возвращает 1 если первый больше второго, 0 если равны, -1 если первый меньше второго.
В случае инта я написал
sort((a,b) -> Integer.compare(a,b))
функция sort принимает на вход компаратор, но поскольку интерфейс Comparator помечен как @FunctionalInterface - я могу заменить его на лямбда-выражение
(a,b) -> Integer.compare(a,b)
котрое эквивалентно компаратору с методом
int compare(Integer a, Integer b){
return Integer.compare(a.b);
}
@Data
Ничего не понятно,но спасибо! Пойду изучать.
Конечно, сколько раз я открывал ютуб и попадал в обьятия индуса с милым акцентом, подробно объясняющего все тонкости проблемы. Кстати какой долбоеб придумал пикрил и почему остальные считают это нормой?
А ты и не должен с объектами как с примитивами работать. Все верно же проверяет - в первом случае объект один, во втором - разные, что не так? Раз такой умный, сможешь сам открыть сурс и посмотреть @author.
Оптимизация времен царя гороха. Integer - класс-обертка над примитивным типом, объекты через == сравниваются по инстантсу, но для интов придумали впихнуть кеш, который по умолчанию инициализируется кажется 128 значениями (не помню, есть ли там еще отрицательные значения или нет). Соотвтетственно когда ты используешь число до 128 оно не создает новый объект а достается из кеша в отличие от чисел больше 128. Кажется, если порыться то можно даже найти флаг жвм который определяет сколько интов туда запихивать.
С этой проблемой справился легко (удивительно, но достаточно загуглить), просто я представляю сколько еще подобного спрятано в этом чудесном языке
некоторые языки не обременяют себя обратной совместимостью. В чем смысл делать вот так?
У жавы все более-менее с совместимостью пока используется публичное апи. Проблемы как правило возникают из-за какой-нибудь рефлекшн проктологии или использования Unsafe
Нюансы есть в любом языке. Я переодически забываю что в пхп и луа другой оператор конкатенации и неистово плюсую, пока не доходит до компиляции (раз в полгода требуется в эти языки втыкать). А если на js пойти, там строки можно через == сравнивать и никакого equals(), кто бы мог подумать. А еще недавно криптографию в js делал и узнал что их Number поддерживает всего 52 бита в целочисленных, и банально long туда не запишешь, нужна библиотека (или новый тип там придумали в новой спеке).
>>659467
А тут-то что не так? Достаешь из одного списка, достаешь из другого.
Потому что это список а не массив.
int[][] arr = new int[10][20];
arr[0][0] = 123;
А ты точно программист со стажем?
Я понимаю, что это список, но к примеру в vector C++ можно спокойно обращаться через скобочки и нет необходимости нагромождать кучу методов
Придумал Гослинг, ну тут надо понимать, что там все постепенно эволюционировало. Вначале разделение на типы, потом автобоксинг с неумелыми попытками оптимизации, потом еще дженерики на уровне компилятора.
Конкретно по этому коду Шипилёв уже показывал что этот кэш местами бъет по производительсности, но ничего сделать нельзя он уже в JLS.
Есть такой трюк -Djava.lang.Integer.IntegerCache.high=2000 можно удивить индуса там кстати нет ограничения сверху, можно затормозить старт программы и отожрать 4 гига в никуда.
мне вопросы нельзя задавать? Или я как ты должен сидеть и бояться показаться тупым
Потому что пиши на груви.
Задавай вопросы по действительно спорным вещам. По рекордам или по чекед эксепшенам. А не "почему объект != примитив".
Чтобы сложнее было выстрелить себе в ногу. Поэтому и прямой работы с памятью нет.
Ну и зря.
Скорее чтобы не переусложнять язык, чтобы побольше людей могло осилить. Наверное, когда жабу создавали, на фоне крестов, перла и бейсика она казался нынешним питоном.
C другой стороны это можно реализовать компилятором, так что обратная совместимость не пострадает.
У меня есть некий рест, который должен отдавать только изменения в базе данных по запросу пользователя. Что то вроде long pooling или вебхуков.
Мне кажется что я делаю велосипеды, когда навешиваю на бд триггеры или каждую минуту отправляю селекты.
Для этого существует ORM или это как-то по-другому проще можно сделать? Типа контроля версий бд?
Можно же настроить лог запросов в базе, или это не то что тебе нужно? Можешь пример ожидаемого поведения описать?
Ебать, я в котлин.
Ага. Здорово, правда?
Cheked exceptions делаются на уровне компилятора, в байткоде таких проверок нет, поэтому:
1. В Котлине/Груви - нет checked exceptions
2. В Яве их можно легко отключить слегка поправив компилятор. При этом полностью сохранится обратная совместимость.
Где легкость то? Ты по 10 раз на дню форкаешь javac под свои хотелки, а потом поддерживаешь?
1)Spring в помощь, по нему много гайдов и официальной документации.
2)Или вдариться в более чистый и старый вариант через сервлеты и JSP. Но лично для меня он неприятнее.
>В 1 варианте функция рисования так же возвращает наведена ли мышь на кнопку.
Рисует. Кнопка у меня то работает хорошо, мне именно интересует какой вариант из предложенных лучше.
А что плохого
Очень сильно мертвы, прям совсем
Да меньше 127 нельзя, хотя зачем фиг знает.
Понял.
Настолько, что даже флеш живее, а он мёртв.
Сейчас тебе скажут, что наследование устарело.
Приводить тип потомка к предку не нужно в лучших традициях полиморфизма. Наоборот - нужно, но если пришлось, то лучше переписать по-другому.
Профитность, в теории, в том, что ты, используя интерфейс или базовый класс, абстрагируешься от деталей реализации, и потом легко можно заменить одну реализацию на другую. Но на практике реализаций больше одной бывает далеко не всегда, и только в тех случаях, когда их всё же много, можно это использовать. Например - много разных драйвером для баз данных, но интерфейс DataSource у них общий, и можно писать многие методы без привязки к конкретной СУБД.
Сяп, вроде чутка прояснилось
Собственно посмотрел вакансии на хх по крестам - в большей части из них требуют знание Qt, mfc - в общем разработка под десктопики. Остальная часть это какие-то йоба проекты с компьютерным зрением и дата саенсом, нужно знать матан, тервер, матстат - в общем сложно для меня, у нас в шараге математику так себе преподают.
Решил задуматься над тем, чтобы стать джава рабом, платят больше, проекты вроде бы интереснее (по крайней мере нет умирающих десктопиков). Как вам план? Нахожусь сейчас в ДС если что.
>проекты вроде бы интереснее
спорное утверждение, процентов 80 жавы - унылый ентерпрайз со всякой лапшеобразной бизнес-логикой. А там уж от твоих личных предпочтений зависит понравится тебе или нет.
В целом жава нормальный язык чтобы на еду себе зарабатывать - есть куча вакансий жавистов на рынке и вполне понятный роадмап для вкатывальщика
>В целом жава нормальный язык чтобы на еду себе зарабатывать - есть куча вакансий жавистов на рынке и вполне понятный роадмап для вкатывальщика
Ну вот это меня и привлекает. Сейчас смотрю хх по плюсам в дс - вакансии естественно есть (хоть их и в 2.5 раза меньше чем по джаве), но непонятно как развиваться. Где-то нужно знать сетевой стек, WinAPI и делфи. Где-то нужно жоско уметь в байтоебство под линукс и алгоритмы (это в HFT). Сами зп явно меньше чем у джавистов в среднем. Так-то я умом не сильно одарен, чтобы заниматься крутым ресерчем или просто разработкой в йоба компаниях типа яндекса или хуавея, к сожалению.
А собственно какой на данный момент есть роадмап для вкатывальщика? Нашел в шапке диаграмму со стрелочками, но там как-то много всего и сразу
да в общемто для джуна достаточно нормально разбираться в core жаве (ооп, базовые типы, коллекциии, базовая теория по многопоточке), немного бд (знать как из приложения подключаться и мочь в простейшие crud операции), немного спринга (понимать что такое IoC, DI и мочь в какое-нибудь простенькое mvc приложение), если к этому еще и про паттерны будешь знать то хорошо.
Тут в принципе не так много знаний требуется, главное хоть както уметь их применять. Хорошо если найдешь какого-нибудь жависта который сможет тебя поменторить во время обучения.
Задрочи полностью Java Core, научись писать ООП код. Скорее всего, надо будет еще и со Spring ознакомиться. Но мне хватило только Java core и основ Sql, html, css для устройства джуном. Задрочил с нуля за 3 месяца
Проекты тут говно, особенно если как ты написал, ты не сильно умом одарен. В лучшем случае будешь писать очередную ентерпрайз систему с респ апи и микросервисами, ни о каких алгоритмах и ресерчах там речи нет и не будет. Будешь перелопатывать тонны документации специфичной для конкретной области, и переносить ето в код. Так што пока молодой, лучше задрочи как можно сильнее алгоритмы и компьютер сайенс, чтобы тебя взяли в НОРМАЛЬНУЮ контору. Но платят енивей хорошо, я недоучка из первой категории, $190k/год, но всегда жалею что недостаточно изучал алгоритмы или какой нибудь машин лернинг чтобы попасть в нормальные проекты.
>лучше задрочи как можно сильнее алгоритмы и компьютер сайенс
Легко сказать задрочи. Я бы может быть и вкатился в машин лернинг и прочие вещи, но там где нужен ресерч, нужна и сильная математика. А сам я не особо в ней силен, да и к тому же в вузе она у меня очень слабая - рассказывают только самое основное. До уровня топовых вузов типа мфти очень далеко.
Топтал, удаленка. Заблуждение, что таких зарплат нет, я пока не вкатился тоже думал так. Первый раз вкатился на $50/h, потом пока молодой был брал сразу два проекта по $50/h и задрачивал по 80 часов в неделю, ведь комьютить не надо, и вот тебе сразу $200K в год. Сейчас правда ленивый стал и уже так делать не буду (30 лвл).
>Проекты тут говно, особенно если как ты написал, ты не сильно умом одарен
Так в том-то и дело, что раз он умом не сильно одарен, то какой ему ресерч и разные крутые проекты которые кстати где? в 1.5 конторах в рф?, на которые кстати очень часто требуют MSc и PhD в области математики или cs.
Тут дело в том, на каких технологиях будет не так мерзко заниматься софтвер инжинирингом - на джаве с ее неплохой экосистемой, инструментами и большим количеством вакансий, или на крестах, с которыми уже все далеко не так однозначно?
>что раз он умом не сильно одарен,
Ну может это и плюс, что он не считает себя умным. Я вообще ему говорю с перспективы того что может быть через 10 лет. Я вот жалею, что не послушал когда мне говорили лет в 20 не иди на работу и не забрасывай универ, но тогда интересовали тяночки и клубы. В итоге закончил с 2.2 средним лол. Какой там MSc и PhD после этого, сейчас конечно очень жаль что был таким долбоебом.
>Что вообще за проекты у жава-фрилансеров?
Из последних:
1) сорт оф клон слака с небольшими переделками под конкретную область
2) медицинский софт типа обработка XRAY-сканов
3) всякие интеграции с платежными системами - таких много последнее время чому-то
4) SaaS обработка видео (типа юзер загружает видео и с ним надо че-то сделать)
Ну тоесть это вполне себе взрослый ентерпрайз с командами разработчиков и длинными контрактами?
Ну так, обычно 3-10 разработчиков, чтобы было больше че-то не припомню. Бывает есть продукт овнер или типа скрам-мастера, но это редкость. Где-то 70% компаний делают спринты и регулярные коллы почти каждый день, а остальным вообще похуй чем ты там занимаешься, обычно это крупные компании типа говернмент сектора. Контракты длинные, меньше года не помню чтобы было, и то потом я сам уходил.
Но я обычный девелопер, а так там есть и супер крутые ребята, и даже суб контракты от гугла, наверное мне говно скидывают лол.
Какие там требования чтобы зайти на рейт 50+$/h ? Ниже мне не интересно, потому что нету достаточного стимула отказаться от ненапряжного посиживания в офисе.
Если ты первокурсник то ебаш java core, sql, ну и фронта чуток, ближе к осени смотри нынче банки набирают постоянно стажеров, пойдешь на стажировку поймешь что к чему. После стажировки уже будешь иметь какой никакой опыт и главное поймешь нравится/нужно ли тебе все это
мимо-ушел-на-стажировку-после-второго-курса
Я с хибернейтом уже пару лет не связывался, тык что могу ошибаться. Но кажется что если если указать InheritanceType.SINGLE_TABLE вместо использования отдельных таблиц, то все должно работать
Увы, для меня не вариант. Препод приказал все 4 стратегии пилить. Остальные у меня нормально замаппились.
В чем именно проблема, что ты хочешь и что не работает? И, кстати, за FetchType.EAGER надо бить.
Ну в теории можно было бы использовать один sequence генератор на две таблицы, а затем джоинить с их юнионом, но я хз умеет ли так хибернейт. Кажется что это не тот кейс где стоит использовать table_per_class, ты уверен что тебе именно сюда его нужно натянуть?
>2.11.2 Mapped Superclasses .... A mapped superclass, unlike an entity, is not queryable and must not be passed as an argument to EntityManager or Query operations. Persistent relationships defined by a mapped superclass must be unidirectional. ....
https://stackoverflow.com/questions/6853802/jpa-table-per-class-problems-with-manytoone
переделывай
>>660269
При стратегии JoinedTable у меня все красиво. releases заправляет всем.
А в MappedSuperclass, получается, что таблицы covers, release_genre и concert_track должны дублироваться для каждого наследника. Хайбернет так далеко не думает и не создает их.
>>660276
Получается, что это невозможно сделать в такой стратегии?
MappedSuperclass не для этого вообще, он не про взаимоотношения альбомов с релизами. Это такой способ вынести в один класс общие поля, которые в разных (может и не связанных) сущностях используются. Например, если ты для всех делаешь один базовый класс с полем id.
Я не очень тебя понял. В книге по JPA поля родителя дублируются в детяъ
CREDITCARD и BANKACCOUNT между собой никак не связаны на уровне реляционной модели, у них просто есть общая (одинаковая) колонка owner, которую ты на уровне кода можешь вынести в общий базовый класс. Допустим даже только ради того, чтобы не дублировать ее описание.
Так получается, что в моей объектной модели это и сделано. Общие поля в классе Release. Но как это правильно аннотировать, чтобы создались нужные таблицы?
В твоей модели для релизов нужна как раз отдельная таблица, не надо на нее натягивать MappedSuperclass
Именно в этом и был изначальный вопрос, возможно ли при такой модели реализовать MappedSuperclass
Ну например, я удаляю из таблицы запись с primary key = 5, мне бин, который слушает бд отправляет post запрос с Json {table: tablename, primary key: 5, status: deleted}
Или добавляю новую запись, мне «бин» шлёт Json {table: tablename, primary key: 5, status: added}
Или меняю запись, мне «бин» шлёт Json {table: tablename, primary key: 5, column_changed: new_value, status: changed}
Что-то типа того, только не опрашивать бд каждую %period_time, а чтобы непрерывный мониторинг был и не нагружать бд кучей запросов. И не писать велосипедов самому.
Ну это типичная задача аудита, решается версионированием сущностей или оборачиванием в логирующие прокси сервисов изменяющих данные. Не вижу ничего плохого в использовании велосипедов, из коробки это умеет хибернейт
https://vladmihalcea.com/the-best-way-to-implement-an-audit-log-using-hibernate-envers/
погугли пожалуйста
Нужно реализовать долговыполняющуюся задачу.
Как это сделать?
Когда я прошла на PHP, не было выбора. Я отправлял сообщение в очередь, откуда воркеры разгребали задачи и выполняли их.
А в джаве?
Ведь я могу просто запустить тред, и пусть он работает, и не нужно плодить отдельный сервис.
Или всё-таки плодить?
>Ведь я могу просто запустить тред, и пусть он работает
Да, можешь. Если нет необходимости думать о восстановлении после сбоев и т.п.
Безымянный пакет и пакет mypack - два разных пакета.
Если в AddInst нет package, а в MyClass package есть - они в разных пакетах и друг друга не увидит.
>они в разных пакетах и друг друга не увидит
Ну так jm и mypack - тоже два разных пакета, но друг друга видят. Ну ладно, не суть. Стало быть, мне надо поместить безпакетные библиотечные классы в пакет, не подскажешь как это сделать? Идея доступ не дает.
> два разных пакета, но друг друга видят
Безымянный пакет отличается от остальных тем, что из него ничего нельзя импортировать в другие пакеты. По крайней мере, нормального способа для этого нет. Возможно, это можно сделать через рефлексию, класслоадеров и прочую магию, но хз.
> как это сделать
Без изменения исходников - никак. А эти классы точно предполагается юзать за пределами либы? Может, они хоть в идее и отображаются, но по факту доступа к ним нет. Что документация говорит?
>Безымянный пакет отличается от остальных тем, что из него ничего нельзя импортировать в другие пакеты. По крайней мере, нормального способа для этого нет. Возможно, это можно сделать через рефлексию, класслоадеров и прочую магию, но хз.
Понял.
>А эти классы точно предполагается юзать за пределами либы? Может, они хоть в идее и отображаются, но по факту доступа к ним нет. Что документация говорит?
Это обычные классы, как "бонусная часть библиотеки", дополнительные инструменты. На официальном сайте вообще их можно только по отдельности скачать. Не понимаю, зачем так по дебильному сделали.
поясните, как для дебила, пожалуйста
Посоны, где скачать курс https://www.coursera.org/learn/object-oriented-java бесплатно без смс?
ОК, попробую перевести на человеческий, 99% что ты скачал содержимое master бранча.
Тогда там 100% должна быть какая-то система сборки, скорее всего или Maven или Gradle.
Смотришь в корне что там есть:
README.md - описание проекта, открываешь его и смотришь есть ли инструкция по сборке.
Если инструкции нет ищешь в корне pom.xml или build.gradle
Если pom.xml - ставишь Мавен и билдишь им.
Если build.gradle - ищешь gradlew.bat и билдишь им если gradlew отсутвует то ставишь грейдл сам
Дальше в target или build будет jar файл.
Понял, благодарю.
понятия не имею
Судя по упоминанию GC, он не отличает деструктор от деконструктора.
> деконструктор
> распаковка
> деструктуризация
> декомпозиция
В каждом языке решили выебнуться, называя одно и то же разными терминами? Прям как структуры, рекорды и дата-классы. Интересно, в жабе 16 тоже придумают новый термин?
Что не так?
Ссылки sb1 и sb2 указывают на один и тот же объект, соответственно, они равны. Значение одной ссылки ты заменил на null, и теперь она не равна другой.
А почему вторая ссылка указывает на тот объект, на который первоначально указывала первая ссылка?
Отображаю List через one-to-many. При этом, хайбернет создает соответствующие таблицы:
Hibernate: create table Artist (id integer not null, artist varchar(255), country varchar(255), rise integer, primary key (id))
Hibernate: create table Artist_Comment (Artist_id integer not null, comments_id integer not null)
Hibernate: create table Comment (id integer not null, comment varchar(255), primary key (id))
Но при записи полностью игнорируется Comment:
Hibernate: insert into Artist (artist, country, rise, id) values (?, ?, ?, ?)
Hibernate: insert into Artist_Comment (Artist_id, comments_id) values (?, ?)
Где я накосячил в аннотациях?
Ссылка сама по себе, можно сказать, передаётся по значению. В ссылке содержится адрес объекта, и это просто число, которое скопируется при передаче в другой метод, как обычный примитив.
Но говорят, что объекты передаётся по ссылке, а не по значению, потому что сам объект не скопируется, а просто передастся его адрес.
Ясно.
проще, когда понимаешь, как это говно работает.
Через save
Та не, там видеокурс.
Ну так блять, у тебя хибернейт, когда сохраняет, тупо не знает, что таблица Comment существует и поэтому создаёт дополнительную. Чтобы он это узнал, нужно в Comment сделать поле Artist с аннотацией ManyToOne.
1-12 месяцев, например
добавь зависимость в мавен/грэдл
Я вот сегодня начал проходить - вроде нравится. Хотя может в конце и хуйня, но вот в начале вроде норм. Не знаю, что не так
>если ты совсем зеленый, то тоже хуйня
Хуйня.
>начал проходить - вроде нравится
Это и есть доказательство хуйни!
Нравиться читать стори про героев твоего любимого мультика?
Настоящие погроммирование даже за сраные 30к в мес это ежедневная боль и страдание. БОЛЬ И СТРАДАНИЕ!!11
За 100к тоже БОЛЬ И СТРАДАНИЕ и за 300к/нсек БОЛЬ И СТРАДАНИЕ.
Чем раньше ты это поймёшь, чем раньше начнёшь жить с этой болью, тем проще тебе будет вкатиться.
Поэтому слушай старый мудрых анонов. Если говорят хуйня, значит хуйня!
>Настоящие погроммирование даже за сраные 30к в мес это ежедневная боль и страдание. БОЛЬ И СТРАДАНИЕ!!11
Так а где их взять, боль и страдание? Я бы с радостью пошел на какую-нибудь стажировку где мне давали бы жопораздирающие задачи, но я пока что вообще нихуя не знаю из джавы чтобы туда попасть и сейчас стажировок мало (нет), так как карантин.
Понятно, что нужно писать свои проекты, но я пока даже не знаю что такое полиморфизм, лол.
>Если говорят хуйня, значит хуйня!
Твердо и четко, даже и не поспоришь.
>Нравиться читать стори про героев твоего любимого мультика?
И какой тут мультик лол, я так и не понял тебя, анон.
Может ты с чем-то другим перепутал, я не знаю.
>Хуйня
И где тогда лучше всего получить практику для вот такого зеленого как я?
Про литкод слышал
На например https://www.qwiklabs.com/quests/42
сможешь ето сделать - джун 100% даже крепкий мидл
>46 баксов за 7 часов занятий
Почему оно все такое платное, анон? Потому что реально работает и без смс?
>the student should be an experienced programmer with Java. This Quest requires prior hands-on experience with GCP computing and storage services. It is recommended that the student have at least earned a Badge by completing the hands-on labs in the Cloud Architecture and/or the Baseline: Deploy and Develop Quests before beginning
Вроде интересные, но джаву кор хотя бы знать думаю надо. Вот месяц-два позанимаюсь хуетой и наверное сюда залезу
Знаю, что программы бывают многопоточными.
Но ещё знаю, что любой современный сервер задает пул потоков, который позволяет также программе выполняться в несколько потоков.
Например в spring-boot можно задать параметр server.tomcat.max-threads, который будет определять, во сколько потоков максимум сможет работать встроенный Томкат.
Но зачем тогда в Джаве вообще многопоточность, как часть языка, если можно всю многопоточность в одну строку задать на сервере приложений?
Скорее всего я чего-то не понимаю. Объясните, пожалуйста.
Многопоточность должна поддерживаться на уровне бизнес логики приложения. Т.е. это программист определяет будет ли его приложение однопоточным или многопоточным. В случае с томкетом программисты сказали: у нас будут листенеры входящих запросов, и каждый листенер будет обрабатываться в отдельном потоке, а юзеры смогут задавать количество этих потоков, т.е. соответственно листенеров. Вот и всё. Утверждение, что "во столько потоков будет работать томкет" неверно, потому что всего потоков в нем гораздо больше, просто некоторую часть из них можно задавать пользователю, а остальные нельзя, они регулируются там внутри самостоятельно.
Анон, у меня вопрос. Работаю несколько месяцев джуном, пишу свой первый проект. Но я вообще нихуя не могу написать без гугла, вот прям каждый шаг приходится гуглить и искать уже написанный код, чтобы адаптировать его под свой. Это нормальный путь джуна, и каждый через это проходит, а в дальнейшем САМ пишет код?
>В случае с томкетом программисты сказали: у нас будут листенеры входящих запросов, и каждый листенер будет обрабатываться в отдельном потоке
Я правильно понял, что количество потоков на томкате это грубо говоря количество юзеров, которые смогу одновременно работать с сервисом (при условии, что они действительно работают одновременно) и количество "копий" работающей программы на серваке?
Да, всё норм. Главное - не копируй код из гугла бездумно, а старайся понять суть решения и если это стаковерфлоу, то не останавливайся на первом же решении, а изучи остальные и попытайся понять, какое бы лучше подошло в твоём случае.
От системы зависит, на Unix может и можно.
А так ищи для этого в либе готовую функцию. Если нету, бери другую.
Да я вот ничего путного не могу найти. Мне надо обработать midi последовательность через синтезатор и записать в файл. А синтезатор может только через каналы ее проиграть..
>количество потоков на томкате это грубо говоря количество юзеров, которые смогу одновременно работать с сервисом
Грубо - да. Детально: один юзер может выполнить два запроса сразу и займет два листенера, либо наоборот, 10 юзеров последовательно выполняют по запросу каждый и всех их может обработать один листенер (даже если это в пределах одной секунды).
>и количество "копий" работающей программы на серваке
Нет. Так можно сказать только если вся программа и состоит только из одного обработчика разпроса, тогда да, одна программа работает параллельно, но это слишком специфичные условия. Поэтому так: копия программы одна, а куски программы, где поддерживается многопоточность, исполняются одновременно параллельно.
> Да, более или менее нормальный
>>662674
> Да, всё норм. Главное - не копируй код из гугла бездумно, а старайся понять суть решения и если это стаковерфлоу, то не останавливайся на первом же решении, а изучи остальные и попытайся понять, какое бы лучше подошло в твоём случае.
Спасибо, буду иметь в виду
Есть система, где только \r, но вероятность, что жаба попадёт туда, близка к нулю.
Нужно это не только чтобы принтить, но и чтобы парсить уже существующие строки с \r\n. Да бывают редакторы, где без \r переносы не отображаются вообще.
Хорошо, что можно наслаждаться блокнотом.exe даже на линуксе, через wine.
Регулярно на мобилке ловлю баны якобы за использование VPN, приходится обходить через VPN.
ОК, значит пофиксали.
У меня была ситуацией когда выкачанные из гита батник не работал из-за ётого.
Смотря от какого вендора.
В августе скачал джава для чайников, весной устроился на работу. До этого учил другой язык, но там не прокатило.
Можно и быстрее, у меня большую часть времени занимала прокрастинация.
Понял. Огромное спасибо!
И не должен, в этом и фишка перекатов после 1000, меньше залётных будет.
У нас есть паровозик А и паровозик Б, которые едут в одном направлении. Паровозик А движется со скоростью 1 км/ч, а паровозик Б - 1.037 км /ч. За сколько паровозик Б догонит паровозик А если сказано что Б проебал 86 часов на старте?
Легко могу решить эту задачу рекурсией (больше трех месяцев, сближаемся до < 1 часа). Вопрос: правильный ли это подход, рекурсия? Наверняка этот тип задач уже разобран, имеет название и другие алгоритмы решения. Паровозики конечно это не настоящая задача, это я уже упростил, дальше не могу, помогайте.
Ёбу дал, какая ещё рекурсия?
A(t) = t
B(t) = -1.037 · 86 + 1.037 · t
A(t) = B(t)
t = -1.037 · 86 + 1.037 · t
t = 1.037 · 86 / 0.037
t = 1.037·86/0.037
Пасибо, это похоже на правду. В реальной задаче у меня 2309, но как я уже сказал, я остановил рекурсию на условии сближения меньше часа. Получается да, ебу дал, в школьную математику разучился. Еще раз спасибо!
Слушай, вернись на секундочку. Я конечно ебу дал, но почему твой ответ немного не сходится? Пустил два возрастающих курсора, на пике переломный момент.
А, я понял. У тебя вычисляется не время, а расстояние в момент сближения. Чтобы получить что надо мне надо еще вычесть начальные 86 км (2410 - 86 = 2325).
Блять, хуйню какую-то несу, простите, пора спать уже
>У тебя вычисляется не время
>86 км
Время конечно же, и 86 начальных часов.
Да, просто мне день было писать обозначения и размерности как в физике.
Посмотри в доках, что они умеют.
У сканнера есть пачка методов для чтения строк, слов, интов, булеаонов и прочего. Удобно, когда парсишь какой-нибудь поток.
Буффередреадер не умеет почти ничего из этого, но он может буферизировать поток, чтобы эффективнее читать.
А кошернее вообще в джаве не юзать ввод-вывод, его какие-то ООПшнутые создавали нахуй.
Как запомнить значение office.id? Если я просто напишу return "redirect:/kabinet/{office.id}";, у меня будет ошибка Model has no value for key 'office.id'
Выручайте, аноны!
Сам метод:
@GetMapping("/deliteKabinet/{kabinet}")
public String remove(@PathVariable Kabinet kabinet, Model model) {
kabinetRepo.delete(kabinet);
return "redirect:/kabinet/{office.id";
}
асинк с евентлупом понял
меня почему то до сих пор корежит от длинных названий и усложненных конструкций в жаве
>public String remove(@PathVariable Kabinet kabinet, Model model)
>kabinetRepo.delete(kabinet);
А где у тебя вообще этот office.id, в кабинете?
Тебя не устроит просто вытащить его, типа kabinet.getOffice().getId(), до того, как ты удаляешь кабинет, и вручную дописать в строку редиректа?
оки
Ты не тот анон с проблемой пикселей? С него все началось. В любом случае, твое приложение с квадратиками "удачно" появилось аккурат после моих скринов с кодом, на которых квадратики поменьше и можно задавать их размер.
Не переживай, няша, ты когда-нибудь тоже сможешь самостоятельно что-то написать. А вот помогать другим с таким настроем вряд ли...
Хуй знает, к чему ты высрался. Если ты думаешь, что image.setRGB это "твой код" то тебе в дурку.
Извини, конфузия вышла, обознался. Мир?
Кстати, у тебя там ошибка: 250px на 7 нацело не делится, тяжело было 252px сделать? А так одни блоки 36x36, другие 35x35, округляешь ты там чтоли?
Так это и есть в коде. Или ты рандомом выбираешь размеры количество блоков?
Десктопом лучше заниматься на специально предназначенном для этого наследнике дельфи.
https://github.com/Stingray42/identicon-java
хуйня
Но если я в методе .replace("жопачлен", "член") напишу, то он не сработает, а надо чтобы сработал. Надеюсь понятно объяснил.
Легко так сказать. Как-будто переключиться с явы на сишарп как просто. Сам-тт язык похож, а вот с библиотеками, фреймворками всякими охуеешь разбираться.
Именно для этого и были придуманы регулярные выражения. Грубо говоря задаешь маску "жопа*член" и оно находит и понимает, гугли детали.
Ты совсем зеленый? На каждом углу об этом пишут для новичков, даже в русском интернете. Одно - интерфейс, другое - класс, реализующий этот интерфейс. По правилу наследования класс (потомок, субскласс) можно присвоить переменной типа суперкласса (предка).
Почему все так уверены что если ты увлекаешься программированием то для тебя это работа? Я вечерком просто люблю на джаве пописать всякие простенькие игры и всё. Не дай боже работать программистом.
Это относится только к JDK от оракла, и только к современным версиям > 2018-2019, не помню точно. Типа у них там наиебовейшие инструменты профайлеры-хуяйлеры которые их жавба задавила бесплатно давать использовать.
А как они меня искать будут? Вот получаю я деньги за своё приложение, они мне на почту напишут "дай денег". Я отвечу им что в живу в Магнитогорске пусть приезжают.
Ты это мне уже говорил, возможно даже в этом самом треде. Что тебя смутило? Что я отправил тебя читать о такой простой вещи? Так это же логично, там больше инфы, и понятнее изложено чем тебе рандом-хуй объяснит. Ну а т.к. это форум и читают вопросы/ответы все, то я для максимально широкой аудитории и пишу. Если тебе про SOLID не надо, то просто пропускай мимо.
Нет, про Листы я почитаю
Такая же проблема у нас с налоговой: больше вероятности что к тебе придут если ты держишь кафешку, а не частным репетиторством на дому занимаешься. В джаве так же: они подождут пока твое приложение вырастет до уровня яндекса-хуяндекса, и тогда уже постучат. А бекэнд аппликухи можно вообще безболезненно хостить за nginx'ом пожизненно, главное настроить чтобы лишние хедеры не возвращал, и все, как можно узнать что ты там юзаешь на беке?
Это не то немного. Суть в том, что там эти символы форматирования могут стоят где угодно. И мне бы какой+то вариант, чтобы они игнорировались совсем. Ну т.е. чтобы строка с этими символами и без них была как-будто equals
Нет, это все равно как раз то. Регулярное выражение можно так составить чтобы оно хоть после каждой буквы проверяло "левые" символы, т.е. маска "жопа", где - это допустим только \n и пробел.
Ну и как это составить чтобы игнорились например символы /n?
Ну в том и дело, что строка длинная и я ебанусь так хуячить на каждом месте, где может быть /n маску. Нет ли другого способа.
Более того. Сейчас обрисую. Есть изначальная строка и в ней случайным образом нахуячены символы переноса строки. Я вызываю метод replace() на ней, а вот таргет дл реплейса приходит без символов переноса строки. И в итоге метод не заменяет в изначальной строке нихуя, потому что строки с символом /n и без считаются разными. Сразу говорю, что в изначальной строке удалить символы /n нельзя. Ну и как сделать так. чтобы метод replace() думал, что строки с и без /n одинаковые?
что?
Да, у войда есть враппер класс.
После замены что должно получиться? Просто вставить новую чистую подстроку без \n? Легко. Или заменить все символы старой подстроки на новую, сохраняя между ними \n? Это ебань, но тоже выполнимо если подстроки одинаковой длины.
Тут я вижу 2 варианта:
1. Первым делом из обоих строк удалить все переносы строк тем же replace(), а потом уже вызвать replace() с нужным текстом.
2. В той строке которую нужно заменить надо пробелы между символами заменить на группу \s - тогда туда и переносы строк попадут.
>>665407
Первый вариант не идет потому что изначальная строка должна сохранить форматирование в целом. Если удалить там все переносы, то потом обратно их никак не расставить.
Второе.
> В той строке которую нужно заменить
Там большая строка внутри нее есть куски, которые надо заменить. И эти куски имеют форматирование. Когда вызываем реплейс, то туда передаем таргет-строку, но она уже без форматирования И в этом проблема.
Бэк нравится, джава нравится. Не нравится то, что я терпеть не могу фронтенд. А чтобы потом из бэка подняться в фуллстек, надо фронт таки терпеть. То есть я уже ставлю себе барьер в карьерном росте.
>>665387
Мне кажется ты не понял. Легче было бы если бы ты хотя бы тестовые данные предоставил.
В первом случае я имелл ввиду такое, это легко сделать регулярками:
Дано: --a-b---c-de--f
Замена: bcd -> hello
Результат: --a-helloe--f
Во втором я имел ввиду такое (очевидно, что для этого нужно чтобы подстроки были одной длины):
Дано: --a-b---c-de--f
Замена: bcd -> 123
Результат: --a-1---2-3e--f
Как я и сказал, со вторым придется ебаться. Ничего готового на это нет и быть не может, слишком специфично. В таком случае делают токенизацию, ищут по токенам с нужным типом, заменяют и в итоге собирают строку обратно со всеми типами токенов.
Приведи уже пример, потому что из этих "куски имеют форматирование" нифига не ясно. И что с заменой - там известно заранее что на что надо менять, или это в рантайме станет ясно?
А так у тебя есть:
1. Группы в исходном тексте. Например чтобы сохранить переносы в моем примере регулярку надо поменять:
JSON.replaceAll("\"\\w+\"(\\s+):(\\s+)\"\\w+\"", "\"foo\"$1:$2\"bar\"")
туктс тегов поменяется, а форматирование останется.
2. Если этого мало, можно использовать функцию которая будет делать замену.
Уточнение про второе: просто найти строку для реплейсмента (b---c-d) можно легко и как в первом примере, ебанина будет именно на моменте замены. И если по условию у нас каждый символ исходной строки мапится в каждый символ замены, именно один-к-одному, то тут легко будет в один проход циклом пройтись и позаменять, без токенизации.
Ну бля, ну не мучаться же теперь.
Столько дрочился, чтобы устроиться, а по итогу какой-то хуйнёй страдаю, ей богу тестовые на неделю были сложнее.
По полдня ловлю баги, думаю, почему это не работает, как должно, другую половину пишу 2.5 строчки кода и хуяк - таск выполнен! Так и должно быть?
Тестовые это стресс тест, а на работе как и везде много рутины.
> Когда вы только начинали работать джуном, как оно было?
> Столько дрочился, чтобы устроиться, а по итогу какой-то хуйнёй страдаю, ей богу тестовые на неделю были сложнее.
> По полдня ловлю баги, думаю, почему это не работает, как должно, другую половину пишу 2.5 строчки кода и хуяк - таск выполнен! Так и должно быть?
Хз, мне сходу дали писать полноценное приложение на спринге
В одно рыло? Я думал на каждую подзадачу свой работник. Один например только по бд, другой только по контроллером, третий по сервис layer и т.д.
Часто это микросервис и ты один за него в ответе, и еще за несколько других микросервисов в зависимости от их сложности.
> В одно рыло? Я думал на каждую подзадачу свой работник. Один например только по бд, другой только по контроллером, третий по сервис layer и т.д.
Нет, еще двое джунов со мной. Между собой договариваемся, кто что делает
а шо,много зашибаешь?
Да. Работа есть, в целом пока интересная. Гайдов тьма, каких-то диких глюков и багов я пока не встречал.
Хороший инструмент, на мой взгляд. Но я пиздец ньюфаг.
Оверхед от JVM статический: запускаешь Hello world, отжирает 200мб, запускаешь Tomcat с 20ю хелловорлдами, отжирает 205мб. Понимаешь как оно должно быть? Нужны хелловорлды на 500кб добро пожаловать в делфи, на 20кб - динамическая линковка, и т.д. Итог: если тебе не подходит Java по памяти стоит задуматься правильный ли ты выбрал инструмент.
Я хз сколько хеллоуворлд надо.
Щас есть приложуха со спрингом, там несколько разных бд, 9000тысяч контролёров, ещё какие-то свистопирделки. И вот эта хуйня отжирает 500 мегабайт.
Это когда я руками запускаю рассчитывать какую-то статистику по сущностям, что лежат вообще хз где на каком-то хадуп сервере.
Рассмотрим на примере виндоус.
В джаве библиотеки это не dll-ки. Библиотеки в джаве подгружаются в каждое приложение отдельно, обособленно, изолированно друг от друга. DLL-ки же (особенно системные) это разделяемая область памяти (гугли "верхние 2 гб виртуальной памяти процесса в виндоус"), т.е. единственная копия DLL в памяти может быть использована всеми приложениями которые работают.
Да.
Восьмая. Я хз что ты хочешь тут услышать?
Это не такая лагучая хуйня, как её описывают. Хочешь томозное говно - попробуй чуток скалы, например. Когда хеллоуворлд запускается дольше спринг приложения с сотней контролёров.
Выше тебе уже описали, что у тебя один хеллоуворлд отожрёт Х памяти, но 20 отожрёт уже не 20Х.
Если гонишься за скоростью - ну ебашь на низкоуровневых языка, они быстрее. Но не удивляйся потом, что пока ты пишешь базовые сущности Вася уже запускает своё говно на спринге в прод. Бизнесу будешь объяснять, где ты гигабайт памяти сэкономил. Мне не надо.
Постоянно какую-то хуйню оптимизируют.
У джавы огромный минус это её обратная совместимость, это же и её плюс. Т.е. просто выкинуть какую-то хуйню старую они не могут, всегда стараются сделать так, чтоб ничего не сломалось от их нововведений.
>скорость
Она нахуй не всралась, железо улучшается быстрее, чем ты такой же прирост производительности получишь от маня-оптимизаций.
Джава довольно сносно работает с памятью и не тормозит, а иногда даже работает быстрее нативных программ (я серьёзно, jit творит чудеса). Но программы на ней очень часто пишут упоротые фанаты ооп и паттернов gof и, где можно обойтись двумя-тремя классами, они городят десяток с разными абстрактными фабриками, билдерами и прочей байдой, подключая в мавеновском проекте библитоеки на каждый чих и получается чрезмерно раздутый проект.
Ты вообще плохо представляешь предметную область, если у тебя кореллирует версия ЯП со скоростью исполнения в какой-то JVM в вакууме. Имплементаций JVM много, от разных вендоров, разных по скорости и фичам (некоторые не сразу или не совсем поддерживают полную спецификацию). И потом, как новые фичи языка влияют на существующие фичи? Т.е. есть код, он уже отлажен, покрыт тестами и работает. Делают новую фичу, не трогая старый код, и если правильно соблюден SOLID, в частности loose coupling, то в скорости исполнения старого кода вообще ничего не меняется. Есть фичи JVM, которые коречно же влияют на скорость всего, например это GC. Если мы рассмотрим какую-то конкретную JVM, например от оракла, то там уже пятая или шестая версия GC.
Не надо проблему с прокладками приравнивать к проблемам языка.
В джаве подобие этого уже есть - это аппликейшен сервера и веб контейнеры. Технически реализовано по-другому, но суть та же - множество приложений, среда исполнения одна - "расширивание системных библиотек". Насчет расшаривания пользовательских библиотек не уверен, зависит от контейнера, может быть некоторые подгружают только один экземпляр либ, а может и каждому приложению свою копию либы, тут я не знаю.
>В джаве подобие этого уже есть - это аппликейшен сервера и веб контейнеры
Ну это наверное не только в джаве. А сейчас везде докер и контейнеры, так что мимо.
Уже есть, называется class data sharing - разные инстансы JVM шарят загруженные классы. Не знаю когда впервые вышло в прод версию, но в 14 включено по умолчанию.
Есть Open J9 там шарятся не только классы, но еще и JIT кеши и вообще есть JIT as a service. Чтобы уменьшить потребление памяти одное VM.
Не, видимо, Славка детдомовский.
А, все, buf же 1024, мне нужен был len. ПОря спать.
Потому что int аллоцируются на стеке, и чтобы поменять их тебе нужны указатели на стек. А такие выкрутасы только в С возможны.
Ваще не вопрос.
void swap(int []a, int []b) {
int temp = a[0];
a[0] = b[0];
b[0] = temp;
}
void f() {
int []a = {1};
int []b = {2};
swap(a, b);
}
tl;dr что лучше поместить try-catch в луп или использовать метки?
2 это же 10, значит должно быть 01, то есть -1?
Как пользовательский ввод может быть не строкой? Любые символы, вводимые пользователем - это строка, и nextLine() всегда их будет возвращать, будь там хоть знаки препинания или цифры.
>2 это же 10, значит должно быть 01
Совершенно верно! Однако ты не учел, что там не просто 10, а 000000000000000010, соответственно это все превращается в 11111111111111111111111101, а не просто в 01 (количество цифр там в зависимости от типа - байт 8, шорт 16, инт 32, лонг 64). Ну а т.к. знак это самый старший бит, то и получается отрицательное число, а не огромное положительное. А то что ты хотел сделать изначально - выделить два бита - делается бинарной маской:
11111111111111111111111101 &
00000000000000000000000011 (маска) ==
00000000000000000000000001
Ну тока у тебя тут проблема как размер маски подобрать, это уже в зависимости от задачи.
Забыл добавить: по условиям комплиментарности -1 у нас это 11111111111111111111111111, а не 10000000000000000000000001 как ты бы мог предположить.
pomesti loop v try-catch i vizivai metod kotorii schitivaet vvod v bloke chatch esli vvel ne stroku
Это значит, что мне не стоит идти в бэкенд? Сложная тех часть нравится.
Сложная тех часть или мат часть тебе нравится? С математикой много не работаю поэтому и не сообразил сразу выразить одно через другое (автор поста про паровозики). Но бекенд часто полон челленджинг тасками, например помню задачу когда мы ловили rtmp с клиентов на мобилках, конвертили вручную по спецификациям (обожаю байтоебство), и пересылали по вебсокету в хранилище на сохранение, генерируя при этом плейлисты.
>Сложная тех часть
Именно тех часть. Мат часть всегда из-под палки делал в школе/универе. Хотя вроде не полный долбаеб в математике, но и не скажу, что хорош в ней. Просто видел, что часто на бэке всякие выпускники мех матов сидят, в серьезных конторах подготовку по алгоритмам и структурам дрочат серьезно. Меня даже какой-нибудь нетривиальный вложенный цикл разобрать не особо удовольствия доставляет. Само собой, я в этом разберусь, но сидеть и думать, куда какая итерация идет и куда элементы переходят как-то удовольствия не доставляет.
>обожаю байтоебство
Ну вот это мне тоже нравиться, всегда была интересная какая-то низкоуровеннвая фигня. Вообще люблю докапываться до истины и понимать, как работают вещи.
сорре за ошибки в посте, чуть прилег днем поспать и только одупляюсь
А вообще кровавый ынтерпрайз это часто про сообщения, миллионы миллионов сообщений, очереди сообщений. Технически конечно тоже челлендж есть, но тут уже сторонние примеси какие-то, кафки там, раббиты, твой код за этим всем уже не так заметен.
1. Последняя сборка java 11 попадет под новую лицензию?
2. Почему то .jar собранный при использовании OpenJDK не хочет запускаться, выдаёт ошибку типа проверьте установку Java.
3. Что за ебанутая система версий. Как я понял: есть через что запускается(JRE) и есть инструмент разработчика(JDK). Почему JDK версии по типу 8, 11, 14, а JRE 1.8.0_251. Какая версия JRE нужна что бы запустить программу использующую JDK 14? Есть ли обратная совместимость?
Котосибирск без палева.
>Почему JDK версии по типу 8, 11, 14, а JRE 1.8.0_251
Неправда, см. пикрил.
>Какая версия JRE нужна что бы запустить программу использующую JDK 14?
Для JDK 14 нужна JRE 14. Обратная совместимость не так работает: JDK 9 запустится на JRE 14, а не наоборот.
>1. Последняя сборка java 11 попадет под новую лицензию?
Тебе это зачем?
>2. Почему то .jar собранный при использовании OpenJDK не хочет запускаться, выдаёт ошибку типа проверьте установку Java.
Скрин сюда.
>3. Что за ебанутая система версий. Как я понял: есть через что запускается(JRE) и есть инструмент разработчика(JDK). Почему JDK версии по типу 8, 11, 14, а JRE 1.8.0_251. Какая версия JRE нужна что бы запустить программу использующую JDK 14? Есть ли обратная совместимость?
Хуйня полная, есть версия и апдейт как 1.8u251
Начиная с джава 11, JRE уже не делают, теперь везде JDK. Чтоб запустить, нужно 14 и выше. Обратная совместимость - это когда ты программу для ждк 14 запустишь через 10 лет на ждк 22
> Неправда, см. пикрил.
Так потому что у тебя JDK 8
>Для JDK 14 нужна JRE 14. Обратная совместимость не так работает: JDK 9 запустится на JRE 14, а не наоборот.
А где скачать JRE 14? И как понять что у тебя она установлена? Я вот скачал последнюю версию java с офф сайта. Версию показывает пик2
>>666592
>Тебе это зачем?
Интересно
>Скрин сюда.
Переустановил jdk, заработало.
>Начиная с джава 11, JRE уже не делают, теперь везде JDK. Чтоб запустить, нужно 14 и выше. Обратная совместимость - это когда ты программу для ждк 14 запустишь через 10 лет на ждк 22
Чтооооооооооооооооооооооооооо. То есть что? Я даже в голове не могу вопрос сформулировать, нихуя не понятно.
В натуре пиздец какой то. Ладно, попробую так: Я хочу что бы моя программа была максимально доступна. Какую версию использовать при разработке?
С каким "моим"? Если ты про Хеллоу Ворлд это я для теста вывел, что бы проверить вновь установленный JDK. И в чём проблемма написать если знаешь? Это же не код за меня написать а просто сказать "jdk11 не попадает под новую лицензию" или обратное.
>>666598
Блин там нету files.readString который очень желательно нужен, так как удобный.
>А где скачать JRE 14
JRE 14 идет в комплекте с JDK 14 в папке bin. С новой политикой лицензий JRE от оракла теперь отдельно не распространяется. Они хотят чтобы ты со своей программой - джарником-хелловорлдом - поставлял весь JRE сам платя за лицензию, т.е. чтобы конечному пользователю не нужно было ничего больше скачивать. Если честно это пиздец. Я там выше рассматривал ситуацию Electron vs PWA, и где весь мир идет по пути уменьшения лишних избыточных библиотек, оракл идет им навстречу заставляя JRE паковать к себе в приложение. И ладно если ты в JetBrains работаешь, а если ты пишешь хелловорлды?
Минимальную. Сейчас это 8 LTS, но скоро уже будет только 11 LTS. Там советуют 7, но 7 к сожалению это уже легаси.
Мдааа, что то они хуету намутили. Это же реально не удобно.
Пытаюсь всё проанализировать:
Программу сделанную на JDK 14 нельзя будет запустить пользователю который просто скачал с java.com джаву. Но 11 сможет?
>пользователю который просто скачал с java.com джаву
Именно от этого они хотят уйти - пользователь не хочет никуда ходить и что-то скачивать. А если всё-таки скачал, то java -version подскажет что он может запустить, а что нет.
>Но 11 сможет?
Вопрос без контекста - какую именно версию он скачал с java.com? Выше уже все расписали несколько раз.
Последнюю, которая сейчас находятся если нажать на больную красную кнопочку на сайте java.com
*большую
На этом сайте уже не скачивают, и там 8-ка кажется.
Нажал, попал сюда. О какой 11 ты говоришь? Русским по белому написано - version 8.
Не прогайте пацаны, вы матерям еще нужны
Спасибо, оказывается отрицательные числа кодируются в нем.
https://randomprogrammingstuff.wordpress.com/2018/01/01/twos-complement-tutorial-java/
>>666388
Да.
tldr: у одного из создателей-кодеров клаудфлары обнаружили разжижение мозгов, обусловленное генетически. астральная атака на этих монополистов таки сработала!
или это только у меня так?
Если даже создаю ещё один JPanel, указываю setBounds и уже на него добавлю Main с JPanel то отображается только маленький квадратик посреди окна.
>>666680
Только сегодня тоже перешёл на 2020.01, у меня такого не было
>Однако в своих исследованиях неврологи так и не смогли найти ни одной причины возникновения болезни у Ли.
>class Main extends JPanel
Мерзотная хуйня кста
А вообще тебе надо установить размер Main, а JFrame сам правильно отресайзится.
А как по другому сделать?
Вообще я же сам устанавливаю размер фрейма(16 строчка) но размеры не сходятся с желаемымими
>фрейма
А надо размер JPanel
>как по другому сделать
Вот так: https://github.com/Stingray42/identicon-java/blob/master/src/main/java/org/example/gui/GUIBootstrapper.java#L21
Как-то так? А как же мне тогда рисовать paint? Как мне его добавить на панельку?
Отвали!
Так прикольнее, а я код по приколу пишу
>However, without a license, the default copyright laws apply, meaning that you retain all rights to your source code and no one may reproduce, distribute, or create derivative works from your work.
Что не так-то, что я упускаю? Задаем размеры компонента, делаем pack() на фрейме, дефолтный layout, почему нихуя не работает?
и хорошо
Го быстрее и меньше ресурсов жрет.
Уже лучше, спасибо. Но размер внутренней клиентской области (без учета 1px бордера и 30px заголовка окна) - 120x100, даже если задавать setBounds(0,0...), в чем причина, что за отступы дополнительные? И все-таки надо бы понимать почему просто setSize() или w,h внутри setBounds() не работают?
>И все-таки надо бы понимать почему просто setSize() или w,h внутри setBounds() не работают
Не надо, пиши на JavaFX.
> '
> "
Это всё одна кавычка, но одна одинарная, а другая - двойная.
> """
В питоне можно и тремя двойными, в нём одинарные и двойные кавычке равнозначны.
>120x100
Это ограничение винды, иначе кнопки закрытия/сворачивания окна не поместятся. Поставь 300х300.
Точно, даже на 150x150 работает, благодарю.
Это вообще-то медицинская тайна, щяс они тебе все скажут, ага.
> '=1, "=2, '''=3
""" != ''''''
> нахуя
Мне самому эта хуита не нравится, они идёт вразрез с "There should be one-- and preferably only one --obvious way to do it". В PEP8 нет жёсткой рекомендации использовать что-то конкретное.
""" это в любом случае новая конструкция, можно было бы использовать более приятное и логичное ее представление.
Ну как в гит, где мы лишнее не закидываем благодаря gitignore.
Не мог ты подсказать почему не работает? Че-то я вообще не догоняю как это работает.
Вот пример, ошибка. Ну вроде бы виноваты скобки {}, но если убрать деление и подставновку символов /n , то на скобки похую, оно сработает. Если оставить деление и подставновку символов /n, но из таргета удалить эти скобки {}, то ошибки не будет, но и подставновка не сработает.
Ты не можешь проще примеры делать? Как у меня? Если у тебя что-то не работает - упрощай, а не пытайся разгрести это говно нахрапом всё, там же ошибка на ошибку настакивается. Я вот навскидку не могу сказать в чем проблема, я глаз сломал минуту разглядывая этот пример. Выкинь для начала кавычки двойные, они сильно усложняют тебе всё. Какая ваще разница, пример же? Далее, когда заработает минимальный пример тогда уже наращивай. Щас забью твой пример, посмотрю что можно сделать
И еще за правило возьми скрины делать с номерами строк, и ошибку тоже постить со стактрейсом. Я вот конечно догадался что в ошибка возникает методе replaceFirst() потому что в тексте ошибки фигурирует pattern, но все равно это время. Это все в твоих интересах же, чтоб тебе быстрее помогли.
>Почему эта строка вторая выглядит не как первая? Почему не синим цветом кавычки? Почему черным уветом скобки? В чем разница?
Это из-за того что IDE догадывается что testTarget используется как regexp и пытается его подсвечивать соответственно. Ты потом немного редактируешь, причем неправильно, паттерн, и передаешь в функцию. Но паттерн в результате выглядит как говно: на первом месте фигурная скобка, хотя это начало квантификатора и просто так идти не может. В общем у тебя паттерн составлен неправильно, щас исправлю.
Разобрался, оказывается обязательно надо ребутаться.
> error invalid flag: (x86)
Уже только по вот этому можно понять что ты неверно расставил кавычки.
В консольной команде.
Вот здесь, надо полагать. Это не POSIX синтаксис.
Это гиперскил который? Видел там ищут трейни без опыта задачки писать. Тот же жавараш без картинок/кодварс. Как по мне пустая трата времени. Имеет смысл немного попердолиться только если хочется получить лицензию на пару месяцев на все продукты жидбрейнс.
Хуперскилл делай.
> Многопоточность
На уровне Хорстманна более чем достаточно, прям глубинно задрачивать потоки смысла нет. В спринге они не понадобятся, действительно заморачиваться с ними придётся очень редко.
> спринг или бд
Лучше сначала БД, без этого далеко не уедешь. На уровне создания таблиц, юзания джоинов и транзакций. Поначалу задрачивать смысла тоже нет, хватит базового курса.
Ну а затем спринг и можно EE чуток. Понять, что такое DI, дальше потыкать несколько туториалов по MVC/REST/JDBC/Data JPA.
Народ,помогите с кодом,у меня просто разрыв шаблона.
Вот так код выдает нули:
public class NewMain {
public static void main(String[] args) {
Methods degrees=new Methods();
double result=degrees.findDegrees(100.4);
System.out.print(result);
}
}
public class Methods {
double degreesC;
double degreesF;
public double findDegrees(double degreesF){
degreesC=(5/9(degreesF-32));
return degreesC;
}
}
Но если поменять умножение местами следующим образом,то все волшебным образом начинает работать как надо:
public class Methods {
double degreesC;
double degreesF;
public double findDegrees(double degreesF){
degreesC=((degreesF-32)5/9);
return degreesC;
Объясните же мне сей феномен.
Народ,помогите с кодом,у меня просто разрыв шаблона.
Вот так код выдает нули:
public class NewMain {
public static void main(String[] args) {
Methods degrees=new Methods();
double result=degrees.findDegrees(100.4);
System.out.print(result);
}
}
public class Methods {
double degreesC;
double degreesF;
public double findDegrees(double degreesF){
degreesC=(5/9(degreesF-32));
return degreesC;
}
}
Но если поменять умножение местами следующим образом,то все волшебным образом начинает работать как надо:
public class Methods {
double degreesC;
double degreesF;
public double findDegrees(double degreesF){
degreesC=((degreesF-32)5/9);
return degreesC;
Объясните же мне сей феномен.
Посмотри в дебаггере где вылезает ноль.
Так работают преобразования типов. Если хоть один из операндов - вещественное число, результат будет вещественным, иначе - целое.
5 / 9 = 0
5.0 / 9 = 0.55555...
Операции умножения/деления выполняются слева направо, и если где-то встретился промежуточный вещественный результат, дальше вычисления будут с вещественным типом.
degreesF-32 в результате даёт вещественное число. При умножении на 5 получаем вещественное число и т.д.
Бля от души спасибо. Однако если я переставляю вперед и делаю как ты сказал,то у меня в результате единица после нулей появляется,а если не переставлять то не появляется.Почему так?
То есть если оставить рабочую версию,кторую я в посте сначала указал,то результат 38.0,а если деление вынести вперед и сделать 5.0/9 то получается 38.000000000001
Да, только в первом случае у него сначала 5/9 вычисляется в 0 и умножается на остальное, а наоборот нуля не будет.
>>667535
На ЭВМ не все числа можно представить точно, есть ограничения. Для double, если повезёт, можно рассчитывать на точность в 14 знаков, дальше идёт мусор. Для float вдвое меньше.
Это не столько недоработка, сколько аппаратное ограничение. В 64 бита тупо не вместить больше. Да и точность нужная не настолько часто, но если нужна, можно взять программную реализацию арифметики, например, BigDecimal, там храни хоть тыщу знаков.
Oracle JDeveloper
DrJava.
BlueJ
Консоль.
> Эклипс или Нетбинс?
Да вообще похуй, что нравится, то и юзай. Но в проде нетбинс сейчач никто не юзает. Либо идею, либо эклипс
Спасибо, вроде сработало. Странно, ч тоже пытался реплайсом удалить скобки, но что-то не сработало тогда.
1) Это никогда не станет бутылочным горлышком в твоем приложении
2) Код приведи, непонятно что в твоем понимании "перебор в цикле"
3) Сделай простейший бенчмарк, это тебе по силам:
long start = System.currentTimeMillis(); // или nanoTime()
for (int i = 0; i < 10000000; i++) { / code here / }
long time = System.currentTimeMillis() - start;
4) Изучи скомпиленный байт-код
> Изучи скомпиленный байт-код
Можно вывезти человека из сишки, но сишку из человека - никогда.
всем насрать на ваш код
ПИШИ BIGDECIMAL
>java.io.IOException: Отказано в доступе
Откуда берется фраза на русском? В принстектрейс только ссылка на эту функцию, но в ней нет русского.
Точно! Забыл -XX:+PrintAssembly!
Оффтопом хочу сказать что не всегда так можно померять так как в jvm есть такая хуйня как dead code elimination из-за которой jvm просто проскипает команды если там будут бесполезные вычисления
мимо другой анон
Почему ты так ко мне относишься? Я правда не знаю что делать дальше, чтобы понять откуда это сообщение пришло.
Копайся в декомпилированном коде. Рано или поздно наткнёшься на native-метод и увидишь, что дёргается некая dll-ка. Дальше дизассемблируй эту dll-ку и копайся уже там. И однажды найдёшь, откуда эта строчка.
Все правильно, но есть JMH который знает как с этим бороться и видео от Шипилёва как правильно писать микробенчмарки.
Посмотреть или в WinAPI или PosixAPI, смотря что ты используешь.
Шипилева не смотрел, за наводку спасибо. Смотрел у Валиева он пытался таким бенчом мерять стримы когда они только появились
https://vertex-academy.com/tutorials/ru/samouchitel-po-java-s-nulya/
Поясните за эту мурзилку? В идела хочу чтоб как у ОПа в пыхапэ треде было
Прошу пояснить за GeekBrains. Я гуманитарий до мозга костей, но начальные знания по программированию, благодаря приличному преподаванию информатики в универе, присутствуют.
У меня есть достаточно времени и баблишка, чтобы пройти полный курс по Джаве. Да-да, хочу ВКАТИТЬСЯ В АЙТИ, господа гусары. Стать разработчиком, открыть для себя новую сферу развития, как хотите называйте. И нет, Дудя я не смотрел. Мне просто это пиздец как интересно.
Однако, меня много чего смущает. Есть ли тут товарищи, которые на этом "факультете" учились, чтобы на мои вопросы ответить?
1. На GB много задвигается про трудоустройство. Послушайте, реально после успешного прохождения годичного курса трудоустроиться хотя бы джуном? Они хоть какие-то вакансии предлагают, или это просто КАРЬЕРНАЯ КОНСУЛЬТАЦИЯ?
2. Насколько котируется сертификация GB у работодателей? Я много слышал о том, что в разработке в принципе важен опыт и реализованные проекты, а не сертификаты и дипломы - тем не менее, я считаю, что необходимо показать какой-то бэкграунд.
3. Что, по вашему мнению, лучше? Курсы в GB или полноценный очный курс в вузике? Есть возможность проплатить и пойти в Бауманку поучиться. Цена одна и та же примерно, но я работаю и хочу таки дистанционку.
Также рад буду прочитать про ваш опыт обучения.
Эклипс умер инфа сотка
Выше по треду читал, что 9 устарела, а 8 нет и на ней работает большинство. Но 9 таки свежее.
Посоветуйте.
Failed to automatically set-up a JavaFX Platform. Please go to Platform Manager, create a non-default Java SE platform, then go to the JavaFX tab, enable JavaFX and fill in the paths to valid JavaFX SDK and JavaFX Runtime. Note: JavaFX SDK can be downloaded from JavaFX website.
Че делать?
Вы видите копию треда, сохраненную 9 июня 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.