🎉🚀 ОБНОВИЛСЯ ДО JAVA 22 И ЭТО ПРОСТО БОМБА! ВСЕМ РЕКОМЕНДУЮ! 🎉🚀
🆕 Новые фишки: — 💻 Теперь можно писать код до super(); и this();! Да, вы не ослышались! — 🧩 Стрим газонюхи: создавайте любые свои промежуточные операции, например batch(), и ваши стримы станут как на стероидах! 💪 — 🐍 Запускайте Java как питон в одну команду без компиляции, даже если у вас куча файлов! Адьос, компиляция! 👋
🔄 Обновления: — 📄 Короткая входная точка (void main() {}) теперь официально поддерживается документацией и системами сборки. Раньше это работало, но теперь это подтверждено и гарантировано! ✅ — 🛠️ Встроенный кастрированный ASM (ClassFile API). Это суперсила для разработчиков Java, чтобы не зависеть от внешней библиотеки ASM. Больше никакой зависимости! 💥 — 🚀 Ускорили сборщик мусора. Теперь он работает как ракета на максимальных оборотах! 🚀💨
✨ Изменения существующего: — 🌐 Foreign Function выходит из превью! Вальхалла уже на подходе! ⚔️🏰 — 📝 Шаблоны строк, переменные в лямбдах через _, структурированная многопоточность/Scoped Values и Vector API обновлены, но всё ещё в превью/инкубаторе. Это только вопрос времени! ⏳
🎊 Java 22 - это как гигантская вечеринка для программистов, где нет торта, но полно мороженого и веселья! 🍰🍦💻🎉🎈
Вердикт: гпт-4о - хуйня, ноль отличий от 3.5. Бинг - ебет, картинки просто сок. Могу накидать сюда варианты генераций и промпт, если нравятся, пригодятся если кто-то еще будет перекатывать.
>>3161171 >3.5 объясняет хуже и чаще пиздит. 4о я попробовал только на переписывании шапки, так что пока не могу судить. >А от гугла нейронку не пробовал, кста? Нет, там наверняка тоже как-то надо обходить блокировку, надо найти инструкции как пользоваться, не до этого сейчас. >>3161183 Четверку без подписки не дают.
>>3161171 >>3161165 Проблема чатгопоты и других нейронок в том, что они предоставляют катастрафически малое количество токенов. По сути ты в месяц можешь задать 20-30 вопросов и на каждую строку ответа тратится по токену. В итоге ты за пару минут выгребаешь весь месячный лимит даже с оплаченной подпиской и потом сосешь лапу. Ну и без качественного впн и зарубежной карты тебе недоступны нейронки
>>3161321 Там без разницы. У тебя в месяц будет где-то 20-30 запросов. Мне хватает, чтобы решить 1-2 задачи в лучшем случае. Обычно начинает писать хуету и нужно 3-5 уточняющих запроса. Вот и считай
>>3161323 Я не знаю, откуда ты 20-30 запросов взял. При платной подписке тебя запросами заваливают до жопы. А можно ещё через апи, там вообще пока кошелька хватает можно спрашивать.
Вопрос. Зачем в джаве все так дрочатся с ООП, если обычный проект на спринг буте, с которым работает рядовой анальник, никакого ооп не содержит (не считая апи спринга и других зависимостей)?
>>3161457 Никто и не дрочится. Типичный проект на спрэнг фримверке это рестконтроллер, который мапит дтохи, толстый сервисный класс, который содержит в себе всю логику и прослойка из классов которые мапятся на таблички в базюльке + интерфейсы репозитории для пуляния в базюльку. Типичное процедурное программирование
>>3161495 Да, я про то же, за редкими исключениями всё так. Я здесь скорее про диссонанс между тем, что ты это должен знать, что каждый обучающий ресурс считает своим долгом включить избитые примеры про машинку и зверушек, что про это спрашивают на собесах, и реальностью крудошлёпства на спринге.
>>3161787 >начинается движение в сторону ддд не, там дальше больше бойлерплейта чем в ООП, добавление одного поля в базу означает переписывание кучи мапперов
Ну так то сама джава - по большей части ООП. Те же коллекции, к примеру.
А вообще - в джаве никогда на ООП не кодили. Судя по рассказам дидов, предтечами джавистов были коболисты-процедурщики, которые идею не оценили и ебошили процедурно по привычке. Ну а дальше понеслось во все тяжкие - JavaEE + EIP, DI, Spring Boot...
Коллекции, кстати, кал. Должен быть интерфейс RList (ReadableList) и MList (MutableList), расширяющий RList, а также должна быть мода на принимание Iterable в качестве аргументов извне если нужно итерировать и не более, которую не задали разрабы джавы (хотя, вероятно, могли).
>>3162155 >принимание Iterable в качестве аргументов Попробуй стрим из итерабл сделать. Например там принимается несколько важных флажков, что на пике. Как ты вот их достанешь из итерабл? >Должен быть интерфейс RList (ReadableList) и MList (MutableList), расширяющий RList В котлине это так. >>3162161 А расскажи подробнее о проблемах интересно жи. >>3162174 Для вас же /versus/ сделали. Пиздуй туда.
>>3162181 >А расскажи подробнее о проблемах интересно жи.
Это надо прям садиться и душнить долго... Если вкрадце - анон выше просто туп, это все что я хотел сказать.
Во первых, коллекции бывают не только mutable, immutable, но еще и persistent (персистентные), последние накладывают свои особенности на контракты. Во вторых, если уж браться и хуесосить интерфейсы, то хуесосить надо всю иерархию сверху донизу, а не только List. Почему Collection декларирует для всей этой палитры коллекций как методы с сайд-эффектами (типа remove, retain), так и методы без? Для того, чтобы потом стыдливо прикрывать их эксепшенами в иммутабельных имплементациях, ломая LSP? Почему вместо нормального контракта для ключа в хэш-бэйзд структурах, вместо того чтобы задекларировать интерфейс и вынести в него equals-hashCode, последние вшиты в контракт базового обьекта, из-за чего потом появляются способы ебнуть себе в колено мемори-ликом по мутабельному ключу? Да и почему в интерфейс Map следовало зашивать на контракте его хэш-бэйзд натуру - чтобы потом считать IdentityHashMap читерством? Это - то что я с наскоку вспомнил, хуесосить Collection API можно долго. А можно не хуесосить и просто жить с этим - я на самом деле не осуждаю людей, которым сложившийся статус кво норм. А вот гиблое дело - быть тем аноном-двачером недоделанным: у дебила 20 iq за душой, а все лезет во взрослые темы, щенок блять...
>>3162202 Какое-то хуевое решение, которое стирает флаги. Хотя я чет тупанул, они в итерабл включили этот spliterator, так что проблем по идее не будет. Но что-то мне кажется, что есть не так много мест, где нужно исключительно итерирование. Ну и плюс это декларирует тот факт, что это не какой-то контейнер, а все что угодно, что может итерироваться. Хоть бесконеную последовательность можно хуйнуть. Это в общем еще одно ограничение в сущности. Ленивость, возможно нужна, или гарантия завершения. >раньше чем ты родился Всяко лучше, чем быть скуфом.
>>3162206 Кстати эти иммутабельные имплементации еще поведение разное имеют. Arrays.asList например запрещает только размер менять, а вот List.of вообще всю мутабельность. Самое неняшное - это никак семантически не обозначено. Кстати, вообще в вашей новой иерархии куда этот самый Arrays.asList попал бы? >вынести в него equals-hashCode Вообще было бы няшно. Типа например у StringBuilder equals не задан, что немного не очевидно, а так бы CE было бы.
>>3162228 >в вашей новой иерархии куда этот самый Arrays.asList попал бы?
Чел - я еще даже иерархию не рисовал, а ты предлагаешь мне разместить в нее чето куда то... Ты ведь понимаешь что это не тот вопрос, который решается с-кондачка?
Как по мне, так существование Arrays.asList не особо и обоснованно, когда есть List.of(<vararg array>). А с последним - вопросов где возвращаемое из него значение расположится в иерархии возникать не должно. Была когда то библиотечка персистентных коллекций vavr (перл, достойный отдельного обсуждения), так там у каждой коллекции был похожий билдер. List.of, Set.of, Map.of, и.т.д. В современной джаве теперь похоже стало.
>>3162371 >Ну как-то без паттерн матчинга выглядит хуева. Паттерн матчинг делается только через sealed интерфейсы в джаве, то есть к существующим типам ты его не сделаешь. А это подход и предельно простой и распространяется на существующие типы
>>3162384 Нуу, все abstract неявно = sealed. Возможно в некоторых местах впендюрят еще явно. В любом случае какой-то странный кейс, проще полиморфизмом ad-hoc воспользоваться и не ебать мозги. >>3162385 Ну покажи реально. Типа смотри, даже паттерн матчинг работает с ними корректно.
>>3162391 >Нуу, все abstract неявно = sealed. Ну как же, ты же любой абстракт можешь экстендить любым новым классом, это никакой не sealed, sealed как раз запрещает это делать >роще полиморфизмом ad-hoc воспользоваться и не ебать мозги Согласен, но люди периодически спрашивают юнионы, вот я как-то для реддита и написал пример
>>3161163 (OP) Коллеги, года 3 назад к треду был прикреплен очень годный роадмап по вкату. Там советовалась книга по спрингу и курсы Валеева. Сейчас в шапке другой гайд по вкату, дайте ссылку на тот старый
Это какой-то даун-самопиарщик засунул в шапку треда свою хуйню чтобы потом с лебезением перед кабанами показывать количество звёзд. Прямо сейчас в шапке расширенный вариант того гайда, что был в треде с древних времён.
>>добавление одного поля в базу означает переписывание кучи мапперов просто сделай одинаковые названия полей для бд и в дто - писать ничего не придется
Кто-нибудь из джавистов оформлял отсрочку от призыва (не от мобилизации, а именно от призыва) в РФ при найме на работу после магистратуры/аспирантуры вузика? Через год заканчиваю аспу. Как работодатели к этому относится? Не будет вопросов по типу нахуй я в аспирантуру пошел если я уже работал? Брат устроился жаба девелопером и получил бронь, но от мобилизации, а мне нужна именно от срочки. Опыта на жабе нет, решил свичнуться с дата сатанизма, т.к. работаю в лаборатории МухГУ за среднюю зарплату (не по айти, а по региону, что пиздец), естественно собираюсь в резюме напиздеть с три короба. Можно конечно опять в дата саенс, но я хочу иметь несколько опций.
>>3163471 Ну и можно не обязательно джаву, а в целом бэкенд из стандартного набора (C#/Python/Go/JS), если кто устраивался, не думаю, что ситуация сильно отличается в плане вероятности получения отсрочки.
Моё мнение про 4о диаметрально противоположно первому посту в треде. Больше не извиняется каждый раз, пишет охуенный код, доступно всем и ещё и дёшево. Просто заебись. Жаль только это по сути враг для программистов.
>>3163395 >просто сделай одинаковые названия полей для бд и в дто - писать ничего не придется сначала сами себе создаем проблемы, а потом героически их решаем, да
>>3163471 >Как работодатели к этому относится? Зависит от компании. В целом должны быть за, потому что тебя с работы не выдернут на срочку, но лично в моей против.
>>3163480 Анальники будут коупить до последнего и не верить. У них просто жопу рвёт от факта, что профессия таксиста переживёт программиста, т.к. автопилот для авто нереализуемая хуйня.
Ебусь с HDFS, пытаюсь запустить лабу, на первой пикче, пробовал все YARN-ы, хуй там плавал, каждый раз выдаёт ошибку как на второй пикче, че делать? Могу прислать скрины всех использованных файлов, проверил путь до исполняющего файла питона, вроде всё норм. Главное файлик создаёт пустой, но не заполняет по понятным причинам - не работает нихуя.
путь до исполняющего - #!/usr/bin/python3 Да, тред про Java, а тут питон, но высылает мне ошибки именно Java
2021 @ >ПОХУЙ НА ПРОИЗВОДИТЕЛЬНОСТЬ И КАЧЕСТВО КОДА! ГЛАВНОЕ БЫСТРЕЕ ЧТОБ ПРОДУКТ БЫЛ ГОТОВ! @ 2022 @ >БУГАЕНКО, СЧАСТЬЕ, ЗАЕБИСЬ! @ 2023 @ >ЗАБИВАНИЕ ХУЯ НА ПРОИЗВОДИТЕЛЬНОСТЬ ПРИВОДИТ К ТОМУ, ЧТО ИТОГОВЫЙ ПРОДУКТ РАБОТАЕТ С МИНИМАЛЬНО ДОПУСТИМОЙ СКОРОСТЬЮ, НИЖЕ КОТОРОЙ УЖЕ НИКАК НЕЛЬЗЯ. CPU-TIME ДО СИХ ПОР ОЧЕНЬ ОГРАНИЧЕН И БУДЕТ ОГРАНИЧЕН ВСЕГДА, И РАЗРАБОТКУ СТОИТ ОТТАЛКИВАТЬ ОТ НЕГО. А ВОТ НОВУЮ ПЛАШКУ ОПЕРАТИВЫ ВСЕГДА МОЖНО ДОКУПИТЬ, ОНА Ж КОПЕЕЧНАЯ! @ 2024 @ >НО ЕСЛИ БЕЗДУМНО ТРАТИТЬ ПАМЯТЬ НИКАКИХ ПЛАШЕК НЕ ХВАТИТ...
>>3163490 >>не использовать ддд, и писать придется еще меньше Придется писать очень длинные и плохо тестируемые портянки которые используются всеми сервисами. Проще написать 5-10 небольших методов в которых используется только то что нужно, даже если местами есть дублирование. А при изменениях меньше вероятность словить баги в неожиданных местах.
>>сначала сами себе создаем проблемы, а потом героически их решаем, да Не знаю в чем ты проблему увидел. Добавление полей в бд не связано с ддд. Аналитикам и бизнесу вопросы задавай, почему они не предвидели всю бизнес логику заранее.
>>3163735 >В чём я не прав? В том, что плашек всегда хватит. На амазоне можно взять инстанс с 250 ГБ памяти за 1 220,56 USD в месяц. На типичной галере/энтерпрайзе это 1-2 человекодня разработчика по стоимости. То есть если ты через джаву сможешь сэкономить хотя бы 2 MD в месяц - можешь хоть обосраться памятью
>>3163751 >Аналитикам и бизнесу вопросы задавай, почему они не предвидели всю бизнес логику заранее. Хвост машет собакой Бизнес постоянно не можно предвидеть свою же логику и лучше наймет того, кто с этим может работать, а не воннаби маня-архитектора, которому бизнес блять мешает построить идеальное приложение, лол
>>3163760 У тебя на твоей пеке тоже 250 гигабайт памяти? Да и на таких объёмах кучи уже цпу тайм неплохо так тратиться начинает на саму работу с этой памятью.
>>3163760 > 1-2 человекодня разработчика по стоимости. Только в реальности это в лучшем случае дней 10 с возможностью продления ещё на 10 дней через тактику лейофф + перенайм в другой отдел в два раза дешевле.
Братва, помогите советом вкатуну(не уверен) Я от скуки начал в марте прсматривать видео и курсы по джаве. С полного нуля. До этого умел только мышкой папки переименовывать. К настоящему моменту привык уже к idea, освоил Переменные, вложенные циклы, многомерные массивы, научился писать методы, классы, наследование. Сегодня буду вечером смотреть лекцию про полиморфизм. Так вот эт я к чему. Я через 2 недели буду увольняться со своей работы( логистика) и уезжаю из ДС к себе в мухосрань на дачу. Буду жить на дача до конца сентября и не работать. И пришла мысль учить джаву по 6-8 часов в сутки все эти 4 месяца. Реально ли в таком режиме к октябрю(максимум ноябрю, а то потом холодно на даче) выучиться и начинать искать работу? У меня просто выбор между тестировкой и разработкой, очень хочется стратегически продумать - куда я точно смогу за такой срок отучиться и вкатиться на удаленочку. Выручайте, пацаны. Ну или кидайте танками в мечтателя. Мне 27 лет, аспирант экономических наук. В 5-8 классе постоянно гонял на олимпиады по математике.
>>3163842 Что это за бессвязный поток сознания? Ты реальность рассказываешь из собственного опыта работы в конторе с капитализацией ну хотя бы миллиард долларов?
>>3163849 >лекцию про полиморфизм >научился писать наследование Что.? Они ж взаимосвязаны. Или ты научился слово extended писать? Пиздато, че. >И пришла мысль учить джаву по 6-8 часов в сутки все эти 4 месяца. Мне кажется перегоришь просто. Ну ты главное сюда пиши, няшно будет. >>3163850 Идея наоборот топ для новичка. Я не представляю кто на фул ебале пишет в блокноте, считая, что это чем-то помогает. Во первых, идея подсвечивает желтым, все твои фиговые фичи, ты всегда можешь изучить, а что не так. Плюс ты всегда можешь зажать ctrl и обратиться к коду. И это копание в кишочках тоже ахуеть какой буст. И какие сука аргументы могут быть против идеи? Ууу, привыкает к автокомплиту? А минусы?
>>3163735 У нас сервис на говноланге жрёт 600 Гб как говорится - 640 Гб хватит всем и ничего. Главное, что таску вовремя закрыли. А потом ещё создали таску пофиксать эту херню и когда закроем можно репортить что улучшили перформанс на 500%.
Чел - ты ща с лагом на пять лет капчуешь. В 2022м Бугаенко уже хуесосили в хвост и гриву литералли все, о чем ты вообще? Когда СВО стартанула, какой то именитый шарпей даже покушение хотел на него устроить.
>>3163913 Постараюсь отписывать про процесс. Ну я от однотипной работы, 2 часов метро в день, зп в 80к в ДС уже перегорел. Так что вообще ничего не потеряю. Зато есть шанс работать удалённо и жить где хочу, да ещё и получать больше сотки. Ну и мне даже интересно пока что учиться( но по 6 часов в день я ещё не пробовал конечно) Если всё-таки в разработку пойду, то пока набросал пикрил себе темы для изучения.
>>3163984 >Когда СВО стартанула, какой то именитый шарпей даже покушение хотел на него устроить. Тайно добавить ему в проект Спринг, чтобы он умер от кринжа?
>>3163998 В ооп инкапсуляции, которая не сокрытие, не хватает. Еще рекурсия без оптимизации хвостовой рекурсии нахуй не нужна. Atomic от волатайла мало чем отличается. Тут про CAS речь по идее + атомарность.. Ну и stream api где? Его ж теперь пихают повсюду. Как говорица, for устарел с приходом stream, а if с приходом pattern matching..) А. И главное, женериков нет, ряяя!
Алгосов как-то мало))) Давай, алгоритм флойда, деикстры, крускала, джарвиса, стек Трайбера, очередь Майкла и Скотта, префиксные суммы, sqrt декомопозиция, мемоизация..))))
>>3163751 >очень длинные и плохо тестируемые портянки которые используются всеми сервисами. Проще написать 5-10 небольших методов в которых используется только то что нужно, даже если местами есть дублирование Это правда, но причём здесь ддд? С ддд ты просто добавишь ещё один слой абстракции и сложность, которой в твоих проблемах не было изначально. И чем больше функциональности, тем больше этот слой будет вещью в себе, которую нужно поддерживать.
Не буду утверждать, что у ддд зло, но пропагандировать его универсально - прям такое себе. Мне лично долбёжки с jpa хватает.
>>3163998 Ну будешь выгорать от однотипных задач, дедлайнов и коллег-кретинов с зп 200к на удалёнке. Немного получше, конечно, но не значительно.
И насчёт алгоритмов чел выше троллит, они, кроме самых базовых, не нужны на дефолтного спринг анальника. Да и апи многопоточки я сомневаюсь что будут сильно спрашивать.
>>3164019 >Еще рекурсия без оптимизации хвостовой рекурсии нахуй не нужна Нужна, потому что могут спросить. Просто важно уточнять, что в джаве в 100% случаев рекурсию с неизвестной глубиной лучше переписать на цикл.
>>3163657 Смешные вы все таки, нейропсины. Так рьяно в своей злобе верите, что пишете тулзину для уничтожания наших рабочих мест, а по факту - пишете нам новый интеллисенс. Вам дебилам и невдомек, что пока есть хоть одна строчка написанного кода - всегда будет программист, который ее мейнтейнит.
>>3164049 >Нужна, потому что могут спросить. Хз, мне такая мотивация не нравится, конечно. Типа как в школе учишь не для себя, а для экзамена. Потом закономерно все нахуй забудешь. Лучше никак, чем так. Тем более рекурсия, все таки "To iterate is human, to recurse divine". Он же хуман, так что.
>>3164061 Такова реальность. Да и рекурсия довольно интуитивна, чего там учить. Плюс есть задачи, которые проще сначала написать через рекурсию, и потом, отталкиваясь на это решение, переписать на стек+цикл.
>>3164081 >Да и рекурсия довольно интуитивна Не сказал бы. Плюс в жавке помимо оптимизации хвостовой рекурсии нет рекурсии переменных, ввиду того, что это процесс инициализации, а не связывания. Например вот с помощью такого образа легко определяется полиморфный тип, ака null, без спец языковых средств. Это просто несходящийся ряд. Потом, можно определять разного рода последовательности. >чего там учить Например все, что выходит за хвостовую рекурсию. Скажем у нас есть некий список, надо сделать вложенный список, который содержит все возможные перестановки изначального. Это алгоритм O(n^n), т.е. итерация итераций, с помощью фора невыразимо. >переписать на стек+цикл Чел.. пик2.
>>3164105 >с помощью фора невыразимо Любая рекурсивная функция может быть выражена через цикл. Либо я тебя не так понял. К тому же, это типовая проблема, у которой можно нагуглить итеративную реализацию на вики https://en.wikipedia.org/wiki/Heap%27s_algorithm . И по сложности там вроде бы O(n!).
>чего там учить >Например все, что выходит за хвостовую рекурсию >Плюс в жавке помимо оптимизации хвостовой рекурсии нет рекурсии переменных Я про то, что понять, что такое рекурсия и общую структуру рекурсивной функции не сложно. Ну, и наверное необязательно прям сильно в них углубляться. Я вот не знал до этого про рекурсивные переменные, и счастливо жил свою жизнь. Кстати, в js есть что-то очень похожее, если я не ошибаюсь.
>>3164222 >Любая рекурсивная функция может быть выражена через цикл. Ну это-то да. Но там блин стек в том или ином виде используют. Это та же рекурсия, только сбоку. Еще к слову, можно рекурсию полностью перевернуть верх тормашками и получить дп. >И по сложности там вроде бы O(n!). Тут да, ошибся. >Я про то, что понять, что такое рекурсия Нуу, концептуально в принципе мб. Но типа когда доходит до практики и тебе надо проанализировать не просто какую-то итерацию, а все веточки, которые переходят в другие веточки... Задача становится просто на уровень анализа многопоточки. >и счастливо жил свою жизнь В принципе я про это говорю, что в жаву занесли вот некоторые концепции, до ума их не довели и смысла от них так мало, что проще хуй забить. >Кстати, в js есть что-то очень похожее Надо будет поискать.
>>3163514 Спасибо за ответ. Вчера провёл небольшой рисёрч, скорее всего, как я задумал не выйдет. Надо устраиваться в ближайшие полгода пока отсрочка аспирантуры действует, а потом через год получить отсрочку по работе. Чёт мне такой вариант сразу в голову не пришёл и я уже думал, что с горя схожу в армию, лол. Надо только договориться с Кабаном Иванычем чтобы он переустроил меня по совместительству, т.к. он у меня научрук. Ну и всего-навсего за полгода выучить жабий бэкенд.
Поясните за ISR в кафке: вот допустим есть лидер партишна и одна ISR. Лаг ин-синк реплик допускается стандартный, 10 секунд. Допустим, ISR отваливалась на 9 секунд и переставала фолловить записи в лидера, а в это время сам лидер упал. После чего ISR снова поднимается и ее выбирают новым лидером. Значит ли это, что потеряются записи за последние 9 секунд?
Джависты, нужна помощь. Пытаюсь накатить Maven, а он не может скачаться, так как блокируется доступ брандмауэром, а доступа к админке у меня нет. Решил со своего домашнего установить локально. Скачал .m2 и закинул на рабочий комп, но мавен не стартовал. Перезапус и чистка кэша не помогла, какие еще есть способы, кроме получения доступа к админке?
Вопрос анон, во всех обучениях рано или поздно требуется создать какой-то алгоритм, ну типа для проженных элементырнй аля бинарный поиск , деление массива , слияния и тд. Так вот это я должен сам допереть до таких алогосов, такое вообще возможно? А если сам не могу , то всё ?
>>3165043 >А если сам не могу , то всё ? Значит ты не кто-то уровня деикстры. Если хочешь именно придумывать алгосы, читай кнута. У него целью стоит, научить именно тому самому искусству придумывания алгоритмов, посредством того, что тебе дадут все необходимые для этого кирпичики, плюс наиболее общий методы, которыми можно их комбинировать. Также методы для анализа, тобою сделаного.
>>3165034 >Скачал .m2 .m2 это папка с конфигурацией и локальным репозитории, это не сам мавен. Просто скачай zip архив с сайта и разверни в любую папку где есть права на запись. И настрой M2_HOME.
Как же хорошо, что есть idea. Всё подсказывает, сама всё скачает и поставит. Это всё глупые ретрограды считают, что надо уметь ручками всё делать. В 2к24 это уже не надо. Если что, можно ЧатГПТ спросить.
>>3164458 Например всю базу данных выгружать в оперативку. Это кстати идея неплохая в некоторых случаях, и даже 600 гигабайт при наличии 640 гигабайт памяти всего может быть нормой, так как это снижает латенси в ноль.
Это печально. Я скачал apache-maven-3.9.6-bin.zip разархивировал в директорию с проектами, прописал M2_HOME в винду из гайда по ютубу, а он всё еще не работает. как же хуева без админки
Ошибка на постоянке: 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
>>3165639 >реально сервер арендовал или vps? Что ты имеешь ввиду под "реально сервер"? Физический сервер? Ну в этом смысла нет, ибо найти физический сервер под сайт тяжело. >Есть кто для своего сайта использовал джаву? А смысл? Юзни тильду или что-нибудь на стеке пыхи и джээса >Сколько памяти жрет дефолт-сайт под небольшой нагрузкой? На джава много :) (для простого лендинга)
Анон, как в этом ТЗ реализовать работу с многопоточкой? Я нихуя не понимаю, а попробовать сделать интересно
Данный документ содержит описание стандартного тестового задания для соискателей на должность Junior Java разработчика. Общее описание
Необходимо разработать приложение в соответствии с изложенными ниже требованиями. Требования Общие требования
Архитектура - Java SE 8.0 (или выше), использование библиотек и фреймворков на усмотрение исполнителя. Должна быть система логирования (на основе готового решения, например Log4j). Приложение должно логировать в файл любые действия, приводящие к изменению данных. Приложение должно корректно обрабатывать и логировать ошибки.
Структура данных
В приложении должна быть сущность Account (счет) содержащая поля:
ID (строковое) - идентификатор счета Money (целочисленное) - сумма средств на счете.
Функциональные требования
При запуске приложение должно создать четыре (или более) экземпляров объекта Account со случайными значениями ID и значениями money равным 10000. В приложении запускается несколько (не менее двух) независимых потоков. Потоки должны просыпаться каждые 1000-2000 мс. Время на которое засыпает поток выбирается случайно при каждом исполнении. Потоки должны выполнять перевод средств с одного счета на другой. Сумма списания или зачисления определяется случайным образом. Поле money не должно становиться отрицательным, сумма money на всех счетах не должна меняться. Решение должно быть масштабируемым по количеству счетов и потоков и обеспечивать возможность одновременного (параллельного) перевода средств со счета a1 на счет a2 и со счета a3 на счет а4 в разных потоках. Результаты всех транзакций должны записываться в лог. После 30 выполненных транзакций приложение должно завершиться.
>>3165639 Смотря какой сервер поднимешь на джаве. Вон джавалин в простое 50 мб, под небольшой нагрузкой у меня так же примерно жрал Спринг наверное больше жрать будет. Оптимизировать джаву всегда можно.
>>3165918 У меня нет грейда, я уехал работать на юникорн давно, и никогда в этой российской системе миллиона грейдов не разбирался. Сейчас числюсь как сеньор, но с другой стороны у нас все поголовно сеньоры.
Посоветуйте статьи, чтобы разобраться в soap и веб-сервисах с soap. В гугле на первой странице одно говно. Не знаю, по каким источникам изучать эту тему.
>>3165923 Хмм. Ну короче, Random в многопоточке не применяют, для этого есть ThreadLocalRandom. Плюс вот у тебя sleep и проверка флага в цикле. На самом деле у них коллизия, типа одно флаг стирает, потому надо то ли его восстанавливать в исключении, то ли еще ч. Плюс эта залупа, ну такоое. Я бы сделал как на пике.
>>3165931 >На самом деле у них коллизия, типа одно флаг стирает, потому надо то ли его восстанавливать в исключении, то ли еще ч одно другое не стирает, флаг сбрасывается при поимке исключения код вне слипа ты не прервешь без флага
>Ну короче, Random в многопоточке не применяют, для этого есть ThreadLocalRandom Тут разницы нет, но узнаю российское вахтерство, как домой вернулся
>Я бы сделал как на пике. Уступаю тебе позицию джуна
Особенно кстати классно создавать целый эзекьютор для 1 треда, да и лямбды, да и трай с ресурсами, гарантирую только за это +3 грейда тебе
>>3165933 Ты не понял. Вот у тебя обновился стейт в памяти, накидались какие-то сущности, связи и .т.д. Теперь ты начинаешь синхронизацию с настоящей БД (вероятнее всего оригинальные транзакции к этому моменту не сохранились, поэтому просто сливаешь разницу в БД). На середине слива приложение падает - база закоррапчена. Я уверен конечно что скорее всего такого не происходит, но звучит очень хрупко.
>>3165939 Даун, транзакции не магическим образом безопасны, а за счёт их атомарности. Все те же самые проблемы что есть в этом подходе есть и в классическом. Просто делаешь слив атомарным и всё.
>>3165934 >флаг сбрасывается при поимке исключения Ну я про это и говорю, надо впендюривать внутрь цилка try/catch который будет восстанавливать этот флаг. Иначе будут два разных способа обработки, взависимости от того, в каком же месте произошло прерывание. >создавать целый эзекьютор для 1 треда >запускается несколько (не менее двух) независимых потоков >Решение должно быть масштабируемым по количеству счетов и потоков Ладно. >Тут разницы нет, Тут разница есть. Не надо создавать 100500 экземпляров рандома. >Уступаю тебе позицию джуна Фига щедрый. >>3165935 Ты типа новые слова выучил? Рад за тебя.
>>3165725 Только Xmx поставь, потому что у дажвы такая оптимизация, что она жрёт всю память что дают, лишь бы мусор пореже собирать и пореже память у ОС запрашивать
>>3165947 >надо впендюривать внутрь цилка try/catch который будет восстанавливать этот флаг. это если ты планируешь переиспользовать поток после интеррапта в твоём примере у тебя поток переиспользуется, потому что это пул, в моём - нет, интерруптнул и выкинул Восстанавливать флаг просто потому что "тут так заведено" - очень странное решение
>>3165972 Тут не спорю. Просто правило восстанавливать флаг достаточно простое и смысла его игнорировать практически ноль. Надо бы заставить идею автоматом это генерить, а не то что она ставит.
>>3166018 Пик. Вот он тоже про это говорил, в принципе >>3165959 >это если ты планируешь переиспользовать поток после интеррапта >в твоём примере у тебя поток переиспользуется, потому что это пул,
Так а кому этот интеррапт восстановленный сдался, если поток - пуловый, и выше по стеку нет нихера? Я понимаю еще того анона у которого цикл по интеррапту был, но тут то цикла нет. Пулу разве не похуй? Он же его сам притрет при старте новой таски, разве нет?
>>3166220 >Вроде та же джава А зачем его брать в таком случае? Из самого очевидного, мокито там не работает. Еще не очень понятные некоторые специфические моменты связанные с примитивами, но думаю это-то пофиг.
В общем-то с приходом java 21 чет как-то не видно прям явных явных преимущеаств котлина над жабой.
>>3166276 >Удобнее кажется Ну раз кажется... То иди в тред котлина, тут вообще мало кто на нем пишет >Гугл вроде говорит что все норм. Ты гуглить не умеешь.
>>3165575 >Чего ты такой токсик? Мне не нравится когда в разработку идут люди которые даже не "уверенный пользователь ПК".
>>3165575 >Картинка В консоли выполни where mvn Должно показать какие инсталляции мавена у тебя есть на машине. В идеале должна быть одна, та которую ты установил. Дальше where Java Аналогично, смотришь какие инсталляции JDK есть. Нужно чтобы твоя JDK была первой. Если нет, то переопредели JAVA_HOME и JDK_HOME на твою JDK.
Дальше проверь что есть права записи на папку .m2 попробуй зайти туда и создать файл.
>>3166439 Ты же понимаешь, что это только доказывает мой тезис? Типа мокита так плохо работает в котлин, что пришлось делать форк и править. Притом ведь это тоже такое себе и используют обычно mockk. >>3166392 ))))
Насколько на жабе всё хорошо у вкатунов? Уже лет 5 пишу на c# + wpf, заебало, перспектив нет, денег нет, хочу в бэк. Думал про шарповый бэк, раз уж один хуй с ним работаю, но там такая мешанина в технологиях, что даже просто понять что учить тяжело, жаба как-то более приятно выглядит в этом плане. Думаю года полтора учиться и пробовать устраиваться хоть куда за опытом. Может даже говнокурс купить, чтобы потраченные деньги мотивировали не бросать, а то после работы ЕЩЁ в коде копаться будет тяжко, уже осознаю.
>>3166524 Я покупаю мотивационный пинок под зад в виде сожаления от потраченных денег, ну и чтобы моё говно иногда ревьюверы смотрели. Хотя я пока не уверен, стоит ли оно того, может просто пива купить себе на эти деньги для мотивации.
>>3166551 >Про swift не думал Ты про разработку под ось? Как-то последние пару лет это всё выглядит довольно мёртвым. Пробовал ведро ковырять немного, но так.
>Аналогично, смотришь какие инсталляции JDK есть. Нужно чтобы твоя JDK была первой. Если нет, то переопредели JAVA_HOME и JDK_HOME на твою JDK. Что значит "Нужно чтобы твоя JDK была первой"?
>>3167040 Причём мавен централ был последним из крупных репозиториев что держались. Все остальные лет 5 назад тоже прошли пик и сейчас в них публикуются единицы.
>>3166811 >C: ... \bin\mvn >C: ... \bin\mvn.cmd Самое важное, ты как раз и обрезал. Молодец. Если там путь к твоей инсталляции мавена, то ок.
>C:\Windows\java.exe Если ещё не сделал, то установи JDK в какую нибудь свою папку и пропиши путь в JAVA_HOME и JDK_HOME и добавить %JAVA_HOME%\bin первым в PATH.
>>3166499 >мешанина в технологиях, что даже просто понять что учить тяжело, жаба как-то более приятно выглядит в этом плане Толсто. Мне казалось у майков вполне себе определенный стек который везде и используется, разве нет? А вот в джава мире как раз настоящий зоопарк из технологий, что ты можешь пройти через 3 проекта и на каждом из общего будет только джава, а все остальное первый раз в жизни будешь видеть
>>3167631 Причем тут фреймворк вообще Я про все остальное что для разработки нужно, или по-твоему в вакансиях просто так стек состоит из 20-30 наименований всякой хуеты?
>>3166533 >>мотивационный пинок под зад в виде сожаления от потраченных денег Это наеб гоев, далеко не всех это мотивирует. Скорее будет наоборот - ты заплатил, а значит можно расслабиться, щас за тебя все изучат и на жесткий диск просто запишут.
>>иногда ревьюверы смотрели В целом там банальные советы с примесью вкусовщины. Если денег дохуя - мб есть польза.
>>3167614 >>на каждом из общего будет только джава, а все остальное первый раз в жизни будешь видеть Максимум что отличаться будет - кролик вместо кафки, жук вместо хибернейта и гуава вместо апач комонс. Бывают конечно говноеды кто вместо спринга свой велосипед изобретает или привет из 2007 передает, но я лично таких не видел.
>>3167631 >>спрингокультом Как будто что то плохое. Без спринга и джава нахуй не нужна.
>>3167644 >>в вакансиях просто так стек состоит из 20-30 наименований всякой хуеты? Я там регулярно в вакансиях на мидла-сеньку вижу гит.
Есть вопрос. Вот есть те кто крутят опыт, и условно с 0 днями реального опыта чудом наебывают всех и проходят собес на вакансию куда требовалось 3-4 года опыта. А что эти люди дальше делают, чтобы их не выкинули на мороз через пару недель? Ведь даже конченный дебил заметит что чел не проработал ни дня в своей жизни когда он начнет выполнять(не выполнять) таски. Или делать таску на 4 часа неделями.
обобщения и интерфейсы
Аноним24/05/24 Птн 14:24:06№3167781213
Можно ли при создании обобщенного класса потребовать, чтобы сырой тип имплементировал интерфейс? К примеру public class C1<T implements countable>{...}?
При попытке такое сделать, javac стал ругаться на такое.
>>3167708 Думаю, смотря куда попадет. Бывают конторы, где онбординг длится месяцами и на испыталку никакой вменяемой программы нет. А бывает, что с первых дней ебут и требуют результата.
>>3167664 >Максимум что отличаться будет - кролик вместо кафки, жук вместо хибернейта и гуава вместо апач комонс. Толстишь, либо ты без реального опыта.
За последние 7 месяцев я подключался к 4 разным проектам в разных компаниях (я руковожу несколькими аутсорс командами и иногда приходится закрывать дыры своим жирным телом), на одном проекте был quarkus, на другом - спринг (без сапога), на третьем вообще использовали ебучий vert.x столетней давности с ебучим груви в качестве dsl. И все это в достаточно крупных компаниях с "налаженными стандартами разработки".
Все проекты были относительно новыми (максимум 2 года хуете на груви)
>>3167851 >>quarkus, на другом - спринг (без сапога), на третьем вообще использовали ебучий vert.x столетней давности с ебучим груви в качестве dsl Это я и записал в велосипеды и легаси.
>>3167851 То что ты такой хет трик собрал, говорит лишь о твоей удачливости. Не проецируй на экосистему.
Да и как будто что то плохое. Каждое из вышеперечисленного решало либо решает свои задачи в свое время. Наоборот хорошо, что экосистема не схлапывается в спринговую сингулярность где бы она окончательно подохла. Ты инжернер или крудошлеп, в конце то концов? Если первое, работа с экосистемой для тебя не должна быть проблемой.
>>3167644 >Я про все остальное что для разработки нужно, или по-твоему в вакансиях просто так стек состоит из 20-30 наименований всякой хуеты?
>>3167964 Насколько я могу понять, тут имеется ввиду, что при использовании final подавляется исключение вазыванное при чтении файла, на исключении при close. В try-with-resource все наоборот. Вообще, можно просто декомпилировать то, что оно генерит. >>3167969 По идее просто выбросится это исключкение и усе.
>>3168186 > По идее просто выбросится это исключкение и усе. А не может быть такого, что у меня объект сложный autoclosable, я в конструкторе много всего наоткрывал, но все равно в какой то момент получил исключение? Что тогда? Или это я долбоеб и так писать нельзя? Но если все же напишу, что будет? Спасибо
>>3168197 Так он все равно теоретически нихуя не сделает, поскольку объект даже сфомроваться не смог. Это конечная считай. Тем более у тебя перед глазами код. >Или это я долбоеб и так писать нельзя? Честно без понятия, никогда не приходилось писать такую ебань. По идее ты сам как-то должен обеспечить закрытие при исключительной ситуации. Ну или как варик использовать finalize. Но это такоое.
>>3168211 >Так он все равно теоретически нихуя не сделает, поскольку объект даже сфомроваться не смог. Это конечная считай. >Тем более у тебя перед глазами код. Ну что то же в конструкторе выделилось? Оно будет ждать теперь пока его гц прибьет?
>>3167614 >у майков вполне себе определенный стек Нет. Там хватает говна типа blazor, всяких razor pages плюс есть asp.net core, а есть просто asp.net, а ещё asp.net mvc, плюс entity framework есть обычный, а есть опять-таки core. Говнища там накопилось уже просто уйма.
>>3168197 >А не может быть такого, что у меня объект сложный autoclosable, я в конструкторе много всего наоткрывал, но все равно в какой то момент получил исключение? Что тогда? Или это я долбоеб и так писать нельзя? Но если все же напишу, что будет? Если у объекта несколько ресурсов, то понятно что может быть ситуация когда ты первый создал, а второй сфейлился. И тогда создание объекта не пройдет, потому что вылетит эксепшн, но первый ресурс уже создан и не будет закрыт. В принципе так делать можно, но тогда надо аккуратно работать с ресурсами, чтобы ничего не забыть закрыть. https://pastebin.com/Hn4kgk1n
>>3168221 >Оно будет ждать теперь пока его гц прибьет? Ну обычно ресурсы выделяет ос. Тут ситуация примерно как с дедлоком. Даа, гц может убить все нахер, но не будет этого делать. Это все на плечах разраба, жвм тут не вмешивается. Так что в итоге у тебя будет висеть ресрус, пока его не заберет хозяин или жвм остановится.
Пробую снова вкатиться DZHAVA RAZRABOTCHIKOM, хоть уже и потерял надежду, потому что мамка вот-вот погонит нахуй. Ваше мнение? Начался ласковый хаир и у меня получится? Или как всегда хр увидят инцела на фотке и прожмут отказ?
>>3168456 > Пробую снова вкатиться DZHAVA RAZRABOTCHIKOM, хоть уже и потерял надежду, потому что мамка вот-вот погонит нахуй. Немного двусмысленно получилось: вкатываюсь потому что мамка погонит нахуй, а не потерял надежду поэтому.
>>3163849 Выучиться реально, найти работу нет. Джунов сейчас ебут на уровень мидла, только крутить опыт и прорываться через пулеметные заграждения. Иначе есть шанс искать работу за 40к/мес полгода с лишним
>>3168558 >Я 4 года программирую уже Ну я где-то 6-7 уже. И че это меняет, лол? Ты реально ни одной книги не прочел? Типа ты ставишь себя не просто на уровень условных кнута, гетца, а выше, хули мне этих дебилов читать, я ж 4 хода пограмирую, ууу. Пиздец. >Меня не берут из-за того, что я инцел. Ты рофлишь? Да-да именно поэтому.
>>3168594 > Ну я где-то 6-7 уже. И че это меняет, лол? Ты реально ни одной книги не прочел? Типа ты ставишь себя не просто на уровень условных кнута, гетца, а выше, хули мне этих дебилов читать, я ж 4 хода пограмирую, ууу. > Пиздец. Я думал ты имел в виду базовые книжки по синтаксису типо шилдта. На самом деле я и более продвинутые книги тоже не то чтобы много читал (хоть и читал), но тут потому что времени мало просто у меня.
>>3168029 >Наоборот хорошо, что экосистема не схлапывается в спринговую сингулярность где бы она окончательно подохла. Дак я тоже так считаю, местные аутисты дезинформируют.
>>3169098 Я лет 5 назад почти так и сделал. Первые полтора года работал за 70к (стартово было 30к, потом немного повышали), потом устроился на 250. Еще через год 350. Но у меня профильная вышка.
>>3169094 Около года на срр, года 4 суммарно на джс и тайпскрипте, немного на питоне, на котлине, на си, прорабатывал го чтобы узнать что же там такого хорошего в отличии от джавы, сейчас смотрю зиг. По инфраструктуре, скорости компиляции, объему библиотек, производительности разработчика и даже скорости джава топ язык. Сейчас особенно плотно приходится работать с срр и это пиздец, ебля с билдами, мейк файлами, тулчейнами, заголовками, миллионом конструкторов на каждый чих.
>>3169137 А смысл? Раст, как и функциональщина - это чисто интеллектуальный онанизм, а я в основном смотрю на яп как инструмент для решения реальных задач. У раста была интересная идея в теории, но они скатились до такой сложности, что банальный срр с умными указателями проще и быстрее разрабатывать, да он ещё и распространён несоизмеримо больше. А уж о скорости билдов раста ходят легенды. Функциональщина - я вообще не встречал проектов, где бы она ускорила или упростила разработку, или решала бы задачи которые императивные языки решить её могут.
>>3169137 >И с котлином интересно, говорят же это прокачанная жаба, чем тебе не зашло? У котлина тоже была интересная идея в теории, но в реальности язык получился настолько гибким, что каждый стремится как можно больше его изогнуть, что выливается в часто не читаемое месиво. Например он исповедует заповедь что наследование это плохо, везде нужно делать делегирование. В результате там где в джаве были классы с абстрактным функционалом - там файлы, с набором разрозненных функций -делегатов и это типа другое. Плюс к тому очень неопределённо работает с примитивами джавы, а это основной инструмент высокоскоростных оптимизаций.
>>3169156 >интеллектуальный онанизм Типа, а в чем минус? Мы же не макаки крудошлепы... >но они скатились до такой сложности Нууу, как бы сказать. Jmm сложнее. >решала бы задачи которые императивные языки решить её могут. Што... Все языки тьюринг полные, следовательно любая задача решаемая на одном, решаема на всех. Не оч понял, че ты хочешь вообще. В любом случае, вот смотрю я на пик, и что-то мне это напоминает. >>3169166 >там файлы, с набором разрозненных функций Пххпхпх, все ближе к процедурному.
О,насчет примитивов согласен. Очень хуевое решение. Мне вот котлинисты каждый раз доказывают, что это плюс, а как по мне оч сомнительная хуйня.
>>3169168 >Нууу, как бы сказать. Jmm сложнее Нет, даже близко нет. Тем более тебе эту сложность часто не нужно использовать, чтобы решить бизнес задачу.
>>3169168 >Што... Все языки тьюринг полные, следовательно любая задача решаемая на одном, решаема на всех. Не оч понял, че ты хочешь вообще. В любом случае, вот смотрю я на пик, и что-то мне это напоминает. Да, все языки, но на джаве мне нужно следить за мусором, это не смертельно, разработка идёт быстрее. У меня быстрые билды. У меня идеальный тулинг в отличии от многих других языков, достаточно хорошая система типов, чтобы проект не грохнулся случайно. Мне не нужно знать на какой платформе, с какой ос и тулчейном Лонг занимает 32 бита, а с какой 16. Все это ускоряет и облегчает разработку. По совокупности этих факторов джава и выигрывает
>>3169174 Можит я шизик в этом плане, но мне прям понравилась 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.
В общем, покажи что ж там такого сложного в расте. Я смотрел лекции по лямда исчислению, такого пиздеца там тоже нет. По крайней мере объяснений в разы больше, поскольку такое чувство, что жмм разбирают полтора шиза максимум.
> часто не нужно использовать Ну я могу повернуть этот аргумент и в сторону раста. Мол проста не пользуйся. И все. Цикла на все хватит. >>3169194 В фп языках тоже не надо следить за памятью. Ну тулинг вероятно лучше у жабы. Да и зачем пиздить адаптировать фп фичи-то, раз жаба и так идеальна?
>>3169168 >тьюринг полные Как же школота заебала разбрасываться фразами и словами значение которых не понимает. Тьюринг-полный = способный произвести любое вычисление.
Тьюринг-полный != способный выполнить любую задачу. Тьюринг-полный != способный произвести любое вычисление удобным образом. Тьюринг-полный != имеющий свободную лицензию. Тьюринг-полный != предрасположенный к написанию производительного кода. Ну и напоследок ни один вычислитель в реальном мире не является тьюринг-полным.
>>3169199 >В общем, покажи что ж там такого сложного в расте. Боров чекер уже мемом стал, с ним каждый воюет вместо того чтобы программу писать. Цветные функции, макросы и т.д., все это хорошо изложено в статье https://loglog.games/blog/leaving-rust-gamedev/
>>3169199 >В общем на пике это требование Насколько я понимаю это просто требование, что порядок операций должен соблюдать только в группах связанных между собой операций, а эти группы можно между собой переставлять
>>3169261 Я не утверждал ничего из этого. >>3169279 Лол, даже на расте есть геймдев, а на жабе нет. Проблема статьи в том, что мне непонятна большая ее часть. Впрочем даже начальные тезисы, "ррря мне не дают говнокодить, я жи честно честно все потом заменю". Ну странные короче. Мне например кажется, что наоборот чем больше проблем выявляется еще на этапе компиляции тем лучше. Не всем нравится падающий прод от npe. Да и это не совсем про сложность, а скорее про дрочь, заебность. Ну кмк другой аспект, вот. >>3169287 На пике 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 показывают пример того, что каузальность вообще говоря гарантирует.
В принципе это и правда нужно в прям в очееень малом количестве кейсов, примерно тогда, когда хочешь сделать гонку данных, которая ничего не сломает.
>>3169297 > Все языки тьюринг полные, следовательно любая задача решаемая на одном, решаема на всех. > Тьюринг-полный != способный выполнить любую задачу. > Я не утверждал ничего из этого. Ты даун?
> Лол, даже на расте есть геймдев, а на жабе нет. >libgdx (куча игр (https://libgdx.com/showcase/), в т.ч. mindustry, unciv) >minecraft >project zomboid >всё что я не вспомнил Ты даун?
>>3167782 А это будет означать "класс, имплементирующий Comparable", или "класс, имплементирующий расширенный Comparable"? Интерфейсы же тоже можно расширять. Если первое, то как-то нихуя не интуитивно
>>3169313 Ну прочитай не через жопу блять, боже. У меня четко написано, что не существует задачи, которая решается только на одном из них, а не то, что любая задача решается. Формально пик1 у меня, пик2 у тебя.
Это крайне малые исключения. Типа этот ебаный майнкрафт всегда вспоминают. Так-то на жабе даже движков уровня ue/unity нет. Все сам, с нуля делай епты.
>>3169335 Это будет означать, что в иерархии наследования существует компарабл. Мол апкаст до него вообще возможен. Плюс внутри Comparable есть рукурсия на него же, направленная вниз. Типа может быть указан любой G, такой что G <: T. >Если первое, то как-то нихуя не интуитивно Женерики никогда и не были интуитивны, лол.
>>3169351 >Так-то на жабе даже движков уровня ue/unity нет. Все сам, с нуля делай епты. >>3169297 >Лол, даже на расте есть геймдев, а на жабе нет. Джава есть много где как язык скриптования, но есть и отдельные движки только на джаве, уровня ue/unity, это JmonkeyEngine, даже с интеграцией в идею
>>3169470 >JmonkeyEngine Ты уверен? Типа у unity/ue огромное сообщество и куча ассетов как следствие. Даже когда юнити сделали хуйню с оплатой за скачивание вспоминали все что угодно, какой-то годот еще какую-то хуйню, но не этот движок. Так-то там вот сверху приводили пример в виде libGDX, даже он как-то выйгрышнее смотрится. Правда он >libGDX is a cross-platform Java game development framework
Честно, я бы и сам жабу не стал использовать для игр, хотя я ее и хорошо знаю.
>>3169351 >Ну прочитай не через жопу блять, боже. У меня четко написано, что не существует задачи, которая решается только на одном из них, а не то, что любая задача решается. Опущенное, и это тоже из тьюринг полноты не следует. Закрыл бы свою гнилую пасть, позорился бы меньше, どづ☆~.
>>3169758 Там буквально та же формулировка используется. Любая функция вычислимая где-то, также вычислима и на этой системе. Для начала, тебе бы следовало спросить, что я понимаю под задачей. Но так ты тупой скуф, которому лишь бы самоутвердится, ты сразу начал накидывать говна, притом аргументы: ЯСКОЗАЛ!!!. Ахуенно продолжай дальше, я пожалуй тебя буду игнорить. Щас бы перед свиньями бисер метать.
>>3170269 Рекурсия на уровне лямбд. Типа ты же не можешь такое написать Function<Integer, Double> fact = x -> x == 0 ? 1 : x * apply(x-1);
Вот для этого типа универсальный метод fix. Правда это нахуй не нужно, но по крайней мере вывод типов в этом случае тоже интересен. Типа тут же не указывается достаточно сложный тип для метода, а все за лямбдами скрыто. Мб где-то использовать можно, хм
>>3170281 Я не понимаю, вас это реально за живое что ли задело? Ну вроде что-то есть https://gamedev.rs/ . Даже если сейчас мало, есть тенденция, что растодебилы занимают ниши cpp.
Ну и проблема в том, что я в общем не слежу за играми. Так похуй, не представляешь. Мне просто скинули статью, где нытье геймдевелопера, ну я это и отметил, грубовато немного, да.
>>3170291 >Я не понимаю, вас это реально за живое что ли задело?
Не выкай мне тут, хуесос, ничтожество блять. Если тебе "так похуй", нехуй было и ебала своего гнилого раскрывать. Заходишь в тред на чиле, а там очередной даун душнит и демагога из себя строит. Чтоб ты сдох, пидор.
>>3170300 Пакажи, что ты имеешь ввиду. Думается мне, что в таком случае смысл лямбды вовсе пропадает. Еще мне немного не нравится замусоривать скоуп статическими helper методами. Сразу вот apache commons всопиминается.
>>3170305 >Думается мне, что в таком случае смысл лямбды вовсе пропадает.
Думается мне что ты вкладываешь какой то свой, аффтарский, особый смысл в лямбды, который я не выкупаю (заморачиваешься, проще говоря). Я в этом плане более приземленный, поэтому даже пытаться не буду оспаривать изысканные вкусы месье (чилю, ИДЕху открывать влом). Думаю ты и так все понял, на словах, что я имел ввиду.
>Еще мне немного не нравится замусоривать скоуп статическими helper методами
Сказал чел, у которого скоуп "замусорен" статическим хелпер-методом fix. Так то я факториал твой в статику вынести предложил. Дай имя функции - не придется трахаться с тем, откуда литерал брать для рекурсии. Не все в мире обязано быть лямбдой.
>>3170312 > Дай имя функции - не придется трахаться с тем, откуда литерал брать для рекурсии
Причем то же самое можно было сделать и в твоей GHCi-сессии. Я мож и хаскелит-любитель, коммерческого попыта в хаскеле не имею, но тупо не могу себе представить что хаскелиты так делают в проде зачем то.
>>3170320 Хотя ок, гугл говорит что каноничный способ делать рекурсию в хаскелевых лямбдах - это fixpoint, который суть то же самое. Вопрос "нахуя так жить", впрочем, по прежнему актуален (не говоря уже о том, нахера это тащить в джаву).
Ладно - может у челика интерес академический. Пусть уж лучше упарывается в тяжелые функциональные концепции, нежели тупостью в треде троллит.
>>3170320 >>3170312 Ну не то чтобы я вообще напираю на такое использование, сразу обозначил, что это нахер не надо, как и рекурсия сама по себе. И в хаскеле действительно такое излишне.
Просто интересно в плане реализации и всяких разных подводных камней. >>3170323 Как я думаю, просто хотели отделить анонимный класс от лямбд. Например благодаря этому, компилятор может выбросить identity лямбд, типа value type сделать, их статическую ссылку this. В общем достаточно сильно так изголятся над ними. >>3170327 Это канонический способ для нетепизированного лямбда исчисления. В хаскеле даже написание комбинатора омега маленькая сложная задача.
>>3170428 >Какие подводные? А какие ожидаешь? Изучаешь спринг бут, жюнит и архитектурные бест практис в рамках приложения и готов к 90% проектов на жабе.
>>3170458 >Хочу, чтобы не было 1С Мне лишь пару раз приходилось колхозить форматтер чтобы 1с мог файл скушать.
>Что у вас по легаси? Приятное, терпимое или кал мочи? У всех свой, я работал со всяким. Из последнего неприятного - генерация различных огромных xml и пытаться подружить старые библиотеки с новыми спрингами. В целом наибольшая проблема легаси - миграция на современные рантаймы и фреймворки, а также устранение уязвимостей посредством обновление транзитивных зависимостей и тд. Муторно, трудозатратно и без хорошего е2е тестирования не предугадаешь в какой момент что-то где-то может отъебнуть.
Но в целом, тулинг в жабе достаточно продвинутый чтобы находить проблемы даже до компиляции.
>За советы по изучению спасибо, примерно так себе и представлял, за исключением жюнит. Насколько я помню весь пхп обмазан ОРМ. В жабе основной ОРМ - хибернейт, собственно, тоже обязателен к изучению, но сразу скажу, хорошо знать и понимать хибернейт - сложно, долго и редко когда полезно (кроме собеседований).
>>3170694 В этом плане тебе джава понравится тк тут в 99% вообще не будет хтмл страничек,если фронт и будет то им будет заниматься отдельная команда которая будет у тебя джейсончики забирать и самостоятельно отрисовывать. Я вообще ни разу с фронтами не работал,все проекты были частью большой цепочки в датафлоу(банки,связь) и там просто байтики гоняешь
Сап, аноны. Помогите разобраться, почему в vs code ебется кодировка кириллицы. На python норм, а с java проблемс. Пробовал сохранять с перекодировкой на windows 1251, но все равно не работает.
>>3171107 Это не джава, это у тебя скорее всего терминал барагозит. Обычно это лечится выставлением chcp 65001 в оном, но где это настраивается в вскоде - сам ищи.
>>3171107 Жава на шindoшs - это полная хуита. Я когда пытался натянуть свой пет-проект на чуть не поседел. Кодировка обоссаная ср1251, разделители пути другие и даже ебанные символы новой строки и то другие. Какой-то рахит из 60х придумал \r\n. Просто ад ебанный. Как вы там блять живете в этом ебанизме?
>>3171217 Он вроде pathSeparator назывался. Все равно это хуита. Джава придумывалась для больших и дорогих пультов для телика рабочих станций и серверов на UNIX.
>>3171215 хм? что ты имеешь ввиду? статический метод создаётся в виртуальной таблице методов и использует свое имя для рекурсии. тут ни того, ни другого....
ну и еще я подумал, сверху к прикольному сабтайпингу, здесь ленивость используется. тоже необычное
>>3171324 >статический метод создаётся в виртуальной таблице методов
Какая нахрен vtable - ты тредом с плюсовиками чтоли ошибся?
Да и нахера статическому методу быть в vtable в теории? Он тупо к конкретному классу приколочен, ни в каком динамическом связывании участия не принимает. Даже вызов его в опкодах - это invokestatic, а не invokevirtual или invokeinterface.
>>3171324 >статический метод создаётся в виртуальной таблице методов В джаве виртуальная таблица только для вызовов через интерфейс, остальное либо невиртуализируется, либо как стат метод, вообще не идет через втэйбл
>>3171371 >>3171379 Тут согласен, ошибся. Соре.. >>3171371 >зато invokedynamicа Ну вот видишь, совсем друхое!!! > с метафакторёй хватает А ты шаришь как енто работает? Расскажешь..?
>>3171379 >В джаве виртуальная таблица только для вызовов через интерфейс, остальное либо невиртуализируется, либо как стат метод, вообще не идет через втэйбл А что делает invokevirtual?
Хочу купить себе книгу по джаве. Какую посоветуете, чтобы там была описана методология разработки на джаве? Ближайший пример из мира C++ - Брюс Эккель, ФИлософия C++
>>3171391 Это вызов через цепочку иерархии, но если иерархии нет, то лукапа через втэйбл не будет, да даже если есть, джава просто девиртуализирует это
>>3171942 Она нужна для создания магии. Каждый уважающий себя спрингоколдун должен понимать, как работают его спеллы. К примеру все пользовательские анноташки работают с помощью рефлексии. Хотя например для создания прокси объектов даже рефлексии мало и лезут в байткод..
А какие у тебя проблемы с применением рефлексии вообще? вроде не сложное апи.
Цели и задачи описываются общим термином "метапрограммирование". Это когда у тебя программа, данные которой - твои классы, методы и прочие языковые конструкции.
>Почему на собесах заостряют на ней внимание?
Хороший вопрос. Рефлексия у современных говноделов теперь легальна в продакшен-коде?
>>3171976 Рантайм прокси такая хуйня пиздец просто. Уж лучше изьебнуться и компайл тайм аспектами через аспектЖ сделать то что нужно. Чем в рантайме инструментировать байткод
>>3172366 Разве компайл тайм аспекты покрыают все случаи использования? Тот же мокито использует онли рантайм. Ну и ты подробнее аргументы за и против распиши..
Каа бы я хотел сдирать живьём кожу с детей создателей ебаного мокито, только психически больная мразь могла создать такую поебень. Я бы пиздил их и их детей до тех пор пока они бы не начали ссать кровью и только когда у них начнут отмирать почки я бы посадил их писать ебаные тесты на кафка админ клиент
>>3172450 Ебанутая падаль не в состоянии адекватно вывести в чем ошибка. Метод элементарный,сделать дескрайб топик,взять оттуда количество партиций,если число,переданное в метод отличается от количества партиций вызвать криейт партишнс. Мокаешь все ненужное говно,делаешь верифай криейт таймс 1,эта мразь пишет что у вас разные вызовы и что по факту вызывается и дискрайб и криейт. КОНЕЧНО БЛЯДЬ ОН ВЫЗЫВАЕТСЯ Я ЖЕ ТЕБЕ ЕБАНАТЦЮУ СРАЗУ НАПИСАЛ ВЕРИФАЙ ДИСКРАЙБ ТАЙМС СУКА 1. СТАВИШЬ БЛЯДЬ ВЕРИФАЙ КРИЕЙТ ЕНИ И СУКА СРАЗУ ЖЕ ПРОХОДИТ МРААААААВАЗИ КАК ЖЕ Я НЕНАВИЖУ ЭТО ЕБАНОЕ ГОВНО
>>3171837 >джава просто девиртуализирует это Не джава, а джит, и то это спекулятивная оптимизация которая далеко не всегда срабатывает. Достаточно хоть иногда вместо ArrayList передавать PersistentList, чтобы джит даже не пытался девиртуализировать.
Какова вероятность залететь на работку без профильного образования, но с рекомендацией от копании и опытом работы? Вопрос очень важный - с универа слетаю, вышка точно не светит.
>>3172412 мокито использует рантайм потому что у него нет другого способа кроме создания проксей на уже собраные классы. для компайлтайм нужны же исходники.
>>3172511 >Ну так не передавай Склеротик, речь идёт о том что >>3171379 >В джаве виртуальная таблица только для вызовов через интерфейс, остальное либо невиртуализируется, либо как стат метод, вообще не идет через втэйбл Пиздежь.
В джаве виртуальные методы на каждом шагу. Что-то джит сможет оптимизировать, а что-то нет.
>>3173183 Ну имхо, все что выходит за рамки жабы у жидбрейнсов не такое продвинутое, потому вполне можно найти что-то и лучше. И вообще, это тема софтача(/s/), разве нет?
К слову, найти бы софтик для анализа женериков. А то идея в какой-то момент просто ломается и хуйню несет. Я видел алгос для этого, мб плагин запилить.. Так-то полезно по идее.
>>3173203 >И вообще, это тема софтача(/s/), разве нет? Это прямой инструмент разработчика, это как если художника с выбором кистей отправить в раздел плотников. Но спасибо за инфу.
добавил 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 не исчезла, зависимости не качаются
>>3174303 Бля, это троллинг какой-то нахуй. Как так нахуй? У меня не было проблем когда я ставил, там просто физически нельзя быть настолько криворуким чтобы так долго ставить и с таким количеством проблем.
>>3174210 Конечно, ведь обычный пк-васян будет разбираться в ИДЕешке, это же софт, а еще компилятор это тоже софт и то что ты написал в коде, блин, тоже становится софтом.
>>3174303 >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 подключения к локалхосту заблочены админом. Если это так - тогда нет пути, мавен с идее не сынтегрировать
>>3174799 Вероятно чтобы всякая виROOсня не сканила порты или чтобы не пыталась подконнектиться и абузить существующие стандартные сервера в виде, кто знает. Спроси админа.
Поясните за правило использовать только существительные в названии классов. Всегда ли стоит ему следовать?
Например, у меня есть окно "Подтверждения покупки" и окно "Подтверждения бесплатной смены имени". Я бы хотел назвать их просто: - ConfirmPurchaseWindow - ConfirmFreeNameChangeWindow
Но если следовать правилу, то нужно писать: - PurchaseConfirmationWindow - FreeNameChangeConfirmationWindow
Что уже, вроде бы, не так хорошо читаемо, как первый вариант.
>>3175293 Правила по отдельности не работают, надо смотреть на весь гайдлайн в целом. В самом по себе правиле "существительное имя класса" не вижу ничего крамольного. Я б его дополнил еще запретом называть классы именами паттернов. Ненавижу имена в стиле AbstractSingletonBeanFactoryOfUserService.
Если тебя тянет назвать их глаголами, возможно твои классы имплементируют какой нить функциональный интерфейс и сама кодовая база довлеет в сторону ФП. Тоже имеет место на жизнь.
>>3175544 Есть вообще идеи, что бы такого поимплементить, чтобы напрямую применять эту вашу многопоточку, а не просто читать и какие-то примерчики запускать? Мне в голову приходит только кастомная имплементация контейнера сервлетов какого-нибудь.
>>3175625 Он и сюда добрался, боже... >>3175582 Нуу.. Я имплементил кастомный синхронизатор, его суть в том, что он работает как sleep, но там не время, а тики, ну и генератор есть. Есть те, кто к этому генератору подключаются слушателями в некотором роде. У них есть возможность резервировать некоторое количество тиков. Если хотя бы один слушатель не зарезервировал тики, генератор стоит. Еще делал генератор чисел фибоначчи, но когда там два AtomicReference. MergeSort, transfer типа банковский, еще помню интересную задачку, мол вот есть три треда, ну и они имеют имена A, B, C. Тебе надо сделать так, чтобы они последовательно выводили что-то подобное ABCABCABCABC... Ну это все искусственные задачи в какой-то степени... Реальные же обычно с транзакциями связаны, это друхое. Ну вот, по идее можно попробовать сделать паралельную имплементацию игры life. В контейнере серврелетов хз че сложного по многопоточке.. Знай себе создавай треды для каждого запроса и усе.
>>3175643 > кастомный синхронизатор, его суть в том, что он работает как sleep, но там не время, а тики, ну и генератор есть. Есть те, кто к этому генератору подключаются слушателями в некотором роде. У них есть возможность резервировать некоторое количество тиков. Если хотя бы один слушатель не зарезервировал тики, генератор стоит. Звучит интересно, хотя и абсолютно абстрактно для меня. > есть три треда, ну и они имеют имена A, B, C. Тебе надо сделать так, чтобы они последовательно выводили что-то подобное ABCABCABCABC... Ну я похожее делал, только там у существа было 2-3-4... n ног, и надо было сделать так, чтобы ноги по-очереди ходили. > В контейнере серврелетов хз че сложного по многопоточке.. Знай себе создавай треды для каждого запроса и усе. Блин, в принципе ты прав. С многопоточкой там ничего сложного по сути нет. Короче возьму доки, мб какую книгу по конкуренси (мб есть рекомендации какие?), да буду ковыряться, походу действия должны идеи появиться.
>>3175664 Благодарю. >>3175668 Делал через реентрант локи и кондишн. Конкретно имплементации не помню, но там было что типа первая нога сделала шаг, сообщила остальным, стала, дальше вторая походила, сообщила и т.д.
>>3173851 Просто и без задней мысли берешь и делаешь круд на спринге и попутно изучаешь все что для этого надо. С докером. Выкладываешь на что там у вас не заблокировано вместо гитхаба и ходишь по собесам. Если ты пишешь автотесты - значит ты уже умеешь писать на джаве.
Юнит тесты писать - это надо скиллы иметь. Уметь в самодисциплину, критическое мышление, хорошо уметь код декомпозировать. Это не втупую по гайдам с баэлдунга со стековерфлоу через чатгопоту копипастить... А TDD из-под-палки никогда не работает, тесты на хуевой кодовой базе получаются ригидными и не тестят нихуя, из-за чего у разрабов складывается отторжение ко всей парадигме. Да и продать это кабану непросто.
Сап аноны, дохуя лет работаю автомейшен куа на джаве. Подумываю перекатиться в разработку, т.к. нравится писать код. Есть тут кто с подобным опытом? Че посоветуете? Спринг + хибернейт + скул и перекатываться в кровавый тырпрайз? Или податься в адроид? Базово пробовал писать хеллоуворд аппы доя него. Вообще сам склоняюсь у первому, т.к выглядит как более быстрый путь для переката. Че думаете?
Смотрите короче какая идея для библиотеки. Короче вот например у тебя есть корованы... несколько классов с методами. Ты можешь навесить на них аннотацию, например @Run(1) @Run(2) и это означает, что в рантайме эти методы будут запускаться в заданном порядке! Хз на🌶 это кому-то нужно, но по-моему идея интересная. Что скажете?
>>3176066 Я понимаю, что и там, и там своя рутина. Но мне в автотестинге было особоенно по кайфу пилить тестовые фреймворки - добавлять в них фичи, фиксить баги и т.д. Но все же в основном приходится пилить именно автотесты, а это не интересно. Плюс сейчас такая тенденция, что большинство контор хочет, чтобы один тестер делал и авто, и мануал работу, а это я ебал в рот.
Sup, а project loom уже можно использовать для проектов? Хочу сделать приложение средней сложности и хочу попробовать лум потоки потрогать. Какие подводные? (повторяюсь)
А вот представь - разметил ты такими анноташками сотню методов - от @Run(1) до @Run(100). А потом херак, и понадобилось написать еще один метод, который должен вызываться между пятым и шестым.
>>3176053 Вот так https://pastebin.com/1xbKFKdy >>3176422 Это шутка вообще, которая звучала года пол назад в жаба же треде. Но тем не менее, если в языке няшный паттерн матчинг, то имхо он нагляднее/декларативнее чем ифы.
>>3176408 можно изначально нумеровать ака хибер, ну т.е 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, что плюс мб. мнение?
>>3177094 >можно изначально нумеровать ака хибер, ну т.е 0,50,100,150...
Можно. Но зачем?
Если бы у тебя эта сотня вызовов шла друг за дружкой в одной процедуре, те и думать бы над этой дилеммой не пришлось - жмакнул бы энтер в нужной строчке и вписал бы туда метод.
И читать такую цепочку гораздо проще - взглянул и понял что за чем в каком порядке вызывается. А так тебе придется облазить сто классов и у каждого эту анноташку посмотреть.
Не уподобляйся аннотациодаунам - лишь узкий класс задач действительно требует решения через аннотации. Большинство задач решается без аннотаций гораздо проще и очевиднее, чем с ними.
>>3177204 Мм, ну я не хотел придумывать, то куда эту залупу применить, просто задачу решал... Так-то если подумать, то похожее есть в filterchain order spring security. Типа порядок фильтров задаём.
Ну вот как раз какая то постная 🌶ня того же уровня мотивации. Оно не вызывает неприязнь только за счет того, что редко когда этих фильтров на практике бывает много, да и обьявляются они обычно в одном модуле конфигурации (не размазываются по сорцам).
>>3177265 Ладно.. можно взять что-то безобидное, типа порядок того, как будут запускаться тесты в мокито. тип от базовых случаев, к каким-то special case.
В общем-то, мне прост интересно мнение, по поводу моего решения.. А ну не область его примения
>>3177269 Всмысле - тесты в мокито. Мокито это мокито, тесты это тесты. Ты может имел ввиду порядок запуска тестов в тестсьюте? А чем не устраивает натуральный порядок методов в классе?
>В общем-то, мне прост интересно мнение, по поводу моего решения.. А ну не область его примения
Ну я б не купил. Оно интересно разве что в виде академического пета-этюда, если ты хошь опробовать на чем нить написание annotation-processorов.
>>3176168 1. В очередной раз пол конференции рассказывали как новые 6-месячные релизы это заебись и как мы тольковыиграли 2. Рассказали как догнали и перегнали америкупетухон, петушарп, петухлин и пидораст
Ну и вроде всё.
java и потоки в native
Аноним02/06/24 Вск 11:32:35№3177524455
Допустим, был вызван native метод, который создал два потока и завершился, передав управление jvm. 1) будут ли работать те два новых потока? 2) можно ли будет управлять этими потоками, если предварительно сохранить дескрипторы созданных потоков, через вновь вызванный native метод? 3) если в нативе malloc'ом или оператором new взять кусок памяти, можно ли будет его использовать при следующем вызове native, если сохранить адрес и не освобождать этот кусок памяти?
>>3177524 Опять вопросы от непонимания принципа работы нативов. Когда ты стартуешь натив, управление переходит, как ни странно, нативному коду. Буквально то же что и запустить нативную программу.
>>3177524 1. Будут конечно же. Для ос это такие же потоки, как и все остальные, а JVM про них вообще ничего не знает. 2. Да можно, точно так же как и любым нативным потоком. 3. Да можно.
Можно ли где нибудь посмотреть проекты на Java и их стоимость? Интересно сколько стоит разработка архитектуры для проектов разных масштабов, а также собственно стоимость кодинга
Вопрос мб не по теме но щас работаю программистом в офисе 5/2 с 9 до 18. Как мне с таким графиком проходить собесы чтобы сменить работу? Уволиться и искать не подойдёт потому что IT отсрочка от армии.
>>3179475 Это главная концепция, вокруг которой крутиться выскоуровневая жаба синхронизация. В чем ноль содержания, лол? Причем это ускользание, реально очень много проблем может принести. Если например случайно утечет this ссылка во время конструирования иммутабельного объекта, то весь поток, получивший эту саму ссылку, всегда будет получать какую-то чушь, а не данные из него. Тут тоже самое, если ты кому-то просто отдал мутабельный объект, то считай крест поставил на синхронизации. Технически, ты должен передовать не просто объект, а право владения им. В том же расте это выведено на уровень семантики, в жабе же, ну довольствуемся хотя бы возможностью. Еще это называется acquire/release.
>>3179715 >Это главная концепция, вокруг которой крутиться выскоуровневая жаба синхронизация. Вот только фрагмент из книги, ни разу ни про синхронизацию или safe publishing.
>>3179729 У тебя нет гарантии видимости. ввиду того, что hb связи нет. там в 16 главе подробнее про это. >>3179727 ну дальше про нее будет. он про нее почти всю вторую или третью часть 🍑ит.
>>3179774 Можешь заметочки вести. или хайлайты оставлять в пдфке. а ну и перевод на русский очень часто может вводить в заблуждение, проще в этом случае к оригиналу обратиться. А то, то что у нас поток потока программы. у них thread program flow. что у нас блокировка потока, блокированный метод, у них lock thread, block method.
Аноны, мне помощь нужна. Я по работе из .doc делаю .xlsx средствами самого excel. Не то чтобы это было сложно или много времени занимало, но количество документов не маленькое, а руками это делать надоело, еще и нужно что-то докрутить, добавить формул, ну вы поняли. Сам документ,примерно как прикрел, выгружен из какой-то проги, так как приходят в одном виде, разделение идет знаками "|", делать табл. в excel они не будут, а формулы всё еще нужно добавить. Решил делать на java, так как хочу перекочевать на нее. Быть инженером уже не так престижно
Вопросы сразу с ходу, как заменить "|" на перенос в следующий столбец, как добавить формулы, как избавится от шапки на каждой странице и т.д. Может кто-то уже сталкивался с такой работой или может дать больше информации, чем запрос гугла "java преобразовать .doc в excel", буду благодарен. Как всегда, с меня нихуя.
>>3179826 >>3179826 Ну наврядли кто-то тебе больше гугла подскажет. Я сталкивался, но все особенности будут зависеть от структуры твоего документа. А так - бери Apache POI, смотри примеры, пробуй считать. Шапка вобще по-моему сделала бэкграуном, так что она будет как-то отдельно идти.
>как заменить "|" на перенос в следующий столбец Читаешь строку, делаешь "строка".split("|") , получаешь массив из обрезков, проходишься по нему и опять же через апач пои добавляешь в новый столбец.
Вообще чет решил перечитать, про видимость было ровно главой раньше, странно, что чел забыл.
И вот я не понимаю зачем было написано вот эта часть про волатайл. Мало того, что гении на переводчиках перевели should как должность. Так мне еще непонятно, зачем вообще оригинальные авторы вкинули часть про кэши. Это же деталь реализации, нигде не гарантируемая. Я вот ток недавно ее в вузике слушал, в куче видосов видел на многих сайтах оно есть, короче все как попугаи ее повторяют.. Очень надеюсь, что все это аппелирование к железкам вырежут нахуй в будущем издании, оставив только >read of a volatile variable always returns the most recent write by any thread
>>3180258 >read of a volatile variable always returns the most recent write by any thread Что конечно же 🍑жь. volatile не даёт никаких временных гарантий, его гарантии видимости совсем про другое.
>>3179560 >>3179594 У меня в команде ведущий аналитик кстати в рабочее время собесы проходил в офисе в переговорке с рабочего ноута. Так и говорил - на созвоне в 14 меня не будет - у меня собес. Месяц так поискал и свалил.
>>3180511 >Вроде конктретно в этом предложении все норм сформулировали. Нет, volatile дает гарантию что если вы из переменной A считали значение B, то из всех остальных переменных будет считано то, что тред записавший B записал до этого. Т.е. это про видимость изменений, а не про время.
Технически, write/read барьеры работают так, что ты увидишь эти изменения буквально за пару тактов, но JMM не дает таких гарантий.
>>3180719 Ты про eventually visible? https://gee.cs.oswego.edu/dl/html/j9mm.html Вот тут оно есть. Opaque накладывается на Acqure/release, который в свою очередь уже на volatile. Хотя конечно это 🍑ц какой-то, что до сих пор в спеке нет нихуя про эти режимы. Но судя по прогрессу... https://openjdk.org/jeps/188 это будет не скоро.
>>3180727 final дает дополнительные гарантии. Строго говоря, даже большие чем volatile. У тебя же тут просто plain чтение. И вообще, попробуй потестировать тогда, раз не веришь.
>>3180733 В плане? Ты ж его в конструкторе меняешь с дефолт значения на какое-то присовенное. Ну и вот, у тебя вариант прочесть 0 или то, что ты сам пихнул в констркутор.
>>3181202 По спрингу каждый год что-то выходит у oh really. Как и по всему. Но сейчас книги чтают те кто хотят вкатиться, тем кто уже тут нет смысла - все нововведения разжёвываются в блогах , да на медиуме. Да и сама индустрия сейчас хайпует с несколько других вещей.
>>3162241 Ceylon предлагал такое, но язык был убит с подачи разработчиков говнокотлина. Они даже добились удаления видео, в котором говорили об успешном опыте промышленного применения Ceylon.
>>3180725 Нет, я про то, что видимость всегда не равна wall clock. Просто потому, что есть задержки с передачей информации.
Чтобы давать гарантировать вида: - ядро i выполнило write barrier на такте X - ядро j выполнило read barrier на такте X+1 - ядро j прочитало, на такте X+2, данные записанные ядром i
придется останавливать ядра пока данные передаются между кешами, а то и памятью.
Поэтому гарантии имеют вид: если A happened before B, то прочитав из A значение C есть гарантия, что прочитается всё что было до этого. А не в форме как только вы запишите в A, так сразу все потоки это увидят.
В контексте оригинального вопроса: >>3180506 означает, что значение volatile треды видят с некоторой задержкой, но она очень маленькая, на уровне нескольких тактов.
>>3182147 Ну судя по википедии это все таки сум тайп. Ноо как я понял, ты имеешь ввиду, что возможность матчится, ну т.е. определить конструктор без instanceof не обязательна. Понил. >>3182155 >если A happened before B, то прочитав из A значение C есть гарантия, что прочитается всё что было до этого Нуу, ты похоже свойства транизитвности имеешь ввиду. Вообще говоря в спеке действительно нет никакой формулировки по поводу последней записи. Вот есть пик 2 из главы 17.4.7. Вкратце, она говорит, что вот ну если у тебя A hb B, то A никогда не прочитает значение B. А также, не может существовать никакой такой записи между записью и непосредственно чтением. Вот эту вторую часть можно вполне переформулировать в видит последнюю запись. На пике 3 мб более понятное обяснение... >А не в форме как только вы запишите в A, так сразу все потоки это увидят. Имхо, но этого не было в той цитате... Вполне может я конечно жопочтец, не отрицаю.
>>3182175 >Нуу, ты похоже свойства транизитвности имеешь ввиду. Чел! Это не тест Роршаха, тут не надо говорить какие ассоциации у тебя вызывает этот текст, его надо просто прочитать.
Я говорю про одну простую вещь, что все эти happens before, sequential consistency это не про то, что изменения будут сразу, немедленно, в течение N наносекунд видны/записаны в память минуя кэши и прочие городские легенды.
Это всё про то, что если увидел A, то выполняется B. Даже в твоём примере let W(r) be the write observed by r , т.е. это предположение что r увидел некоторые данные дальше из этого следует что-то.
>>3183631 >Это не тест Роршаха (( Я привык уже так общаться. Не обращай внимание, просто считай как маркер, чтобы ты мог скорректировать, если я что-то неправильно понел.. >это не про то, что изменения будут сразу, немедленно, в течение N наносекунд Ну согласен, так и есть. Наверное точнее надо было как-то вот так: >read of a volatile variable always returns the most recent write in synchronization-order by any thread Но кмк сознательно не было упоминаний про эти so/hb, чтобы неофиту мозг не сломать. В общем ладное, разобрались...
>>3183938 Ну съеби нахуй с треда, олигофрен, отлежись в дурке там месяц-два чтобы твои психические заболевания вылечили. Никто тебе не собирается помогать когда ты общаешься как будто у тебя осколок в мозгу.