Это копия, сохраненная 17 ноября 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Вики по вкатыванию в джаву🎓: https://github.com/java2ch/java-thread/wiki
Предыдущий: >>2816575 (OP)
Наконец-то легитимный перекат.
А. Ну у них это дефолт. Хотя мне вот интересно сторона производительности, но это сложно и вряд ли кто-то этим сравнением займётся.
Лум позволяет больше контролировать ход программы, по сей причине он быстрее. Если сравнивать как концепцию. Иначе нужны именно бенчи.
Вот как выйдет, так и перекатишь. А пока мы мчимся сквозь бескрайние просторы Java-галактики.
> Вот как выйдет
Да, давайте поднатужимся и напишем 1000 постов, у нас есть 24 часа. Впрочем, даже меньше.
Поднажмем, пупуни!
Итак, в релиз выходят и запускаются без всякой ебли с --enable-preview, а значит вы сможете всё это потрогать в реальной работе:
— LOOM!!!
— Pattern Matching: технически это несколько JEP и несколько фич, но логически это одно цельное изменение языка, которое добавляет возможность гораздо более удобно сравнивать данные с образцом; — вместе со всем сахаром, что так и напрашивается в сырых конструкциях сопоставления. На выходе мы имеем instanceof Integer integer, его навороченный брат instanceof Point(A x, B y) и новый switch с красивым java-style синтаксисом, который может проходиться по всему, что душе угодно: по иерархии наследования, по строкам, числам и енумам, но блядь не но булинам, с оптимизациями до O(1) и отдельным синтаксисом для частных случаев типа рекордов.
— Мало кто знает, но наши мольбы о .getLast() в List<T> были услышаны. Это JEP-433: Sequenced Collections, и реализован он был так, как завещали прародители Java в своих идеалах — основательно, абстрактно и продуманно: нам не просто сделали .getLast() в один-единственный List<T>, нам запилили целый интерфейс SequencedCollections, который добавляет целых 7 новых методов во все последовательные коллекции в Java, такие как ArrayDeque или, например, LinkedHashSet.
Но это ещё не всё! Следующие фичи выходят в превью:
— Structured Concurrency — новый способ асинхронного выполнения задач, с гораздо большим контролем над ходом выполнения, чем в стандартной неструктурированной java.util.concurrent. Нельзя не упомянуть async-await из других языков: вместе с Loom, Structured Concurrency решает примерно похожие задачи. Однако в Java решили не мешать мух с котлетами, отдельно решив проблему оптимизации, и отдельно закрыв потребность в готовых инструментах для работы с асинхронностью, благодаря чему мы получили гораздо более гибкие решения обоих проблем.
— Scoped Value — более гибкий и удобный ThreadLocal. Можно настраивать время жизни, принадлежность к потокам, разграничивать изменяемость, и ещё туева хуча примочек. Вместе со структурированным параллелизмом и Loom изменяет до неузнаваемости модель многопоточности в Java, выводя её на новый уровень. И всё это возможно благодаря тому, что разработчики Java не бегают за модными трендами, а основательно подходят к каждому вопросу.
— String Interpolation. Да, теперь можно вставлять переменные (и не только, всё что угодно!) внутрь строк. И это сделано безопасно, с гарантиями сохранения обратной совместимости и с заделом на улучшение в будущем. Аналогов в других языках тоже нет.
— Unnamed Classes and Instance Main Methods — Брайану Гетцу принесли распечатанный на бумажке мем со сравнением Hello World в петухоне и в джаве, и 10 лет у него горел с этого пердак, пока он не придумал гениальное решение — сделать бесполезный синтаксис для хелло-ворлда, чтобы показать петухоноблядям, чьё место у параши. Теперь можно писать хелло-ворлд в однутри строчки.
Итак, в релиз выходят и запускаются без всякой ебли с --enable-preview, а значит вы сможете всё это потрогать в реальной работе:
— LOOM!!!
— Pattern Matching: технически это несколько JEP и несколько фич, но логически это одно цельное изменение языка, которое добавляет возможность гораздо более удобно сравнивать данные с образцом; — вместе со всем сахаром, что так и напрашивается в сырых конструкциях сопоставления. На выходе мы имеем instanceof Integer integer, его навороченный брат instanceof Point(A x, B y) и новый switch с красивым java-style синтаксисом, который может проходиться по всему, что душе угодно: по иерархии наследования, по строкам, числам и енумам, но блядь не но булинам, с оптимизациями до O(1) и отдельным синтаксисом для частных случаев типа рекордов.
— Мало кто знает, но наши мольбы о .getLast() в List<T> были услышаны. Это JEP-433: Sequenced Collections, и реализован он был так, как завещали прародители Java в своих идеалах — основательно, абстрактно и продуманно: нам не просто сделали .getLast() в один-единственный List<T>, нам запилили целый интерфейс SequencedCollections, который добавляет целых 7 новых методов во все последовательные коллекции в Java, такие как ArrayDeque или, например, LinkedHashSet.
Но это ещё не всё! Следующие фичи выходят в превью:
— Structured Concurrency — новый способ асинхронного выполнения задач, с гораздо большим контролем над ходом выполнения, чем в стандартной неструктурированной java.util.concurrent. Нельзя не упомянуть async-await из других языков: вместе с Loom, Structured Concurrency решает примерно похожие задачи. Однако в Java решили не мешать мух с котлетами, отдельно решив проблему оптимизации, и отдельно закрыв потребность в готовых инструментах для работы с асинхронностью, благодаря чему мы получили гораздо более гибкие решения обоих проблем.
— Scoped Value — более гибкий и удобный ThreadLocal. Можно настраивать время жизни, принадлежность к потокам, разграничивать изменяемость, и ещё туева хуча примочек. Вместе со структурированным параллелизмом и Loom изменяет до неузнаваемости модель многопоточности в Java, выводя её на новый уровень. И всё это возможно благодаря тому, что разработчики Java не бегают за модными трендами, а основательно подходят к каждому вопросу.
— String Interpolation. Да, теперь можно вставлять переменные (и не только, всё что угодно!) внутрь строк. И это сделано безопасно, с гарантиями сохранения обратной совместимости и с заделом на улучшение в будущем. Аналогов в других языках тоже нет.
— Unnamed Classes and Instance Main Methods — Брайану Гетцу принесли распечатанный на бумажке мем со сравнением Hello World в петухоне и в джаве, и 10 лет у него горел с этого пердак, пока он не придумал гениальное решение — сделать бесполезный синтаксис для хелло-ворлда, чтобы показать петухоноблядям, чьё место у параши. Теперь можно писать хелло-ворлд в однутри строчки.
Опа! Друзья, сегодня наша долгожданная Java 21 вот-вот выходит на свет! 🎉😎
Что тут у нас:
🔮 LOOM: Потоки без швов, словно магия!
🧩 Pattern Matching: Проверки данных на стероидах.
📚 Sequenced Collections: Теперь .getLast() доступен всем!
В превью: Structured Concurrency - контроль над асинхронностью.
В превью: Scoped Value - гибкий ThreadLocal.
В превью: String Interpolation - вставка переменных просто как ABC.
В превью: Unnamed Classes и Instance Main Methods - для хелло-ворлда в одну строчку!
Java 21 - как праздник для программистов, только без торта (но с мороженным)! 🍰🍦💻
Как же вы заебали превью фичи, инкубаторы и релизы смешивать.
Из всего перечисленнного есть только первые две херни.
>>сегодня наша долгожданная Java 21 вот-вот выходит на свет!
вот бы еще перекатить проект хотя бы на 17
На самом деле, все жабы больше 8 - превью.
Эх а зря. Можно же было про вектор апи рассказать. Мол ребят, панама не за горами.
Отделение не заметил. Но я вообще не понимаю нахуя про превью рассказывать.
Я сегодня уже перекатил всё на 21 жабу (использовал релиз-кандидата, не дотерпел до релиза). Потребовалось немного больше времени, чем обычно, потому что перекатывал в этот раз я очень рано и много чего ещё не поддерживало её. Пришлось включать javac вместо собственного компилятора в maven-compile-plugin и обновлять ломбок до edge-релиза. Ну и по старинке бампнуть maven-shade-plugin, тут без приколов было, просто версию поднял. Ну и ещё новую версию идеи поставил, но это скорее в рамках перекатывания своего пк, а не проектов, туда же установка новой jdk.
А с вектор апи ничего нового. Он как был в инкубаторе, так и остался. Про превью можно и нужно рассказывать, чтобы люди узнавали про --enable-preview и было меньше проблем с использованием превью-фич в разработке.
Их же не используют в проде. Так в чем смысл..
К слову, а паттерн матчинг не поощрение для говнокодинга? Типа скрытый instanceof, не так костыльно выглядит. Честно говоря, кроме вот таких сценариев, когда есть общий обжект и нужно не полиморфно совершить даункаст, пока не придумал где он ещё прям ебет
Николямба с коллегами объяснил паттерн-матчинг и про силед классес против говнокодинга тебе подсказали.
https://www.youtube.com/watch?v=QrwFrm1R8OY>>47411
мимо 11 forever
System.out.println(STR."Привет, я \{name}");
processPypynya();
} catch (Exception _) {
// something happened with pypynya...
}
Вот есть у меня десяток таблиц. Есть очень простая кверя в которой единственная сложность это десяток джоинов, всё. Возвращаемые ряды из БД должны быть замаплены в объекты, которые внутри имеют объекты и внутри которых самих так же могут быть объекты.
Неужели единственный вариант это делать Object[] и лично проходить ручками?
Не мысли в терминах таблиц, это table driven development, прошлый век. Мысли агрегатами доменной модели.
И все у тебя будет заебись. Поблагодари меня за совет
мимо сенька
>Объясните тупому ждуну на пальцах как вы достаёте данные из БД, когда объекты могут быть вложенными.
Мозги включи. Как ты собрался маппить кортежи данных из бд, которые априори плоские, на какие то манявложенные структуры?
На вложенные структуры маппятся отношения, а не данные. И в JPA для отношений есть вполне себе четкие и понятные аннотации - ManyToOne, OneToOne, и.т.д, по которым есть куча гайдов.
У орм и реляционных таблиц фундаментальные несоответствия и куча проблем из-за этого. Просто закрыть на них глазки - ахуенный совет, ниче не скажешь.
>Вот есть у меня десяток таблиц. Есть очень простая кверя в которой единственная сложность это десяток джоинов, всё
Похую на джойны - в тот момент когда ты этот квери выгрузил ты получил плоскую структуру - лист кортежей. Че хошь теперь делай с этим фактом.
>У орм и реляционных таблиц фундаментальные несоответствия и куча проблем из-за этого
Поэтому ОРМы как концеапцию уже много лет называют говном. И опций у тебя никаких - либо учишься худо-бедно жрать говно, либо жрешь красную таблетку, прозреваешь и ебешься со скулем. Других опций нет. Deal with it.
Ниче не понял, но спасибо за держание в курсе.
>>47917
И как это делать? Вот из каждой таблицы в которой по 100 строк мне нужно 5-10 строчек. Мне не нужно всё что тащит хибер.
>>47923
А нахуя тогда нужны вот эти все приблуды? https://thorben-janssen.com/spring-data-jpa-query-projections/
Мне не нужны всратые OneToOne, которые без байткод оптимизации всё равно делают селект даже с fetchType.LAZY. Мне не нужны все отношения которые может хранить энтитя. Так же не нужны все данные и ключи которые там могут быть в таблице.
У меня задача взять пару полей из каждой таблицы по специальным критериям, спамить возвращаемый лист данных в требуемый джсон и выплюнуть во фронтенд. У меня просто read из БД и у меня рвётся жопа что я не могу найти нормальной поддержки в спринге.
>>47926
Ну как я и говорю, самый последний вариант, которым я не хочу заниматься, просто брать Object[] и руками делать это дело.
100 строк в таблице? А че они маленькие такие? Или ты столбцы имел ввиду.
И какая нахуй байткод оптимизация?
Думаю ентити граф можно сделать.
Да, ты прав, я ошибся и написал строки вместо столбцов. Из всей этой сотни штук мне нужно от 5 до 10 в зависимости от таблицы. Тащить всё тупо нерационально и DBA пошлёт меня нахуй.
Граф говоришь? Пасибо, гляну что такое.
Про байткод оптимизация - надо было на англюсике написать bytecode enhancement. Там у нас стоит biderctional во многих местах, насколько я прочитал https://vladmihalcea.com/the-best-way-to-map-a-onetoone-relationship-with-jpa-and-hibernate/
>Bytecode enhancement is the only viable workaround. However, it only works if the parent side is annotated with @LazyToOne(LazyToOneOption.NO_PROXY).
Пупни няшно же звучит. Наоборот круто ей быть, не?
В джаве хотя бы пупуни - они безобидные. А в шарпе - шарпеи глотку перегрызут ни за что нахуй.
У тебя какая то пирамида Маслоу перевернутая.
Скажи своим пупуням лиду и дба что надо подгонять модель данных под твою системную операцию. Пусть рожают рид модель, делают кастомную вьюху, что угодно, но чтобы у тебя все читалось !!!
Пупуни добрые и хорошие,они выполняют свою работу и не тратят время на злюк в интернете. Поэтому все так любят пупунь и поэтому на джаве так много работы
Это, было бы здорово, напрячь кого-то другого чтобы мне сделать getЗаебись() и всё получилось, но боюсь придётся объяснять что у меня не получается. Я пока не успел чекнуть с чем графы едят, другие таски горят, но кроме графов в жабе нет никакого другого варианта вот такого вот кастомного селекта, который я хочу сделать?
Заебись я проморгал первую же строчку. Ладно, поебать, туннелирование ssh, так туннелирование.
Пишешь вручную запрос над методом репозитория используя fetch join. То же самое что графф только в два раза всратее
Зачем тебе в него вкатываться? Писатели фреймворков за тебя допишут ofVirtual() где надо.
Потому что все любят восьмую джаву.
Пупуни постарались
int numerator = input[0].length - input[1].length;
Вроде как, обычная математическая операция с целочисленными полями. А Java орет:
Exception has occurred: java.lang.Error
"java.lang.Error: Unresolved compilation problems:
length cannot be resolved or is not a field
length cannot be resolved or is not a field
length cannot be resolved or is not a field
Type mismatch: cannot convert from char to String
В чем проблема?
Нет ты, раз не можешь прочесть что тебе в ошибке пишут. Ты где блять филд length у строки нашел? Он приватный сука.
>Сколько раз работал с полем length строки
Нисколько. Ты не жвм инженер, чтобы с этим полем работать. Тролль скорее
Ебобо?
for (int i; i < input.length; i++) {} - это что такое, по твоему?
Я сразу почему-то представил от твоего поста что-то в духе abstractHornyIndianShowBobAndVageneClass.doSomethingWithLength()
int a = input[0].length();
int b = input[1].length();
int numerator = a - b;
Теперь математика с полями работает нормально. Но теперь Java ругается, когда я пытаюсь сделать что-то с полученным числовым значением:
for (int i = numerator; i < input[0].length; i++)
Exception has occurred: java.lang.Error
"java.lang.Error: Unresolved compilation problems:
length cannot be resolved or is not a field
Type mismatch: cannot convert from char to String
"
Ну с другой стороны как нормально чар в стринг конвертнуть. Сорян за тупость я больше не буду и ухожу
Вот ссылочки на гит и демку:
https://github.com/anywaythanks/Twister
https://twister.fvds.ru:9443/
У меня пока фантазии нет, контентом заполнять.
Честно говоря уже не помню в чем там изменения состояли с прошлого раза. Еще за все это время накопилось куча долгов, надеюсь смогу решить, конечно. Впрочем к делу не относится.
Самое главное: я благодарен за поддержку от вас, няшек. Столько прозвищ мне еще нигде не давали. Всех бы обнял... Держать вас в курсе больше не буду, надеюсь не будете скучать, воот.
Зачем так выёбисто писать, если ты даже ошибу прочитать не можешь в своём говнокоде
Ну, не знаю. Как по мне, даже местные гуру программирования не могут понять, в чем тут ошибка.
Прикинь, как было бы круто, если бы компилятор при ошибке компиляции мог вывести в stdout текст ошибки... тогда бы зажили
:3
Так, я правильно понимаю, что ты нихрена не въезжаешь в то, в чем тут проблема, не так ли?
Ну точно))
Самый прикол в том, что айтишники абсолютно не разбираются в собственной же области компетенции.
Бабушка-чайник лучше соображает в компьютерах, чем эта публика.
Одно непонятно: за что вам 300 000 платят? Как по мне, для вас даже пачка доширака в месяц - завышенная зарплата.
Судя по крикам что гошке пизда да
А roadmap.sh/java — хороший список того, что должен знать trainee-стажёр? Или ерунда?
Лум это ткацкая мастерская.
Докажи
Если серьёзно, крайне паршивый сайт. Постоянно вверху выдачи. Благо есть и хуже, гикфоргик и совсем идиотизм по типу табнайна.
Паршивые они ровно потому, что показывают вырванные из контекста примеры, применять их без понимания, что в них происходит, идея ну такая себе.
Интересная мысль. Я на него пару раз заходил, вроде не так уж плох.
>гикфоргик
Вот об этом хуже сложилось впечатление, он то ли регистрироваться заставляет, то ли что.
Java бомж
Я ещё на Java Hardcore, вот с многопоточностью разбираюсь. Балдейписюн это для Spring вроде больше, а он впереди.
Простой обмен опытом. Не очень понял к чему ты это высрал. Но можешь идти один, не держу
>А в многопоточке что проходишь?
Да саму многопоточку пока и прохожу. Видел однажды слово Volatile, но я пока что ещё на Runnable Thread'ах, на основах.
Час пробил.
Так это всё одна хуйня, гринтреды. Виртуальные потоки, крутятся в рантайме, динамически цепляются шедулером ко свободным потокам выполнения, чтобы на логических ядрах чирикать код параллельно
Я бы микросервисы больше как архитектурный паттерн воспринимал (не в ООП-залупном смысле архитектурный а в плане инфраструктуры системы). Он ассоциируется с гринтредами постольку-поскольу видимо из-за Go. А так в отдельных случаях можно вообще при желании спокойно написать код с корутинами который работает медленнее чем без них лол
Ну и если более прямо отвечать на твой вопрос -- нет, не работает. Максимально возможный прирост производительности очевидно кратен количеству имеющихся в распоряжении системы ядер
это кавайные смайлики
котлин лучше
Где брал инфу по oauth? Мне ща тоже надо настроить, но я без понятия что и как, у гайдов в интернете жопа отваливается потому что бут 3+
Сайт спринга, плюс гит какой-то с примером был. И вообще я и сам там что-то дополнял. Так что сложно сказать источник, но помню наебався я знатно.
А что по поводу проекта в общем скажешь...?
Я ждун пупуня и скажу только ты молодец!
Чел - айти это не твое. Ты даже вопросы задавать не умеешь, неудивительно что тебя хуями кладут. И это твое копротивление за length выше... кого то забавляет, кого то раздражает, но в обоих случаях выставляет идиотом в первую очередь тебя.
Приведи полный код. Из твоего туалетного обрывка анону остается только гадать, какого типа элементы массива input
Приведи полный текст ошибки. Обрати внимание на то что у тебя косяк компиляции. Обычно в нем четко указан номер строки, где компиляция не сошлась. Уже по номеру строки до тебя по совести должно было дойти где ошибка, а ты мало того что сам ее распарсить не можешь, так еще и людям мозги компостируешь, недодавая инфу.
Хз чего ты ожидаешь, это максимально минорное обновления для обычных разрабов.
Я не настолько богатый, чтобы отваливать деньги за сертификат для демки
Примерно поэтому. Там просто дохуя подобных оптимизаций.
Если у тебя там константы, они скорее всего после компиляции станут одним строковым литералом, что ещё быстрее стрингбилдера и конкатенации.
Перестань пожалуйста, называть себя программистом.
>>49082
>Чел - айти это не твое.
IT это и не твое тоже, но ты же почему-то здесь сидишь.
>Приведи полный код. Из твоего туалетного обрывка анону остается только гадать, какого типа элементы массива input
>Приведи полный текст ошибки. Обрати внимание на то что у тебя косяк компиляции. Обычно в нем четко указан номер строки, где компиляция не сошлась. Уже по номеру строки до тебя по совести должно было дойти где ошибка, а ты мало того что сам ее распарсить не можешь, так еще и людям мозги компостируешь, недодавая инфу.
Ты еблан или да? Вот в этом посте: >>48655 я подробно все расписал. Если некомпетентен, то так и скажи.
Могу тебя покормить. Хочешь?
+=
Ничего нового. К примеру, здесь можно каждый день писать о превосходстве великого шарпа над ничтожной джавой, и каждый раз будут на это отвечать.
Пока по вершкам.
Нихуя не понятно, но очень интересно. Комментов напиши к коду, а в ридми напиши - че это за слот машина и как ей пользоваться. Можешь вместо ридми дать пояснения прям в гуях приложения.
Сделай скорость и периодичность спиннера конфет конфигурируемой, и на своем тестовом окружении спецом сделай ее маленькой. По 5сек. Заебался ждать пока крутил этот спиннер...
В заголовке где имя пользователя и его баланс показывается рядом с кнопкой "выход" - баланс всегда по нулям. Бага.
>Комментов напиши к коду
Комменты потом напишу может, сам код-то не сложный нифига. Я вроде через аннотации намерения документировал, дальше хз.
>а в ридми напиши
Надо будет заняться, как фантазия появится...
>спиннера конфет конфигурируемой
Уже конфигурируемая. Я просто хуй забил это вставлять непосредственно в ui.
> баланс всегда по нулям
Не очень понял.
ТО ЧТО СЕЙЧАС ЭТО Ж БЛЯДЬ ТО ЖЕ САМОЕ ЧТО
var STR = new StringTemplate.Processor();
STR.call("{x} plus {y} equals {x + y}");
>Уже конфигурируемая
Нет.
Конфигурируемая - это когда вот эта вот опция сидит не в каком то там JSе на фронте, а в опцией спринг-конфиге, и эту опцию можно заоверрайдить при развертывании - через переменную окружения, через командную строку, через spring config server и. т. д.
>Не очень понял.
степс ту репродьюс
1. Зарегался, залогинился
2. Кручу конфетный. Получаю конфету
3. Кликаю Ок, попадаю на титульный экран
4. Зырю в заголовок
Экспектед резалт
- Как у тебя на пике
Актуал резалт
- все по нулям
Причем тут жвм инженеры? С точки зрения программиста хуйня. Взяли бы пример с няшного питона или c#, там хоть что-то нормальное сделали.
>Продай ее в инвентаре.
Вот именно поэтому тебе и нужно написать ридми и пояснения. Если б твое резюме со ссылкой на проект попало ко мне на стол, с ненулевой вероятностью я бы мог уже сдаться и дропнуть пет уже на этом этапе.
Угу, пасиба. Напишу обязательно, няша...
У них вообще другого выбора не было. Там ясно сказано же. К слову, а на этапе компиляции оно сможет вычисляться?
>Ясно, перенесу. Правда хз пока как, ну придумаю, штож
И когда переносить будешь, проверь что эти вот твои лимиты на накрутку спиннера валидируются сервер-сайд, а не тупо во фронте. А то к тебе придет кулхацкер и устроит девальвацию конфет.
Это все обертка же. По сути результат уже известен, а все вот эти спинеры нахер не нужны, можно просто f5 сделать. На пике реальный алгоритм.
>Это все обертка же. По сути результат уже известен
А смысл? Те хотелось просто анимацию вкорячить чтоли?
Ну-ка блядь, расскажи, как ты собираешься передать объекту локальные переменные? Ебанько что ли?
Удваиваю этого господина.
>constant expression
Раз уж в джаву фактически добавили константные выражения, хуле constexpr не запилили?
Ебло, ты сам этот говнопример высрал, тут жвм инженеры никаким боком не лезут.
Вообще стринг класс удивительный какой-то. Для него вон аж исключения в спеке делоют.
Да нихуя ты там не расписал, порватка. О чем и речь. Судя по тому что даже на конструктивную критику ты способен реагировать лишь залезанием в залупу и отзеркаливанием, ты похоже еще и шкальник-малолетка. Выйди, повзрослей и только тогда заходи обратно.
Смотря какая задача стоит. Если задача - не давать пользователю накручивать фантики миллионами, дудося твой РЕСТ в обход фронта (что какбэ кажется логичным), проверки таймаута на фронте мало.
Че это за параша? ${var} - нотация, понятная всем кто когда либо писал скрипты или темплейты. А эта твоя залупа со слешами обьектом доллара выглядит как регэксп ебаный.
Не нравится - не пользуйся. Ради одного нытика ломать обратную совметимость никто никогда не будет.
Ну а че еще следовало ожидать от пориджей? Ты абажжи - щас они еще откроют для себя что паттерн матчинг люто урезанный по функционалу, и начнут стенать что опять хуйню завезли.
Сука, как?
Написал тебе за щеку.
Мне приходится ими пользоваться из-за даунов, которые их кидают, и оборачивать их в RuntimeException.
Обратная совместимость вообще никак ни на йоту не сломается.
Есть два бина. Между ними десятки других бинов. Причем есть несколько путей.
Есть функционал, как отобразить диаграмму со связью двух бинов?
Интераптед эксепшн тоже оборочиваешь? Ебать ты мудак.
https://www.jetbrains.com/help/idea/spring-diagrams.html
То что ты описываешь вряд ли кто-то реализовал, тк нахуй не нужно и слишком сложна
Я пока вглубь не залезал, по вершкам чекал. Просто ты скинул скрин JSника, из чего сложилось впечатление что вся рулетка с кулдаунами у тебя - на фронте.
Кто-нибудь может мне подсказать, как решить один вопрос с PowerShell?
Я просто произвожу замену в текстовом файле конфигурации
(Get-Content -Path 'C:\MyProgram\Settings.yaml') -replace '"Name1"','"Name2"' | Set-Content -Path C:\MyProgram\Settings.yaml
НО, если Name1 встречается несколько раз в этом конфигурационном файле, а мне нужно его изменить только в том случае, когда он встречается в первый раз.
Как решить эту проблему? Подскажите новичку
Понял, пошёл гуглить, если что - вернусь, благодарю
Ну как видишь - не. Вон даже тест написал...
[regex]$pattern = "Name1"
$pattern.Replace("Some string with Name1 and Name1 again", "Name2", 1)
>новой парадигмы дата дривен пупуньства
Этой "новой" парадигме лет столько же, сколько функциональному программированию и ADT. Там жен и примеры.
Суть в том, чтобы не теряя профитов от полиморфизма, раздуплить ООП обратно в ФП, и иметь возможность моделировать систему не из зашоренных наглухо обьектов с сокрытыми мутабельными свойствами (которыми все равно никто никогда не пользовался), а из иммутабельных открытых структурок-рекордов, которые в сочетании с sealed-фичей и новыми свичами косплеят ADT на минималках.
А я тебя обниму в ответ. Дальше что?
Если говорить про бут, он снизу вверх исчет конфигурации от @SpringBootApplication
Потом и чёт все @Component и разрешает wired.
А так, конкретный пример бы, абстрактно-то мало что можно сказать..
Ну ты епта скажи в чем я неправ. Сам хуй пойми как сформулировал вопрос и что-то ожидаешь.
Что-то уровня: как jvm оптимизирует хвостовую рекурсию.
Кот
>Жсон парсер, например. Т.е. на вход контроллера ты хуй рекорд положишь.
А вот jackson заявляет обратное.
https://github.com/FasterXML/jackson-future-ideas/issues/46#issuecomment-678634274
И я не вижу ни единой причины считать, что эта фича не будет работать на контроллерах.
>Хибер наверняка.
Ему и не нужно, не для него рекорды и дизайнились. Как ты даже в теории себе представляешь поддержку иммутабельных рекордов для JPA, где Entity мутабельны априори?
А вот с Jooq рекорды вполне себе зайдут, особенно если поддержку рекордов в генераторе запилят.
> Сам хуй пойми как сформулировал вопрос и что-то ожидаешь.
Процитировал дефолтный вопрос, который задают на интервью, хули не понятно? А, что? Не знаешь потому что никогда не приходилось работать с жизненным циклом контекста? Ну пошел ты нахуй, это знать надо.
Блять, если ты спрашиваешь за лайфцикл так и надо говорить. Говорю ж хуевая формулировка.
Помню там целая вереница, сначала интерфейсы по типу бин намед, потом преконстракт, интерфейс, а потом аннотация связанная с инит. Потом пост констракт.
В конце пре дестрой интерфейс, а потом метод. Ещё важно понимать, что если это был @Bean, то состоянием управляет спринг.
>>50132
Ни ебу, он у меня требовал ноарг конструктор. Попробуй сам, расскажешь.
>А, что? Не знаешь потому что никогда не приходилось работать с жизненным циклом контекста?
А когда может пригодится это?
Хз, не смотрел я ниче, чтобы ответить тебе. Вон даже название интерфейсов не помню. А так, вместе с двачеком читал же https://2ch.hk/pr/res/2730933.html#2749089 (М)
И вообще я просто обнимашек хотел.
На собеседовании.
В первом случае я же про контекст сказал... Бсите, скажи сам, чего ты хотел услышать. Или ты тролль
СПРАШИВАЮТ ЖИЗНЕННЫЙ ЦИКЛ КОНТЕКСТА
@
РАССКАЗЫВАЕШЬ ПРО СВОЙ ДНЕВНОЙ РЕЖИМ И ТУРНИЧКИ ПОСЛЕ РАБОТЫ
Контекст-чад
NaN
Как мне кажется,
во-первых, лучше брать модуль разности для int numerator, если ты не хочешь сделать цикл длиннее в случает отрицательного значения в numerator
и во-вторых, тебе надо понять разницу между полями и методами, содержащими/возвращающими размер, для разным структур данных (коллекции, массивы)
я не об этом.
зачем это например мне?
я бы понял ты какую либу запилил интересную.
зачем ты свой пет-клиник в тред кидаешь то?
У меня есть либа, ну как, так один синхронайзер. https://github.com/anywaythanks/ExtendedSynchronizers
Но я не думаю, что могу это хоть куда-то впихнуть, типа вот у пет клиника есть сайт, который тырк тырк и оценил. А вот либу... Как ты блятб её оценишь? Или потенциальным жунам время будут уделять на ревью... Так и поверил.
Кидаю же ровно затем, чтобы узнать свои проебы.
Это вот эта борисовская мудотень про бинпостпроцессоры?
Ее реально нужно запоминать и еще помнить как с ними работают автоконфигурации спрингбута?
А че еще анонам в тред кинать? Опостылевшее нытье вкатунов на стадии от торга до депрессии? Или на брыли шарпеев смотреть? Чел хоть чето делает и чето спрашивает: можно ему говна за панамку по существу и со смыслом накидать, а не просто так, как обычно. Все какое никакое веселье.
Мимо
Тогда про какой жизненный цикл спрингового контекста мы говорим?
Гугл по запросу
spring appliction contect lifecycle вообще ничего вразумительного не выдает.
https://habr.com/ru/articles/720794/
первая строка в яндексе
а вообще ну как бы это база это знать надо.
может ты еще не знаешь как работают аннотации спринга?
как работает проксирование в спринге?
и прочую базу.
это все в документации самого спринга хорошо описано, но искать лень
Знаю. Но мне тоже не нравяца вопросы а зачем ты что-то делаешь. Хочу и делаю. Меня же ускоряют почему-то, будто я в чем-то уже виноват.
Ну так в статье и есть про бинфакторипостпроцессоры и прочую дичь.
Я все это читал, когда 2 года назад вкатывался. И про аннотации и проксирование тоже.
Тогда не спросили почему то за 7 собесов.
то что ты все лепишь в один файл.
и аннотации орма и код.
а ты зачем создаешь кастомные аннотации если никак их не используешь?
По положняку джавового коммьюнити, в JPAйные Entity логику класть - не лучшая идея, по целому ряду причин.
Лично я нахожу это потешным, ибо нахуя нужна концепция ORM как средство маппинга кортежей в обьекты, если по факту люди хибером маппят кортежи в кортежи. Но хули делать - так устроено сообщество.
ну например потому что на модели для орма и прочие дтошки никто не пишет тестов. и обычно это закреплено в тех практиках и в сисд закреплено.
а с его кодом в модели - нужно писать тест.
а как я уже писал выше - на модели тесты не пишут обычно.
Богом
Тебе в ридми нужно доку юзкейсов описать, можно юзкейс-диаграмму. И потом уже ссылки на доку апи, с описанием что каждая ручка делает
Я залез. Смотрю в ридми, а там ер диаграмма на 10 сущностей.
А все описание бизнес-логики на твоем скрине.
Сиди и угадывай, как экстрасенс.
На проектах без доки хотя бы на созвоне тебе кто-то что-то объяснит.
А тут какая-то хтонь. При том, что это не легаси какиш, а поделка пет-проект.
Странная притензии, если честно. Эмбедбл не живёт в persistence context. Поэтому вся эта логика никак не может повлиять на эти методы.
Все кастомные аннотации используются. Не понимаю про что ты. Одни для документирования нужны, другие для валидирования.
Срыгос в мвп тред со скетчами.
Не понял, к чему ты это выдал.
Если в ответ на это:
>По положняку джавового коммьюнити, в JPAйные Entity логику класть - не лучшая идея, по целому ряду причин.
То так то я и не говорил что логика в слое данных - хорошая идея. Я и сказал - есть ряд причин на то чтоб ее туда не класть, и ты назвал одну из них.
я выше ответил челику.
у меня в банке в модели и дто не суют код чтобы не писать на них тесты.
валидирование увидел.
а для документированя - шта?
это где ты такую методику использования их нашел?
лично я если и делаю катомные аннотации то они у меня в логике используются, через рефлексию вычитывая их у обьектов и на их основе меняя логику
Я напутал, ето не ентитя.
>>50550
Да, надо бы.
Ну в общем-то там из существенных только 4 сервиса. Они не внесены в директорию managers. По сути вся логика приложения описывается ими.
В манагерс же сервисы для круда.
Так, приложение создаёт общий аккаунт, потом счёт и инвентарь к нему. Потом за деньги из счета ты покупаешь возможность что-то получить в инвентарь: item. Этий айьемы могут продаваться.
По сути копишь предметы, продаёшь, преумножаешь денюжки.
Ясно. Ну я уже написал тесты, когда-нибудь перенесу в утилс сервис какой-нибудь.
https://docs.oracle.com/javase%2F7%2Fdocs%2Fapi%2F%2F/java/lang/annotation/Documented.html
Ты не слой сервисов описывай, а доку с пользовательской стороны, с ссылками на доку апихи. И как и зачем с апихой взаимодействовать.
Почитай как выглядит дока к публичным всяким апихам. К ютубовской там или вкашной.
>Да, надо бы.
>
>Ну в общем-то там из существенных только 4 сервиса. Они не внесены в директорию managers. По сути вся логика приложения описывается ими.
>В манагерс же сервисы для круда.
>Так, приложение создаёт общий аккаунт, потом счёт и инвентарь к нему. Потом за деньги из счета ты покупаешь возможность что-то получить в инвентарь: item. Этий айьемы могут продаваться.
>По сути копишь предметы, продаёшь, преумножаешь денюжки.
На будущее.
Если ты когда нибудь трудоустроишься, твой код попадет на ревью, и тебе дадут ремарку, где тебя просят задокументировать чето - никогда в ответ на ремарку не пиши такое вот полотнище как ты щас расписал. Просто отвечаешь "да, конечно", идешь документировать, и когда закончил - отвечаешь "готово".
По доброму советую.
>Просто отвечаешь "да, конечно", идешь документировать, и когда закончил - отвечаешь "готово".
у меня порриджы любят стикерами под коментами это в битбакете делать лол.
типа лайк и зеленый квадратик
Молодец, классно ты их выдрессировал... всмысле - клевая у вас культура разработки, и коллектив хороший.
>Для меня это правда сложно.
Ну а прикинь как сложно тем кто пытается твой код читать и угадать, что у тебя в голове и какую задачу ты этим кодом хочешь решить.
>Я не иду трудоустраиваться. И как уже говорил нет фантазии, чтобы прям сейчас документировать... Для меня это правда сложно.
Не важно. Это негласные правила культурного общения между разрабами. Тыж щас с разрабами общаешься? Изволь соответствовать.
>Я не иду трудоустраиваться.
а чего ради тогда делаешь это все?
я лично в нерабочее время если и пишу в опенсорс то только под настроение, которое у меня редко выдается. да и коммичу я в лютое нишевое говно о котором тут даже и не слышали скорее всего
Главное, чтобы не последняя.
Так ты нишу просто назови. Типа сразу найдем нужную либу, сразу посмотрим всех контрибутеров, найдем единственного ивана говнова и затравим?
Имею ввиду не сейчас. Меня здесь никто не возьмет на работу. И никто здесь не является моим начальством.
>>50588
Это странно. Ты говоришь не документировать уровень сервиса, но теперь сам спускаешься на этот уровень.
>>50589
Блин, ну глянул я апи вк. У меня нет бля столько времени и ресурсов такое написать. Максимум, можно сваггер впихнуть, показать мол вот то принимается, это возвращается. Кратенько некоторые методы описать... Но не хочеца мне тратить кучу времени на то, что никто даже глядеть не будет...
>Меня здесь никто не возьмет на работу
почему? Может кто-нибудь кинул бы рефералку как минимум.
Ну рефералку для кредитки мб и кинул бы.
>Максимум, можно сваггер впихнуть
Хорошая идея
>Но не хочеца мне тратить кучу времени на то, что никто даже глядеть не будет...
Ты путаешь причину со следствием.
А так - дело твое конечно. Никто тебя тут не заставит.
>Никто тебя тут не заставит
Надо сделать, а то глупость какая-то, критика есть, а фидбека нет. Правда доки от меня паршивого качества будут, но как могу впрочем.
Чел, тока не делай это из под палки как одолжение. Если ты хочешь чтобы твой проект посмотрели и дали конструктив, качественные доки - это маст-хэв, а не опционал.
Если ты просто зашел поделиться радостью и не ждешь обратного ревью - то не надо доков-из-под-палки, мы значит неправильно тя поняли.
Я не делаю из под палки как одолжение. Это нужно мне и только мне. И я правда благодарен любой критике, вооть.
Не жду.
Ну тогда и оправдываться не надо, что доки будут паршивого качества. Какого качества будут доки, такого качества будет и фидбэк
>Я плохо описываю, это вот к этому.
Тем хуже для тебя.
Ты мож и не устраиваешься, но по сути 90% вкатунов вкатиться сейчас не могут не из-за того что по опыту или стажу не выкупают (это все эмулируется при желании), а в первую очередь из-за того что неспособны твердо и чотко выражать мысли, как словами так и текстом. К софт скиллам требования сегодня выше, чем к хардовым.
Без понятия насчет генерации в хибере. Айдишники и так генерирует.
А зачем генерировать что-то кроме айдишников на уровне хибера? Почему просто в сервисах не генерировать поля? Или наоборот функциями в базе.
>А зачем генерировать что-то кроме айдишников на уровне хибера?
Ну тип пост запрос. В вк вот есть же idXXX
>Почему просто в сервисах не генерировать поля?
Каким образом интересно? Мне нужно гарантировать, что этого поля нет в бд, а также дать возможность пользователю самому вписать значение. По моему пять табличек чисто для sequenced и генератор самописный небольшая издержка.
>Мне нужно гарантировать, что этого поля нет в бд, а также дать возможность пользователю самому вписать значение.
Я такое постгревыми дефолтами генерирую.
С Бабой Сракой на кассе в магазине.
Что значит ограничен? У тебя вот миграции ликвидбейза есть. В них просто добавляешь дефолты и все.
Триггер, как тригер. Как ты этот эксепшон потом обрабатывать будешь в коде?
>Что значит ограничен?
Выталкивание контекста будет через одно место идти. Мне эти имена нужны до создания энтити.
>Как ты этот эксепшон потом обрабатывать будешь в коде?
Он никогда не случится. А так транзакция слетит и слава бгу. Пользователю 500 отобразится, мол что-то пошло не так. Надо оборачивать как-то?
Чево... Где я думаю, что бд это хибер... Не наговаривай
Хибернейт - это такая NoSQL СУБД.
После ОРМ-параши писать на чистом скуле такой кайф... сразу столько возможностей и шустро работает так
Нет, но это же действительно ошибка на стороне сервера. SQLException вообще не должен случаться. Можно хандлер написать, конечно, но хз
Че за вопросы странные... Молча как еще-то. Только я действительно хз какой номер вернуть. 500 подходит же.
AFTER DELETE FOR EACH ROW у тебя new.case_id будет NULL и как следствие WHERE всегда будет FALSE и как следствие выборка всегда будет пустая и как следствие значение 0 in () всегда будет FALSE и как следствие он при удалении не будет проверять у тебя даже нихуя
Мимокрок
Отдельный триггер для delete написать надо тогда, который всю табличку чекнет. Не знал что new там будет null...
Алсо если ты агрегируешь уже по одному ключу case_id определённому то делать IF 0 IN (CASE) это лишние действия совершенно потому что если в IN что-то будет то это будет одно значение и можно его на 100 сравнивать просто. Проще будет
Если попонятнее, то напиши там не IF 0 IN (...) THEN, а
IF 100 = (SELECT SUM(percentage_wining) FROM case_slots WHERE case_id = new.case_id) THEN. Реально переусложнил
И тебе не надо индусить два триггера. Зная, что AFTER DELETE у тебя NEW.case_id IS NULL и зная, что AFTER INSERT у тебя OLD.case_id IS NULL ты можешь в WHERE брать тот, какой есть, и проверять:
IF 100 = (SELECT SUM(percentage_wining) FROM case_slots WHERE case_id = COALESCE(NEW.case_id, OLD.case_id) THEN
Всё пока
Ещё я не знаю какая там ситуация но ты видимо в бизнеслогике считаешь проценты которые в записи запихиваешь. Вместо того чтобы в тригере чекать проценты проще было бы в самом триггере проценты пересчитывать. Проценты это математическая хуйня и вряд ли они будут считаться как-то там по-другому ближайшие много лет
Главное не наебись с плавающей точкой и вообще посиди почитай как это делается нормально
>new MessageFormat("{0} plus {1} equals {2}").format(x, y, x + y)
>STR."\{x} plus \{y} equals \{x + y}"
>ТО ЖИ САМОИ ЯСКОЗАЛ!
Этот запрос не покрывает правда кейс когда ты меняешь значение FK на другое, он в старые не будет смотреть. Но дальше сам я и так на РАБоте заебался
Из того же, в каком находится создаваемый бин.
Если это валидация хуйни которую юзер вводит всю единократно и ты её за раз получаешь всю то ты вообще должен это где-то на уровне DTO валидировать а не на уровне базы
Это у вас в жаваскрипте так принято в одну строку блоки писать или это челик такой
Я вообще жс не знаю. Для меня просто нет существенной разницы мужду пиком, и что было ранее. Вроде в компаниях есть четкие регламенты по этому поводу, с ними проще.
Для всех кто это будет читать разница будет большая
проиграл
Хули не так?
Наследование антипаттерн, нужно использовать декораторы.
Ты порядок инициализации контекста выучил, пупунь? Завтра чтоб от зубов отскакивало.
Ну дак они и создаются только через new. А как ещё? Через Constructor.newInstance() что ли?
А ты проверишь?
Любой @AllArgsConstructor со временем превращается в @RequiredArgsConstructor. Лучше сразу второе писать и не тратить время на замену.
Наследование выражает принцип is. Поэтому правильно наследовать квадрат от прямоугольника.
Тригер твой это бизнес-логика. А ошибки бизнес-логики это явно не 500.
А если в SQLException база отъебнула или пул конекшонов потек - то это вполне себе пятисотка.
Хз как это в хибере решается, я с ним почти не работал, но в жуке мы прокидываем и сообщения констрейнтов и тригеров.
Я бы мог обсудить его @With тобой, но вряд ли ты @Getter меня. Придется делать force = true.
Меч в руках может сделать тебя рыцарем или разбойником, выбор за тобой.
А какой принцип выражает невозможность в потомке независимо устанавливать ширину и высоту, когда в предке это возможно?
Возможность есть. Просто их инвариант завязан друг на друге же. Типа установив ширину 5 ты изменишь и длину и наоборот.
Вот у нас есть конструктор Прямоугольника с длинной и шириной. Что ты будешь делать с этим конструктором у наследующегося Квадрата?
Не это не хибер. Просто вот среди потока сообщений ошибок искать, что же там триггер выкинул... Ну и воообще, воон пишут, что просто сделайте общую ошибку и хуй с ним.
Так же, как и логику в сеттерах - никогда не использовать.
В тебя
Ну оба аргумента какие-то ниочемные.
Мы ведь все равно используем тригеры или констрейнты. Если мы их используем, значит нормальная валидация на уровне приложения уже по каким-то причинам не подходит.
Почему мы не должны информировать пользователя апишки что у нас случилось?
Про единицу работы это вообще какая то хуита. Для этого есть всякие 422 ошибки и куча других способов.
Короче очередная попытка все подтянуть под то, как удобнее хиберу, а не разработчику или пользователю. Что это за книжка? java persistence api и hibernate?
>Если мы их используем, значит нормальная валидация на уровне приложения уже по каким-то причинам не подходит.
Ну вообще не значит. Это просто гарантия, что данные вот точно консистентные будут.
>Почему мы не должны информировать пользователя апишки что у нас случилось?
Хз, мы же информируем. Мол у нас валидация пошла по пизде, пж сообщите.
Да, она самая.
Что за просто гарантия?
Допустим у меня в бд куча ограничений.
Как я на них провалидирую? Только предварительным селектом в той же транзакции. А если я в одной транзакции несколько таблиц изменяю? Мне все их тащить предварительно каждый раз?
И почему я не должен просто полагаться на констрейнт и срабатывании отдавать его сообщение?
>Как я на них провалидирую?
Аннотациями. Единственное, что тебе надо ручками чекать - это unique. Остальное перед выталкиванием контекста проверится. Ну и когда юзер данные в контроллер передаст.
>И почему я не должен просто полагаться на констрейнт и срабатывании отдавать его сообщение?
Бд плохо стать может, хз. Нашел конечно у кого спрашивать.
Нет блять, Louisiana State Police
Спрашивай у шарпистов, почему они такие ленивые
Дааа, ох уж это развитие. 10 или того больше лет не могут поправить методы в классе Array. https://bugs.openjdk.org/browse/JDK-8051447
Нинужна ахуенный аргумент, конечно. Ну хоть newInstance поправили. Спасибо и на этом.
Нинужна хуёвый аргумент только тогда, когда это на самом деле нужно. Ты бы ещё начал ныть, что в джаве нельзя быстро и безболезненно каждый 0 в куче превратить в 1, а каждый 1 в 0.
>Нинужна хуёвый аргумент только тогда, когда это на самом деле нужно.
Ну т.е. писать 8 блять ифов нормальная схема? Вообще заебись.
Обжект вместо массива вообще часто принимают методы ждк. Вот ты уверен, что они не применяют эти методы?
>Ты бы ещё начал ныть, что в джаве нельзя быстро и безболезненно каждый 0 в куче превратить в 1, а каждый 1 в 0.
Че...
>>51056
В плане? Поправили что ли?
>Ну т.е. писать 8 блять ифов нормальная схема? Вообще заебись.
Ебанидзе, никто это не пишет, это автор этой наркоманской иссуи предложил сделать вместо нативного метода.
Потому что все шарписты сидят или в этом треде или ноют в мвпаче.
Уебан блядь.
Ты этот ишью искал сортировкой по дате создания?
Так вот уебище, он потому и валяется с нулем реакции на него, что содержит тупорылый бессмысленный высер.
Как и твои посты в треде.
Сьеби нахуй.
В плане бесполезный? Ниче я не искал, просто наткнулся сам, когда пытался использовать методы жабы.
>>51060
Во https://pastebin.com/MVPiztW8
Впрочем надо было еще дажавю ебнуть. https://github.com/openjdk/jdk/blob/master/src/java.base/share/classes/java/util/Arrays.java#L5050
Глядите, хуеглотина не смогла в базовую дискуссию и перешла в бокс по переписке.
Каков язык, таков и тред.
$"\{x} plus \{y} equals \{x + y}"
$(RAW)"\{x} plus \{y} equals \{x + y}"
$(SQL)"\{x} plus \{y} equals \{x + y}"
или нахуй
r"\{x} plus \{y} equals \{x + y}"
sql"\{x} plus \{y} equals \{x + y}"
все лучше чем сейчас
https://www.youtube.com/watch?v=QZ9rXZT0DlQ
На тебе полный разбор кейса от сеньор разработчика на конференции со всеми вариантами решения. Оптимистичная блокировка должна тебе подойти.
Аноны, а как вы учились/учитесь Java? Посоветуйте чего-нибудь полному новичку.
Сходить в церковь, исповедоваться, причаститься.
Нихуя.
Наследование выражает сабтайпинг в ООП. Поэтому с 99% вероятности (в зависимости от публичного контракта и смысла прямоугольника и квадрата) неправильно ни наследовать квадрат от прямоугольника, ни прямоугольник от квадрата, и правильней наследовать обоих от некоего абстрактного типа "фигура".
Спасибо, гляну.
Барбара спок
Понял, перекатываюсь.
Спасибо, полезный доклад, натыкался на него, но все откладывал просмотр. Но мне кажется не совсем моя проблема рассматривается, у меня же косяк при вставках происходит, а локи блокируют/версионируют строки, которой еще как бы нет на момент селекта в параллельных транзакциях… Пришла в голову идея навешать ретраи на метод, где вызываются сохрание и обновление, вроде должно помочь
О, а я хуйнул подобное. И это происходит если предмета не существует. put if absent. Если потом запросить данные и сделать апдейт один из тредов будет на локе.
Я наверн криво написал, для каждого треда своя транзакция, они параллельно идут
Да. Хотя вряд ли это поможет. Врочем если два одновременно запишут один из них по unique упадет.
Надо или локу брать каким-то образом перед записью или еще как.
Например как liquebase, у нее там есть bool столбец lock.
Во. Можно гранулярность снизить.
Да и так медленно работает пиздец, почти час 100к записей пишет при конкаренси консумера в 10
Не надо ничего наследовать, это для пидоров
Делаем класс Figure, в нём свойство planeArity=n (2D, 3D, etc.) и свойство points -- массив n-мерных массивов, и по необходимости делаем методы isSquare() isTriangle() и с ними работаем уже. Если что-то медленно то денормализуем добавляя свойство (напр. figureType в нашем случае)
>if(width != length) throw new IllegalArgumentException(...);
Вот эта хуйня - это прецедент, при котором программа, работающая с прямоугольниками, не работает для всего множества квадратов-наследников от прямоугольника. Наличие такого прецедента - прямое доказательство того факта, что тип-квадрат - не подтип прямоугольника. Фактически эта залупа - расписка в том, что LSP для такого квадрата-наследника-прямоугольника сознательно пущена по пизде.
Впрочем, пример притянут за уши еще этим аноном >>50958. Потому что конструкторы не наследуются, и в квадрате можно просто объявить единственный конструктор Square(a) {super(a, a)}. Тем не менее если бы прямоугольник был DTOшкой с сеттерами длины и ширины, квадрат от нее наследовать было бы таким же нарушением, так как возникла бы похожая дилемма: что делать с программой вида...
generate(Rectangle r) {
r.setHeight(2)
r.setWidth(3)
}
...при подстановке в нее вместо Rectangle Square?
Я сделал сваггер, но сука корс политика... Пока что нет возможности поправить, так что на данный момент она не полностью интерактивная. Но как дока для апи... https://twister.fvds.ru:9443/server/swagger-ui/index.html#
попытайтесь найти хоть одну проблему в этом варианте - у вас нихуя не получится.
Да
В смысле лучше? Они решают разные задачи. Спринг уместно сравнивать с ASP.NET, но не с джангой.
И че, сравнивал кто-то? Насколько жаба далеко? По сути столько компаний человекочасов влили в неё. Интересно майки сравнятся с этим или нет
Java лучше C#, да
Sql легаси так-то. Но и жаба тоже. Сложный выбор, сложный. Я склоняюсь в сторону раста
Язык программирования сложно сравнивать с языком запросов. Но мне недавно пришлось знатно поебаться с PL/SQL, и он мне почему-то зашёл, несмотря на ещё более громоздкие конструкции, чем в жабе.
Нет такого понятия - "зашкварно". Пиши хоть в Notepad++, если тебе так удобнее.
Лучше и не скажешь
Прямоугольник это усложнённый квадрат. То есть квадрат старше по иерархии.
В математике же:
Прямоугольник квадрат = new Прямоугольник(a, a);
String getShapeName();
}
class Square extends Shape {
String getShapeName() {
return "Квадрат"
}
}
class Rectangle extends Shape {
String getShapeName() {
return "Прямоугольник"
}
}
>Я посмотрел тред варс годовалой давности и на том этапе лум говорит не выносить код который сильно нагружает цпу в виртуальные потоки. Пофиксили они эту хуйню или нет?
Виртуальные треды не могут дать тебе больше CPU. Нужно делать CPU intencive вычисления, юзай обычный ForkJoinPool.
Фу, старье.
Да делать мне больше нехуй епты,я сейчас самую тяжелую логику помечаю @Async и заебись. Нахуя мне многопоточность если я не могу исполнять тяжелую логику многопоточно? Олсо,ты выражаешь свое мнение или создателей лума на сегодняшний день?
>Нахуя мне многопоточность если я не могу исполнять тяжелую логику многопоточно
Ты долбоеб? Сам не паралелишь и жалуется, что поток занят.
Там джин что ли должен за тебя паралелить?
Да блядь,смысл лума именно в том чтобы я писал обычный код а джин из проекта лум превращал его в многопоточный
Не ебу где ты это начитался, но такой цели в джепах нет. Пока не покажешь - ты пиздло.
А разработчик как и раньше сам должен заботиться о прерываниях и законе амдала.
Смотрел в книгу, увидел фигу блять. Если смотрел доклад, должен был понять, почему виртуальные треды по определению никогда и ни при каких условиях не дадут производительность выше обычных. Зеленые потоки никогда и не проектировались для CPU-intensive кода, равно как никакойц прирост в производительности на CPU-intensive коде никогда не дадут реактивные стримы и прочая асинхронщина.
>>52176
>Нахуя мне многопоточность если я не могу исполнять тяжелую логику многопоточно?
>>52241
>Да блядь,смысл лума именно в том чтобы я писал обычный код а джин из проекта лум превращал его в многопоточный
Че ты несешь блять.
Апеллировать к евклидовой геометрии в данном случае - ошибка. Приложения бывают разные, и могут спокойно оперировать такими предметными областями, где квадрат либо вообще не будет подтипом прямоугольника (пример выше с DTOшками), либо такое отношение будет неэффективно и бессмысленно (например, вычисляя площади разных фигур, нахрена городить наследника "квадрат" от прямоугольника с двумя числовыми аттрибутами "длина"-"ширина", если можно сымплементировать "квадрат implements фигура" с одним полем "сторона", который будет лучше наследника от прямоугольника во всем - меньше каплинга, меньше полей в обьекте, ниже дерево наследования, итд.).
У меня физического доступа к пк и паролям нет.... Что я сделаю по твоему? Корс вообще офнуть можно в браузере, вроде бы.
Ты думаешь ты один такой нитакусик, и никто до тебя подобную проблему не решал?
>Корс вообще офнуть можно в браузере, вроде бы.
Юзер этого делать не станет.
Не очень понимаю, чего ты добиваешься, няш.
Знаю, когда вернусь - поправлю. Но пока только так.
Ты чет нервный какой то. Говоришь так, как будто я твой кабан, который на тебя давит из-за поджымающихся сроков. Расслабься. Все что я хотел тебе сказать - это то, что ты не первый столкнулся с CORSом в сваггере, и это решаемо. Вот и все. Будешь ты делать или не будешь - дело твое.
Для вката щас желателен китайский. А английцский - по прежнему актуален для самообразования.
Запускаю приложуху, все dispatcherServlet регистрируются и видят свои контроллеры, что видно по логированию в конструкторах этих контроллеров. Но при этом на любой запрос мне кидает следующее:
>org.springframework.web.servlet.DispatcherServlet.noHandlerFound No mapping for GET /test/aaaaa/
В браузере 404. Я думал, может @EnableWebMvc не отрабатывает, скопипастил весь класс WebMvcConfigurationSupport и заинжектил его в корневой контекст. Всё равно ничё не работает, одни 404 повсюду. Подскажите, куда можно поглядеть? Че-то всю голову сломал уже.
У сервлета:
>testDispatcher.addMapping("/aaaaa/");
В самом контроллере у единственного метода пустой @GetMapping. Контекст приложения называется test, всё как положено.
А зачем несколько диспатч серверлетов, если у мвц он один? Пока я вижу это как ты к какому-то левому серврлету маппинги добавляешь и все.
Да и зачем вообще руками их добавлять...
>А зачем несколько диспатч серверлетов, если у мвц он один?
Чтобы не заморачиваться с выдачей статического контента в едином сервлете.
>Да и зачем вообще руками их добавлять...
А как?
капча 47 намекает что я даун, но пока не могу понять где именно
Статического контента? Это https://www.baeldung.com/spring-mvc-static-resources ? Чёт не вижу заморочек.
Парень бросил? Сочувствую
Я думал об этом. Я предпочитаю юзать статические конструкторы вместо билдеров. То что лобок так себя ведёт конечно не конец света, но чуть чуть подгорело.
Там
Так вроде всё у него прокатило. Прямо щас ты сидишь, между прочим, в том самом треде, что был преждевременно высран.
Потому что не такого пункта в правилах двача. Не обсуждаем политику, не вайпаем, остальное мочу не ебёт.
Долбоебина безмозглая,пепекат после тысячи постов,сиди сам в своем пустом треде,ебанат
Перекат по делу будет через 500 постов
Каеф. 3к постов минимум.
Спасибо, выглядит действительно несложно.
Но мне бы щас с основной проблемой разобраться - почему он у меня не видит маппингов. Или может есть какие-то способы дебага спринговского мвц-конвейера, о которых я не знаю. Чтобы я сам допёр.
Ты проверь, что твой тестовый серверлет вообще мапится.
Вообще вроде можно диспач из мвц получить ну или истансцировать через конфиги.
Жаба не тонет, сука!
> Тред-то тонет.
Да в этом и прикол как раз. Чтобы залётные не видели тред на первой странице и не приходили сюда срать.
Можно кликнуть на тег в закреплённом треде и там будет полный список тредов, от залетух не спасёт
Они так не умеют. Скроллят треды, как ленту во вконтактике.
Залетные полезут в новый тред, а ЛТС проигнорируют.
Да это же литералли я.
Ух, ну теперь буду всем хвастаца, все таки не каждого старшей пупуней назначают. И в резюме пунктик добавить что ли...
В общем доделаль. Теперь вики небольшая есть, опенапишка рабочая. Еще разделил ридми. https://github.com/anywaythanks/Twister
Правда вот пришлось вот эту не няшную штуку добавить.
Ну вот теперь точно, наверное, пока все...
Господин мочух, чекни айпишники и увидишь, что это один шарпей-хуесос семёнит.
ты ебанутый?
или шарподебил тролящий тупостью.
по факту чекнул поверхностно - там новый экзекютор добавили как сахарок или метод virtual билдеру трида
Скрыла))
>там новый экзекютор добавили как сахарок
Вангую что популярным на собесах вопросом первое время будет такой: "нахрена виртуальным тредам экзекутор, если их и так можно создавать миллионами без видимого ущерба быстродействию и потреблению ресурсов".
Делфисты в ахуе
А нахера везде спрашивают про реактивщину/асинхронщину, когда в 95% проектах нагрузка - в полторы престарелые тетки на сервис в день, и обычные SpringMVC- или JaxRS-ресты на сервлетах?
Надо чтоб вкатун знал все-все-все, ибо нехуй.
Алгоритмы это наоборот,самая душная и неинтересная дрочь эвер,даже джава мемори модел интереснее
Я так же и сказал... Эх, вот бы у троица хоть куда
>Вообще вроде можно диспач из мвц получить ну или истансцировать через конфиги.
Можно чуть поподробнее? Не особо понял, о чём речь.
А, ты в смысле попробовать иными способами диспетчеров включить, понял. Ну надо попробовать.
А тут вышла джава 21 и начали долбить алгебраической...
оо дата модель...
Он сам не знает, просто новое слово выучил.
Гига вкатун
Убрал @EnableWebMvc и свой псевдокласс WebMvcConfigurationSupport, скопипащенный из сорсов спринга. В результате всё завелось и ответы пошли.
Как это объяснить? Я же по сути не заинжектил какую-то важную рассыпуху, всякие там конвертеры, мапперы и т.д?
Бля, я даже не знаю бут у тебя или просто спринг, какие конфиги еще существуют... Не научився читать мысли или моском ртпшить к пк, к сожалению.
Ммм, я вот чет подобное делал, тут и вебмвц и конфег. А еще целых два контекста.
Если ты все как в доках делал, то отсюда подтянул контроллеры.
фыв
Какой из?
- спринг
- хибер
- докер
- кафка
Ну и жабакор и sql у же само собой.
Вы что думаете? Как стать залететь мидлом в большую команду на не самом легаси стеке.
Из всего перечисленного мне больше всего западло дрочить хибер. Потому что я на жуке уже полтора года пишу.
Там есть тестики. Не на весь код, конечно, но есть.
Ты за столько времени так и не попытався даже дрочить хибер. Чево ты конкретно ждёшь?
> западло
Ничего, пересилишь. Меня вот заставили юзать говнохибер после четырёх лет няшного SQL.
>>спринг
Че та знать то, десяток аннотаций и пару костылей. Остальную специфику доучишь за неделю на проекте.
>>хибер
У меня жук, тоже впадлу хибер дрочить.
>>докер
Удел девопсов
Направить логи с ранчера в консольку идеи в рантайме могу девопес научил. Но ебаться с куберами - делать мне нехуй.
>>кафка
Все времени не хватает ее проработать нормально.
Не попытался, потому что дрочу кафку, кролика и докер.
Еще книжку по микросервисам читаю.
А хибер только до вката дрочил. Помню меня попустили на этих методах энтитименеджера и на жизненном цикле энтити. Прям на зубок нужно было помнить как, откуда и куда что переходит.
Как вспомню эти всратые схемы, так вздрогну.
О, ещё одно казино
Чел, нужно знать наизусть все кишки спринга, сприг-бута, спринг-мвц, спринг-секурити и спринг-тестов. У каждого из них свой контекст. А еще хибер тоже на зубок, у него тоже свой контекст.
Да только начал курсец. На работе докер проблем не вызывал. Нагуглил нужный композ, подставил свои значения и все. Ну еще подрубился к тачке, залез внутрь контейнера и лог файл оттуда почитал.
Тут из нового для меня именно конфиги - хосты, порты, мосты.
Как шарить всякое говно между друг другом в компосе. Иногда нужно, но лень было. Чисто копипастил. Еще вот плагины всякие для мавена/градла.
Мне там подрочить немного надо по объему. Кишки и всякие сетевые штуки, типа настройки регистри это пусть действительно только девопсы делают.
На микрочелики на последнем спринге желательно, а не на вебсферу под 5 джавой.
> Да только начал курсец.
На хибер ты хуй забил, тут только курсе начал. Стахановскими темпами идёшь. Ну через пару годиков...
Чаю. Вот бы меня взяли на старый стек какой-нибудь.
Потом сохраняю куда-то Supplier<Poopoonya> p = poopoonyaFactory::create;
Может быть такое что poopoonyaFactory был собран гц и сапплаер сломался? Если нет, то чем это гарантируется? Метод референс захватывает ссылку на объект?
Потому что:
1. с докером я кое как работал все это время. С кафкой и кроликом у меня таски кабана есть связанные.
2. нужный мне объем хибера в разы больше, чем нужный мне объем докера.
3. просто не хочется лезть в хибер. Особенно в чистый без спрингдатовских примочек. Там хоть query-dsl есть. Но учить нужно скорее критерию и hql. И сиди запоминай что и как из этого аффектит состояние энтити и кеша хибера.
Ну хорошо. Извени
Вот ету константу.
Надеюсь вот это на собесах будут дрочить.
Нет, я не шизек!!! Врети
ПЕРЕКАТ >>2853076 (OP)
ПЕРЕКАТ >>2853076 (OP)
ПЕРЕКАТ >>2853076 (OP)
Шарпоблядь, уж не потому ли ты называешь всех вокруг шарпоблядями, чтобы тебя самого не заподозрили?
Чел, тред - он как вино. Перекаченный тред надо выдержать пароу недель, чтобы из него шарпеи выветрились. Ты вот гришь - "шарпобляди не хотят" - кому не похуй че они хотят? Они - чмо, хотят одно а делают другое. Хотят они или нет, тред анон все равно перекатят - это данность. А вот то, что первое время в новом треду делать особо нечего - это факт.
Будет че интересное - тогда и зови
>кому не похуй, че они хотят
Видимо тебе, раз ведёшься на театр одного шарподауна и сидишь в протухшем треде.
Чел, ну че ты в залупу сразу лезешь как шарпей? Ну перекатил и перекатил. Когда сочту нужным, зайду в него.
Потому что я вижу, что хитрый петушарпер развёл джавистов как детей малых, а они и рады.
Какой же ты... Как украинец, который на русский текст свою мову пихает.
>>2857694 →
Нет тут нихуя.
Первый раз идею открыл? Тебе же предложили upgrade language level. Открываешь project settings и там меняешь jdk на твою новую джаву, и уровень языка ставишь 21.
Продублировал в нормальный тред.
Хотел помочь долбоёбу, а он ко мне жопой, а лицом к шарпобляди, в одиночку загнавшей весь джаватред под шконку, запретив появляться на нулевой.
Чел - какой развод, о чем ты? Ты какую то ебанутую теорию заговора на ровном месте построил, ведешь себя так, будто тебя шарпей выебал втемную и ты теперь ищешь - "а кто же мне очко по пьяни разворотил?".
Все давно уже, ведомые двачевым UI/UX , идут в тред через закреп в /pr и в ус не дуют, и твой перекат там - первый в списке, они твои призывы не увидят даже. Не выдумывай смешных теорий.
Что сказать-то хотел?
>срочно перефорс, мы теряем позиции, если проиграем в наш тред напишут на 3 сообщения о конструкторах больше
Шарпоблядь так тряслась, что саганула не тот тред.
Ты меня с кем-то путаешь
Это с непривычки.
Выглядит хайпово,я то все еще на пиратке 2021 сижу
За оскорбление шарпоблядей нет
Тебе б бан неплохо прописать. На день два. Активный больно чет.
Да не трясись ты, лол.
И нахуй он нужен на нулевой? Чтоб больше залетных дегенератов было со срачами уровня мвп на полтреда?
> место для петухона и петушарпа
Ты сам ответил на свой высер, так было всегда, пока ты не объявился. Уважающие себя джейвисты брезгуют находиться рядом с подобными помойками и не пытаются быть на их уровне, потому что это даунгрейд.
Как минимум джава должна иметь на это право. Как максимум сейчас тред 21 джавы на порядок адекватнее этого, который намеренно засирали шарпобляди-копротивленцы за сгноение джаватреда.
Вообще весело. Мочух уже дважды сделал то, что я предложил. Надеюсь бан ты тоже получил.
Не ну ты б хоть цвет поменял и не палился
>ниеееет три весёлых поста разбавляющие скучную атмосферу это то жи самое што постинг выдуманных вопросов про уровень языка от человека, до этого написавшего десяток проектов, обсуждение переката и десятки мвпарашных постов
По делу что нибудь скажешь?
Мог бы ты видеть айпишники - ахуел бы)
Это копия, сохраненная 17 ноября 2023 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.