Это копия, сохраненная 6 сентября в 01:48.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
🆕 Новые фишки:
— 💻 Теперь можно писать код до super(); и this();! Да, вы не ослышались!
— 🧩 Стрим газонюхи: создавайте любые свои промежуточные операции, например batch(), и ваши стримы станут как на стероидах! 💪
— 🐍 Запускайте Java как питон в одну команду без компиляции, даже если у вас куча файлов! Адьос, компиляция! 👋
🔄 Обновления:
— 📄 Короткая входная точка (void main() {}) теперь официально поддерживается документацией и системами сборки. Раньше это работало, но теперь это подтверждено и гарантировано! ✅
— 🛠️ Встроенный кастрированный ASM (ClassFile API). Это суперсила для разработчиков Java, чтобы не зависеть от внешней библиотеки ASM. Больше никакой зависимости! 💥
— 🚀 Ускорили сборщик мусора. Теперь он работает как ракета на максимальных оборотах! 🚀💨
✨ Изменения существующего:
— 🌐 Foreign Function выходит из превью! Вальхалла уже на подходе! ⚔️🏰
— 📝 Шаблоны строк, переменные в лямбдах через _, структурированная многопоточность/Scoped Values и Vector API обновлены, но всё ещё в превью/инкубаторе. Это только вопрос времени! ⏳
🎊 Java 22 - это как гигантская вечеринка для программистов, где нет торта, но полно мороженого и веселья! 🍰🍦💻🎉🎈
Вики по вкатыванию в джаву: https://github.com/java2ch/java-thread/wiki
Предыдущий: >>3135222 (OP)
А я хочу тортик...
>>61165
3.5 объясняет хуже и чаще пиздит. А от гугла нейронку не пробовал, кста?
>3.5 объясняет хуже и чаще пиздит.
4о я попробовал только на переписывании шапки, так что пока не могу судить.
>А от гугла нейронку не пробовал, кста?
Нет, там наверняка тоже как-то надо обходить блокировку, надо найти инструкции как пользоваться, не до этого сейчас.
>>61183
Четверку без подписки не дают.
Накидай
>>61165
Проблема чатгопоты и других нейронок в том, что они предоставляют катастрафически малое количество токенов. По сути ты в месяц можешь задать 20-30 вопросов и на каждую строку ответа тратится по токену. В итоге ты за пару минут выгребаешь весь месячный лимит даже с оплаченной подпиской и потом сосешь лапу. Ну и без качественного впн и зарубежной карты тебе недоступны нейронки
Разве при оплате не по апи, а по подписке ограничение не по сообщениям, а по токенам?
Там без разницы. У тебя в месяц будет где-то 20-30 запросов. Мне хватает, чтобы решить 1-2 задачи в лучшем случае. Обычно начинает писать хуету и нужно 3-5 уточняющих запроса. Вот и считай
Я не знаю, откуда ты 20-30 запросов взял. При платной подписке тебя запросами заваливают до жопы. А можно ещё через апи, там вообще пока кошелька хватает можно спрашивать.
Никто и не дрочится. Типичный проект на спрэнг фримверке это рестконтроллер, который мапит дтохи, толстый сервисный класс, который содержит в себе всю логику и прослойка из классов которые мапятся на таблички в базюльке + интерфейсы репозитории для пуляния в базюльку. Типичное процедурное программирование
Да, я про то же, за редкими исключениями всё так. Я здесь скорее про диссонанс между тем, что ты это должен знать, что каждый обучающий ресурс считает своим долгом включить избитые примеры про машинку и зверушек, что про это спрашивают на собесах, и реальностью крудошлёпства на спринге.
постепенно становится понятно что процедурное создает много проблем и начинается движение в сторону ддд, а там уже ооп всплывает
>начинается движение в сторону ддд
не, там дальше больше бойлерплейта чем в ООП, добавление одного поля в базу означает переписывание кучи мапперов
Если на проекте практикуется ddd, с domain слоем и т.д., то да, согласен. Но проекты с ddd встречаются гораздо реже, чем без.
Ну так то сама джава - по большей части ООП. Те же коллекции, к примеру.
А вообще - в джаве никогда на ООП не кодили. Судя по рассказам дидов, предтечами джавистов были коболисты-процедурщики, которые идею не оценили и ебошили процедурно по привычке. Ну а дальше понеслось во все тяжкие - JavaEE + EIP, DI, Spring Boot...
Ну так то то что ты предлагаешь - ровно тот же кал, только сушеный. Ты подсветил две проблемы, а их там десятки.
А для чего нужен ты? Зачем тебя мама рожала? Ты же никчемный двачер, у тебя даже имени нет. Умного или полезного то те явно написать нечего.
>принимание Iterable в качестве аргументов
Попробуй стрим из итерабл сделать. Например там принимается несколько важных флажков, что на пике. Как ты вот их достанешь из итерабл?
>Должен быть интерфейс RList (ReadableList) и MList (MutableList), расширяющий RList
В котлине это так.
>>62161
А расскажи подробнее о проблемах интересно жи.
>>62174
Для вас же /versus/ сделали. Пиздуй туда.
> Попробуй стрим из итерабл сделать.
Вот эта вот хуйня с пика начало работать раньше чем ты родился и до сих пор работает.
>А расскажи подробнее о проблемах интересно жи.
Это надо прям садиться и душнить долго... Если вкрадце - анон выше просто туп, это все что я хотел сказать.
Во первых, коллекции бывают не только mutable, immutable, но еще и persistent (персистентные), последние накладывают свои особенности на контракты. Во вторых, если уж браться и хуесосить интерфейсы, то хуесосить надо всю иерархию сверху донизу, а не только List. Почему Collection декларирует для всей этой палитры коллекций как методы с сайд-эффектами (типа remove, retain), так и методы без? Для того, чтобы потом стыдливо прикрывать их эксепшенами в иммутабельных имплементациях, ломая LSP? Почему вместо нормального контракта для ключа в хэш-бэйзд структурах, вместо того чтобы задекларировать интерфейс и вынести в него equals-hashCode, последние вшиты в контракт базового обьекта, из-за чего потом появляются способы ебнуть себе в колено мемори-ликом по мутабельному ключу? Да и почему в интерфейс Map следовало зашивать на контракте его хэш-бэйзд натуру - чтобы потом считать IdentityHashMap читерством? Это - то что я с наскоку вспомнил, хуесосить Collection API можно долго. А можно не хуесосить и просто жить с этим - я на самом деле не осуждаю людей, которым сложившийся статус кво норм. А вот гиблое дело - быть тем аноном-двачером недоделанным: у дебила 20 iq за душой, а все лезет во взрослые темы, щенок блять...
Какое-то хуевое решение, которое стирает флаги. Хотя я чет тупанул, они в итерабл включили этот spliterator, так что проблем по идее не будет. Но что-то мне кажется, что есть не так много мест, где нужно исключительно итерирование. Ну и плюс это декларирует тот факт, что это не какой-то контейнер, а все что угодно, что может итерироваться. Хоть бесконеную последовательность можно хуйнуть. Это в общем еще одно ограничение в сущности. Ленивость, возможно нужна, или гарантия завершения.
>раньше чем ты родился
Всяко лучше, чем быть скуфом.
Кстати эти иммутабельные имплементации еще поведение разное имеют. Arrays.asList например запрещает только размер менять, а вот List.of вообще всю мутабельность. Самое неняшное - это никак семантически не обозначено.
Кстати, вообще в вашей новой иерархии куда этот самый Arrays.asList попал бы?
>вынести в него equals-hashCode
Вообще было бы няшно. Типа например у StringBuilder equals не задан, что немного не очевидно, а так бы CE было бы.
>в вашей новой иерархии куда этот самый Arrays.asList попал бы?
Чел - я еще даже иерархию не рисовал, а ты предлагаешь мне разместить в нее чето куда то... Ты ведь понимаешь что это не тот вопрос, который решается с-кондачка?
Как по мне, так существование Arrays.asList не особо и обоснованно, когда есть List.of(<vararg array>). А с последним - вопросов где возвращаемое из него значение расположится в иерархии возникать не должно. Была когда то библиотечка персистентных коллекций vavr (перл, достойный отдельного обсуждения), так там у каждой коллекции был похожий билдер. List.of, Set.of, Map.of, и.т.д. В современной джаве теперь похоже стало.
Мне кажется он про тайпскриптовые юнионы https://www.typescriptlang.org/docs/handbook/unions-and-intersections.html типа String | Integer (строка ИЛИ целое)
>>62241
Ну если они тебе так критически нужны, почему бы просто не написать класс как на скрине?
>петушарп
>12%
Лол. Если судить по соответствующему постингу на сосаче, то петушарп находится где-то на уровне говна.
По постингу на сосаче похоже, что 1с резко начал набирать популярность.
Даже на Руби(!) почти в 3 раза больше вакух
Я???
Ничоси, это ADT? ( https://en.wikipedia.org/wiki/Algebraic_data_type )
Ну как-то без паттерн матчинга выглядит хуева.
Ну да, это tagged union / sum type
>Ну как-то без паттерн матчинга выглядит хуева.
Паттерн матчинг делается только через sealed интерфейсы в джаве, то есть к существующим типам ты его не сделаешь.
А это подход и предельно простой и распространяется на существующие типы
>Нуу, все abstract неявно = sealed.
Ну как же, ты же любой абстракт можешь экстендить любым новым классом, это никакой не sealed, sealed как раз запрещает это делать
>роще полиморфизмом ad-hoc воспользоваться и не ебать мозги
Согласен, но люди периодически спрашивают юнионы, вот я как-то для реддита и написал пример
Коллеги, года 3 назад к треду был прикреплен очень годный роадмап по вкату. Там советовалась книга по спрингу и курсы Валеева. Сейчас в шапке другой гайд по вкату, дайте ссылку на тот старый
Ты про это? https://github.com/EightM/JavaBackendStartGuide
Это какой-то даун-самопиарщик засунул в шапку треда свою хуйню чтобы потом с лебезением перед кабанами показывать количество звёзд. Прямо сейчас в шапке расширенный вариант того гайда, что был в треде с древних времён.
Вот сосачерский оригинал из 2016 года: https://github.com/qqqlll/Java-Thread/wiki/
Я в курсе, что это за хуйня. По ней нет документации. Мертворожденный выпердыш.
>>больше бойлерплейта
у меня его мало
>>добавление одного поля в базу означает переписывание кучи мапперов
просто сделай одинаковые названия полей для бд и в дто - писать ничего не придется
Опыта на жабе нет, решил свичнуться с дата сатанизма, т.к. работаю в лаборатории МухГУ за среднюю зарплату (не по айти, а по региону, что пиздец), естественно собираюсь в резюме напиздеть с три короба. Можно конечно опять в дата саенс, но я хочу иметь несколько опций.
Ну и можно не обязательно джаву, а в целом бэкенд из стандартного набора (C#/Python/Go/JS), если кто устраивался, не думаю, что ситуация сильно отличается в плане вероятности получения отсрочки.
>пишет охуенный код
Пример покажешь? Я как не прошу, она пишет кал... Хотя вполне возможно, что мои запросы слишком сложны.
>просто сделай одинаковые названия полей для бд и в дто - писать ничего не придется
сначала сами себе создаем проблемы, а потом героически их решаем, да
>Как работодатели к этому относится?
Зависит от компании. В целом должны быть за, потому что тебя с работы не выдернут на срочку, но лично в моей против.
https://www.youtube.com/watch?v=9-S_nZ5gzGE
дыа)
Анальники будут коупить до последнего и не верить. У них просто жопу рвёт от факта, что профессия таксиста переживёт программиста, т.к. автопилот для авто нереализуемая хуйня.
Таксодаун, срыгос из треда, живо.
путь до исполняющего - #!/usr/bin/python3
Да, тред про Java, а тут питон, но высылает мне ошибки именно Java
во-во, там отказывало в доступе, прописал chmod +x на все исходники всё заработало, я в ахуе
@
>ПОХУЙ НА ПРОИЗВОДИТЕЛЬНОСТЬ И КАЧЕСТВО КОДА! ГЛАВНОЕ БЫСТРЕЕ ЧТОБ ПРОДУКТ БЫЛ ГОТОВ!
@
2022
@
>БУГАЕНКО, СЧАСТЬЕ, ЗАЕБИСЬ!
@
2023
@
>ЗАБИВАНИЕ ХУЯ НА ПРОИЗВОДИТЕЛЬНОСТЬ ПРИВОДИТ К ТОМУ, ЧТО ИТОГОВЫЙ ПРОДУКТ РАБОТАЕТ С МИНИМАЛЬНО ДОПУСТИМОЙ СКОРОСТЬЮ, НИЖЕ КОТОРОЙ УЖЕ НИКАК НЕЛЬЗЯ. CPU-TIME ДО СИХ ПОР ОЧЕНЬ ОГРАНИЧЕН И БУДЕТ ОГРАНИЧЕН ВСЕГДА, И РАЗРАБОТКУ СТОИТ ОТТАЛКИВАТЬ ОТ НЕГО. А ВОТ НОВУЮ ПЛАШКУ ОПЕРАТИВЫ ВСЕГДА МОЖНО ДОКУПИТЬ, ОНА Ж КОПЕЕЧНАЯ!
@
2024
@
>НО ЕСЛИ БЕЗДУМНО ТРАТИТЬ ПАМЯТЬ НИКАКИХ ПЛАШЕК НЕ ХВАТИТ...
Сеймы есть? В чём я не прав?
>>не использовать ддд, и писать придется еще меньше
Придется писать очень длинные и плохо тестируемые портянки которые используются всеми сервисами.
Проще написать 5-10 небольших методов в которых используется только то что нужно, даже если местами есть дублирование. А при изменениях меньше вероятность словить баги в неожиданных местах.
>>сначала сами себе создаем проблемы, а потом героически их решаем, да
Не знаю в чем ты проблему увидел. Добавление полей в бд не связано с ддд. Аналитикам и бизнесу вопросы задавай, почему они не предвидели всю бизнес логику заранее.
>В чём я не прав?
В том, что плашек всегда хватит. На амазоне можно взять инстанс с 250 ГБ памяти за 1 220,56 USD в месяц. На типичной галере/энтерпрайзе это 1-2 человекодня разработчика по стоимости. То есть если ты через джаву сможешь сэкономить хотя бы 2 MD в месяц - можешь хоть обосраться памятью
А там десятки разрабов работают над 1 приложением
А более реалистичный кейс 2 ядра 4 гига стоит в год (!) 0.3 человекодня разработчика
>Аналитикам и бизнесу вопросы задавай, почему они не предвидели всю бизнес логику заранее.
Хвост машет собакой
Бизнес постоянно не можно предвидеть свою же логику и лучше наймет того, кто с этим может работать, а не воннаби маня-архитектора, которому бизнес блять мешает построить идеальное приложение, лол
Какой хуйни? Людей, думающих о перформансе? Я и так это знал, 11 раз же. Там только о гетсетах заботятся похоже.
У тебя на твоей пеке тоже 250 гигабайт памяти? Да и на таких объёмах кучи уже цпу тайм неплохо так тратиться начинает на саму работу с этой памятью.
> 1-2 человекодня разработчика по стоимости.
Только в реальности это в лучшем случае дней 10 с возможностью продления ещё на 10 дней через тактику лейофф + перенайм в другой отдел в два раза дешевле.
Я от скуки начал в марте прсматривать видео и курсы по джаве. С полного нуля. До этого умел только мышкой папки переименовывать.
К настоящему моменту привык уже к idea, освоил Переменные, вложенные циклы, многомерные массивы, научился писать методы, классы, наследование. Сегодня буду вечером смотреть лекцию про полиморфизм.
Так вот эт я к чему.
Я через 2 недели буду увольняться со своей работы( логистика) и уезжаю из ДС к себе в мухосрань на дачу. Буду жить на дача до конца сентября и не работать. И пришла мысль учить джаву по 6-8 часов в сутки все эти 4 месяца.
Реально ли в таком режиме к октябрю(максимум ноябрю, а то потом холодно на даче) выучиться и начинать искать работу? У меня просто выбор между тестировкой и разработкой, очень хочется стратегически продумать - куда я точно смогу за такой срок отучиться и вкатиться на удаленочку.
Выручайте, пацаны. Ну или кидайте танками в мечтателя.
Мне 27 лет, аспирант экономических наук. В 5-8 классе постоянно гонял на олимпиады по математике.
Почему ?
Я это к тому, что до этого с компом на Вы. А в idea уже ориентироваться могу. К новому открыт.
В шапке треда недавнее обновление было про то почему идеей пользоваться нельзя если ты вкатун.
Хорошо. Спасибо.
Конечно реально, если тебе усидчивости или интереса хватит
Что это за бессвязный поток сознания? Ты реальность рассказываешь из собственного опыта работы в конторе с капитализацией ну хотя бы миллиард долларов?
>лекцию про полиморфизм
>научился писать наследование
Что.? Они ж взаимосвязаны. Или ты научился слово extended писать? Пиздато, че.
>И пришла мысль учить джаву по 6-8 часов в сутки все эти 4 месяца.
Мне кажется перегоришь просто. Ну ты главное сюда пиши, няшно будет.
>>63850
Идея наоборот топ для новичка. Я не представляю кто на фул ебале пишет в блокноте, считая, что это чем-то помогает. Во первых, идея подсвечивает желтым, все твои фиговые фичи, ты всегда можешь изучить, а что не так. Плюс ты всегда можешь зажать ctrl и обратиться к коду. И это копание в кишочках тоже ахуеть какой буст. И какие сука аргументы могут быть против идеи? Ууу, привыкает к автокомплиту? А минусы?
У нас сервис на говноланге жрёт 600 Гб как говорится - 640 Гб хватит всем и ничего. Главное, что таску вовремя закрыли. А потом ещё создали таску пофиксать эту херню и когда закроем можно репортить что улучшили перформанс на 500%.
>2022
>@
>>БУГАЕНКО, СЧАСТЬЕ, ЗАЕБИСЬ!
Чел - ты ща с лагом на пять лет капчуешь. В 2022м Бугаенко уже хуесосили в хвост и гриву литералли все, о чем ты вообще? Когда СВО стартанула, какой то именитый шарпей даже покушение хотел на него устроить.
Постараюсь отписывать про процесс.
Ну я от однотипной работы, 2 часов метро в день, зп в 80к в ДС уже перегорел. Так что вообще ничего не потеряю. Зато есть шанс работать удалённо и жить где хочу, да ещё и получать больше сотки. Ну и мне даже интересно пока что учиться( но по 6 часов в день я ещё не пробовал конечно)
Если всё-таки в разработку пойду, то пока набросал пикрил себе темы для изучения.
>Когда СВО стартанула, какой то именитый шарпей даже покушение хотел на него устроить.
Тайно добавить ему в проект Спринг, чтобы он умер от кринжа?
В ооп инкапсуляции, которая не сокрытие, не хватает. Еще рекурсия без оптимизации хвостовой рекурсии нахуй не нужна. Atomic от волатайла мало чем отличается. Тут про CAS речь по идее + атомарность.. Ну и stream api где? Его ж теперь пихают повсюду. Как говорица, for устарел с приходом stream, а if с приходом pattern matching..) А. И главное, женериков нет, ряяя!
Алгосов как-то мало)))
Давай, алгоритм флойда, деикстры, крускала, джарвиса, стек Трайбера, очередь Майкла и Скотта, префиксные суммы, sqrt декомопозиция, мемоизация..))))
>очень длинные и плохо тестируемые портянки которые используются всеми сервисами.
Проще написать 5-10 небольших методов в которых используется только то что нужно, даже если местами есть дублирование
Это правда, но причём здесь ддд? С ддд ты просто добавишь ещё один слой абстракции и сложность, которой в твоих проблемах не было изначально. И чем больше функциональности, тем больше этот слой будет вещью в себе, которую нужно поддерживать.
Не буду утверждать, что у ддд зло, но пропагандировать его универсально - прям такое себе. Мне лично долбёжки с jpa хватает.
Ну будешь выгорать от однотипных задач, дедлайнов и коллег-кретинов с зп 200к на удалёнке. Немного получше, конечно, но не значительно.
И насчёт алгоритмов чел выше троллит, они, кроме самых базовых, не нужны на дефолтного спринг анальника. Да и апи многопоточки я сомневаюсь что будут сильно спрашивать.
>>64019
>Еще рекурсия без оптимизации хвостовой рекурсии нахуй не нужна
Нужна, потому что могут спросить. Просто важно уточнять, что в джаве в 100% случаев рекурсию с неизвестной глубиной лучше переписать на цикл.
Смешные вы все таки, нейропсины. Так рьяно в своей злобе верите, что пишете тулзину для уничтожания наших рабочих мест, а по факту - пишете нам новый интеллисенс. Вам дебилам и невдомек, что пока есть хоть одна строчка написанного кода - всегда будет программист, который ее мейнтейнит.
>Аналитикам и бизнесу вопросы задавай, почему они не предвидели всю бизнес логику заранее.
Лицо бизнеса имагинировали?
>Нужна, потому что могут спросить.
Хз, мне такая мотивация не нравится, конечно. Типа как в школе учишь не для себя, а для экзамена. Потом закономерно все нахуй забудешь. Лучше никак, чем так.
Тем более рекурсия, все таки "To iterate is human, to recurse divine". Он же хуман, так что.
Такова реальность. Да и рекурсия довольно интуитивна, чего там учить. Плюс есть задачи, которые проще сначала написать через рекурсию, и потом, отталкиваясь на это решение, переписать на стек+цикл.
чел, ну это очевидный сарказм же был
>Да и рекурсия довольно интуитивна
Не сказал бы. Плюс в жавке помимо оптимизации хвостовой рекурсии нет рекурсии переменных, ввиду того, что это процесс инициализации, а не связывания. Например вот с помощью такого образа легко определяется полиморфный тип, ака null, без спец языковых средств. Это просто несходящийся ряд. Потом, можно определять разного рода последовательности.
>чего там учить
Например все, что выходит за хвостовую рекурсию. Скажем у нас есть некий список, надо сделать вложенный список, который содержит все возможные перестановки изначального. Это алгоритм O(n^n), т.е. итерация итераций, с помощью фора невыразимо.
>переписать на стек+цикл
Чел.. пик2.
А я не про проблемы джавы, а про проблемы криворуких разрабов серущих в память.
>с помощью фора невыразимо
Любая рекурсивная функция может быть выражена через цикл. Либо я тебя не так понял. К тому же, это типовая проблема, у которой можно нагуглить итеративную реализацию на вики https://en.wikipedia.org/wiki/Heap%27s_algorithm . И по сложности там вроде бы O(n!).
>чего там учить
>Например все, что выходит за хвостовую рекурсию
>Плюс в жавке помимо оптимизации хвостовой рекурсии нет рекурсии переменных
Я про то, что понять, что такое рекурсия и общую структуру рекурсивной функции не сложно. Ну, и наверное необязательно прям сильно в них углубляться. Я вот не знал до этого про рекурсивные переменные, и счастливо жил свою жизнь. Кстати, в js есть что-то очень похожее, если я не ошибаюсь.
>пик2
Спасибо, не знал про эту фичу.
>Любая рекурсивная функция может быть выражена через цикл.
Ну это-то да. Но там блин стек в том или ином виде используют. Это та же рекурсия, только сбоку. Еще к слову, можно рекурсию полностью перевернуть верх тормашками и получить дп.
>И по сложности там вроде бы O(n!).
Тут да, ошибся.
>Я про то, что понять, что такое рекурсия
Нуу, концептуально в принципе мб. Но типа когда доходит до практики и тебе надо проанализировать не просто какую-то итерацию, а все веточки, которые переходят в другие веточки... Задача становится просто на уровень анализа многопоточки.
>и счастливо жил свою жизнь
В принципе я про это говорю, что в жаву занесли вот некоторые концепции, до ума их не довели и смысла от них так мало, что проще хуй забить.
>Кстати, в js есть что-то очень похожее
Надо будет поискать.
>И какие сука аргументы могут быть против идеи?
Слишком легко. Надо страдать, иначе несерьезно
Спасибо за ответ.
Вчера провёл небольшой рисёрч, скорее всего, как я задумал не выйдет. Надо устраиваться в ближайшие полгода пока отсрочка аспирантуры действует, а потом через год получить отсрочку по работе. Чёт мне такой вариант сразу в голову не пришёл и я уже думал, что с горя схожу в армию, лол. Надо только договориться с Кабаном Иванычем чтобы он переустроил меня по совместительству, т.к. он у меня научрук. Ну и всего-навсего за полгода выучить жабий бэкенд.
Такое возможно при работе Java Spring программистом?
Или .Net Core лучше учить?
Это Легаси для дедов, которые в банках мейнфреймы обслуживают. Молодежный вариант - это голанг. Его и бери.
Спасибо, именно то что искал. Чмок тебя в пузико
Решил со своего домашнего установить локально. Скачал .m2 и закинул на рабочий комп, но мавен не стартовал. Перезапус и чистка кэша не помогла, какие еще есть способы, кроме получения доступа к админке?
>А если сам не могу , то всё ?
Значит ты не кто-то уровня деикстры. Если хочешь именно придумывать алгосы, читай кнута. У него целью стоит, научить именно тому самому искусству придумывания алгоритмов, посредством того, что тебе дадут все необходимые для этого кирпичики, плюс наиболее общий методы, которыми можно их комбинировать. Также методы для анализа, тобою сделаного.
>Скачал .m2
.m2 это папка с конфигурацией и локальным репозитории, это не сам мавен. Просто скачай zip архив с сайта и разверни в любую папку где есть права на запись. И настрой M2_HOME.
Как же хорошо, что есть idea. Всё подсказывает, сама всё скачает и поставит. Это всё глупые ретрограды считают, что надо уметь ручками всё делать. В 2к24 это уже не надо. Если что, можно ЧатГПТ спросить.
Вообще-то в идее есть свой мавен.
> Всё подсказывает, сама всё скачает и поставит.
Только вот инвалидировать кеши сама не умеет.
Например всю базу данных выгружать в оперативку. Это кстати идея неплохая в некоторых случаях, и даже 600 гигабайт при наличии 640 гигабайт памяти всего может быть нормой, так как это снижает латенси в ноль.
Никто не мешает при каждом обновлении данных (асинхронно) записывать обновление в холодную бд.
Так тем более, эта штука может упасть посередине транзакции и привет неконстстентные данные в базе
>Как же хорошо, что есть idea
Это печально. Я скачал apache-maven-3.9.6-bin.zip разархивировал в директорию с проектами, прописал M2_HOME в винду из гайда по ютубу, а он всё еще не работает. как же хуева без админки
>он всё еще не работает.
Ты может для разнообразия, покажешь ошибку? И какую-то простейшую диагностику проведешь, типа mvn --version
Не?
>как же хуева без админки
Ты имел ввиду без мозгов?
Чего ты такой токсик?
Ошибка на постоянке: Cannot connect to the Maven process. Try again later. If the problem persists, check the Maven Importing JDK settings and restart IntelliJ IDEA
Иногда проскакивает: Error
И как-то была:
java.util.concurrent.ExecutionException: java.rmi.UnmarshalException: Error unmarshaling return header; nested exception is:
java.net.SocketException: Connection reset
Ну прям реально сервер арендовал или vps? Сколько памяти жрет дефолт-сайт под небольшой нагрузкой?
>реально сервер арендовал или vps?
Что ты имеешь ввиду под "реально сервер"? Физический сервер? Ну в этом смысла нет, ибо найти физический сервер под сайт тяжело.
>Есть кто для своего сайта использовал джаву?
А смысл? Юзни тильду или что-нибудь на стеке пыхи и джээса
>Сколько памяти жрет дефолт-сайт под небольшой нагрузкой?
На джава много :) (для простого лендинга)
А какая у тебя нагрузка будет на сервер?
А вообще вопрос нахуй не корректен, учи матчать.
В шарп треде оказались компетентнее. Нет своих проектов, зачем отвечать?
Думаю на джаве будут около такие цифры
>>3165685 →
Мне просто было интересно, можно будет удержаться на впске с 512 мб, для классического сайта.
Данный документ содержит описание стандартного тестового задания для соискателей на должность Junior Java разработчика.
Общее описание
Необходимо разработать приложение в соответствии с изложенными ниже требованиями.
Требования
Общие требования
Архитектура - Java SE 8.0 (или выше), использование библиотек и фреймворков на усмотрение исполнителя.
Должна быть система логирования (на основе готового решения, например Log4j). Приложение должно логировать в файл любые действия, приводящие к изменению данных. Приложение должно корректно обрабатывать и логировать ошибки.
Структура данных
В приложении должна быть сущность Account (счет) содержащая поля:
ID (строковое) - идентификатор счета
Money (целочисленное) - сумма средств на счете.
Функциональные требования
При запуске приложение должно создать четыре (или более) экземпляров объекта Account со случайными значениями ID и значениями money равным 10000.
В приложении запускается несколько (не менее двух) независимых потоков. Потоки должны просыпаться каждые 1000-2000 мс. Время на которое засыпает поток выбирается случайно при каждом исполнении.
Потоки должны выполнять перевод средств с одного счета на другой. Сумма списания или зачисления определяется случайным образом. Поле money не должно становиться отрицательным, сумма money на всех счетах не должна меняться.
Решение должно быть масштабируемым по количеству счетов и потоков и обеспечивать возможность одновременного (параллельного) перевода средств со счета a1 на счет a2 и со счета a3 на счет а4 в разных потоках.
Результаты всех транзакций должны записываться в лог.
После 30 выполненных транзакций приложение должно завершиться.
Данный документ содержит описание стандартного тестового задания для соискателей на должность Junior Java разработчика.
Общее описание
Необходимо разработать приложение в соответствии с изложенными ниже требованиями.
Требования
Общие требования
Архитектура - Java SE 8.0 (или выше), использование библиотек и фреймворков на усмотрение исполнителя.
Должна быть система логирования (на основе готового решения, например Log4j). Приложение должно логировать в файл любые действия, приводящие к изменению данных. Приложение должно корректно обрабатывать и логировать ошибки.
Структура данных
В приложении должна быть сущность Account (счет) содержащая поля:
ID (строковое) - идентификатор счета
Money (целочисленное) - сумма средств на счете.
Функциональные требования
При запуске приложение должно создать четыре (или более) экземпляров объекта Account со случайными значениями ID и значениями money равным 10000.
В приложении запускается несколько (не менее двух) независимых потоков. Потоки должны просыпаться каждые 1000-2000 мс. Время на которое засыпает поток выбирается случайно при каждом исполнении.
Потоки должны выполнять перевод средств с одного счета на другой. Сумма списания или зачисления определяется случайным образом. Поле money не должно становиться отрицательным, сумма money на всех счетах не должна меняться.
Решение должно быть масштабируемым по количеству счетов и потоков и обеспечивать возможность одновременного (параллельного) перевода средств со счета a1 на счет a2 и со счета a3 на счет а4 в разных потоках.
Результаты всех транзакций должны записываться в лог.
После 30 выполненных транзакций приложение должно завершиться.
О, я такое делал.
Там единственная сложность в реализации transfer. Можешь отсюда спиздить https://jcip.net/listings/InduceLockOrder.java
Задача на самом деле оч простая. Решение свое приводить не буду, поскольку там такой ад из женериков, что лучше не видеть...
записал форейн ключ
приложение упало
соответствующая сущность по ключу не записалась
и так на множестве уровней связей
Смотря какой сервер поднимешь на джаве. Вон джавалин в простое 50 мб, под небольшой нагрузкой у меня так же примерно жрал
Спринг наверное больше жрать будет. Оптимизировать джаву всегда можно.
Делаешь new Thread(() -> {
while (!Thread.isInterrupted()) {
Thread.sleep(new Random().nextInt())
... обработка
}
})
>Мне просто было интересно, можно будет удержаться на впске с 512 мб, для классического сайта.
Конечно
проверь что у тебя овнер папки .m2 - это тот же пользователь, под которым ты мавен запускаешь
У меня нет грейда, я уехал работать на юникорн давно, и никогда в этой российской системе миллиона грейдов не разбирался. Сейчас числюсь как сеньор, но с другой стороны у нас все поголовно сеньоры.
Хмм. Ну короче, Random в многопоточке не применяют, для этого есть ThreadLocalRandom. Плюс вот у тебя sleep и проверка флага в цикле. На самом деле у них коллизия, типа одно флаг стирает, потому надо то ли его восстанавливать в исключении, то ли еще ч. Плюс эта залупа, ну такоое.
Я бы сделал как на пике.
Попробуй еще вот это (localrepository)
https://howtodoinjava.com/maven/change-local-repository-location/
По умолчанию оно качает в C/Users/Ты/.m2, видимо ты не можешь там папки создавать. Сделай <localRepository>папка/с/проектами</localRepository>
А если оно упадёт даже того, как ты этот форейн ключ в оперативку запишешь, долбыч?
>На самом деле у них коллизия, типа одно флаг стирает, потому надо то ли его восстанавливать в исключении, то ли еще ч
одно другое не стирает, флаг сбрасывается при поимке исключения
код вне слипа ты не прервешь без флага
>Ну короче, Random в многопоточке не применяют, для этого есть ThreadLocalRandom
Тут разницы нет, но узнаю российское вахтерство, как домой вернулся
>Я бы сделал как на пике.
Уступаю тебе позицию джуна
Особенно кстати классно создавать целый эзекьютор для 1 треда, да и лямбды, да и трай с ресурсами, гарантирую только за это +3 грейда тебе
Не хватает на скрине только стримов и какого-нибудь каррирования, ну чтобы понятно, что серьезный разработчик, а не лох какой-нибудь
Ты не понял. Вот у тебя обновился стейт в памяти, накидались какие-то сущности, связи и .т.д. Теперь ты начинаешь синхронизацию с настоящей БД (вероятнее всего оригинальные транзакции к этому моменту не сохранились, поэтому просто сливаешь разницу в БД). На середине слива приложение падает - база закоррапчена. Я уверен конечно что скорее всего такого не происходит, но звучит очень хрупко.
Даун, транзакции не магическим образом безопасны, а за счёт их атомарности. Все те же самые проблемы что есть в этом подходе есть и в классическом. Просто делаешь слив атомарным и всё.
>флаг сбрасывается при поимке исключения
Ну я про это и говорю, надо впендюривать внутрь цилка try/catch который будет восстанавливать этот флаг. Иначе будут два разных способа обработки, взависимости от того, в каком же месте произошло прерывание.
>создавать целый эзекьютор для 1 треда
>запускается несколько (не менее двух) независимых потоков
>Решение должно быть масштабируемым по количеству счетов и потоков
Ладно.
>Тут разницы нет,
Тут разница есть. Не надо создавать 100500 экземпляров рандома.
>Уступаю тебе позицию джуна
Фига щедрый.
>>65935
Ты типа новые слова выучил? Рад за тебя.
Лол 512 за глаза
Джава изначально жрёт около 20-30 мегабайт.
Действительно, мне в банке так и сказали
Только Xmx поставь, потому что у дажвы такая оптимизация, что она жрёт всю память что дают, лишь бы мусор пореже собирать и пореже память у ОС запрашивать
>надо впендюривать внутрь цилка try/catch который будет восстанавливать этот флаг.
это если ты планируешь переиспользовать поток после интеррапта
в твоём примере у тебя поток переиспользуется, потому что это пул, в моём - нет, интерруптнул и выкинул
Восстанавливать флаг просто потому что "тут так заведено" - очень странное решение
Тут не спорю. Просто правило восстанавливать флаг достаточно простое и смысла его игнорировать практически ноль. Надо бы заставить идею автоматом это генерить, а не то что она ставит.
Защитись и всё. Кандидатов не призывают.
Так а кому этот интеррапт восстановленный сдался, если поток - пуловый, и выше по стеку нет нихера? Я понимаю еще того анона у которого цикл по интеррапту был, но тут то цикла нет. Пулу разве не похуй? Он же его сам притрет при старте новой таски, разве нет?
По идее не должен. Типа это стандартный способ завершить такую таску, не убивая весь пул разом.
>Вроде та же джава
А зачем его брать в таком случае?
Из самого очевидного, мокито там не работает.
Еще не очень понятные некоторые специфические моменты связанные с примитивами, но думаю это-то пофиг.
В общем-то с приходом java 21 чет как-то не видно прям явных явных преимущеаств котлина над жабой.
Гойда братцы! Так есть!
Удобнее кажется.
>Из самого очевидного, мокито там не работает.
Гугл вроде говорит что все норм.
>Удобнее кажется
Ну раз кажется... То иди в тред котлина, тут вообще мало кто на нем пишет
>Гугл вроде говорит что все норм.
Ты гуглить не умеешь.
>Чего ты такой токсик?
Мне не нравится когда в разработку идут люди которые даже не "уверенный пользователь ПК".
>>65575
>Картинка
В консоли выполни
where mvn
Должно показать какие инсталляции мавена у тебя есть на машине. В идеале должна быть одна, та которую ты установил.
Дальше
where Java
Аналогично, смотришь какие инсталляции JDK есть. Нужно чтобы твоя JDK была первой. Если нет, то переопредели JAVA_HOME и JDK_HOME на твою JDK.
Дальше проверь что есть права записи на папку .m2 попробуй зайти туда и создать файл.
Чел,если ты собираешься покупать бесплатную информацию,то ты дегенерат,независимо от стека
Я покупаю мотивационный пинок под зад в виде сожаления от потраченных денег, ну и чтобы моё говно иногда ревьюверы смотрели. Хотя я пока не уверен, стоит ли оно того, может просто пива купить себе на эти деньги для мотивации.
Размышления уровня буду учиться в вузе на платке,будет мотивация не проебывать пары
Кстати, проебываю все равно. Бля, как люди вообще в вузах учаться, это ж пиздец уныние.
>Про swift не думал
Ты про разработку под ось? Как-то последние пару лет это всё выглядит довольно мёртвым. Пробовал ведро ковырять немного, но так.
Ну я так последние пару курсов доучивался на заочке, лол, просто было жаль уже потраченных денег
понимаю, не осуждаю
>where mvn
C: ... \bin\mvn
C: ... \bin\mvn.cmd
>where java
C:\Windows\java.exe
>Аналогично, смотришь какие инсталляции JDK есть. Нужно чтобы твоя JDK была первой. Если нет, то переопредели JAVA_HOME и JDK_HOME на твою JDK.
Что значит "Нужно чтобы твоя JDK была первой"?
Права на запись в папку .m2 есть
Причём мавен централ был последним из крупных репозиториев что держались. Все остальные лет 5 назад тоже прошли пик и сейчас в них публикуются единицы.
Экстраполяция количества опубликованных пакеджей за прошедшую часть 2024 года.
>C: ... \bin\mvn
>C: ... \bin\mvn.cmd
Самое важное, ты как раз и обрезал. Молодец. Если там путь к твоей инсталляции мавена, то ок.
>C:\Windows\java.exe
Если ещё не сделал, то установи JDK в какую нибудь свою папку и пропиши путь в JAVA_HOME и JDK_HOME и добавить %JAVA_HOME%\bin первым в PATH.
Дальше снова в консоли попробуй mvn --version
>мешанина в технологиях, что даже просто понять что учить тяжело, жаба как-то более приятно выглядит в этом плане
Толсто. Мне казалось у майков вполне себе определенный стек который везде и используется, разве нет? А вот в джава мире как раз настоящий зоопарк из технологий, что ты можешь пройти через 3 проекта и на каждом из общего будет только джава, а все остальное первый раз в жизни будешь видеть
С джавой тоже толсто. Джава оккупирована спрингокультом - кроме спринга там редко что увидишь.
Причем тут фреймворк вообще
Я про все остальное что для разработки нужно, или по-твоему в вакансиях просто так стек состоит из 20-30 наименований всякой хуеты?
>>мотивационный пинок под зад в виде сожаления от потраченных денег
Это наеб гоев, далеко не всех это мотивирует.
Скорее будет наоборот - ты заплатил, а значит можно расслабиться, щас за тебя все изучат и на жесткий диск просто запишут.
>>иногда ревьюверы смотрели
В целом там банальные советы с примесью вкусовщины. Если денег дохуя - мб есть польза.
>>67614
>>на каждом из общего будет только джава, а все остальное первый раз в жизни будешь видеть
Максимум что отличаться будет - кролик вместо кафки, жук вместо хибернейта и гуава вместо апач комонс.
Бывают конечно говноеды кто вместо спринга свой велосипед изобретает или привет из 2007 передает, но я лично таких не видел.
>>67631
>>спрингокультом
Как будто что то плохое. Без спринга и джава нахуй не нужна.
>>67644
>>в вакансиях просто так стек состоит из 20-30 наименований всякой хуеты?
Я там регулярно в вакансиях на мидла-сеньку вижу гит.
К примеру
public class C1<T implements countable>{...}?
При попытке такое сделать, javac стал ругаться на такое.
Думаю, смотря куда попадет. Бывают конторы, где онбординг длится месяцами и на испыталку никакой вменяемой программы нет.
А бывает, что с первых дней ебут и требуют результата.
>Максимум что отличаться будет - кролик вместо кафки, жук вместо хибернейта и гуава вместо апач комонс.
Толстишь, либо ты без реального опыта.
За последние 7 месяцев я подключался к 4 разным проектам в разных компаниях (я руковожу несколькими аутсорс командами и иногда приходится закрывать дыры своим жирным телом), на одном проекте был quarkus, на другом - спринг (без сапога), на третьем вообще использовали ебучий vert.x столетней давности с ебучим груви в качестве dsl. И все это в достаточно крупных компаниях с "налаженными стандартами разработки".
Все проекты были относительно новыми (максимум 2 года хуете на груви)
>>quarkus, на другом - спринг (без сапога), на третьем вообще использовали ебучий vert.x столетней давности с ебучим груви в качестве dsl
Это я и записал в велосипеды и легаси.
То что ты такой хет трик собрал, говорит лишь о твоей удачливости. Не проецируй на экосистему.
Да и как будто что то плохое. Каждое из вышеперечисленного решало либо решает свои задачи в свое время. Наоборот хорошо, что экосистема не схлапывается в спринговую сингулярность где бы она окончательно подохла. Ты инжернер или крудошлеп, в конце то концов? Если первое, работа с экосистемой для тебя не должна быть проблемой.
>>67644
>Я про все остальное что для разработки нужно, или по-твоему в вакансиях просто так стек состоит из 20-30 наименований всякой хуеты?
Где ты такие вакансии видел?
Насколько я могу понять, тут имеется ввиду, что при использовании final подавляется исключение вазыванное при чтении файла, на исключении при close. В try-with-resource все наоборот. Вообще, можно просто декомпилировать то, что оно генерит.
>>67969
По идее просто выбросится это исключкение и усе.
> По идее просто выбросится это исключкение и усе.
А не может быть такого, что у меня объект сложный autoclosable, я в конструкторе много всего наоткрывал, но все равно в какой то момент получил исключение? Что тогда? Или это я долбоеб и так писать нельзя? Но если все же напишу, что будет? Спасибо
Так он все равно теоретически нихуя не сделает, поскольку объект даже сфомроваться не смог. Это конечная считай.
Тем более у тебя перед глазами код.
>Или это я долбоеб и так писать нельзя?
Честно без понятия, никогда не приходилось писать такую ебань. По идее ты сам как-то должен обеспечить закрытие при исключительной ситуации. Ну или как варик использовать finalize. Но это такоое.
>Так он все равно теоретически нихуя не сделает, поскольку объект даже сфомроваться не смог. Это конечная считай.
>Тем более у тебя перед глазами код.
Ну что то же в конструкторе выделилось? Оно будет ждать теперь пока его гц прибьет?
>у майков вполне себе определенный стек
Нет. Там хватает говна типа blazor, всяких razor pages плюс есть asp.net core, а есть просто asp.net, а ещё asp.net mvc, плюс entity framework есть обычный, а есть опять-таки core. Говнища там накопилось уже просто уйма.
>А не может быть такого, что у меня объект сложный autoclosable, я в конструкторе много всего наоткрывал, но все равно в какой то момент получил исключение? Что тогда? Или это я долбоеб и так писать нельзя? Но если все же напишу, что будет?
Если у объекта несколько ресурсов, то понятно что может быть ситуация когда ты первый создал, а второй сфейлился. И тогда создание объекта не пройдет, потому что вылетит эксепшн, но первый ресурс уже создан и не будет закрыт.
В принципе так делать можно, но тогда надо аккуратно работать с ресурсами, чтобы ничего не забыть закрыть.
https://pastebin.com/Hn4kgk1n
>Оно будет ждать теперь пока его гц прибьет?
Ну обычно ресурсы выделяет ос. Тут ситуация примерно как с дедлоком. Даа, гц может убить все нахер, но не будет этого делать. Это все на плечах разраба, жвм тут не вмешивается.
Так что в итоге у тебя будет висеть ресрус, пока его не заберет хозяин или жвм остановится.
> Пробую снова вкатиться DZHAVA RAZRABOTCHIKOM, хоть уже и потерял надежду, потому что мамка вот-вот погонит нахуй.
Немного двусмысленно получилось: вкатываюсь потому что мамка погонит нахуй, а не потерял надежду поэтому.
Выучиться реально, найти работу нет. Джунов сейчас ебут на уровень мидла, только крутить опыт и прорываться через пулеметные заграждения. Иначе есть шанс искать работу за 40к/мес полгода с лишним
Я 4 года программирую уже, я тут половине треда в дедушкинаставники гожусь, какие книги. Меня не берут из-за того, что я инцел.
>Я 4 года программирую уже
Ну я где-то 6-7 уже. И че это меняет, лол? Ты реально ни одной книги не прочел? Типа ты ставишь себя не просто на уровень условных кнута, гетца, а выше, хули мне этих дебилов читать, я ж 4 хода пограмирую, ууу.
Пиздец.
>Меня не берут из-за того, что я инцел.
Ты рофлишь? Да-да именно поэтому.
>уровень мидла
Тем временем уровень джава-миддла - добавить параметр в апи и прокинуть его в базюльку
> Ну я где-то 6-7 уже. И че это меняет, лол? Ты реально ни одной книги не прочел? Типа ты ставишь себя не просто на уровень условных кнута, гетца, а выше, хули мне этих дебилов читать, я ж 4 хода пограмирую, ууу.
> Пиздец.
Я думал ты имел в виду базовые книжки по синтаксису типо шилдта. На самом деле я и более продвинутые книги тоже не то чтобы много читал (хоть и читал), но тут потому что времени мало просто у меня.
>типо шилдта
Этот гений просто доку жабы копирует. Открывашь https://docs.oracle.com/javase/tutorial/ и https://docs.oracle.com/en/java/
Даже платить не надо, так еще и интерактивно.
>хоть и читал
Ну ты скажи хоть какие.. Изначально вопрос-то в этом был. К слову, а 17 глава спеки( https://docs.oracle.com/javase/specs/jls/se22/html/jls-17.html ) как тебе?
Элегантные объекты, алгоритмы Сейджвика, книга с поездами.
> Даже платить не надо, так еще и интерактивно.
Пираты не платят, а Шилдт есть на русском.
> Изначально вопрос-то в этом был. К слову, а 17 глава спеки( https://docs.oracle.com/javase/specs/jls/se22/html/jls-17.html ) как тебе?
Не читал спеку.
>Наоборот хорошо, что экосистема не схлапывается в спринговую сингулярность где бы она окончательно подохла.
Дак я тоже так считаю, местные аутисты дезинформируют.
>найти работу нет
>Иначе есть шанс искать работу за 40к/мес полгода с лишним
ну так есть работа или нет? какой стул-то выберешь?
А ты на скольких других прогал? Ну типа ты делаешь эту оценку из синдрома утенка? У меня например скорее всего он..
А после года пахоты за 40к реально потом сразу до 150 бустануть? Или годами расти нужно
Я лет 5 назад почти так и сделал. Первые полтора года работал за 70к (стартово было 30к, потом немного повышали), потом устроился на 250. Еще через год 350. Но у меня профильная вышка.
мимопроходил
Около года на срр, года 4 суммарно на джс и тайпскрипте, немного на питоне, на котлине, на си, прорабатывал го чтобы узнать что же там такого хорошего в отличии от джавы, сейчас смотрю зиг.
По инфраструктуре, скорости компиляции, объему библиотек, производительности разработчика и даже скорости джава топ язык. Сейчас особенно плотно приходится работать с срр и это пиздец, ебля с билдами, мейк файлами, тулчейнами, заголовками, миллионом конструкторов на каждый чих.
Эх, раста нет и какого-нибудь фп яп. Может потом сделаешь экспертную оценку в трикю? ё
Нуу cpp просто мусорный язык, честно говоря. Не знаю как на нем пишут. И с котлином интересно, говорят же это прокачанная жаба, чем тебе не зашло?
А смысл? Раст, как и функциональщина - это чисто интеллектуальный онанизм, а я в основном смотрю на яп как инструмент для решения реальных задач.
У раста была интересная идея в теории, но они скатились до такой сложности, что банальный срр с умными указателями проще и быстрее разрабатывать, да он ещё и распространён несоизмеримо больше.
А уж о скорости билдов раста ходят легенды.
Функциональщина - я вообще не встречал проектов, где бы она ускорила или упростила разработку, или решала бы задачи которые императивные языки решить её могут.
>И с котлином интересно, говорят же это прокачанная жаба, чем тебе не зашло?
У котлина тоже была интересная идея в теории, но в реальности язык получился настолько гибким, что каждый стремится как можно больше его изогнуть, что выливается в часто не читаемое месиво. Например он исповедует заповедь что наследование это плохо, везде нужно делать делегирование. В результате там где в джаве были классы с абстрактным функционалом - там файлы, с набором разрозненных функций -делегатов и это типа другое.
Плюс к тому очень неопределённо работает с примитивами джавы, а это основной инструмент высокоскоростных оптимизаций.
>интеллектуальный онанизм
Типа, а в чем минус? Мы же не макаки крудошлепы...
>но они скатились до такой сложности
Нууу, как бы сказать. Jmm сложнее.
>решала бы задачи которые императивные языки решить её могут.
Што... Все языки тьюринг полные, следовательно любая задача решаемая на одном, решаема на всех. Не оч понял, че ты хочешь вообще. В любом случае, вот смотрю я на пик, и что-то мне это напоминает.
>>69166
>там файлы, с набором разрозненных функций
Пххпхпх, все ближе к процедурному.
О,насчет примитивов согласен. Очень хуевое решение. Мне вот котлинисты каждый раз доказывают, что это плюс, а как по мне оч сомнительная хуйня.
Особенно ещё экстеншн функции абузят как не в себя
>Нууу, как бы сказать. Jmm сложнее
Нет, даже близко нет. Тем более тебе эту сложность часто не нужно использовать, чтобы решить бизнес задачу.
>Што... Все языки тьюринг полные, следовательно любая задача решаемая на одном, решаема на всех. Не оч понял, че ты хочешь вообще. В любом случае, вот смотрю я на пик, и что-то мне это напоминает.
Да, все языки, но на джаве мне нужно следить за мусором, это не смертельно, разработка идёт быстрее. У меня быстрые билды. У меня идеальный тулинг в отличии от многих других языков, достаточно хорошая система типов, чтобы проект не грохнулся случайно. Мне не нужно знать на какой платформе, с какой ос и тулчейном Лонг занимает 32 бита, а с какой 16. Все это ускоряет и облегчает разработку.
По совокупности этих факторов джава и выигрывает
Можит я шизик в этом плане, но мне прям понравилась 4 часть jcip. И вот фразочки из 16 главы особенно:
>Specification requires the JVM to maintain within thread as‐if‐serial semantics: as long as the program has the same result as if it were executed in program order in a strictly sequential environment, all these games are permissible.
Прям вообще эпично. Так вот. В спеке jmm есть сравнимая вещь. А именно требование причинности(Causality Requirements for Executions), оно даже называется пиздец круто.
Так вот, там такой математический пиздец, который я видел разве что в статьях по теории автоматов, там автомат сигма, который съедает то, что ему отдает автомат P, который образует полугруппу. В общем на пике это требование.
В сущности, это речь про то, что happen-before, ну маловата для полноценной спеки, потому мы кое как вводим каузальность. Обычно это упрощают до out-of-thin-air safety.
В общем, покажи что ж там такого сложного в расте. Я смотрел лекции по лямда исчислению, такого пиздеца там тоже нет. По крайней мере объяснений в разы больше, поскольку такое чувство, что жмм разбирают полтора шиза максимум.
> часто не нужно использовать
Ну я могу повернуть этот аргумент и в сторону раста. Мол проста не пользуйся. И все. Цикла на все хватит.
>>69194
В фп языках тоже не надо следить за памятью. Ну тулинг вероятно лучше у жабы. Да и зачем пиздить адаптировать фп фичи-то, раз жаба и так идеальна?
>тьюринг полные
Как же школота заебала разбрасываться фразами и словами значение которых не понимает. Тьюринг-полный = способный произвести любое вычисление.
Тьюринг-полный != способный выполнить любую задачу.
Тьюринг-полный != способный произвести любое вычисление удобным образом.
Тьюринг-полный != имеющий свободную лицензию.
Тьюринг-полный != предрасположенный к написанию производительного кода.
Ну и напоследок ни один вычислитель в реальном мире не является тьюринг-полным.
>В общем, покажи что ж там такого сложного в расте.
Боров чекер уже мемом стал, с ним каждый воюет вместо того чтобы программу писать.
Цветные функции, макросы и т.д., все это хорошо изложено в статье https://loglog.games/blog/leaving-rust-gamedev/
>В общем на пике это требование
Насколько я понимаю это просто требование, что порядок операций должен соблюдать только в группах связанных между собой операций, а эти группы можно между собой переставлять
Я не утверждал ничего из этого.
>>69279
Лол, даже на расте есть геймдев, а на жабе нет.
Проблема статьи в том, что мне непонятна большая ее часть. Впрочем даже начальные тезисы, "ррря мне не дают говнокодить, я жи честно честно все потом заменю". Ну странные короче. Мне например кажется, что наоборот чем больше проблем выявляется еще на этапе компиляции тем лучше. Не всем нравится падающий прод от npe. Да и это не совсем про сложность, а скорее про дрочь, заебность. Ну кмк другой аспект, вот.
>>69287
На пике 2, второй пункт. Каждая "группа" в сущности является подмножеством предыдущей. Там как бы идет накопление того, что допустимо. Это называют commit.
>The Java memory model takes as input a given execution, and a program, and determines whether that execution is a legal execution of the program. It does this by gradually building a set of “committed” actions that reflect which actions we know can be executed by the program without requiring a “causal loop”.
На пике 1 показывают пример того, что каузальность вообще говоря гарантирует.
В принципе это и правда нужно в прям в очееень малом количестве кейсов, примерно тогда, когда хочешь сделать гонку данных, которая ничего не сломает.
> Все языки тьюринг полные, следовательно любая задача решаемая на одном, решаема на всех.
> Тьюринг-полный != способный выполнить любую задачу.
> Я не утверждал ничего из этого.
Ты даун?
> Лол, даже на расте есть геймдев, а на жабе нет.
>libgdx (куча игр (https://libgdx.com/showcase/), в т.ч. mindustry, unciv)
>minecraft
>project zomboid
>всё что я не вспомнил
Ты даун?
А это будет означать "класс, имплементирующий Comparable", или "класс, имплементирующий расширенный Comparable"? Интерфейсы же тоже можно расширять. Если первое, то как-то нихуя не интуитивно
Люди разные, кто-то заплачет, а кто-то и зароет.
Ну прочитай не через жопу блять, боже. У меня четко написано, что не существует задачи, которая решается только на одном из них, а не то, что любая задача решается.
Формально пик1 у меня, пик2 у тебя.
Это крайне малые исключения. Типа этот ебаный майнкрафт всегда вспоминают. Так-то на жабе даже движков уровня ue/unity нет. Все сам, с нуля делай епты.
Это будет означать, что в иерархии наследования существует компарабл. Мол апкаст до него вообще возможен.
Плюс внутри Comparable есть рукурсия на него же, направленная вниз. Типа может быть указан любой G, такой что G <: T.
>Если первое, то как-то нихуя не интуитивно
Женерики никогда и не были интуитивны, лол.
>JmonkeyEngine
Ты уверен? Типа у unity/ue огромное сообщество и куча ассетов как следствие. Даже когда юнити сделали хуйню с оплатой за скачивание вспоминали все что угодно, какой-то годот еще какую-то хуйню, но не этот движок.
Так-то там вот сверху приводили пример в виде libGDX, даже он как-то выйгрышнее смотрится. Правда он
>libGDX is a cross-platform Java game development framework
Честно, я бы и сам жабу не стал использовать для игр, хотя я ее и хорошо знаю.
>Типа у unity/ue огромное сообщество и куча ассетов как следствие.
Ну так мы о движках, а не об ассетах говорим
JmonkeyEngine
@
Глянул в доки
@
А теперь, дети, мы собираемся делать игру для JME
В жава мире как всегда..
Время мчится как ракета,
Мимо Русские бегут...
Это кто стоит на месте?
Это Финны к нам идут...
>Ну прочитай не через жопу блять, боже. У меня четко написано, что не существует задачи, которая решается только на одном из них, а не то, что любая задача решается.
Опущенное, и это тоже из тьюринг полноты не следует. Закрыл бы свою гнилую пасть, позорился бы меньше, どづ☆~.
Там буквально та же формулировка используется. Любая функция вычислимая где-то, также вычислима и на этой системе. Для начала, тебе бы следовало спросить, что я понимаю под задачей.
Но так ты тупой скуф, которому лишь бы самоутвердится, ты сразу начал накидывать говна, притом аргументы: ЯСКОЗАЛ!!!.
Ахуенно продолжай дальше, я пожалуй тебя буду игнорить. Щас бы перед свиньями бисер метать.
Тебе с самого начала сказали
> Тьюринг-полный = способный произвести любое вычисление.
> Тьюринг-полный != способный выполнить любую задачу.
Вычисление != задача, олиг.
И смотря на ответы https://stackoverflow.com/questions/19429667/implement-recursive-lambda-function-using-java-8 чет странное, если честно. Зачем-то интерфейсы Recursable делают, ограничивая таким образом универсальность.
Рекурсия на уровне лямбд.
Типа ты же не можешь такое написать
Function<Integer, Double> fact = x -> x == 0 ? 1 : x * apply(x-1);
Вот для этого типа универсальный метод fix.
Правда это нахуй не нужно, но по крайней мере вывод типов в этом случае тоже интересен. Типа тут же не указывается достаточно сложный тип для метода, а все за лямбдами скрыто. Мб где-то использовать можно, хм
>Так-то на жабе даже движков уровня ue/unity нет. Все сам, с нуля делай епты.
А на расте, значит, есть, ага?
Те выше назвали тайтлы, сделанные на джаве. Парируй "крайне малыми исключениями", сделанными на расте, иначе слился. Балабол, хуесос ебаный.
Я не понимаю, вас это реально за живое что ли задело?
Ну вроде что-то есть https://gamedev.rs/ . Даже если сейчас мало, есть тенденция, что растодебилы занимают ниши cpp.
Ну и проблема в том, что я в общем не слежу за играми. Так похуй, не представляешь. Мне просто скинули статью, где нытье геймдевелопера, ну я это и отметил, грубовато немного, да.
>Я не понимаю, вас это реально за живое что ли задело?
Не выкай мне тут, хуесос, ничтожество блять. Если тебе "так похуй", нехуй было и ебала своего гнилого раскрывать. Заходишь в тред на чиле, а там очередной даун душнит и демагога из себя строит. Чтоб ты сдох, пидор.
извините.. но открывать ротик не перестану. ты не мой начальник или работодатель, чтобы такое требовать.
Выглядит интересно, с утра на свежий мозг прочитаю.
Нахуя так жить, bruh...
Ну напиши ты статический метод, да возьми от него референс - будет те рекурсивная лямбда.
Пакажи, что ты имеешь ввиду. Думается мне, что в таком случае смысл лямбды вовсе пропадает.
Еще мне немного не нравится замусоривать скоуп статическими helper методами. Сразу вот apache commons всопиминается.
>Думается мне, что в таком случае смысл лямбды вовсе пропадает.
Думается мне что ты вкладываешь какой то свой, аффтарский, особый смысл в лямбды, который я не выкупаю (заморачиваешься, проще говоря). Я в этом плане более приземленный, поэтому даже пытаться не буду оспаривать изысканные вкусы месье (чилю, ИДЕху открывать влом). Думаю ты и так все понял, на словах, что я имел ввиду.
>Еще мне немного не нравится замусоривать скоуп статическими helper методами
Сказал чел, у которого скоуп "замусорен" статическим хелпер-методом fix. Так то я факториал твой в статику вынести предложил. Дай имя функции - не придется трахаться с тем, откуда литерал брать для рекурсии. Не все в мире обязано быть лямбдой.
> Дай имя функции - не придется трахаться с тем, откуда литерал брать для рекурсии
Причем то же самое можно было сделать и в твоей GHCi-сессии. Я мож и хаскелит-любитель, коммерческого попыта в хаскеле не имею, но тупо не могу себе представить что хаскелиты так делают в проде зачем то.
>не перестану высирать беспруфные вскукареки и получать обоснованную урину в ебальник
Ясн, мань. Лови репорт.
Хотя ок, гугл говорит что каноничный способ делать рекурсию в хаскелевых лямбдах - это fixpoint, который суть то же самое. Вопрос "нахуя так жить", впрочем, по прежнему актуален (не говоря уже о том, нахера это тащить в джаву).
Ладно - может у челика интерес академический. Пусть уж лучше упарывается в тяжелые функциональные концепции, нежели тупостью в треде троллит.
>>70312
Ну не то чтобы я вообще напираю на такое использование, сразу обозначил, что это нахер не надо, как и рекурсия сама по себе. И в хаскеле действительно такое излишне.
Просто интересно в плане реализации и всяких разных подводных камней.
>>70323
Как я думаю, просто хотели отделить анонимный класс от лямбд. Например благодаря этому, компилятор может выбросить identity лямбд, типа value type сделать, их статическую ссылку this. В общем достаточно сильно так изголятся над ними.
>>70327
Это канонический способ для нетепизированного лямбда исчисления.
В хаскеле даже написание комбинатора омега маленькая сложная задача.
>Какие подводные?
А какие ожидаешь?
Изучаешь спринг бут, жюнит и архитектурные бест практис в рамках приложения и готов к 90% проектов на жабе.
>А какие ожидаешь?
Хочу, чтобы не было 1С и поменьше веба.
Что у вас по легаси? Приятное, терпимое или кал мочи?
За советы по изучению спасибо, примерно так себе и представлял, за исключением жюнит.
>Хочу, чтобы не было 1С
Мне лишь пару раз приходилось колхозить форматтер чтобы 1с мог файл скушать.
>Что у вас по легаси? Приятное, терпимое или кал мочи?
У всех свой, я работал со всяким. Из последнего неприятного - генерация различных огромных xml и пытаться подружить старые библиотеки с новыми спрингами.
В целом наибольшая проблема легаси - миграция на современные рантаймы и фреймворки, а также устранение уязвимостей посредством обновление транзитивных зависимостей и тд. Муторно, трудозатратно и без хорошего е2е тестирования не предугадаешь в какой момент что-то где-то может отъебнуть.
Но в целом, тулинг в жабе достаточно продвинутый чтобы находить проблемы даже до компиляции.
>За советы по изучению спасибо, примерно так себе и представлял, за исключением жюнит.
Насколько я помню весь пхп обмазан ОРМ. В жабе основной ОРМ - хибернейт, собственно, тоже обязателен к изучению, но сразу скажу, хорошо знать и понимать хибернейт - сложно, долго и редко когда полезно (кроме собеседований).
>Но в целом, тулинг в жабе достаточно продвинутый чтобы находить проблемы даже до компиляции.
Звучит круто
На пхп проблема легаси в том, что всякие дауны в одном файле размещают и вывод хтмл и запросы к базе, незащищенные причем.
Спасибо ещё раз!
В этом плане тебе джава понравится тк тут в 99% вообще не будет хтмл страничек,если фронт и будет то им будет заниматься отдельная команда которая будет у тебя джейсончики забирать и самостоятельно отрисовывать. Я вообще ни разу с фронтами не работал,все проекты были частью большой цепочки в датафлоу(банки,связь) и там просто байтики гоняешь
Хибернейт для петушил.
Jdbctemplate максимум.
Но лучше ручками дергать препаред стрейтменты и итерироваться по резальсетам.
Пробовал сохранять с перекодировкой на windows 1251, но все равно не работает.
Это не джава, это у тебя скорее всего терминал барагозит. Обычно это лечится выставлением chcp 65001 в оном, но где это настраивается в вскоде - сам ищи.
Жава на шindoшs - это полная хуита. Я когда пытался натянуть свой пет-проект на чуть не поседел. Кодировка обоссаная ср1251, разделители пути другие и даже ебанные символы новой строки и то другие. Какой-то рахит из 60х придумал \r\n. Просто ад ебанный. Как вы там блять живете в этом ебанизме?
Он вроде pathSeparator назывался. Все равно это хуита. Джава придумывалась для больших и дорогих пультов для телика рабочих станций и серверов на UNIX.
Не path, а просто separator. Я как-то один раз поел говна на этом.
Отказов-то я как раз не боюсь.
Есть path.resolve, для платформонезависимости
Стандартные, ты свой опыт фактически сбросишь
хм? что ты имеешь ввиду? статический метод создаётся в виртуальной таблице методов и использует свое имя для рекурсии. тут ни того, ни другого....
ну и еще я подумал, сверху к прикольному сабтайпингу, здесь ленивость используется. тоже необычное
>статический метод создаётся в виртуальной таблице методов
Какая нахрен vtable - ты тредом с плюсовиками чтоли ошибся?
Да и нахера статическому методу быть в vtable в теории? Он тупо к конкретному классу приколочен, ни в каком динамическом связывании участия не принимает. Даже вызов его в опкодах - это invokestatic, а не invokevirtual или invokeinterface.
>тут ни того, ни другого
Ага, зато invokedynamicа с метафакторёй хватает.
>статический метод создаётся в виртуальной таблице методов
В джаве виртуальная таблица только для вызовов через интерфейс, остальное либо невиртуализируется, либо как стат метод, вообще не идет через втэйбл
*девиртуализируется
>В джаве виртуальная таблица только для вызовов через интерфейс, остальное либо невиртуализируется, либо как стат метод, вообще не идет через втэйбл
А что делает invokevirtual?
Безработный....
Это вызов через цепочку иерархии, но если иерархии нет, то лукапа через втэйбл не будет, да даже если есть, джава просто девиртуализирует это
Поясните за рефлексию? Зачем она нужна с практической точки зрения?
Почему на собесах заостряют на ней внимание?
Она нужна для создания магии. Каждый уважающий себя спрингоколдун должен понимать, как работают его спеллы. К примеру все пользовательские анноташки работают с помощью рефлексии. Хотя например для создания прокси объектов даже рефлексии мало и лезут в байткод..
А какие у тебя проблемы с применением рефлексии вообще? вроде не сложное апи.
>Зачем она нужна с практической точки зрения?
Цели и задачи описываются общим термином "метапрограммирование". Это когда у тебя программа, данные которой - твои классы, методы и прочие языковые конструкции.
>Почему на собесах заостряют на ней внимание?
Хороший вопрос. Рефлексия у современных говноделов теперь легальна в продакшен-коде?
А как это проявляется? Что спрашивают?
Рантайм прокси такая хуйня пиздец просто.
Уж лучше изьебнуться и компайл тайм аспектами через аспектЖ сделать то что нужно. Чем в рантайме инструментировать байткод
Разве компайл тайм аспекты покрыают все случаи использования?
Тот же мокито использует онли рантайм.
Ну и ты подробнее аргументы за и против распиши..
Ебанутая падаль не в состоянии адекватно вывести в чем ошибка. Метод элементарный,сделать дескрайб топик,взять оттуда количество партиций,если число,переданное в метод отличается от количества партиций вызвать криейт партишнс. Мокаешь все ненужное говно,делаешь верифай криейт таймс 1,эта мразь пишет что у вас разные вызовы и что по факту вызывается и дискрайб и криейт. КОНЕЧНО БЛЯДЬ ОН ВЫЗЫВАЕТСЯ Я ЖЕ ТЕБЕ ЕБАНАТЦЮУ СРАЗУ НАПИСАЛ ВЕРИФАЙ ДИСКРАЙБ ТАЙМС СУКА 1. СТАВИШЬ БЛЯДЬ ВЕРИФАЙ КРИЕЙТ ЕНИ И СУКА СРАЗУ ЖЕ ПРОХОДИТ МРААААААВАЗИ КАК ЖЕ Я НЕНАВИЖУ ЭТО ЕБАНОЕ ГОВНО
Открой для себя strictness и argumentCaptor.
>джава просто девиртуализирует это
Не джава, а джит, и то это спекулятивная оптимизация которая далеко не всегда срабатывает. Достаточно хоть иногда вместо ArrayList передавать PersistentList, чтобы джит даже не пытался девиртуализировать.
>Достаточно хоть иногда вместо ArrayList передавать PersistentList, чтобы джит даже не пытался девиртуализировать.
Ну так не передавай
Всегда можно восстановиться.
Наверное потому что он на самом деле там не работает
Долгая история, по знакомству получил контакты. по факту 0 опыта, только петы. Восстановиться не могу и не хочу
мокито использует рантайм потому что у него нет другого способа кроме создания проксей на уже собраные классы.
для компайлтайм нужны же исходники.
Как и всегда, всем поебать на твой диплом
Тогда тебе пиздец
Ну вот. Значит везде ты не сможешь пропихнуть такие аспекты. Следовательно надо изучать оба вида сразу.
>Ну так не передавай
Склеротик, речь идёт о том что
>>71379
>В джаве виртуальная таблица только для вызовов через интерфейс, остальное либо невиртуализируется, либо как стат метод, вообще не идет через втэйбл
Пиздежь.
В джаве виртуальные методы на каждом шагу. Что-то джит сможет оптимизировать, а что-то нет.
скажу даже больше.
когда то давно на позапрошлом месте работы я дорабатывал самодельный ОРМ на аспектЖ с охуеными аннотациями бизнесобласти
с тех пор у меня есть стокгольмский синдром к аспектЖ
бля меня ажтрисет до сих пор
этот ебаный движок обработки грувипоноса с аннотациями бизнесобласти
Вот мне надо несколько языков кроме джавы:
1) Мне достаточно выбрать их топ продукт (IntelliJ IDEA) и поставить плагины?
2) Или же надо отдельно ставить каждую IDE, скажем, WebStorm, PyCharm, PhpStorm идт?
ReSharper, CLion точно нельзя idea заменить. Остальное в плагинах есть.
А ты вкатунишка типа?
По идее джедбрейнз хочет чтобы ты на каждый чих покупалновую иде, но можно костылить
>А ты вкатунишка типа?
Не совсем, перебираю разные языки и стеки, смотрю на тулы. Для себя выбираю.
Ну имхо, все что выходит за рамки жабы у жидбрейнсов не такое продвинутое, потому вполне можно найти что-то и лучше. И вообще, это тема софтача(/s/), разве нет?
К слову, найти бы софтик для анализа женериков. А то идея в какой-то момент просто ломается и хуйню несет. Я видел алгос для этого, мб плагин запилить.. Так-то полезно по идее.
>И вообще, это тема софтача(/s/), разве нет?
Это прямой инструмент разработчика, это как если художника с выбором кистей отправить в раздел плотников.
Но спасибо за инфу.
> И вообще, это тема софтача(/s/), разве нет?
Нет, спасибо, пожалуй не буду суваться в логово пердолек и спермоклоунов.
воняешь слабостью
Чем больше плагинов тем хуже это говнецо работает.
У меня лично стоят и ультимейт и СЕ и андроид студио - все отдельными установками
Не. Они хотят тебе подписочку на все их продукты одновременно впарить.
Но той же СЕ хватит вкатуну заглаза
Cum Eating.
Coprophilic EgorBugaenko.
Community edition
Гидроцефалище.
>Исключение - IDE и прочие инструменты программирования, которые можно обсудить в тредах соответствующих языков.
Обязательно оскорблять? Я же сразу сказал, что мы разные правила читаем. Отцтань, а то еще меня забанят. Я не хочу обсуждать правила.
Опять выхожу на связь
добавил JAVA_HOME и JDK_HOME и прописал в PATH,
но ошибка Cannot connect to the Maven process. Try again later. If the problem persists, check the Maven Importing JDK settings and restart IntelliJ IDEA не исчезла, зависимости не качаются
Бля, это троллинг какой-то нахуй. Как так нахуй? У меня не было проблем когда я ставил, там просто физически нельзя быть настолько криворуким чтобы так долго ставить и с таким количеством проблем.
>In IntelliJ IDEA, click Preferences, Build Tools -> Maven
>switch from the default "Bundled Maven 3"
Конечно, ведь обычный пк-васян будет разбираться в ИДЕешке, это же софт, а еще компилятор это тоже софт и то что ты написал в коде, блин, тоже становится софтом.
>Please disable antivirus and firewall. The issue happens when the IDE tries to establish connection to localhost but it is blocked on your machine. Make sure the localhost is resolvable and is accessible for the processes to connect to it using tcp
Вероятно в качестве безопасности у тебя TCP подключения к локалхосту заблочены админом. Если это так - тогда нет пути, мавен с идее не сынтегрировать
Вероятно чтобы всякая виROOсня не сканила порты или чтобы не пыталась подконнектиться и абузить существующие стандартные сервера в виде, кто знает. Спроси админа.
Например, у меня есть окно "Подтверждения покупки" и окно "Подтверждения бесплатной смены имени". Я бы хотел назвать их просто:
- ConfirmPurchaseWindow
- ConfirmFreeNameChangeWindow
Но если следовать правилу, то нужно писать:
- PurchaseConfirmationWindow
- FreeNameChangeConfirmationWindow
Что уже, вроде бы, не так хорошо читаемо, как первый вариант.
Правила по отдельности не работают, надо смотреть на весь гайдлайн в целом. В самом по себе правиле "существительное имя класса" не вижу ничего крамольного. Я б его дополнил еще запретом называть классы именами паттернов. Ненавижу имена в стиле AbstractSingletonBeanFactoryOfUserService.
Если тебя тянет назвать их глаголами, возможно твои классы имплементируют какой нить функциональный интерфейс и сама кодовая база довлеет в сторону ФП. Тоже имеет место на жизнь.
Это очень криво работающая оптимизация по памяти, времени запуска и оверхеду треда в ~1000 раз.
Есть вообще идеи, что бы такого поимплементить, чтобы напрямую применять эту вашу многопоточку, а не просто читать и какие-то примерчики запускать? Мне в голову приходит только кастомная имплементация контейнера сервлетов какого-нибудь.
Он и сюда добрался, боже...
>>75582
Нуу.. Я имплементил кастомный синхронизатор, его суть в том, что он работает как sleep, но там не время, а тики, ну и генератор есть.
Есть те, кто к этому генератору подключаются слушателями в некотором роде. У них есть возможность резервировать некоторое количество тиков. Если хотя бы один слушатель не зарезервировал тики, генератор стоит.
Еще делал генератор чисел фибоначчи, но когда там два AtomicReference.
MergeSort, transfer типа банковский, еще помню интересную задачку, мол вот есть три треда, ну и они имеют имена A, B, C. Тебе надо сделать так, чтобы они последовательно выводили что-то подобное ABCABCABCABC...
Ну это все искусственные задачи в какой-то степени... Реальные же обычно с транзакциями связаны, это друхое. Ну вот, по идее можно попробовать сделать паралельную имплементацию игры life. В контейнере серврелетов хз че сложного по многопоточке.. Знай себе создавай треды для каждого запроса и усе.
> кастомный синхронизатор, его суть в том, что он работает как sleep, но там не время, а тики, ну и генератор есть. Есть те, кто к этому генератору подключаются слушателями в некотором роде. У них есть возможность резервировать некоторое количество тиков. Если хотя бы один слушатель не зарезервировал тики, генератор стоит.
Звучит интересно, хотя и абсолютно абстрактно для меня.
> есть три треда, ну и они имеют имена A, B, C. Тебе надо сделать так, чтобы они последовательно выводили что-то подобное ABCABCABCABC...
Ну я похожее делал, только там у существа было 2-3-4... n ног, и надо было сделать так, чтобы ноги по-очереди ходили.
> В контейнере серврелетов хз че сложного по многопоточке.. Знай себе создавай треды для каждого запроса и усе.
Блин, в принципе ты прав. С многопоточкой там ничего сложного по сути нет. Короче возьму доки, мб какую книгу по конкуренси (мб есть рекомендации какие?), да буду ковыряться, походу действия должны идеи появиться.
Книга с поездами, же. Ну и вот тут действительно топовые примеры https://github.com/openjdk/jcstress/tree/master/jcstress-samples/src/main/java/org/openjdk/jcstress/samples
Можешь паралельно изучать.
Ооп хорошо знаешь ? Базовый синтаксис джавы ?
Так ты уже полноценный разработчик. Просто тебе надо изучить АПИ популярных фреймворков типа спринга.
Ну в принципе ожидаемое решение. Можешь попробовать тоже самое, но уже через cyclicbarrier или LockSupport
Просто и без задней мысли берешь и делаешь круд на спринге и попутно изучаешь все что для этого надо. С докером.
Выкладываешь на что там у вас не заблокировано вместо гитхаба и ходишь по собесам. Если ты пишешь автотесты - значит ты уже умеешь писать на джаве.
можешь попробовать логстэш переимплементировать чтобы эффективнее работал
может хайп какой-то очередной поднялся или кто-то на конференцию съездил
за все свои 10 лет карьеры я вообещ ни разу не видел чтобы кто-то действительно работал по TDD, но шума про него в каждой конторе было
У меня с примерно 7 собесов спрашивали на 4х про эту хуйню.
Не умеют разрабы юнит тесты писать.
Юнит тесты писать - это надо скиллы иметь. Уметь в самодисциплину, критическое мышление, хорошо уметь код декомпозировать. Это не втупую по гайдам с баэлдунга со стековерфлоу через чатгопоту копипастить... А TDD из-под-палки никогда не работает, тесты на хуевой кодовой базе получаются ригидными и не тестят нихуя, из-за чего у разрабов складывается отторжение ко всей парадигме. Да и продать это кабану непросто.
Так и живем.
Подумываю перекатиться в разработку, т.к. нравится писать код. Есть тут кто с подобным опытом? Че посоветуете?
Спринг + хибернейт + скул и перекатываться в кровавый тырпрайз?
Или податься в адроид? Базово пробовал писать хеллоуворд аппы доя него.
Вообще сам склоняюсь у первому, т.к выглядит как более быстрый путь для переката. Че думаете?
Ну типа ты на своей мейн можешь навесить какую-то аннотацию типа @YobaApplication и всё.
Хах, ты прав. Но если писать методы, которые не вызывают друг друга... (и тем же нарушая ООП). Бля чёт 🌶ню какую-то я придумал.
Почему?
Тебе разрешение что ли нужно?
Напиши круд на спринге - если осилишь, значит на ждуна готов.
Как там в андроиде я хз.
А дальше договаривайся на работе чтоб тебя перевели из нормального и нужного автокуа в отрицательно полезного бэкенд джуна.
> if устарел с приходом pattern matching..)
Вот так, да ?
if() {
//then
}
pattern matching () {
//omg##@$&_+????
}
https://www.udemy.com/courses/search/?src=ukw&q=Spring
Я понимаю, что и там, и там своя рутина. Но мне в автотестинге было особоенно по кайфу пилить тестовые фреймворки - добавлять в них фичи, фиксить баги и т.д. Но все же в основном приходится пилить именно автотесты, а это не интересно. Плюс сейчас такая тенденция, что большинство контор хочет, чтобы один тестер делал и авто, и мануал работу, а это я ебал в рот.
Новое что то показали или как обычно какое то минорное говно и вальхала которую надо еще 5 лет подождать?
Сеймович. Тошнит от необходимости разработать тест кейс, согласовать это все и проходить периодически руками пока нет автотеста.
Какие подводные? (повторяюсь)
А вот представь - разметил ты такими анноташками сотню методов - от @Run(1) до @Run(100). А потом херак, и понадобилось написать еще один метод, который должен вызываться между пятым и шестым.
Сиди-переловачивай несколько десятков анноташек.
>Как говорица, for устарел с приходом stream, а if с приходом pattern matching
Так нигде не говорится.
А вот как реально говорится, так это "когда в руках молоток, все вокруг гвоздями кажется".
Вот так https://pastebin.com/1xbKFKdy
>>76422
Это шутка вообще, которая звучала года пол назад в жаба же треде.
Но тем не менее, если в языке няшный паттерн матчинг, то имхо он нагляднее/декларативнее чем ифы.
можно изначально нумеровать ака хибер, ну т.е 0,50,100,150... и между на изи что-то впендюрить.
второй варик написать анноташку @RunBetween(1,2) которая запустит метод между первым и вторым. очевидно таким образом нельзя сделать метод, который работал бы между этого между. поэтому можно дополнить его id-ой, аля @RunBetween(101,1,2). Следующим шагом понимаем, что это ебаный goto и убираем всю эту машинерию на🌶 попробуем исправить изначальный дизайн. Разделим индексацию и порядок. аля, @Id(1), @Id(2) и тд. и вторая анноташка указывает то, перед чем она должна идти. @After(1), к примеру. теперь это ака связный список и нужна всего 2 измения, а не 50. плюс нет аля goto 🌶ни, а также это уже partial order, а не total, что плюс мб.
мнение?
мимо
дурак что ли? double нельзя точно сравнивать. тогда уж string какой-нибудь. но это криво как-то.
В смысле блядь нельзя? Ты думаешь там до🌶 дробных чисел будет? Вряд ли больше одного знака после запятой.
ну блять. 🌶нут тебе 1/3, pi, e, inf, nan и все. у тебя бизнес логика, а ты предлагаешь опираться на что-то столь ненадежное.
Отглагольные существительные созданы не просто так.
>можно изначально нумеровать ака хибер, ну т.е 0,50,100,150...
Можно. Но зачем?
Если бы у тебя эта сотня вызовов шла друг за дружкой в одной процедуре, те и думать бы над этой дилеммой не пришлось - жмакнул бы энтер в нужной строчке и вписал бы туда метод.
И читать такую цепочку гораздо проще - взглянул и понял что за чем в каком порядке вызывается. А так тебе придется облазить сто классов и у каждого эту анноташку посмотреть.
Не уподобляйся аннотациодаунам - лишь узкий класс задач действительно требует решения через аннотации. Большинство задач решается без аннотаций гораздо проще и очевиднее, чем с ними.
Мм, ну я не хотел придумывать, то куда эту залупу применить, просто задачу решал... Так-то если подумать, то похожее есть в filterchain order spring security. Типа порядок фильтров задаём.
А, точно, тыж мимокрок...
>Типа порядок фильтров задаём.
Ну вот как раз какая то постная 🌶ня того же уровня мотивации. Оно не вызывает неприязнь только за счет того, что редко когда этих фильтров на практике бывает много, да и обьявляются они обычно в одном модуле конфигурации (не размазываются по сорцам).
Ладно.. можно взять что-то безобидное, типа порядок того, как будут запускаться тесты в мокито. тип от базовых случаев, к каким-то special case.
В общем-то, мне прост интересно мнение, по поводу моего решения.. А ну не область его примения
Всмысле - тесты в мокито. Мокито это мокито, тесты это тесты. Ты может имел ввиду порядок запуска тестов в тестсьюте? А чем не устраивает натуральный порядок методов в классе?
>В общем-то, мне прост интересно мнение, по поводу моего решения.. А ну не область его примения
Ну я б не купил. Оно интересно разве что в виде академического пета-этюда, если ты хошь опробовать на чем нить написание annotation-processorов.
жюнит, да. можно, между классами например.
хотя, то что я описываю оказывается и так реализовано, лул. https://www.baeldung.com/junit-5-test-order
будто кто-то за такое платит вообще. даже спринг бесплатный. ладно невермайнд.
1. В очередной раз пол конференции рассказывали как новые 6-месячные релизы это заебись и как мы тольковыиграли
2. Рассказали как догнали и перегнали америкупетухон, петушарп, петухлин и пидораст
Ну и вроде всё.
1) будут ли работать те два новых потока?
2) можно ли будет управлять этими потоками, если предварительно сохранить дескрипторы созданных потоков, через вновь вызванный native метод?
3) если в нативе malloc'ом или оператором new взять кусок памяти, можно ли будет его использовать при следующем вызове native, если сохранить адрес и не освобождать этот кусок памяти?
Опять вопросы от непонимания принципа работы нативов. Когда ты стартуешь натив, управление переходит, как ни странно, нативному коду. Буквально то же что и запустить нативную программу.
1. Будут конечно же. Для ос это такие же потоки, как и все остальные, а JVM про них вообще ничего не знает.
2. Да можно, точно так же как и любым нативным потоком.
3. Да можно.
Ознакомился с описанием от вкатунов, но если мне удобнее курсами, то какие курсы наименее гавеные?
Ага, заходишь в тинек и спрашиваешь
Ты чё пес, это шилдт!
Как все люди работающие в офисе. Отпрашиваешься /договариваешься на обед/в отпуске и т.д
Это главная концепция, вокруг которой крутиться выскоуровневая жаба синхронизация. В чем ноль содержания, лол?
Причем это ускользание, реально очень много проблем может принести. Если например случайно утечет this ссылка во время конструирования иммутабельного объекта, то весь поток, получивший эту саму ссылку, всегда будет получать какую-то чушь, а не данные из него. Тут тоже самое, если ты кому-то просто отдал мутабельный объект, то считай крест поставил на синхронизации. Технически, ты должен передовать не просто объект, а право владения им. В том же расте это выведено на уровень семантики, в жабе же, ну довольствуемся хотя бы возможностью. Еще это называется acquire/release.
>Это главная концепция, вокруг которой крутиться выскоуровневая жаба синхронизация.
Вот только фрагмент из книги, ни разу ни про синхронизацию или safe publishing.
могут и после. разница, если hb нет? Это тупо гонка.
канонический пример:
https://github.com/openjdk/jcstress/blob/master/jcstress-samples/src/main/java/org/openjdk/jcstress/samples/jmm/basic/BasicJMM_04_Progress.java
без гарантии видимости, у тебя легко может быть вечный цикл.
Неприятная структура книги когда сначала показывают,а потом объясняют что показали через несколько глав
Можешь заметочки вести. или хайлайты оставлять в пдфке. а ну и перевод на русский очень часто может вводить в заблуждение, проще в этом случае к оригиналу обратиться. А то, то что у нас поток потока программы. у них thread program flow. что у нас блокировка потока, блокированный метод, у них lock thread, block method.
ТЯ-ЖЕ-ЛО
Я по работе из .doc делаю .xlsx средствами самого excel.
Не то чтобы это было сложно или много времени занимало, но количество документов не маленькое, а руками это делать надоело, еще и нужно что-то докрутить, добавить формул, ну вы поняли.
Сам документ,примерно как прикрел, выгружен из какой-то проги, так как приходят в одном виде, разделение идет знаками "|", делать табл. в excel они не будут, а формулы всё еще нужно добавить.
Решил делать на java, так как хочу перекочевать на нее. Быть инженером уже не так престижно
Вопросы сразу с ходу, как заменить "|" на перенос в следующий столбец, как добавить формулы, как избавится от шапки на каждой странице и т.д.
Может кто-то уже сталкивался с такой работой или может дать больше информации, чем запрос гугла "java преобразовать .doc в excel", буду благодарен. Как всегда, с меня нихуя.
>>79826
Ну наврядли кто-то тебе больше гугла подскажет. Я сталкивался, но все особенности будут зависеть от структуры твоего документа. А так - бери Apache POI, смотри примеры, пробуй считать.
Шапка вобще по-моему сделала бэкграуном, так что она будет как-то отдельно идти.
>как заменить "|" на перенос в следующий столбец
Читаешь строку, делаешь "строка".split("|") , получаешь массив из обрезков, проходишься по нему и опять же через апач пои добавляешь в новый столбец.
Как добавить формулы:
https://www.baeldung.com/java-apache-poi-set-formulas
Спасибо. Буду разбираться
Да там же в оглавлении все, ряя....
Вообще чет решил перечитать, про видимость было ровно главой раньше, странно, что чел забыл.
И вот я не понимаю зачем было написано вот эта часть про волатайл. Мало того, что гении на переводчиках перевели should как должность. Так мне еще непонятно, зачем вообще оригинальные авторы вкинули часть про кэши. Это же деталь реализации, нигде не гарантируемая. Я вот ток недавно ее в вузике слушал, в куче видосов видел на многих сайтах оно есть, короче все как попугаи ее повторяют.. Очень надеюсь, что все это аппелирование к железкам вырежут нахуй в будущем издании, оставив только
>read of a volatile variable always returns the most recent write by any thread
>read of a volatile variable always returns the most recent write by any thread
Что конечно же 🍑жь. volatile не даёт никаких временных гарантий, его гарантии видимости совсем про другое.
Хмм, что ты имеешь ввиду вообще? Вроде конктретно в этом предложении все норм сформулировали.
Знаю его. Погиб он. На мосту не справился с управлением и в реку нырнул. Достали, но он уже того - синий был.
>Вроде конктретно в этом предложении все норм сформулировали.
Нет, volatile дает гарантию что если вы из переменной A считали значение B, то из всех остальных переменных будет считано то, что тред записавший B записал до этого. Т.е. это про видимость изменений, а не про время.
Технически, write/read барьеры работают так, что ты увидишь эти изменения буквально за пару тактов, но JMM не дает таких гарантий.
Ты про eventually visible? https://gee.cs.oswego.edu/dl/html/j9mm.html
Вот тут оно есть. Opaque накладывается на Acqure/release, который в свою очередь уже на volatile.
Хотя конечно это 🍑ц какой-то, что до сих пор в спеке нет нихуя про эти режимы. Но судя по прогрессу... https://openjdk.org/jeps/188 это будет не скоро.
final дает дополнительные гарантии. Строго говоря, даже большие чем volatile. У тебя же тут просто plain чтение.
И вообще, попробуй потестировать тогда, раз не веришь.
А зачем мне доп гарантии,ты никак не можешь изменить значение n у тебя просто нет такого функционала
В плане? Ты ж его в конструкторе меняешь с дефолт значения на какое-то присовенное. Ну и вот, у тебя вариант прочесть 0 или то, что ты сам пихнул в констркутор.
>>80734
Вот тебе тесты короче. Я чет попытался сам написать, но там похоже нужно на арме каком-нибудь тестить, иначе просто непрокнет. https://github.com/openjdk/jcstress/blob/master/jcstress-samples/src/main/java/org/openjdk/jcstress/samples/jmm/basic/BasicJMM_08_Finals.java
не за что жи. и обращайся, няшк. могу контактик даже тебе свой дать, если молодой, шутливый, конечно~~
По спрингу каждый год что-то выходит у oh really. Как и по всему. Но сейчас книги чтают те кто хотят вкатиться, тем кто уже тут нет смысла - все нововведения разжёвываются в блогах , да на медиуме.
Да и сама индустрия сейчас хайпует с несколько других вещей.
Хуже гошизов, только аишизы. И почему спрашивается они засели в жабатреде(
Да никак. В зависимостях 3 спрингбута нет ничего ниже 17. Страдай.
Сгенерировать на новой и заменить в помнике руками?
Ceylon предлагал такое, но язык был убит с подачи разработчиков говнокотлина. Они даже добились удаления видео, в котором говорили об успешном опыте промышленного применения Ceylon.
И зачем нужны эти ваши юнит тайпы? Еще непонятно, причем тут котлин вообще. Будто это его вина, что он стал популярен, а целон нет.
Ну вот книги 2022+
Есть еще с десяток всяких индусских рактов
Только что ты там нового хочешь найти? Про спринги и джаву и так куча всего написано и не так уж много там меняется.
Я такое тоже не читаю, все что надо оп спрингу обычно и так гуглится легко. А мне больше про дизайн и архитектуру почитать.
Почему до сих пор не переехали на новую версию?
Разница в том, что у тебя сумма протегана. Объединение типов совсем не обязательно.
Нет, я про то, что видимость всегда не равна wall clock. Просто потому, что есть задержки с передачей информации.
Чтобы давать гарантировать вида:
- ядро i выполнило write barrier на такте X
- ядро j выполнило read barrier на такте X+1
- ядро j прочитало, на такте X+2, данные записанные ядром i
придется останавливать ядра пока данные передаются между кешами, а то и памятью.
Поэтому гарантии имеют вид: если A happened before B, то прочитав из A значение C есть гарантия, что прочитается всё что было до этого. А не в форме как только вы запишите в A, так сразу все потоки это увидят.
В контексте оригинального вопроса: >>80506 означает, что значение volatile треды видят с некоторой задержкой, но она очень маленькая, на уровне нескольких тактов.
Ну судя по википедии это все таки сум тайп. Ноо как я понял, ты имеешь ввиду, что возможность матчится, ну т.е. определить конструктор без instanceof не обязательна. Понил.
>>82155
>если A happened before B, то прочитав из A значение C есть гарантия, что прочитается всё что было до этого
Нуу, ты похоже свойства транизитвности имеешь ввиду. Вообще говоря в спеке действительно нет никакой формулировки по поводу последней записи. Вот есть пик 2 из главы 17.4.7. Вкратце, она говорит, что вот ну если у тебя A hb B, то A никогда не прочитает значение B. А также, не может существовать никакой такой записи между записью и непосредственно чтением. Вот эту вторую часть можно вполне переформулировать в видит последнюю запись. На пике 3 мб более понятное обяснение...
>А не в форме как только вы запишите в A, так сразу все потоки это увидят.
Имхо, но этого не было в той цитате... Вполне может я конечно жопочтец, не отрицаю.
Да вроде 8+, но точно не знаю.
Недавно надо было глянуть сурсы компоуза, идея говорит, что они собраны на джаве 8
>Нуу, ты похоже свойства транизитвности имеешь ввиду.
Чел! Это не тест Роршаха, тут не надо говорить какие ассоциации у тебя вызывает этот текст, его надо просто прочитать.
Я говорю про одну простую вещь, что все эти happens before, sequential consistency это не про то, что изменения будут сразу, немедленно, в течение N наносекунд видны/записаны в память минуя кэши и прочие городские легенды.
Это всё про то, что если увидел A, то выполняется B. Даже в твоём примере let W(r) be the write observed by r , т.е. это предположение что r увидел некоторые данные дальше из этого следует что-то.
>Это не тест Роршаха
((
Я привык уже так общаться. Не обращай внимание, просто считай как маркер, чтобы ты мог скорректировать, если я что-то неправильно понел..
>это не про то, что изменения будут сразу, немедленно, в течение N наносекунд
Ну согласен, так и есть. Наверное точнее надо было как-то вот так:
>read of a volatile variable always returns the most recent write in synchronization-order by any thread
Но кмк сознательно не было упоминаний про эти so/hb, чтобы неофиту мозг не сломать. В общем ладное, разобрались...
Ну съеби нахуй с треда, олигофрен, отлежись в дурке там месяц-два чтобы твои психические заболевания вылечили. Никто тебе не собирается помогать когда ты общаешься как будто у тебя осколок в мозгу.
Это копия, сохраненная 6 сентября в 01:48.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.