Q: ЧТО СКАЖЕТЕ ЗА ДЖАВАРАШ? A: Худшая инвестиция в твоей жизни. Огромное количество говнокода, оторванные от жизни задачки, 1000 заданий по выводу в консоль какого-то говна. Сейчас все советуют Hyperskill. Более продуманный план обучения. Но, как и любой %COURSENAME% не гарантирует тебе успешного вката. Выучиться можно и самостоятельно, не отдавая свои кровные васянам-наставникам.
Q: Посоны, собираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом? A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред. Но в последнее время увеличивается количество вакансий на удаленке в связи с ковидом. Но, возможно, как вся эта мракобесия закончится, всех обратно загонят в стойло.
Q: Значит, я должен буду всю жизнь сидеть в опенспейсе, конвертируя XML в эксепшны? Ура, мне подходит! С чего начать? A: Книги: https://libgen.is
Q: Хули все книги на английском? A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: Я не могу в книги. Наткнулся на джавараш, но в самом верхнем вопросе уловил нотки сарказма. С ним все правда плохо? A: В наших тредах постоянно появляются люди, спрашивающие о джавараше. Громко объявляют, что начинают заниматься, задают пару тупых вопросов и куда-то пропадают. Похоже, большинство адекватов бросают джавараш из-за дебильных заданий типа "десять раз скопипасти этот кусок кода и выведи в консоль". Тем не менее, иногда появляются и люди, говорящие что прошли его целиком, и что дальше задания получше. Короче, хочешь - пробуй, первые десять занятий бесплатно же. Но, как минимум, лучше совмещать с обучением по другим источникам. На самом деле ты просто потратишь свое время на какой-то мусор.
Q: Всё это хорошо, но без алгоритмов меня на работу не возьмут. A: Не все конторы дрочат на подход Яндекса который спиздил подход гугла. Но для крупных фирм знать алгоритмы маст хев уже на уровне джуна/трейни, вот курсы от Принстонского университета: https://www.coursera.org/course/algs4partI То же самое но в бумаге: Роберт Седжвик, Кевин Уэйн - Алгоритмы на Java
>>2076278 А зачем? Этот сахарочек мало помогает в написании бизнес-логики. В хеллоуаорлдах на 50 строчек может и приятнее, но в очень большом проекте вообще не чувствуется разница между языками, всё равно всё сводится к клепанию абстракций и вызовам методов.
Как назвать метод, который помечает некоторые айдишники определенным образом, сбрасывает таймер и ставит задачу через некоторое время сделать что-то с этими айдишниками?
>>2077717 > Где сейчас применяется Java? На серверах в энтерпрайзе. > Слышал, что из браузеров Жаву убирают. Если ты про апплеты, которые умерли давным-давно, то они никогда и не были мейнстримом в вебе. Ты, конечно же, не путаешь джаву и джаваскрипт?
>>2077793 Что-то вы меня расстроили. Я сегодня с утра скачал книжку Шилдта и думал сейчас на Java быстренько напишу эмулятор.
>>2077800 Это декстопное приложение. Основа - экран 8 разрядной ЭВМ с возможностью масштабирования в 2-4 раза. Дополнительно можно добавить какие-нибудь кнопки для управления ЭВМ (типа Power/Reset), масштаб и т.п. Дополнительно будет эмуляция накопителя на магнитной ленте для загрузки/выгрузки данных. Тут можно просто сделать классические файлы TAP. Сам эмулятор - это программа, которая выполняет инструкции процессора в виде машинного кода и выполняет их. К примеру, если записать данные в область видеопамяти, то это должно приводить к отображению пикселей на экране программы.
К сожалению, вывод пикселей на современных платформах очень сложная задача, которую почему-то никто не хочет реализовывать. Обычно предлагают вывод примитивов типа точки, линии, окружности, либо сразу 3D-графику с вершинами и полигонами.
>>2077806 > если записать данные в область видеопамяти, то это должно приводить к отображению пикселей на экране программы Это надо какие-то системные ресурсы получать? Ну твоя идея звучит как минимум для какого-то сишарпа, я думаю. А лучше такое на С писать.
>>2077828 В студенческие годы я писал на Borland Pascal и делал ассемблерные вставки для вызова VESA-режимов, в которых отрисовывал по пикселям что мне надо. Прошли годы и на современных платформах оказывается, что для вывода пикселей надо обладать сверхподготовкой. Приехали!
>>2077832 Если это в итоге будет запускаться как прикладная программа поверх ос, то пойдёт вообще любой язык общего назначения, но его сначала нужно будет изучить. Рисовать пиксели можно на canvas, у большинства языков он есть. Или сделать текстовый ввод/вывод через gui библиотеки. Только интерпретатор машинного кода придется изобрести с нуля средствами этого языка. Это же по сути и есть эмуляция, то есть парсить данные твоей магнитной ленты, интерпретировать их по своему средствами языка и выводить на экран. Ну а вообще системные языки никуда не делись. Если там это проще то зачем ебать жабу
>>2077871 В том и дело, что ни каких canvas сейчас нет. Всё это замылено толстым слоем бессмысленных обёрток. И как я выше уже писал, выбор только между примитивами типа кисти/пера и 3D-вершинами/полигонами.
Логику эмулятора написать для меня не проблема. Систему команд процессоров типа Z80 я хорошо знаю, потому что раньше сам на нём программировал.
>>2078021 Он это может и на жсе написать. Чел несколько дней херней страдает вместо того чтобы начать уже писать. Графика в этой задача вообще не проблема. Вместо отрисовки на первом этапе можно просто логировать вызовы.
>>2077977 Внезапно тебе может подойти что-то подобное https://github.com/dascandy/pixel Вроде бы как раз двумерная графика на пикселях. Правда это C++ Ну и в целом гугли графические библиотеки под пиксельную графику, они должны существовать
А почему в Java нет беззнаковых типов? Получается, чтобы записать значение от 0 до 255, то мне надо использовать тип short, потратив в 2 раза больше драгоценной памяти?
Почему public static void main(String args[]) вызывает предупреждение, а вариант public static void main(String[] args) нет? Хотя у Шилдта в книги примеры идут по первому варианту? Шилдт не знает Java?
Какому гению пришло в голову избавиться от беззнаковых типов? Чем они ему помешали? В итоге вся арифметика с битовыми сдвигами идёт в тартарары и абсолютно бесполезна. И как вишенка на торте введение специальной операции по беззнаковому сдвигу вправо... Был лучшего мнения о Java.
>>2078275 >>2078488 вот на первых 3 ссылках в гугле нашел такие аргументы: >Следует по возможности избегать беззнаковых типов, поскольку арифметика беззнаковых чисел не на всех компьютерах реализована одинаково и из-за этого при переносе программы с одной платформы на другую могут возникнуть проблемы. По этой причине в языке Java беззнаковые числа запрещены. >для реализации определенных алгоритмов иногда требуется беззнаковая арифметика, но те программисты, которые будут реализовывать такие алгоритмы, также будут обладать знаниями для выполнения беззнаковой арифметики со знаковыми типами данных
В чём смысл цикла for (each), если в нём нет ключа. К примеру, есть массив int nums[] = { 1, 2, 3, ...} и нам надо найти значение for (int x : nums) { if(x == val) { break; } } И что мы в итоге можем найти? Ничего, потому что мы не знаем позицию в массиве (ключа).
Есть два приложения. Одно генерирует сообщения в MQ, другое крутится на сервере приложений и вычитывает очередь. Так вот, при вычитке сообщений постоянно сыпется ошибка о том, что нет свободных коннектов. Может ли генератор отожрать все коннекты, или проблема в другом?
>>2079331 сделать такие маппинги на одном порте, чтобы разные домены были на локалхосте. Типа "api.localhost:8080" и "another.localhost:8080", чтобы с cors поразбираться.
Сап анонам с треда, недавно был на собеседовании и походу всё идёт к офферу. Собсна вопрос: что ждать от работы джавистом в офисе? Сильно будут ебать? По знаниям проблем нет. И на какую зп претендовать?(на HH смотрел, нихуя не объективно) Очевидно джун, без опыта.
>>2081045 >да не судимым будешь Это Иисус сказал? Такая глупость. Типа как "не воруй, и тебя не обворуют". К тому же вся его нахуй жизнь является прямым доказательством обратного.
>>2081801 Да понятно, что в такое наебалово тысячелетия могло поверить только необразованное манямирковое быдло, жившее до нашей эры. Главное, что сейчас все нормальные люди знают, что бога нет. Веруны приписывают себе исключительное право на мораль, хотя их сказки прямо говорят им поступать вопреки ей.
>>2081858 Ага, ведь он родился за 6 лет до этого, потому что там какой-то верун проебался, высчитывая даты по книжке со сказками. Что сын божий может сделать за 6 лет?
>>2081915 Если бы да кабы. Сейчас бы обсуждать как и что было бы в какой-нибудь фантастической вселенной, где никто не ворует, а твоя мать - честная женщина.
>>2082757 Бельгийцам похуй, а нам нет, надо мыслить глобально! А вообще-то в рашке живёт 50000 негров. При такой большой социальной группе необходимо задуматься о правах.
язык java. Суть проблемы такова, есть прога в которую передается имена файлов которые лежат в папке ресурсов, нужно написать тест, который будет передавать имя неверного файла и чекать прогу на ошибки. как это реализовать ? Пытался создать временный файл в папке ресурсов и передавать его имя, но он не хочет создаваться во время выполнения кода, а создается только после него, следовательно прога файл найти не может, тест не проходит.
Посоны, кто прогает на Java, у вас Intellij IDEA версии 2021.1.1 работает на deb подобных дистрибутивах? У меня что-то вылетает при открытии/создании проекта. Я просто привык к разным фишкам IDEA типа автодоплнения и т.д., что пока на Eclipse как-то не очень это всё. P.S. Кстати, кто знает, JetBrains о тебе также активно телеметрию собирает, как и Microsoft?
вкатываюсь в автоматизацию тестирования, для этой цели изучаю жопку, месяц уже учу, дошел до циклов, не понимаю пацаны, как вообще это все работает? сложно что-то, мб так и остаться мануал-макакой?
>>2082969 > не понимаю пацаны, как вообще это все работает? Задавай конкретные вопросы, получай конкретные ответы. Если не можешь сформулировать вопросы, то читай заново теорию пока не получится сформулировать первый вопрос, с которого ты перестал понимать.
Пытаюсь понять многопоточность. Почему данный код нормально отрабатывает бех ConcurrentModificationException это же настоящий race condition, у меня есть List, с которым одновременно работают 5 потоков, хотя бы часть из них вполне может одновременно проверить synchList.size() == 0 и внести -1,но результат обоих sout всегда один - [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>2083171 1. Ты создаёшь простой ArrayList. Ему насрать на многопоточность, он её никак не контролирует, поэтому ConcurrentModificationException здесь не может возникнуть в принципе.
2. Executors.newFixedThreadPool(5) не создаёт 5 потоков, выделяет пул на 5 потоков. Иными словами, этот executorService допускает выполнение не более чем пяти потоков одновременно. Самих потоков может быть и меньше.
3. Методом execute ты запускаешь один-единственный поток, который в одно рыло ворочает коллекцией. Поэтому никакой гонки и нет. Тебе нужно сначала создать объекты потоков, поставить их в очередь, а потом разом их все запустить. Через ExecutorService это делается как-то так (пик1).
4. Для создания гонки тебе нужно потоков побольше. Да и проверка коллекции на пустоту, скорее всего, пройдёт нормально даже на очень большом количестве потоков. А вот добавление элементов вполне сгодится (пик 2).
>>2083171. ConcurrentModificationException на сколько я помню не связан с многопоточностью. Его кидает итератор, когда ты во время форич лупа модифицируешь коллекцию > это же настоящий race condition, Контроль за атомарным доступом к данным полностью лежит на разработчике. Компилятор тут ничем не подскажет > хотя бы часть из них вполне может одновременно проверить synchList.size() == 0 и внести -1,но результат обоих sout всегда один - [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Потому что ты из эксекьютора пользуешься только одним потоком, хотя по логике должен вызывать ексекьют 5 раз
>>2082969 > вкатываюсь в автоматизацию тестирования, для этой цели изучаю жопку, месяц уже учу, дошел до циклов, не понимаю пацаны, как вообще это все работает? сложно что-то, мб так и остаться мануал-макакой?
Пока (счётчик < 10); {Выполняй следующее условие;}
Для (переменной счётчика; считать до 10-ти; увеличивать на ++1 каждый шаг); {Выполняй следующее условие;}
Если {(Вот это значение = правда); то { выполняй следующее условие; } иначе { если (Вот это значение = правда); то { выполняй план б; } иначе {выполняй план с;}
Вот три столпа цитирования. Что тут может быть сложно.
И пока ты с Джавой на "Вы", будь добр грамотно её назвать.
>>2083340 вот это удобно на самом деле, а чтоб довести до автоматизма работу с циклами, надо много решать задачки, кодварс самое адекватное, 7-8kyu как раз по основам, думаю штук 200-300 будет достаточно, чтоб чувствовать себя уверенно в таких базовых вещах
>>2083238 >>2083240 Спасибо за хорошие ответы, ConcurrentModificationException я всё-таки осил, штука заключается в том, что надо модифицировать коллекцию когда итерируешься по ней с итераторами, например в foreach, там тонкий момент, что итераторы из java.util (а также все синхронны обёртки над коллекциями типа Collections.synchronizedList итд) они все fail-fast и при такой модификации сразу валятся с ошибкой а вот коллекции из java.util.concurrent реализуют принцип weakly-consistent, когда для каждого потока есть свой снепшот итератора по которому он итерируется и то, что он видит - слабее, чем то, что видит сама коллекция, в итоге CopyOnWriteArrayList допускает такое одновременное изменение
>>2083441 > в итоге CopyOnWriteArrayList допускает такое одновременное изменение Он делает снепшот всей коллекции, то есть это уже будет другая коллекция, поэтому изменения оригинальной ее не коснутся. А инстанс итератора в коллекциях всегда создаётся заново на каждый форич. И кстати итератор сам не тред сейф, поэтому при итерации нужно лочить весь цикл
Ананасы, выручайте. Есть две авро-схемы с совпадающими namespace и одинаковыми названиями полей. После генерации классов, классы, сгенерированные по первой авро-схеме, перетирают другие, совпадающие по namespace + name. Просить поменять авро-схему со стороны отправителя нет, решать вопрос надо локально. Гуглил – ноль вариантов решения.
Я Джун с Big data не имею никакого опыта. Но когда слышу "один класс перетирает второй идентичный" у меня в голове сразу всплывает: • Программист поставил знак "=", который отвечает за "присваивание" (твоё "перетирание"), а нужно "==" или equal().
Может это банально, что я именно это упомянул, но вдруг и является твоей проблемой.
На Джаве не кодил лет 5, т.к. в моих пердях она нахуй никому не нужна. Но через пару месяцев буду в ДС2 и планирую походить по собесам. На джуна, разумеется. Посему вопрошаю:
1) Поменялись ли как-то требования на джуна за последние несколько лет? Очевидные стримы, лямбды, optional'ы.
2) Есть что-то специфичное для требований к java-джунам именно в ДС2? Мало ли, может тут на собесах любят спрашивать про КЧ-деревья или загадывать задачки про верёвку и весы.
3) Аноны из ДС2, расскажите свой опыт или как это проходит у вас?
>>2084812 Чел, джава умерла как раз лет 5 назад. Современный бэкенд пишется на быстрых развивающихся языках - пхп7+, ноджс, го, питон. Если ты хочешь в андроид то там давно Котлин официальный язык.
>>2084812 По своему опыту могу сказать, что каких-то лютых знаний именно Java от меня никогда не требовали, не смотря на то, что я был, есть и, вероятно, буду Java-разработчиком.
Самые сложные темы в новой Java: коллекции (в каждом релизе куча нового), concurrency (та же хуйня), стримы, потоки данных (NIO и NIO2) и функциональные интерфейсы. Причём сложность здесь в том, что эти темы постоянно пересекаются друг с другом. А, и ещё модули теперь.
От джуна лично я стал бы требовать скорее общих знаний в информатике: знание реляционных БД: чем триггер от хранимой процедуры отличается, что такое курсор и индекс; знание сети: чем DNS от DHCP отличается, что такое SSL и SSH; знание операционных систем: умение в Linux и bash/PowerShell.
Специфичные требования от города не зависят. Они будут кардинально меняться даже не от компании, а от конкретного мудака, который пришёл тебя интервьюировать. Один прочитал давеча про управление памятью в JVM, а поэтому будет тебя ебать поколениями кучи. Другой угорел по функциональщине, и будет тебя засыпать тонкостями про лямбды, ссылки на методы и распараллеливание стримов.
А так чё. Идёшь на первый собес. Не вышло — и хуй на них. Идёшь на второй. Не получилось — и их туда же. Не мытьём, так катаньем найдёшь чё-нибудь приемлемое.
Короче, желаю тебе удачи, анон. Не расстраивайся из-за отказов и не прекращай повышать уровень даже после найма.
Я правильно понимаю, что после того, как мы получили Entity из базы данных и закрыли сессию, он автоматически переходит в detached и единственный способ вернуть его в новую сессию, вызвать merge?
>>2085236 >>2040661 → Думал, у меня тред не прогружается после моего старого поста, но нет - бревно интерфейса опять всплыло. Интересно, если нарисовать эту ебаку на собеседовании, когда спросят про интерфейсы, интервьюер оценит?
Аноны если мне надо много операций со строкой сделать, мне нужно для каждого действия новую строку пилить для промежуточного результата ? Я не могу просто написать newStr = oldStr.trim().toLowerCase()....
>>2085687 Зачем? Создавать ссылки на строки с промежуточным результатом надл либо когда у тебя получается слишком длинное выражение, либо одна и та же ссылка используется два и более раз.
Как запустить программу в идее с мейвеном? Идеей проект не билдится, пикрил: не видит классы. Мейвеном проект билдится, отдельно в CMD даже запустить можно и всё работает. А в идее никак не получается запустить.
>>2085190 >От джуна лично я стал бы требовать скорее общих знаний в информатике: знание реляционных БД: чем триггер от хранимой процедуры отличается, что такое курсор и индекс; знание сети: чем DNS от DHCP отличается, что такое SSL и SSH; знание операционных систем: умение в Linux и bash/PowerShell. Лол, я тип миддл, но так с ходу на эти вопросы не отвечу нахуя мне это знать, я без этого уже 4 года работаю) понадобится - прочитаю
>Они будут кардинально меняться даже не от компании, а от конкретного мудака, который пришёл тебя интервьюировать. Один прочитал давеча про управление памятью в JVM, а поэтому будет тебя ебать поколениями кучи. Другой угорел по функциональщине, и будет тебя засыпать тонкостями про лямбды, ссылки на методы и распараллеливание стримов. тут поддвачну чисто человеческий фактор и удача не воспринимайте собес, как экзамен, потому что в экзаменах всегда есть четкий список вопросов, а на собесах скорее проверяется охват знаний и то, как ты умеешь общаться
В gradle kotlin dsl серьезно нет возможности установить версию зависимости в одном месте и переиспользовать ее в нескольких местах? В мавене это делается тупо через <properties>.
>>2086814 Есть. Но обычно все версии указываются в родительском модуле, а сабмодули их используют без указания версии. Что то вроде мавеновских pom файлов короче
>>2086833 >Но обычно все версии указываются в родительском модуле И как это реализовано? Я придумал только val depVersion = "1.1.1" объявить на верхнем уровне.
>>2086847 Ну примерно так и есть. Посмотри как это делают в разных проектах например тут https://github.com/InsertKoinIO/koin/search?q=dokka_version в отдельном файле который который потом ещё нужно импортировать в скрипт. Проще сразу в родительском build.gradle в ext записать. Можешь ещё погуглить как из gradle.properties доставать проперти
Аноны можно ли как то перечислить много условий для одной переменной тупо через запятую, или это не возможно ? while ( a != 1, 222, 34, 45, 51 ), что бы не писать лапшу a != 1 && a != 222 и т.п.
>>2087206 >>2087210 Я просто в ахуе. Будьте прокляты, гикбрейнсы и скиллбоксы. Нахуя учить программированию ебучих лапотных крестьян, чтобы они потом выдавали такие гениальные решения?
>>2087229 У нас байтоёбский тред? Хорошо. Анон хочет "не писать лапшу", которая выполнится быстрее, чем любые возможные структуры данных успеют проинициализироваться. Все эти массивы-хешсеты и прочие теоретические O(1)-изыскания - хуита по сравнению с тупой проверкой нескольких неравенств. И где тут быстрота?
>>2087232 Сет инициализируется один раз и сам подбирает оптимальную структуру под количество значений (достаточно посмотреть реализующую Set.of() в стандартной библиотеке). Можно присвоить сету с нужными значениями человекочитаемое имя и любой читающий код поймёт смысл проверки, даже не вникая в логику. Если нужно добавить новую проверку, в Set.of() просто добавляется новое значение, а не приписывается новая лапша. Я надеюсь ты пока вкатыш-первокурсник, если не видишь разницу, а не состоявшийся индус.
>>2087237 >Я надеюсь ты пока вкатыш-первокурсник, если не видишь разницу, а не состоявшийся индус. Это перебор даже для первокурсника. Это скорее уровень курсов по программированию 300к/сек за полгода.
Аноны, мб тупой вопрос, не так сильно пока что в джаву въехал, но каким образом можно под Линуксом из IntelliJ Idea запускать отладку под sudo? Делаю webSSH на чистой джаве без фреймворков, нужен 80й порт, а он на лине залочен (в винде все работает отлично)
>>2087551 Хз, браузер не принимает ответ по другим портам, без проблем кидает GET, мой софт его обрабатывает и пишет обратно в поток, но бразуер пишет, что ответ некорректный. Заранее извиняюсь, я в веб ещё не лез ни разу, максимум просто с сокетами работал в крестах и джаве. И твоя идея не сработала, хотя я не уверен, что правильно дал привелегии, ибо idea у меня в /var/lib/flatpak/app лежит, что странно
Вопрос не совсем про жабу, но раз ебашу на спринге то тут спрошу Хочу динамично переходить на другую страницу на сайте(не пезагружая всякие футеры хедеры меню) Так вот у меня мысль просто сервером отдавать скрипту на фронте кусок хтмл(в шаблонах thymeleaf у меня как раз отдельный фрагмент страницы есть) С другой стороны этот кусок будет отдаваться по какой-то ссылке и если пользователь на нее перейдет, найдет кусок сайта и подумает что за хуйня В общем костыльно как-то получается
>>2087543 > из IntelliJ Idea запускать отладку под sudo > Делаю webSSH на чистой джаве без фреймворков, Не понял, в идее есть некий вебссш которой нужно запустить под судо, или ты свою программу хочешь запустить под судо из идеи?
>>2087596 Некостыльных варианта у тебя два: 1. Забыть об этом > не пезагружая всякие футеры хедеры меню И перезагружать целиком 2. Выкинуть thymeleaf и переписать фронт на реакте вуешизики, спок, который сам будет заниматься оптимальной перерисовкой и подгрузкой данных, а на сервере сделать REST API.
>>2087596 > С другой стороны этот кусок будет отдаваться по какой-то ссылке и если пользователь на нее перейдет, найдет кусок сайта и подумает что за хуйня Отдавай его формой через пост запрос. Но в любом случае это все хуйня, тут ты прав.
Есть джарник с определенным приложением, который запускается стандартно через java -cp ... -jar ... и представляет собой консольное приложение. Как бы мне генерить в процессе сборки отдельный бинарник (для каждой системы) для запуска, в котором все опции были бы описаны? Я уже вижу несколько сложностей с тем, что надо проверять расположение джарника, установку джавы и прочее. А еще приложение на котлине, кстати. Какие есть варианты?
>>2087657 Для мавена ищешь в гугле maven jar exe Для грэдла ищешь в гугле gradle jar exe Для велосипедистов ищешь jlink Для неуважения к юзерам используешь bat/sh
>>2087596 >>Хочу динамично переходить на другую страницу на сайте(не пезагружая всякие футеры хедеры меню) Turbolinks. Хедеры всякие кешируются и получается быстрее. >>отдавать скрипту на фронте кусок хтмл Тогда уж передавай джейсоны. Изобретешь очередной жс фреймворк заодно.
>>2087948 На вышке заставляют учить всякую поебень не связанную напрямую с написанием кода типа устройства сетей. Да и язык почти всегда - 1С/С++ поэтому всплывают вопросы про указатели и виртуальные методы. Зря он что ли страдал 4 года, если платят ему и вкатуну одинаково?
>>2088028 Ну я учился на вмк, 09-14 года, мне например ничего из вышеперечисленного не преподавали Могу зато двойной интеграл решить. И сказать что такое вторая нормальная форма бд
>>2088028 Ну я про такие вопросы > >От джуна лично я стал бы требовать скорее общих знаний в информатике: знание реляционных БД: чем триггер от хранимой процедуры отличается, что такое курсор и индекс; знание сети: чем DNS от DHCP отличается, что такое SSL и SSH; знание операционных систем: умение в Linux и bash/PowerShell. > Лол, я тип миддл, но так с ходу на эти вопросы не отвечу > нахуя мне это знать, я без этого уже 4 года работаю) понадобится - прочитаю >>2088029
У меня перед глазами есть знакомые, которые без ВО синьерят на джаве и скале с зп под 400к.
Есть знакомый чувак, который с образованием техникума года 4 назад в Америку укатился.
Вообще не знаю ни одного человека, который бы пытался вкатиться в ит и не вкатился бы. У большинства правда было ВО, но какая нибудь параша, типа диплома таможенника на заочке.
>>2088031 Именно такие это и есть ЦА энерпрайза. Бесперспективный планктон, который фигачит свои круды по ПРОВЕРЕННЫМ МЕТОДОЛОГИЯМ и не жужит, переводя свое бесполезное время в деньги заказчика. Это всё таки не рокет саенс. Меня например взяли с первого собеседования в ИЗВЕСТНУЮ МЕЖДУНАРОДНУЮ КОМПАНИЮ С КОМАНДИРОВКАМИ В СТРАНУ ИНДИЮ, без опыта и вышки. Правда у меня было пару РЕАЛЬНЫХ проектов которыми сам пользовался.
>>2088101 >Меня например взяли с первого собеседования в ИЗВЕСТНУЮ МЕЖДУНАРОДНУЮ КОМПАНИЮ С КОМАНДИРОВКАМИ В СТРАНУ ИНДИЮ, без опыта и вышки. Правда у меня было пару РЕАЛЬНЫХ проектов которыми сам пользовался.
>>2088325 Для них основные поставщики вакансий это вебстудии Сокол и Создаватели. Неиронично лучше в пятёрочке работать, чем в такой параше и платить будут больше.
Здравствуйте, извините за нубский вопрос, а как устанавливать сторонние пакеты в java? org.apache.* какой-нибудь. Мне удалось нагуглить некоторые jar файлы и добавить из в idea, но должен же быть какой-то удобный способ?
>>2088500 Ты, небось, ещё и ломбоком пользуешься? Вообще понятно, почему "200 строк" так тебя беспокоят. Потому что в градле постоянно что-то ломается, и приходится переписывать кучу конфигов. А мог бы просто один раз написать бумерский пом.хмл, который будет работать веками.
Как обычно решается проблема, что программе для работы нужно использовать какой-то файл, который может лежать в неизвестном месте? Устанавливать переменную окружения типа EXEC_HOME или проверять ожидаемое место, а если там ничего нет, то кидать ошибку?
Выкачивая то, что прописывает в pom.xml @ Не обновляешь @ Все сокрушаются, что ентерпрайз не избавится от старья в виде Джавы @ Пофиг, главное, что работает
>>2089143 Потому что оба варианта применимы. Если это какая-то серверная приложуха, пути обычно берутся из переменных среды/конфига/БД/откуда-то ещё, если не заданы - значение по умолчанию или ошибка.
>>2088504 > нужно использовать какой-то файл, который может лежать в неизвестном месте? Если пользователь знает где этот файл находится: передавать путь аргументом командой строки хранить путь в zalupa.properties файле рядом или в любом виде, хоть бд, хоть раржпег вычислять путь детерминировано по фазе луны
Если никто не знает где этот файл, то сканировать все диски в поисках какого то файла в неизвестном месте.
> или проверять ожидаемое место, а если там ничего нет, то кидать ошибку? Как хочешь так и делай. Нужно проверять проверяй. Нужны ошибки кидай ошибки.
Как перестать бояться и выложить таки резюме? Я вот очкую, по 100 раз перечитываю разные статьи по основам, пет проекты уже надоело выдумывать. Знаю +- кору, спринг вмц и бут основы, хибернейт, многопоточку, посредственно алгоритмы. Надо вот еще за рефакторинг и шаблоны почитать, особо не углублялся.
А еще такое, на собеседованиях можно юзать интеллисенс или тебя заставляют писать код наизусть помня все API? я просто объяснить что как могу, но с запоминанием API у меня почему-то тяжко. Вот когда JS учил, там как-то пободрее все шло (хотя может язык просто бедный из коробки, и там в целом не так много дублирующих вариантов ввсяких разных функций).
>>2089318 > >А еще такое, на собеседованиях можно юзать интеллисенс или тебя заставляют писать код наизусть помня все API? я просто объяснить что как могу, но с запоминанием API у меня почему-то тяжко. Вот когда JS учил, там как-то пободрее все шло (хотя может язык просто бедный из коробки, и там в целом не так много дублирующих вариантов ввсяких разных функций). причем и с фреймворками там все бедно, 2,5 функции на весь React и даже запоминать не надо ниче..я хуею
>>2089356 Для вкатунов стажировки всякие есть, платят копейки, но под видом обучения будешь хуи пинать, хоть опыт дорисуешь в резюме >>2089350 А зачем идти на собес, если ты к нему не готов? И все равно лучше соснуть на собесе чем вообще на него не попасть, хоть какой-то опыт.
>>2089356 >>На жабе разве ремоут есть ? Ремоут есть, но только для мидлов/сеньоров. >>2089358 >>Для вкатунов стажировки всякие есть Это для студентов профильных вузов только. Вкатыша нахуй пошлют 9 из 10 контор. Проще уж сделать бочку, как анон советовал >>2089331
>>2089361 Если ты вкатыш без профильного и тд почему ты просто не выучишь пхп и не будешь ебать всем мозг, все равно ты синьором в джава не станешь, а в пхп хотя бы теоретически станешь и в итоге больше денег будешь лутать
Есть ли особый класс, который бы представлял из себя BlockingQueue из одного элемента? То есть чтобы в одном треде положил объект внутрь, а в другом заблочился на определенное время и забрал, если объект там появился за это время. Писать сам synchronized/wait/notify не хочу, хочу готовое и красивое.
Аноны смотрите есть сайт с видео трансляцией, условный твич или онлайн тв. Я хочу по ссылке качать этот поток и в идеале сохранять его в видео фаил. Как такое реализовывать без готовых решений ?
Привет, жабаны. Подскажите, пожалуйста, правильно ли я понимаю, что если я закрываю стрим, то он так же автоматически закрывает и все стримы, его породившие, если они реализуют AutoCloseable? То есть если я делаю, к примеру: ZipInputStream zin = new ZipInputStream(new FileInputStream(cachedZipFile) То мне нужно только сделать в конце in.close() А FileInputStream(cachedZipFile) схлопентся сам, верно? Или мне его нужно как-то отдельно закрыть?
>>2090044 Находишь библиотеку которая может в hls, там будет апи для манипуляции с буфером байт, находишь библиотеку которая может в видеокодирование и кодируешь ею буфер в видео файл. Хотя может можно hls сразу в файл, но воспроизвести это не каждый плеер сможет
Здрасьте, объясните на пальцах относительно Java сертификации, чем отличается Oracle Java Foundations Certified от Oracle Certified Associate SE? Первое является частью второго (типа упрощенное) или это вообще разные вещи?
>>2089361 >Это для студентов профильных вузов только. Вкатыша нахуй пошлют 9 из 10 контор. А если я выпускник профильного, но не работал нигде 100 лет? Меня нахуй пошлют сколько контор?
>>2090081 Он сам закроет, глянь в исходники, ZipInputStream на close() вызывает реализацию базового класса FilterInputStream - который просто прокси вокруг друго стрима.
>>2089282 Ну не знаю. Понятно, что джава язык популярный и количество курсов по ней хоть и меньше, чем во фронтенде/питоне/бекенде на js, но тоже будет много. Но вкатунов в джаву сейчас не сильно много, в основном это студенты, да и то, далеко не все, так как значительная часть студней уходит в более хайповые языки и технологии.
>>2090428 Питон абсолютно искуственно раздутая хуйня без задач, университеты зря ушли от джавы к нему. Это еще аукнется на индустрии запомните этот твит
>>2090471 Но ведь в университетах учат программированию в целом, а не языкам. Питон прекрасно подходит для дрочки алгоритмов, потому что он лаконичный.
>>2090521 Это 2 миллиона аккаунтов. Далеко не все из них платят подписку, большинство зарегались, увидели, что тут всё платно, и слились. Обучающихся там намного меньше.
>>2090537 Худшая инвестиция в твоей жизни. Огромное количество говнокода, оторванные от жизни задачки, 1000 заданий по выводу в консоль какого-то говна.
>>2090545 ты говоришь по собственному опыту или просто копипастнул из шапки? >>2090541 я и там и там потыкался - для себя выделил плюсы и минусы в обоих платформах, но хотел услышать мнение анона
>>2090528 И ещё не всё пошли полный курс. Кто не знал, тот 2 месяца по 50$ заплатил и прошел только core. А кто знал, тот ждал месяц скидочку "100$ за год" и неуспеха прошел всё.
>>2090537 Сейчас на джавараше. Подождал пока предложат 100$ за год.
Ну что сказать. Если полный ноль, то даже лучше чем книга "head first Java", потому что Джава core изучается неплохо. Это как первые классы из школы. Собраны в одном месте те темы, что тимлиды не разжуют джунам, а буркнут "ты это должен был знать по умолчанию после прочтения книг "Java для чайников".
Они не показывают, где именно это будет полезно в жизни. И все задачи - для вывода в консоль. Хоть бы дали кнопки создать в Java FX и порадоваться интерактиву, API-шку написать для запроса на виджет на Андроиде. Или там, как в Джаве в базу обратиться. Как работать с фреймворками Спринг, Гибернейт, Селениум, ДжейЮнит. То есть такие практические моменты, а не сугубо академические.
>>2090537 Плюсы джавараша: - более дешёвая подписка
Плюсы хуйпердскилла: - 2 месяца и 7 дней можно учиться бесплатно - структурированная и мелко нарезанная программа - не самые простые проекты, даже над Easy местами надо думоть - не совсем оторванная от жизни хуйня - последние проекты хотя бы чуть-чуть знакомят тебя с SQL и спрингом - чуть более престижно - жопараша у всех на слуху, её обоссывают все кому не лень - всё на англюсике - не надо гуглить и переводить каждую хуйню обратно на язык оригинала
Но вообще для вката в джаву можно найти и бесплатные более чем достойные альтернативы (причём даже устроенные схожим образом), а дальше все равно придётся книжки читать.
Если я захочу полноценный пет-проект на спринге запилить, чтобы хостинг был в РФ, то мне нужно купить впс, поставить на него простгрес и джаву? Какие есть в РФ провайдеры? И сколько мне диска нужно будет под джаву, мавен, простгрес, сотню тысяч строчек в базе и логи? Дороже самой дешёвой не бесплатной хероки? Там 7 баксов, то есть 500рублей. И ещё и сервер ближайший в Германии.
>>2090773 > Если я захочу полноценный пет-проект на спринге запилить, чтобы хостинг был в РФ, то мне нужно купить впс, поставить на него простгрес и джаву? Да > Какие есть в РФ провайдеры? Без разницы > И сколько мне диска нужно будет под джаву, мавен, простгрес, сотню тысяч строчек в базе и логи? 5 гб > Дороже самой дешёвой не бесплатной хероки? Возможно > Там 7 баксов, то есть 500рублей. И ещё и сервер ближайший в Германии. Как хочешь
>>2090819 Да, а ещё в жабе все друг с другом на "вы", график строго с 9 до 18, субординация, деловая переписка через документы, отпуск согласовывать за год и перенести потом нельзя, мобильные устройства сдавать на проходной, за баги выговоры и депремирование.
>>2090831 Ну да. Работа во внутренней сети, есть локальная копия документации используемого стека технологий + полка с бумажными книгами. Общение со сторонними организациями через специальный компьютер по согласованию с безопасниками.
Поясните плз. Вот та книга Седжвика, которая щас в магазинах продается, она лучше тех, что в интернете от 2001 года или тоже самое? И чем отличаются книги Седжвика на Джаве и на плюсах по алгоритмам, если кто обе смотрел и проходил
Решил написать свой графический редактор с особыми фичами типа сплайнов, возможности наложения геометрических зависимостей, и т. д. Но обнаружил, что Java2D и Swing крайне неудобные йобы для таких целей. Что делать? Писать с нуля на какой-нибудь обертке OpenGL/Vulkan для джавы или есть годные либы для 2д графики?
>>2091242 А какие редакторы есть хорошие? Мне фотошоп или гимп не нужны, мне нужно что-то очень простое вроде ms paint, но только с возможностью задавать прямые и кривые координатами в декартовой системе с геометрическими фичами из CAD/CAM. Что-то вроде системы компьютерной алгебры, построителя графиков и сапр одновременно. Нашел geogebra, она как раз на жабе написана, но чтобы в нее что-то добавить придется перелопатить весь код, в котором я ничего не понимаю.
Насколько полезно решать задачки на какой-нибудь хуйне типа edabit? Иногда надоедает дрочить спринг с его километровыми мануалами и хочется отвлечься, покодить что-нибудь абстрактное. Я понимаю, что на таких сайтах примерно то же самое, что и >десять раз скопипасти этот кусок кода и выведи в консоль Но в процессе решения задачек начинаю копаться в апи, думать как можно реализовать по-другому, опять же смотрю как другие реализовали. Короче непонятно, то ли на пользу идет, то ли нет.
Алсо если занимаетесь таким, посоветуйте сайтики. Литкод уже увидел в шапке. Походу там есть задачки на базы и многопоточку, что круто.
>>2091230 Сплайны это типо кривые линии? В свинге хз, но в джавафх есть компонент Line, который рисует линию на сцене (без канваса то есть), а кривая линия это множество линий поменьше. Если брать рисовать всю геометрию самому, через опенгл и тп, то придется изъебаться с самописной системой лэйаутов и обработкой событий ввода
>>2091247 Я имел в виду векторные опенсорсные, типа inkscape. Можно и плагин накатить, и посмотреть как до тебя делали. Но в инкскейпе кресты плюс питон.
hibernate У меня есть табличка А, к которой один к одному связана табличка Б. При этом фк в Б является одновременно и пк. Не могу запустить это все, спрингбут падает.
Class A @Id @Column(name = "id") private int id;
Class Б @Id @OneToOne(cascade = CascadeType.All) @JoinColumn(name = "A", referencedColumnName = "id") private A a;
Если добавить в Б поле для id, то все будет норм, но зачем, если все fk уникальны и могут юзаться как pk. Как это запустить?
>>2091298 Так это не проблема того, что вкатунов много, а проблема в тебе. Ты не смог показать себя лучше остальных и только ьы в этом виноват. Ну или в маленьком городе живешь, где работы почти нет никакой, тогда не стоит удивляться, что в селе, где 20 вакансий на пхп и 3 на джаву, тебя никто не берет без опыта джавистом. В москве за полгода найти работу вполне реально.
>>2091341 Ну да конечно, вкатун всегда будет виноват, даже если теоретически конкуренция 100 человек на место, вкатун будет виноват всегда, никак не ебаномика и рыночек РФ.
>>2091341 >>что в селе, где 20 вакансий на пхп и 3 на джаву >>283 вакансии «Java» село-миллионник
1 - написала в телегу хрюша из сбера, потом уточнила не свичер ли я и получив подтверждение больше не писала. 2 - звонили с галеры, спросили вывезу ли я интервью с заказчиком на инглише, но я чет не захотел я и по русски хз что ему там "о себе" рассказывать, а тут на инглише, на котором я лет 5 не говорил. Про скилы в джаве даже не спросили. 3 - назначили собес через неделю 4 и 5 - обещали показать резюме тимлиду и перезвонить. 2-й день жду. Походу не перезвонят.
>>В москве за полгода найти работу вполне реально. Дорого там находиться, если нет квартиры от бабки. 30к-50к за аренду в месяц выкидывать не каждый потянет. А на удаленку редко рассматривают ждуна
>>2091400 Приличного, тесты через моки, конструируемые запросы к бд с параметрами, настроенный https с переадресацией, сохранение картинок на сервере, а данных в бд, относительно большая бд для не коммерческого проекта.
Единственное, там один велосипед с ранней стадии постоянно повторяется, но он связан с фронтендом, который разрабатывал другой человек.
Но хрюша это 100% не поймет и может забраковать. В прочем, не удивительно, ей же еще 50 таких же разбирать, я бы тоже не стал вникать в чей-то код в таком случае.
>>2091400 Приличного, тесты через моки, конструируемые запросы к бд с параметрами, настроенный https с переадресацией, сохранение картинок на сервере, а данных в бд, относительно большая бд для не коммерческого проекта.
Единственное, там один велосипед с ранней стадии постоянно повторяется, но он связан с фронтендом, который разрабатывал другой человек.
Но хрюша это 100% не поймет и может забраковать. В прочем, не удивительно, ей же еще 50 таких же разбирать, я бы тоже не стал вникать в чей-то код в таком случае.
>>2091383 >свичер ли я А зачем в жабу идти свичером? В энтерпрайзе любят высшее техническое профильное образование. Тебе надо было в пыху или жс идти. Быстрее бы процесс шел.
>>2091414 >Но хрюша это 100% не поймет и может забраковать
Хрюши никогда не читают твой код. Пет проджект могут посмотреть на техническом собеседовании или перед ним. До этого момента гитхаб твой максимум могут открыть и посмотреть как хорошо оформлено readme.md. Да и на самом тех. собесе у меня ни разу не смотрели мои говноподелия.
>>2091383 >30к-50к за аренду в месяц выкидывать не каждый потянет. А на удаленку редко рассматривают ждуна
Ну если не получится вкатиться у себя в городе, то собирай деньги и езжай в дс. Жить можно и в хостеле, правда нахуя - не понятно. Пока что почти все собесы удаленно проводят, можно сначала найти работу, а потом через день приехать в ДС.
>>2091423 >>В энтерпрайзе любят высшее техническое профильное образование. Такое требование в основном у банков/яндексов. К счастью они пока не все попилили. >>Тебе надо было в пыху или жс идти. Мне жаба кажется приятнее и проще, чем жс. Про пыху хз, на ней и вакансий мало. Да и там в требованиях все равно укажут жс(как минимум жквери). Зачем учить пыху+жс, когда можно учить только жс и получать больше в таком случае? как правило чем больше зп, тем меньше ебут мозги >>Быстрее бы процесс шел. Я и не торопился. Я почти джва года джаву учу. Работы нет, тян нет, друзей нет - учеба норм идет.
>>2091414 >>тесты через моки А меня чет заебало писать бесполезные тесты в петах. Нагенерировал тесты совой, подправил слегка синтаксис - каверадж вырос с нуля до 70% и ладно. Виглядит это пиздецово конечно, а часть и вовсе не работает, но кто будет вникать в тесты.
>>2091468 Я ж написал что это чисто для гитхаба на показ, чтоб не задавали тупой вопрос "почему нет тестов?". А то на них пиздец времени уходит, а реальной пользы нет кроме получения навыка написания тестов. Но на самом деле тесты там не такие уж и хуевые для стандартных крудовых сервисов/контроллеров. Хуяня там скорее в их названиях (тест2 - непонятно что тестирует) и в том что сущности каждый раз создает с нуля, когда ее создание можно вынести отдельно. Из за этого очень длинные методы.
>>2091494 >реальной пользы нет Так ты пишешь тесты после кода, буратина. Ясное дело они тебе не нужны, ведь ты уже успел 300 раз перезапустить попердывающий на пружинно-хибернейтовой тяге апп и ручками как макака потестить хуйню, за которую все это время могла отдуваться машина.
>>2091661 > ты уже успел 300 раз перезапустить попердывающий на пружинно-хибернейтовой тяге апп и ручками как макака потестить хуйню Всегда так делают. Лучше самому убедиться что все работает как нужно, чем доверять каким то тестам.
>>2090555 → спасибо, но это какой-то хуёвый способ, где надо руками че то там забивать куда-то. так-то можно и тупо руками добавить. неужели нет ничего получше? учитывая что на идее можно педалить чуть не с закрытыми глазами, потому что половину она сама умеет, это странно
>>2091661 Метод в сервисе я пишу минут 10, тестирую руками и исправляю еще 10-20. А тесты на этот метод пишу полчаса, а потом столько же чиню эти тесты не сломанный код, а сломавшиеся тесты, если поменяю что то в методе. На проде это оправдано, там таких макак много и надо понимать что все пошло по пизде вовремя, а на петпроекте это долбоебизм. Или ты там юнит тесты хэлоуворлда приравнял к компонент тестам спринга?
Решил посмотрть на сложный попенсорс риакт проект, и не понял зачем они так делают сначала объявляют поле в классе с пустой лямбдой, а потом с тем же именем функцию, и так почти в любом классе. Какой смысл писать () => Object или это какаято магия чтобы перезаписать метод у родителя
>>2091717 Не особенно, просто интересно есть ли такое в идее. А вообще-то иногда класс начинается с двух полей и обрастает потом еще кучей. >>2091708 Хуямбок. Если этот понос не юзается на проекте, как я его накачу?
Делаю рест сервис на спринге Юзер создает сущность и аплоадит файл(картинка например) к ней Как это организовать? Предположим юзер в форме выбирает картинку и она сразу заливается на сервер, получачет назад какой-то айди и добавляет себе в сущность и отправляет уже ее Но если юзер файл загрузил, но потом передумал сохранять сущность, как потом удалить этот ненужный файл?
>>2078731 В самом его названии, долбоеб. Применяется когда нужно просто сделать что-то для каждого слена, независимо от других или их месте в коллекции
Скачал 11 ждк в идее, запускаю котлин проект с котлин плагином последней версии и настроенным на жабу 11. java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics Какого хуя?
>>2091758 Это не поле, поля через = определяются a = 1; метод в классе определяется только как method() {}, так что это не класс, а обычный объект, там можно писать поля a: zalypa;
Есть такая задачка: некий класс доступ к которому закрыт ReadWriteLock. К нему можно получить доступ на чтение и на запись. Доступ этот прикрывается блокировками на этом самом ReadWriteLock.
Когда надо получить доступ вызывается read() или write() которые возвращают объект, что-то типа InputStream/OutputStream и в этот момент захватывается соответствующая блокировка. После окончания работы вызывается close() объект реализует AutoCloseable и блокировка освобождается.
Если все делать через try-with-resource то конечно проблем не будет, но мне захотелось добавить защиту от дурака. Надо добавить освобождение блокировки если поток не закрыли и он собирается сборщиком мусора. Проблема состоит в том, что стандартный ReadWriteLock позволяет освобождать WriteLock только из того же треда, из которого он был захвачен и значит в финалайзере его освободить нельзя.
https://youtu.be/eqOrSjtQZW8 Нашел канал англоговорящего японца, пишет маленькие игори на свинге. Все делает только на массивах, тонны копипаста, но какой же упорный аутяра. Даже зельду портировал. Чисто для души контент, вброшу на всякий.
Вопросы по бест практис в спринге, приложение монолит. 1. Допустим есть класс, помеченный @Document (сущность для монги). В нем я хочу хранить вложенное поле, которое описано в отдельном классе, например MyField. Где создавать этот класс, делать внутренним? Делать отдельным, сохранять в тот же пакет? Или лучше в отдельный вложенный пакет? 2. Есть класс-сервис. Он начинает распухать, и я хочу выделить часть методов в отдельный класс, помечаю его как компонент. В каком пакете хранить такой класс? Рядом с сервисами? Но он не сервис, а чисто вспомогательный
В целом, такие вопросы возникают, если разбивать по пакетам типа сервисы в одном, сущности в другом, контроллеры в третьем итд. Если разбивать, условно говоря, по сущностям и обвязке к ним, то можно все в один пакет ебануть. Всвязи с этим третий вопрос, как лучше делить? Поидее, второй вариант даже намечает потенциальную разбивку по микросервисам, если когда-нибудь это захочется сделать
>>2092469 Не, не то. Как перехватить момент когда объект собирет сборщик мусора - я знаю. Вопрос был именно в блокировке. ReentrantReadWriteLock не позволяет write lock освободить из другого треда а финализатор вызывается из другого треда.
В общем разобрался - надо использовать StampedLock вот его можно из любого треда освобождать.
>>2091741 А как насчёт обджект-мепперов всяческих? Есть вроде какой-то абстрактный класс, мапящий ResultSet на объект, а также метод для меппинга объекта на набор параметров для NamedParameterJdbcTemplate
>>2092632 Бляяя! По коду надо несколько раз захватывать блокировку. Если раньше тред мог спокойно захватить несколько раз write lock то теперь, чтобы это сделать надо передавать stamp через асе вызовы. Сука!
Здарова аноны. Пишу свой небольшой чат с возможностью общения в лс и в группах. Так вот вопрос, где хранить сообщения от пользователей? В БД или просто на сервере? Хочу чтобы админ чата мог удобно просматривать все сообщения от каждого пользователя. Вообще как узнать, какую информацию обычно хранят в БД, а какую просто в виде файлов на сервере?
>>2094585 По возможности лучше вообще ничего не хранить в сырых файлах. Плохая масштабируемость, нет транзакций, прихолится изобретать свои форматы и тулзы для работы с ними, в итоге изобретаешь свою СУБД. В сырых файлах обычно хранят большие, плохо структурированные, редко изменяемые данные, вроде картинок. Если не хочешь заморачиваттся с серверами СУБД, бери простой sqlite.
>>2076160 (OP) Сад програмач, учу джабу по книжке Васильева А.Н. и появился вопрос, на который он в книге не отвечает. Вопрос такой, вот у меня есть приватное поле класса private String name; дальше в конструкторе и методе мы объявляем name = n Так вот, нахуя мы это делаем? Если в главном классе/методе программы эта n не вызывается, но есть только в аргументе(? - выделил зеленым) конструкта и метода. При чем не первый раз вижу подобные куски кода у Васильева, которые он не объясняет.
>>2094654 Не очень понимаю, в чём вопрос. N в конструкторе и N в методе - это две разные переменные. Можешь в конструкторе или в методе вместо n написать "xyu", ничё не изменится. N - это просто внутреннее условное название для любой произвольной переменной, которую ты потом будешь закидывать в конструктор/метод. Ты можешь потом написать в главном методе "UserPrivateApplication cock = new UserPrivateApplication("Я сосу хуи"), и вот эта строчка внутри конструктора будет обозначаться как n.
>>2094879 Вопрос не в том, как инициализировать ПРИВАТНУЮ переменную. Анон не понимает зачем использовать аргументы в методах. Ты если поле публичным сделаешь как будешь значение инициализировать? А через рефлексию как, если не будешь использовать аргументы в методах?
>>2095156 Показалось что это претензия именно к жабе. Вообще если нужен именно систем копи, то двумерный массив можно представить через одноимерный и обращаться к индексу через col + row x colsCount
Народ, пинал в универе хуи, после универа работал погроммистом 3 года, но не с явой, а со всякой парашей (впрочем, неплохо прокачал SQL). Сейчас переехал в другую страну, появился спонсор, готовый оплатить два курса по 9.2к евро каждый + экзамен, а именно OCA и OCP. Подскажите, для поиска работы достаточно будет серта OCA, или все-таки лучше посетить и второй курс и сдать OCP? Просто лишнее время тратить не хочется, если OCA достаточно.
Препод джавараша: так, давайте в качестве учебного задания по спрингу сделаем сайт для продажи шавермы Бумер: ахахахахахах какая шаурма дядя может еще сайт барбершопа? пошел нахуй
Автор книги Spring in Action: ээээ лэтс мэйк ин экзэмпл эээ... зе мен феворит фуд... такос шоп Бумер: ээээ это другое! книга-то хорошая! ррряяяяяя!!
>>2095510 >>Препод джавараша Ты там типа как в гикбрейнсе учишь прогрнаммированию по зуму?Аааа ээ вот а щас я напишу инт и равно нулю, ммм понятно? Воооот. Все поняли? А? Что такое инт? щас расскажу...
Пытаюсь разобраться в hibernate, но в книге постоянно упоминаются какие-то модули, тесты, service layer, интерфейсы и прочее, что, как я понимаю, имеет отношение к архитектуре приложения или циклу его разработки. А я в этом вообще не разбираюсь. То есть, когда приложения были в один-два класса и не содержали сторонних библиотек и взаимодействия с другими системами - всё было нормально, но стоило присоединить БД, фреймворк и систему сборки - и я поплыл. Общая сложность системы просто не умещается в голове - всё сливается в кашу. Как фиксить? Кор я знаю нормально, но, как выяснилось, не имею ни малейшего представления о том, как разрабатывается ПО. Пикрилы Роберта Мартина - об этом? Помню, в head first java авторы хотели выработать у читателя привычку писать сначала тесты, а потом само приложение. Или сначала нарисовать, какие будут классы с какими полями и методами. Естественно, я хуй забивал, а теперь жопа горит. На спринге я бы вообще ушёл в пятерочку работать и больше не вспоминал про эти ваши айти ебаные. Что делать? Читать Роберта Мартина?
>>2095725 Сначала покури SQL, любую СУБД и напиши хотя бы один круд с помощью JDBC. Ну не знаю, тред с Двача скачай и сохрани посты в базе, а потом выведи на консоль в другом аппе. Заодно и поймёшь как реюзать классы из других пакетов.
Вот после этого можно учить хибер, после голого jdbc он покажется чудом как спринг бут после сокетов сервлетов
Ну и короткий тутор по мейвену прочитай, если ещё не. Как ты без него хибер подключаешь, джарником чтоле?
Помогите плес с вопросом: Есть Map <Some, Integer> map. Как с помощью стрима пройтись по мапе, и просуммировать все Integer? Я чувствую что это просто и где-то рядом, но в коллекторах я вообще полумертвый. Вроде бы начало что-то вроде map.entrySet().stream().collect(.... а дальше у меня не хватает мозгов
Приветствую ананы. Такой вопрос. Вот допустим я выучил кор, и что дальше? Вообще не понимаю, и толком сам не знаю в какую область хочу. Хочу просто приходить и писать код. И что бы за это платили. Хотя бы едой.
>>2095769 В жабе две области - бэкенд и андроид. Тыкаешь по чуть-чуть обе, выбираешь то, что нравится. В андроиде, к слову, сейчас принято юзать альтернативный синтаксис для джавы, но это не так важно, суть не меняется.
Анонимчики, решил поучить джаву, ну а хули нет, и возникли трудности прям на старте. Написал я helloworld в классе Start и дальше ебнул в командной строке: -javac Start.java Успех, но пишу дальше ни одна из этих команд не работает: -java Start java -classpath . Start Error: Could not find or load main class Start
>>2095807 Убери из класса строку package, там геморрой. То что ты через точки перечисляешь - это должны быть папки, а cmd должна быть в их корневой директории итп.
>>2095815 Ты либо крестик сними, либо трусы надень. Если хочешь запускать из CMD без задней мысли, то не пиши в классе package. Если хочешь из идеи запускать, то оставь package и не трогай CMD.
>>2095755 Я курил и sql, и jdbc, и maven. Но стал читать про хибернейт, а там автор пишет всё через тесты и упоминает слои приложения, и я плыву. По отдельности механизмы могу понять, но сложить воедино - нет. "Ordinarily we’d use a service layer to encapsulate some operations, and in fact we will be adding a service layer as we proceed" - чего блять "We’re going to design our application much as we’ve written our example code; that is, we’re going to define an application layer (services), and call that application from tests. In the real world, we’d then write a user interface layer that used the services, just as the tests do" - мы такого не проходили "We’re going to put these methods into an interface, starting at Listing 3-16, but before we do that, we want to abstract out some basic services – primarily, the acquisition of a Session. To do this, we’re going to add a new module to our parent project – the “util” module – with a single class, the SessionUtil" - я это читаю и у меня какая то агрессия и зубы скрипят. Я всегда всё в main() делал, а тут какие-то модули с сервайсами, которые мы сейчас запускаем через тесты, но вместо них мог бы быть граф.интерфейс.
>>2095797 Хз конечно, может и правильно дрочить руками, чтоб получше понять что там происходит на уровне ОС со всеми этими файликами и путями, но ты не думал поставить ИДЕ и запускать все там, с уже приконнекченным рантаймом и без этой ебли бубна?
>>2095859 Баланс важен. Есть наоборот такие книжки, где авторы минуют этап абстракций, и прям сразу хуярят оконные интерфейсы. Это конечно вообще дно, потому что получится полуделфиблядь формошлепская, а не программист. Я к чему... смотри чтоб тебя не заебало это раньше времени, потому что без ИДЕ ты позднее дойдешь до интересного чего-то.
>>2095840 >Я всегда всё в main() делал Ну поздравляю, чё. Делай не всё в main(). В книге с 1 пика (там где автор пишет класс SessionUtil) супер простой код и понятные объяснения, я сам через нее вкатывался в хибер. Но тебе нахуй не нужен его класс для своего проекта, создай фабрику сессий в 3 строчки хоть в том же мейне и играйся с базой. Главное прочитай как добавить маппинги и конфигурацию бд.
>>2095644 Большинству похуй на сертификат. Как местным наносекам, так и работодателю. Это конечно круто, но он за тебя не вывезет. Тимлид травитель скажет, ок джаву ты знаешь, но представим есть двухмерный массив... Ну и даже на джуна надо знать спринг, Ты и от пивотала сертификат получать будешь? А потом сертификат постгреса и что нибудь связанное с кафкой, докером и тп. Другое дело конечно если ты на буржуев работаешь, но я хз на что там смотрят.
Код писать лучше научись. Пет сделай (круд на спринге) - этого для начала тебе хватит.
Анон, подскажи почему у меня нихуя не работает. Приложение не может приконектится к постгресу, пойти в постгрес через docker -it я тоже не могу, нахуй посылает. я где то с переменными окружения проебался?Или волюмы не туда вкинул и все наебулось?
>>2095945 Нихуя не работает это не описание проблемы. Покажи ошибку, которую выдает докер. Проверь, можешь ли ты вообще с постгресу подключиться (хоть PGadmin ставь, чтобы проверить).
>>2095923 Спасибо за ответ. Спринг будет на курсе тоже (по крайней мере в описании был, там не только подготовка на сертификацию, как я понял) + в рамках курса реальная практика на реальном предприятии. Я хз конечно, как оно будет по факту. Ну и здесь (в Германии), очень жестко дрочат на серты. С массивами я умею работать, как я говорил выше, есть опыт с кучей разных языков, но по чуть-чуть без углубления.
Какое гавно залить на гитхаб? У меня есть много разного говнокода на джавакоре (всякие чаты, простые приложения на свинге, парсеры), они сильно помогут при устройстве на работу или все-таки лучше написать вменяемый проект на спринге и хибернейте, с тестами CI/CD итд? В тех говнопроектах никаких тестов и прочего нет, там говнокод и ничего больше.
java vs go что выбрать? вроде на первой еще куча энтепрайза пишется на го только озон видел и кучу ноунейм говнеца но озон в то же время на жабе стартует новые проекты вобщем че выбрать для вката в бекенд?
>>2096288 Как считаешь, если нормально оформить, скажем, два проекта, а не один, то это будет плюсом? Смотрят ли на наличие нормального разделения на коммиты или на джуна не так важно?
>>2096412 Плюсом будет. Главное, чтобы ты смог нормально о них рассказать на собесе, если спросят, делал ли какие-нибудь проекты. Коммиты не так важны, даже если у тебя 10 коммитов и все в master, вопросов не будет. В любом случае, когда приходишь на реальный проект, понимаешь, что личные спринговые хеллоуворлды и весь их воркфлоу - это детский сад, который любой миддл сделает за пару часов.
Начинаю писать пет на спринговом стеке и пока в душе не ебу чем лучше забить простенький фронт без обилия жса и жс фреймов Может кто-нибудь что-нибудь посоветовать?
>>2076160 (OP) Хочу вкатиться 300кк/наносек, научился собирать говнопроекты из категории challenging, но теория там никакая. Где можно почитать про всякие обходы деревьев, солиды, круды и фабрики перед собеседованиями?
Я в ахуе, почему в последней идее нельзя просто блядь запустить таску gradle run с аргументами для приложения? И почему в run/debug configuration для запуска gradlew нельзя переопределить переменные окружения? Че за пиздец блядь?
>>2096901 Хуяны. Нахуя продвигать говно, с которым надо возится, как основной инструмент для работы с языком, который ты разрабатываешь, если есть альтернатива, с которой никаких проблем нет?
СОЗДАЁШЬ АНДРОИД-ПРОЕКТ ИЗ ШАБЛОНА @ ГРАДЛ ГОВОРИТ "НЕ МОГУ НАЙТИ КЛАССЫ ПУК СРЕНЬК" @ ГУГЛ СОВЕТУЕТ ОТКАТИТЬ ВЕРСИЮ ГРАДЛА, ВЕДЬ ВСТРОЕННАЯ СЛИШКОМ НОВАЯ @ РЯЯЯ ДИДЫ С МАВИНОМ ХМЛ НЕМОДНО
>>2096932 Чел этому хипсиерскому говну уже больше 10 лет. Уже все полимеры на поездах уехали пока ты проснулся. Грэдл стандарт всех новых проектов де факто
В Жабу никогда толком не вкатывался, но Госпаде, какое же говно ибаное IntelliJ клепает. Оно плужит, блять, на 10600k, 16 Gb. Я ебал. Каждое, блять, взаимодействие с UI с задержкой происходит. Эклипс после этого как мана какая-то. Посоны жабисты, искренне завидую вашим крепким нервам. Даже VS Code на обосраном Электроне после такой параши вообще как истребитель ощущается. Нахуй так жить? На достаточно актуальном железе набор текста в редакторе Idea с лагом, блять, вы чего?!
>>2096939 >>Грэдл стандарт всех новых проектов де факто Это только в андроиде и стартапах. В энтерпрайзе никто не собирается с мавена на гредл переходить.
Model - это entity pojo и сама база. Controller - по сути 3 составляющие: - Repository - код по i.o. с бд - Service - непосредственно бизнес-логика - Controller - i.o. c фронтом и маршрутизация View - html/js, браузер.
>>2097155 Нет, контроллеры должны быть достаточно тонкими, чтобы их можно было быстро переписать. Это просто точки входа, которые должны обращаться к сервисам, возвращать результат в специфичном для view формате и больше ничего.
Прохожу щас гиперскилл. Могут книжку хорстмана пересказать кратко или метод из доки. Еще могут предложить написать учебный проект, не объяснив ни 1 принципа написания приложения и вообще принципов декомпозиции. Вот цикл, вот массив - пиши морской бой. Вот ArrayList, у него есть add /get, пиши алгоритм на поиск ближайшего в множестве чисел. В смысле ты таксист, который не помнит математику, а не знает о методе sort, кого это ебет вообще ? у нас тут школа для ребят, которые все это на информатике проходили. Вот так я порвался.
смотрите вот говорят, что обычные сервлеты для каждого соединения создают новый поток? но это же плохой подход в 2к21 году, разве нет? открыть 10к соединений разом и все, сервер упадет? или нет? я так понимаю томкат работает именно таким образом. и спринг соответственно тоже? разве сейчас не принято писать асинхронный код для таких целей?
>>2097341 > вот говорят, что обычные сервлеты для каждого соединения создают новый поток? Нет, говорят, что каждый запрос выполняется в отдельном треде. Треды не создаются на каждый запрос с нуля, они обычно в тредпуле и берутся по мере поступления запросов, затем туда возвращаются. Если треды закончились, запросы тупо ждут, когда треды освободятся, либо сдаётся новый тред и добавляется в пул, сиотря как настроено.
>>2097355 А что насчет асинхронности? Сейчас ведь ее широко используют в этих ваших node.js и го. Даже nginx и тот асинхронный. На обычных сервлетах разве можно обрабатывать > 10к запросов в секунду? В итоге получается, что крупные приложения на спринге до сих пор работают на томкате, который использует древнейшие сервлеты?
>>2097365 Есть "реактивные" либы, например, spring webflux, там любят коллбеки и подобное. Ничего похожего на async/await в джаве нет, давно планируют завести виртуальные треды из project loom, чтобы было как в go, но это очень нескоро. Да и в энтерпрайзе это всё нужно редко, так что хватает сервлетов.
>>2097382 Ок. А вот все эти приложения, которые обрабатывают по миллиону запросов в секунду на джаве + спринге реально писать? Я просто понял, что в томкате в роли сервера выступает Coyot, который нормально подходит для небольших серверов. А если адский хайлоад, то реально запустить спринг на какой-нибудь йобе?
>>2097289 >>Вот к чему приводит эта хуйня перекатывать после 1000 постов. Если джава тред утонет без переката - значит джава все. Но пока такого не случалось.
Я прошел местный курс джава фулстак девелопмента, курс, который длился более полутора лет. Я опять же выполнил все домашние задания, написал все проекты. На выходе после всех курсов мои навыки: java, spring (core, boot, cloud, jpa, jdbc, security, mvc, data), hibernate, mongo db, elasticksearch, apache kafka, oracle, postgres, maven, tomcat, servlet api, jsp, junit, testng, selenium webdriver, postman, jmeter, html, css, bootsrtrap, javascript, typescript, jquery+plugins, react, redux, git и вполне возможно, что я что-то забыл. Я свободно пишу аппликации и на бэкенде, и на фронтенде. Я был лучшим учеником на своих курсах, это отмечали все. Но знаете, что самое интересное? Мои шансы устроиться на работу - 0%. Джуниорских вакансий практически нет, а на те немногочисленные, которые есть, отсеивают всех, у кого диплом не связан с компьютер сайнс. А при попытке податься на вакансии повыше джуна меня также отсеивают, так как понимают, что опыта реальных проектов нет. Мои попытки рассказать про мои учебные проекты только вызывают ехидную улыбку, все понимают, что социальная сеть для владельцев домашних животных или сервис аренды машин или, что еще смешнее, аппликация по регулированию уровня потребленных калорий – это все учебные проекты, а не реальные, их легко найти на обучающих платформах типа udacity. В общем, входа в профессию для себя не вижу в принципе.
>>2097522 Заметил что студентоту берут активней. Хотя не понятно на что расчет идёт. Они и на учебе будут загружены и работать парттайм с проебами. Кому такой человек нужен. А свободные люди, которые по сути точно такие же, уже не нужны.
>>2097688 > Ещё тормознее, чем гуй на жабе. Ну ВЗкод в некоторых аспектах быстрее идеи работает, но полноценной ИДЕ конечно не ровня. Ну и тормознутей чем жаваФХ нет ничего в принципе > Только на винде. Если через моно разрабатывать, он на всех десктопах будет работать
>>2097491 Без комплюхтер саенс бумажки в уютный жава мир не возьмут. Есть лайфхак: сейчас у рабовладельцев тренд на фулстак спецов. По факту большую часть времени занимаешься бэком на спринге, но и приходится жонглировать пропсами на реакте (на ангуляре если легаси проект). Такие позиции конечно будут не в кровавом энтепрайзе, но на галеры залетишь хоть с девятью классами.
>>2097732 Так он весь фулстек и перечислил, там в конце всякое жс говно идёт. Вообще это паста с хабра, где в комментах порешали, что проблема у чела с головою потому что он двачер
>>2097872 >>самые ходовые ArrayList, HashMap, HashSet >>понятно нах столько много их и где какую лучше использовать. Реализация разная и под разные задачи одни подходят лучше других. Вообще любой гайд по джаве почитай метанит или книжки, если ретроград, там распишут какие коллекции для чего нужны.
Java 11 LTS потребовалось почти 3 года с даты релиза, чтобы достигнуть первого места по популярности среди версий. Что же будет с Java 17 LTS?
https://snyk.io/jvm-ecosystem-report-2021/ В 2021 году разработчики впервые стали больше использовать Java 11, чем Java 8. Такими данными поделилась компания Snyk в своём ежегодном отчёте "JVM Ecosystem Survey" за 2021 год. Snyk проводила опрос совместно с Azul с февраля по март 2021 года среди более чем 2 тысяч разработчиков Java.
Как показывают результаты опроса, в продуктовых окружениях Java 11 использует 61.5% респондентов, что на 1.6% больше, чем Java 8. При этом последние версии Java (14 и 15 на момент опроса) имеют цифры 4.9% и 11.7% соответственно. Это существенно больше, чем постепенно уходящие в небытие Java 6 и 7, которые имеют всего 1.9% и 3.8%.
В разработке же новые версии имеют ещё большую популярность: Java 11 использует 64.3% респондентов против 50.1% у Java 8. Java 15 использует 25.6% опрошенных.
В отчёте также присутствует множество других интересных данных, например:
Наиболее популярный дистрибутив JDK – AdoptOpenJDK (44.1%). Второе место у Oracle OpenJDK (28%). Kotlin – второй популярный язык после Java (17.7% и 91% соответственно). Groovy использует 13% опрошенных. IntelliJ IDEA – с большим отрывом самая популярная IDE (71.6%). Следующий идёт Eclipse, у которого всего 24.6%. Среди билд-систем больше всего используется Maven (76.2%). У Gradle цифра более скромная – 38.1%.
>>2098012 Там все очень легко. Были задачки, типа калькулятора, которые я дропнул. Но это потому что там скучно было с парсингом ебаться, а не сложно. А потом бесплатная часть кончилась. Но 70% я прошел и очень доволен. Если не понимаешь - читай комменты. Если и с комментами не можешь, гугли ответ и разбирайся в решении. Если не можешь нагуглить - переходи к следующей задаче.
>>2098396 Ну оно, наверное, тормозное на слабых системах из-за статического анализатора, заполняющего оперативку своими синтаксическими деревьями. Чёт сомневаюсь, что есть ещё что-то с таким же набором фич или больше, но менее ресурсоёмкое
>>2098654 Пока обкатают, а спринг и остальное говно добавит поддержку 17, пройдёт ещё полгода. Самые радикальные хипсторки только к зиме на 17 пересядут.
Если есть опытные фуллстэки, поясните пожалуйста момент, правильно ли я понимаю происходящее.
Допустим надо отдать статическую страницу, мы просто используем Спринг МВС и возвращаем статику и кастомизируем её с помощью какого-нить таймлифа.
Если у нас фронт в виде СПА на каком-нить реакте, тогда мы уже используем архитектуру типа REST или другие и гоняем туда сюда Жсоны. Но рендеринг происходит в таком случае на клиенте.
Как быть, если хочется сделать сервер сайд рендеринг на спринге? Я видел реализации с помощью скрипт энжина, типа нашорна, но он медленный и теперь уже депрекейтед. Альтернатива - поставить грааль вм, но приложение раздувается, и слишком много лишних движений. То есть, получается остается только использовать ноду с её фреймворками в качестве дополнительного узла, который выполняет SSR и делегирует логику спрингу. Есть ли еще какие-то подходы?
>>2099599 Это как я понял отдельная утилита чтобы запускать джава приложения как сервисы. А мне надо просто вызвать из джавы какой-то шелл скрипт и завершить процесс джавы, но чтобы шелл скрипт остался работать.
>>2076160 (OP) Я пишу свой первый бекенд на java EE сервлетах, потом оборачиваю мавеном и заливаю на хероку. Для работы хероку нужно смотреть переменные окружения, как мне правильно это устроить? Куда мне эти переменные вставлять, чтобы код был независим от хероку и можно было в случае чего легко подставить свои?
>>2100120 System.getenv(). Ничего придумывать не надо, ты эти переменные можешь установить где угодно, например, при локальном запуске сервера приложений.
>>2100126 То есть прямо в коде? Ну я просто подумал, что грамотнее их как-то достать и сложить или как параметр в pom.xml или в web.xml. Ну и в коде уже эти параметры доставать. Типо нагляднее что ли что откуда я достаю.
>>2100754 >>2100761 >>2100804 Консольный чатик на сокетах с клиентом на свинге. Чистый jdbc вроде тоже se. Но можно данные и в тхт на клиенте хранить, как в некоторых клиентах асечки.
Есть несколько linkedList'ов (10, например). В каждом по 10 элементов. Мне нужно сделать из них один LinkedList с 10ю элементами. Брать каждую позицию из всех списков и, сравнивая их, помещать в итоговый 1 из выбранных значений. Как эффективнее всего это сделать?
Джависты, а неоплачиваемая стажировка это вообще норм как первая работа для студента без коммерческого опыта при условии что я живу в мухосранске, где вакансий для начинающих почти нет? Или это говорит о том что это компания хуйня и ей не особо то и интересны новые сотрудники, и я у них проработаю месяц, а потом они скажут что я им не подхожу.
>>2101495 >неоплачиваемая стажировка У меня одноклассник остался в мухосранске и работает бесплатно пыхарем в одной местной веб студии. Говорит, что обещают в штат взять, как только вакансия освободится.
Изучаю Hibernate с тестовой бд MariaDB. Как использовать @GeneratedValue для поля id, если в таблице у соответствующего столбца установлен auto_increment? Чтобы использовался встроенный в бд механизм генерирования. Ни один из вариантов (auto, identity, sequence, table) не работает.
>>2101415 >Итерироваться через цикл, в который вложен еще один цикл? Цикл нужен один, тебе нужно или 10 счетчиков по одному на каждый список или Deque и удалять элемент который был вставлен в результирующий список.
Поясните плиз за Redis и Aerospike Что лучше использовать? Я так понял сейчас многие с реддиса уходят на аероспайк, архитектурно очень отличаются. Что более актуально под кластеры сейчас?
Ребятишки, всем привет. Подскажите пожалуйста кто работает в крутых компаниях и банках, есть ли у вас что-то кроме Java и сопутствующих с ней технологий?
>>2101893 Сбер. Большинство внутрибанковских систем, конечно, написано на жабе, но всякое попадается: котлин (в бэке наравне с жабой и ещё на мобилках), питон (анализ данных), плюсы (банкоматы и разное специфичное оборудование), го/шарп/php (некоторые небольшие по меркам жабы приложения).
>>2101647 Чет с Deque я вообще не работал никогда, спасибо, почитаю.
Вопрос в сторону, Анон:
Я вот пытаюсь представить эти циклы-в-циклах или какие-то более сложные выборки и в голове сложно как-то представить четко. Более того, я даже когда на бумаге пытаюсь расписать (или в коде), то трудновато все равно это. Это пройдет со временем? Тупо опытом написания таких и аналогичных алгоритмов это исправляется? Или как-то можно еще чем-то потренировать мышление, чтобы легче было?
Анон, работал в джава бодишопах работающих на запад? Научат меня там код писать на уровне сеньора? Или лучше выбрать снг галеру на современном стеке? При условии что на зп и лычки мне пох, хочу побыстрее стать сеньором за 300к и готов грести года 2-3 в усиленном режиме.
>>2101969 1. Рисуй на бумажке/доске алгоритм и данные. 2. Тренируйся решать задачки. 3. Какие нибудь простые задачки решай вначале в блокноте, а потом проверь алгоритм в уме очень полезный навык если будешь собеседоваться в фаанг какой нибудь. А потому уже переноси в IDE/литкод и проверяй.
>>2102429 >Рисуй на бумажке/доске алгоритм и данные
Да вот делаю так, но все равно пока RAM в голове не справляется. Перерисовываю схемы по пять раз, но все равно полная картина долго строится и детали теряются. Когда какой-нибудь двойной цикл (вложенный один в другой) пытаюсь представить, то порой у меня в голове создается что-то типа бесконечного цикла. Зацикливаюсь и зависаю(
>>2102472 Тебе не надо представлять цикл, цикл это просто способ реализации алгоритма. А сам алгоритм это описание того что ты делаешь.
Например, как смержить два сортированных массива: ставим 2 указателя на начало массива, сравниваем элементы, записываем меньший в итоговый массив, двигаем указатель, повторяем пока не закончится один из массивов и т.д. Вот это и рисуй 2 входных массива с какими нибудь реальными данными, указатели в первом и втором, результирующий массив. И пошагово выполняй свой алгоритм, заполняй результирующий массив.
>>2100883 Можно и без свинга, клиент тоже консольный. И вообще, клиентское ядро в виде отдельного модуля организовать, ну и прилепить её к консольному и графическому клиенту.
Java в целом недостаточно сложна, чтобы отделить отличных программистов от посредственных. Может быть, это отличный язык для работы, но сегодня речь не об этом. Я даже могу зайти так далеко, что скажу — факт того, что Java не сложен, это особенность, а не ошибка — но это ведёт к данной проблеме. Это может звучать немного резковато, это просто моё скромное мнение, но есть две вещи, которым традиционно учат в университетах в курсе компьютерных наук (Computer Science, CS) и которые многие люди никогда полностью по-настоящему так и не понимают: указатели и рекурсия. В самом начале обучения в колледже вы проходите курс структур данных, со связанными списками, хеш-таблицами и прочими мелочами, с широким использованием указателей. Такие курсы довольно часто используются как курсы для отсева: они так сложны, что все, кто не обладает мыслительными способностями, необходимыми для CS, бросают, и это очень хорошо, потому что если вы думаете, что указатели сложны, то подождите пока вам не придётся доказывать факты теории неподвижной точки. Все те юные гении, которые в старших классах школы писали на Бейсике пинг-понг для Apple II, поступают в колледжи, выбирают CompSci 101, курс по структурам данных, и когда сталкиваются с работой с указателями, их мозги просто взрываются, и они решают перевестись на политологию, потому что теперь правовая школа кажется им лучшим выбором. Я много раз видел графики отсеивания студентов с курсов CS, и обычно процент выбывших составляет от 40% до 70%. В университетах склонны считать это разбазариванием; я думаю, что это просто необходимая естественная отбраковка людей, которые просто не смогут быть счастливы или успешны в карьере программиста.
...
В Java нет ничего достаточно сложного, чтобы реально отсеять программистов без той части мозга, которая отвечает за указатели или рекурсии, соответственно уровень отсеивания в университетах понижается, факультеты CS выпускают больше студентов, за это получают больше денег, и всем становится хорошо. Счастливые ученики Java-школ никогда не столкнутся с ужасными segfault при попытках реализовать основанные на указателях хеш-таблицы. Они никогда не будут делать безумных, сумасшедших попыток упаковать что-то в биты. Они никогда не будут загружать свои головы мыслями о том, как в полностью функциональных программах значение переменной никогда не изменяется, и все-таки оно постоянно изменяется! Парадокс! Им не нужна эта часть мозгов, чтобы получить красный диплом. Неужели я всего лишь один из тех старомодных ворчунов, вроде Четырёх Йоркширцев, которые хвастаются тем, как тяжело было жить в суровые старые времена? Эй, в 1900 г. латынь и греческий были обязательными предметами в колледже, не потому, что они были как-то необходимы в жизни, но потому, что их знание было одним из обязательных признаков образованного человека. В некотором смысле мои аргументы не отличаются от тех аргументов, которые приводили сторонники латыни (все четыре). «[Латынь] тренирует ваш ум. Тренирует вашу память. Распутывание предложений на латыни — это отличное упражнение для ума, настоящая интеллектуальная головоломка, и хорошее введение в логическое мышление», писал Скотт Баркер (Scott Barker). Но я не смог найти ни одного университета, который до сих пор преподаёт латынь в обязательном порядке. Неужели указатели и рекурсия — это латынь и греческий компьютерных наук? Итак, я легко соглашусь с тем, что программирование указателями сегодня не является необходимым в 90% разработки кода, и даже представляет опасность в промышленном коде. Да. Прекрасно. И функциональное программирование не так уж часто используется на практике. Согласен. Но это все ещё важно для некоторых из самых восхитительных программных разработок. Например, без указателей вы никогда не сможете работать над ядром Linux. Вы не сможете понять ни строки кода Linux или любой операционной системы без реального понимания указателей. Без понимания функционального программирования вы не сможете придумать MapReduce — алгоритма, который делает Google столь хорошо масштабируемым. Термины Map и Reduce пришли из Lisp и функционального программирования. MapReduce понятен любому, кто помнит из своего курса, эквивалентного 6.001, что истинно функциональные программы не имеют побочных эффектов и поэтому легко распараллеливаемы. Очень показателен тот факт, что в Google изобрели MapReduce, а в Microsoft нет, и это говорит кое-что о том, почему Microsoft до сих пор играет в догонялки, пытаясь заставить работать основные функции поисковой машины, в то время как в Google перешли к следующей проблеме: построению Skynet...(стирает) величайшего в мире параллельного суперкомпьютера. Я не думаю, что Microsoft действительно понимает, насколько они отстали на этом пути. Но даже вдали от задач, где важность указателей и рекурсии очевидна, их реальная значимость в том, что создание больших систем требует той гибкости мозга, которую вы получаете при их изучении, и тех способностей мозга, которые были вам необходимы для того, чтобы не вылететь с курса во время обучения. Указатели и рекурсия требуют от человека определённых способностей: рассуждать, абстрактно мыслить, и, что особенно важно, видеть проблему на нескольких уровнях абстракции одновременно. Поэтому способность понимать указатели и рекурсию напрямую связана со способностью быть великим программистом. Ничто в образовании, построенном полностью на Java, не отсеивает студентов из-за недостаточной гибкости их мозгов для понимания этих концепций. Как работодатель, я вижу, что 100%-Java школы начали штамповать выпускников курсов CS, некоторые из которых просто недостаточно умны для того, чтобы работать программистами с чем-то более замысловатым, чем Ещё Одно Бухгалтерское Приложение На Java, хотя они и управились со скрипом с «современной-упрощённой-для-тупиц» курсовой работой. Эти студенты никогда не справились бы с курсом 6.001 в Массачусетском Технологическом, или с CS 323 в Йеле, и, честно говоря, это и есть причина, почему, с точки зрения работодателя, диплом Массачусетского Технологического или Йеля имеет больший вес, чем диплом Дюка, который недавно стал Полностью-На-Java, или Penn University, который заменил Scheme и ML на Java, пытаясь преподавать на ней курс, который когда-то почти убил меня и моих друзей, CSE121. Дело не в том, что я не хочу нанимать умных ребят из Duke или Penn — я нанимаю их — просто мне гораздо сложнее понять, кто они. Раньше я мог сказать, что парень действительно умён, если он за несколько секунд может разобраться в рекурсивном алгоритме, или реализует функции, манипулирующие связными списками на основе указателей, с такой скоростью, с которой он может писать на листе бумаги. Но в случае выпускников школ Java я не могу сказать, имеет ли претендент проблемы с этими задачами, потому что у него просто не хватает соответствующего образования, или потому, что у него нет соответствующей части мозгов, необходимой для отличной работы в качестве программиста. Пол Грэхэм называет их Горе-Программистами.
>>2102951 Интересно, судя по тексту автору за 50, если он еще жив какое у него мнение было бы про нынешнее поколение питонистов и джавскриптеров (а эти языки теперь вместо жабки дают в вузах).
>>2102972 У деда поднялось давление, потому что в джаве нет указателей, на которые он дрочил всю жизнь (вместе с рекурсией) и потому что майкрософт отстала от гугла.
>>2102857 Ну я помню, что обычный tcp чатик без сохранения данных 1 на 1 у меня 20 строчек занимал на клиенте и 30 на сервере. Если сделать многопользовательский и записывать в тхт/sqlite ну еще 50. Такой себе проект.
>>2103011 ХХ сру это для фейковых вакансий, которые эйчары вешают для закрытия каких-то там юридических моментов. Я работу смог найти только написав на почту в компанию мечты бтв на их сайте тоже требовали вышку и год опыта на июня, но в реальности всем похуй оказалось
Сап, программач. Я вкатился в компанию на джуна на полставки. Уже третий день из задач - "ознакомление проектом". Сам проект сейчас в пост-МВП и на тестировании у клиента. Это нормально или нет? Что мне вообще могут поручить там поменять? Такая переодичная загрузка работой (никакая) привычное дело или нет?
Анончики, есть несколько Кафка листенеров, сообщения с которых кастятся в сущности и сейвятся. А есть сущность KafkaMessageHistoryItem, в который необходимо записывать ВСЕ сообщения со ВСЕХ листенеров. Как реализовать такое без kafkaMessageHistoryRepository.save(message) во всех слушателях?
Есть еще абстрактный класс с методом public abstract void consume(T message), от которого наследуются все другие листенеры и реализуют этот метод. Может в абстрактный класс можно хуярнуть этот самый save?
>>2103274 Я в своей первой компании помню месяц так страдал хуйней. "Настраивал" и "изучал" проект. Только потом начали выдавать задачи и баги на фикс, и те уровня "пофиксить возможную SQL-инъекцию"
>>2103274 Я вообще две недели "ознакамливался", нихуя не было понятно. Дальше были простые задачи типа фиксить опечатки или скопировать код из коммента тимлида из джиры в указанное место в проекте. Иногда бывало и такое, что нет задач, и целый день занимаешься хуйнёй. Потом задачи стали сложными, и хуепинания стало намного меньше.
>>2103118 >и 30 на сервере Подожди. Мы говорим про чат - аналог телеграма. Где юзер будет логиниться, выбирать нужный чат (или искать новый) и уже там писать. Может выбирать как конкретного пользователя, так и целую группу. Может создавать новую группу указывая юзеров и может устанавливать права админа. Такое на свинге или в консоли сделать практически нереально. Нужно сразу начинать как веб приложение на спринге, с нормальными HTML/CSS/JS интерфейсами и прочим. Ну или vaadin взять, вроде прикольная штука. Для стажера или джуна +- норм проект сойдет, только еще нужно тесты написать, подготовить CI/CD, мб в докер вообще запихнуть все. Ну чтобы попробовать как можно больше технологий. Само собой информацию хранить в БД, взять тот же постгрес + хибернейт.
>>2103011 Я нарисовал полгода, про былые заслуги отвечал уклончиво мол пилил фичи, фиксил баги. Джуна все равно больше будут по теории гонять, если что проси тестовое. Откликался само собой на 1-3 года, на "без опыта" и всякие трейни забей - там конкурс ебанутейший и денег не дадут.
Хочу сделать игру с переворачивающимися карточками на jframe. Не понимаю нескольких вещей. Как вообще здесь выводить картинки? Нужно, чтобы каждая карточка была объектом, а объекты в таблице или в самописном другом объекте? Где вообще все это писать? Рядом есть главный класс, но в нем нет никаких упоминаний о файле фрейма и наоборот. Где что прописывать и почему он все равно запускается при запуске проекта?
>>2103637 На джава SE ничего толком юзабельного не напишешь. Ну кроме как программ по выводу в консоль разного говна. Таких полно на литкоде и кодварсе. Что-то полезное как правило всегда идет в связке с БД и пересылкой данных по интернету. Ну или графику писать, движок свой на LWJGL, но это на мазохизм похоже. На чистой джаве я вот вообще не знаю что сделать интересного.
>>2103770 А почему кстати у многих платформ например тот же хттп сервер есть искаропки(питон, нода, пхп), а в джаве вся эта мозгоебля с сервлет апи и прочими библиотеками?
>>2103957 com.sun.net.httpserver.HttpServer Вообще всё это говно одинаково годится только для тестовых целей, в проде это никогда не юзают. Даже для разработки не годится, слишком уж мало они умеют, а тащить полноценный веб-сервер в стандартную библиотеку было бы странно.
>>2103968 >>2103973 Блин, вот я лох. Я не знал. В хорстмане, гиперскилсе и ментаните, которых я читал по se это не упоминается. А в многих туториалах по ноде/питону/пхп на первых страницах для демонстрации показывали встроенные серваки.
>>2103976 Просто жабу не принято считать "языком для написания сайтов", она скорее для написания бизнес-логики, которая типа особняком, и неважно, вызывается она через HTTP, JMS, AMQP или ещё как-то. Вот и не считают лишний раз об этом говорить.
Поясните за Spring! Как впечатления? Не превращает ли он обычные приложения в "black box"? Насколько глючное и занудное поделие, в сравнении с самой Java? Облегчает ли он жизнь отдельно взятого разраба, или служит только общим целям стандартизации? Какие модули заебись, а какие отостой?
Сколько времени объективно требуется для освоения по сравнению с, допустим, Java Core (при знании ООП, паттернов, etc)? Что сейчас можно считать признаком "знать Spring"? Уметь сляпать на нём Json-микосервис?
>>2104426 > Поясните за Spring! Как впечатления? Универсальный серверный фреймворк, без него придётся писать кучу велосипедов. > Не превращает ли он обычные приложения в "black box"? Разбираешься в работе ApplicationContext, и всё становится понятным, никакой магии. > Насколько глючное и занудное поделие, в сравнении с самой Java? Ни жаба, ни спринг не "глючные", иначе бы никто их не юзал. Занудное примерно настолько же. > Облегчает ли он жизнь отдельно взятого разраба, или служит только общим целям стандартизации? Облегчает намного. > Какие модули заебись, а какие отостой? Все хороши для своих задач. > Сколько времени объективно требуется для освоения по сравнению с, допустим, Java Core (при знании ООП, паттернов, etc)? Основы за пару недель можно понять и уже делать небольшие приложения. > Что сейчас можно считать признаком "знать Spring"? Уметь сляпать на нём Json-микосервис? Да.
>>2104448 Ни в каких и никогда. Их придумали из-за неверной мысли, что существуют ошибки, которые всегда можно обработать на месте. Но метод, бросающий исключения, нечего об этом знать не может, вдруг все, кто его вызывает, получают параметры извне и ничего сделать не могут, кроме как перехватить исключение и кинуть новое дальше. А раз так, зачем писать лишний try-catch? Но такое не компилируется, это тупая проверка на уровне компилятора, которая к рантайму отношения не имеет.
>>2104426 > Не превращает ли он обычные приложения в тормознутое раздутое говно Если задаешь такие вопросы, то ты понял суть этой параши Этот >>2104431 прав Первокуров >>2104446 игнорь
Вечер в хату. Начал вкатываться на каникулах. Задачка выдать пачку случайных int-ов и напечатать знаки сравнения. Крутой анализатор(tm) IntelliJ(r) начал жаловаться, сказал что знает как лучше и сломал мой код. Теперь он не печатает "равно". Хотя печатал до этого, кек. Чому так? Как теперь ему доверять с чем-то более серьезным?!
>>2105740 Она бессмысленная. Если А уже больше Б, то А уже никак не может быть меньше Б, но он ее все равно проверяет. Нахуя. Об этом прямым текстом написано в подсказке написано.
>>2105736 Берёшь да смотришь на любом фриланс-сайте. Говорят, что нет нихуя. Насколько я понимаю, обычно на фрилансе что-то небольшое клепают без планов на сильное расширение проекта -- под такие задачи в гораздо большей степени подходят языки типа руби, жс, пайтона и пыхи
>>2105762 Нет ты, ты обосрался, проверь трусы. Проверяется три условия, а не два. Проверка a < b тем более никогда не будет выполнена благодаря short-circuit, если a > b было удовлетворено. Так что щкольник тебя затролел и сломал твою Идею до кучи.
>>2105588 Поменяй вложенное тернарное говно на что-нибудь другое, ради меня, пожалуйста. Это просто отвратительно. Если больше строчек кода -- это хуйня. Ты лишнее просто в отдельный метод выносишь, но зато всё читаемо и красиво.
>>2105770 > Проверка a < b тем более никогда не будет выполнена благодаря short-circuit, если a > b было удовлетворено. Это очевидно. О чем вообще разговор
>>2105588 Проиграл с подливой. По логике Idea и некоторых двачеров если A > B = false, то A < B = true. А что если A >= B?! Или так в энтерпрайзе не бывает?
>>2105588 Похуй на быдлокод, но это ебаный стыд и понос. Ко-ко-ко, статический анализатор, ко-ко-ко инструмент современности, IDEA, смузи, IntelliJ, макбук, петушки. Ко-ко-ко-ко! Эклипс нинужон, нотепад нинужон! Я живу активной и полноценной жизнью, со статическим анализатором мои волосы розовые и шелковистые.
Ну вот в спринге на нубовом уровне нет многопоточки. Как минимум явно для кода крудошлепа. А в Андроиде на джаве? Если хочется ее немного поприменять, то должны же быть простые кейсы. Ведь андроид это про гуй, гуй это асинхронность, асинхронность в джаве через многопоточку.
ебать сегодня учил английский по фиолетовому плейлисту бебриса (тема животные) и это что же получается Maven муравьед съел муравья Ant? нихуя разрабы шутят
Здарова, мужики. Я написал код по гайдам с ютуба Sring Boot. Вы можете пояснить про волнующую меня вещь? Как я понял, мой View посылает команду в Controller. Откуда View знает, в какой Controller посылать команду?
>>2106183 >>Sring Boot >> Откуда View знает, в какой Controller посылать команду? хтмл ничего не знает, он посылает туда куда написано в атрибуте action (гугли <form>) Ты его не поставил, поэтому он отправит запрос на эту же страницу. Спринговый диспетчер сервлет(гугли как работает spring mvc) перехватывает все запросы и распределяет по контроллерам в соответствии с мапингом. В твоей аннотации PostMapping тоже нет значения, поэтому он считается как "/". >>Откуда View вью/представление в твоем случае это хтмл, который выплюнет спринг пользователю, а от пользователя приходит реквест/запрос.
>>2106183 Не твой view посылает команду контроллеру, а когда нажимается кнопка отправляется http post запрос на url страницы, на которой кнопка. Собственно контроллер и слушает http запросы и отвечает на них
>>2106245 А чем анализатор Eclipse хуже Idea? Почему это приводят как довод? У меня сложилось впечатление что у Idea смузихлебов указательный палец к мышке прирос.
>>2106422 В эклипсе анализатор не интеллектуальный (intelligence). Ничего выдающегося он посоветовать не способен. Максимум опечатки исправлять за троешниками первокурами.
>>2106533 В эклипсе эвристика в автокомплите работает не оч, дурацкие предлагает варианты сверху, даже в контекстах, приходится несколько вариантов вниз листать. Еще в идее автокомплит сразу подставляет переменную с именем похожим на параметр метода и может сразу все аргументы заполнить разом. Вот так то.
>>2106743 Eclipse очень шустрый и приятный на фоне монструозной черепахи IDEA последних лет, не в последнюю очередь благодаря нативному тулкиту рисующему GUI что под OS X, что под Win, что под GTK. Для изучения языка, поиграться и просто академических проектов то что нужно. Чуда анализатор IDEA постоянно показывает кучу абсурдных нерелевантных ворнингов и подсказок. Это только закрепляет в тебе плохие практики, либо ты перестаешь игнорировать ворнинги вообще. Для обучения это все зло.
>>2106426 Это тупой маркетинг, на который ты купился. Автокомплит Эклипса такой же контекстный, а вот всякие "подсказки" Идеи - абсолютно бесполезная дичь, в которой даже первокурсник не найдет никакого толку.
>>2105920 В андроиде любой пук надо делать асинхронно. И на любой пук есть либа которая делает его асинхронно. По крайней мере сложилось такое впечатление.
>>2107296 Так нужно андроидеру шарить в многопоточке? Или как во фронте можно даже не знать про евеент лупу, а просто пользоваться синтаксисом языка и либ.
>>2107404 Андроед это другой мир. Там 95% стандартной либы переписано под архитектуру платформы. И синхронизация там своя, и асинхронность, в тонкостях который придется заново разбираться. По ведру есть отдельный тред, если что.
Прошелся по кору, ничего писать на Java SE не могу (ноль идей, что хотел себе написал на другом яп), хочу сразу взять спринг с реактом и пилить клон реддита. Подводные такого прыжка? Нужно нырять перед спрингом в сервлеты, jsp и прочее?
>>2107479 Никаких подводных, почти все сразу переходят к спрингу и с чистой se не ебутся. Сервлеты помогут понять, как эта хуйня работает изнутри, но можешь отложить до лучших времён. На jsp забей.
Почему сервлеты такое говно ебучее,у меня мозг просто отторгает засовывание хтмл тегов в жаба код. Планирую просмотреть теорию и дальше при изучении jsf заниматься практикой. Много ли я потеряю если сделаю так.
спринг пробовал начать,стало много чего непонятно,решил начать с основ
>>2108457 > Почему сервлеты такое говно ебучее,у меня мозг просто отторгает засовывание хтмл тегов в жаба код. Потому что их создавали в те времена, когда это считалось нормой. Вспомнить всякие CGI на перле. > Планирую просмотреть теорию и дальше при изучении jsf заниматься практикой. Много ли я потеряю если сделаю так. Потеряешь время. > спринг пробовал начать,стало много чего непонятно,решил начать с основ "Основы" не помогут, и понятнее не станет. Лучше найти нормальную литературу по спрингу, чем тыкай мёртвый ЕЕ-стек.
>>2108458 Ну не знаю,я когда xml в спринге увидел охуел,прочитал про парсеры,понял в чем между ними разница,но сути все равно не понял. А тут на примере web.xml уже что-то объяснили. Да и почему потеряю время,спринг же все равно использует сервлеты, разве не лучше мне знать что и как там под капотом?
>>2108465 > Xml Ты нашёл какую-то очень старую литературу. Сейчас в спринге все легко настраивается джавой и аннотациями, хотя и хмл тоже можно. Смотри spring boot сразу. Сервлеты можешь потыкать, jsf не трогай.
>>2108469 Почему jsf не трогать? Это же вроде технология посовременнее чем сервлеты,да и удобнее тем что дизайн не в виде джава кода. Спринг бут я не осилю,я обычный спринг то не вывез
>>2108495 Jsf никому не нужен, он используется только в легаси. Молись, чтобы не попасть на древний проект, где его ещё юзают. В буте всё сильно упрощено и сделано за тебя, его наоборот осилить легче, чем классический спринг
>>2108502 Спринг работает на сервлетах, но не на jsf. Сервлеты могут помочь в дальнейшем изучении, но jsf сам по себе, это примерно как учить немецкий, думая, что это поможет выучить французский.
Помогите плес мне дураку с работой с БД Firebird. Я скачал на сайте FB драйвер - Jaybird-4.0.3, добавил его вручную к проекту, далее делаю всю вот эту муть: Class.forName("org.firebirdsql.jdbc.FBDriver");
Потом пытаюсь создать соединение: Connection con= DriverManager.getConnection("jdbc:firebirdsql:localhost:3050/c://db/myDB.GDB", "SYSDBA","masterkey"); Но при запуске все это валится с эксепшеном: java.sql.SQLNonTransientConnectionException: Unable to complete network request to host "localhost". [SQLState:08006, ISC error code:335544721]
Я как минимум не понимаю толком как вообще FB существует у меня на машине и как его должен драйвер найти. Я не ставил FB, специально, однако я могу смотреть указанную базу через IBExpert, и там все работает (библиотека gds32.dll лежит в windows/system32, но я не понимаю - это и есть что ли весь firebird?) Я конечно могу поставить нормально файрберд-сервер, но IBExpert же как-то обходится без этого. Сорян, наверное я косноязычный долбоеб еще к тому же и ничего не понятно че я высрал
>>2108645 Зачем тебе фаербёрд? Курсач? Насколько помню, название dll начинается на f, а та, что на g - от interbase и может не сработать. Для фаербёрда надо ставить сервер, это тебе не sqlite. Ещё там были какие-то проблемы с версиями 3.х, надо юзать 2.х. При установке надо как-то указать путь к dll.
>>2108655 >Курсач? нет, по работе надо утилитку которая будет кое-что шаманить в базе периодически. >а та, что на g - от interbase >Для фаербёрда надо ставить сервер Ну, возможно. Но когда я роюсь в этой БД через IBExpert, в коннекшен-пропертиз у меня Firebird 2.5, и все прекрасно работает без всякого установленного сервера. Да и есть embedded версии какие-то для фаерберда. Я бы уже забил на попытки, если бы EBExpert не доказывал что работать с базой можно в текущей ситуации в системе
>>2108205 Это все равно будет выглядеть как говно, но можешь просто передавать все, но ненужные значения передавать как пустые строки, а затем проверять в контроллере if-else, возможно есть какая-нибудь либа для этого, но я не знаю
>>2108658 Так ты проверь работает у тебя что-нибудь на порту 3050 или нет? Какой адрес слушает процесс, который работает на порту 3050? Может он вместо localhost слушает адрес определенный адрес, а не 0.0.0.0
>>2108685 > Потом пытаюсь создать соединение: > Connection con= DriverManager.getConnection("jdbc:firebirdsql:localhost:3050/c://db/myDB.GDB", "SYSDBA","masterkey"); > Но при запуске все это валится с эксепшеном: > java.sql.SQLNonTransientConnectionException: Unable to complete network request to host "localhost". [SQLState:08006, ISC error code:335544721]
Теперь подумай еще раз. Куда ты подключаешься и почему появляется ошибка?
>>2108689 Я же сразу сказал, что толком не понимаю что делаю. Если ты знаешь в чем проблема и что нужно сделать, может просто подскажешь? Что я дебс я и так в курсе, чел
>>2108689 Ну то есть я понимаю, что скорее всего FB просто не работает и невозможно к нему подключиться через этот порт, потому его и нет в списке. Но что с этим сделать можно? И как IBExpert подключается? Может можно как-то заюзать тот порт через который это он делает?
>>2108693 Ты пытаешься создать соединение к СУБД по адресу localhost:3050. У тебя нет процесса, который обслуживает такой адрес и порт, поэтому ты получаешь ошибку. Скорее всего, что-то с сервером. Возможно, его у тебя на машине вообще нет. Ищи в свойствах IBExpert куда ты реально подключаешься и что за базу он открывает.
>>2108704 Адрес куда указывает? Это путь в файловой системе? Алсо, у Firebird есть возможность ковыряться в базе без серверной части. Возможно, у тебя установлена только клиентская часть.
>>2108701 Все же поставил этот бляцкий сервер и сразу же все в некотором роде получилось. Теперь он говорит java.sql.SQLException: unavailable database, но с этим щас поебусь и может все получится. Спасибо, короче. Хотя что не получилось без сервера все же бесит.
>>2108718 Все, вроде взлетело. unavailable database было из-за того что надо перед "localhost..." двойной правый слеш (я еблан, даже в документации на их сайте этот формат четко прописан), а потом был I/O exception, потому что IBExpert занимал базу.
>>2108731 Мог бы еще попробовать почитать документацию драйвера и попробовать подключиться локально через строку подключения: jdbc:firebirdsql:local:<absolute path to database>
>>2108733 я так пробовал да и документацию читал, он мне писал такую ошибку: Unable to load native client library. Check configuration of jna.library.path как-то быстро нагуглить че делать я не смог и забил на эту ветку временно
>>2108733 Ну кстати, хз повлияло ли бы это, но в том пути который я добавил к jna.library.path не было библиотеки fbclient.dll, я ее уже потом нашел и туда сунул. Может если б была то все бы получилось
Как мне это говно правильно мапить в спринге? какие-то связи использовать тимпа onetomane итд ? Где про это можно прочитать с примерами мапинга и работы вложенными документами?
>>2083168 >неиронично пользоваться устаревшей неудобной хуйней в 2021, при этом требовать, чтоб разработчики пихали поддержку этого говна в свои продукты Сложно на x64 перейти?
>>2108913 Я может че то не понимаю, но разве ты не можешь сделать модель которая бы соответствовала коллекции в монге, агрегируя другие классы, и спокойно мапить на нее?
Сап, джавач. Я вчерашний долбоеб с JDBC. Может кто знает, есть ли способ настраивать как-то возможность подключения к уже используемой какими-то приложениями БД? Если в ОС запущено хоть что-то, что юзает БД, то Java отказывается к ней подключаться (java.sql.SQLException: I/O error during "CreateFile (open)" operation for file...) Однако сами приложения без проблем юзают ее одновременно. Как пофиксить?
>>2109192 Что за база? Sqlite? Вообще судя по error during "CreateFile (open)" ты пытаешься не открыть базу, а создать новую с тем же именем что уже есть.
>>2109331 FireBird 2.5 Он ругается именно на попытку открыть файл базы (.GDB), типа, что он занят другой программой (IBExpert). Если ИБЭксперт гасишь, все становится норм. Это бесит. Мне надо одновременно иметь возможность там рыться, когда база подключена к другим приложениям. файл базы само собой.
>>2110027 Вопрос относится к настройкам FireBird. Не уверен, что тут тебе смогут помочь. Судя по всему IBExpert получает эксклюзивные права на чтение/запись. Я бы попробовал заставить IBExpert работать не напрямую с файлами БД, а через сервер - так же как ты джавой пытаешься соединиться. Тогда движок СУБД сам будет разруливать проблемы с чтением/записью.
А на джаве реально вся работа как правило заключается в дрочке спринга? Я вот сильно заинтересовался всякими распределенными отказоустойчивыми системами, на джаве вообще пишут такое? В РФ только у яндекса видел подобные вакансии, но там на плюсах все.
Почему в жаве строка–это не массив char, какой больной мозг придумал эту чушь? Почему мне приходится извращаться, чтоб нормально работать с этой самой строкой? Вон в сишке(Да и в пистоне) с этим никаких проблем, почему же с жавой до такого не доперли? И почему, блядь, сложно как-то договориться между собой, чтоб примерно одинаково все было? То есть для строки length()–это метод, а для массива length–не метод? Была бы строка массивом, такой хуйни бы не было.
Так вот, вопрос такой: почему в жаве строка такое убожество неудобное? Какой гений решил, что так будет лучше?
>>2110321 Слышь ты, младопидор, а с чего ты решил что ты можешь разевать тут свое тупое хлебало? То, как сделано, хорошо хотя бы тем, что можно юзать миллионы готовых методов работы со строками, а не ебаться всякий раз когда надо распарсить очередную хуйню согласно какой-то хуйне при условии хуиты. Если ты такой гений у своей мамы родился, юзай буквально массив чаров, никто тебе этого не мешает.
>>2110321 Наоборот строки в джаве были бы куда неудобнее, если бы сделаны как массив чаров.
>>2110321 >То есть для строки length()–это метод, а для массива length–не метод? Да, все так. А в коллекциях вообще size(). Просто так исторически сложилось. Тем более, что массивы довольно низкоуровневая вещь, и их лучше никогда не использовать.
>>2110472 Ну да, лучше, когда латинские буквы считаются за одну, русские за две, а иероглифы вообще за четыре. И ебля с icu и велосипедением строк в каждом проекте - это никакая не ебля, а фича такая.
>>2110472 >Просто в строке приходится считать символы. Нахуя так сделано? Считать символы, это ты что имеешь в виду? Строки состоят из code unit, которые в свою очередь состоят из code point. String.length() возвращает количество code units. Метод String.charAt() возвращает именно code unit, а не code point. И это внезапно очень удобно. Не нужно думать о том, что русские символы в действительности занимают две кодовые точки, а не одну, как латинские.
>>2110321 > Почему в жаве строка–это не массив char, какой больной мозг придумал эту чушь? До какой то версии это был массив чаров и на символ уходило 2 байта. Потом ввели компактные строки и символы в строках записываются в 1 байт там где от них это требуется > Вон в сишке(Да и в пистоне) с этим никаких проблем, С чем? > И почему, блядь, сложно как-то договориться между собой, чтоб примерно одинаково все было? То есть для строки length()–это метод, а для массива length–не метод? Была бы строка массивом, такой хуйни бы не было. С таким лучше сразу пиздовать на завод > Была бы строка массивом, такой хуйни бы не было. Строка это инкапсуляция массива символов в любом языке и ничего нового тут не придумать > Так вот, вопрос такой: почему в жаве строка такое убожество неудобное? Какой гений решил, что так будет лучше? Твой помпаж что ты не понимаешь базовые вещи из-за своего скудоумия или лени
>>2110515 Наоборот. Code Point - это символ. Он может состоять из 1 или двух Code Unit. Code Unit - это обычный джавовский char, который использует 2 байта и кодируется как UTF-16. Поэтому Code Point может занимать аж 4 байта в некоторых случаях.
length() возвращает именно количество Code Unit (обычных чаров). "".length() вернет нам 2, хотя в строке всего один Code Point. Чтобы получить реальную длину строки, какую мы видим, нужно использовать "".codePointCount(0, "".length()). Этот метод нам вернет 1. Методы charAt() и codePointAt() возвращают Code Unit и Code Point соответственно. Если в строке есть хитрые символы, то нужно брать методы для работы с кодовыми точками. Если латиница/кириллица (или все что укладывается в 2 байта), то можно использовать обычные методы для работы с чарами. Почему так уебански сделано? Исторические причины. В первых версиях юникода число символов не превышало 2^16. Вот и разработчики оставили двухбайтовый чар. Однако потом в юникод решили добавить символы чуть ли не всех нахрюков мира, включая практически неиспользуемые, поэтому в юникоде сейчас 150к символов, что сильно больше 65536. Если бы изначально чар сделали 32 битным, то никаких проблем бы не было, уместились бы все символы с огромным запасом, но всем было похуй, как мне кажется.
>>2110554 Блядь, юникодовские симолы сожрала макаба. В общем, советую не ебать этой темой мозг, на собеседованиях такое у меня ни разу не спрашивали ибо это самое настоящее дрочево. Вряд ли кто-то в энтерпрайзе будет вставлять смайлики в текст или писать на языках каких-то вымерших африканских племен
>>2110554 > Если бы изначально чар сделали 32 битным То OutOfMemory на пекарнях тех времен. Даже в VisualVM если смотреть на состав кучи, там строки сжирают больше всех памяти. Не нужны они такими жирными.
>>2110719 Запущен точно, ибо пока я не установил его и не запустил - ничего не стартовало (на Джаве). В URL коннекшена стоит локалхост:3050. Сторонние приложухи (я юзаю две) обе работали и без сервера, просто указываешь им путь к файлу БД и все. Олсо, картина изменилась: теперь у меня Джава не конфликтует с IBExpert-ом, но зато еще одна левая приложуха блокирует и Джаву, и IBExpert. Может это потому что у меня там древний 32-битный ФБ установлен на 64-битную венду, и что-нибудь там с моделью параллельного доступа к файлу сломалось, я не ебу как все это работает. Позже поставлю 64 бит на пробу.
>>2110737 Серверу пофиг сколько коннектов к нему открыто, хоть 0, хоть 100. Никто друг другу мешать не должен.
>но зато еще одна левая приложуха блокирует и Джаву, и IBExpert Скорее всего приложуха работает с базой как с файлом и лочит его, соответственно сервер уже не может открыть базу надо смотреть логи сервера, на предмет ошибок.
>>2110752 Да обе приложухи работают с БД без всякого сервера, причем сначала они друг другу не мешали, а теперь почему-то мешают (причем ошибка во всех случаях звучит в точности одинаково, только иногда ее джава мне высирает в эксепшене, а иногда в окошке ИБЭксперт). ИБЭксперту надо только путь к файлу базы указать, и к библиотеке gds32.dll
>>2110319 >>калькулятор онлайн калькулятор ипотеки с параметрами: срок, начальная сумма, ставка от банков (все или на выбор - данные подтягиваются с апи банков и кешируются), может доп условия какие то льготные >>ежедневник корпоративная система учета проектов/задач на несколько пользователей с авторизацией и распределением по ролям, поиск и фильтрация задач по параметрам, рест апи, можно фронт на жс сверху прикрутить с графиками, берндаун чартами и тп. >>что там еще ? соглашусь с >>2110320 работу найди, сам ты ничего сложного не напишешь
А это только в России используют продвинутые джава технологии? Я про Spring. Сейчас чекнул вакансии в США на линкедине - сплошная параша, где требуют 6-10 лет опыта в J2EE и просят на нем писать. Я вот думал, что эта технология полностью заброшена, а тут вон оно как оказывается. Может реально свитчнуться в го/ноду, пока не поздно?
Привет, изучаю Яву. Наставника никакого нету. Основы вроде выучил, но понятия не имею как должно быть правильно по серьезному. Можете дать какие-нибудь проекты на гмтхабе не очень большие, чтобы поизучать их, посмотреть как правильно пишут многопоточность и все такое. Ну не говнокод, с тестами там. Но и не слишком сложные, чтобы не 150 уровней абстракций и миллион строчек кода.
>>2111919 > чуть попропще, поменьше магии Зато призодится ставить сервер приложений, без которого надо собирать руками конструктор из tomcat, openejb, weld, jersey, hibernate и прочего.
>>2111937 А какие есть сервера приложений, поддерживающих 11 жабу и jakarta 8? Вроде WildFly только живой, а остальные сдохли, либо до сих пор выше 8 жабы не смогли обновиться.
>>2111944 WebLogic 14c должен поддерживать 11 жабу и jakarta 8. GlassFish больше не поддерживается Oracle, вместо него выпущен Payara, он тоже поддерживает 11 жабу.
>>2111920 >Название у нее какое то неприятное. Молод ты, и не познал истинную мудрость апачей.
>>2111937 >Зато призодится ставить сервер приложений, без которого надо собирать руками конструктор из tomcat, openejb, weld, jersey, hibernate и прочего. А то, что у тебя в спринг бут по умолчанию томкат, хибер и куча прочего завернуто, тебя не смущает? Сейчас спринг это такой же сервер приложений. Они начинали с легковесной альтернативый J2EE, а в результате сами стали такими же.
Аноны, а на ваших работах есть новые проекты на джаве? Ну, которые стартовали в 2020 или 2021 году с нуля и выбрали джаву как платформу, а не go или ноду?
>>2112160 Ну, сейчас везде монолиты пилят на микросервисы. Но я бы не считал это новым проектом. И бут тоже по сути является всего лишь абстракцией над уже существующими инструментами.
А что конкретно нового пишут на жабе? Ну вот чтобы в конторе взяли и решили писать полностью новый проект на жабе. Такое вообще бывает сейчас?
Грустно наблюдать за тем, как постепенно заканчивается эпоха жабы. Конечно, на ней будут какое-то время еще писать, и даже через 5-10 лет, наверное. Но другое дело в том, что новых, пригодных к использованию в энтерпрайзе языков так и не придумали. Го - в нем нет ООП и вообще он больше походит на Си с GC и модными потоками. Rust - тяжелый, сложный язык, который больше подходит для системщины, чем для чего-либо другого. Что еще есть из нового? Нода? Питон? Не уверен насчет них.
>>2112186 Чет несостыковочка какая-то: эпоха для джавы умирает, но в тоже время замены ей нет, ты или крестик сними, или трусы одень. А если ты имел ввиду, что конкурентов, мол, нет и поэтому будет деградировать, то можно вспомнить тот же шарп, чем тебе не конкурент
>>2112173 Я не про распиливание монолита на микросервисы, а про написание проекта на них с нуля. Да, кто-то считает, что это хуёво, но в реальности это очень широко практикуется, и никаких проблем нет. Что конкретного? Да всё, что можно, то и пилят. Ты же не можешь ответить "в общем", что именно пилят на го или ноде, вот и в жабе ситуация ровно такая же. >>2112186 Ты вообще хоть раз открывал вакансии и сравнивал с другими языками, или откуда у тебя такая уверенность, что эпоха жабы заканчивается?
Пасаны, как хранить пароли? В бд есть настройки пользователя в которых хранится адрес какого-то сервиса и лог/пасс от него, и в определенный момент нужно туда постучаться. Как быть?
>>2112314 А, то есть до собеседований с командами ты так и не дошел? Просто интересно, где там вообще джава нужна, кроме очевидного маркета. В вакансиях на их сайте указано, что джава вроде есть, а вроде все на плюсах/го пишут.
Откосил от армии по дурке. Могут ли возникнуть проблемы при устройстве к основным джава работодателям - банкам и прочему энтерпрайзу? Слышал всякие истории про полиграф и про то, как СБ иногда давал негативное решение просто потому что у человека есть ипотека.
>>2112469 Я свои проекты перестал писать почти сразу, как устроился работать в 2013 году. Когда ты весь день сидишь перед компом в этой ебучей IDE, то приходя домой, меньшее, что тебе хочется — садиться за комп, не говоря уже о пет-проектах. Я и в игори не играю дома. Зато с пацанами в сракбол — самое оно.
А вообще я тебе вот что скажу. За свои восемь лет я уже повидал индустрию и видел лютых говнокодеров, которых руководство очень ценило, ибо они быстро решали поставленные задачи. А баги? Да хуй с ними, найдут — починим. Видел я и всяких перфекционистов, которые вылизывали и вычёсывали свой код, архитектуру планировали, паттерны-хуяттерны, и регулярно получали пиздов от боссов из-за проёбанных сроков.
Так что анон, мой тебе совет: забей хуй на эту пресловутую "профессиональность". Твоя цель: научиться как можно быстрее решать поставленные задачи. Насколько это будет по-говнокодски — дело десятое.
И вообще, не жабой единой ценен погромист. Освой linux, научись локалку поднимать из виртуалбоксов со всякими локальными днс-серверами, шлюзом с проксёй и впн-сервером, облако какое-нибудь освой (AWS или Google Cloud там), и будешь норм пасаном.
Есть ли какой-то простой и единообразный способ превращать все те функции которые напрямую меняют объект и возвращают void в те функции, которые возвращают измененный объект. Простейший пример — функция .sort(), применяемая к List. Есть ли синтаксический сахар чтобы она возвращала упорядоченный массив? В сочетании со стандартными геттерами и сеттерами, приходится создавать переменную List<String> listToSort = someObject.getList(), вызывать listToSort.sort() и класть обратно someObject.setList(listToSort). Или то что я хочу это антипаттерн и так сделано специально?
>>2112516 Обобщить это можно, написав метод из трёх строчек, который будет клонировать переданный объект, передавать его в переданный метод и возвращать склонированный объект после изменения. Проблема в самом клонировании, изнутри метода невозможно определить, нужно ли глубокое копирование, или достаточно взять ссылки из полей, из-за этого не рекомендуют юзать clone().
>>2112173 У тебя странный взгляд на вещи. Вот есть контора, в ней работают программисты, они пишут на Яве. На каком языке они будут пилить новый проект? Наверное на го, да?
>>2112194 Ну тащем то Го и Раст при должном использовании вполне могут отхватить часть рынка жабы/шарпа. Писать на языках с VM стало не круто, во многом благодаря склонности этих языков к накапливанию легаси. Вон, скажи любому толковому разрабу, хочет ли он поддерживать древнее говнище на IBM WebSphere и Java 8. Ну или говнище чуть новее, на 3-4 спринге с кучей XML конфигов, и возможно, на 11 жабе, когда уже будет 17 или 23 LTS. Джава и JVM отличные платформы, но вот сам энтерпрайз делает всю разработку настолько каличной, что порой хочется выкатиться куда-нибудь в молодежный го или жс.
>>2112554 Ну нас еще год назад некоторые команды начали на го мигрировать. Сейчас на джаве ничего нового не пишем, только поддерживаем старые монолиты и то, что успели на микросервсисы распилить. Все новое отдают гошным командам.
>>2112801 Думается мне, что если проект с го или с нодой поживет лет так 5 и больше, то там тоже будет несусветное легаси, я не думаю, что это прерогатива жабы или шарпа.
>>2112809 Вокруг жабы сформировалась инфраструктура, без которой вообще никуда. А на том же го/расте не принято пользоваться огромными фреймворками вроде спринга или серверами приложений, на которых завязано вообще все. Там ты можешь написать велосипед или выбрать те инструменты, которые тебе нравятся. Здесь же приходится ждать пока обновится джава, потом пока обновится спринг, хибер, потом подождать года 3-4, пока кто-то задумается о том, что пора бы переползти на более новые технологии, потом выясняется, что некоторые критичные участки написаны сто лет назад и используют glassfish/websphere, которые на новых жабах работать не умеют и на них сам оракл и ибм положили хуй. Ну и в итоге переезд откладывается и откладывается, потом оказывается, что тимлидов и сеньоров, которые могли бы поддерживать это древнее говно, почти не осталось, а современные зумеры в жабу не сильно хотят, а если и хотят, то в XML конфиги плохо умеют, не говоря уже о EE, и вообще они ничего кроме спрингбута не знали. Потом приходит новое руководство со своими шизоидными маняидеями и решает оптимизировать процессы разработки шобы было быстро модно молодежно, нанимается команда гоферов, которая переписывает те самые критичные участки на современное говно, современные жабовые части (там где уже микросервисы и спрингбут) оставляют и развивают, относительно среднего возраста жабу (там где 8 версия, монолит, и 3-4 спринг с кучей ХМL) объявляют deprecated и решают либо переписывать на джаве, либо отдать гоферам. Вот так и живем. Это кстати пример современного модного энтерпрайза.
>>2112822 > на том же го/расте не принято пользоваться огромными фреймворками вроде спринга или серверами приложений, на которых завязано вообще все. Может потому что на этом говне просто физически невозможно сделать что-то большое и сложное?
>>2112822 >Там ты можешь написать велосипед или выбрать те инструменты, которые тебе нравятся. Никто не мешает писать на джаве свои строки, очереди и слайсы, используя при этом gradle kts. Только потом не надо жаловаться, что тебя за это обоссали.
>>2112949 Большое и сложное нужно разделять на маленькое, простое и легко поддерживаемое. На небольших проектах го вполне справлется, а раст тем более. Тяжелые монструозные монолиты сейчас уже никто не пишет.
Аноны пытаюсь осилить ООП c дженериками, путаюсь где какой класс в T указывать: abstract class rabotnik<T>, kassirPyaterochki extends rabotnik<kassirPyaterochki> ? или тут уже T не нужен ? допустим у меня разные работники, каждый делает работу по своему, работа разных типов.
>>2112963 >>разделять на маленькое, простое и легко поддерживаемое А не получится в итоге, что вместо монструозного приложения, получится монструозная инфраструктура? Чем 100 сервисов внутри одного приложения хуже 100 отдельных приложений при высокой связанности?
Реактивный спринг это вообще популярно? В рекомендациях вылетало и я начинал читать одну статью и один видос смотреть. Честно говоря не осилил. Я в таких случаях комменты смотрю, но их как-то маловато было. Может это реально мало кому нужная экзотика?
>>2114477 И уже можно ходить по собесам? У меня вот с аутендификацией не очень и вообще с конфигами. Посмотрел с полдюжины примеров - все равно какая то магия.
Что думаете? Про компанию в инете в основном плохие отзывы. Задержки зп на несколько недель, плохое отношение, кто-то про серую зп писал, премии не выплачивают и т.д.
Но мне по сути только опыта набраться. Пох на задержки и т.д. На собес уже позвали. Знания у меня по java нулевые, ибо изучал совсем другой язык, но синтаксис у языков примерно одинаковый, разве что встроенные методы не буду знать.
Короче говоря, планирую вкатиться через них. 3 мес. стажироваться, потом устроюсь, год отработаю и свалю в норм компанию.
Как вы боретесь с бойлерплэйт-кодом? используете Kotlin Если с сэттера и и геттервми все понятно и IDE за тебя их нормально создаёт, то вот например с equals и hashCode я не совсем понимаю. Если вызывать с помощью IDE генерацию кода equals то в целом все понятно с примитивными/базовыми типами и enum константа ми, там идёт тупо сравнение например: this.id == имяОбъекта.id А вот с объектами не совсем въехал. Ведь при автоматической генерации импортирую Класс Objects из пакета java.util и у этого класса вызывается метод equals: Objects.equals(this.name, имяОбъекта.name) Только вот непонятно как он сравнивает, также как и обычный клаас Object только ссылки? В интернете толком инфы нет Я вот просто вручную, когда переопределял equals, то писал так: name == имяОбъекта.name || (name != null && name.equals(имяОбъекта.name)) И когда тебе надо много таких объектов сравнить в переопределенном equals, то легко запутаться. С hashCode тоже самое, у класса Object вызывается метод hashCode, куда передашь как параметры массив полей класса. Такое ощущение, что это какой-то чёрный ящик.
И играет ли огромную роль сколько параметров в конструктор можно передавать? Вот у меня есть класс, у которого 9 полей для описания сущности. Я передаю 8-9 параметров для их инициализации. В одном из учебников я прочитал, что если при создании класса передаешь 7 и более параметров в конструктор, то это фиговая идея и класс надо перепроектировать, возможно что-то совместить. P.S. Но я чёт попробовал проанализировать ещё раз и вот прям не убрать не добавить, все ок выглядит с 9 параметрами.
>>2114877 Если конкретно про equals, то там есть требования: - Ни один объект не равен null - Любой объект равен самому себе - Объекты разных классов не могут быть равны друг другу (тут есть нюансы) - a.equals(b) должен давать тот же результат, что и b.equals(a) коммутативность - если a.equals(b) == true, то всегда a.hashCode() == b.hashCode(), обратное может быть неверно - Для сложных классов логика сравнения своя с соблюдением вышеназванных требований
При большом количестве аргументов в конструкторе разумнее использовать паттерн Builder. Но рекомендация — это всего лишь рекомендация, так что если ты прям видишь, что нужно именно так, то делай так.
>>2114877 >>Как вы боретесь с бойлерплэйт-кодом? lombok >>Если с сэттера и и геттервми все понятно @Getter @Setter >>вот например с equals и hashCode я не совсем понимаю. @EqualsAndHashCode(of={"id", "name", "description"}) >>Objects.equals(this.name, имяОбъекта.name) >>непонятно как он сравнивает если непонятно - посмотрел бы реализацию public static boolean equals(Object a, Object b) { return (a == b) || (a != null && a.equals(b)); } >>В интернете толком инфы нет докумен6тация в самом классе - в джавадоках, ну или на сайте оракла смотри >>И когда тебе надо много таких объектов сравнить в переопределенном equals, то легко запутаться. идея equals и hashcode тоже может сгенерировать >>у класса Object вызывается метод hashCode он просто проходится по всем полям и суммирует результат >>Такое ощущение, что это какой-то чёрный ящик. примерно так, там нативная боебень для расчета хэшкода, если интересно - поищи на хабре статью, но тебе это ничего особо не даст >>И играет ли огромную роль сколько параметров в конструктор можно передавать? Вот у меня есть класс, у которого 9 полей для описания сущности. Я передаю 8-9 параметров для их инициализации. @AllArgsConstructor Но вообще это как то много, у тебя там не получается, что половина полей нулевых/дефолтных значений? Может тебе билдер сделать? Если это какое то ДТО то погугли маперы, типа MapStruct/ModelMapper, чтоб самому код не писать Если это @Entity не забудь добавить пустой конструктор (@NoArgsConstructor). Ну и для энтити конструкторы с параметрами лучше вообще не делать - сетерами/маперами настроишь. >>Но я чёт попробовал проанализировать ещё раз и вот прям не убрать не добавить, все ок выглядит с 9 параметрами. наверняка часть полей можно вынести в отдельный класс и сделать отношение @OneToOne, а часть - в суперкласс, если таких сущностей несколько.
>>2078731 Если тебе нужен индекс, юзай обычный for, обычно нужды в нем нет потому что интересны сами данные Щас бы foreach использовать сегодня, из 2к10 дорогу проебал?
>>2114892 > - если a.equals(b) == true, то всегда a.hashCode() == b.hashCode(), обратное может быть неверно Зачем тогда в сравнении сравнивать поля? Сравнивали бы тогда хеш коды и всё.
Хеш-код — это 32-битное целое число, то есть общее количество таких чисел заведомо ограничено. В то время, как вариантов классов и объектов бесконечно много. Следовательно, у тебя рано или поздно возникнет ситуация, когда два абсолютно разных объекта будут иметь одинаковый хеш-код (это называется коллизия).
Поэтому простого сравнения хеш-кодов недостаточно.
Как же я заебался с этой обосраной связкой gradle+kotlin. НИХУЯ не работает, идея нихуя не видит, на каждую проблему есть баг на жидбрейнс и вопрос на стаковерфлоу, оба без ответов. Заебало это дерьмище блядь.
А принципиальная разница в чем? Я помню что-то там про то что @Bean это ручное создание бина, из класса который не управляется аппликейшн контекстом, это так?
Почему так нахуй. Он должен выводить айм чайлд айм чайлд, ведь я перезаписал эту строку в наследнике. Почему вывод зависит от типа переменной? Так сделано намеренно или это из-за каких-нибудь технических ограничений/особенностей? Методы ведь перезаписываются и вызываются нормально, с полиморфизмом.
>>2115788 Потому что так и должно быть. Методы нормально переопределяются нормально потому что в джаве все методы по дефолту виртуальные. А вот поля - нет. Поэтому, если выбор метода происходит в рантайме (основываясь на типе объекта, а не ссылки), то выбор поля происходит во время компиляции (и тут уже поле будет зависеть от типа ссылки). Вот и вся магия. Делай геттеры/сеттеры, а не выставляй поля наружу.
>>2115994 >>на кой хер эту парашу загоняют наверх мне в топе регулярно выдает сначала пару сайтов которые гуглтранслейтом переводят вопрос с СО, а потом только на 3-4 месте сам СО. А баелданг просто пишет как мделать хэловорлды на спринге вот его и кидает в топы.
Двач сап. Это пиздец. Учу Java / Hibernate / Spring / паттерны 9 месяц, запилил уже около 10 крупных и не очень петпроджектов......... но есть судимость. Очень боюсь, что проебал все время обучения врустую, так как выбрал enterprise стек и теперь при трудоустройстве рискую быть послан нахуй. Есть ли у кого нибудь кулстори по устройству на этот стек технологий из личного опыта или из ближайшего окружения?