Это копия, сохраненная 22 июня 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Q: ЧТО СКАЖЕТЕ ЗА ДЖАВАРАШ?
A: Худшая инвестиция в твоей жизни. Огромное количество говнокода, оторванные от жизни задачки, 1000 заданий по выводу в консоль какого-то говна.
Сейчас все советуют Hyperskill. Более продуманный план обучения. Но, как и любой %COURSENAME% не гарантирует тебе успешного вката. Выучиться можно и самостоятельно, не отдавая свои кровные васянам-наставникам.
Q: Посоны, собираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом?
A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред. Но в последнее время увеличивается количество вакансий на удаленке в связи с ковидом. Но, возможно, как вся эта мракобесия закончится, всех обратно загонят в стойло.
Q: Значит, я должен буду всю жизнь сидеть в опенспейсе, конвертируя XML в эксепшны? Ура, мне подходит! С чего начать?
A: Книги: https://libgen.is
Q: Хули все книги на английском?
A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: Я не могу в книги. Наткнулся на джавараш, но в самом верхнем вопросе уловил нотки сарказма. С ним все правда плохо?
A: В наших тредах постоянно появляются люди, спрашивающие о джавараше. Громко объявляют, что начинают заниматься, задают пару тупых вопросов и куда-то пропадают. Похоже, большинство адекватов бросают джавараш из-за дебильных заданий типа "десять раз скопипасти этот кусок кода и выведи в консоль". Тем не менее, иногда появляются и люди, говорящие что прошли его целиком, и что дальше задания получше. Короче, хочешь - пробуй, первые десять занятий бесплатно же. Но, как минимум, лучше совмещать с обучением по другим источникам. На самом деле ты просто потратишь свое время на какой-то мусор.
Q: Пока читаю, все понимаю, а сам ничего сделать не могу. Что делать?
A: Практика, больше практики. Уровня laba1.pas: http://codingbat.com/java http://codehunt.com https://hyperskill.org все говно, есть литкод Примеры той-проектов: http://eax.me/programming-language-learning/
Q: Я выучил кор, достаточно ли этого, чтоб взяли на работу?
A: Лол, конечно нет. Вот майндмап с джава-технологиями: https://coggle.it/diagram/WqgTTNMJtPiHph_q/t/java-development-in-2018
Q: Слышал, SQL знать надо обязательно. Где его учить?
A: Начни с малого: http://www.w3schools.com/sql/default.asp Затем переходи к: http://www.sql-ex.ru/
Q: Всё это хорошо, но без алгоритмов меня на работу не возьмут.
A: Не все конторы дрочат на подход Яндекса который спиздил подход гугла. Но для крупных фирм знать алгоритмы маст хев уже на уровне джуна/трейни, вот курсы от Принстонского университета: https://www.coursera.org/course/algs4partI То же самое но в бумаге: Роберт Седжвик, Кевин Уэйн - Алгоритмы на Java
Q: Я готов к первому собеседованию.
A: Проверь свои знания здесь: http://www.quizful.net/test И здесь: http://www.careercup.com/
Q: Вопросы на собеседование.
A: http://jsehelper.blogspot.ru/2016/01/blog-post_59.html : куча вопросов с ответамине всегда правильными http://becomejavasenior.com/blog/2015/07/01/327-interview-questions-java-developer/
Перед тем, как задать вопрос Как вайти в айти?, ознакомься с вики:
https://github.com/qqqlll/Java-Thread/wiki
https://github.com/random76/Java-Thread/wiki
Зато в шапке смехуечки и q&a с ответами от болящего школьника.
Нихуя не могу понять когда использовать абстрактные классы, а когда интерфейсы
Перечислил мейнстримные книги по кору в порядке возрастания сложности, ничего не забыл? У Блинова отвратительный академический стиль изложения, так что сунул его в самый конец.
Если можешь обойтись без абстрактных классов - обходись без них.
Effective Java тут явно лишняя. Это книга ближе к паттернам, хоть и применительно к жабке.
>У Блинова отвратительный академический стиль изложения, так что сунул его в самый конец.
А я Блинова читаю и мне норм лол...
Так и должно быть.
Абстрактный класс нужен, когда тебе нужно создать такой класс, который не сможет образовывать собственные объекты, но из которого могут появляться подклассы. Типа, абстрактный класс Животное по определению не может создавать объекты, ибо слишком размытое определение что есть "Животное" вообще. Но его подкласс "Котик" является более конкретным случаем Животного, и тут уже объекты логически обоснованы.
Интерфейс - это что-то типа контракта, который заключают классы, его реализующие. Класс, называемый клиентом, обязан реализовать все методы, которые есть в интерфейсе. Короче говоря, абстрактные классы нужны тогда, когда тебе нужен класс, из которого нельзя получить объекты, но который должен быть родительским для подклассов, а интерфейс это обязанность для классов реализовывать некий функционал, им присутствующий по дефолту.
Аниме и джава - братья навек!
я хотел написать, но тред к тому моменту уже засрали и я не стал.
Откуда в джава ненависть к аниме? Это как то связано с красноглазами или байтоебами?
Анимехейтеры это ньюфаги-школота, не обращай внимания
Окей, а тогда нахуя мне иметь возможность создавать абстрактные методы в абстрактном классе? Тогда интерфейсы можно вообще не заводить, а для класса Животное просто создать абстрактный метод, который будет заставлять его потомков издавать звуки или ходить, например. Та же самая обязанность выполнять какой-то функционал, присутствующий у животных по дефолту
Нахуй слез? Продолжал бы в маил.сру сидеть.
Рыбы тоже относятся к животным, но не ходят, а плавают. А абстрактный метод всё-равно должен быть реализован, будешь писать заглушку-костыль? И хождение, и плавание, и полет это поведение и должно быть в интерфейсе.
Если писать в соответствии с биологией, то в человеке должен быть переопределенный метод дышатьЖабрами() и тысячи строк мертвого кода, в том числе реализующий движения хвостом.
Думаю, начать с джавы. Именно для того, чтобы изучать программирование с помощью этого языка. Дальше пойти в котлин или куда-нибудь ещё, или на джаве остаться, хз.
Что думаете? Джаву потяну?
25 лет, вышка айтишная, но в вузе я проёбывался. На джаве когда-то списывал змейку и защищал курсач по этой игруле. Не аутист, адекватен, с математикой всё максимально плохо. Последнее, что помню - квадратные уравнения и биквадратные. Всё.
>серьезные вопросы
>Опять ссаное аниме в треде
Классика, сидит сурьезный двачер и решает тут серьезные вопросы))
Если у классов-потомков нет какой-то общей логики, которую можно вынести в protected-методы или поля общего родителя, то используется только интерфейс. Если такая логика есть, то используется и интерфейс, и абстрактный класс.
А разве, чтобы написать змейку на свинге не нужно ебаться с многопоточкой и прочее говно?
>Окей, а тогда нахуя мне иметь возможность создавать абстрактные методы в абстрактном классе? Тогда интерфейсы можно вообще не заводить
Но в таком случае ты не сможешь унаследоваться от нескольких классов. Ты можешь унаследоваться от нескольких интерфейсов, но не классов. Возможность создавать абстрактные методы в абстрактном классе существует для того, чтобы определять методы, которые обязательно должны присутствовать в подклассах. Никто не заставляет ведь подкласс абстрактного класса реализовывать интерфейс, но если в абстрактном классе есть абстрактные методы, то их придётся реализовать обязательно. В абстрактных классах можно реализовывать и обычные, не абстрактные, методы.
>>14611
Это нарушает I из SOLID, но в человеке много легаси, и его сложно переписать на новые технологии.
Я что, ебу что ли. Было три класса: один за тело змейки отвечал, второй за яблоко и рандомное появление на поле и третий класс отвечал за само поле. Зачем ты всё усложняешь? Я отдалённо слышал что-то про многопоточность и, честно, не понимаю, почему ты такой долбоёб
А отрисовывалась она в консольке что-ли? А события стрелочек управления, как отрабатывала?
Аниме куда сурьезней очерднего вкатуна неспособного написать laba1 самостоятельно.
Не знаю, я тогда не до конца понимал что и как работает. Делал вот по этому принципу (списывал)
забыл добавить, жены, детей и ипотеки нет. Живу в мухосранске с населением 600к человек.
Мне кажется ты больше пригодишься стране, как слесарь на заводе.
На свинге, он же написал, там все довольно просто. Кейлисенеры отбрабатывают клавиатуру/мышь.
>>А нахуя мне писать laba1
>>На джаве когда-то списывал змейку
Это и называется laba1.
Вместо того чтоб задавать тупые вопросы ты мог просто погуглить отличия языков и области их применения и решить что тебе ближе, но вместо этого ты пришел сраться в тред. С таким подходом тебе нечего делать в айти. 1С - твой предел.
Ты мне это в лицо сказать сможешь, чмоня? Ты где живёшь нахуй? Давай встретимся, я тебя блядь быстро на место поставлю и научу за своим базаром гнилым следить!
В общем, хочу попробовать сделать веб-приложение(впервые работаю со спрингом), которое будет по апи подтягивать базу данных, чтоб после этого я мог с ней работать и выводить определенную инфу пользователю. Подскажите, чего посмотреть/почитать, чтоб разобраться, как заставить сработаться апи и спринг, что куда правильнее импортировать и как, в общем, это будет работать(извиняюсь за смутные объяснения, не сильно пока вкуриваю, до этого только с алгоритмами/массивами/регулярками работа). С меня как обычно нихуя
Каждый школьник перекатчик придумывает и высирает свою якобы смешную и полезную шапку
Каждый тред новая шапка
Какой api? Ну, в смысле, http вэбсервис дергать надо, или имеется ввиду jdbc api? Api - слишком общее понятие, надо конкретнее
гугли spring boot crud
>>как заставить сработаться апи и спринг
не надо там ничему срабатываться, спринг бут в себе все и так содержит, даже сервлет контейнер.
>>что куда правильнее импортировать
Зависимости - стартеры бута - веб, дата. Аннотации - по гайдам смотри.
>>до этого только с алгоритмами/массивами/регулярками работа
ты же понимаешь что такое слои приложения, дао/репозиторий, мвс, внедрение зависимостей? Будет трудно сразу разобраться в спринге не понимая этих базовых вещей.
Иди в МВП тред спроси, там тебе все детально распишут.
В чём смысл таких вопросов? Очевидно, что в этом треде сидят те, кто считает, что лучше вкатываться в джаву, чем в шарп. В шарпотреде наоборот.
Литералли одинаковые языки с одинаковым синтаксисом
>максимально кратко и информативно
Видео Letscode на ютубе, например. Но там просто ктрл с - ктрл в. Ну и баелдунг, гайды на сайте спринга.
Первый пункт абсолютно верный. То же самое относиться и к Котлину и к Грейдлу. Когда у тебя большая команда, надо строго следить, чтобы народ писал единообразно иначе код потом не прочтешь.
В отличии от того же Мавена - он тебе тупо не даст самодеятельностью заниматься - плагины объявляем тут, зависимости тут, порядок билда вообще жестко зашит.
А в Грейдле у тебя один встроенный способ сделать что-то, но только в версия с 3.4.1 по 5.7.6. Два плагина для того же самого. И КУЧА возможностей накостылить решение кодом прям по месту. Кто что на СО нашел, то и зафигачил в билд.
Как быть начинающим? У C# Junior вакансий больше, у Java - только с мидла начинаются, редко встретишь Java junior вакансии(hh.ru)
Это уже твои проблемы мань)
У Java Junior вакансий больше, у C# - только с мидла начинаются, редко встретишь Java junior вакансии(hh.ru)
Попустись, чмоня, сам с джуна ведь начинал.
Да почему, мне то интересно, и я хочу развиваться в этос направлении, только вот сколько мне бы пришлось искать работу и набираться каких-то эфемерный знаний и опыты без реального проекта.
Ах ты блять продвигатель кумовства и коррупции
Я уверен ты из тех кто ходит на митинги и громче всех кричит что власть оборзела и погрязла в коррупции, хотя сам этим занимаешься под предлогом ой ну я всего то джуном хотел устроиться)))
Лицемерный зумерок
ФИ это просто интерфейс с одним методом, и они конечно были и до лямбд. Но название ФИ им дали когда появились лямбды.
Термин "коррупция" может быть применим только к государственным действиям, потому что только государство распоряжается отнятыми у граждан деньгами и может эти деньги пустить не по обещанному при отъеме назначению. Если кто-то хочет в свою команду устроить племянника без знаний, то это его проблемы и он в случае чего сам понесет убытки.
мимо
Коррупция (от лат. corrumpere «растлевать», лат. corruptio «подкуп, продажность; порча, разложение; растление») — термин, обозначающий обычно использование должностным лицом своих властных полномочий и доверенных ему прав, а также связанных с этим официальным статусом авторитета, возможностей, связей в целях личной выгоды, противоречащее законодательству и моральным установкам.
Нельзя быть коррумпированным на полшишечки.
Навернул Хорстманна
Очевидные Hibernate/Spring/Doker
Что то проебал?
Осваиваю ВЕСНУ, хочу чтобы значения брались из .properties-ов, в методе где должен гетать УРЛ возвращает нуллпоинтер - не берет значение из проперти.
(Если вручную присвоить логин/пароль/урл - то все работает как надо, но я хочу с ебучими пропертями разобраться, я их уже как только не прописывал, и через "value=", и полный путь указывал).
Настолько хуй, что первый пик потерял
Во первых автовайри сразу URI, спринг сам сконвертирует значение проперти.
Во вторых судя по скрипнам у тебя весна не бутовая, значит скорее всего забыл какой-то бин типа PropertiesResolverAwtowiringBeanFactoryPostProcessor создать.
Хотя нет, всего лишь PropertySourcesPlaceholderConfigurer. Причем он должен быть статическим.
Информативно конечно, но мне кажется как то не структурированно. Хотя спасибо
А пробел где?
Тыща благодарностей!
Там постоянно вводят фичи и сахар, причем дай бог четверть оказывается полезными.
Заебался уже в js - и это у нас есть и это и это. Но половина из этого устарело, а еще четверть нахуй не нужно и дублирует функционал.
Хуядно.
Даже если мы берем самую простую и известную Оверрайд, то ее можно не писать и все будет работать
Можешь на XML программировать
>>вводят фичи и сахар
В джаве можно просто подключить очередной фреймворк/либу и написать @Sahar и @YobaFeature(name="ne_govno").
Аннотации - это не просто необязательные метаданные, во многих либах/фреймворках кастомные аннотации меняют поведение того, на что ты их вешаешь. Они могут генерировать интерсепторы, либы могут в рантайме искать классы/поля/методы с определёнными аннотациями и что-нибудь с ними делать через рефлексию. До пятой джавы аннотаций не было, из-за этого для многих либ приходилось писать текстовые конфиги (xml, ini, properties и прочее). Но сейчас удобнее почти всё делать аннотациями, и не стоит акцентировать на этом внимание.
Лучше, когда эти фичи есть их коробки, ибо только в таком случае можно ждать от разрабов IDE поддержку этого говна. А так приходится для всяких ебаных ломбоков обмазываться сторонними плагинами разной степени хуёвости, и это даже хуже препроцессора c/c++, он хотя бы стандартный, и с ним умеют работать IDE.
С другой стороны решил немного поучить js после того, как запутался в аннотациях springmvc. Может потому что я почти не знаю http.
Да, наверно http нужнее, зря я так рано в js полез. Но я что-то психанул. Надо уж теперь закончить и хотя-бы кор js-а добить, раз уж начал. Многие говорят, что потом пригодится.
https://developer.mozilla.org/ru/docs/Web/HTTP
вот этот на 2/3 переведенный мануал будет норм для обучения?
Ну я смотрю мануал по спрингу, а там про куки, сессии, cors авторизацию и некоторые другие вещи и я очень смутно представляю что все это такое.
Не знаю почему у меня именно с mvc непонимания. DI и data более-менее понятны.
А как до реста дошел мне захотелось js изучить. Не долбиться же с json-ками через постман.
>Очевидные Hibernate/Spring/Doker
>Docker
Вот и выросло поколение, 5 лет назад про эти докерны никто и не слышал
Я хотел бы учиться через написание реального приложения. А потом уже и тесты и все что угодно. Но пока я вообще не понимаю фронт и не до конца понимаю хттп.
Гугли непонятные понятия, читай статьи (даже на википедии), экспериментируй, этого хватит до конца жизни.
Потыкай JS с реактом, но сильно можешь не углубляться. Алсо, в этом треде один шизик продвигает Vue, его не слушай.
Толстяка с тестами шли нахуй, до них всегда добраться успеешь.
Так тесты- это часть реального приложения
Если в дочерних классах появляются новые поля которые влияют на равенство объектов - то да надо.
toString() - ты делаешь для себя, чтобы при отладке и в логах можно было посмотреть состояние объекта.
Так вот, меня интересует, этот класс Одномерный массив тоже надо делать обобщенным? Ведь иначе получается сырой тип массива и перед компиляцией он уже Object.
И ещё вопрос, ведь при компиляции он все равно Object становится, но у меня в этом же классе есть методы сложения и вычитание например. Не буду же я шлюх складывать(потому что это можно узнать с помощью имя_массива.length или имя_списка.size()). Как можно проверить например, что этот обощенный тип принадлежит к классу Number? Или тут делать только обобщенный метод, где как параметр может приниматься массив T extends Number?
Там хоть один из 4 глобальных проектов введут на уровне полной поддержки?
Медики действительно такие вундеркинды? Надо скрывать от них существование ойти.
Надолго. Вот когда перестанут обновлять 8, все основные либы и софт откажутся на ней работать, и потом в ней найдут критические проблемы, которые оракл откажется фиксить, тогда может и перейдут на 11.
Они не вундеркинды, просто привыкли ебашить как не в себя и ответственно относиться к своей работе. Если б ты программы писал как человека лечишь, ты думаешь ты был бы хуже?
Если бы я был рыбой, я был бы хуёвой рыбой. Плавал бы как попало, всё время бы, блядь, тонул.
со слоями и репозиториями все понятно, за подсказки спасибо
Выпилят спринг, лишь бы сидеть на любимой восьмёрке.
Уже сейчас не фиксает, но есть куча контор которые предоставляют OpenJDK 8 LTS.
Он по верхам нахватался, но знает слабо. По ответам же видно, что он плавает и собеседующий его вытягивает на ответы. На интерна может и пойдет но он не студент профильного вуза, на джуна его не возьмут. Ему еще полгода-год учить жаву.
Я был бы хуёвой рыбой
Плавал бы как попало
Всё время бы, блядь, тонул.
Врезался б в подводные глыбы
Икры бы метал я мало
И плакал, ползя по дну
Да, скорее всего так точнее. Вроде и обычный список, но с помощью методов он будет модифицирован под мои хотелки соответственно. (как я описал, что складывать и вычитать может только элементы типа Number, а иначе посылать; также иметь ограниченный размер как у массива - ведь список автоматически увеличивает размер)
Ещё он может, как анон из предыдущего треда, поискать платную стажировку за 150к. Может и возьмут.
"Java core начинал с Якова Файна, затем Headfirst, затем Шилдт 10 издание. SQL тоже Headfirst очень неплохой, по Hibernate отличная книга Java persistence API with Hibernate. Spring учил по Spring in Action, Pro spring 5. Вот в таком порядке примерно все и изучал и, параллельно, различные посты по каким-то темам"
Это типа реально за полгода после работы все прочитать?
Какие есть нужные фичи в 16, которых нет в 8?
>начинал с Якова Файна
Я думал, это мем такой, а это реальность. Кузница гениев. Первый кирпичик в здании сеньора-помидора.
Я сам ещё не вкатился, но мне кажется, что все эти книги прочитать за полгода реально только если ты уже программист и перекатываешься с другого языка.
Потому, что если ты совсем без бекграунда, то сначала нужно будет выделять в голове место под самые абстрактные и базовые конструкции, типа что вообще такое программирование, зачем этим занимаются, где востребовано, как выглядит, зачем это лично тебе, как выделить этому время и проч.
Ну или действительно перед нами гений. Тогда надо от имени двача заслать к нему гей-подселенца, чтобы в будущем иметь рычаги влияния на русского Илона Маска.
За бугор съебать сложнее, чем найти работу здесь.
В Японию хочеца...
Ну он выше написал, что он сперва cs50 навернул, но это наверно не включено в полгода.
https://www.youtube.com/watch?v=bE0WD-KYuks
Ну и хуйня.
Всем нравится. Просто в более поздних версиях жавы завезли сахарочек. Более удобная работа с опшионал, set.of, list.of, в 15 текстовые блоки
То, что в пхп, нельзя назвать "без фреймворков", скорее там и так фреймворк из коробки. В джаве ничего подобного нет, можно только написать свой фреймворк на сокетах. Ну и к пхп ближе всего JSP, которого в Java SE нет.
Да, только это не такой уж и монстр. Spring Boot не сложнее фреймворков для пхп.
Хуйлеты.
451 градус по фаренгейту
1984
Много разных проектов, как тырпрайз так и нет, но в основном тырпрайз.
Всякую симуляцию физики в основном пишут на плюсах. На джаве как правило обычное перекладывание джейсонов на спринге
> проэкт
http://gramota.ru/slovari/dic/?word=проект&all=x
А что такое проект с нуля? Новая система, новая кодовая база, что тебе еще надо? Новый бизнес?
Передавать еще Supplier или Function.
Добавить параметр Class<T> clazz
Открыл Мой компьютер, на каждый пук создана папка с файлом. Как вы их запоминаете пк-дебилы?
Планирую запускать selenium-скрипт у себя на серваке - он должен будет периодически проверять доступность моего сайта и отсылать диагностическую информацию в лог. Подобное вообще может работать на удаленном серве? Ведь там браузер нужен
upd
Учебные материалы, когда доходят до wildcard, все как один включают режим дебилов и забывают про типизированные переменные напрочь, хотя это предыдущий параграф/страница. Пример - тутор от оракла: https://docs.oracle.com/javase/tutorial/extra/generics/wildcards.html
"So what is the supertype of all kinds of collections? It's written Collection<?> (pronounced "collection of unknown"), that is, a collection whose element type matches anything. It's called a wildcard type for obvious reasons. We can write:
void printCollection(Collection<?> c) { ... } and now, we can call it with any type of collection."
Возьми да напиши Collection<T>, тоже будет collection of unknown, тоже будешь call it with any type of collection. Кого ебёт, что к этой Т ты больше не будешь обращаться?
Окей, чтобы скомилировалось и работало, дженерик ВНЕЗАПНО придётся дописывать перед войдом.
Надо запускать его в headles mode https://stackoverflow.com/questions/46920243/how-to-configure-chromedriver-to-initiate-chrome-browser-in-headless-mode-throug
но вообще для мониторинга сайтов есть другие инструменты
Какие другие?
Мне надо проверять работу пары виджетов, бывали случаи когда они отваливались либо работали неправильно, в основном из-за косяков при билде фронта
strings.forEach(System.out::println);
Почему в println не передаются аргументы? Как он понимает что ем унужно именно значение элемента в списке strings вывести? А если туда другие объекты передавать?
Передаются, просто ты используешь сокращённый синтаксис лямбда-выражений (method reference). В более развёрнутом виде твоя строка выглядит как:
strings.forEach((s) -> System.out.println(s));
что, по сути, тоже сокращение. Если ты ещё не проходил лямбда выражения, то не используй пока что эти штуки. Пиши через обычную петлю.
>Какие другие?
Мы используем New Relic, но есть много других сервисов мониторинга прода. Они предпочтительней самописных потому что если сам сервис мониторинга ляжет, его быстро поднимут.
>Мне надо проверять работу пары виджетов, бывали случаи когда они отваливались либо работали неправильно, в основном из-за косяков при билде фронта
Ну такое и правда только самому проверять. New Relic это больше про общую работоспособность сайта.
В общем юзай headles mode. И сразу совет, если будешь делать рассылку алертов - обязательно делай скриншот страницы, это прям очень-очень помогает при определении проблемы.
В общем, задача заключается она в написании простенького калькулятора (число-операция-число-результат). Программа должна работать бесконечно, если пользователь вводит корректные данные, но если пользователь вводит букву q то программа должна завершиться (именно завершиться, а не уведомить об ошибке). Вот что у меня пока есть:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
do {
System.out.println("Введите число");
int a = sc.nextInt();
sc.nextLine();
System.out.println("Введите операцию");
String s = sc.nextLine();
System.out.println("Введите число");
int b = sc.nextInt();
if (s.equals("+")) {
int res = 0;
res = a + b;
System.out.println(res);
}
char c = s.charAt(0);
if (c == ('q'))
break;
} while(true);
Сейчас это работает если вместо математического знака ввести q. Но как мне сделать так, чтобы программа завершалась если пользователь введет q вместо ЧИСЛА?
Вот ссылка на этот же вопрос с тостера, если кому вдруг там удобнее будет посмотреть https://qna.habr.com/q/984843
Всегда строку принимай, а не инт.
Проверяешь, равна ли она "q".
Приводишь строку к инту, если можно.
Чел, ты не понимаешь зачем нужен JMH и почему он работает так. Поэтому тебе и такое решение сойдёт, всё равно ничего хорошего ты не намеряешь.
О, спасибо, сейчас попробую
Потому что JMH это фреймворк для микро бенчмарков. Спринговый контекст это не микро бенчмарк. И дело не только во времени старта контекста, а еще в том, что спринг добавляет кучу прокси.
Мне надо бенчмаркать пользовательские скрипты, которые загружаются через рест апи. И для этого должен быть отдельный контроллер.
>пук
Еще раз:
>ты не понимаешь зачем нужен JMH и почему он работает так
JMH это бенчмарк для тестирования микро эффектов в сравнении. Типа что быстрее AtomicLong или LongAdder и на сколько.
Зачем бенчить пользовательский скрипт, который постоянно меняется - вообще непонятно. Хочешь побенчить свой скрипт - ну напиши тест в JMH но со статическим скриптом в ресурсах.
>Зачем бенчить пользовательский скрипт
Чтобы выяснить, что быстрее работает: AtomicLong или LongAdder
>пук
Число методов может начать расти, а идти по ним нужно в строгом порядке, пока не будет выдан нужный результат.
Сделать список функторов или что там вместо них у вас в джаве и идти по нему в цикле пока не получишь нужный результат.
Паттерн стратегия должен решить твой вопрос
по порядку чекаешь, если эррор то выводишь и гоуту(алерт)
если нет, то отмечаешь. потом выполняешь по порядку.
Как вы считаете, сколько часов в день оптимально заниматься кодингом чтобы через год хотя бы начинать ходить по собесам? Мне интересно программирование, но из-за того, что сначала я прям накинулся на все это и сидел сутками, а также поставил себя во временные рамки (год, а лучше быстрее) ловлю дизмораль. Последнюю неделю не делал практически ничего, провел дни в приготовлении "вот щас посижу и начну, вот-вот", из-за этой прокрастинации и безделья чувствую себя паршиво в психологическом плане.
Очень редко.
твой код вызвал у меня флэшбэки. Я лет 6 назад подобной хуйнёй занимался. В смысле, писал репортилки по джире для манагеров-идиотов.
Не задерживайся там дольше года. Поверь, над нормальным продуктом работать гораздо интереснее.
да не, всё то. Присмотрись лучше.
Мы тут по стриму sullier-ов идём с фильтром, и отдаём результат вызова с первой непустой коллекцией. Т.е. если первый метод вернул не пустую коллекцию, то мы не станем вызывать второй и третий. Если первый вернёт пустую, а второй не пустую, то третий метод дёргать мы не будем.
Нихуя себе.
>прочитал 4 тома Кнута, потом Седжвика этого ебаного, выучил кор, спринг, скл, гибернейт, в общем, самые основы более-менее схватил. На всё про всё ушло месяца 2-3.
Если задачи решал и пет-проекты писал, можешь уже по ходить по собесам.
Ещё можно потыкать вёрстку/js и докер, лишним не будет.
Я думал, что ты просто пиздабол, но ты ты превзошел мои ожидания ты еще и мудак, который не может понять тонкого и прозрачного намека.
Если ты за три месяца до сих пор не вкатился и ещё не на стажировке хотя бы, то лучше забей на это дело. Видно же, что не твоё, так зачем мучиться. Есть и другие хорошие сферы для вката.
Толсто.
>прочитал 4 тома Кнута
>>26858
>Там ведь больше 4 томов, но я же не написал, что прочёл все (это было бы уже неправдой).
Эталонный, дистилированный мудак и пиздабол из палыты мер и весов!
Вначале пиздит что прочел 4 тома Кнута за 2 месяца, 2 тома в месяц что уже пиздеж стопроцентный. Но этого ему показалось мало и он решил пиздеть дальше, что там больше томов и прочел он не все. Кретин, ты бы хоть википедию открыл и посмотрел, сколько томов "Искусство программирования" написано. Хотя можешь спиздануть, что Кнут тебе лично выслал черовики еще не изданных томов, но пока руки не дошли прочесть.
Тут разве не сначала дернутся всё методы, а уже потом произойдёт фильтрация? В Котлине, чтобы это предотвратить есть asSequence, в ванильных стримах не помню есть ли такое.
Тебе сука вывод программы даже скинули, даун ты тупой.
Мань, ты никого не наебёшь здесь, ты ничего не читал из Кнута, иначе бы уже работал где-нибудь системным прогером на крестах за ~100к.
> Кретин, ты бы хоть википедию открыл и посмотрел, сколько томов "Искусство программирования" написано.
Хм, ну да, обсренькался. Почему-то казалось, что их больше будет, их по-дебильному выкладывают чё-то. Выходит, я всё прочитал у него. Кстати, скажите, Concrete Mathematics надо читать или не пригодится?
>>26915
Я его начал читать три месяца назад, дебс. Как бы я устроился куда-то за это время?
Кыш-кыш, шарпоеб
> Если вам выделили угол - то сидите спокойно и не орите. Почему я должен слышать голос со стороны параши? Рты позакрывали. Ещё одна падла вылезет отсюда и протечёт в .NET тред - будут приняты меры. Свободны.
>, я всё прочитал у него
>скажите, Concrete Mathematics надо читать или не пригодится?
Манька, ну зачем ты выросла таким пиздаболишкой? Если бы ты прочитал Кнута, все четыре, блядь, тома, у тебя бы не было вопроса, нужно ли читать Concrete Mathematics или нет.
Потому что нужно отвечать на основной вопрос, а не АРЯЯЯ КНУТА НИЗЯ ПРОЧИТАТЬ ЗА 3 МЕСЯЦА.
Потому, что входные данные исключают возможность того, что человек на полном серьёзе спрашивает, что ему дальше делать.
>не могу проверить простейшее утверждение
Iterable<String> stringIterable = () -> List.of("A", "B", "C").iterator();
>Я-то могу, анон спрашивает, почему нет аннотации @FunctionalInterface.
Анон спрашивает
>Почему интерфейс Iterable не считается функциональным интерфейсом?
Iterable является функциональным интерфейсом, потому что у него один абстрактный метод. А @FunctionalInterface это просто свистоперделка, которая просто на этапе компиляции позволяет проверить, что у интерфейса один абстрактный метод. Что-то типа @Override - отсутствие ее не мешает оверайдить, но наличие дает дополнительные проверки.
Executor
Если использовать фреймворк например спринг, то можно прям по тьюториалу все намутить за день.
Если на ванильном, то конечно поебаться придется знатно.
В java se сервлетов нет, так что не ванильно, только сервлеты и фреймворком назвать нельзя.
Зато голые сокеты/треды 100% ванильны.
пепе-жокир.жпг
Сначала SQL. Далее потыкай JDBC для любой СУБД.
Дальше мавен, научись в нём подключать зависимости (неважно, какие. пусть хоть те же JDBC-драйвера вместо ручного указания жарника в classpath) и собирать jar with dependencies, всякие профили и модули можешь потом.
Ну и спринг, легче всего начать сразу с бута. Перед спрингом можешь опционально потыкать сервлеты по какой-нибудь мурзилке типа этой https://metanit.com/java/javaee/
охуенно
Собсна, прошу вашей помощи. Что почитать по многопоточке, учитывая, что за 3 года мне НИ РАЗУ блять не пришлось с нею работать, что выдрочить по кору, куда смотреть с докером и кубером (с последним так же ни разу не работал), какую еще хуйню меня могут спросить? Проект: создание системы автоматизации реферальных программ
Выручайте, очень хочу попасть в эту хуйню
Хотя пизжу, просто обёртка, чтобы самому не аккумулировать
Начни с JSR133
Шилдта вкатывальщику стоит изучать?
Шилдт "Руководство для начинающих" и "Полное руководство"?
Тот, что в двух томах?
Там же вроде не для вкатывальщиков а для тех, кто уже знает программирование.
Моей первой книгой по жабе был хорстманн в 2012, тогда зашло отлично, лучше всех других последующих. А как сейчас хз.
мимопроходил
Сами написали
Лучше всего просто писать то, что тебе хочется писать, но на технологиях, которые нужны для собеседований. Мне кажется, это единственная возможность не выгореть еще до начала работы, лол. Браузерку какую-нибудь напиши.
>Что почитать по многопоточке
Почитай Java Memory Model, что такое happens before какие гарантии есть, а каких нет, волатайл, синхронайзд и java.util.concurrent что там есть.
Только не читай сам JSR-133, ты просто утонешь и ничего не поймешь. Есть много объяснений на пальцах. У того же Шипилёва было много простых статей на тему https://shipilev.net/blog/archive/settable-future/
Пока ты учишься, перед тобой стоят те же проблемы, которые у тебя будут и на работе. Выбери несколько дней недели, в течение которых ты по этой теме ничего не делаешь и даже не думаешь об айти. Если днём ты учишься, то вечером выключай компуктер и постарайся на что-нибудь максимально отвлечься, как можно сильнее погрузиться во что-то другое. Тогда на следующий день утром ты снова будешь свеж и восприимчив к обучению. Если же мысли про айти и вкат никогда не будут покидать твою голову, то они там протухнут, а энтузиазм, обучаемость и способность сохранять внимание - пропадут.
Ты спрашиваешь "Сколько часов в день оптимально заниматься" - я считаю, это количество часов зависит как раз от того, насколько хорошо ты потом переключаешься и отдыхаешь. Твоя задача в том, чтобы нащупать стабильную посильную нагрузку, а потом постепенно увеличивать это количество часов.
Т.е. сначала можно прочитать
Шилдт "Руководство для начинающих" и "Полное руководство"
А потом переходить к Хорсттману?
Мне тут один пидор сказал что ява мертва и надо на спринге делать. Дать ему с вертухи?
фреймворк
Тащемта, спринг - это не язык программирования, а операционная система.
https://en.wikipedia.org/wiki/Spring_(operating_system)
Вот думаю может мне болт положить на плюсы и перекатиться. Есть подозрения что моя шарага имеет неправильный подход к обучению. Первые пол-года обучали С потом С++. На втором курсе будут снова плюсы а потом Java. Слышал мнение что это не самый лучших подход. И понятно что не буду для десктопа писать. Не думаю что там вакансий много.
Я так и сделал, хотя изначально планировал вкат в плюсы. Работу на плюсах найти сложно, да и вообще ощущение, будто на них пишут только сеньоры.
Кто Защеканского читал? Впечатления? Он же стырил идею у Фоулера.
Открыл первый том, в предисловии же
"Как и все предыдущие издания этой книги, настоящее издание по-прежнему адресуется
серьезным программистам, которые хотели бы пользоваться Java ()ля разработки
настоящих проектов. Автор этой книги представляет себе вас, дорогой читатель, как
грамотного специалиста с солидным опытом программирования на других языках,
кроме Java"
>А потом переходить к Хорсттману?
Нет, после Шилдта будет бессмысленно. Только "Полное руководство" не читай от корки до корки, он не задуман как самоучитель, это справочник, куда нужно смотреть когда появятся какие-то конкретные вопросы. Прочитай "Руководство для начинающих", этого хватит.
Вот всегда пишут такую хуйню и все равно растягивают объяснение оператора while на целую главу.
Хорстманн для новичков в программировании норм, но вплоть до определенного момента. На коллекциях будет уже не очень понятно, о чём идёт речь, если нет определенного бекграунда (алгоритмов и структур данных). Но это не какой-то продвинутый материал. Любая другая книга по Джаве для начинающих заменит двухтомник Хорстмана, хоть Блинов (но его я не советую читать).
Какой-нибудь консольный калькулятор отожрёт насколько мегабайт. Что-нибудь свинговое жрёт ещё больше. Спринг бут может несколько сотен метров занять. Жирный энтерпрайз проект больше гига займёт.
Это не значит, что они все реально столько потребляют, джава резервирует какое-то количество памяти, чтобы не просить у ОС каждый байт.
Да. Поэтому джава мертва и не надо на ней писать или учить ее.
Optional<String> abc = List.of("abc", 1).stream().filter(String.class::isInstance).map(String.class::cast).findFirst();
Есть смысл изучать и с головой погружаться во всю экосистему и инфраструктуру java вместе с ЕЕ, МЕ, Котлинами, Андройдами и спрингами, облаками? Или есть более перспективные альтернативы?
> Тут всё еще спрашивают про актуальность java?
Открой hh.ru, введи в поиске "java" и другие языки, посуди об актуальности по количеству вакансий сам.
> ЕЕ
Вытеснено спрингом
> ME
Вытеснено андроидом
Ну, я и имею ввиду мобилки, ентерпрайз и т.д. под спрингом и андройдом. Облачные технологии это ведь тоже про Java?
Подскажите гайд как сохранять файл (тектовый, например) в MongoDB, который принят в контроллере.
Не имел дело с монгой ранее да и с сохранением файлов не работал толком
Ну так пиздуй гуглить.
Спасибо, Анонче
Может подскажет кто, как собрать из стрима листов List<SomeType> все в единый List <SomeType>? Короче для каждого листа потока вызвать addAll к выходному листу?
Потому что в джаве нет функций, единственный способ передачи кода в другой метод до появления лямбд - передать объект с методом, и чтобы вписать в этот механизм лямбды, пришлось придумывать костыли. Лямбда в джаве - это почти синтаксический сахар над анонимным классом (new MyType() { ... }), но работает несколько иначе.
Вредный совет. Имхо читать стоит именно jsr-133 и только на английском. А если после останутся вопросы, то обращаться ко всяким книжонкам.
Не знаю, попытался понять и чота не получилось, забил и все делаю без лямбд. А вот в свифте как-то сразу схватил как это работает. Мб синтаксис виновен.
Если ты про стримы, то нужно просто немного практики. Если конкретно про лямбды, то не понимаю, в чем там сложности.
Лямбда по сути - анонимный класс. Надеюсь, стало понятнее)
> JSR-000376 JavaTM Platform Module System
Вышел.
Да, но полное руководство прочитывать не надо, как анон выше сказал. Книга вообще называется "Complete Reference", но переводчики обосрались уже в названии. Добро пожаловать в мир переведённой технической литературы.
>>28729
>Нет, после Шилдта будет бессмысленно.
Схуяли? Шилдт даёт базовое, поверхностное представление о языке и синтаксисе, а хорстманн - более глубокое понимание, которое потом проверяют на собеседованиях. Например, в Beginners Guide хешмапы ни разу даже не упоминаются, то время как у хорстманна описаны даже .synchronizedMap и ConcurrentHashMap.
Есть задача сериализовать ебанутую хеш-мапу следующего вида:
HashMap<Method, Map<List<Object>, Object>>
через стандартный интерфейс Serializable.
Но, как я понял, я проебался в том, что все вложенные типы мапы тоже должны быть Serializable, иначе получу NotSerializableException. А у меня там лежат обжекты, которые соответственно не помечены как Serializable, соответственно, при попытке сериализации летит эксепшон. Что можно сделать, в данном случае? Возможно как-то все-таки сериализовать мапу встроенным механизмом явы?
>через стандартный интерфейс Serializable.
Извиняюсь, имел в виду стандартный ObjectOutputStream, через который сериализуются объекты классов, имплементирующие маркерный Serializable.
>Имхо читать стоит именно jsr-133 и только на английском.
JSR-133 имеет смысл читать только если у тебя есть хорошая подготовка, ты понимаешь проблемы многопоточности, примитивы синхронизации. И тебе нужно глубокое понимание темы, для реализации конкарент библиотеки или чего-то подобного. Обычному прикладнику - это вообще не нужно.
Чтобы сериализовать через ObjectOutputStream надо чтобы объект реализовывал интерфейс Serializable без этого никак. Если поменять объект ты не можешь, то или унаследуйся от него и реализуй Serializable или заворачивай его в свой объект в котором реализуй сериализацию руками.
https://pastebin.com/kLaFQKsr
>Шилдт даёт базовое, поверхностное представление о языке и синтаксисе, а хорстманн - более глубокое понимание
То же самое понимание он даёт, никакого "глубокого понимания" у Хорстмана нет, у него воды много, объясняет те же самые вещи что и везде.
>Например, в Beginners Guide хешмапы ни разу даже не упоминаются
О нет, в "Руководстве для новичков" не упоминаются хешмапы, которые проходятся в любом учебнике по алгоритмам и структурам данных, а гугла не существует и поэтому мир рухнул, Шилдт ненужен, Хорстман навсегда!
В "Полном руководстве" Шилдта всё есть. Читаешь бегиннерс гайд и потом поглядываешь в полное руководство по темам, которых там не было. Вот и всё. Серебряной пули в программировании нет, когда речь об учебниках. Я вообще по Блинову учился.
>>202984
От галеры зависит. На нашей, например, без многопоточки не вывезешь. По крайней мере, если нет понимания в чем вообще проблема. Поэтому на собесах всегда спрашиваем, правда достаточно простые вещи.
И действительно, редко кто справляется. А кодерки, которые не будут вагонами, очень нужны, поскольку заниматься обучением никто не будет.
От галеры зависит. На нашей, например, без многопоточки не вывезешь. По крайней мере, если нет понимания в чем вообще проблема. Поэтому на собесах всегда спрашиваем, правда достаточно простые вещи.
И действительно, редко кто справляется. А кодерки, которые не будут вагонами, очень нужны, поскольку заниматься обучением никто не будет.
А по наполненности он немного хуже. Из околоновичковых в плане глубины вообще философия джавы лучше всего, но она устарела на 10 лет.
Сокращенный Хорстманн - плохой совет, там очень много пропускается в плане деталей. Это как раз для свитчеров с других языков. Начинал с нее, дойдя до ооп - нихуя не понял. Перешел на Шилдта и Хорстманна одновременно, в итоге выбрал Хорстманна.
вообще мне пох на него, просто я хз как его почистить
Ты сейчас назвал две абсолютно разные технологии, просто стримы сильно завязаны на лямбдах.
Для понимания и использования "лямбд" не надо особо ничего, это концепция, идея. Довольно простая. Со стримами сильно сложнее, потому что это не только идея, но и куча довольно сложных для понимания API-инструментов, надо их изучить и поиметь с ними практику.
>О нет, в "Руководстве для новичков" не упоминаются хешмапы
Это руководство занимает 700 страниц, первый том хорстманна - 800+. Хорстманн описал даже синхронизированные версии этой базовой структуры данных, в то время как шилдт её даже не упомянул. Ты, наверное, очень долго думал, кого из этих двух авторов обвинить в большом количестве воды.
>в любом учебнике по алгоритмам
>гугла не существует
Ну и зачем ты тогда читал своего Блинова? Дрочил бы себе гугл и справочники, там всё есть.
JSR-133 нужен если ты пишешь свой примитив синхронизации, свою версию ConcurrentHashMap или вообще JRE.
Прикладникам достаточно знать что такое happens before и когда у нас есть гарантии happens before. И для этого совсем не нужно читать JSR-133.
inb4: нихуя сложного, на изичах вкатываюсь как сыр в масле и ссу на даунов хохлов забыли спросить
Учитывая что у тебя нет опыта не рыпайся. Это наоборот заебись что проект будет по сути с нуля, многому научишься.
Будешь менять место работы сможешь рассказать как вы переписывали что-то на спринг. Чуток приукрасишь скажешь с какими сложностями, плюсами и минусами столкнулись и вот тебя синьором берут.
рассказывай сколько сам учился до первого оффера и как ходил по собесам. интересно же
Спасибо, анон! Была мысль обернуть их в ДТО, просто я думал, что все поля объекта тоже должны быть сериализуемыми, и поля этих объектов - тоже и т.д. Думал, что он считывает их как бы циклично в глубину и так сериализует в файл, и именно по этой причине не сериализуется мапа. А почему у тебя на примере в обертке именно Externalizable, а не Serializable?
%3d
те
1 = 001
13 = 013
1543 = 1543
Серёг String.format или для консольки System.out.printf
Звоните 03
Вкатился потому что имею хоть какие то начальные знания в отличие от моей команды вместе с техлидом. Инициатива моя никому не нужна, подразумевается что я сижу и готовлюсь к тому техстеку который прописан в документации к проекту, что я в принципе и делаю. Но я хочу реальный опыт и сейчас, а не когда то там в будущем.
>>30452
>>30493
Спасибо большое за советы. Понимаю что они грамотные, но видя то как все долго раскачивается боюсь если я не буду рыпаться потеряю кучу времени в пустую и смогу рассказывать об этом опыте только года через 3.
>>30572
Учился с полного нуля гдето 1.5 года, но без системно и когда повезет со временем, потому что семья и все сопутствующие ништяки. Так что можно раза в 3 быстрей до моего уровня дойти. По собесам особо не ходил, потому что жил в мухосрани и связываться со мной не хотели, а те кто связывались сводили к тому что нет опыта. Так что тупо повезло что на мой отклик обратили внимание, а на тех собесе вызвал симпатию за счет того что "горят глаза", потому что мне это действительно нравится и я хочу чтоб это было моей основной деятельностью, а не по остаточному принципу.
Ну у тебя есть время будучи на зарплате подучиться чтобы потом попасть в норм контору если тут уж совсем тухло будет.
ну вот именно это же я спрашивал первоначально) кто что советует подучить, в какие технологии больше углубится, какие просто посмотреть, какие знать для чего используются. В какую сторону воевать в общем, пока есть возможность.
Где и как это исопльзуется блять. То что это автосборщик мне нихуя не говорит, и то что во вкладке депендесис прописываются зависимости тоже. Неужели это все, что нужно знать о нем?
Тебе сейчас, очевидно, вообще не нужно о нем ничего знать.
Ещё нужны модули и профили, а всякие плагины с репозиториями настраиваются по ситуации через stackoverflow.
Про Lifecycle почитай, этого хватит.
Да.
Если ты про сборщики то maven и gradle.
Если про репозитории - мавен централ, в котором есть все и некоторые мелкие в которых экзотика.
Спасибо анон, всё заработало, благодарю! Похоже в глазки долблюсь
Да почему, для чего-то сверх простенького вполне себе даже юзабельно. Обычно я набрасываю алгоритм в голове, а потом неспешно в год перевожу если нет пэки например пока я на природе.
>Какие ограничения на количество полей в сервисах спринга (класс @Service/Component)
Ограничений нет, но если у тебя больше десятка полей, то вероятно ты делаешь что-то не так.
>Может ли сервис иметь собственные поля, помимо инжектнутых @Autowired?
Да можно иметь поля которые не инджектется а инициализируются в конструкторе, это вполне ОК. Можно даже получить в конструктор какую нибудь фабрику у нее вызвать createXXX() и в поле сохранить результат, а саму фабрику никуда не сохранять.
>Или делать сервис как бы без состояния? Чтобы методы принимали типы предыдущих вызванных методов?
Сервис не должен хранить бизнес состояние. Бизнес состояние должно храниться в базе или еще каком нибудь персистентном хранилище. В идеале сервер должен быть стейтлес, чтобы в любой момент его можно было остановить и запустить новый инстанс.
Но это не касается каких-то внутренних полей которые нужны для функционирования сервиса и не содержат бизнес состояние.
Столько лет знаком с джавой, а и не знал что маскот такая секси
Понятно.
ок
Это не аниме тяночка.
У меня есть обычный джавовский предикат. Мне надо вытянуть данные из бд с учётом этого предиката. Как его можно перегнать в критерию/спецификацию?
Это конечно можно, но этот самый предикат скорее всего будет динамически меняться. Хотелось бы получить какой-нибудь гибкости, а не хардкодить запросики
Я делал так написал свой мини язык условий наподобие SQL. Дальше пользователь описывает условие на этом языке фактически в UI набирает фильтры на поля. Дальше состовляем из них предикат который можно и в Яве использовать и который легко конвертируется в where.
Ну ты и шизик.
Выглядит неплохо, сейчас бы я наверное бы его использовал для той задачи.
>NativePointerObject
Это который из JCuda? Ну как бы не большое достижение, с помощью JNI завалить JVM.
А ты не заметил, что каждый недоязык на JVM создает свою систему сборки. SBT у Scala, Leiningen у Clojure, и только Котлин решил возглавить существующую систему.
Так а зачем?
Сидят на древних питонах и либах, баги в либах правят сами, благо всё опенсорс и не надо пересобирать. Куча контор форкает джангу и переделывает её под себя. Ну и проекты не такие большие, как в жабе. Жить, в принципе, можно, пхпшники и жопаскриптеры же как-то живут.
Основные преимущества джавы в её экосистеме, голая джава мало чем лучше шарпа или крестов. Вот и пиши что-нибудь для экосистемы, обёртки над спрингом, недостающие плагины для градла, убийцы градломавенов, плагины для идеи, или что-нибудь, облегчающее разработку под андроид.
Да, я его имел в виду.
Посоветуйте пожалуйста материал для изучение стека
JavaEE, Beans, CDI, JBDC
Не так давно начал изучать сервлеты, на ютубе нашел только один более менее годный источник
https://www.youtube.com/watch?v=U3YS-U_N3vo&list=PLiJ76e8LBYQVOHd1G3vva9FGV66sdV3N1&index=3
У остальных лио информация выходит куцая, либо мало рассказывают.
Параллельно читаю от Энтони Гонсалвеса (тоже где то советовали) материал по EE
Буду крайне благодарен совету добро-анонов!
Вкатился неделю назад
Ну в стеке EE используется
Если да, можете пожалуйста скинуть, на что можно опираться как пример, а то не очень понятно, как достать pkcs и какой провайдер использовать в java?
Честно говоря - полная хуйня.
у жавы нет преимуществ полумертвый язык из 90х повязший в судах и легаси который вот вот всё
Хуямп.
Читаю "Thinking in Java", потому что там задания есть.
Что обычно у жавистов принято туда биндить?
>у жавы нет преимуществ полумертвый язык из 90х повязший в судах и легаси который вот вот всё
Если бы я умел...
Спасибо, что ответил. Просто курсач горит, сам нихуя не умею да и программирование хуй знает зачем мне нужно.
кмон, этот функционал описывает любой чел на ютубе, который захотел делать свои курсы, в первом же его видево
могу научить пользоваться дочкой гугла - поиском ютуба
лох
Ресурсы процессора брать с продажи memory другим программам?
Подскажи, пожалуйста правильно ли понимаю, что просходит во время выполнения запроса и как это можно оптимизировать.
Ниже лог jdbc-драйвера:
May 17, 2021 8:51:21 PM org.postgresql.core.v3.QueryExecutorImpl processResults
FINEST: <=BE DataRow(len=87)
…
May 17, 2021 8:51:22 PM org.postgresql.core.v3.QueryExecutorImpl processResults
FINEST: <=BE DataRow(len=87)
May 17, 2021 8:51:22 PM org.postgresql.core.v3.QueryExecutorImpl receiveCommandStatus
FINEST: <=BE CommandStatus(SELECT 2192)
May 17, 2021 8:51:22 PM org.postgresql.core.v3.QueryExecutorImpl receiveRFQ
FINEST: <=BE ReadyForQuery(I)
May 17, 2021 8:51:22 PM org.postgresql.jdbc.PgResultSet getBigDecimal
FINEST: getBigDecimal columnIndex: 4
…
May 17, 2021 8:51:26 PM org.postgresql.jdbc.PgResultSet getString
FINEST: getString columnIndex: 2
Выходит, что выполнение запроса на стороне БД и получение строк клиентом занимает около 1с, когда остальное время занимает обработка ResultSet (после получения всех строк)
Если это так, то каким образом можно оптимизировать?
В коде ResultSetExtractor значения полей собираются в объект, который сохраняется как элемент hashmap.
Ну, спорить не буду. У каждого человека свой способ познания. Мне зашёл jsr133, кому-то, вероятно, не зайдет.
Даже STS пишется на идее. Эклипсом и нетбинсом пользуются только индусы и доедающие за ними хохлы.
А что ещё юзать? Дохлый эклипс? Текстовые редакторы не катят, если у тебя там не тудулист с функцией мувисерчера
А че он такой желтый? Это уже FALL
Так тоже не работает нихуя
В спринге аспект хипстерскости проявляется в буте.
Классы для массов не заданы заранее, а динамически создаются при первом создании массива данного типа. Подозреваю, что в первых версиях, для упрощения реализации JVM решили не переопределять никакие методы toString(), equals(), hashCode() у классов массивов.
Ну и всё, завяжи лямку ёбанарот.
Почему ты за меня ответил? Может, я тоже хотел ответить.
Пытался освоить алгосы как можно быстрее, но любой учебный материал требует матана, блядь.
Знаний на уровне задрачивания Кнута никто не требует. Если можешь пояснить за сложность ArrayList, LinkedList, HashMap и TreeMap, этого тебе хватит на много лет вперёд.
>core
Мимо, это же не бизнес логика.
>config
Там спринговые конфиги лежат.
>security
Если бы компонент был связан с секьюркой, то да, но это очень специфичный случай.
>common
Мимо, этот компонент только в одном месте используется.
Еще варианты?
На пару finalizers больше
А как же "Грокаем алгоритмы"? Или ты думаешь, что на собеседовании кто-то будет грокать твой анус мат.анализом?
В каких конкретно алгоритмах тебе понадобился мат анализ?
Бамп.
>А в какой пакет класть кастомные реализации каких-то внутренних компонентов спринга, которые непосредственно к бизнес логике отношения не имеют?
В полиэтиленовый.
Чел, ты не можешь придумать имя пекаджу, ты уверен что правильно выбрал профессию?
Мамке своей придумай.
Если ты и правда спрашиваешь, то если стандартный пекедж org.springframework.stereotype, то ты делаешь что-то типа org.springframework.stereotype.custom. Разве так сложно?
А при чём тут орг?
Помянем
Скоро вся тематика будет сплошь из инцелов, карланов, знаменитостей тредов, захвата Европы, набегов, в чём он не прав, рюкзакодебиллв, дочкек и пориджей.
Экий шутникъ
Ту да, гоферы не потянут такие технологии
Читать книги по программированию - имеет смысл только тогда - когда ты научился программировать
Как к этому относиться, анон?
А как учиться программировать, если не по книгам? По курсам и видосикам?)))0)
Хуезис.
Ты не вкатишься в котлин без знания джавы.
Что-нибудь, что не займёт 4 года.
Ебанатов с алгоритмической секцией на собесах на рынке не так уж много. Мне встречались только Яндекс, мэйл, Тинькофф и дойчбанк. Ни в одну из этих контор не рекомендую идти на джуна. Выбить нормальную зарплату с ростом скилла не получится. Инфа 100%
Враки. Ща такой кризис кадров, что любой конторе выгодней давать тебе больше денег, нежели ебаться и искать замену. С джунами попроще, да, но уже начиная с мидла, можно(и нужно) смело просить больше бабок по кд.
Глобальной цифровизацией.
она уже, анончик
открываешь список классических алгоритмов и пытаешься их реализовывать. Если не получается, смотришь видео, где их реализовывают, пытаешься все понять. закрываешь видос и через час садишься писать сам.
В видосах HD-негры льют воду и играют в угадайку со своими друзьями. Я лучше книгу почитаю.
Это был пример, дебилушка.
Двачую.
@
Размер массива
А ещё не понятно, зачем тебе платить больше, если ты и так работаешь. А если заплатить больше тебе, то остальные тоже захотят. Проще слить одного, а потом за пол года найти очередного лоха. Ну или не лоха, а за нормальную цену. Зато все работают на старой ставке. Я проходил такое сам, и видел на примере других коллег.
Я не он, в большинстве компаний так и делают, как ты говоришь, но чекни затраты на найм норм специалиста в хорошую компанию. Это очень дорого + человек в проект будет включаться полгода, чтобы выйти на полный перфоманс. Так что в некоторых хороших местах стараются удерживать. Сам я пока что зп повышал в основном сменой работы.
Алсо, по поводу:
>зачем тебе платить больше, если ты и так работаешь
Сейчас не та индустрия. Не платят больше - просто сразу уходишь.
>А если заплатить больше тебе, то остальные тоже захотят
А если не заплатят, они узнают твою новую зп и тоже съебутся. У меня так и было примерно.
php, js. Нахуй тебе это говно мамонта
кодировку проверь
Потому что нанимая нового, ты будешь нанимать но рыночной цене, а внутри конторы можно повышать по чуть-чуть держа цену сильно ниже рыночной, изредка подбрасывая кость в виде +10-20к.
В этом суть. В этом стратегия компании. Но девелоперы могут её частично контрить, запрашивая более резкие повышения. Но тут нужно быть наглым. Челик выше правильно написал, что наём нового сотрудника это куча геморроя, начиная от собесов и заканчивая тем, что он будет ещё какое-то время входить в проект.
Бамп вопросу.
Алгоритмы не менялись уже сотни тысяч лет, еще на древних египетских скрижалях двоичные деревья инвертировали.
ну это конечно так, но с на языке с жинериками их можно немного иначе реализовать. А жава4 это язык без них.
Апплет кстати даже в ие не смог запустить, пришлось через апплетвью в жава8 запускать.
Вчера начал читать, апплеты там не то что старые, но даже какие-то бестолковые, те что ко второй главе, как минимум. Визуализация сомнительная и исполнение такое же. Сам текст книги мне тоже местами не нравится - например, как объяснялись кастомные array классы и Big O. Очень много воды, повторений, и как-то не по делу.
Возможно, за эти 20 лет качество книг по Computer Science действительно выросло. Пикрил - наглядное изображение интерфейса в понимании автора.
Но охват тем, судя по содержанию, хороший, так что попробую ещё почитать. Всё-таки подкупает нацеленность автора на доступность изложения.
Раз ты такой умный, то объясни почему массивы, коллекции, строки индексируются с 0, а столбцы в ResultSet с 1?
По именам.
Блинов прикольно лекции ведет, а книга и правда душная.
Просто мне напомнили одновременно про эту книжку и про ханойские башни. И я пролистал главу и включил код из книжки и иллюстрации на апплетах и реализации алгоритмов. Ничего так.
Я???
500+ постов еще набить надо.
Ну короче если в двух словах, и я правильно понимаю, то происходит это примерно вот так:
1) jsf страницы на сервере разбираются на сервлеты;
2) из сервлетом рендерится чистый html;
3) далее когда страница уже была загружена, мы можем исполнять js;
4) ну а потом обратная связь происходит банально через http запросы/ответы.
Никаких комментариев?
Нихуя не по делу, очень много графомании. Как минимум, в вопрос про книги можно включить ВНЕЗАПНО книги, пусть вкатун сам выбирает, что ему по зубам: Java for Dummies -> Head First Java -> Java Programming for kids -> Java Beginner's Guide -> Core Java -> Java Complete Reference -> Thinking in Java -> Java Методы программирования. Чаще всего рекомендуют Beginners guide и Core Java.
Далее, в ответе на вопрос "я выучил кор ..." кроме ссылки можно текстом перечислить мейнстримный стек технологий, с которым уже можно собеседоваться: Core (+ Collections, Streams, Concurrency), SQL + JDBC, Spring, XML, Hibernate, Git, Алгоритмы и структуры данных, Шаблоны проектирования.
В ответе на "сам ничего сделать не могу" - нихуя непонятно, что за лабапас? Три ссылки - это кто-то старательно перечислял говно? Лучше сделать нормальную ссылку на leetcode.com.
Далее, в вопросе про алгоритмы упоминается Седжвик - нахуя? Это книга не для вкатунов, с таким же успехом можно советовать Кнута. Желательно вспомнить более простые манускрипты, выше например упоминались Грокаем алгоритмы и Роберт Лафоре, должно быть ещё что-то.
К вопросу про собеседования можно добавить Cracking the Coding Interview, потому что её везде советуют, и упомянуть десятки тестовых собеседований на ютуб-канале Eugene Suleimanov, годнота же (https://www.youtube.com/playlist?list=PLlsMRoVt5sTMMCwd_gLaaZMkQhzVh9hLA).
Вот это ты душнила.
Забыл самое главное - в шапке обязательно должно быть аниме.
Вчера зарегистрировался.
Поднял образ монги в DockerDesktop.
Как подключиться к нему в MongoCompass?
Компас какую-то БД по дефолту поднимает? Заходишь в Компас без запущенного докера - подключается по дефолту к Бд. С подключенным докером - такая же херня.
Поясните, плез.
Монга написана на С++, спрашивай в С++ треде.
Компас написан на электроне, спрашивай в js треде.
Посмотри куда биндится сервер в докере и подключайся по нему в компасе. Если ты полный набор комьюнити эдишн ставил, то у тебя с компасом еще и локальный сервер в самой системе поставится, в винде можешь посмотреть его в службах.
Я подаю в контроллер спринга текстовый файл. Мне надо прочитать его и записать в БД (в MongoDB).
Я принимаю файл с помощью MultipartFile, а планирую читать с помощью BufferedReader'a других вариантов не знаю, мб получше есть.
Но спринг ругается т.к. BR хочет java.io.File и не может скастовать MultipartFile в File (даже если приведение втуляю, которое сама же IDE и предлагает).
Нашел один из вариантов - сохранить где-то файл локально, а потом считывать его уже в File. Ну и т.д.
Без этого шага как-то можно?
Не бейте, а помогите, пожалуйста
>>42300
Спасибо за ответ!
Спасибо, а можно-таки более развернуто? Для тупых
Я могу нагуглить оф. док, ток в английском слабо шарю же.
Т.е. я если сделал MultipartFile file, то потом у file вызываю .getInputStream() и он мне..че делает?) Дает поток?
Я могу обозначить новый файл, из которого читать типа File file2 = file.getInputStream;
?
И потом уже читать из file2 ?
Так, получается?
Вызываешь getInputStream() и он тебя ебет в жопу.
Причем их распиарили уже года 3 назад, а разрабатывают уже лет 6-7.
Они там ебобо чтоли?
Иди и помогай им.
Я могу ответить на конкретные вопросы, но писать код не буду.
У тебя есть InputStream из которого можно читать байты, можно его завернуть в InputStreamReader и уже читать символы. Полученные байты/символы можно писать в OutputStream/Writer.
17 это LTS релиз, даже если бы они были готовы никто не будет добавлять такие большие изменений в LTS релиз.
Вначале их выпустят в обычном релизе в preview режиме.
Но пиарить эти проекты начали еще при java 10.
Толку было с этими минорами/мажорами, если по факту между 10 и 17 разницы будет в 2 раза меньше, чем между 7 и 8.
А ты хорош. Вот только там есть метод transferTo для этого всего, а содержимое, если захочется, можно взять просто через getBytes без всякой хуйни.
>Толку было с этими минорами/мажорами, если по факту между 10 и 17 разницы будет в 2 раза меньше, чем между 7 и 8.
Между 10 и 17 много изменений, как синтаксических так и внутренних которые не видны на прикладном уровне:
- text blocks
- records
- switch expressions
- var
- Pattern Matching for instanceof
- Sealed Classes
- 2 новых GC
- foreign memory
- перепилили реализацию сокетов нужно для loom
- nested classes
Раньше внутренние классы полностью реализовывались компилятором. Например чтобы внутренний класс имел доступ к приватному полую родителя - компилятор генерировал специальный метод доступа. JVM никак не различала внутренний и обычные классы.
Теперь есть JEP 181: Nest-Based Access Control. Не помню зачем, но это нужно было для value типов.
Полноценная поддержка лямбда-выражений.
Ключевое слово default в интерфейсах для поддержки функциональности по умолчанию.
Статические методы в интерфейсах.
Ссылки на методы и конструкторы.
Функциональные интерфейсы (предикаты, поставщики и т. д.)
Потоки (stream) для работы с коллекциями.
Новый API для работы с датами.
лучшее из мира жс
Дальше будет только меньше. В языке остается все меньше вещей чтобы развернуться и не сломать километры индусского легаси кода. Вот и остается только вм и мусорку пердолить
Но дженерики для примитивов из вальгаллы, легкие треды из лума это же клево. И то, что всякого мусорного сахара меньше, чем в других языках это хорошо.
Но вот эта хуйня с кормлением завтраками бесит.
Кобол, спок.
Нет, спирвадабейся было бы, если начал задвигать телеги по типу "Сначала создай такую мощную платформу, которая станет промышленным стандартом в тырпрайзе, а потом вкручивай туда новые фичи каждые полгода".
И слава богу, без ветра все бы от тебя уже задохнулись.
Но фичи пообещали и не дают!
А зачем цикл релизный цикл 2 раза в год если ничего толком не выходит
>Потоки (stream) для работы с коллекциями.
>Новый API для работы с датами.
Ну прям достижение, теперь не надо JodaTime и Guava подключать!
>Полноценная поддержка лямбда-выражений.
>Полноценная поддержка лямбда-выражений.
>Функциональные интерфейсы (предикаты, поставщики и т. д.)
Вот это единственное заметное нововедение.
>Ключевое слово default в интерфейсах для поддержки функциональности по умолчанию.
>Статические методы в интерфейсах.
Чуток сахарку в компилятор досыпали, достижение!
Ты концентрируешься на каких то мелочах, но которые используются в повседневной жизни. Но при этом игноришь вещи которые требуют действительно сильной переработки JVM но незаметны снаружи. Те же compact strings, var handlers, off-heap память с ручным управлением. Понятно что Spring-REST макаке это все не нужно, а новые даты нужны. Но для написания эффективных инфраструктурных вещей типа in memory data grid это наоборот очень важно.
Зачем есть капусту когда есть картошка
Я не вижу смысла менять язык тупо ради сахарка. Всё равно инфраструктура везде одинаковая, и нет разницы, каким синтаксисом с ней работать.
Шарп и делфи соотносятся намного меньше, чем жаба и котлин. Например, разумно в каких-то задачах переходить с жабы на шарп, потому что там не только сахар. Но с жабы на котлин - хуита какая-то, для вкатывальщиков поиграться.
демагог ебаный
Ну и приходи тогда через 3-4 гида, а сейчас возвращайся в свой тред, в котором один пост в две недели.
При использовании try catch у меня выполняется блок catch и дальше программа замораживается или заканчивает выполнение.
Код.
Почему? чем РЕСТИКИ на питоне хуже JAVA рестиков?
У вас спринг сделан из говна и палок, а в питоне все четко.
еще куча интеграций с нейроночками
java - реально говно, мертвый язык
Ты лучше расскажи чем рестики на питоне ЛУЧШЕ java рестиков?
Почему люди должны начать писать их на питоне?
пэхэпэ забыл
Там в цикле перехват идет и в конце catch стоит continue. Итерации цикла зависят только от одной либы, которая нормально работает.
У меня из другой нативной либы вылетают разные exceptions включая "unknown" рандомно на разных иттерациях, но они независимы.
Получается либа падает от них что ли, какая-то залупа происходит в общем. Примерно раз в 2000 итераций(каждая от секунды и больше), там дохуя всего вычисляется, каждый раз в новых местах выбрасывает, может вообще не выбрасывать.
Вообще там многопоточка, но я много раз перепроверял, конкуренция может возникнуть только при чтении, запись в уникальные объекты для каждого треда.
Может либа кривая или как-то внутри себя не воспринимает адекватно многопоточность.
Глянь на hh, толстяк.
Ну а почему я должен смотреть не с позиции спринг-рест макаки, если их подавляющее большинство из тех, кто пишет на жаве?
шо это за зверь, выглядит вроде норм, но оказался не нужон, проиграл js фреймворкам?
> проиграл js фреймворкам
Нет, он с ними и не играл. Это другая область. Это в J2EE стеке юзают, правда очень мало где.
Ты можешь смотреть с любой позиции, которая тебе нравится.
Но
>если по факту между 10 и 17 разницы будет в 2 раза меньше, чем между 7 и 8.
и
>если для круд-макаки изменений между 10 и 17 разницы будет в 2 раза меньше, чем между 7 и 8.
разные вещи.
Нет, не мимо. Ты всё тот же шиз, срущий здесь несколько дней. Тебе сложно представить, как жалко выглядят со стороны твои попытки семёнить.
Какой он брат тебе? Скалистов вспомни.
У любого нормального человека при виде подобных схем, где ввод-вывод рассосали на 30 классов, будут сомнения, нужно ли это всё задрачивать. И это нормально, потому что не нужно. Подводные труднозапоминаемые моменты почти никогда не учат и не пишут руками, для них один раз делают обёртку и потом её используют, и неважно, как она устроена. На любом проекте будет какой-нибудь свой FileUtils, и даже её юзать его придётся крайне редко, ибо почти все данные в проектах на жабе хранятся в БД и конфигах.
Зачем тебе тогда вообще Optional? Есть единственный правильный способ его использовать, и если ты в нём хранишь нулл, либо саму переменную Optional делаешь null, это явно не нормально.
эх жиза)
знаю, вы не любите залетных, но я вот хотел посчитать среднее значение выпадение кубиков в настолке, там кидаешь несколько кубиков и выбираешь наибольшее, можно разные плюшки покупать для повышение своего урона и один из них шлем, он суммирует одинаковые значения. два кубика с помощью эксель посчитал, а вот с тремя уже сложнее и пришлось гуглить и ставить ide. так вот, можно как то упростить этот код? мне просто хотелось бы посчитать для 4 кубиков, может есть более элегантный способ решить задачу
Чтобы заебать всех, кто попытается потом в этом говне разобраться.
пчел, просто сделав for(1..6) ты сможешь убрать этот непомерно длинный, нетестируемый if-else, хуй знает зачем ты вообще его написал
Конечно. А ты что думал?
Что за гуглить, чтобы понять о чем ты? По поиску циклы для java мне выдаёт мой вариант.
> Process 'command 'C:/Program Files/Android/Android Studio/jre/bin/java.exe'' finished with non-zero exit value 1
Товарищи, срочно нужен совет как фиксить эту залупу. Интернет и лог молчат как партизаны. Происходит после импорта.
ты про либу на жс? это ж тупо рандомизатор, ни одной задачи из тех что нужны анону она не решает.
Это нужны те кто может решать мидл задачи на литкоде, а как выяснилось тут большинство макаки умеющие только в спринг.
Какой смысл писать лишний код в виде интереса для описания лямбды?
Это не намеренная фича, а просто костыль, чтобы не надо было ебаться с добавлением функций в язык.
Осваиваю CRUD'ы. В частности, интересует JpaRepository-методы.
Если у меня таблица в БД (Postgres) ненормализованная. поле Id неуникальное. Могу я вытягивать с помошью rep.getById() / findById()?
Или в таком случае не будет работать?
Мне нужно все объекты вытянуть с одинковым id .
Тогда надо брать findAll(), получать List и потом с ним уже шаманиться?
СНе бейте, целый день ковыряюсь. Уже не соображаю ниче
Прям функций в шарпе тоже нет. Вместо функциональных интерфейсов есть делегаты, у них чуть более лаконичный синтаксис:
delegate int MyDelegate(int x, int y);
И потом его указывают в аргументах метода. Может быть объявлен на уровне класса или неймспейса (аналог нашего пакета, но можно сразу несколько публичных определений в одном файле писать), но создавать его "экземпляры" глобально нельзя. И есть пачка встроенных делегатов, чтобы не писать каждый раз: void f(Func<int, int> myDelegate) { ... }
Ещё есть локальные функции, выглядят как методы, но описываются внутри методов.
В джаве есть статические импорты, можно было бы юзать их, а для передачи в методы придумать какой-нибудь сахар типа шарповского Func<>.
>Типы самих лямбда-объектов? Не совсем понял тебя.
Типы входных и выходных параметров и их количество.
Ну а зачем оно нужно? Разве не проще было бы сразу в самом лямбда-выражении описывать выходные параметры и возвращаемое значение
if (CONDITION) return arr.get(index / 3);
else return arr.get(index);
или
return arr.get(CONDITION? index / 3 : index);
Я еще где-то видел, что тернарный оператор сильно уступает if else, если не используется при максимально простом случае. Только там был по моему c или c++.
int x = CONDITION? 1 : 2;
Табы проебались
По скрину не понятно в чем проблема. Теги th: идея не понимает? Странички не парсятся? Или все работает, но тебя это выделение смущает?
>Могу я вытягивать с помошью rep.getById() / findById()?
Да можешь. Можно вообще по любому уникальному полю так делать.
Идея не понимает теги th: и при сборке выдает whitelabel error, хотя в предварительном просмотре все правильно работает и отображается. А если нажать fetch external resource на лифе, то выбивает пикр.
>А, вот как. Вроде же не так сложно было бы добавить один новый интерфейс функции, для хранения новых объектов/функций.
Тогда надо делать кучу новых API которые будут принимать "функцию" вместо интерфейса.
Например есть методы сортировки которые принимают Comparator, ты берешь и лямбдой его имплементишь и все работает. Любой старый код просто работает.
У интерфейсов есть дефолтные методы которые позволяют реализовывать дополнительный функционал, типа and() у предикатов.
Если у тебя замыкание, то тут тоже понятно где хранить значение - у тебя тупо внутренний анонимный класс, храни там все что нужно.
>>51388
>Разве не проще было бы сразу в самом лямбда-выражении описывать выходные параметры и возвращаемое значение
В лямбда выражении нужно реализовывать некий контракт. А описывать контракт надо в методе который принимает лямбду. В принципе Котлин позволяет так делать
fun foo(bar: () -> Int) = print(bar())
Почему в джаве не стали так делать сложно сказать, подозреваю что из-за сложностей с привидением функций. Т.к. нет чистых функций то для каждого
() -> int
надо создавать свой интерфейс и сделать так, чтобы () -> int объявленные в разных местах - были эквивалентны.
whitelabel error обычно признак того что страница которую выдал контролер не существует, а тимлифовские страницы при неправильном рендере выдают 500 со стектрейсом.
У тебя скорее всего проблема в контролере или резолвере(если ты менял стандартный спринг-бутовский). Ну и зависимости перезагрузи, может там либа отвалилась в идее. xmlns на работоспособность тимлифа не влияют, они просто для удобства.
Спасибо, постараюсь еще покопаться, отвалилось оно как раз когда в контроллере ковырялся, просто не думал что это вообще как-то сломать можно
int index2;
if (CONDITION) {
index2 = index;
index2 = index / 3;
} else if (!CONDITION) {
index2 = index;
} else {
throw new RuntimeException("invalid condition");
System.exit(1);
}
int result;
result = arr.get(index);
return result;
Ты головой стукнутый?
https://habr.com/ru/post/560336/
Паттерн матчинг завезли? Жуй.
Спасибо, анон.
>>чтобы именно на Джаве
Разве что пикрил, остальные книги про архитектуру, которой язык не особо важен.
лол, нет.. В целом качество многих публикаций данного издательства оставляет желать лучшего, на счет конкретной книги хз, хотелось пукнуть))0)
Не могу понять что нарисовано на картинке? Это какие то рубины? Или это куски мяса?
Похоже на зерна граната.
Юнит-тесты пишут, берут h2 или hsqldb, устанавливают для них синтаксис настоящей используемой СУБД и гоняют на ней тесты для DAO. Конечно, они не совершенны, маленькая in-memory СУБД не будет покрывать весь синтаксис оракла, но для большинства запросов хватает.
Я - только учусь, обосрался с классами и вместо того чтобы все переписать полез в хэшмапу и итераторы, хотя их ещё не знаю. Работает, лол. Часто ли такое происходит на реальной работе?
На реальной работе порой бывает ТАКОЕ! ШОК!, никакой фантазии не хватит нарочно до этого додуматься. Иногда не знаешь, с какой стороны подступиться к задаче, и пишешь простыню говнокода, а затем внезапно замечаешь, что всё сходится, и переписываешь 100 строчек на 10.
Реквестирую гайд по экспресс-вкату в джаву для шарписто-питониста.
Около 10 лет пишу на дотнетах и 3 года на питонах, понадобилась джава для решения чисто утилитарных задач: написать плагин для keycloak/elasticsearch/jetbrains'о-IDE, засунуть java-only либу в веб-сервис, чтоб дёргать её из дотнетов/питонов, и т.д.
Т.е. я умею в кодинг/ООП/паттерны/многопоточность и всякое language-agnostic, надо освоить java-специфичные штуки.
Вот эти вот class-loading, системы сборки, менеджеры пакетов, jar/war, подводные камни и грабельки.
Есть ли такой роадмап/гайд/книга?
Чтоб вкатиться в дотнеты из другого языка, надо прочесть 3 книги: CLR via CSharp про платформу, какой-нибудь CSharp in a Nutshell про язык и что-нибуть конкретное про фреймворк - AspNet/WPF/etc. Есть ли такие 3 книги для java?
Я видел интересующие меня темы на hyperskill, но до НГ было не до этого, а теперь оно платное и моя жаба недовольна.
Эта таблица херня полная потому что:
- она устарела, перм гена уже нет
- она описывает некоторые GC и даже не указывает для каких именно эта картинка верна
В общем не читайте.
Джава тоже устарела и что
> Вот эти вот class-loading, системы сборки, менеджеры пакетов, jar/war, подводные камни и грабельки.
Думаю, для этого достаточно пары статей в инете. Если нужно что-то более глубоко, по тем же системам сборки, то добро пожаловать в доку
Надо искать статьи по конкретным GC.
https://wiki.openjdk.java.net/display/shenandoah/Main
https://www.youtube.com/watch?v=WU_mqNBEacw
Плюс есть еще OpenJ9 от IBM у которого свои GC
https://developer.ibm.com/languages/java/articles/garbage-collection-tradeoffs-and-tuning-with-openj9/
А еще есть Epsilon GC который вообще не собирает мусор.
Разве хип относится к гц, а не к самой жвм? Что мешает использовать эту пикчу с другими гц?
Разделение на регионы и аллокация новых объектов это часть подсистемы GC. Потому, что именно GC знает где сейчас надо аллоцировать объекты, размеры регионов и их типы. Например у Shenandoah GC вообще нет поколений, но есть регионы. А у Parralel GC есть поколения, но нет регионов.
Решил это долбоебским способом, поменяв в идее кодировку data-h2.sql на ср1251. Но хотелось бы узнать как правильно настраивать H2.
Я сейчас подумал, а что если в jdbc-строке (jdbc:h2:db) прописать эту пропертю, как я делал с MODE.
Хуй там. Unsupported connection setting "PROPERTY.FILE.ENCODING"
GC это не какой-то отдельный механизм который просто убирает мусор и все. Он очень тесно связан со всеми остальными системами JVM. Шипилёв в каком-то видео говорил, что больше половины кода шенанды - это изменения в JIT.
> канкаренси на практике 2006
Если судить по пакету java.util.concurrent, полноценное апи для многопоточности появилось только с жавой 1.5 и с тех пор там мало что поменялось. И книга больше не про апи, а про разжевывание конкурентности, многопоточной архитерктуере, примитивы из которых это апи строится и в таком ключе. Апи не сложно загуглить прямо сейчас, но структурированной инфы про конкурентность ценней чем тут будет сложно найти.
Что-то не нахожу.
Минвайл в жаве я не осиливаю считать господи ты помилуй жсон с куками из тхт, который этот же селениум мне и выдал. Читать c помощью Files.lines(Paths.get(fileName))) тоже не предлагать, потому что там Stream<String> (или его можно закастить к Cookie?)
Еще немного и я перестану забивать микроскопы кувалдой и просто напросто открою пайчарм. Обалдеть вообще, взрослый человек, подает надежды, а кукисы из файла считать не может.
гугл джава селениум куки бесплатно https://www.selenium.dev/documentation/en/support_packages/working_with_cookies/
То.
Не, фигня, это для ручного ввода каждого элемента кукикосов, а я хочу все что есть одной строкой сунуть.
Как же хорошо питонистам, а
По ссылке что я кинул питоновский апи точно такой же как и на джаве.
> ля ручного ввода каждого элемента кукикосов
Что такое элементы кукисов?
А сколько часов в день вы занимаетесь кодингом?
Хотя бы примерно. Будет круто, если распишете подробно. Сколько кодите, сколько чего-то читаете, мб еще какие-то курсы смотрите.
И еще интересно: что делаете после кодинга (после работы)? Играете в игры? Гуляете? Бухаете? Смотрите фильмы/сериалы?
отдельный тред создай и там спрашивай
В МВП спроси.
Это обычный в энтерпрайзе с JSP.
Он в базовом контроллере, но в некотором дочернем контроллере он не нужен. Ну не суть, уже разобрался.
Для своих.
Так всё-таки что это такое? И умоляю, скажите, что я не один такой долбоёб.
Ты не один.
В начале вообще нихуя не понятно, за спринг строится на слишком большом числе идей и паттернов. Легче всего повторять по туториалу, запоминать последовательность действий, чтобы магия работала. Затем, когда первые круды зарвботают, можно вникать в смысл dependency injection и прочей хуйни.
Наследование контроллеров, в воздухе разлился сладкий запах ООП.
Спринг - это большой фреймворк. В самой основе его - идея того, что взаимодействие между инстансами классов приложения (объектами) можно передать некоему отдельному "управляющему" объекту.
Этот "управляющий" объект согласно описанным в конфигурациях(xml-ки или java классы со специальными аннотациями) правилами инстанциирует управляемые объекты и "соединяет"(сетает поля) их с другими объектами.
Если это понятно, то дальше возникают вопросы: а как спринг разруливает, какие классы инстанциировать раньше, а какие позже. И там уже всё станет понятно, если почитать эту книжку
потому что нет причины не делать что-то. И наоборот, есть только причины что-то делать
а попробуй запускать h2 с -DmyAwesomeProperty=UTF-8
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/classes/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<!-- <classpathPrefix>lib</classpathPrefix> -->
<!-- <mainClass>test.org.Cliente</mainClass> -->
</manifest>
<manifestEntries>
<Class-Path>lib/</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
То мавен упаковывает все библиотеки для всех платформ.
Если это так, то гарантированно все будет работать на всех платформах? Чет мне кажется, что с большой вероятностью не все библиотеки имеют компоненты для всех платформ, и я просто нагружаю jar-ник мусором. Можно ли упаковывать библиотеки только для выбранной платформы и получать за одно предупреждение, если чего-то не хватает?
Я немного ахуел с jar-ника весом больше гигабайта.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/classes/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<!-- <classpathPrefix>lib</classpathPrefix> -->
<!-- <mainClass>test.org.Cliente</mainClass> -->
</manifest>
<manifestEntries>
<Class-Path>lib/</Class-Path>
</manifestEntries>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
То мавен упаковывает все библиотеки для всех платформ.
Если это так, то гарантированно все будет работать на всех платформах? Чет мне кажется, что с большой вероятностью не все библиотеки имеют компоненты для всех платформ, и я просто нагружаю jar-ник мусором. Можно ли упаковывать библиотеки только для выбранной платформы и получать за одно предупреждение, если чего-то не хватает?
Я немного ахуел с jar-ника весом больше гигабайта.
Если речь не идет про граальвм, то jar и скомпилированные классы в нем работают под одну единственную платформу JVM и 99% либ не важно где они будут запускаться. Некоторые либы содержат в себе пребилды из бинарников, но обычно они сразу включены для нескольких платформ. Как поступить с отдельно взятой зависимостью нужно смотреть в доках этой конкретной говнолибы.
> Чет я не совсем понял, если прописать
Уже не помню что это говно делает именно это в мавене, но похоже просто кладет зависимости в папку либ и добавляет путь к ним в манифесте.
> Я немного ахуел с jar-ника весом больше гигабайта.
Найди в/рядом с билдом папку lib и посмотри что там жирнее всего. Потом найди откуда эта зависимость взялась в проекте.
Я например ахуел когда увидел что commons-collections занимал 20 с лишним метров, при чем его принесла васянская говнолиба на пару строк кода, за что была выброшена нахуй.
> Можно ли упаковывать библиотеки только для выбранной платформы
Можно изъебаться с java-module, тогда по идее в билд уйдет только то что нужно, но на многое не рассчитывай
Можно изъебаться с pro guard, но на жаве я с ним не работал
> Я немного ахуел с jar-ника весом больше гигабайта.
Еще возможно ты неправильно указал скоупы зависимостей и весь javaee рантайм ушел в билд https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#dependency-scope
Люби в свободное от работы время.
Senior Maven Developer
В этой книжке не объясняется теория спринга совсем. На ютубе есть алишев, там 20 видосов по самому начальному уровню спринга - ди+начало мвс. После этих видосов берись за книжку. Ну или про спринг читай, но это талмуд.
Суть задачи такова:
На вход дается набор строк, объединенных в коллекцию. Нужно посчитать, сколько раз повторяются слова длиннее 4х символов (ну и ещё чтобы чаще 10 раз встретились) и вывести ответ.
В итоге получается херня: при обработке первого текста получается такая срань.
Логика такая:
привожу к нижнему регистру (это условие задачи)
бью все, что не буквы (ещё такую регулярку поставил line = line.replaceAll("[^\\p{IsAlphabetic}]", " "); )
бью строку на слова по пробелу
перебираю каждое слово по логике: если есть, то добавляю к значению единицу, а если нет, то добавляю в коллекцию со значением 1
потом сортирую это дерьмо, не добавляя неподходящие варианты и все.
Подскажи, где ошибка?
https://ideone.com/qzxd9C
Блядь.
Точно.
Ошибся с расположением и все в одном цикле болталось, как говно в стиралке.
Правда, я хз, почему такой всратый результат получился. Я где-то кодировку неправильную указал или что?
>>Нужно посчитать, сколько раз повторяются слова длиннее 4х символов (ну и ещё чтобы чаще 10 раз встретились) и вывести ответ.
>Правда, я хз, почему такой всратый результат получился. Я где-то кодировку неправильную указал или что?
Для массивов в Java не переопределен toString() это дефолтный из Object поэтому надо явно делать Arrays.toString() если хочешь посмотреть содержимое.
Не пойду, кто-то должен это постить, а если не я, то кто?
Самого себя я логаутую с помощью SecurityContextHolder.getContext().setAuthentication(null);
Как мне разлогинить другого юзера по имени(или айди)?
(В гугле какие-то лютые костыли находятся)
спасибо братец, думал этот трекер сдох давно.
Звучит как какая-то хуета
Для spring in action мне хватило книжечки на 200 страниц крупным шрифтом(Алан Бьюли).
А на собесах будут дрочить нормализациями, задачками на сложные джоины, спрашивать кап теорему, особенности реализации транзакций?
Ебать, спасибо за ресурс.
Поясните, почему это нормально для джавы, лол?
https://ideone.com/Skrx33
Не будут, если написал пару крудов, то уже знаешь всё. За нормализацию спросят максимум до третьей формы, джойны возможно, транзакции вряд ли меня таки спросили, но меня базисты собесили
А..
Можно попробовать удалить все его сессии:
persistentTokenRepository.removeUserTokens(username);
или истечь:
for (SessionInformation info : sessionRegistry.getAllSessions(username, false)) {
info.expireNow();
}
Ты про что именно?
>(В гугле какие-то лютые костыли находятся)
Потому что ты что-то не то пытаешься сделать. Опиши поподробней задачу.
А как пользователь авторизовывается в приложении - форма+сессия в куке или OAuth?
Сколько инстансов сервера поднято (один или несколько)? Где хранятся сессии если авторизация через сессионую куку?
Вот как спринг разжижает мозг человека
Джоины, юнион, транзакции и асид, индексы, уровни изоляции и какие проблемы они решают. Ну и нормальные формы тоже чуть-чуть бы знать. На sql-ex 20 первых задач хотя бы
>Download pre-built shared indexes
>Reduce the indexing time and CPU load with pre-built JDK and Maven library shared indexes
Что это за индексы? Стоит ли включать их загрузку?
Все это, если что, знать можно неглубоко, сильно не запаривайся, про всякие кап теоремы точно только ебанутые Джуна спрашивать будут. По моему опыту вообще всем пофиг, что ты там говоришь, главное уверенно. А в глубину очень редко копают, и в основном это нюансы кора и спринг, в основном транзакции. Но это я про миддл собесы, как там у джунов хз
Для быстрой навигации между определениями идея ищет все классы из проекта, из jdk и используемых зависимостей мавена и строит по ним индекс, причём частично перестраивает при каждом изменении конфигурации мавена или пре реимпорте. Ну и тебе предлагают не индексировать каждый раз это всё, а скачать уже построенные индексы для ждк и популярных либ из мавена, которые всё равно везде одни и те же, и нужно будет строить индекс только для классов твоего проекта.
Понял, спасибо за разъяснение. Тогда включу, пожалуй.
Не, тут даже не в разрешении дело. Это плохой шрифт, он плохо выглядит в современном вебе. Плюс у тебя выравнивания какие-то странные, все буквы пляшут абы как. Подложка вокруг них вообще пиздец, она под шрифт не попадает никак да и не нужна вообще, у тебя нет за ней контрастного изображения. Короче, возьми любой нормальный современный шрифт без курсива, без жирного, без подложки и выровняй всё нормально, особенно нижние даты - они должны быть выровнены по нижней (левой для даты) границе, а не по верхней. Опционально, вокруг рамок аниме-тяночки неплохо бы сделать градиент в белый или в цвет любой другой выбранной подложки, чтобы картинка плавнее ложилась под график. Удачи!
Спасибо, добавил градиент в прозрачный, взял Arial, даты выровнялись сами. Не дизайнер я.
Дополнительный вопрос: а какие есть простые способы отсортировать TreeMap по значению и по алфавиту (типа, вначале самые частые слова, а потом уже среди равных по алфавиту), кроме старндартного перебора с if/else?
>> На sql-ex 20 первых задач хотя бы
Какой то странный сайт из 90-х. Списков задач нет, одни рейтинги кругом.
Написать компаратор
Да, древний сайт, но это просто задачник, там надо зарегаться, советую попробовать. 20 задач решишь - этого хватит для собесов.
>>60059
Горит жопа с этого sql-ex. "Найдите номер модели, объем памяти и размеры экранов ПК-блокнотов, цена которых превышает 1000 дол." - вывожу объём памяти HDD, а они имели ввиду RAM. Ну и само словосочетание - "ПК-блокноты". И это только третье упражнение. Непонятно, как они там тестируют глубокое понимание запросов, если не могут задачу сформулировать нормально. Ещё и при регистрации фамилию требуют, пиздос.
начни с Алишева на ютубе, потом spring in action 3. В этой книге хорошо написано про core и mvc
>я 3 каким то образом решил, но не понял как остальные решать, он мне одну и ту же подсовывает.
Слушай, а может ну его, программирование?
Тебе надо заинжектить себе SessionRepository бин https://docs.spring.io/spring-session/docs/current/api/org/springframework/session/SessionRepository.html
И у него есть метод удаления сессии.
и надо еще найти в файле русские слова длиной больше 3 - это лучше в процессе чтения добавлять в коллекцию? или сначала считать, а потом отфильтровать
Реализовать локи с приоритетом.
А вообще думаю через три мьютекса все равно не получится сделать.
Интересно. Это типа ещё одна парадигма программирования? Я так по диагонали пробежался по статье на хабре.
Это почему-то называют отдельной парадигмой, но по мне так это всё равно что называть try-catch парадигмой. Суть там тупо в том, чтобы писать интерсепторы, перехватывающие, которые будут перехватывать все вызовы/завершения каких-то методов и делать указанные действия. Нужно во всяких/либах/фреймворках, в пользовательском коде используется редко, это аналогично рефлексии.
Знаю бать, только я не в смысле тюремных понятий. Ну типа стыдно и непрофессионально делать монолитный бэкенд.
> интерсепторы, перехватывающие, которые будут перехватывать все вызовы/завершения каких-то методов и делать указанные действия
Ого, а это уже интересно. Надо не полениться и поизучать.
Никакого зашквара. Микросервисы решают одни проблемы и создают другие. Нужно знать, когда их применять, а не РЯЯЯ 2021 ДАВАЙТЕ СЕРВЕРЛЕСС FAAS МИКРОСЕРВИСЫ НА КАЖДУЮ ENTITY.
> СЕРВЕРЛЕСС FAAS
Я в амазоне понимаю чуть более, чем нихуя. Просто надо написать бэкенд для очередного мессенджера, и я хочу сделать её с применением микросервисной архитектуры.
>в умную через три мьютекса
Я не знаю требования и не видел алгоритм, но уже по описанию идея выглядит как адский велосипед, который возможно еще к дедлокам будет приводить.
Ты небось еще и линуксоид? Иде ненужна, вим лучше вех?
Это оверхед, ты просто хочешь поиграть, а по факту только вред от этого. Но если это пет проект, то почему бы и нет.
Ну это не совсем пет-проект. Наш СЕО хочет чтобы мы развивались как девелоперы, поэтому дал такое задание, и мы в свободное время занимаемся этим. Вот я и хочу подобрать стэк и архитектуру сложнее чем я работал раньше.
А потом окажется, что диск может работать только с одними данными за единицу времени, и треды будут отрабатывать по очереди, будто всё в одном треде делается.
Нет, не сдохла. Живее всех живых.
Какие есть аналоги джаве в энтерпрайзе кроме шарпа и пхп? Джаваскрипт не предлагать.
Меняет. Поток выполняет себя сам и после того как завершился его нельзя запустить повторно. А Runnable можно выполнять сколько хочешь.
Так вот нормальное ли это поведение, если все происходит в пределах небольшого монолита/одного микросервиса или достаточно валидировать данные в контроллере, а дальше и так понятно что все будет нормально?
А зачем столько валидаций? На фронте и контроллере по-моему достаточно. Зачем там городить огороды?
Смотря что за валидация, проверку полей на NULL можешь сделать и в контроллере, но вот если у тебя там передаются id других сущностей, надо проверить, что они существуют, и это можно сделать только в сервисе.
На фронте первичная валидация нужна в любом случае, чтобы юзер сразу увидел поля с ошибками, выделенные красным, а не вводил каждый раз всё заново.
>На фронте и контроллере по-моему достаточно.
Никогда так не делайте! Проверки на бекенде это обязательная вещь.
Проверки на фронте тоже желательны, они дают хороший UX - пользователь сразу видит где у него ошибка в форме.
>>61860
Да нормально, потому что код меняется. Возможно появиться новый контроллер, который будет использовать этот сервис и там забудут добавить валидацию.
Аналоги тормознутому говну застрявшему в нулевых годах? Таких нет
Поднимаю в докере кафку(+zookeeper).
Прописываю в docker-compose порты кафки, зукипера.
А где в спринге я это конфигурирую? в IDEA, например?
В коде? или в application.yml ?
Или как я должен указывать спрингу, где ему искать кафку?
Попробовал и те, и се порты ставить в compose. Спрингуля ругается..
куча гайдов и примеров в гугле, пиздуй отседова
Нихуя ты придумал.
найс, пруфы будут?
Напиши сам, вместо джавы можешь сунуть груви.
Есть воркер который что то селектит из БД пачкой и обрабатывает это дерьмо.
Что лучше 10 потоков которые будут селектить по N и потом это прокручивать или 1 поток который будет селектить и потом фор луп хуярит в 10 поток то что селектнуто?
А да.. паралел стрим не предлагать.
1С-тред некст.
Ну ладно.
Используем JdbcTemplate здорового человека, а сериализацию описываем в WSDL.
Для ОпенОфиса можно писать плагины на Яве соответсвенно можно написать функцию и вызывать ее из ячейки
У вас майбатис весь на аннотациях? У меня на новом проекте на XML мапперы почему-то
Бампану вопрос. Никто не знает?
Бля шо C# хуйня шо жава. Одинаковое дерьмо на 95%.
Скобочка с другой строки и указатели ох ебать, вот ето разница!
Проперти, поинторы, перегрузка операторов, шаблонные строки как минимум который хотел бы видеть в жаве
Ух как жить то без перегрузки операторов.
Котлин и весь энтерпрайз одна и та же одинаковая параша.
Очень не просто, с бигдесималом например приходится в комментарии расписывать формулу, а потом ее имплементить через методы. Больше 4 операций уже выглядит как хуйня из разряда постройки фабрики фабрик. И всякие a.comareTo(b) > 0 вместо простого a > b туда же. Матрацы, вектора, вообще все что можно через алгебраические типы выразить в жаве превращается в нечитаемую хуйню.
Про структуры ещё забыл, чтобы не ебать кучу с гц. Они бы тоже не были лишними
В частном случае, когда у тебя воркер работает на одном ядре и всё "дерьмо" - CPU-intensive задачи, эффективен будет вариант "2" с циклом.
В общем случае оба варианта - эскобар.jpg (в 1 случае лишние хождения в БД и лишние переключения контекстов для CPU-intensive задач, во 2 случае - простой всех ядер кроме одного, в котором крутится твой цикл for, и твой единственный поток будет большую часть времени в состоянии WAIT для IO-intensive дерьма).
Обычно делают так - берётся пачка задач (из БД или из очереди) и распределяется для параллельного выполнения в пуле потоков, где их кол-во = NubmerOfCores*2.
Детали (размер "пачки дерьма" и кол-во потоков в пуле) зависят от твоего "дерьма" - это CPU- или IO-intensive задачи, как долго каждая из них выполняется, сколько у тебя ядер и насколько быстрое у тебя IO.
Открой visualvm и посмотри
Настолько хуйня, что такой большой % рынка занимает.
Для макаки даже сравнить 2 числа превращается в архитектуру фабричныхпроксифакторибинов. А по рукам нужно было гослингу дать и выгнать нахуй ещё на ранней стадии за решения которые исправляются до сих пор
> фабричныхпроксифакторибинов
У тебя травма после энтерпрайзной галеры похоже.
guava-math, apache.commons ? Не, не слышал.
В джаве в 99% случаев есть нужный велосипед.
Нет зачем лучше пилить свои костыли.
Как вершина такого долбоебизма это обычно свой MathUtil с кучей приватных методов и без покрытия тестами.
Спасибо. Пойду напишу говна в проект, лул.
Алсо, норм ли SoloLearn для поёбывания Java "для себя"? Изучу основы, перекочусь под Андроид чтобы клепать односортное говно и выкидывать исходники на GitHub в открытый доступ. Хочу, пока есть время и бабки родителей, набить руку и портфолио аккаунт на Гите, чтобы потом размашисто тыкать его в рожи кому надо будет.
При чем тут библиотеки, тесты, архитектуры пиздоглазая ты обезьяна. Прочти ещё раз о чем идёт речь сначала ветки, желательно не жопой. Велосипедов полно, а того что нужно просто на уровне жвм или синтаксиса языка нет. Что непонятного?
Интереснее работать, если в шею не гонят с дедлайнами. Ну и от проекта зависит конечно же.
В каком месте второй раз? Тут только System.in при получении значения, не более. Все последующие действия - ебля с полученным. Или Джава не так логична и правильна, как языки для гетеро?
Все совершенно не так, нет никакой "ебли с полученным".
В 5 строке ты вообще ничего не читаешь, только создаёшь объект, который будет читаешь, если ты к нему будешь обращаться. Не будешь обращаться - не будет и читать.
В 6 и 7 ты буквально говоришь "прочитай следующее число и верни". Дважды просишь ввести с клавиатуры и вернуть тебе значения, вот он дважды и требует ввод.
Ещё попробуй ввести оба значения значения через пробел и нажать Enter
Чтобы кто-нибудь вместо ответа на вопрос не стал рассказывать, что после трудоустройства обучение продолжается и проч.
Работать интереснее. Реальный опыт получаешь, так скозать. Реальный не в плане кода (ведь когда ты кодишь свои "домашние" проекты, то ты тоже получаешь реальный опыт кодинга), а в плане организации процесса и каких нибудь инструментов, например той же джиры.
Есть. Вводишь в ютубе "java full course" или "java for beginners" и выбираешь. Можешь попробовать мемного thenewboston или вылизанного mosh. Выбери то, что не будет тебя насиловать.
Спасибо, анонче, видимо, я просто не слишком далеко зашёл в изучении этой фигни. Ладно, ты мне помог, вроде понял.
Спасибо, фиксанул. Теперь как надо пашет. Кстати, через пробел работало, читало два числа.
Я тоже хочу. Только нахуй оно надо, как вкатываться, что читать и есть ли от этого хоть какой-то буст в зп?
Поток ты запускаешь через start, а метод run можно вызывать сколько угодно раз. Так вот, куда ты передаешь Runnable будет использовать именно run
В России это не очень важно, контор которые сидят на AWS не так много. А вот если работать на западного барина, это важно.
> презрительным отношением к спрингу
Это у кого оно презрительное?
Спринг — это охуенная штука, которая избавляет тебя от рутинных штук, и ты можешь сосредоточиться на разработке, а не конфигурации говна.
Особенно это охуенно ощущается, когда ты пытаешься поднять веб-приложение на JE22 стэке, и тебе надо подключить 1488 зависимостей, которые ещё и конфликтуют между собой, настроить ебучий энтерпрайзный веб-сервер (ну или поебаться с томкатом), и потом ещё подключение с бд.
В спринге ты ПРОСТО ставишь пару аннотаций, пишешь пару конфигов в application.properties, и не ебешься ни с внедрением зависимостей (для чего изначально спринг и был создан), ни с подключением к бд, ни с мэппингом сервлетов, и т.д.
Батя грит малаца, харашо зделали.
>Это у кого оно презрительное?
Да вот, говорю же, послушал "выпукников ойти специальностей с 10летним стажем", а чуть ранее увидел пост (посты?) этого анона >>50235
Спасибо за пояснение, я просто немного мнительный, боюсь привыкнуть к удобству и пиздец, но это мне уже голову лечить надо наверное.
Ну задачки на литкоде тебя безусловно прокачают твоё понимание алгоритмов. Но дело в том, что рыночку нужны так называемые макаки в основном.
Логические.
Лол, не рассматриваю вакансии без спринга вообще, даже если предлагают какие-то аналоги или свою самописную хуйню. Спринг нужен почти всем, кто его хейтит - долбоеб
Всегда были копротивленцы.
А если это игровой сервер, где куча асинхронщины и многопоточки с low latency?
А что? Только плюсы и раст? На джаве тоже периодически вижу вакансии, где ищут разраба с очень хорошим знанием Concurrency и NIO.
Бамп, я все еще подавлен.
Реактивщина?
Ну хуй знает, у меня сущность из одной базы пересылается в другую. Зачем там дто непонятно, но парсинг сделан через json.
А всё понял что ты имел ввиду сорри
Надо одним и тем же полем мне надо ставить и @JsonIgnore и @Transactional, вот я о чем.
А, ну да, немного неудобно. Ну я ДТОшки юзаю, и MapStruct.
Может это должен быть какой-нибудь temporal объект? Модель отражает то, что хранится в бд. Довольно странно использовать там @Transient поля
Это просто геттер чтобы достать данные, которые лежат где-то внутри вложенного объекта. При сериализации он не нужен, а вот в коде с ним работать удобнее.
Бери Oracle Linux или Ubuntu.
RHEL и CentOS платные, адекватных аналогов CentOS еще не завезли.
не понятно нахуя ты это в жаба треде спрашиваешь
Я так понимаю, нихуя не устроиться, если не уметь вертеться и пиздеть.
Вертеться и пиздеть не надо. Если теорию знаешь, можешь решить задачу или тестовое и можешь связать хотя бы два слова, этого хватит.
Просто без этого даже на собеседование не попадешь. Надо писать на корпоративную почту или отвечать на вакансии мидлов, написав, какой ты крутой классный, стрессоустойчивый и рвешься работать и вообще видишь светлое будущее этой компании, пожалуйста, уделите мне время, я уже согласен быть лошадкой и купил смазку за свои деньги. И лучше таких сообщений в день слать по 50.
Так по крайней мере на Ютубе говорят.
Можешь на линкедине аккаунт завести и хров из своего города подобавлять, ну и бомби своим резюме кампании своего города, не может быть такого чтоб тебя на собеседование не позвали.
95% вакансий не про это. Тут своя специфика
Пиздеж, сам попробуй с нулем опыта на собес напроситься, ну максимум штук 10 собесов за месяц пройдешь, и то, если повезёт. Таких обычно на говно стек заманивают и потом сложно на другой перейти.
Этот >>50235 анон писал в ироничной манере. Спрингом все макаки в треде владеют, потому что спринг нужен на работе. А вот алгоритмы пишет 1 из 100, да и то потому что работает над чем то очень специфическим. а загуглить правильное решение ему лень. Алгоритмы вроде как нужны и важны в теории, но на практике они полезны только для собесов.
>>аккаунт завести и хров из своего города подобавлять
А как херки реагирую на то что какой то ноунейм без опыта добавляется к ним?
Даже больше интересует не работа, а то, что из себя представляет ява разработчик.
Просто если ты всю жизнь работаешь над пазлом, который поймет 5% программистов, но не понимаешь или не интересуешься остальными 95%, это как-то уж очень аутистично. Я понимаю, что бизнесс логика очень сложная и надо много что знать, но есть ли при этом стимул отойти от этих тонкостей и ловли exeptions и написать какой-нибудь скрипт или нейросеть на питоне или парсер, например?
Получится так, что проработаешь ты 10 лет, станешь ахуеть специалистом, но в другой области будешь разбираться хуже среднестатистического студента или продавца Васи, который просто увлекается программированием, если есть время. А если при этом ява станет не актуальна и появится какой-нибудь Питон Спринг, содержащий в себе обычный, когда понадобится уже только 1%, кому не повезет разбирать его по кускам и настраивать все большее количество embed логики, пиздец же просто.
По-разному, бывает и девопсом, и си/сд или миграции какие. Где-то задачи на фронт могут быть
1) О компании
2) связаться с нами
Если нажать на кнопку "о компании" появляется новое меню с кнопками
1.1) о нас
1.2) наша цель
Если нажать на них то выводится какая-то информация
При нажатии связаться с нами, бот спрашивает имя и эл.почту у пользователя.
Помогите пожалуйста !
Что такое rest запросы знаешь?
DDD не нужен
Я нашел без этого всего. Пооткликался на стажерские вакансии, на первом же собесе устроился.
Мои соболезнования твоей команде. Уверен, половина из них уже думает, куда бы съебать.
Можешь расписать уровень своих знаний на тот момент? А то не совсем понятно сколько знать нужно чтоб на стажировку приняли.
На джаве писал лет 5 некоммерческих, чисто для себя, была пара жутких пет проектов, которые никому не показывал, кроме друзей. На собесах просто упоминал, что что-то такое писал. Спринг не знал вообще. Была вышка техническая.
Ну и в целом устроился почти за еду, норм зп где-то через полгода была.
Но это все необязательно, понятное дело. По факту тебе нужно знать core, порешать на sql задачки и основные алгоритмы на уровне легких задач с литкода уметь. Да и то последнее уже будет преимуществом перед другими.
Что тебе не нравится? Нативный запрос в базу данных?
Я уже вроде чуток разобрался. Надо ещё какие-то курсы по Spring Security навернуть для закрепления.
Старше спринга.
Да какие особо могут быть подводные у тонкой обертки над jdbc
Хуй знает, я его высрал с горем-пополам и так. Так что не спрашивай. А вообще я дурачок, я же сделал мэппинг many-to-many, и нужные данные можно получить просто через гет.
В ДС возможно еще вкатиться без вышки и опыта? В вашей компании рассматривают самоучек или только студентов?
В моей смотрят, чтобы ты не был долбаебом. Если есть стремление что-то изучать, умение рассуждать и тд, то должно быть норм. Ну и теоретические знания, конечно
> нужно java ee изучить перед этим
Необязательно, но будет полезно понимать, что такое сервлеты. На них, собственно, вся эта хуйня и строится.
Можешь сначала спринг поучить, но придется мириться с магией под капотом. А потом уже в кишочки лезть. Я так делал
Теория - жава кор, чуть хибер и спринг
Пошел читать их гайд.
В итоге качаю крайнюю версию 1.7.9, ее собираю антом, когда на томкате проверяю, он выдает что уже архив битый.
Как то в гайде написано что мол на все вопросы есть документация, а по ссылке на документацию там уже ничего нет.
Подскажите плиз, может делаю чего не так?
Зачем тебе Axis? Когда его тыкал, сложилось впечатление, будто он устарел ещё лет 10 назад. Документация не исчерпывающая, когда гуглишь инфу, попадаются сайты из нулевых, причём инфа на них тоже в основном по тривиальным вещам. Наверное, сейчас если и нужен SOAP, то в виде CXF или Spring-WS.
Вкатился в один проект, а он тут используется в нескольких местах.
И да, по устарелости я охуеваю. Когда ищешь последние вопросы по нему, и видишь даты 2011 - 2012 года. Либо с тех пор его дропнули, либо чего.
> Вкатился в один проект, а он тут используется в нескольких местах.
Та же хуйня. Решил в результате не связываться с ним надеяться, что больше никогда не увижу. Осторожно редактирую xml-конфиги по объяснениям тимлида, иногда выгружаю wsdl и больше не трогаю.
Тоже postgresql крутиться. Тоже на каждом форуме хоронят.
Есть поехавшие шизы, которые на JdbcTemplate хуячат до сих пор и гордятся этим. С другой стороны - а хули там учить-то?
В чем проблема читануть про него любой одностраничный туториал? Весь jdbc сводится к вызову 3-4 методов.
Что именно?
А я окатыша сразу вижу.
Хуехуервало.
>Если в коде, на который я хочу сделать юнит тест, есть вызов другого модуля
Это значит что ты пидор.
Не значит.
Просто сделай моки для другого модуля и подсунь его своему модулю вместо настоящего.
Хорошо.
if (x > 10){
do something
} else {
Введите корректное число
}
Так вот,если я первый раз введу неправильное число меня перекинет в ветку else и если я там еще раз введу неверное число код выполнится так как после элса ничего не прописано. Так вот,как написать проверку так чтобы пока не введу корректное число программа не продолжалась
while (true) {
// считываем число из консоли
number = reader.readLine();
if (number > 10) {
// выполняешь нужные тебе действия
// break;
}
}
while ((x = scanner.nextInt()) <= 10) {
Введите корректное число
}
do something
Без брейка. От цикла ты никак не избавишься.
Дай бог тебе здоровья,я тебя так сильно люблю,ты просто не представляешь. Счастья, здоровья и чтобы девушка красивая у тебя есть была
Обращайся
"В эту игру играют два игрока, у каждого из которых на руках 12 карточек с числами от 0 до 11.
Первый игрок выбирает карту из имеющихся у него на руках и выкладывает на стол рубашкой вверх. Число на выбранной карте будет являться "атакой" игрока. После этого второй игрок выбирает карту из оставшихся у него на руках и также выкладывает её рубашкой вверх. Это его "защита". После этого игроки одновременно переворачивают карты, и защищающийся игрок получает столько штрафных очков насколько "атака" первого игрока превышает защиту "второго". В следующем раунде игроки меняются местами.
Игра заканчивается, когда у игроков не остаётся карт на руках. Выигрывает игрок получивший меньше всего штрафных очков."
Я не совсем дурак и догадался,что ИИ должен запоминать какие карты ты бросил и на основе этого делать ход,но я совсем не понимаю как реализовать это програмно. Можете не решать за меня полностью,а подсказать как мне это все воплотить в жизнь. Уповаю на вашу помощь
OpenJDK vs Java HotspotVM? Или может RedHat JVM?
В чем отличия опенждк от хотспот вм? Я так понимаю, наличием каких-то сервисных фич? Насколько они важны?
>>но я совсем не понимаю как реализовать это програмно
Придумай логику его действий. Если игрок скинул 9,10,11 он что должен делать? А если 0,1,2? Атаковать сильными и дефить слабыми, или наоборот? Соблюдать баланс? Тут как раз написать код легко, если алгоритм будет понятен. Потом хоть цепочку иф-елсов строй.
Используют то, на что есть лицензия или исторически сложившееся. Последние обновления Oracle JDK не позволяют бесплатно запускать код Java в промышленных целях, а все остальные реализации можешь выбирать на свой вкус - Amazon, Bellsoft, Zulu, IBM - какая компания больше нравится, их реализацию и выбирай.
У меня адопт
Делать так в жабе - это всё равно что удалять гланды череж жопу.
>OpenJDK vs Java HotspotVM?
Это одно и то же, оракловская джава по сути то же самое, что и в опен ждк, просто с техподдержкой и некоторыми ограничениями.
есть две вм это Hotspot и OpenJ9. Вторая говорят меньше памяти кушает и чуть шустрее стартует, но у нее меньше пользователей. Остальное все сборки, бери adopt и не ошибешься (там есть выбор между двумя)
есть еще graalvm, но это для интересующихся компилить java в почти нативный код (вроде как с вырезанной рефлексией, поэтому ее почти никто не использует)
Двачую, но начинающего программиста это 99% запутает. Поэтому прибегать к рекурсии не стоит.
При чем тут рекурсия, просто цикл в отдельной функции
int readNumber() {
while (true) {
number = reader.readLine();
if (number > 10) {
return number;
}
}
Да это я в глаза ебусь, и где-то увидел про рекурсию. Но говнокод я всё равно написал.
public static int number(int number) throws IOException {
if (number > 10)
return number;
return number(Integer.parseInt(reader.readLine()));
}
А можно ещё лучше
public static int number(int number) throws IOException {
return number > 10 ? number: number(Integer.parseInt(reader.readLine()));
}
Легким движением пользователь может вывалить программу со стековерфлоу.
на самом деле не легким конечно, стек в джаве глубокий, заебешься пока СО вызовешь
Та может. В проде никто и не делает рекурсий, но штука прикольная на самом деле. Хотя я помню как бегал с горящей жопой, потому что не понимал что в коде вообще происходит.
Да я вот пока сам в раздумьях как бот отвечать должен,по факту что так что так рандом получается тк бот не должен знать какими картами ты ходишь,а только запоминать те,что ты уже выкинул. Работать эффективно в любом случае будет только когда останется только одна карта
спасибо
перекатывайтесь в 1с
а всё вижу
Не совсем понял, но если так, то тоже ошибка.
Не помогло. А в модели дата должна быть java.sql.Data? Может тут причина. Через идею добавляется нормально, но там календарь открывается при добавлении даты.
Поменяй на LocalDate
Рекомендую для таких случаев подготовить репозиторий с h2, где бы анон смог загрузить себе проект и протестить у тебя. Так бы было легче тебе помочь.
Можно даже завести отдельный гитхаб для такого дела, если боишься ДЕАНОНА. А то вот так гадать пальцем в небо такая себе практика.
Блин, только сейчас заметил у тебя же формат даты задан. Ну так и пиши в этом формате вместо 01-01-2000 должно быть 01/01/2000.
Ну и в целом использовать API DTO как entity это прям полное говно.
>>72159
Я туповат просто. Чтобы это сделать надо подключить h2 к проекту, создать отдельные слои репоситориев и сервисов для h2? А потом на гитхаб это загрузить?
Я вот еще заметил что. Добавил в бд через идею просто одно поле employee. Потом читаю через постман, а там даты отличаются. Может тут проблема?
>Ну и в целом использовать API DTO как entity это прям полное говно.
Есть где посмотреть пример как правильно делать rest? В ютубе и просто в статьях у всех по разному.
Проверь в каком времени ты даты хранишь в PG и в каком у тебя приложение забирает.
Выглядит так, как будто ты несколько часов из оригинальной даты вычитаешь из-за временных зон.
Там в разное время эти видео и статьи выходили. Где-то 2015 года, где-то позже. Мне понять хоть какая структура должна быть правильная.
Есть ентити Юзер и какой-то Объект, юзер владеет несколькоми объектами
Возможно ли настроить сериализацию в жсон что бы при сериализации юзера выводились только айди объектов которыми он владеет, а при сериализации объекта все его поля и айди юзера
Блять как же нехочется городить еще один слой в виде дто
>В ютубе и просто в статьях у всех по разному.
Ты не поверишь, но в проде тоже у всех по-разному
> Чтобы это сделать надо подключить h2 к проекту, создать отдельные слои репоситориев и сервисов для h2?
Да. Создай новый проект, скопируй туда репозитории, сущности, контроллеры. Только вместо postgres, подключи h2. И залей на гитхаб, чтобы анон мог склонить себе и посмотреть в чём проблема.
@JsonView посмотри
Есть разные подходы, разные фреймворки и единых правил нет. Просто есть некоторые вещи которые прям совсем плохо. Совмещать entity с DTO - это плохо. Потому что завязывает внешний API сервиса со структурой базы, можешь случайно отдать наружу какие-то приватные данные просто добавив поле в entity, часть полей ни при каких условиях не должна приходить от клиента дата обновления записи, кто обновил и т.п..
Ра уж ты используешь Спринг посмотри их петшоп.
Ползут три черепашки. Первая говорит, что впреди никого сзади две.
Вторая говорит, что впереди одна, сзади одна.
И третья говорит, что впереди одна, сзади одна.
Как такое может быть?
Думал написать десктопное приложение, которое будет логиниться в яндекс музыку и проигрывать оттуда радио. Но потом я понял, что оно нахуй не нужно + десктоп на джаве умер давным давно.
Вторая идея была в том, чтобы написать парсер инстаграма. Ну то есть в консоль вводишь свой логин и пароль, прога логинится, далее вводишь имя пользователя, и прога выкачивает все фото, видео, истории итд. Если фото уже было скачано раньше, то второй раз оно не скачивается. Если фото удалено, то занести информацию об этом в лог-файл. Ну и всякое такое. Шобы было удобно сталкерить тяночек разных.
Третья идея - написать что-то с графикой, какой-нибудь 2д рендер карт. Типа загружаешь данные из условного OSM, а прога тебе выдает .png или .jpeg местности. Правда это наверное слишком сложно и я неосилю, в вузе на компьютерной графике очень поверхностно все было, поэтому я ниче не знаю.
Еще когда-то думал клиент для двачей написать, но опять же нахуй он нужен. А раз применения нет никакого, то и писать желание пропадает.
Может у вас есть море софта, которым вы пользуетесь каждый день и хотите что-то автоматизировать? Я вот просто задачи на литкоде решаю по нескольку часов в день, остальное время скроллю двачи и смотрю на разных инстасосалок. Больше ничем по жизни не занимаюсь и не увлекаюсь, на улицу не выхожу, хобби никаких нет, в игры не играю и не с кем не общаюсь. Откуда тогда брать идеи?
Никаких. Думаешь, все просто так отказались от эклипса в пользу идеи?
Привыкнешь ко вкусу говна
В реальных проектах это не прослойка из методов, состоящих из единственного обращения к репозиторию/дао, а самая жирная часть приложения с тоннами бизнес-логики.
Да и насчет инстапарсера - мне эта идея нравится больше всего, но боюсь что на гитхаб такое выкладывать нельзя, а в резюме вставлять - тем более опасно, в блеклист внесут и потом работай на заводе до смерти. В блеклист внесут потому что такая идея только поехавшему сычу придет в голову, нормальные люди пользуются инстой, спокойно подписываясь на знакомых, и им не нужно отдельно следить за этим, особенно за удаленными фотографиями.
Рак печени.
Третья наебать пытается.
третьим был иван дурак
Ну я сейчас пилю приложение для автоматизации бизнеса, за ориентир взял zoho books, там в юзергайдах объясняется как что работает под капотом. Выбрал именно эту тему потому что там немало интересной бизнес логики.
Нет, это статья 12 года на хабре
https://habr.com/ru/post/164487/
Тебе другие сеньеры по голове бы настучали
https://habr.com/ru/post/164487/#comment_5659639
, если бы ты, конечно, использовал такую логику.
В общем, я нашел ответ на свой вопрос, изменение и чтение volatile будет потокобезопасным, если к ним применяются атомарные операции. Те ivar++ будет не потокобезопасным.
К статическим полям это точно так же относится, тем более хуже, если к ним не атомарные операции применяются.
Те код из этого >>72689
хаба пораша, человек пытается чему-то учить, но сам совершает грубые ошибки и не в чем сам не разобрался, но зато плюсики получил.
Да.
class EntityController {
public static class Entity {
public static class EntityService {
oublic static class EntityRepository {
}
}
}
}
Лол
HashMap.Entry
Бля пацаны, реально как бы не думал никакой действенный алгоритм в голову не приходит,поиогите пожалуйста
Три картинки с котиками (очень милыми)
Нихуя не понятно, игр больно сложная.
Да.
На ИЖе используют.
А какой смысл для каждой сущности делать свой сервис? Просто в каждом индусском туторе такой шаблон. Можно же делать просто один сервис который инкапсулирует сразу все эти дао и репозитории
Использую screen -S
Двачую.
Я про это и говорю, зачем для каждой сущности плодить сервисы. Несколько дао для одной сущности имеют смысл, потому что что-то может хранится в бд, что-то сериализуется в файл. В туторах же по спрингу назначение сервиса это тупо прокси класс для доступа к репозиторию. При чем единственный мотив его существования это "ну у каждого ентите должен быть свой сервис".
Если сервис это бизнес логика, то с таким подходом, когда у каждой сущности свой сервис, появляется путаница кто за что отвечает. Когда в одном сервисе требуются данные из другого, когда сущность содержит другую сущность, которая содержит третью чей сервис должен их контролировать, в сервисах возникают перекрестные зависимости и тп.
Намного логичней разделять сервисы по смыслу работы приложения, а не по сущностям. И смысл не должен сводиться к только принести из бд хуйню, потому что если на столько всё просто, эти прослойки нахуй не нужны.
Тоже на работе в зохо сидите? Мои соболезнования.
Потому что каждая сущность независима. У каждой есть своя цель и своя бизнес логика. Если есть логика, которая задевает несколько сущностей, то будет второй слой сервисов, и т.д.
Делай как хочешь.
Как сущность квартира может быть независима от сущности дома? Удалять квартиру нужно в ее в логике или логике дома?
Только это не я ответил
Ты работаешь с квартирой, а не с домом. Это логика только квартиры а точнее, ее сервиса.
Если же ты не работаешь независимо с квартирой, и все происходит только через дом, тогда это скорее всего будет в сервисе дома
Так почти ни с чем независимо не работается, потому что полностью независимых сущностей нет. Вот и выходит практичнее все писать в одном месте, чем связывать 100500 сервисов между собой, которые неизвестно как работают, откуда тащат данные, в рандомных местах ловят дедлоки, потому что перекрестные зависимости, туда же порядок инициализации приложения и других вещей. Это будут одни костыли на костылях в итоге, в котором не разобраться.
А как ты собираешься поддерживать твой мегасервис, когда в нем будет 500+к строк? Как юниттестить?
Ты придумал какие-то проблемы на ровном месте. У дома есть свои операции, не связанные с квартирами, и у квартир есть операции, не связанные с домом. Если дому в каких-то частных случаях надо работать с квартирами, он обратится к сервису квартир. Иногда встречаются операции, которые однозначно к какой-то основной сущности не отнести, в таких случаях либо просто добавляют её в любой из сервисов, либо создают новый сервис для такого вида операций.
> которые неизвестно как работают, откуда тащат данные
В том-то и дело, что это неважно. Почитай, что такое абстракция.
> в рандомных местах ловят дедлоки, потому что перекрестные зависимости
Не ловят. Сервисы обычно не хранят состояния, и это гарантирует, что с объектом в любой момент времени будет работать только какой-то конкретный сервис. Если говорить не про объекты, а про сущности, связанные с БД, там дедлоки разрешаются механизмом транзакций.
> туда же порядок инициализации приложения и других вещей
Это может вызвать проблемы только при циклических зависимостях, которые бывают редко и решаются просто: нужный сервис забирается из контекста уже после старта приложения, а не во время.
да
1. как сделать многомерный массив, который будет создан после ввода данных пользователя? типа пользователь пишет 4, 6 и создается 4 мерный массив с 6 ячейками.
2. как создать универсальный цикл, который будет отрабатывать вот этот массив, который неизвестной размерности. Есть простое правило, например выбрать наибольший индекс и оставить в этой ячейки и нужно такое правило прогнать по всем ячейкам. как такое можно сделать? полное правило звучит так: выбери наибольшее из индексов, но если есть одинаковые значения то их нужно сложить, а потом сравнить еще раз и выбрать наибольшее.
> Если дому в каких-то частных случаях надо работать с квартирами, он обратится к сервису квартир.
> Не ловят.
Первый реквест ставит лок на одном сервисе, который хочет обратиться к другому, который так же держит лок по параллельному реквесту, чтобы обратиться к первому сервису. Когда что-то друг на друга ссылается дедлоки в спринговой архитектуре изи получать
> Почитай, что такое абстракция.
Я хочу получить конкретный инстанс объекта из памяти, а подсунутая реализация сервиса может создать объект званого. И работая только с интерфейсом откуда я мог это знать? Только надеяться что реализация будет вести себя как я думаю. Хотя если делать один сервис вся логика сразу на виду будет
> Сервисы обычно не хранят состояния, и это гарантирует, что с объектом в любой момент времени будет работать только какой-то конкретный сервис.
А где хранится состояние сервиса времени? Не в бд же миллисекунды записывать
> Первый реквест ставит лок на одном сервисе, который хочет обратиться к другому, который так же держит лок по параллельному реквесту, чтобы обратиться к первому сервису. Когда что-то друг на друга ссылается дедлоки в спринговой архитектуре изи получать
Такие локи бессмысленны, их никто никогда не ставит. Локи нужны для синхронизации данных, сервисы никаких данныых не содержат.
> Я хочу получить конкретный инстанс объекта из памяти, а подсунутая реализация сервиса может создать объект званого. И работая только с интерфейсом откуда я мог это знать? Только надеяться что реализация будет вести себя как я думаю. Хотя если делать один сервис вся логика сразу на виду будет
Хотя бы из-за здравого смысла. Если в контексте несколько сервисов, реализующих один и тот же интерфейс, при получении сервиса ты обязан указать, какая реализация тебе нужна, а о её поведении надо судить по документации. Но это нужно очень редко, практически всегда реализация только одна, ни на что "надеяться" не надо.
> А где хранится состояние сервиса времени? Не в бд же миллисекунды записывать
Не в сервисе. Сервис никогда не хранит никакого состояния. Сервис может обратиться к операционной системе, чтобы получить время, но внутри себя он ничгео не запоминает.
Убрал, всё тоже выдаёт. Ничего не изменилось
Нагуглить смог только то, что такая ошибка много у кого начала возникать с новым jdk, мол на 15 всё дышит и пердит, а с 16 ошибка (
Это из-за модулей девятой жавы. У тебя где-то в папке src лежит файл module-info.java в который нужно явно прописывать какие зависимости нужны твоему модулю. Легче его просто удалить нахуй тогда все может начать работать. Или гугли текст ошибки после двоеточия, тут ничего корректного не сказать, может быть из-за любой зависимости которую не перевели на девятую жаву
конкретного
Расклад такой, я снёс 16 и поставил 15 jdk. И о чудо lunch succeeded
>методнэйм(Environment.getExternalStorageDirectory())
Я, короче не могу понять, как должны правильно взаимодействовать например rest-api написанный на джаве и какой то веб интерфейс на той же джаве с спрингбутом
Банально запустить два этих сервера, и посылать с клиента http запросы на этот апи?
>>67604
>Давай давай, расскажешь о успехах)
Фотка коллеги моего другана, который уволился с работы и начал вкатываться, на вкат потратил меньше года, 2 месяца сам обучился и 7 месяцев с ментором делал разные проекты за бесплатно, но за 10 процентов от будущей зп в течении пары лет. Москвка. ему 30, юридическая вышка, работал продаваном одинэсником, английский не знает. Оферов было штук 5 всего из 15 собесов
Вкатился джавистом офк
В самом банальном варианте - да
Это ведроид? У них свой тред есть, а тут спрингобоги сидят.
Ну дык на новый ноут наверное заработал себе, я думаю.
нет, какой то наиль алишев курсы организовывал вроде.
Как минимум это + не вызывает одни и те же методы по 2 раза за итерацию + не ищет в мапе прошлый индекс, а кеширует его
Спасибо за пояснения.
Без родной IDE-шечки вообще страдаю, лол, никто чек-стайлом или сонаром дерьмовый участок не выделит.
А если мы потеряем ссылку в методе, то объект сразу перестанет синхронизироваться или мьютекс освободится только после окончания синхронизированного блока?
Через запятую
А что такова?
Счетчик монитора переключается когда исполнение входит/выходит в синхронайзед блок. Можно, но тебя даже идея предупредит что ты делаешь хуету какую то. Если нескольким объектам нужен общий монитор, создай его извне и передавай им через конструктор.
Плохо только то, что вебмакаки ни для не работали с бэкендом и в силу своих комплексов пытаются себя убедить, что там нет ничего, кроме круда для БД.
Но ведь 99.9% приложений - веб. Или ты про обычные крады?
Хорошо.
Тебе кто разрешал от весла отрываться? А ну пшел покрывать репозитории юнитами.
>>Без родной IDE-шечки вообще страдаю
пишу код в иде, вставляю и запускаю копипасту статистика подсчитывающая фейлы тестов говорит молодца
Это копия, сохраненная 22 июня 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.