Вот скажите мне, на собесах на крудошлепа на спринге/жаба ее вопросы на многопоточку вообще имеют какую-то практическую ценность? Вот общался с 5 собеседующими. 4 из них спрашивали по многопоточке. Спрашиваю, а вы в работали с многопоточкой на практике? Все 4 отвечают - нет, никогда. В анкетах перед собесами тоже спрашивают про многопоточку наравне с микросервисами - работали ли вы. Сейчас вот перед еще несколькими грядущими собесами вспоминаю что раньше читал по многопоточке и новое узнаю. Но есть ощущение, что это просто ради собеса. Даже бесполезнее в реальной работе, чем с литкодами. Раньше было желание прочитать книгу с поездами и добить какими то главами из более свежих книг, чтобы преисполниться. А теперь кажется, что чисто голову себе забью и забуду что-то полезное.
>>3247373 1. Проект на который ты попадёшь будет работать в нескольких потоках. В таком случае пригодится каждая буква из книги с поездами. Либо придётся не спать ночами из-за неадекватных багов, даже если многопоточность ограничивается одним классом. 2. Проект, на который ты попадёшь будет работать только и только в одном потоке. В таком случае тебе придётся решать только те многопоточные баги, что можно решить однопоточной логикой. Сравнить это можно с тем, что в динамикодрисне ошибок типов мало, но многие баги можно было бы свести к ошибкам типов. Также и там, тебе придётся решать однопоточные баги что решились бы пониманием многопоточки.
>>3247378 Может он бы и перекатил через некоторое время. Я просто решил побыстрее перекат сделать чтобы щитпост перекат на петухлин не висел долго слишком.
>>3246924 → Понимаю что их много, но мне не совсем это интересно. Вот у меня есть идея сделать сервис, что бы можно было демонстрировать свой экран(вести стрим).
Или мне нужно сделать какое либо тестовое задание, ума не приложу как начинать его делать.
Может есть книги какие ни будь про архитектуру ? (Кроме Чистой Архитектуры )
>>3247373 >Вот скажите мне, на собесах на крудошлепа на спринге/жаба ее вопросы на многопоточку вообще имеют какую-то практическую ценность? Наибольшую. Какие у меня бывали проблемы на проде не из-за конкарренси багов: васе пупкину или сервису васи пупкина показали ошибку, он побухтел, принес лог, всё починили Какие бывали проблемы на проде из-за конкарренси багов: - послали две машины на объект вместо одной - вася пупкин каким-то образом попал в сессию коли жопина - по ошибке отправилось 2 письма "срочно продавайте алюминий нахуй". Алюминий продали дважды нахуй - ручку дернули 1 раз, в кафку записалось трижды, в базу дважды
Здарова, начинал учиться с верстки, понял, что фронтенд не мое, попробовал пайтон, он мне не очень зашел, скриптовый язык, вкатунов больше всего, перешел на пхп, у него какая-то странная типизация, как-то совмещаешь и фронтенд и бекенд вместе почти, ну как, скрипты пхп можно писать прям вместе с хтмл скелетом, да и на нем вакансии говно, либо битрикс, либо древний легаси, с кучей индусов да и каждый пишет как хочет, нет строгих правил, либо говносайтики на вордпрессе клепать для мелких кабанчиков, никаких ci/cd, никто стартапы на нем не пишет, перекатился на джаву, сначала чуть привыкнул, потом очень зашло, почитал гайд для вкатунов, там была строчка - фриланс это клепать моды на Майнкрафт школьникам за 250 рублей, либо работать на галере, куча финтех контор, огромное легаси, которое не переписывали с 2008, но это нужное легаси и платят хорошо, работы много и всегда будет, плюс засчет строгости языка, легаси поддерживать проще, чет говно какое-то подумаете, а у других еще хуже, и я с этим согласен. Да и сам синтаксис крутой, строгий язык загоняет в рамки и заставляет писать правильно, не нужно думать как бы так смоделировать проект, чтобы было легко поддерживать и расширить, все было просто, в джаве это будто встроено, сложно написать херню, да и все проблемы видны еще даже до компиляции, он многословный и его легко читать, пока все нравится
JVM и байт-код
Аноним13/08/24 Втр 01:03:29№324768014
Неделю назад побаловался javap'ом.
У меня сложилось впечатление, что никакого байт-кода не существует, а есть лишь набор таблиц: 1) таблица с двумя столбцами, где в каждой строке первый элемент есть условный номер, а второй - строка, соответствующая классу, простому типу или методу. 2) таблица из двух столбцов, где в первом столбце есть какая-либо строка с командой в стиле ассемблера(mov, cmp, jmp), а во втором столбце строка(номер) из первой таблицы.
>>3247376 >Проект на который ты попадёшь будет работать в нескольких потоках С которыми ты НИКОГДА не будеш взаимодействовать. Тебя нужно отмудохать по пальцам молотком, если попытаешся.
>>3247532 >вася пупкин каким-то образом попал в сессию коли жопина КАК. ТЫ. ЭТО. ДЕЛАЕШЬ. СКОТИНА. >послали две машины на объект вместо одной >по ошибке отправилось 2 письма "срочно продавайте алюминий нахуй". Алюминий продали дважды нахуй >ручку дернули 1 раз, в кафку записалось трижды, в базу дважды Тебя должны отпиздить ногами два византийских генерала.
>>3247680 >>3247680 IPv6 (Internet Protocol version 6) — это следующая версия интернет-протокола, которая была разработана для решения проблемы дефицита IP-адресов, вызванной стремительным ростом числа устройств, подключённых к интернету. В отличие от IPv4, использующего 32-битные адреса, IPv6 предлагает 128-битные адреса, что позволяет значительно расширить количество доступных адресов и поддерживать большее количество подключений. Ключевые преимущества IPv6 включают усовершенствованную маршрутизацию, улучшенную безопасность и более стабильную работу в мобильных сетях. Поэтому понимание «что такое IPv6» важно для дальнейшего развития глобальной интернет-сети. Смотри здесь больше: https://www.rapidseedbox.com/ru/blog/what-is-ipv6
>>3247532 >>3247376 Еще раз напоминаю - сейчас речь про тех, кого берут писать обычные круды на фреймворке. Как сказал другой анон выше, многопоточный код всегда хорошо инкапсулирован в фреймворках и внешних сервисах(базы, брокеры, объектные хранилища, етк). Я ни разу не слышал про протекшую оттуда абстракцию. А писать самому многопоточный код внутри фреймворка противоречит флоу его использования. И когда у тебя спрашивают какие-то особенности примитивов синхронизации или работы forkjoinpool, то не ты, ни собеседующий никогда руками в продакшен коде их не писали. Это типа той самой базы, которую должен знать всякий уважающий себя программист.
>>3247935 У идеи проблемой не инпут лаг является, а просто лаг, от нескольких секунд до получаса когда тебе нужно переустановить идею из-за очередного неисправимого бага.
Java core Хорстмана 13 издание с жава 21 уже два тома 1400 и 1700 старниц на английском. А 11 издание по жава 11 было по 900 и уже было дохуя. Еле дочитал. Интересно как 1700 страниц в томе может в бумаге выглядеть?
>>3248304 Волшебная обезьяна предлагает тебе купить за 25050 рублей книгу на 25 тысяч страниц, после вдумчивого прочтения которой ты гарантированно найдёшь работу сеньором. Согласишься?
>>3248601 >>галерные изъебства. Наверно про смену проекта В галерах часто это не смена, а совмещения. Тебе говорят ну ты там работай 4 часа на одном проекте 4 на другом. При этом ПМ каждого будет думать что ты должен работать на его проекте по 8 и че то валоебишь. а продавать тебя будут как фултайм на каждом все равно Потом переведут на третий, а первый типа в поддержке, баги иногда поправить. А там багов будет дохуя, и на тебя будут переводить даже если сломал кто то другой. Фичу ж ты пилил - ну вот и чини. А заодно и добавь чутка функционала (переписав полпроекта)
>>3248661 В аутсорсе у нас так было. Вот особенно хуйня с багами. Кранч на текущем проекте, а там критический баг на завершенном, который на поддержке. И пиздарики. Тебя менеджеры мозг выносят. Но так как все свои это не особо большая проблема. А на аутстафе думаю еще хуже. А та галера как раз аутстаф.
>>3247373 Блять, а меня заебало другое. Разбираешь глубоко во всей этой хуйне, пересмотришь несколько роликов, почитаешь хабр. Узнаешь про разные необычные штуки: sequential consistency, safe publication, cache coherence. А потом через месяц забываешь нахуй всю эту неиспользуемую пиздолу и сидишь такой додик на собесе и не можешь вспомнить как синхронизаторы работают.
ПИШЕШЬ КОД @ ВСЕ РАБОТАЕТ @ ТЕСТЫ ПРОХОДЯТ @ СОБИРАЕШЬ JAR @ ДЕПЛОИШЬ @ НИХУЯ НЕ РАБОТАЕТ >write once run everywhere Пиздец жопа сгорела. Как блядь достать произвольный список папок из ресурсов чтобы это работало везде?
>>3249483 Кладу в src/main/resources папку pisya. В нее кладу папки popa1 и popa2. В них кладу какие-то еще файлы. Компилироваю. Хочу достать папки popa1 и popa2 из класспаса и все их содержимое (не вперемешку, а по очереди, потому что мне нужны имена папок popa1 и popa2).
>>3249500 Нет, собирается все правильно. Я использую PathMatchingResourcePatternResolver с паттерном "classpath:pisya/" и локально это работает. При запуске из джарника это не работает, и надо указывать "classpath:pisya//". Можно искать просто "classpath:pisya", если у полученного таким образом ресурса получить InputStream и прочитать, там вернется список вложенных файлов, то есть "popa1\npopa2\n". Но опять же, это работает только локально, в джарнике возвращается пустая строка.
>>3249558 >разделённые Нихуя не понял про что ты, но речь о том, что надо написать два разных метода если код запускается из тестов или из джарника, что вообще не имеет смысла, потому что тесты нихуя не тестят в итоге.
>>3249571 Ты бы хоть конкретный код принёс, вместо того чтобы просто кукарекать, петушара. Сдаётся мне ты просто долбоёб, потому что я никогда не сталкивался с различным поведением в тестах и вне, помимо очевиднейшего.
>>3250290 имплементацию ты создаешь на основе интерфейса А на скрине ты ничего не создаёшь, ты объявляешь ссылку в никуда, в которую можно записать адрес любого объекта, имплементирующего этот интерфейс
>>3250379 >array - массив >boolean - логическая (переменная) >int - целочисленная (переменная) >if-else branching - если-то разветление >void - пустая (функция) >exception throwing - выбрасывание исключений Как минимум. Конечно, те же свитчи зовут свитчами, функции процедурами функциями, матрицы матрицами, но твой ряя каргокульт не так силён, как ты думаешь. Порридж мог сказать "класс, реализующий интерфейс" и ни одно ебало не раскрыло бы своё хлебало, потому что всем насрать на то, что реализация - не русское слово. Вместо этого всех ебёт, как поток дерьма изо рта звучит и читается.
>>3250257 Грубо говоря: 1) интерфейс - это просто правило, какие функции(методы) должны быть внутри того класса, который реализует интерфейс. 2) класс - это уже тип. У классов бывают объекты, а потому можно делать переменные типа класса. Интерфейс означает, что тот или иной класс должен иметь определенные функции(методы). Но есть некоторое исключение - функциональные интерфейсы. Если делать более конкретное сравнение, то: Класс содержит описание методов(код, что будет выполняться при вызове метода) и какие-либо переменные, а интерфейс лишь объявляет, что должен содержать тот класс, который реализует тот или иной интерфейс. Так как взаимодействие с содержимым объекта с точки зрения ООП нужно делать через методы, то выходит так, что интерфейс лишь задаёт правило, которое состоит в наборе обязательных к описанию внутри класса методов.
>>3250426 Я, увы, не так крут для такого, но дам лишь несколько идей: 1) посредством сокетов реализовать взаимодействие виртуальных машин(процессов) и через эти сокеты вызывать и передавать результат. 2) посредством нативных методов(тут уже нужны знания c/c++) сделать общую память, в которой должно быть место для семафора, аргументов метода и результатов, и вызывать через семафоры.
>>3250374 > Я не за срусскость борюсь, а за некосноязычность. Имплементация звучит отвратительно, чистый каргокультизм. Причем тут «косноязычие» и то, как тебе там что-то не звучит? Это вопрос только стиля и твоих ощущений. На второе всем насрать по-умолчанию, первое в айти значения не имеет.
>>3250472 Я отвечаю на посты, в которых утверждается, что консноязычие определяется субъективной оценкой одного конкретного долбоеба > Я не за срусскость борюсь, а за некосноязычность. Имплементация звучит отвратительно, чистый каргокультизм.
Так что твой пост больше подходит в ответ ему. Хотя любой образованный человек (и не промытый совковым прескриптивизмом) понимает, что аппелировать к словарю и определениям не имеет смысла, потому что в высказывании определение истиннонстью или ложностью не обладает. Грубо говоря, высрать универсалию для конкретного термина можно любую.
Такая кринжевая языковая заносчивость от быдла сразу должна порицаться, потому что поправлять людей, когда всем все понятно и когда речь о сфере, где это нормально, будет только конченный мудак
>>3250484 > Так что твой пост больше подходит в ответ ему. Хотя любой образованный человек (и не промытый совковым прескриптивизмом) понимает, что аппелировать к словарю и определениям не имеет смысла, потому что в высказывании определение истиннонстью или ложностью не обладает. Грубо говоря, высрать универсалию для конкретного термина можно любую. Что блядь?
> Такая кринжевая языковая заносчивость от быдла сразу должна порицаться, потому что поправлять людей, когда всем все понятно и когда речь о сфере, где это нормально, будет только конченный мудак Одно дело понять, а другое дело понять без отвращения. И порицаться должно как раз извращение слов без практической пользы из мотивов каргокультизма.
>>3250485 > Одно дело понять, а другое дело понять без отвращения. И порицаться должно как раз извращение слов без практической пользы из мотивов каргокультизма. Отвращение это не объективный критерий. Объективным может быть только вывод частотности употребления из уже сложившейся привычки. Так мы можем сказать, вошло ли какое-то слово в привычку, или нет. Имплементация используется по аналогии с прямыми кадьками других предикатов, ничего особенного тут нет, нет и потери информации, и прочех негативных с лингвистической точки зрения эффектов. На этом разговор о практическом можно закончить.
Если говорить о субъективном, то в языке довольно многие явления могут раздражать. Например, редукция фразы «пока до свидания» до простого «пока» в начале прошлого столетия, что явно кринж. Но все теперь используют это слово в новом значении не задумываясь. Субьективное восприятие красоты тех или иных оборотов зависит только от моды, для одного поколения что-то будет звучать хуево, для другого — уже органично. Когда-то и слово кринж станет словарным и это процесс настолько неизбежен, что «бороться» с этим невозможно, и в общем-то не нужно. В любом случае, сейчас мы говорим даже не о таком диком примере, а о нормальной кальке, которая по какой-то причине смутила только тебя
>>3250497 В изначальном посте, на который я отвечал, косноязычность была определена через восприятие "звучания" слова, что зависит только от привычки и не является объективным критерием. Это так сложно для понимания?
>>3250487 Интерфейс не может иметь объектов так как является лишь набором каких-то обязательных функций(методов), но при этом интерфейс с одним единственным методом может быть чем-то вроде типа, для которого можно объявить переменную. В этом и исключение.
>>3250525 Функциональный интерфейс тоже никаких объектов не имеет, фактически тип объекта, который ты создал лямбдой, будет другим, как и в случае с анонимным классом, просто поскольку метод всего один, с лямбдой ты можешь использовать меньше слов для описания имплементирующего класса (или даже просто передать ссылку на метод). Тут никаких исключений нет
>>3250535 В этом и есть исключение, что для обычного интерфейса нельзя объявить переменную такого типа, а для функционального можно. И это есть то самое исключение: для интерфейса вроде бы и нет возможности сделать переменную(ссылку), но есть частный случай, когда можно.
>>3250536 Можно сделать тоже самое и с не функциональным интерфейсом, когда ты имплементируешь его анонимным классом, фактически создается новый тип, имеющий неявное название. Переменная типа интерфейса содержит такой объект, но его фактический тип, конечно, не тип интерфейса.
Когда ты делаешь это анонимным классом, тебе надо указать названия методов, это очевидно. Если метод один, то можно указать только параметры и реализацию (что ты и делаешь с помощью лямбды)
Как видим, это не исключение.
(Я не совсем понимаю твою формулировку "сделать ссылку для интерфейса". Можно сделать ссылку типа интерфейса, но нельзя сделать объект типа интерфейса. Это правило работает без исключений)
>>3250538 Я не могу сделать ссылку на интерфейс ни с несколькими методами, ни с одним. Я могу обьявить ссылку типа интерфейса и посместить в неё объект типа, реализующего этот интерфейс, при этом не важно, сколько методов описано в этом интерфейсе. Если их много, я использую анонимный класс, если один — более короткую форму записи, лямбду Принцип этих действий олинаков, создаётся новый тип с неявным названием
- С какими версиями джава работали? - 8, 11, 17 ,21 - Ого!!! Ничего себе, какой у Вас большой опыт
Нафиг они вообще это спрашивают? Что им с того, что я в копролите с брейками в свичах ковырялся или рекордами под хвост баловался? По сути никой разницы в разработке - на чем проект на том и пишешь
>>3251095 Ты не поверишь, они реально считают по буквам. Я работаю с дотнетом с 2006 года, видел взлет и падение всех фреймворков, кроме геймдева. В резюме написано просто .NET и MSSQL. Мне как-то девочка заявила: вы нам не подходите, потому что у вас указано мало технологий. Вакансия была в днищенскую галеру, куда я подался просто освежить знания перед другими собесами.
>>3251095 именно так это звучит бредово, но при мне одному чуваку чуть не отказали, потому что у нас в требованиях стояла java 8, а он написал java 1.8 ну и требование знать java, java 8 и java 21 не думаю что кого-то удивляет уже
>>3251216 > ну и требование знать java, java 8 и java 21 не думаю что кого-то удивляет уже А нужно знать javac, javap? Знание jshell будет плюсом? jar?
>>3251425 Назовите хоткей, чтобы авто импортировать класс по первым буквам в shell Напишите на листочке команду, чтобы установить vscode как редактор для jshell Назовите хоткей, чтобы создать jshell черновик в идее Перечислите все ключи jshell по алфавиту
Что? Ага, мням мням... Понятно... Мы вам перезвоним....
>>3251552 У меня давно был разговор с ХРом на какой-то реверс инжиниринг, спрашивает: - Нам нужен человек, который понимает как программа работает внутри, вы знаете как именно программа работает внутри? - Ну, вы упомянули знание системы контроля версий, программ сборки, то есть у вас есть исходный код? - Я не знаю, это вам ответят тех специалисты, вы просто скажите - вы знаете как программа работает внутри? - Да
Шалом, анон, доставь советов мудрых. Какие книги купить по спрингу (не бут) и джаве чтобы наконец почувствовать себя мидлом? 2.5 года опыта, читал статьи баелданга и стековер
>>3252458 Книги не помогут и никогда не помогали. Чтобы почувствовать себя мидлом - тебе нужно походить по интервью, посмотреть что ожидают от мидла, чаще всего это не книжные знания.
Нахуя этот еблан описывает случай где в публичном утилитарном классе красуется публичное поле. Буквально ноль шансов что кто-то будет так писать, ещё с таким важным ебалом дальше пишет что проблему можно решить композицией и с гордым видом делает поле прайват файнал,а на метод вешает смнхронайзд,я в ахуе с этого шиза
>>3251095 Дружок, это мало, накинь еще несколько фрейворков спринга - секьюрити, дата жпа, спринг тест и т.д., штук 5 баз данных, куда без докера, хибернейт, но он входит в спринг дата, будет желательно у них будет это знание сиай сиди, линукс, хтмл, си эс эс, джава скрипт, тайпскрипт базовый, немного ангуляра или других фронтенд фреймов
>>3252543 Пользуюсь жидеей и терплю постоянно её баги. Если бы я не был порриджем, которому важен дизайн, я бы писал в эклипсе, а есди бы сразу знал про баги жидеи и не привык бы к ней писал бы в вс коде.
>>3252648 > Вырвиглазно Что там вырвиглазно? В эклипсе душевность какая-то есть, приятно в нее заходить, в отличие от бездушной идеи. Чувствуется, где хорошие ребята пилят, а где жиды последние
Есть у кого то гайды как максимально лайтово перекатиться с андроид разработки на бекенд. Джаву соответственно более менее знаю. Какие щас фреймворки или пакеты нужно учить и в каком порядке чтобы собес пройти?
>>3252542 Фронтенд нельзя указывать, за те же деньги заставят задачи по фронту делать. Как в армии - кто не курит фронтенд в резюме указал задачи по фронту делает, у остальных - перекур
>>3252611 >а есди бы сразу знал про баги жидеи и не привык бы к ней писал бы в вс коде. Я за неделю пересел на vscode, сложнее всего было привыкнуть к внешнему виду. Правда на расте пишу. Из минусов lsp сервер не такой отзывчивый (не знаю как там у вас работает), исправляя ошибку надо ждать пока оно там подумает пару секунд и только потом перестает быть красненьким. Не хватает вменяемой поддержки sql, тут как-то все криво и запросы в строках не распознает. А в остальном все тоже самое, но не виснет когда набираешь текст и когда открываешь большой проект он открывается сразу и можно смотреть код, а не ждать индексации. Меня больше всего это бесили эти 2 момента
>>3252626 >Комп купи, нищепидар. Эта хуйня будет тормозить даже на суперкомпьютерах в лабораториях в Калифорнии
>>3252745 Нет, это когда спрашивают базовые вещи, потом просят посмотреть код что не так, передача по ссылке/значению, немного про ГЦ. Всё, принят, 1 тех интервью.
>>3252742 >Какие щас фреймворки или пакеты нужно учить и в каком порядке чтобы собес пройти? Ну это же очевидно - Spring (Boot) Core/MVC/Data, Hibernate, плюс знать всю экосистему - JDBC, SQL, Postgres/Oracle DB, Gradle/Maven Вот это прям базовая база, дальше вариации на тему могут быть
>>3252973 А есть в бекенде вот какой то проект который как бы если ты склепал то уже считай на собесы ходить можешь. Ну вот типо на ведре если ты там можешь сделать какой нибудь туду список с запросами в веб то уже для работы годишься. Есть какой то такой минимальный проект для бека чтобы знать что если тв его сделал то уже худо бедно шаришь?
>>3253428 У меня был кейс когда надо было сходить в одну базу,потом к полученным сджоинить данные из второй или третьей базы,в зависимости от того кто быстрее ответит. У меня все сломалось на первом же запросе
>>3252535 он же не делает этого в показанном тобою скрине. композиция с прайват полем это вообще случай не то чтобы уникальный, а важный в том плане, что никто не будет вмешиваться в твою синхронизацию. типа представь свое ебало, если кто-то поймает единственный Object#notify извне? а они липкие.
я вообще в ахуе с того как ты долго это читаешь и все также тупишь, лол.
>>3253845 Шилдт, срыг в действии, многопоточко на практике. Хотя судя по опыту анона выше, для последнего, оказывается, нужен уровень интеллекта выше минимального.
Доброй ночи. Помогите, о великие джависты. Что делать с этой хуйней? Она и в idea и в vs code. Никак не могу понять почему она появилась и как пофиксить
>>3253850 1. Если ты пользуешься внутренней системой сборки жидеи, переходи на мавен, можно будет хотя бы пытаться разбираться, в чём дело. 2. Перезапусти жидею полностью.
>>3254113 При наведении на "fasterxml" пишет "Cannot resolve symbol 'fasterxml'" И предлагает решение
Find JAR on web
После нажатия на которое высвечивается
No libraries found for 'com. fasterxml. jackson. annotation. JsonAutoDetect'
Она как в Idea, так и в vs code. Что на Windows, что на Linux. Переустанавливал все по несколько раз, ничего не помогает. Добавлял нужную библиотеку вручную - тоже самое. SDK man также наотрез отказывается устанавливать что-либо, выдает ошибку на этом этапе. Даже нейросетку подрочил, ничего не получается
Впервые столкнулся с Maven, поэтому точно не могу понять, что надо сделать.Как отредактировать этот код (простите), чтобы все заработало?
>>3254129 В идее в правом боковом пространстве есть вкладка мавен,выбери там clean и package это должно пересобрать твой проект и подгрузить все зависимости
Ребят, поясните про сериализацию. Если я определил свой writeObject() и не использую там defaultWriteObject(), чем это отличается от writeExternal()? И зачем он нужен тогда, просто указать, что класс должен переопределить эти методы?
IntelliJ IDEs now support Wayland (experimental)
Аноним23/08/24 Птн 07:34:13№3254423214
Жаваны, выручите пож. Очень хочу скидку 15% в яндексе на курс (буду вкусно кушать на сэкономленные деньги), бахните кто-нить первую тему по рефералке. Таким опытным чубрикам как вы делов на 10 минут.
> CommandHandler<C extends Command<R>, R> Это значит что при имплементации этого интерфейса ты можешь заюзать любые классы вместо C и R. При условии что C наследуется от Command<R> > public class CreateCustomerCommandHandler implements CommandHandler<CreateCustomerCommand, Customer> Пример такой имплементации. > public <C extends Command<R>, R> R handleCommand(C command) { Метод, который будет вызывать этот интерфейс.
Если у меня в микросервисном проекте используется Eureka Server и Config Server, то как их можно защитить от несанкционированного доступа? У меня для всех конечных точек сервисов используется JWT и только перечисленные выше два сервиса без Spring Security. И стоит ли вообще их делать для них? Мне кажется что Eureka Server обязательно, т.к. мы же можем там получить информацию о всех доступных репликах и натворить делов, но на ум приходит только какая-нибудь форма с логином и паролем. А для Config Server пока не приходит в голову как реализовать авторизацию. Там же ничего нет, этот сервер просто раздает ресурсы. Или всё же можно как-то получить доступ к конфигурационным файлам и что-нибудь изменить?
>>3254433 > Сериализация депрекейтед чел Хм, ну я по книжке Хорстманна иду, там есть. В любом случае, эта тема на день была, просто один вопрос остался Вот бы найти опытного джависта, чтобы помогал. Но я социопат
Аноний, посоветуй как лучше сделать для spring-приложений в целом.
По воле случая пришлось параллельно брать руководство над java-командой и вкатываться в неё (сам дотнетчик бывший и вообще руковод angular-разработкой, такие дела), и что мне серьёзно не нравится, это куча проблем в проекте, среди которых: 1. Вообще не расписано нихуя в application.yml и application-local.yml. То бишь нет ни комментов, ни документации, ни даже общего набора свойств, чтобы их количество в обоих файлах сохранялось. Такое бесит до одурения 2. Сам maven, settings.xml и pom.xml. Дело даже не в том, что он многословен, а в том, что подход работы maven контринтуитивен тому же .net cli, npm и прочему, где одна команда делает только то, что в ней забито, а не выполняется куча ебучих целей по lifecycle, которые приходится скипать доп.аргументами. Может, конечно, я пока читал жопой и не до конца разобрался, как это конфигурировать правильно 3. Код нихуя почти не документирован, у меня прям жопа горит с этого. Как коллеги разрабатывают это уже который год я ума не приложу. Даже ебучий ман как запустить проект я писал самостоятельно, потому что это знание, словно, блядь, предание какое-то древнее передавалось исключительно из уст в уста 4. Легаси-легаси-легаси. А также охуеть какой техдолг. Только недавно провели миграцию на spring-boot 3.1.2 и java 17, но куча говен различной степени поршивости ещё присутствует в проекте. Нет, анончик, это не мой порыв просто всё взять и переделать, потому что так захотелось, это необходимость: когда у тебя в проекте error-code буквально генерится РАНДОМОМ -- это зашквар ебаный. Не говоря уже о проблемах с производительностью и том, что микросервисы даже порой взаимодействуют не только со своей схемой БД, а общаются между собой не через kafka, а простыми запросами по HTTP, в которых порой нарушается data contract
Короче, план действий у меня такой: 1. Возможно, провести миграцию с maven на gradle для облегчения конфигурации и настройки lifecycle 2. Дотьюнить набор необходимых --add-opens для старта проекта в связи с миграцией на java 17, чтобы исключить набор плавающих ошибок (банально, чтобы нормально работал и не падал ignite в рандомный момент времени) 3. Нормально прописать application.yml и application-local.yml 4. Перейти на OpenFeign для настройки httpclient, вместо resttemplate 5. Начать перепиливать кал на что-то более вменяемое одновременно с самодокументацией
>>3255181 >1. Вообще не расписано нихуя в application.yml и application-local.yml. Хуйли там тебе расписывать? Поищи классы которые маппятся на эту парашу по аннотации @ConfigurationProperties. Там по идее комменты могут быть. А могут и не быть, я хуй забил их писать. >2. Сам maven, settings.xml и pom.xml. >Может, конечно, я пока читал жопой и не до конца разобрался, как это конфигурировать правильно Там уже скорее всего все настроено. CI/CD дернет clean verify, а дальше уже запихнет в докер. >3. Код нихуя почти не документирован, у меня прям жопа горит с этого. А хуйли там что-то писать если процентов 90% кода это бойлерплейт? Помечать докой геттеры? Единственный раз когда мне более менее пригодились комменты - это не в коде, а в тестах, когда дико заебистый алгоритм был. >когда у тебя в проекте error-code буквально генерится РАНДОМОМ -- это зашквар ебаный Это к легаси никакого отношения не имеет. Просто раздолбайство. >микросервисы даже порой взаимодействуют не только со своей схемой БД Это как? В чужую лезут? >общаются между собой не через kafka, а простыми запросами по HTTP, в которых порой нарушается data contract Нарушение контракта не хорошо, но если надо какую-то синхронную парашу протащить через несколько сервисов - другого выхода тупо нет. >провести миграцию с maven на gradle Градл хуита. Не трогал бы эту хуиту и 10 метровой палкой. >Дотьюнить набор необходимых --add-opens У тебя какая-то странная хуйня происходит в проекте. Мы на 21 перекатили и нихуя не дотюнивали.
>>3255181 >Возможно, провести миграцию с maven на gradle для облегчения конфигурации и настройки lifecycle Возможно у тебя другой опыт, но грэдл - это пиздец и миграция на него не облегчение. Он настолько нестабильный, что любое обновление даже патч версии может тебе все нахуй сломать. А уж проблемы с совместимостью апи плугинов - это вообще стандарт
Не знаю что ты там делаешь мавеном, но обычно им можно делать куда боле простые и переносимые билды
>>3255181 >4. Перейти на OpenFeign для настройки httpclient, вместо resttemplate Опять же, тяга все решать хайповыми фреймворками - это признак джуна или джсера. Нужно оценить не добавить ли сложности опенфейн, может там и ресттемплейта по горло хватает
>>3255181 >микросервисы даже порой взаимодействуют не только со своей схемой БД, а общаются между собой не через kafka, а простыми запросами по HTTP Это действительно ужасно
Судя по твоему описанию, возможно там микросервисы там не такая уж удачная затея и возможно многие из них можно просто слить воедино
>>3255725 Декларативный http-клиент. Ну т.е. принцип как в JPA - нарисовал интерфейсы, дальше оно само. Смысл - меньше бойлерплейта. В свежем спринге подобное уже из коробки, как выше заметили.
Даже если в проекте настолько все плохо, насколько ты расказываешь, уже по твоему плану и бэкграунду видно что ты не тот человек который способен переломить негативную тенденцию. Ты сделаешь проекту только хуже - даже если бы ты просто взял, пустил всю команду по пизде, нахайрил дотнетчиков и переписал все нахрен на шарпы с нуля, а потом на дваче кичился бы тем, какой ты охуенный шарпей, и какие джаваны идиоты, это и то было бы продцуктивней. Ты же прицепился к градлу с фейном как к какой то панацее, при этом судя по тому что ты написал сам с ними никогда не работал. Доебы какие то детские до мавена опять... если тебе мавен контринтуитивен, проблема в тебе, а не в мавене, миллионы мавеноюзеров не могут ошибаться на этот счет. Ты просто проебешь на этот переход кучу человекочасов и все станет контринтуитивно не только для тебя, но и для команды, и ничего ты этим не добьешься.
Просто съеби и уступи дорогу кому нибудь с джавовым бэкграундом, не мучай себя и людей. Или хотя бы найди в команде адекватного разраба на джаве, делегируй ему верховные техлидерские полномочия, а сам тюнь процессы.
>>3255863 Да это кстати траллинг какой-то я в жизне не поверю что в живой проект запустят человека со стороны еще и с тупо другим тех бэкграундом. Учитывая что там есть какая-то команда и легче назначить кого-то из них.
Здарова, помогите пожалуйста, создал рест апи круд, у меня есть 2 модели - автор и книга, связал их через мэни ту мэни, добавил метод для добавления книги к автору через айди, методом PUT, выполняю этот запрос, возвращает автора и по ключу "книги" правильно выдает книгу, но проблема в том, что при запросе ГЕТ этого автора, по ключу книг уже пустой список, хотя таблица связей авторов и книг в базе данных сохраняется, чат гпт не помогает, вообще не пойму в чем проблема, заебало, вот код https://pastebin.com/nHSTWuXR Я поудалял лишние методы, типо добавить, обновить и прочее
>>3256152 Создал еще один проектик с нуля, по минимуму, пара моделей и минимум необходимых методов, чтобы проверить еще раз, та же хуйня, у меня почему то при гет запросе не мапятся связанные сущности по таблице, я и базу данных менял, хуй знает что я не так сделал, это пиздос, ладно, передохну и пойду гайды у индусов смотреть
>>3256152 Пиздец, наконец разобрался https://jpa-buddy.com/blog/lombok-and-jpa-what-may-go-wrong/ Не используйте ентити и дата вместе, потому что в дате есть аннотация @EqualsAndHashCode, которая ломает работу с спринг дата жпа и дженериком сет<>, наверное для здешних это очевидно, но я наступил на эти грабли
JIT-компиляция и подводные камни
Аноним25/08/24 Вск 20:28:43№3256239264
Какие есть подводные камни у jit-компиляции? Верно ли я понимаю, что при jit идёт перенос арифметических и побитовых логических операций на железо напрямую?
Аноны, помогите чем можете. У меня томкат не хочет через адресную строку переходить по страницам. Я его уже и переустанавливал и гуглил все что можно, не помогает Каждому по килограмму ключей от софта , кто поможет!
>>3256422 Не помогло, а может я просто тупой и где-то накосячил. Как же я ненавижу томкат. Почему на ГОшке все интуитивно + встроено в язык, а тут через *опу
>>3256431 Спринг какой версии? спринг 5 вроде работает с 9 томкатом, а 6 - с 10+. > Почему на ГОшке все интуитивно + встроено в язык, а тут через *опу В спринг бут томкат встроенный и настраивать его не надо, как дойдешь до него, будешь кайфовать.
>>3256469 >В спринг бут томкат встроенный и настраивать его не надо, как дойдешь до него, будешь кайфовать А я сразу со спринг бута начинал, ну то есть сначала разобрался с основой спринга, разобрался что такое депенденси инжекшен, научился через бины и спринг контекст это реализовывать и сразу после этого пошел крудошлепить, на реальных примерах намного легче и интересней сразу учеба пошла, а по ходу дела уже теорию изучал где не понимал
Вы абсолютно правы, если в методе `run()` имя потока отличается от потока, в котором работает бин, запускающий этот метод, это однозначный признак того, что метод был вызван асинхронно.
В этом случае Spring действительно использует прокси, но не в том виде, как вы могли бы ожидать.
Как Spring работает:
1. @EnableAsync: Эта аннотация включает асинхронное выполнение в Spring. 2. Проксирование: Spring использует CGLIB (Code Generation Library) для создания динамического прокси-объекта для ваших бинов, помеченных `@Async`. 3. Асинхронное выполнение: Когда вы вызываете `run()` через прокси-объект, Spring не выполняет метод `run()` непосредственно. Вместо этого Spring создает новую задачу и отправляет ее в пул задач, указанный в `@EnableAsync`. 4. Новый поток: Пул задач запускает задачу в новом потоке, и именно в этом новом потоке выполняется ваш метод `run()`.
Почему мы не видим прокси-класс:
- Spring использует CGLIB для создания прокси, а CGLIB работает с помощью расширения классов. Он не создает отдельный класс прокси, как это делает стандартный прокси-паттерн Java. Вместо этого он модифицирует существующий класс. - В результате, вы не увидите в коде имя класса прокси.
Пример:
Представьте, что у вас есть класс `MyBean` с методом `myMethod()`, помеченным `@Async`.
1. Spring создает прокси-класс, наследующий от `MyBean`, с помощью CGLIB. 2. Когда вы вызываете `myBean.myMethod()`, Spring на самом деле вызывает метод `myMethod()` прокси-класса. 3. Прокси-класс перехватывает вызов, создает новую задачу и отправляет ее в пул задач. 4. В пуле задач задача запускается в новом потоке, и именно в этом потоке выполняется `myMethod()` оригинального класса `MyBean`.
Заключение:
Хотя вы не видите прокси-класс напрямую, он все равно существует и используется Spring для асинхронного выполнения. CGLIB работает "под капотом" и обеспечивает прозрачную асинхронную обработку ваших методов.
This phrase likely describes a high-performance, highly available system expected to handle 5,000 requests per second, support 20 million daily active users, and achieve an availability of 99.99999999%. This would be a system designed for extreme reliability and scalability.
>>3256574 >Перспективы для Java-разработчика или почему ты не хочешь вкатываться в джаву Примерно с начала 2023 вкат в айти закрыт, и это, при ретроспективном наблюдении спустя два с половиной года после начала конца, будет с нами навсегда. ИИ пузырь лопнул, политические причины в России теперь мало влияют на рынок, но к тому, что было раньше рынок IT не вернулся даже близко. За всё время оттепели рынок вырос процентов на 10%, и, похоже, вышел на плато. Такими темпами мы даже к 2030 году, когда ИИ будет на самом деле заменять программистов полностью, не получим рынка, в который возможно вкатиться.
Если же, всё же, говорить про успешный вкат, то джава это в основном работа на визгливого менеджера, часто женщину с фетишем на фемдом, который она высовывает далеко за пределы секса, на помойных проектах со спрингом и говнокодом, иногда с легаси говнокодом. Годнота среди галер, тем не менее, тоже есть.
Фриланса на джаве за исключением майнкрафта нет, но в копрокубах деньги не водятся (анальник на спринге на одну свою среднюю зарплату может выкупить всю сферу), благодаря бесчисленным толпам школьников, готовым работать за едудонат на сервере: средняя цена за плагин для майнкрафта на весну 2024 года около 250 рублей.
"Чёт хуйня! Мне не нравится. Может, другой язык выбрать?", или почему ты, всё же, хочешь вкатываться в джаву В других языках ещё хуже. Как по перспективам для вката, так и по качеству языка.
Ранее писал вопрос про подводные камни JIT-компиляции. Так вышло, что тут мне толком никто не ответил, однако сегодня путем эксперимента удалось выявить, что при jit-компиляции каких-то очень нагруженных методами классов java съедает чуть ли не в два раза больше памяти, чем при отсутствии jvm-компиляции(посредством использования флага -Xint)
Насколько я понял, Идея сейчас по подпис_очке, никаких ключей больше нет. Нужно либо EAP использовать, либо крякающий плагин от какого-то пиздоглазого лол. Если прям дохуя надо, могу скинуть сайт с этим говном, но на свой страх и риск.
>>3257152 Ты херней занимаешься, что значит потребляет больше памяти? Кто потребляет: куча, служебные области, офхип? Сколько в хипе живых объектов? Ты просто увидел некий эффект от включения JIT и начинаешь фантазировать на тему причин этого, вместо того чтобы искать эти причины.
Размер объекта всегда один и тот же, тупо потому что один и тот же объект может использоваться как в скомпилированом коде, так и в интерпретируемом. Поэтому заголовок, размеры полей и их порядок фиксированы для всех экземпляров объекта.
Самое очевидное предложение почему так происходит: скомпилированный метод работает быстрее и производит больше мусора, потому JVM зарезервировала больше места под кучу. Но это надо проверять.
Допустим у меня есть какой-то шаблон страницы, thymeleaf, freemarker, неважно. Как я могу узнать полный набор параметров, который нужен для его рендеринга? Как я могу узнать нужные типы параметров, чтобы построить json схему для описания входного объекта, например?
>>3257764 Без сильной мозгоебли - скорее всего нет. Потому что какие-то параметры например могут не работать из-за всяких if всередине темплейта или еще макросы / подгрузка темплейтов извне. Можно чисто ради интереса попытаться соорудить некий обьект который будет вести себя как контекст с переменными и кидануть его в темплейт чтобы он просто фиксировал обращения, но это может быть геморно и ты врядли поймешь какие типы нужны.
Привет, новичковый вопрос, я правильно понимаю, что в spring data jpa встроен хибернейт, который использует апи jpa и это по сути абстракция над базой данных, которая за нас делает всю работу с бд, а jdbc это уже устаревающая технология, это по сути просто драйвер, благодаря которому можно легко переключать разные бд и не менять при этом код, но sql запросы все равно придется прописывать. То есть все равно sql знать нужно, чтобы хотя-бы понимать что происходит на уровне ниже, если даже в проекте будет использоваться дата жпа, да и sql это база для бекенда. Что еще такого есть в спринге, что скрыто в новых реализациях, но знать надо? Например в спринг мвс есть какие-то сервлеты, это оно? Что еще есть?
>>3257850 чтобы использовать хибернейт надо знать sql в два раза лучше. Чтобы понимать что сгенеренные запросы говно и как заставить эту дрянь делать относительно нормальные запросы
Ладно, чуть перефразирую вопрос >>3257850 Вот есть спринг фреймворк - это сама база, IoC контейнеры, депенденси инжекшен, вот это вот все, а спринг бут это уже современная реализация, где под капотом скрыт спринг фреймворк, собираюсь выучить сам спринг фреймворк, лучше это сделать сразу, или после того, как разобрался в спринг бут, создал пару крудов, как считаете?
>>3257951 Наверное ты прав, сам начал с кора, поделал пару бин контейнеров и пошел на спринг буте писать, начали появляться всякие баги, которые пофиксил кое как с чат гпт, последую твоему совету и полностью разберусь с кором, если надоест, буду чередовать с основным проектом на буте
>>3258596 Это вкатунское говно усирается, что у него тормозит на нетбуке за 10к. У нормальных людей все работает. А эклипс я в гробу видел, наработался уже в десятых на нем, спасибббба
>>3258608 Для вкатунов как раз и лучше сразу привыкать все руками писать в эклипсе, жидея много работы за тебя делает и толком ничему не научишься, а насчет багов, они не от железа зависят, в треде много раз писали, что баги в этой иде и приходится по 5 раз на дню перезапускать
>>3258611 >>эклипс, нетбинс Дизайн из девяностых, выглядит как говно, пользоваться просто неприятно. Уж лучше вскод.
>>3258611 >>Никто в нем не работает У лида видел. У фулстеков и тестировщиков попадается. Экслипс не видел ни разу. Кроме джавистов про него никто и не знает даже.
>>3258625 >>лучше сразу привыкать все руками писать в эклипсе, жидея много работы за тебя делает и толком ничему не научишься Серега, как раз наоборот - идея терпеливо объясняет почему код не скомпилируется или плохо написан, расставляет точки с запятой, дописывает бойлерплейт и позволяет вкатуну не отвлекаться на это говна и сосредоточиться на самой логике. На эклипсе он напишет говно код и будет рад, на идее увидит что все подчеркнуто варнигами и полезет читать что не так с его кодом.
>>3258686 > Дизайн из девяностых, выглядит как говно, пользоваться просто неприятно. Уж лучше вскод. Нравится-не нравится, терпи, моя красавица. Нет таких проектов, где работают в вскоде, скажут сидеть в нетбинсе, будешь придрачиваться. А эклипс очень даже хорош Вскод как по мне в мелочах всратее
>>3258712 Я не настолько избирательный, заплатят, буду джава 5 ковырять. Это педики всегда нос воротят от мужской работы > иде для джавы это жидея И вскод, судя по твоим постам
>>3255181 Нафига тебя нагрузили этим, если ты не специалист в Java ? Судя по тому что ты расписал, тебя ждет веселуха. Вот был бы я с вами, все б разрулили. В твоем плане есть прорехи, которые как раз от того, что с джавой и спрингом ты не работал. Вот смотри:
>2. Сам maven, settings.xml и pom.xml. Дело даже не в том, что он многословен, а в том, что подход работы maven контринтуитивен тому же .net cli, npm и прочему, где одна команда делает только то, что в ней забито, а не выполняется куча ебучих целей по lifecycle, которые приходится скипать доп.аргументами. Может, конечно, я пока читал жопой и не до конца разобрался, как это конфигурировать правильно
Он кажется тебе контринтуитивным, потому что ты с ним не работал. Да, Maven староват, но вполне себе еще рабочее решение. Если ты сейчас начнешь переделывать все на gradle, потому что там build файл по размеру меньше, ты захлебнешься в работе. Поверь, это сложная миграция. Без супер нужды, я бы не стал этого делать, если только для нового проекта брать.
>3. Код нихуя почти не документирован, у меня прям жопа горит с этого. Как коллеги разрабатывают это уже который год я ума не приложу. Даже ебучий ман как запустить проект я писал самостоятельно, потому что это знание, словно, блядь, предание какое-то древнее передавалось исключительно из уст в уста
Ну здесь видимо потому что поленились. Они работали долгое время на проекте и лично им это было не нужно, они все из кода понимали, вот и не написали. Это классика) Остались контакты бывших разработчиков для консультаций?
>когда у тебя в проекте error-code буквально генерится РАНДОМОМ Пхахахахахахаха! Пиздец!)
>что микросервисы даже порой взаимодействуют не только со своей схемой БД, а общаются между собой не через kafka, а простыми запросами по HTTP, А вот здесь не очень понял? Что плохого, если микросервисы общаются по ресту? Ну да, там будет небольшое латенси из-за сети, но кафка только для асинхронного взаимодействия, а если тебе ответ нужен прямо здесь и сейчас ?
>2. Дотьюнить набор необходимых --add-opens для старта проекта в связи с миграцией на java 17, чтобы исключить набор плавающих ошибок (банально, чтобы нормально работал и не падал ignite в рандомный момент времени)
"Дотьюнить", ну насмешил. Напихать --add-opens это не решение ) Нужно переписывать код по-хорошему. Никто уже игнайт не использует, он написан для джавы версии "говно мамонта", поэтому пока не будет рефакторинга на нормальную альтернативу, у вас будет все на соплях держаться. Если Игнайт у вас как кэш идет, то надо менять на Hazelcast или Redis.
>3. Нормально прописать application.yml и application-local.yml
Чо значит "нормально прописать"? Чаще всего в пропертях стоят стандартные свойства, которые используются стартерами спринг бута, можно кликнуть на них и посмотреть исходник, там есть документация. Или там какие-то самописные свойства?
>4. Перейти на OpenFeign для настройки httpclient, вместо resttemplate
Зачем?? В Spring Boot есть WebClient, рекомендованный документацией, с помощью которого можно писать как синхронный, так и реактивный-асинхронный код.
>5. Начать перепиливать кал на что-то более вменяемое одновременно с самодокументацией
>>3255181 >А также охуеть какой техдолг >сам дотнетчик Еще один "улучшатель" и тем более шарпомуха, лол. Не разобрался в проект и уже выдал свое "ценное" мнение. Такие улучшатели потом жидко дают в рейтузы и бегут обосранные менять работу, т.к. въебали 1.5кк человеко часов и нихуя не сделали
Почему SceneBuilder для JavaFX такое глючное говно? Несколько раз запустил его и пропали сначала все элементы интерфейса, а потом начали пропадать категории. Как это исправить?
>>3260574 В коде с var хотя бы не надо указывать типы по два раза. Впрочем я бы и рад вообще ровно ноль раз их указывать, пусть компилятор этой хуйней мается; он уже чекает сабтайпы и умеет находить наиболее общие типы. >>3260863 >Про дженерики сокращён раздел Что типа среднему жавану нахуй не нада? >>3261748 22 и 23 жаба проходняк, что еще обсуждать?
>>3262199 Лум вот тоже долго пилили и быстро выкатили, в 19 превью, в 21 релиз. Но аналог 19 в цикле 21-25 это 23, и там вальхаллы нет, поэтому я говорю, что может быть превью только.
>>3262175 Как и с любым концом света - вальхала уже почти наступила, уже прям скоро, но не в следующей версии, но вы продолжайте верить. Хотя лума дождались, мб и до вальхалы доживем.
Господа, какая работа в Джаве? Я правильно понимаю, что 99% вакансий -- это настройщик Спринга?
Правильно ли я понимаю, что спринг-работах довольно сложно себя проявить что-то оптимизировать, применить хитрый алгоритм и т.д., потому что все под толстым слоем магии.
>>3262506 > настройщик Спринга Настройщик срыга это больше шутка, чем реальность. Срыг-программист очень многое пишет сам как белый человек и около 30% времени тратит на пердолинг срыга для достижения того, на что без срыга было бы потрачено 5% времени.
>>3262506 Да, это так. К сожалению, с этой работой - просто сделать хорошо, просто и быстро - большинство не могут справиться и начинают наворачивать микросервисы на кубернетисы. Работа на джаве - это не проявление себя, это решение бизнес задач, а они в большинстве своём алгоритмически предельно тупые.
>>3262288 >Хотя лума дождались, мб и до вальхалы доживем. Ну вот реально - зачем? У тебя конкретно был ботлнек на IO? Или ты в своем проекте вручную раскладывал байтики по массивам?
>>3262547 >около 30% времени тратит на пердолинг срыга для достижения того, на что без срыга было бы потрачено 5% времени Точняк! Делов то doPost(HttpServletRequest, HttpServletResponse) написал, web.xml отредактировал и всё.
>>3262559 Лум это решение проблемы 10к. Теперь не надо ебаться в асинки и писать как раньше, в тупую создавая мириады тредов. По поводу байтиков, лично ты этим не занимаешься, но хэшмапа, к примеру, занимается. Там ебать какая экономия выходит, если посчитать. Также и с LinkedList, возможно к нему наконец найдется применение. Ну и самое главное в вальхалле это даже не перфоманс, а возможность пихать примитивы в женерики и коллекции без накладных расходов.
>>3262595 >Теперь не надо ебаться в асинки и писать как раньше Так и раньше не надо было, большинство ПО работало на обычных тредах без проблем, потому что такой нагрузки нет практически ни у кого
>>3262684 >такой нагрузки нет практически ни у кого Ну тут хуй знает, статистика нужна, но на слово поверю. Мне тоже не кажется, что лум координально что-то поменял. Вальгалла в этом плане для меня важнее, поскольку делает мост между примитивами и объектами. Но я бля вообще не верю, что через год она будет в превью, да даже в инкубаторе.
>>3262643 бесплатно может на торентах найдешь от фирмы ОТУС. А вообще нормальный курс по спрингу у них стоит больше 100 тыс, можешь чекнуть. Сам его покупал и это топчик.
>>3262506 >>сложно себя проявить да, тебя будут закидывать рутинными тасками и тебе самому не очень будет хотеться брать что то сложное
>>что-то оптимизировать, применить хитрый алгоритм Таких моментов дохуя, но они завязаны на бизнес логику. Дроченые литкоды не помогут, надо глубоко понимать куда код писать. В целом нет правильного решения, есть много трейдофов и скил в том чтоб правильно подобрать вариант.
Ну и если времени дохуя - можешь запросы в базу пооптимизировать, но не всегда от этого реальный выхлоп будет заметен.
Я правильно понял, что например List<T> может содержать одновременно и объекты класса Т и его наследников одновременно, а List<? extends T> может содержать объекты только одного типа, либо Т либо наследники?
>>3262814 >List<T> может содержать одновременно и объекты класса Т и его наследников Да. >а List<? extends T> может содержать объекты только одного типа, либо Т либо наследники? Нет. Сделать мономорфными списки сложно. Этот вайлдкард подразумевает, что перед тобой список, который может быть как T, так и выше, а следовательно добавлять в него элементы нельзя. Иначе выражаясь, везде где будет в аргументах методов List указан T, с вайлдкардом extends их больше нельзя будет пихнуть, ибо небезопасно
>>3262828 Нуу... Как нельзя) Из этого есть два исключения. Первое очевидно null, поскольку это подтип всех типов. А вот второе очень интересно с т.з. системы типов, поскольку оно как бы берет и сжимает capture до переменной типа, как бы превращая это множество в некий тип.
>>3262759 в том что там есть домашние работы, которые проверяет препод помогает тебе делать правильно, а не абы-как если ты сам делаешь домашки в одного по спиженым с торентов курсов. Ну + еще в чате можно всегда у препода поинтересоваться, как сделать правильно то или иное решение.
>>3262837 Да уж, нагрузил ты меня, ну суть я вроде уловил, что при инициализации списка с вайлдкардс тип у списка может быть любой, он явно не указан, поэтому компилятор не разрешает туда добавлять элементы кроме null, а капчур конвеншен это как я понял приведение из неявного типа дженерика в явный, в общий, пошел я спать короче
>>3262897 Вроде все так. Кстати, не стоит заостряться на контейнерах, типа хотя обычно дженерики только для всяких листов и используют, но они этим не ограничиваются. И мыслить онли в парадигме, producer = extends, consumer = super (PECS) не стоит.
Ты смотри на это не с точки зрения самого списка - так ты никогда не поймешь. Размышляй системой типов, и ссылками - так проще. Есть ссылка, есть ее значение. У ссылки есть тип, и у значения есть тип (на самом деле не совсем, но на время забудь о нулях, generics type erasure и прочих нюансах джавовой системы типов). А джаве надо гарантировать что тип значения типу ссылки соответствует. Все - это все что нужно держать в уме чтобы понять дженерики.
Вот есть у тебя ссылка типа List<T>. Это означает что значение у этой ссылки тоже - строго List<T>. Все чотко-ясно-понятно - ты берешь эту ссылку и начинаешь с ней работать , зная что у тебя она гарантированно указывает на лист объектов типа T. Читая по такой ссылке из листа объекты, ты знаешь что они будут типа T. И так как все чотко-ясно-понятно, нет никаких двусмысленностей с добавлением-удалением элементов такого листа по такой ссылке, и они возможны и разрешены.
А теперь представь что у тебя в руках хуй ссылка типа List<? extends T>. То есть ссылка на лист элементов T, либо лист наследников от элемента T (пусть для примера тип TT будет наследником T). А теперь подержи в руках хуй эту ссылку, пожамкай, и подумай:
- что произойдет, если по этой ссылке ты попытаешься добавить объект, скажем, типа T, но значением ссылки будет List<TT>? В лист по ссылке просочится объект, которому там быть не положено. Обсер - покоррапченный список.
- что произойдет, если по этой ссылке ты попытаешься добавить объект, скажем, типа TT, но значением ссылки окажется List<T>? Ну, в общем то, то же самое.
Причем учти - держа в руках хуй ссылку типа List<? extends T> ты заранее не знаешь, на List<T> она указывает или на List<TT>, и предположений на этот счет делать не имеешь права. По честному, через ссылку List<? extends T> добавлять в список ты ничего не имеешь права, потому что никто тебе не даст гарантии что там по ссылке сидит именно список List<T>, а не List<TT> или еще кто то. Такие пироги.
Про List<? super T> можешь провести такой же мысленный эксперимент сам.
Вот этот анон кстати немного слукавил, ответив на твой вопрос "да". Формально он прав - в List<T> действительно могут быть наследники от T - в конце концов subtyping никто не отменял. Но прикол в том, что, держа в руках ссылку на List<T>, и, например, читая элементы списка по ссылке List<T>, ты также не имеешь права делать заранее предположения, что у тебя прочтется. Сигнатуры всех методов для чтения из такого списка будут возвращать тебе T, твердо и четко. А дальше уже сам разъебывайся, проверяя полученный объект на instanceof и прикащивая к чайлдовому типу, там уже полномочия дженериков - усе...
>>3262814 Забей хуй на это. Это ебала для разработчиков библиотек. 99% программистов просто пишут один тип без всяких супер и экстендс и в душе не ебет, что такое ковариантный и контрвариантный.
Пишу достаточно крупный проект. Так вышло, что есть очень крупная система классов. Теперь сама суть вопроса: чтобы не появилось проблем с классами в одной иерархии будет ли логично сделать конструкторы, которые позволяли бы получать объект нужного класса из объектов суперкдассов или дочерних классов, или лучше использовать приведение типов и надеяться на то, что все пронесёт?
>>3262936 > что произойдет, если по этой ссылке ты попытаешься добавить объект, скажем, типа TT, но значением ссылки окажется List<T>? Ну, в общем то, то же самое. Так это можно, главное, чтобы фактический тип объекта списка был таким же, как статический тип ссылки. У параметризованных типов нет наследования просто. ArrayList<Integer> как бы не подтип ArrayList<Number>. Хотя это все существует только для компилятора, после компиляции все стирается
>>3262974 Да. Но так вышло, что те, кто делал проект до меня, реализовали огромную часть всего через набор статичных методов. Проще говоря: виртуальные функции в проекте простые сеттеры, геттеры, штуки для сравнения содержимого. Статичные методы делают основную работу. Они не изменяют содержимое объектов, однако их сигнатура была прописана только для основных классов в проекте. И теперь возникает мысль, стоит ли полагаться на приведение ссылочных типов или лучше реализовать конструктор для создания объектов основных классов из всех остальных, чтобы в случае чего не возникло неприятностей.
>>3262968 Я чет ничего не понял >чтобы не появилось проблем с классами в одной иерархии каких именно проблем? >лучше использовать приведение типов и надеяться на то, что все пронесёт? Ты можешь проверять через instanceof и не надеяться
>>3263194 Душнил которые в рабочее время доебываются до мелочей не по делу всегда найдешь. А если тебе хочется просто пообсуждать теоретическую ебалу - то ты уже на месте.
>>3262936 >Обсер - покоррапченный список. Вот я не могу понять - почему обсер и коррапченный список? Это же просто список ссылок, длина в памяти самого списка не изменится, каждая ссылка в списке гарантированно будет типа lower bound, конкретный тип можно проверить при чтении. В чем коррапт?
>>3263353 В <? extends T> можно передавать списки состоящие из наследников T, например тот же TT. И каждый get из списка будет кастить к TT, однако если ты туда запихнешь T, он никак не прикастится к TT. Это и есть типикал heap pollution. И никакая гарантия lower bound не спасет.
>>3263325 Жаваны злые, они меня везде обижают. >>3263440 Не думаю, что в ней все поголовно пишут либы, тем более, что скала позволяет игнорить всю эту чушню с типами и писать +-типикал жаба код.
>>3263353 >Это же просто список ссылок, длина в памяти самого списка не изменится, каждая ссылка в списке гарантированно будет типа lower bound, конкретный тип можно проверить при чтении. В чем коррапт?
Чтобы это осознать, надо смотреть на ситуевину глазами клиента.
Вот представью. Ты - клиентский код. Гришь:
var a = new List<TT>();
Получаешь уютный списочек, куда можешь докидывать элементы TT. И предположим что где то обьявлен метод:
>>3264423 Даже если щас не углубляться в тот факт что долгостартующие спринги на поверку оказываются тупо пиздежом либо чьей то некомпетентностьбю - какая разница? Докеру не похуй?
Отвечая на твой вопрос - докер спокойно используется на всех стадиях, начиная от написания кода (у нас к примеру докер используется для генерации JOOQовых классов по схеме данных, которая через докер развертывается во время билда из flyway миграций), продолжая тестированием (testcontainers - база) и заканчивая разверткой.
>>3264423 >Всякие Спринги же тяжелые, стартуют долго? Если сравнивать с гоу, то да, очень долго. Обычно старт занимает в среднем минуту-полторы на среднем проекте, плюс пока там жэвиэм прогреется. Все это негативно сказывается на том же интеграционном и энд ту энд тестировании
>>3264423 а) не похер ли, если обычно делают rolling update, то есть практически всегда на время старта одного пода есть работающие другие б) в основном инициализация пула коннектов к базе много занимает, это можно подтюнить в) если это прямо сильно критично - есть Native image, но в подавляющем большинстве случаев это не настолько критично
>>3264854 Это правда, чистому спрингу нечего долго стартовать. Обычно старт замедляет все что связано с IO - инициализация пула коннектов к базе, накатывание изменений на базу, какие-нибудь рест запросы и т.д. Плюс к тому можно делать то что раньше называлось "exploded jar", то есть просто папка с классами, тогда джвм не нужно тратить время на распаковку. Так-то конечно реальных вычислений там и на 20 секунд нет.
>>3264891 У меня спринг бутовое приложение которое читает из одной кафки и пишет в другую,плюсом это хазелькаст нода которая требует времени для объедения в кластер,20-30 секунд это максимальные цифры которые я видел
>>3265341 >Если Спринг такой хороший, то почему никто из бигтеха его не использует, у кого есть реально большая нагрузка? Немодно. Хорошо еще что мода на ДЖС/ТС потихоньку сошла, а то бы сейчас уплетали за обе щеки микросервисы на джс, удавляясь, почему серверов не хватает.
>>3265341 Последние лет 5 активно съезжают на гоулэнг, т.к. тупо писать быстрее, не нужны мощные сервера и нет приколов спрэнг фримверка с хубирнейтом, когда у тебя незнамо откуда лезет стэктрейс на 100500 строк и сервис падает, либо хубирнейт генерит запрос с N+1 и у тебя база раком встает
>>3265569 >Последние лет 5 активно съезжают на гоулэнг, т.к. тупо писать быстрее, не нужны мощные сервера и нет приколов спрэнг фримверка с хубирнейтом, когда у тебя незнамо откуда лезет стэктрейс на 100500 строк и сервис падает, либо хубирнейт генерит запрос с N+1 и у тебя база раком встает Для этого не нужен отдельный язык, достаточно писать как инвалид на джаве 5й в процедурном стиле, что доступно уже 20 лет. Я и говорю - клиповое мышление, переписываем каждый раз на current thing.
>>3262968 Ловите джуна, которого кинули на боевой проект в одну калитку.
Тебе нужно понимание, как работает инверсия зависимостей. Что такое бин и как работает IOC в спринге.
По сути тебе ручками бины нужно создавать в исключительных случаях, например: - Зависимости в юнит- тесте через тестовый конфиг класс - Создание объектов, которые необходимо сконфигурить определенным образом и тп -
>>3266334 Не у тебя точно тяжелый день был, что ты просто аргументы пропустил. Повторю еще раз более подробно. Bottom type - это подтип всех типов. На данный момент под него подходит в основном null. Однако, для того, чтобы система типов была корректной, нижний тип не должен иметь экземпляра. Это прямая противоположность высшему типу(Object) экземплярами которого является вообще все типы. Это нужно в основном только для одного, поскольку очевидно, что система типов есть формой логики, то вспоминаем пик1 формулу. Суть в том, что из абсурда можно получить все что угодно. Как ты думаешь, если такой тип будет существовать, то разве нельзя будет наебать систему типов подстроив правила так, чтобы из абсурда вывести любой другой тип? Обычно нет, но система типов жабы достаточно мощна для такого https://dl.acm.org/doi/10.1145/2983990.2984004
>>3266213 >>3266243 Тебе не поможет профуйлер, если у тебя проблемы с медленным стартом приложения. Прфлейр нужен только когда у тебя есть реальный трафик и ты можешь собирать данные хотя бы полчаса-час. Так работают профулеры в джэве. В спринге кста нет никаких инструментов отладки медленного старта. Приложение поднимается несколько минут? А хуй знает почему))) Иди смотри все паст каустакрыт и что ты там ефтчишь)))
>>3266296 Удивляюсь как имбецилы берут уже реализованные идеи в других языках и делают откровенное говно. Ну посмотри как это сделано в котле, сишарпе или других нормальных языках. Ну нахуя ты выдумываешь свой особенный говносинтаксис и ломаешь устаявшуюся семантику? Вот поэтому бигтех и пишет на гоулэнге, а джавистов увольняет целыми отделами, а их помойные копролиты на спрэнг фримверке и хубирнейте тупо удадляет из репы и сворачивает поды в кубере
>>3266337 Щас бы в жаба треде статьи кидать лол. По поводу soundness -- это решается проверками в рантайме с выбрасыванием ClassCastException и других. Если ты такой умный и хочешь за дизайнить статическую sound систему типов, то тебе точно не в промышленные языки, а в агду или lean.
Зачем ты нахрюкнул про null как зло в таком случае непонятно Мимо >>3266535
>>3266502 В джаве объективно уже давно ничего не надо делать, все эти потуги просто чтобы показать, мол мы тут что-то делаем > Вот поэтому бигтех и пишет на гоулэнге Блядь, сколько такого уже было, бигтех и пишет на хайп-язык-нейм Сегодня популярна одна жвачка, завтра другая
>>3266545 Почему-то бигтехи решили, что лучше спрыгнуть на гоулэнг и не насиловать разрабов, которые должны заучить все приколдесы JMM как стихотворение и помнить 100500 припизднутых хуиток из спрэнга и хубирнейта, чтобы собрать ололо круд
>>3266575 >>Почему-то бигтехи решили, что лучше спрыгнуть на гоулэнг Студента можно посадить на любой парашный стек, а потом он уже не уйдет, потому что работы нигде больше нет, а переучиваться ему будет лень.
>>3266535 Ну конечно не знаю, куда уж мне до вас. >>3266536 Да, проблема которая должна решаться на этапе компиляции решается на этапе рантайма. заебись, четко. И это еще очень повезло, что дженерики стираются, иначе бы и в рантайме оно не работало.
>>3266589 Капчуешь из 2010? Какая нахуй разница, сколько он будет подниматься? Пускай выделят норм железо. Под приклада поднимается за минуту в среднем.
А если речь про локальный дебаг, то норм конторы обеспечили железом на аппле силикон/i7-i9 32 гб. И не тормозит ничего. Компилится быстро уася.
>>3266643 Я лично участвовал в увольнение отдела джава скуфидонов в банке. Мы с пацанами то говно быстро переписали на гоулэнг и навсегда наказали скуфиду
>>3266648 > Мы с пацанами то говно быстро переписали на гоулэнг и навсегда наказали скуфиду А потом продленка закончилась и мамки повели вас домой делать уроки
>>3266631 Ты что вообще хочешь? Чтобы мы тут все оторвали жопу от стула и потопала голанг учить? Ну перейдут компании на голанг - пойдем учить, а может и не перейдут - дальше на жопе будем сидеть. Рядовой разраб на это мало влияет. В моменте сейчас у жавы как минимум больше вакансий, чем у го
>>3266495 >В спринге кста нет никаких инструментов отладки медленного старта. Все верно, потому что спринг - это просто еще одна джава программа, а инструменты в экосистеме. Так же как ты можешь понять почему долго работает любая джава программа - так же ты можешь и понять почему долго грузится спринг. >Прфлейр нужен только когда у тебя есть реальный трафик и ты можешь собирать данные хотя бы полчаса-час. Чел, частота самплинга настраивается. там не обязателен ни реальный траффик ни час работы. Плюс, если уж тебе это действительно надо - есть JFR, записывай и смотри реальную нагрузку сколько угодно.
Кстати сам-то давно вкатился? Я ощущую у тебя примерно 5-6 месяцев реального опыта на джаве.
>>3266663 >частота самплинга настраивается чел... это спрэнг фримервк, чел... что ты там собрался смотреть в профулере? как у тебя класспасс скрэнг сканирует? ну сканирует твои 100500 классов и че? ты на это повлияеть не можешь челл. это спрэнг и этим се сказкано. жди свои две минуты а потом лови эксепшен от сэрнга что контекст не окнтектс и бина не хнайте
>>3266638 Статья, где говорится, как существование экземпляра null разрушает систему типов, делая unsafe coerce, абсолютно никак не относится к теме про то, что null - это ошибка. Интересно.
Я вообще начинаю думать, что проблема в том, что я просто не способен понятно для людей доносить мысли. И злобные жаваны пользуются этим, издеваясь надо мной.
>>3266709 С тем, что от нулла есть некоторые проблемы никто и не спорил. Фактически же нулл отвечает за очень малый процент багов, а эфемерная неполноценность типовой системы по мнению неких Росс Тейт и Нады Амин стоящая за этими багами никого не ебёт. Есть задачи и поважнее.
> Я вообще начинаю думать, что проблема в том, что я просто не способен понятно для людей доносить мысли. И злобные жаваны пользуются этим, издеваясь надо мной. Да нет, все всё прекрасно поняли. А вот ты как раз не понял за что тебя опускают в параше. Проблема не в изъяснении, а в понимании.
>>3266714 >Фактически же нулл отвечает за очень малый процент багов Хорошо наверное из головы статистику выдумывать, ведь есть задачи поважнее, чем искать стастику, да?
Да и если это реально так, то нахуя сделали жеп решаюший симптомы существования null? Задач поважнее не нашлось? >А вот ты как раз не понял за что тебя опускают в параше. Чтобы испортить мне настроение.
>>3266717 > Да и если это реально так, то нахуя сделали жеп решаюший симптомы существования null? Задач поважнее не нашлось? Потому что, наконец-то, дошли руки до этого 1% багов, очевидно.
> Чтобы испортить мне настроение. "Чтобы" и "потому что" это ответы на разные вопросы. Портят тебе настроение потому что ты тупоголовый даун постоянно набрасывающий говна на вентилятор.
>>3266719 >наконец-то, дошли руки до этого Ну значит им не похуй, следовательно твой тезис "никого не ебет" уже хуйня. Причем ведь и до этого были жепы завязанные на null https://openjdk.org/jeps/358 . Ты просто пиздишь и дышишь, что ну это хуйня, да и вообще у нас дела поважнее, хуяк хуяк и в продакшн. >1% багов Не люблю статистику из башки. >постоянно набрасывающий говна Ни разу такого не было. Я в освном говорю очевидные вещи, а вы почему-то рветесь на это, говоря да, анон ты прав, но сука какой же ты долбоеб все таки.
>>3266725 >>3266727 > Градации, слышал такое слово? Стоит ещё докинуть что джеп типовую систему согласно той статье никоим образом не исправляет. Нулл-то остаётся. В том то и дело, что решаются реальные проблемы, а не эфемерные дыры типовой системы.
>>3266727 >Градации, слышал такое слово? Ну а какие баги с более высоким процентом они решили в жепах? >Да похуй что ты любишь. Bastard... >Галоперидольчик пробовал? Да не шиз я блять, хватит. Сам написал: >от нулла есть некоторые проблемы никто и не спорил Если от чего-то есть проблема, то это ошибка. И вот так каждый раз, я просто не понимаю нахуя вы со мной-то спорите и обзываете меня, если вам мои тезисы понятны. Что ты хочешь доказать? Что ты умнее меня? >>3266730 Так понятно, что они блять симпомы просто лечат. Убрать из джавы null просто невозможно без тотального нарушения обратной совместимости.
>>3266732 > Ну а какие баги с более высоким процентом они решили в жепах? while (не надоело) { look(--jepIndex) }
> Bastard... Очень аргументированно, додик.
> Если от чего-то есть проблема, то это ошибка. ЯСКККККОООООЗАААААЛ!!!!! > И вот так каждый раз, я просто не понимаю нахуя вы со мной-то спорите и обзываете меня, если вам мои тезисы понятны. Твой тезис был далеко не в том, что от нулла есть какие-то проблемы, опущ. > Что ты хочешь доказать? Что ты умнее меня? Больше на тебя похоже, мань.
> Так понятно, что они блять симпомы просто лечат. То, что это симптом, а не проблема, ты должен доказать. > Убрать из джавы null просто невозможно без тотального нарушения обратной совместимости. Ну и нахуй ты высираешься?
>>3266733 Почему я должен искать за тебя подтверждение твоих же слов... >Очень аргументированно, додик. А как мне аргументировать то, что ты не хочешь перестать фантазировать? В ответку нафантазировать? >Твой тезис был далеко не в том, что от нулла есть какие-то проблемы, опущ. Я написал следствие, а ты причину. >Больше на тебя похоже, мань Даже если и так, я не делал это специально. >То, что это симптом, а не проблема, ты должен доказать. Ну смотри, исключение возникает после того, как кто-то обратится к null. Следовательно это следствие того, что кто-то запихнул null туды, куда не следует - исключение есть симптом проблемы. Дальше, причина почему это вообще возможно, в том, что null - это подтип всех типов и существование его экземпляра повзоволяет его пихать туда, куда не следует, следовательно опять же все сверху симптом того, что null существует. >Ну и нахуй ты высираешься? Да я просто мнение высказал блин. Что зря добавили, раз столько проблем в итоге приходится решать.
>>3266737 > Почему я должен искать за тебя подтверждение твоих же слов... > >Очень аргументированно, додик. > А как мне аргументировать то, что ты не хочешь перестать фантазировать? В ответку нафантазировать? > >Твой тезис был далеко не в том, что от нулла есть какие-то проблемы, опущ. > Я написал следствие, а ты причину. > >Больше на тебя похоже, мань > Даже если и так, я не делал это специально. > >Ну и нахуй ты высираешься? > Да я просто мнение высказал блин. Что зря добавили, раз столько проблем в итоге приходится решать. Ты хоть сам-то понял, что высрал?
> Ну смотри, исключение возникает после того, как кто-то обратится к null. Следовательно это следствие того, что кто-то запихнул null туды, куда не следует - исключение есть симптом проблемы. Дальше, причина почему это вообще возможно, в том, что null - это подтип всех типов и существование его экземпляра повзоволяет его пихать туда, куда не следует, следовательно опять же все сверху симптом того, что null существует. То есть перелом ноги это симптом возможности ходить человеком, ведь во время хождения можно поскользнуться и сломать ногу?
>>3266739 >То есть перелом ноги это симптом возможности ходить человеком, ведь во время хождения можно поскользнуться и сломать ногу? Скорее симптом того, что мало кальция и витаминчиков ест, а возможно еще старый или гены плохие. А ну и аналогия это конечно прекрасно, но мы про null говорили. >Ты хоть сам-то понял, что высрал? Вроде да. Почему ты меня так ненавидишь?
>>3266741 > А ну и аналогия это конечно прекрасно, но мы про null говорили. Это был намёк на то, что существование нулла хоть и имеет некоторые негативные последствия, имеет основания. Но для его осознания, видимо, нужно иметь >70 iq.
>>3266742 >имеет основания Там основание только как дефолт значение. Массивчик заполнить, проблему курица и яйца решить. И вот ради таких, действительно стоящих вещей, надо бы перфоманс эдак на 20% заполнить очень полезными вычислениеми is null. Есть способы эти основания решить иным путем, не таким кривым. Но решили как решили, надеюсь они хотя бы лучше чем котлин сделают nullable и not nullable типы. > >70 iq. Мне сверху писали, что у меня 85))
>>3266746 Ну и нахуй ты высираешься тогда, если сам понимаешь, что необходимость в нулле есть? А раз она есть, то просто его выкинуть нельзя, нужно именно делать так, как делают в джаве.
> И вот ради таких, действительно стоящих вещей, надо бы перфоманс эдак на 20% заполнить очень полезными вычислениеми is null. Skill issue. При вычислении на этапе компиляции ничего не будет заполняться.
>>3266748 >нужно именно делать так, как делают в джаве. Одно из другого не следует. Ты наверное как пограмист понимаешь же, что вот есть задача, а способов ее решить много. Разные издержки тут и там. Null это только одно из множества решений, есть другие, там издержка в требовании ссылочной прозрачности. >При вычислении на этапе компиляции ничего не будет заполняться. Я тоже очень надеюсь, что оракл смогут все это компилятору делегировать. Но судя по пику, все равно будут некоторые вставки тут и там.
>>3266750 > Одно из другого не следует. Ты наверное как пограмист понимаешь же, что вот есть задача, а способов ее решить много. Разные издержки тут и там. Null это только одно из множества решений, есть другие, там издержка в требовании ссылочной прозрачности. Ну и конечно же эти решения не приведёшь.
> Я тоже очень надеюсь, что оракл смогут все это компилятору делегировать. Но судя по пику, все равно будут некоторые вставки тут и там. Очевидно, без вставок это невозможно. Если у тебя от пользователя может прийти нулл ты должен проверить, что он тебе послал и послать нахуй в случае если этот пользователь еблан.
>>3266751 >Ну и конечно же эти решения не приведёшь. Я могу, но... Честно не хотелось бы. Ладно, пик. Это решение проблемы курицы и яйца без null. >>3266752 Посмотрим какая в итоге будет реализация, сейчас пока рано говорить, че они там наколдуют.
>>3266654 Не надейся Я уже вкатываюсь Кстати, на первом курсе вуза единственные ребята, которые вообще пишут на чем-то, пишут на джаве Я был удивлен, думал, кроме меня не будет таких
>>3266840 Ты специально это, да? Сначала просишь показать как без null это решают, а потом за это же критикуешь. Какое зло я тебе сделал...
На жаве, используя ленивость как-то так можно сделать. Хотя я думаю, возможно как-то исковеркая control flow через исключения, можно и без саплаеров обойтись. Но эт неточно. >>3266931 Удачи
>>3266941 Каждый раз этот даун приходит в тред со своими шизофреническими высерами, каждый раз его макают в говно, но ему, похоже, это нравится, потому что он приходит снова и снова за порцией говна. Мазохист.
>>3266952 Тут 95% кода шаблонная хуйня. >>3266954 Вот поэтому я не хочу вам примеры показывать. Это не имеет смысла. Проще сказать, такие пути есть, надо найдешь.
>>3266989 >вместо того, чтобы воспользоваться коротким способом, напишу кучу говна, и обзову джаву бойлерплейтным языком! Блядь, ты же правда инвалид умственный.
>>3266990 Каким коротким способом? Ты используя null ровно на ноль строчек короче напишешь. Лобок я не хочу использовать из принципа. Это просто говно, которое лезет туда, куда лезть не следует.
>>3266993 > Каким коротким способом? Ты используя null ровно на ноль строчек короче напишешь. Задача какая?
> Лобок я не хочу использовать из принципа. Это просто говно, которое лезет туда, куда лезть не следует. Проиграл с того, как дегенерат открыл ебальник, когда его не просили, чтобы ещё больше доказать, какой он дегенерат.
>>3266995 Создать класс Parent, содержащий экземпляр класса Children, которой в свою очередь содержит экземпляр Parent. Ну и в качестве дополнения обоим сделать рабочий toString, чтобы они что-то осмысленное в консоль печатали.
>>3267013 Ну ок, по строчкам может и то же самое будет, только вширь код будет короче. И быстрее, лол. Твою позицию это не сильно улучшает, а опозориться с "бойлерплейтным языком" ты уже успел.
>>3267017 Там вширь тоже нечего экономить. Пять символов что ли. > а опозориться с "бойлерплейтным языком" ты уже успел. Слушай, если для одной и той же задачи один язык требует 5 строчек, а другой 36 может ну.. Он бойлерплейтный? Тем более это ты сказал, что чет строчек многовато. Мне-то похуй сколько их.
>>3267019 > 5 нещитово! Вот было бы 25 было бы щитово! А ещё я проигнорирую неудобное про скорость! Пиздец...
> Слушай, если для одной и той же задачи один язык требует 5 строчек, а другой 36 может ну.. Он бойлерплейтный? И сейчас ты принёс пример вместо своего гнилого пиздежа.
>>3267022 >неудобное про скорость! Что JVM стоит заинлайнить все гетеры? Разницы в этом случае не будет. У вас там реально экономят на виртуальных вызовах? >И сейчас ты принёс пример 5 ( >>3266759 ) 36 ( >>3266941 )
>>3267025 > Что JVM стоит заинлайнить все гетеры? Разницы в этом случае не будет. У вас там реально экономят на виртуальных вызовах? Додик, если бы ты использовал сапплаер как простой геттер, ты бы этим от нулла не избавился. А в твоём говнокоде на каждый вызов создаётся новый объект. Блядь, какой же ты тупой.
Я даже блядь не говорю, что ты просто заменил нулл на бесконечный цикл. Это вообще пиздец какой-то. Пожалуй зарепорчу тролля. Нельзя быть таким тупым.
> 5 ( >>3266759 ) > 36 ( >>3266941 ) И что бойлерплейт который ты сам добровольно высрал доказывает?
>>3267028 Ну кстати да, надо добавить еще одну строчечку, где создание выносится. >Я даже блядь не говорю, что ты просто заменил нулл на бесконечный цикл. Ты понимаешь же, что это разные вещи? Именно это и есть, то чем изначально был botttom, расходимостью. Это тип, который ты просто не можешь достичь или создать. Бесконечный цикл или исключения идеально под это подходит, с чем согласен компилятор. >Пожалуй зарепорчу тролля Себя зарепорть. Я ни разу никого тут не оскорбил, причем общаюсь именно на тему джавы, то что тебе кажется это глупым, твои проблемы. >И что бойлерплейт который ты сам добровольно высрал доказывает? Ты сам сказал, что короче не напишешь. В чем проблема? Иначе напиши, продемонстрируй навыки.
>>3267034 > Ты сам сказал, что короче не напишешь. В чем проблема? Иначе напиши, продемонстрируй навыки. То есть на вопрос не ответишь? Ок, слив засчитан.
>>3267034 > Себя зарепорть. Я ни разу никого тут не оскорбил, причем общаюсь именно на тему джавы, то что тебе кажется это глупым, твои проблемы. Оскорбления на сосаче как раз разрешены, и слава богу, легче макать унтерменшей типо тебя в говно. А щитпост в тематике нет.
> Ты понимаешь же, что это разные вещи? Именно это и есть, то чем изначально был botttom, расходимостью. Это тип, который ты просто не можешь достичь или создать. Бесконечный цикл или исключения идеально под это подходит, с чем согласен компилятор. Изначально видимо исключение написать тебе не хватило твоего скудного интеллекта. Ок.
> Ну кстати да, надо добавить еще одну строчечку, где создание выносится. И как эта строчка хоть что-то из претензий отменяет? Она только увеличивает количество бойлерплейта, лол.
>>3267039 Ну меня банили и за них. >Изначально видимо исключение написать Так просто короче, мы же тут все экономим на месте. >И как эта строчка хоть что-то из претензий отменяет? Создания экземпляров не будет при обращении. На виртуальные вызовы мне, да и всем поебать. Если бы это было бы не так, такой хуйни как спринг просто не существовало бы. >Она только увеличивает количество бойлерплейта, лол. Напиши короче.
>>3267047 Пхпхп, ладно такая ошибка идеально подошла бы. Но вообще такое возможно отдебажить через профайлер, правда нужно ли это. >что-то поаргументированнее Мне за нее не платят. Вот начнут...
Подскажите плиз, может кто сталкивался, я использую аннотацию @ConfigurationProperties, чтобы собрать из проперти файла массив объектов и вроде как это норм работает, но лишь до тех пор как я делаю импорт другого проперти файла а без этого никуда, тк сикреты приходят из отдельного файла secret.properties и импортируются в основной проперти файл вот тогда и начинает все идти по пизде, он перестает проставлять все проперти кроме тех, что указаны в сикретах и я хз, что с этим можно поделать, весь гугл уже перекопал как будто, но так и не нашел решения этой проблемы
>>3266931 А пару лет назад я был единственным, кто писал на джаве в группе. Были питонисты, фронтендеры, еще чел писал игры на c#/c++ Сейчас брат поступил на первый курс и у него тоже одни питонисты, ну и все надрачивают на го.
>>3266709 >Я вообще начинаю думать, что проблема в том, что я просто не способен понятно для людей доносить мысли. У меня тоже были такие мысли на работе. Потом я понял, что людям просто поебать, они все делают на отъебись.
>>3263366 У меня сейчас голова взорвется: как работает coerce()? Это статический типизованный по классам A и B метод. Он принимает на вход объект класса А и возвращает скастованный в класс B. Откуда он блин берет информацию о классе B, в который ему нужно кастануть?
>>3267435 >Откуда он блин берет информацию о классе B Ниоткуда. Поэтому там желтым подчеркнуто и даже ворнинг кидает компилятор, что возможно друг ты какую-то хуйню творишь.
Фактический же кастинг происходит не во время вызова метода, а в момент, когда ты запрашиваешь объект этого типа. Конкретно там, это 8 строка. Это основная причина, почему кастить дженерики вообще говоря плохая идея.
>>3267435 > Откуда он блин берет информацию о классе B, в который ему нужно кастануть? Эта штука называется type inference в джейве, компилятор видит, чтобы ты возвращаемое значение метода передаёшь параметром в другой метод. Компилятор предполагает что ты не дурак и это ДОЛЖНО работать, а значит тип возвращаемого значения такой же как у параметра, в который ты его передаёшь. Вот так он и получает информацию о типе.
>>3271245 Не мое. Я не говорил про ненужность - просто мимопроходил и удивился что находятся какие то чмохи, так яростно оверреактящие на анонов, критикующих нулли.