>>1631266 (OP) О, снова годный фильм вспомнили. Напоминание: Котлиншизик изгнан из треда за самое гадкое обзывание джавы. Это слово нельзя даже произносить.
Короче Spring Data это удобненький интерфейс для доступа к твоим данным через какую-либо имплементацию, а Hibernate это непосредственно имплементация Java Persistence API. Как и в любом другом случае с паттерном "фасад", ты можешь выкинуть этот удобненький фасад в окно и ипользовать непосредственно underlying implementation, выбор за тобой.
>>1630918 → Привет, анон. Специалист по гаданию на скриншотах в треде. Если ты еще не решил проблему, то давай разбираться. По картинке у тебя не совсем понятно что ты сделал.
Для начала скажу, что конфигурация запуска [1] показывает, что как минимум запускаешь ты все правильно, нужный класс и тд, а то некоторые в треде сомневались (и правильно делали). Далее, тебя просили показать как IDE запускает твой класс, т.е. развернуть командную строку. Это можно сделать, кликнув на [2], но я думаю нам это ничем не поможет.
Теперь ближе к сути. Откуда появляются файлы [3] именно в том месте в котором они сейчас лежат - сиблинги относительно класса ([6])? Ты их вручную создал? Потому что код, написанный в main(), такого не сделает. Файлы должны появляться в [5], в корне проекта. Я подвожу к очень важному моменту: файлы создаются самостоятельно, их не надо предварительно создавать руками, FileWriter способен сделать это сам. Т.е. ты удаляешь файлы [3], убеждаешься, что в [5] их тоже нет, запускаешь программу [1], и файл с именем [4] автоматически появляется в [5] (а не в [6]!).
Несколько замечаний по коду: 1) Использовать нужно try-with-resources конечно же. У тебя он изначально был (это конструкция try () {...}), но в процессе рефакторинга с анонами ты его потерял. Верни как было. И после этого close() можешь убрать (он вызовется автоматически т.к. AutoCloseable). 2) flush() можно не использовать при записи маленьких файлов, точнее файлов, которые ты очень скоро уже закроешь. При вызове close() флаш вызывается автоматически, данные не потеряются никогда. Ну конечно не "никогда", но это уже не связано с ручным вызовом flush(), так что смело удаляй. 3) Ошибки приятнее выводить в System.err, а не в System.out. Интерфейсы этих объектов полностью совпадают, просто замени три буквы и запомни: ошибки -> err.
PS: Если третий параграф не поможет тебе найти файл, в который осуществляется запись, то пиши, у меня уже готовы планы куда ковырять дальше. Но я предполагаю что это ты просто файл потерял.
>>1631305 >Получается фасад над апи? Да, но это очень красивый фасад! У него есть множество субмодулей.
>Чтобы что? Ты про конкретные плюсы спрашиваешь? Они перечислены на главной странице проекта. Ну а асбтрактно, они захотели видеть свою собственную реализацию JPA, но именно "реализовывать" им было лень. Взяли хибернейт, накрутили фасад как посчитали нужным. Каждый хочет именно свой велосипед, именно его считает удобным, и только у больших компаний получается продвинуть свой.
Уже становится как в жабаскрипте - когда над жабаскриптом наворачивают слои абстракций, и простенькая страница жрёт гигабайты памяти для ворочания всех этих слоёв абстракций
устроился джуном(знал кор на нормальном уровне, ибо до этого си дрочил поэтому понимал,как внутри всякие коллекции сделаны, сборщик мусора, ссылки и тд), sql запросы простецкие, по фреймворкам был 0 сейчас вот дрочу сервлеты, спринг и тд на работе классно все, кроме зп, и как я понял она тут растёт медленно какая средняя зп джунов на джаве в мск? и что дрочить в первую очередь? я вот себе отобрал: sql, какая-нибудь субд, spring web, mvc, boot, сервлеты, jpa, jdbc. Что докинуть?
посмотрел на вики >В июне 2018 года (в версии 4.0) добавлена поддержка транзакций, удовлетворяющих требованиям ACID[9]. лол, они из NoSQL делают sql. Не вынесла душа поэта, возвертайте всё взад
>>1631341 не особо, но их я сейчас тоже учу параллельно, прочитал грокаем алгоритмы >>1631342 ага, спасибо, это очевидно, но кажется этим джун от мидла и сеньора отличается, не? на джуна то просят кажется хотя бы понимания как и через что его теоретически будешь делать
>>1631257 Тут у вас какой-то обмудок посты трёт, так что пока его санными тряпками не выгоните, я ливаю (и вам рекомендую). Двач превратился в форум нулевых, лол.
>>1631394 Википедия говорит про "java see". Пох, джавак крч.
>>1631395 Хуле ты такой токсичный? Из-за слишком быстрого переката бесишься? Давай лучше метод println обсудим, а то он какой-то сложный и совсем непонятный.
>>1631395 У Немчинского я это видел. Он там пояснял, что читается так потому что это хуйня из юниксов пошла, там так читают. Точное видео не помню. >>1631401 Во-во, он там тоже про джавак шутил.
>>1631412 90% всех видео это ебаная вода. Торговец курсами, инфоцыган, вроде это так щас называют? Если делать вообще нехуя, можно глянуть его пиздёж. Это будет лучше дотки. Но всё равно бессмысленная трата времени.
>>1631427 Не знаю, не видел. Я пытался смотреть его длинные видео. Но там слишком много воды. И вообще он рассказывает про любую тему для тех кто в ней нихуя не понимает. Вроде и можно слушать, а смысловой нагрузки никакой. Ну т.е. реклама как она есть.
>>1631443 Меня наоборот его национальность никак не напрягала. Хохлом его назвал ради лулзов. Я не помню, чтобы он как-то хуёво о русне отзывался, когда упоминал про рыночки заметил даже, что в отличии от незалежной у нас таки можно найти норм работу не на бургеров. Свидомый патриот, да и хуй с ним, меня это не касается, пока он это при себе держать старается.
>>1631284 Нравится когда в pom новую dependency добавляешь и пытаешься ее использовать автоимпорт idea не работает. Потом ручками пишешь сам импорт и тебе idea подсказывает что надобно бы в module.info добавить новую строчке тогда заживем. И только после этого все наконец собирается.
>>1631895 Хз, мне проще ливнуть. Раньше было лучше такого бардака я тут не видел, вел даже с десяток Го тредов, лузлов ловили пачку, откровенный шитпостинг игнорили.
Как там хеллоуворлды писать на ваших жавах Хочу простеньки рестик, спринг вроде самый популярный фреймворк? Спринг бут и спринг это одно и то же? Maven - что-то типа пакетного менеджера и сервера одновременно?
>>1631949 Кстати я из градла тоже не смог модули сделать. Каким-то фигом одинаковые плагины конфликтуют, не хватило мозгов что ли сделать чтобы "йоба-2.3.5" больше не подгружалось если уже ранее погрузились и вообще каким фигом модули не собираются независимо.
Я знаю что тут не в силах помочь, просто поплакал.
>>1631922 Там разница в путях будет Если писать getClass().getResource("foo.properties") - то будет искать в пакадже этого класса com/myapp/foo.properties Чтобы такого не было надо или путь начинать со слеша - /foo.properties или использовать ClassLoader он такого не делает.
Есть jackson. Есть json с двумя уровнями вложенности. Пытаюсь в mepperObject.readValue. Выдаёт нуллпоинтэкзепшн. Геттеры сеттеры есть для первого класса/уровня, но на втором параметры идут с заглавной. В доках пишут, что readValue берёт геттры/сеттеры, отсекает гет/сет и переводит первый символ в другой регистр. Как быть?
>>1632091 С этими статик-нонстатик всегда был не в ладах, извините. com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `com.xxx.xxx.util.a$f` (although at least one Creator exists): can only instantiate non-static inner class by using default, no-argument constructor
>src/test/java/io/spring/infrastructure/favorite/MyBatisArticleFavoriteRepositoryTest.java >import org.springframework.test.context.junit4.SpringRunner; Что это такое как это понимать???? Посоветуйте пожалусто книжку по основам и стандартам актуальную пожалусто
>>1632082 >>1632121 >>1632108 → Вот тут я написал тебе как сделать иммутабл десериализацию, без сеттеров. Можно указать конструктор с параметрами через аннотацию @JsonCreator, и можно указывать имена переменных в json @JsonProperty (это для несовпадений имен в полях класса и исходного json).
>>1632122 Учитесь задавать вопросы, блядь! Никто не будет отвечать на твой вопрос, потому что нихера непонятно что ты хочешь. Книжку по джаве тебе? Или по спрингу? А может по майбатис? Или все-таки по юнит тестам? Или тебя удивляет почему там используют JUnit версии 4, тогда как актуальная давно пятая?
>>1632123 >>1632128 Благодарю, сейчас попробую. >>1632124 Это неплохо, когда такой конструктор уже есть. Я, конечно, код не запостил, но всё же. >>1632126 Ну не хотел лезть в яву, это не специально :с Вообще в компанию пришёл как cpp разраб. Меня заставили! Ну мам!
Сейчас закомментировал этот крутой конструктор с JsonCreate, использовал mapper, который уже где-то используется и подкорректированный. Исключения валить перестали, но возвращает null. Где-то в документации читал про эти null-значения, и что им нужно уделять вниманкие, но не особо понял.
Cannot construct instance of `com.xxx.xxx.util.a$f` (although at least one Creator exists): can only instantiate non-static inner class by using default, no-argument constructor
Ошибка явно говорит о том, что у тебя не статический внутренний класс и у него нет конструктора по умолчанию.
>>1632208 >>1632224 Насчет null'ов есть @JsonInclude с пучком значений как именно трактовать пустые значения, но это только для сериализации.
Еще, если ты не все поля из json в объект мапишь, то конфигурируй маппер, иначе будет падать с ошибкой что не знает такого поля: MAPPER.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); Об этом я тоже уже писал.
В общем либо ты показываешь оригинальный json, который у тебя падает, либо не показываешь и ебешься дальше сам .
Читаю многопоточность и боюсь, что не всегда смогу держать в голове и не допускать все возможные отложенные ошибки. Есть ли какие-нибудь мощные средства для анализа кода на предмет таких специфических ситуаций, когда хоть через 100 лет что-то может пойти не так?
>>1632294 УПД, под ошибками я подразумеваю мелкие ошибки, допустим, я хочу расширить потокобезопасный класс, добавив новую функциональность. Соответственно, я создаю класс хелпер, внутри создаю объект потокобезопасного класса, который хочу расширить, делегирую ему основную часть обеспечения потокобезопасности, добавляю новый функционал в класс-хелпер и синхронизирую новый функционал не на том объекте, на котором синхронизируется потокобезопасный класс.Буквально только что вычитал этот пример. Могут ли анализаторы кода отследить такую брешь?
>>1632300 > допустим, я хочу расширить потокобезопасный класс наследование - зло. Наследование ломает инкапсуляцию. >и синхронизирую новый функционал не на том объекте какето? syncronized же синхронизирует на экземпляре объекта, а он одинаковый для родительских и потомочных методов
>какето? syncronized же синхронизирует на экземпляре объекта, а он одинаковый для родительских и потомочных методов В данном случае под расширением я имею в виду размещение кода расширения в классе-хелпере без наследования.
>>1632407 Это когда особенности реализации не торчат наружу, и можно абстрагироваться от них. Например, в сишке есть структура FILE. Всем похуй, что за поля у этой структуры, никто напрямую их не использует, хоть это и не запрещено. Но зато есть куча функций для работы с объектами такого типа, которые сами знают всё, что нужно.
>>1632441 Мысли ширее - собственные классы создавать вообще нельзя. Потому что мы наследуемся от Object, соответственно сразу уже нарушили. >>1632368-вот этот сказал.
>>1632431 когда потомок ломает предка это не нарушение инкапсуляции, а долбоёб в кабине, который нормально сделать не может. инкапсуляция это не закон божий, не сила тяжести или постоянная планка - это блять инструмент
Есть у тебя коллекция объектов Идёшь ты такой и вызываешь метод у каждого объекта. А потом хуяк - тебе попался потомок со сломанным методом предка, и весь твой код по пизде из-за этого внезапного потомка, о существовании которого ты даже не знал.
>>1632477 Это вопрос на сообразительность? Они никак не выглядят, потому что в HTTP такого нет. Это серверная фича сервлет реквеста и по сети не передается.
>>1632488 >Это серверная фича сервлет реквеста и по сети не передается. Не понял. Можно же на клиенте к реквесту добавить аттрибуты, а на сервере их прочитать?
>>1632489 Что за аттрибуты ты тогда имеешь ввиду? Покажи где такое. Реквест это имя метода + хедеры + тело (опционально). В том источнике который ты читаешь аттрибутами могут быть либо кастомные хедеры, либо www-x-form-urlencoded тело.
>>1632491 >Реквест это имя метода + хедеры + тело (опционально) Ну и очевидный path он же url, который может содержать query и matrix parameters и path variables.
>>1632489 Судя по тому, что здесь написано, можно шарить атрибуты между разными сервлетами, речи про передачу их за пределы приложения (сервера) нет. https://www.javatpoint.com/attribute
>>1632515 А, вспомнил, она еще когда ты кидаешь исключение с каким-то сообщением, предлагает заменить проверку на requireNonNull без сообщения. Поганенькая штука, хорошо, что в идее почти любые проверки можно отключить.
>>1632494 Это метод мока, он через рефлекшн что угодно может подсунуть в сервер. Проверил запрос - никакие хедеры не добавляются, боди отсутствует, урл чистый. Передать эти аттрибуты извне, т.е. с помощью HTTP, никак нельзя. Ответ остается прежний: в хттп их нет, это фича сервлетов.
>>1632445 Наследование может нарушить, но совем необязательно это делает. Но нарушить инкапсуляцию Object это надо прям очень-очень постараться, прям на уровень Unsafe залезть.
>>1632504 Нужен конечно! То что ты сказал решает только проблему chained вызовов a.b().c().d() Но не помогает понять, в какой момент с стало null. Поэтому проверки на null в момент присвоения все равно нужны.
Пишу тест класса который должен хранить мапу и добавлять/удалять из нее. Хочу протестировать метод add(Class<?> clazz, Object object) и проверить что данные добавились в карту. Для этого вызываю еще один такой же класс и вставляю данные через рефлексию. Ассерт не проходит. ЧЯДНТ? Как вообще такую хуйню правильно тестить?
ServiceContext context = new ServiceContext();
TestService1 service = new TestService1(); context.add(service.getClass(), service);
Map<Class<?>, Object> testMap = new HashMap<>(); testMap.put(service.getClass(), service);
Class clazz = Class.forName("xxx.xxx.service.ServiceContext"); Object obj = (ServiceContext) clazz.newInstance(); Field field = clazz.getDeclaredField("context"); field.setAccessible(true); field.set(obj, testMap);
>>1632820 То же самое, только с нескучным дизайном и более хуевым поиском. А хотелось бы что-то вроде микроблогов, где разрабы писали бы про свои информацию, release notes, getting started и т.д.
>>1632839 final поле должно быть инициализированно либо сразу, либо в констухторе. А констухтор тут не поможет, потому что у тебя static {} block раньше выполняется.
>>1632839 >>1632860 Вот этот господин не прав, файналы можно инициализировать статиками прекрасно. Просто переменная должна быть инициализирована в каждой ветке исполнения, а у тебя в catch блоке out остается неинициализированной. Напиши там "out = null" после стактрейса.
>>1632839 >>1632886 А еще лучше прокидывай эксепшен выше просто и все, превратив его в unchecked. Потому что при "out = null" у тебя все равно жизни нет, это как я понимаю твой основной компонент бизнес логики. Да и идея будет ругаться что "out может быть null".
>>1632907 >кидать RuntimeEx А ты не кидай сырой, эт же просто пример. Кидай MyCoolEx extends RuntimeException. Нет, не пахнет, многие библиотеки так делают. Это выбор разработчика к чему у него душа лежит - к чекед чтобы все засрано было try/catch, или анчекед, чтобы ловить только в ключевых местах-чокепоинтах, например, вокруг всего тела psvm.
Можно ли в мавене в верхнем pom.xml, в котором определяются все вложенные модули, определить плагины, которые будут запускаться после сборки всех модулей?
>>1632839 Проблема в том, что в случае эксепшена у тебя будет неициализированное поле. У тебя два варианта: в catch блоке присвоить null или любую другую фигню. Или выбрость какой нибудь runtime exception - тогда класс вообще не загрузится и на статическое поле будет насрать.
Как я понял, существуют более высокоуровневые средства для многопоточного программирования. То есть, о явном проектировании потоков можно просто забыть и просто скармливать задачи черному ящику? Это эффективнее? Или в некоторых моментах проектировать свои потоки более гибче?
>>1633154 Так и есть, сейчас лучше использовать более высокоуровневые вещи. Во-первых, они эффективнее, во-вторых, они оставляют меньше шансов на ошибку т.к. написаны профессионалами. В каких-то частных случаях можно и свой тред спроектировать, но это редкие случаи; плюс ты уже должен быть подкован в этом деле, потому что как обычно работа с низкоуровневым апи требует больше внимательности. Однако, в стандартном SDK джавы существует как минимум один случай, когда от тебя требуют наследоваться от Thread напрямую и что-то там переопределять. Я честно говоря не помню уже этот кейс, но я его встречал. По-другому там не сделать, т.к. апи были спроектированы давно и замены еще на тот момент не написали, может и до сих пор не написали, потому что фича была довольно специфическая, читай "ненужная".
>>1633167 >оставляют меньше шансов на ошибку т.к. написаны профессионалами А вот об этом я сегодня как раз прочитал, что нужно доверять, но проверять. Документация какого-то класса хоть и гарантировала потокобезопасность, но потокобезопасным он не был. Вот так и гадай, какие подводные могут быть..
Какие классы вообще служат для высокоуровневого обеспечения многопоточности? Есть ли годные сторонние библиотеки, или с лихвой хватает стандартных?
>>1633174 Тоже сегодня видел. Но я спрашивал про String.intern() где-то полгода назад, мне итт сказали, что не знали об этом говне и на работе ни разу не юзали.
>>1633168 Да. Экзекуторы вместо тредов, различные семафоры и каунтдауны вместо вейтов+джойнов.
>>1633172 Ну это отдельный случай - баги. Винда или SSL тоже гарантируют защиту твоих данных, а вулнерабилити всё равно находят и абузят. В случае со стандартными классами библиотеки джавы или любой другой библиотеки как думаешь, у кого больше шансов наткнуться и найти баг, у тебя в случае самописного класса, или у коммьюнити на сотнях тысяч энтерпрайзных приложений? >Какие классы служат Различные экзекуторы и служат: есть с очередями, расписаниями, и тд. Даже отдельный случай singleThreadExecutor - т.е. разработчики библиотеки предлагают тебе не использовать свой Thread даже в случае если тебе нужен всего один поток. Ну тут мораль ясна - завтра тебе понадобится добавить в одному потоку второй и ты просто одноу строку поменяешь, которая возвражает реализацию, т.к. ты уже работаешь с экзекутором через интерфейс. То же самое почему мы пишем List = new ArrayList, потому что потом можно на Linked заменить или другие.
>>1631266 (OP) Джавач, я прошёлся по нескольким тематическим тредам в поисках слова "легаси". В каждой тематике искал за последние 2000 постов. Результат весьма интересен.
>>1633182 Шарписты занимаются перефорсом легаси на джаву, хотя у самих на рынке вакансий одни дутнеты без кор на винде, винформс старые и еще хуже вебформс
>>1633154 Проблема многопоточного програмиирования не в "скармливать задачи черному ящику", а в том что делать с исходными данными и результатоми. Их же надо как разбить, многопоточно обработать, собрать результат и вот тут уже начинаются сложности. Есть куча готовых решений: потокобезопасные очереди, executors, паралельные и реакливные стримы, акторы, корутины и прочее. И в целом все неплохо работает, если тебе нет необходимости в супер перформансе или выжать максимум из железа. Иначе добро пожаловать в ручное управление shared memory.
>>1633111 Для начинающего кто уже хоть как-то знаком с сервлетами - Wrox Professional Java for Web Applications. Там как раз начинают с одскульных приложений на голых сервлетах с jdbc и постепенно переписывают все это дело на спринг (не бут). И лучше еще параллельно почитывай официальную доку ->https://docs.spring.io/spring/docs/current/spring-framework-reference/index.html там то же ничего особо сложного нет. Если сервлеты не нюхал то читай - Head First Servlets and JSP
>>1633683 Бывают ситуации когда native драйвер даёт больше возможностей чем pure Javq. У того же Оракла 2 драйвера, один из которых вызывает oci через jni.
Можно (и как) объединить два независимых проекта на gradle? Чтобы из второго проекта можно было дергать API первого, но при этом в первый проект не вносить никакие изменения в сам градл?
>>1633723 Делаю так (ну почти так) на мавене, инсталлируя свои микро-либы в локальный репо и подключая обычным способом в помник через артифакт+версию. Про градл не знаю, но т.к. там можно использовать репы мавена и даже пом.ыксымэл то думаю это реально. Единственное с чем тебе придется смириться это то что генеришь ты вполне законченные и оформленные jar-ники, что подразумевает перепаковку/повторную инсталляцию при изменении кода либы, но по факту это одна кнопка/команда.
>>1633731 Вот опять эта магическая хуйня. Вроде не должно работать без чего-то, а вроде работает. Скоро и без @SpringBootApplication будет работать, лол.
Как в джаве реализовать такой ввод команд пользователем, как в gdb? То есть, запускается программа, затем в начале каждой строки выводится название программы (gdb) или gdb> а потом считывается пользовательский ввод?
>>1633913 Точно не javaw, иначе выхлоп программы внизу не был бы виден. Никогда не юзал его, сейчас трайнул, и System.console() вернул null. В git-bash он тоже возвращал null, заработало только с winpty.
>>1633977 Бля, я когда увидел иерархию из этих InputStream, FileInputStream, BufferedInputStream, NeboInputStream, AllahInputStream и ещё овер 50 классов, сразу зарёкся писать на джаве что-то, где нужно работать с файлами.
>>1633997 Они для разных задач. Джава - это серьёзные крупные проекты, но никак не консольные утилитки. Для последнего норм питон, но для большего он не годится.
>>1634009 Даже си можно в одну строку уложить. Речь про вменяемость последующего сопровождение. Питон исконно херня в столбик, а лямбда скорее праздник чем реалии кодинга.
// Получить последний файл в каталоге с префиксом "img_" File("text").list().last { it.startsWith("img_") }
>>1634009 >>1634017 Какой-то лисп получился А как же там Красивое лучше, чем уродливое. Явное лучше, чем неявное. Простое лучше, чем сложное.
Забавно что в питоне имеется такой адок из которого вечно получается не читаемое нечто: >[s for s in os.listdir() if s.startswith("img_")] Но при этом очень сложным было добавить this, ведь ппц как запутало бедного Гвидо.
>>1634174 Если бы просто лисп. Тут лисп с перлом. Я сам до сих пор охуеваю с любителей однострочников в питон-треде. Сам пишу такое только в шутку. А this нет, думаю, как раз из-за "явное лучше, чем неявное", и поэтому self и cls передаются явно.
Парни, в путоне можно делать так: '{:^30}'.format('centered') 'centered*'
А как в джаве выровнять строку по центру через дополнение символами? В гуаве есть дополнение слева\справа, а как по центру? В смысле, сам-то я метод могу сделать, но не уже ли нет готового?
Как правильно с точки зрения джавы организовывать приложение на свинге? Отдельный класс для панелей, отдельные классы для листенеров, но тогда листенер нихуя не знает об остальных компонентах на панели, можно конечно сеттером каждый раз пересоздавать кнопку, чтоб поменять название, но зачем? Можно ехтендиться от панели и имплементить листенеры, но это тоже фигня, один общий actionPerformed, в котором миллион if e.getSource.equals(button2) Как правильно делать, чтоб Brian Goetz сказал малаца?
>>1634352 не знаю как в свинге, но в javaFX есть .fxml для описания интерфейса, и есть Controller.java для всего кода. Код листенеров для кнопок тоже в контроллере
>>1634380 Да это я знаю. Но мне на свинге с look and feel "Nimbus" захотелось, как же он напоминает старые макоси. Да и в jfx в контроллере тупо миллион методов на каждый контрол? Какой-то процедурный подход.
>>1631276 Spring Data позволяет тебе не писать код обращения к БД, а просто определить интерфейс с методами, которые называются определённым способом. Например, написал в интерфейсе метод findByUsername(String username) и Spring сам создаст реализацию этого метода, который будет лезть в БД. Если у тебя чисто хибернейт, то тебе придётся ебаться с EntityManager, CriteriaQuery и прочим. К тому же, Spring Data это не только про редакционные БД. Spring Data может работать с MongoDB, Cassandra, Elasticsearch, Couchbase, Redis, при чём для них есть как обычные интерфейсы, так и реактивные. Хибернейт такого не умеет.
>>1634564 Он читает данные через буфер, т.е. пачками. Это значит, что за одно обращение к системе читается больше данных => меньше дорогих системных вызовов. И кроме того, такое чтение в целом меньше мешает другим процессам. Если приводить аналогию, это как сходить в магаз закупиться жратвой на неделю, вместо того, чтобы бегать туда каждый раз, когда хочешь есть.
>>1634583 Представь, что у тебя есть много потоков. В каждом выполняется какой-то код. И представь, что один из потоков дошёл до середины, но не может идти дальше, т.к. ему нужно дождаться остальных. В этот момент он говорит wait(), останавливается и ждёт. Ждёт до тех пор, пока кто-то другой не скажет notify() или notifyAll(). Методами notify()/notifyAll() поток уведомляет другие потоки, что он изменил состояние объекта, можно его чекнуть и продолжить работу. Разница между ними в том, что notifyAll() уведомляет все потоки, а notify() только один другой поток, выбранный случайным образом.
В том примере есть продавец, который не может продать товар, пока его нет на складе. Он говорит wait() и ждёт сигнала notify() от поставщика, когда он подгонит фуру с товаром и наполнит склад. Тогда продавец снова сможет продавать товар.
>>1634798 Если от монадок с функторами тебя корячить не начинает, то определённо. Ну и если бы ты мог легко перебраться, то давно бы уже сделал это. А раз ты спрашиваешь тут, значит ты типичный крудошлёп. Какая тебе нахуй функциональщина, дерево крутить научись.
>>1634785 >Например, написал в интерфейсе метод findByUsername(String username) и Spring сам создаст реализацию этого метода, который будет лезть в БД и зачем такая ёбань нужна? Хипстерки поди эякулируют от этой магии
Есть 2 имплементации 1 jaxrs интерфейса в war, один в classes, другой в lib/jar, jboss eap 6.4. Тот, что в jar extends тот что в classes (кастомизация, сэр). Как зафорсить порядок загрузки, чтобы загружался класс из jar? Переупаковку, шадов компайлеры и проч. не предлагать, ограничение со стороны вендора - можно добавить только один джарник в war.
>>1635129 А нормально объяснить? Мне вчера накидали кусок кода для доступа к файлу, чтобы не прописывать полный путь, и после это го началось µР±СѓРµ и ђРІС‚РѕР±
>>1635107 Магии там ровно столько же, но вместо магических аннотаций, падающих в компайлтайме, там не менее магические xml-ки, падающие уже в рантайме.
>>1635132 >µР±СѓРµ и ђРІС‚РѕР± Подобная ебала выскакивает в utf высранном в энкодинг шинды-125*
Погуглив за тебя можешь попробовать или создавать стринг с утфом или аут стрим с тем же утфом стрим: PrintStream out = new PrintStream(System.out, true, "UTF-8"); out.println(test);
Ну или полазией в настройках IDE, скорее всего там должен быть форс в кодировку Сам я мимопроходил, тыкающий жабу, если что
>>1635133 >Например, написал в интерфейсе метод findByUsername(String username) и Spring сам создаст реализацию этого метода, который будет лезть в БД это будет падать в компилтайме?
>>1635158 откуда твой компилтайм знает про структуру базы? Не знает, и падать будет в рантайме. При этом добавляется огромный оверхед на эту твою любимую магию.
>>1635167 Я по-твоему ванга? Скорее всего если ты не определяешь принтстрим в жабе самостоятельно оно будет придерживаться первого попавшегося Убери чтение файла и проверь и вообще иди на хуй я тебе уже всё что можно рассказал
>>1635132 Ну привет. Это я тебе вчера накидал. Но я ответственно™ заявляю, что это (>>1634209 →) к твоей проблеме не относится, вот подтверждение (>>1634230 →) - там у тебя и мой код, и русский норм выводит. А потом у тебя начались другие проблемы в другом совершенно месте (>>1634247 →). Кстати, как решил? Что по текущей проблеме подсказать не знаю, наверное ты где-то покопался в настройках, вспоминай.
>>1635164 На старте приложения спринг создаёт всю твою магию, работает норм, но стартовать будет долго. Но всем похуй, обычно запускают приложуху на сервере и она работать может овердохуя лет.. На такое ещё прекрасно накладывается jit
>>1635141 Почему это должно падать? Это такой же код, просто вылизанный и оттестированный миллион раз, да ещё и упакованный в контейнер. Не надо искать в спринге магию, там её нет. Это просто инструмент, чтобы писать меньше повторяющегося кода. Не нравится - можешь хоть каждый запрос к бд руками хуярить, через JDBC. Но тогда задай себе вопрос, зачем тебе Java, а может вообще лучше хуярить на С? Или сразу на ассемблере писать?
>>1635236 Да, есть такие авторы умных книжек, что любят рассуждать об архитектуре в вакууме, которая где-то там в космосе ничего не знает ни о конкретных фреймворках, ни о всяких скучных деталях типа структуры хранения данных в БД. Ради решения какой практической проблемы предлагается вся эта боль - загадка. Просто "ВЫ НЕ ДОЛЖНЫ".
>>1635272 Там нормально всё написано, для чего и почему. Просто он это вырвал из контекста. Суть в том, чтобы делать архитектуру, а потом уже для решения каких-то задач применять фреймворки модные. А не делать каргокульт вокруг фреймворка, из которого тебе может и надо будет 2.5 строчки кода.
Почему жвм мир в целом и спринг в частности так сильно перегружены информацией, деприкейтед говном по которому все ещё гайды на первых страницах Гугла, и всем таким прочим? Пиздец, сто тыщ гайдов на каждый чих и все по разному. Спринг Бут это вообще раздутая поебень которая работает на чистой магии аннотаций, которые то обязательны то нет.
Охуеваю как в .нет всё стройно и понятно, а попытки погрузиться в жавамир ощущаются как на той пикче где мужик с аквалангом в чан с говном лезет.
>>1635278 Нет там карго-культа. Вся книга, все эти паттерны это просто рекомендации тех, кто уже делал что-то подобное о том, как делать не надо. >>1635283 Обратная совместимость. Можно, конечно забить на неё хуй, харкнуть на 9000 предприятий, которые платят за использование языка деньги. Но что-то мне подсказывает это плохая идея.
>>1635288 Она и в .нет есть, но в мелкомягком инфополе минимум мусора и есть годная официальная дока на актуальные и пожилые версии языка/платформы. В жвм мире по крупицам собираешь инфу чтобы была актуальной и рабочей. Как будто в маргинальный язык пробуешь вкатиться, а не в топ-1 тырпрайз.
>>1635297 Хз, о чём ты. У того же Спринга отличная документация, одна из самых лучших. Ты просто видимо ни с чем другим не работал. А по поводу устаревших гайдов, ну так ты смотри на дату публикации, лол. Если старше 3 лет, значит уже неактуально скорее всего.
>>1635297 Ты не там смотришь. Несомненно, васянских сайтов, публикующих гайды "как сделать то-то и то-то", навалом, но, во-первых, всегда есть официальные доки (от оракла по джаве, от пивотал - по спрингу, если не найдешь, пиши, парочку закину сюда) и гайды (то же самое, и от оракла и от авторов спринга), во-вторых, всегда есть специализированная литература, в которой 95% информации up-to-date.
>>1635313 Отдельно литератуда для сертификации, но выше OCP8 я пока ниче не сдавал. У боярски и селикова овердохуя ошибок, эррата на 500+ ошибок, это примерно по одной ошибке на две страницы, невнимательная быдлокодерша, за что ей джава чампиона дали не понимаю.
>>1635259 отцы-основатели дали вам прекрасный декларативный dsl - sql. Нет, не хочу, хочу костыльную магию на основе НАЗВАНИЯ МЕТОДА (теперь ты не сможешь дать методу цивильное название)
>>1635338 Неет, это ты доки на API Java SE смотришь. А есть еще оракловские гайды (The Java™ Tutorials). Точка входа здесь, секция Language and Libraries/Java Tutorials. https://docs.oracle.com/en/java/javase/13/
>>1635323 Одно другому не мешает. Но когда ты в 10/100/1000 раз напишешь Select * from table, то ты начнёшь задумываться об автоматизации этого процесса. Сложные запросы всё равно придётся писать на SQL, тут уж никуда не денешься.
>>1635349 Лично мне из тройки самых популярных SPA-фреймворков больше всего приглянулся React, поэтому обычно юзаю связку Typescript + React +Mobx + Material UI. Но вообще, если в проекте на фронте SPA, то ты его трогать скорее всего не будешь, а будешь тупо апишки делать. Я этот стек в основном в своих пет-проектах использую, ну и на работе, когда больше некому (компания небольшая, рук не всегда хватает) и/или когда не надо сильно запариваться над вёрсткой (ненавижу верстать). Если у вас "традиционное" MVC-приложение, то используют в основном Thymeleaf, он вроде самый популярный сейчас. Ну а если есть желание поковырять SPA, то - Vue самый простой в освоении - React самый популярный - Angular самый сложный из трёх, подойдёт людям с Java-бэкграундом, потому что Typescript by default, знакомые концепции типа Dependency Injection и повсеместное использование декораторов (как аннотации, только круче), прям как в Спринге. Ну и естественно для каждого нужно знать Javascript хотя базовом уровне. И иметь хоть какие-то познания в HTML / вёрстке.
>>1635354 У меня есть подозрения что реакт это оверхэд для моих запросов (чуть сложнее голого хтмл+аякс). Или он быстро осваивается на базовом уровне? Не попадались как то гайды спринг+реакт. В основном +ангуляр/вуи или шаблонизаторы.
>>1635392 >Не попадались как то гайды спринг+реакт А какая разница, на чём у тебя бэк? У тебя SPA с бэком тупо по апишкам общается, и без разницы, на чём они написаны.
>>1635392 >Не попадались как то гайды спринг+реакт Просто "реакт" гугли, и просто "Spring Boot REST". Отдельно фронт отдельно бэк, мухи от котлет.
>>1635403 Закладки легко кладутся ставятся, для этого же придуман анкор (решоточка). И убедись что у тебя в ссылке не стоит "htmlsingle", это вообще для дока в одной html-странице, а то там разные варианты есть, кому как удобнее.
Уже скоро будет 2 года как я начал работать джавистом, ощущения, что за это время я накопил дохуя опыта и начал писать качественный код, появились, но, сука, меня беспокоит то, что я по сути нихуя не знаю. Банально даже то, когда нужно переопределять equals() и hashCode(). Проблемы с HashMap, именно с тем, как углубленно все это работает внутри. Про более экзотичные структуры данных и многопоточность, думаю, и говорить не стоит.
Как лечить подобную хуйню? Читать книжки, мб курсы кто посоветует хорошие?
>>1635601 >>когда нужно переопределять equals() и hashCode() >>как углубленно все это работает внутри >>HashMap >>углубленно >>курсы кто посоветует хорошие? на ютюбе погугли "джава для начинающих" или там Хорстмана почитай первый том. Ты б лучше про мониторы спросил или concurency collections, хотя это тоже входит в кор джава
>>1635228 Кароч немного разобрался. Открыл тхт-файл на русском, и перекодировал предложенным ИДЕ-шкой способом (1251) потом все в консоли полетело. Исправляется, если менять с утф-8 на 1251 вручную в каждой программе.
>>1635832 я вот тоже не понимаю, давно им не пользовался, но у него есть метод close.. казалось бы, логично если ты передал ему просто файл, то ты закрываешь сам сканер, чтобы он закрыл поток который породил, но если ты сам ему передал поток с которого читать, получается закрывать сам сканер не обязательно, если хочешь использовать свой поток как то еще?
>>1635334 > Condition и Lock Это то же самое. Только при использовании lock-ов у тебя есть отдельный объект снхронизации, что сложнее. Чаще всего как раз это и не нужно.
>>1635731 >>1635738 >Метод read() возвращает значения int штоле? Да. Если бы возвращал char то тогда бы нельзя было вернуть -1, точнее, вернуть было бы можно, но это было бы валидное значение чара, т.к диапазон чаров это 0x0000 - 0xFFFF. А вот "(int)-1" это уже 0xFFFF_FFFF, что выходит за диапазон валидных значений чара, соответственно может безопасно использоваться как специальное значение.
>>1635910 Чтобы неторопливо пилить таски на легаси-проекте, пить кофу с дорогими коллегами, тереть про машину, дачу, подготовку детей к школе, и гыгыкать над протухшими мемасами, временами почёсывая лысину.
Бля, апдейтнул крякнутую иде, еще раз драгнул агента, теперь срок годности упал до 17 апреля, а был до 2080 года, че делать? 17 апреля просто еще раз заагентить?
>>1635723 >Хедфурста хватит все-таки? ладно. в 2k21 нет смысла читать талмуды про сервлеты и жсп, если ты не имеешь дел с совсем дремучим легасиговном. читай лучше про сприн мвц и таймлиф
Аноны, горю уже несколько месяцев над идеей создания металайзера музыки, но понятия не имею как это делать, даже малейшего представления нет. Искал всякие гайды и видео по работе со звуком, но максимум что там было - создание каких-то синусоидных звуков, регулирование громкости и чего-то там еще. А мне нужно, например, определять какие инструменты используются, аккуратно подменять звук, допустим, с гитары на электрогитару, и т.д. Это возможно вообще? Че делать, никакие идеи для проектов в голову не лезут. :(
Из советов: - практика разговорного английского я работал в международных компаниях и у меня был опыт регулярного общения по скайпу и почте - многие компании сильно интересуются твоими софт скилами - "расскажите почему вы хотите работать у нас", "какие ваши сильные и слабые стороны" и прочая HR чушь, но тут это реально важно - если это не гугл или амазон, то алгоритмы и с труктуры данных никому не уперлись. Зато конкретные технологии и шаблоны проектирования - это вот прям топ вопросов, Что такое REST, отличия PUT от POST, шаблон factory vs builder, ну и прочая. - ну и я бы заранее настроился на небыстрый процесс, на то что часто надо самому пинать работодателя, и что поначалу будет непростая адаптация. - заранее детально обговори какую поддержку они оказывают в переезде: например "помощь в поиске жилья" - что в себя включает, кто-то тебе найдет квартиру к моменту приезда, а кто-то наймет риелторов которые будут хуй пинать несколько месяцев мой случай. - заранее гугли локацию куда ты едешь, как там с жильем, гос услугами не все владеют английским, если конечто ты не в бриташку собрался, медициной и т.п.
>>1636276 это взят максимум энтерпрайз вариант. Никто в здравом уме не использует ораклю. Простой чат делай на бинарном жавовском протоколе без всяких wsdl, спрингов и хибернейтов. Базу данных какую-нибудь постгрю с минимальной конфигурацией
>>1636299 На сокетах попробуй, если хочешь совсем без нихуя. Ниже сокета абстракции в жабе для чатика нет. Но лучше взять какой-нить netty (сам ты на сокетах скорее всего говна наделаешь) и навесить своих обработчиков. Базу бери постгрес какой-нить, круче него в попенсорсе ничего нет. Опиши там схему (чат комната, юзер, сообщения, тут онли твоё воображение) , желательно в Dbschema. Выгрузи её в чистый Sql. Подруби ликубейз и туда ченджсетом свой скрипт. Ну и все как бы. Не забывай данные в бд модифицировать в транзакциях и все ок будет. Желательно наверное ещё подрубить пул соединений к Бд. Типо хикари. А лучше возьми спринг и мозга не еби. В нем твой чат с персистенси, с тестами, транзакциями уместитться наверное в 500 строк кода
>>1636327 > возьми спринг он как то страшно и перегруженно выглядит. мне вообще советовали изначально ноду и что делать мне дебилу в жаве нечего,а то сойду с ума
>>1636440 Было 15 лет опыта. Занимался разработкой + тимлидил, по опыту в основном бекенд было чуть-чуть фронтенда, но я его не указывал, по технологиям весь актуальный стек кроме клауда специфика компаний не позволяла использовать клауд По поводу сайта - оттуда не шибко много предложений было, я бы на нем конечно зарегался бы, но про линкедин не забывал. Можешь поменять текущее место на то, куда хочешь свалить - так больше рекрутеров тебя найдет. Ищи сам вакансии и откликайся, предварительно можешь почитать сайт компании, если есть версия на английском и в разделе "о команде" пишут то у них работает 20 nationalities - с большой долей вероятности они занимаются релокацией. И еще момент - когда ты тут, тебя начнут хайрить гораздо активней, так что реально главное перехать - может и в так себе контору.
>>1636520 >>websphere тоже не дешевая. >>www.ibm.com/ru-ru/marketplace/java-ee-runtime/purchase >>Обратитесь к нам, чтобы узнать цену Охуенный подход, просто обожаю такой. Как на базаре бля.
>>1636655 Если меньше 5 лет опыта - тогда да, будет сложно но все равно возможно возможно, если больше то уже норм.
Просто если у тебя 15+ лет опыта и компании с мировым именем в резюме, то рекрутеры будут за тобой сами бегать. Иначе тебе надо самому за ними побегать. Но дальше все зависит от твоих скилов - позадрачивай все эти микросервисные архитектуры, спринг, шаблоны и т.д. этого достаточно чтобы пройти большую часть технических интервью.
>>1636918 >До продажи разве была платная версия? Я не знаю когда платная версия появилась, до продажи или после, я про это ничего не говорил. Сейчас есть две версии, поэтому пример подходит.
>Стоит ли выкладывать код проекта на гитхаб, если я теоретически смогу этот проект монетизировать? И в вопросе не сказано когда планируется монетизация, через 10 лет или завтра.
>>1637007 >0х424 Это код символа "Ф". В юникоде. В противовес 0xD4 в Win1251. Консоль ждет от тебя юникода, понимаешь? Поэтому когда ты ей подсовываешь русский в однобайтовой кодировке Win1251, т.е. символы с кодами 192-255 (0xC0-0xFF), она показывает тебе ??? ? ????? ?? ??????? Ясно?
>>1637019 Ну, если ты действительно хочешь пройти по этому пути, то > (0x410 + (i - 0xC0)) тебе поможет.
Но я вообще-то намекал что тебе бы неплохо бы сменить кодировку символов в источнике - файле. В наше время кроме UTF-8 ничего другого ставить не следует (есть исключения, но это отдельный обширный топик).
>>1637046 txt-файлы ты чем сохраняешь, Идэей? Там тоже внизу есть кодировка как ты указал тут >>1636941. Открой, смени кодировку, пересохрани txt-файлы.
>>1637049 Это только для русских буковок (из диапазона 192-255) надо делать, очевидно.
>>1637050 Пруфов, конечно же, не будет? Все внутренние апи давно на W-чарах (напр. SetWindowTextW). А какая кодировка у тебя в конкретном блокноте это от этого самого блокнота и зависит, умные-современные программы давно на юникоде так же.
>>1637067 >УТФ-8 это же однобайтная запись, на 256 символов, туда кириллица же и не должна влезть, правильно я понимаю? Нет, не правильно понимаешь. Настолько неправильно, что буквально каждое слово неверно, но детально комментировать я не буду. Гугли, читай.
Итак, тебе нужно именно сохранить файл в UTF-8. Твои действия: 1) Открыть файл в Win1251 2) На всякий случай CTRL+A, CTRL+C 3) Выбрать кодировку UTF-8 4) Оно спросит Convert? Ответить да 5) Либо сделать Reload, потом CTRL+A, DEL, CTRL+V
Нормально ли, когда приложение почти полностью зависит от стороннего, но, допустим, стабильного приложения? То есть, при падении стороннего приложения, будет падать и мое.
>>1637168 >>1637201 Падает ли nginx когда апстрим недоступен? Нет, он возвращает 502 bad gateway. Так же и у тебя - если апи недоступно/вернуло ошибку, ты корректно доносишь эту информацию пользователю, а дальше по обстоятельствам - сворачиваешься или ретраишь. Это не краш как таковой, это зависимость недоступна, и тут ничего не поделаешь если у тебя все приложение крутится вокруг этой зависимости.
>>1637122 Вот электрон поднимает хромиум и ноду жс на локальном пк и получает все фишечки как веб-приложение, так и нативный доступ к системе благодаря ноде. Почему со спрингом нельзя так сделать? Какую-нибудь супер lightweight версию с забандленным jre и хромиум.
Ребят, выполняю тестовое задание, до этого с бд мало работал. Тут пункт: Проект должен содержать: дамп БД, входные файлы ...
Использую PostgreSQL.
Вопрос, как происходит подгрузка дампа? Как работадатель запустит его? Сейчас у меня все работает на станднартном localhost.
Что вообще делать? Я создал дамп через pgAdmin, загрузил в папку с проектом, а дальше что? Какой url указывать в проекте для подключения к бд? ведь у работадателя другой url, другой пользователь бд, другой пароль.. Или это все переносится в дамп?
>>1637252 >Какой указывать url, бд, пароль Это - настройки. Настройки не пишутся в код (не хардкодятся), настройки не попадают в VCS. Настройки берутся из внешнего источника в рантайме. Например, из файла рядом с приложением. Или из environment vars, или из JNDI, или из параметров командной строки, ну ты понел. Спринг? ---> application.properties. По части дампа, делал дамп в другой RDBMS. Там имя бд хоть и записывается в дамп, но не является обязательным, развернуть дамп можно на любой бд, поэтому работодатель развернет на 0243_temp_another_newb_db. Полагаю что так везде, при импорте можно указать куда собственно импортишь. Можешь сгенерить достаточно уникальное имя db, чтобы оно не пересекалось с потенциальными другими (напр. xxx_my_cool_haker_db_xxx), и предоставить готовую команду для импорта с этим именем. Тогда проверяющим нужно будет только логин/пароль в настройках изменить (это конечно же не дампается).
>>1637271 Чет не очень доходит.. Вот мой созданный дамп, там описание всех таблиц и значений в них. Как я понял, работадатель сам запустить этот sql и развернет у себя? + у меня есть класс-утилита в приложение (с приватным конструктором и статичными полями), в которых хранится логин, пароль, юрл, он сам там сменит на что ему там надо? А то я уже 2 часа мозга ебу и не понимаю, толи написать ему на почту, на вот сам ебись с этим файлом, я не знаю как это делать. (мб хоть за честность возьмет )))))) ), либо вообще хз.
>>1637281 Если работодателю придется что-то изменять в коде и перекомпилировать, чтобы оно хотя бы заработало, то скорее всего он не будет этого делать. Ему нужно: 1) заимпортить бд к себе (наверняка у него готовая команда с параметрами есть уже, типа postgre importdump <dbname> 2) где-то указать свой логин/пароль 3) запустить прогу на выполнение
Поэтому при передаче проверяющему у тебя помимо исходников приложения + дампа должна также присутствовать готовая к запуску версия приложения "для юзеров", которая может работать в stand-alone режиме (если тебя конечно не war попросили сделать), т.е. без всех этих исходников, т.е. просто hello.jar, который можно запустить командой java -jar hello.jar. Я обычно рядом еще и bat+sh делаю с командой запуска, потому что там могут быть длиннющие параметры, типа -xmx, -xms (это покажет твою дополнительную крутость кстати, только не обосрись). Т.е. тупо две папки: src (исходники) и bin (готовая программа). И вот тут у тебя развилка, откуда брать параметры. Можешь в скрипте, к параметрам запуска дописывать. Тогда команда будет такая: java -jar hello.jar user password db. Либо в отдельный файл. А дальше изменяешь свою программу так, чтобы она при загрузке в методе main либо проверяла аргументы (String[] args там не для красоты сидит), либо читала простенький файл, где настройки будут идти парами key=value по одной на строку.
Чем легче ты сделаешь это для проверяющего тем тебе же лучше. Т.е. если ты например выбрал указать параметрами в скрипте, то выдели их в начало файла в отдельные переменные, потому что в длиннющей строке запуска сложнее что-то найти и изменить.
>>1637252 Я обычно использую H2 - это один файл, работает в embeded режиме. Если не лень - сделаю создание базы liquibase скриптами. Если лень - создаю Hibernate из entity.
И вообще стараюсь, чтобы тестовое можно было запустить ./gradlew bootRun
Ну и в корне проекта README.md с описанием как сконфигурить если надо, запустить и тестить.
>>1637342 >Если не лень - сделаю создание базы liquibase скриптами. Есть пример? Это вообще норм практика? Обычно вроде просто .sql файл используется. А спринг еще и сам этот файл запускает.
>>1637252 Можно завернуть в докер-образ, лол. Натыкался на тестовые, где нужно было наклепать круд и докеризировать. Хотя не факт, что у тебя можно, судя по постановке задания.
>>1637371 >Есть пример? Примера под рукой нет. Но в целом идея - подключаешь к проекту liquibase plugin и встраиваешь его в процесс билда. И наката на базу. Погугли тьюториалы, если не получится спрашивай.
>>1637371 >Это вообще норм практика? Обычно вроде просто .sql файл используется. А спринг еще и сам этот файл запускает. .sql - файл сойдет для тестового проекта, где база после создания не меняется, а если и меняется то ценных данных в ней нет. А вот если у тебя реальная прод база, с кучей данных - то тебе надо уметь ее обновлять со старой версии на новую и откатывать изменения, попутно контролируя что уже накатили а что - нет. Все это умеет liquibase.
>>1637439 На Sun Tech Days немного пощупал Sun Workstation на SPARC с Java Desktop System. С серверами не имел дела да и вообще Java разрабам пофиг на чем там сервер
Насколько вообще важно знание убунты/никсов для джависта? Если есть выбор между изучением например кафки или очередного спринга и изучением убунты что предпочтительнее? дефолтный интерефейс мне не нравится совсем, какой то уровень планшета, а сделать из него что то полноценное не так уж быстро для ньюфага
>>1637465 Интерфейс понадобится вряд ли, но на уровне консольки знать нужно (Ubuntu Server). В идеале разраб, имхо, должен иметь хотя бы небольшое представление обо всех технологиях, достаточных, чтобы из ничего мочь в соло сделать проектик под ключ, то есть к джаве знать базово фронтенд и девопс и мочь всё это связать и развернуть на хостинге.
>>1637465 С вероятностью 99% твои творения будут вертеться именно на *никсовом сервере. Но лично я как вкатыш изучил бы очередной спрынг, вряд ли старшие товарищи разрешат в консоль ручками лезть. Да и на собесах про линукс пока толком не спрашивали.
>>1637069 Java это tomcat, jboss и иже с ними. Каждый первый веб сервер работает на жабе. Это если по джангам всяким и пхп не ходить, а на нормальные сайты – новости там почитать или интернет банки или вот двачик. Про spring ты тоже ничего не слышал, да, бедняга? Все уважающие себя конторы используют spring сегодня и уже 10 лет без малого. Работать в ентерпрайзе на java это значит быть успешным, не запар(т)ным и с большой ЗП. Но ты хейть дальше, дурачок. Питончика там прихлебни или сишки.
>>1637465 > Насколько вообще важно знание убунты/никсов для джависта? Важно уметь делать базовые операции: - залогиниться на бокс - проверить что процесс запущен и перезапустить при необходимости - погрепать логи и т.п. Но опять же зависит от уроня - джуну не особо и надо, а сеньору - маст хэв.
>>1637454 Solaris никогда не создавал впечатление законченного продукта. Что их маркетинговые ходы вроде «а давайте переименуем GNOME 2 в Java Desktop System, никто всё равно не заметит», что zfs/smf. В отличие от того же AIX’а, система так и осталась разрозненной.
Так что невелика потеря, учитывая что сейчас даже самые-самые ынтерпрайзные слоупоки находятся в процессе миграции с Solaris на RHEL/CentOS/OL.
Linux победил все эти проприетарные Unix’ы. Туда им и дорога.
Ну всё, интеллектуальные обсуждения спринга окончательно скатились в обсуждения сортировок, и никого вообще не ебёт, что перекатывать скоро будут до 500. Пора объединяться с питон-тредом, контингент всё равно уже один и тот же.
Можно ли взаимодействовать со сторонним сайтом из своего приложения, если он не предоставляет АПИ? Допустим, вместо того, чтобы самому писать какой-то функционал, обратиться к сайту, который этот функционал производит. И палевно ли это будет?
>>1639213 Можно. Делаю так каждый день. Нет, не палевно. Все, что можно сделать в браузере, можно сделать и руками в своем приложении: авторизацию, клики по кнопкам и тд. Какие-то вещи легче, какие-то сложнее, в частности с SPA могут быть сложности, нужен джавовский JS движок, но мне до сих пор это не нужно было, Jsoup с http клиентом для моих задач хватает. Даже если сайт SPA, я просто отслеживаю аякс запрос и его абузю, не подтягивая полноценный JS движок в свое приложение.
>>1639213 >>1639236 Сервлеты и спринги тут совершенно ни при чем, на голом приложении все возможно что ты просишь. Так что "в процессе обучения сервлетам и спрингам" такого не будет. Тут нужно хорошо понимать протокол HTTP, и уметь пользоваться отладчиком в браузере, в частности, вкладкой Network. Еще curl'ом советую научиться пользоваться, отладчик в него умеет "копировать" запрос. На худой конец и Postman'ом. Все это HTTP-клиенты, продвинутые. Вот это тебе надо для твоей задачи, а не спринги.
>>1639260 Ну, миллионы... Все зависит от админов того сайта. Если миллионы в "секунду", и все с одного айпи, это может быть расценено как попытка атаки. Если админов нет, или им до пизды и они не мониторят логи, то владельцы сайта могут наоборот радостно воспринять нагрузку, типа "о мы кому-то вдруг интересны стали". В случае с апи всегда есть лимиты, а если ты вне апи это делаешь, "недокументированно", то тут возможно всё. Если сайт на клаудфларе, то админы даже не заметят - клаудфларе забанит автоматически.
На хабре много историй как "мы парсили дату для машин-лернинга с %сайт-нейм%, а там ограничение на запросы в секунду, поэтому мы развернули целую сеть машин для выкачки и за неделю таки выкачали весь %сайт-нейм%".
>>1639260 >>1639288 Тут смотри какое элегантное решение есть. Раз ты упомянул что у тебя сайт: так ты не делай это со своего бекэнда, а делай с фронта, в js. Тогда миллионы запросов с твоего бекэнда рассыпятся на одиночные запросы с разных айпи конечных клиентов.
>>1639307 Ну шо значит прожорливый ЯП.. Ссылки 4 байта, объекты 16 байт, примитивы стандартных размеров.. А развернешь хеллоу-ворлд и сразу 160 мб как не бывало. Сама JVM тут кушает конечно же немало, но это плата за robust, secure и другие там фичи какие у нас есть.
Если у тебя много маленьких приложений, то их удобно запускать на всего одной JVM в контейнере приложений, минимизируя оверхед.
>>1639313 А вот планируют враппер классы (boxed types) сделать value types, то есть они на стеке будут, меньше ли памяти жрать будут? Наверное нет, но стек более быстрая память, чем heap. Но получается на них ссылка не нужна будет? Короче странно это все.
>>1639173 Ты из Java хочешь дергать агента, я правильно понял? Судя по этой презентации https://2019.codefest.ru/lecture/1460 Можно просто объявить класс с native методом и заимплементить его в агенте.
>>1639372 От очереди с приоритетом и не требуется сохранять порядок добавления элементов. Требуется только возвращать при удалении наименьший/наибольший элемент.
Может кто объяснить, почему с Collections.sort() мы можем чисто лямбду кинуть (она конвертиться в компаратор), а вот с list.sortWith() уже нет, надо через анонимный класс? https://pl.kotl.in/vFhnMZhtM
>>1639420 Потому что эти умники решили, что у них должны быть свои интерфейсы на все и при этом хотят совместимости с Явой. В результате там есть 2 компаратора, kotlin и java.util и надо явно указать какой из ты хочешь реализовать, только из-за этого. Убери Comparator и ошибка тебе явно об этом скажет.
>>1639420 Потому что SAM conversion работает только при вызове джавы из котлина, а в самом котлине нет (но вроде добавят в 1.4). Предполагается, что если оно тебе надо, ты можешь делать аргументом сразу функцию типа (T,T) -> Int
>>1639436 Да что компараторы, сами коллекции у них тоже из kotlin.collections, а не java.util. При этом как-то совместимость не ломается. Чертова магия, не иначе.
>>1639420 Как я сам понял, они не смогли реализовать SAM для котлина (работает только для джава) потому, что в отличие от джавы есть функциональные типы (в жабе только классы и интерфейсы) и, в общем, получается какой-то адок.
В какой-то степени вариант: list.sortWith(Comparator { a, b -> a - b }) Мне даже нравится, он явный, иначе будет уже какой-то совсем ппц. Ты думаешь что функция лямбду принимает, а она там магически какой-то объект превращает). Магия это всегда выстрел в ногу, явное лучше чем не явное. тьфу, пистон во рту застрял
>>1639445 Да что коллекции с компараторами, в котлине и строки свои, при попытке импортировать java.lang.String идея пишет, что лучше бы этот класс в котлине не юзать.
>>1639471 Вот этот интероп и выстрелил, тебе нужна совместимость со всеми копараторами которые уже накодили для Явы - поэтому он принимает оба типа компараторов. А потом компилятор не может разобраться какой компаратор ты пытаешься тут использовать.
>>1639476 Там проблема не в этом (но твоя версия тоже верна). В котлине есть функции высшего порядка и SAM становится запутывающей магией. Я хз как они 1.4 это решили, но лучше бы не решали, написать явно интерфейс - не критично и объективно даже читабельнее.
Анон, собираюсь на курсач писать спамер ботами в майнкрафте. Кто то может пояснить каким образом там происходит подключение? Хотя бы примерно, а то я раньше дальше http запросов и не ходил.
Хочу в java вкатиться. Почитал тред. Стало страшно. Успокойте меня пожалуйста, вдруг я не разберусь и останусь курьером с юридической вышкой на пожизненном? пиздец....
>>1639722 Значит, раньше не кодил? Если есть усидчивость, и готов много учиться, то вкатишься запросто. Начать нужно с книжки, например, Хорстманн (библиотека), либо, если всё плохо, с видосиков на ютубе. Дальше пройти какой-нибудь курс по спрингу, попутно много гугля и читая всякие статьи. Заодно ещё придётся изучить базы данных и, возможно, фронтенд. Ну и поиск работы, к тому времени уже разберёшься, что к чему.
>>1639726 Я не лучший советчик по курсам, спринг учил в разных источниках - хабр, ютуб, сайт спринга,, несколько левых блогов по жабе. Лучше бы я книгу по нему прочитал.
Стримы сахар, при том не слишком полезный. Длинный стрим читать больнее, чем развесистый цикл. Но иногда удобно. Лямбды реализованы в яве весьма уродливо когда дело доходит до ислючений. Но вот с FunctionalInterface вышло прям хорошо Спринг изначально был хорошей идеей, но потом разрабов переклинило, и теперь это сраный комбайн где кажется даже сами разрабы уже давно перестали ориентироваться. Аннотации эта блин самая спорная тема всей явы. вроде и удобно, а вроде рантайм и хрен его знает где оно выстрелит. Ломбок просто нинужон. Из всех нововведений последних 10 лет имхо самое приятное - Optional. Потому что никакие Nullable, подсветка в IDE и жабодоки с варнингами не заставят на секунду остановиться и включить мозг. Ну и var сойдет, но только в связке с new, иначе расстрел.
>>1639720 0. Я законы учил, лол, какие фреймворки? Английский знаю на бегинере, могу простое сказать что-то, текст понимаю получше чем говорю, но не технический. Просто я каждый день думаю и понимаю, что время идет и скоро станет поздно перекатываться. Пошел на курьера, потому что социофоб ебанный и снимаю хату, на еду около 10к остается. Каждые день меня корежит, что я бесцельно трачу время, тогда, когда после работы мог бы пытаться превозмогать и не завязывать свою шею в старческий, нищебродский узел.
>>1636162 Надо понимать теорию и практику звуковых эффектов. Тот же distortion режет звук резко по амплитуде, overdrive делает тоже самое только плавно, есть ещё предусиление звука там уже требуется эмуляция например лампового комбика, есть ещё всякие улучшаторы compression, noise gate и тп. там целая история. Есть ещё эквалайзеры. Ну и наконец всякие reverberation, chorus, delay, hall. Собственно эти эффекты наруливаются в цепочке и по разному комбинируются. Большинство из этого всего есть в звуковых редакторах.
>>1639733 >Стримы сахар Дальше не читал. Зачем высирать столько текста, мог бы просто написать, что ты даун. Сейчас на любом собесе джуна спрашивают разницу между терминальными и промежуточными операциями.
>>1639791 Я понимаю.. Недавно забил уже на это, так как обычным знанием java sound api не отделаешься. Грустно, конечно, это единственный проект, к которому у меня было вдохновение, больше у меня нет идей совсем...
>>1631266 (OP) Писал я такой на C++, C#, javascript, потом захотел вкатица в андроид разработку, а тут джава эта опущенная. Поясните за листенеры, нахуй создавать целый новый класс блядь изза одного метода? Почему нельзя ебаный свет закинуть просто лямбду нахуй в сетЛистенер?
>>1639990 Как видишь, джава - далеко не самый приятный язык. Все это знают и все с этим живут, выбора особо и нет. Упомянутое тобой апи появилось до того, как появились лямбды. Но и те - лишь сахарок для классов с одним методом. Да и само апи андроида - это полный пиздец. В большинстве случаев его можно улучшить только сильно сломав совместимость. Попробуй взять котлин, говорят, на нём писать намного приятнее.
>>1640021 >Упомянутое тобой апи появилось до того, как появились лямбды. Что это значит? Я думал смысл как раз в том чтобы новая фича работала со старыми апи "автоматически". Пускай это сахарок и компилятор создает объект анонимного класса за меня, мне то что, пока это все происходит за сценой? Не новость, учитывая что и дженерики так же работают и нихуя там в рантайме нет кроме кастов. Все апи до Java 8 появились именно до Java 8, т.е. до лямбд, но они работают с лямбдами, напр. new Thread(() -> {}). Получается, гуглы этого не сделали потому что письки?
>>1640108 Ну так Майнкрафт старый, 11 лет уже больше чем мне. Уроков просто мало вижу, особенно на русском, а по документации изучать - я не на столько умный.
Я вообще люблю игры пописать (просто для себя, как хобби), и до этого времени делал всегда на "чистой" Джаве, пробовал LibGDX как-то не понравилось, LWJGL - вроде лучше, но тоже пытался 2 раза вкатываться и обратно скатывался до обычной Джавы. Сейчас хочу всё таки окончательно на LWJGL перейти
>>1640113 > Ну тык а кто этим пользуется? Ну а какая разница, ты же не работу с этим собрался искать, так что можно брать хоть самое мёртвое или непопулярное. Лишь бы ответы на вопросы гуглились.
А ещё максимально тупой вопрос, извините пожалуйста, сам на себя потом написаю. Хочу Eclipse сменить на IntelJ, так как в первом на винде криво тёмная тема работает. В IntelJ есть автоматическое добавление библиотек как в Эклипсе на Shift + Ctrl + O?
>>1640113 Не знаю насколько сырой сейчас котлин-нейтив, но теоретически можно получить годные обертки над годными полноценными движками, оставаясь с джава-подобным синтаксисом: >>1615630 →
>Итак, цель всего курса – получить кучу удовольствия, хорошее настроение и практические навыки программирования, чтобы легко устроиться работать программистом.
>>1640171 я всё никак не могу дописать аналог nominatim без пхп и анальной ебли с установкой си компиляторов. Переписать на джаву, либо написать новый с аналогичным функционалом. Из данных osm формировать объекты с иерархией и складывать в базу. Щас завис на изучении postgis
>>1640294 Область видимости. Константа на первом пике доступна только внутри метода main, тогда как константа на втором пике доступна и в этом, и в других классах.
>>1640298 зачем нужен main я знаю. зачем классы и сколько их может быть я тоже знаю. Я хочу узнать, как лучше стоит писать константу. В мейн или над мейн, во втором варианте я как понял можно вызывать его из других классов (если публик), но других отличий я не понял.
>>1640300 >>1640306 >>1640308 Область видимости, сказал же уже. Когда тебе константа нужна только в одном методе то ты и пишешь ее тут, пусть это метод main или любой другой. Если константа нужна в нескольких классах то первым способом, объявив ее в main, ты ее физически не получишь.
>>1640312 Блядь Это тоже область видимости, которая задается модификатором доступа. Когда тебе нужно чтоб было видно отовсюду - паблик, если иначе - то иначе. Сверяйся с пиком.
>>1640322 Класс топового уровня не может быть private, в нем нет смысла - он недоступен извне. private класс может быть только внутренним (inner). Про классы разговора не было, был разговор при константу-поле класса, вот она спокойно может быть private.
>>1640339 а кто-то реально пользуется джава рашем? тип на сколько это эффективно? как по мне это чёт на уровне сололирна, вроде время потратил, а знаний ноль.
>>1640347 На C++ не обязательно использовать эту хуйню с <<. На джаве в 1996 можно было писать так же, как и в 2004. Короче, картинка от даунов для даунов.
>>1640341 >>джава рашем? >>на сколько это эффективно? Как и любой другой сайт с гайдами. Там вроде еще какая то платная фича с тестами есть, но не пользовался, хз зачем за такое платить.
Будет ли работать RenderingHints.KEY_ANTIALIASING на текст? Или для сглаживания конкретно текста нужно обязательно RenderingHints.KEY_TEXT_ANTIALIASING? Graphics2D
>>1640224 Да хуй знает, вкатывальщики видимо заметили, что на питоне сложно найти работу, и побежали сюда со своими хеллоуворлдами про main, константы, области видимости и printf.
Аспекты, несколько контекстов, постпроцессоры бинов, спринговые эвенты
>>1640405 Самый низ - факт упоминания System.out.*, метода main, кодстайла и вопросы "почему не компилируется". Чуть выше - обсуждение алгоритмов и структур данных уровня laba1.
Анотация @author в джавадоке в проде используется или это просто такая мания величия любителей запилить туториалы? Какое мне дело кто написал этот класс Ранджит или Кунеш.
Не совсем по тематике джавы, но косвенно вопрос связан. На учебе в универе учим: си, джаву, ассемблер, жс, питон. Есть ли смысл начинать учить си++ для себя (в будущем не знаю какое направление выберу, возможно IoT или геймдев, может быть бекенд). Или же забить на кресты и просто продвигаться по джаве (и на учебе легче будет, и так же выучу "большой" язык и ООП)?
>>1640667 Речь о том, что джава такой же "большой", как кресты. Утрированно. Суть была в том, что есть ли смысл учить кресты (которые будут дополнительно к учебе в универе) или забить на них и просто больше и глубже углублятся в то, что уже и так учат в универе.
>>1640674 А я еще толком не понял как учат. Серьезно. Первый год учебы. В любом случае понимаю, что именно глубоко придется учить все самому. Больше всего интересует IoT, но знаний в электронике никаких (если только через 3 года не поступить на среднее электриком в дополнение к программисту). Бекенд интересен, но большой, где не надо быть фуллстеком на пхп+вордпресс+жс.
у тимлида/архитектора может быть свое мнение, может он ему похуй на конвенцию - в рамках проекта слушать надо его и ставить табы вместо пробелов, например
>>1641077 Не, мы с каждым тредом всё сильнее деградируем, уже забыли слово "спринг", теперь пытаемся не забыть, как юзать некое явление, которые некоторые тут называют "циклами".
Анон, а кто пробовал EAP версию идеи (2020.1)? Установил 14 jdk, указал эту версию в качестве sdk однако идея все равно не понимает что такое рекорды и валится с ошибкой. Что еще необходимо указать чтоб все заработало?
В общем проблема оказалась в том, что на уровне каждого из модулей было установлено не Project default (т.е. то что указано на уровне всего проекта), а в явном виде 13 жава.
А есть какая-то жаба конфа годная в слаке/телеге? А то тут тред хороший, но иногда по старой привычке рука сама к /b тянется и жопа начинает сгорать с тредов про рулетки/рнн/кнн/тнн и прочие аббревиатуры.
>>1642370 Есть, но тебя туда не пустят. У нас там вычищатель спринга, эксель-господин, 15лет-опыта господин, котлиншизик. Еще был блаженный ради прикола, но он всех заебал и его кикнули.
>>1642376 1. Generic параметр класса на static методы не распространятся. В static методах надо объявлять свои generic параметры. 2. У тебя параметр просто T а ты пытаешься с ним работать как с массивом, так нельзя.
>>1642514 Чем новее, тем лучше, конечно, но всё равно с большой вероятностью придётся потом сидеть на 8, где новых фишечек не будет (а может и 11 к тому времени, когда созреешь).
Некоторые говорят, что IDEA слишком упрощает жизнь. До такой степени, что в другом ide не сможешь писать код? На сколько верно это утверждение? Стоит ли учить джаву на другом ide, чтобы не быть разбалованным. (как с машиной)
>>1642550 Автогенерация кода есть в любой специализированной IDE, даже в vs code может быть есть. С утверждением не согласен, нет смысла отказывать себе в удобном инструменте, если не мазохист. Да и в любой книжке первая глава обычно это конпеляция в блокноте, так что без IDE тоже дадут поработать. Само собой нужно уметь по памяти написать psvm или цикл, знать сигнатуры методов из Object и уметь их переопределять вручную, ну и всякое другое, это прям царапка на верхушке айсберга кодогенерации.
>>1642514 Новичку лучше начать с 1.7 И классическим способом решать задачи, а потом перейти на 1.8 и прежние задачи ловко парировать стримами. Ну а в 11 мало нового, модули не нужны.
>>1642607 А вот хуй знает. Консервативна, но в последнее время не совсем. Я вообще где-то читал, что не добавлять асинки - принципиальная позиция разрабов жавы.
>>1642922 Нет, не обязательно любить спринг, но нужно обязательно его задрачивать, создавая несколько контекстов с постпроцессорами бинов, эвентами и аспектами.
>>1637290 Хоть и поздно отвечаю, но спасибо! Я хоть и обосрался, так как за 5 отведенных мне дней на программу, с использование только PostgeSQL, Java8, JDBC - это, к чему я не прикасался пока еще толком, я смог наговнокодить, чтобы все работало, как сказано в задании, нооо не соблюдая особо принципы ООП и паттерны)) 0 интерфейсов вообще в программе))
>>1637342 К сожалению у меня в тестовом было задание использовать Postgre и не использовать Hibernate, да и вообще спринга не касаться, хотя работа у них на спринге и в требованиях его знание, хотябы понимание (т.к. вакансия стажера), требовалось)))))
>>1642933 В данном случае .length() - это метод, который высчитывает и возвращает тебе длину. Есть так же .length без скобок, это уже свойство объекта. Метод - это функция, которую можно применить к объекту. То есть как бы ты и static функцию можешь назвать методом, но принято что метод - это функция объекта.
Как сейчас вообще на рынке с веб девелопментом и джавой? Как-никак выбирая между пыхой и неткором вкатился в джабу. Не прогадал? Или пока неткор господа будут рубить миллионы на интереснейших проектах - я буду на дваче сидеть?
>>1642955 >>1642956 Так как ты сделал тоже можно, но вообще для этого есть специальная панель - Structure (ALT+7) - просмотр структуры текущего класса, работает не только с java файлами. Она по дефолту слева рядом с Project.
>>1643324 90% работы бестолковый CRUD. Нет более лучшего места, чтобы возненавидеть программирование.
>интересна эта сфера Школота нулевых зависала по вебу, так как было модно Школота десятых по мобильникам, которые купили им родители. Скорее всего выбор сделал ты не сам, а обстоятельства и хайп вокруг тебя.
>>1643324 >>1643331 Добавлю, скоро бизнес порешает и знание разработки под две-три платформы будет обязательным. как было в вебе с браузерами в свое время.
Ну и зачем нужны эти record? Кастрированная версия data классов из Котлина. К тому же зачем-то сделаны final, из-за чего Hibernate или какой-нибудь Spring Data Mongodb с ними работать нормально не смогут. Лучше бы завезли template literals и именованные параметры в методах.
>>1643647 Тоже на это бухтел, в котлине изначально дата классы наследовались. Но со слов разраба, это породило тучу магических проблем и его прибили гвоздями.
Я надеюсь кто-то когда-то додумается избавиться от наследования в пользу миксин и полиморфизма только на интерфейсах. опять же, в котлине не осилили это из-за JVM
С пылу с жару, вопросы с собеседования: -Отличия rest и restfull. -Формат данных Http методов. Заголовки, тело, довольно подробно спрашивал. -SOLID. -На каком уровне размещается бизнес-логика в MVC. -Set и ArrayList, что быстрее, где и почему. Нахуй я вообще про сет вспомнил, язык мой - враг мой. -Иерархия исключений. Ответ про проверяемые/непроверяемые не устроил, надо было полностью всё называть. -Впервые был вопрос по Spring Secure.
>>1643737 Кто-нибудь запилите правильные ответы. От себя сходу могу так:
>Отличия rest и restfull. Знаю только что одна L лишняя, остальное хуй знает, подсказывайте.
>Формат данных Http методов. Заголовки, тело, довольно подробно спрашивал. Знаю довольно подробно. Ну там первой строкой идет "METHOD_NAME path HTTP_VER CRLF" (обязательно CRLF даже на линуксах), далее хедеры по одному на строку парой "ключ: значение", ключи могут повторяться, после последнего хедера CRLF два раза и тело, либо его отсутствие. Тело предполагается только у POST и PUT (из четырех основных), хотя технически есть возможность и у DELETE. Про x-www-form-urlencoded нечего рассказывать, тело "ключ=значение[&ключ=значение]", некоторые символы энкодятся, а вот про multipart по памяти не расскажу, ну там маркер-дивайдер, хуе-мое, дальше лень.
>SOLID. Сингл, опен, лисков, интерфейс, депенденси. Пояснить не сложно.
>На каком уровне размещается бизнес-логика в MVC. Хз, озвучьте список этих уровней.
>Set и ArrayList, что быстрее, где и почему. Нахуй я вообще про сет вспомнил, язык мой - враг мой. Первое вообще интерфейс, так что уточните вопрос. Ну тут я бы сказал не про быстроту надо рассказать, а про то что функции разные, семантика там. А скорость нужно сравнивать между реализациями одного интерфейса, например ArrayList и LinkedList - если часто удаляем/добавляем, то на списке, если часто читаем, то на массиве.
>Иерархия исключений. Ответ про проверяемые/непроверяемые не устроил, надо было полностью всё называть. Throwable -> Exception -> RuntimeException \-> Error
>Впервые был вопрос по Spring Secure. Хз, не изучал.
>>1643743 >Знаю довольно подробно А я вот не знаю и не понимаю зачем это помнить всё. Со всей OSI у меня так, каждый раз я читаю эту хуйню, довольно подробно изучаю. А через неделю большая часть из головы вылетает за ненадобностью. >Set HashSet. Вопрос был просто о структурах данных, какие знаете, какие использовали. Я их перечислил, в конце назвал сет. О, сет, расскажите о нём, почему зачем именно его использовали. Ну и понеслась. >Spring По нему мало что спрашивают ждунов, просто дают тестовое и ебись как хочешь. Хотя один раз был чел, спрашивал чем там контроллёр от рестконтролёр отличается, транзактионал, контексты, всю хуйню, блядь. Спринг про, которую в треде советовали, действительно годная книга.
Блядь, ну что за пиздец! Загрузил я, значит, этот саундбанк, хуе-мое, загрузил муз. инструменты из саундбанка в Synthesizer, делаю programChange() на загруженный инструмент, и он молчит! Не знаю, зачем сюда написал, на стековерфлов боюсь писать, меня там минусуют постоянно..
Призрачно нравится IoT (не курил эту тему, но абстрактно в голове представляется чем-то интересным). Ну и бекенд нагруженный. Что на рынке спринга по джаве? Или для бекенда убегать в $php, а для IoT в C++?
А что такое собственно этот ваш тырпрайз и почему его все хают? То есть сидеть в банке, получать красивую зарплату за то, что пишешь им бекенд всей системы - это плохо? А чем это отличается от модной питон галеры, где в опенспейсе сидят люди и пишут бекенды для других людей?
Гайз, а что из теории надо знать по джаве чтобы начать учить спринг бут и поскорее паттерны? Из знаний основы, массивы, двумерные массивы, ООП (первый раз его трогал), структуры данных. Надо еще что-то теоретически подтянуть или уже наконец можно заняться реальной практикой?
>Отличия rest и restful RESTом можно назвать любой API, работающий через протокол HTTP. Однако не всякий REST API есть RESTful. Тут есть куча принципов, вот, на мой взгляд, основные: - Использование методов HTTP строго по назначению (не хуячить всё подряд через GET, а использовать GET, POST, PUT, DELETE и иже с ними) - Отсутствие состояния (stateless), т.е. ни клиент, ни сервер не должны предполагать, что другая сторона между запросами находится в каком-то состоянии. Каждый запрос должен нести все необходимые данные, например, все клиентские id-шники нужно передавать заново в каждом запросе. - Идентификация данных как ресурсов через URL: не GET /getUser?id=1, а GET /users/1, не POST /deleteUser?id=1, а DELETE /users/1
>>1643743 >>На каком уровне размещается бизнес-логика в MVC. Думаю, что вопрос был про архитектурные уровни, так что на уровне Model, т.е. в модели предметной области, она же Domain Model. Далее можно раскрыть, что там есть слой сервисов и слой собственно бизнес-модели. И если приложуха простая, допустимо всю бизнес-логику писать прямо в сервисах, но в целях масштабируемости лучше сразу работать в объектах предметной области, а в сервисах оставить минимально необходимую часть.
В какой области больше применяют микросервисы? И в какой сфере джава более востребована, топ 5 кто-нибудь назвать сможет +-? Желательно линк на какой-нибудь ресерч, ну или ваше скромное ИМХО
Какие бывают узкие специализации в современном Java Development? Разработчик REST/SOAP API, специалист по базам данных... Понятно, что нужно знать всё, но вопрос в общем.
Правильно ли я понимаю, что, по сути, в бекенде все сводится к написанию API? Ну и интеграции с другими API + логика обработки?
Ну выходит что можно поделить на две части, работа с БД, и реализация API
Если мы не берем архитекторов, которые решают саму структуру приложения, а только девелоперов.
>>1640069 Да все, я разобрался, там если версию языка в настройках компилятора поменять, то можно лямбды закидывать. И еще я узнал об этих анонимных классах. Но все равно такое себе
>>1640016 Напугал тем что я не понимаю нахуй их смысла епт. Меня напрягает когда триллион классов между собой сплетены непонятным образом, иформация протекает через сиксильярд методов, а происходит всего лишь пук.
Есть ли упрощённая запись сравнения каждого элемента массива с каким-то значением? Вроде Array.equals но с одним значением. Что-то так и не нашёл в гугле.
Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?
А: Поздно.
https://github.com/random76/Java-Thread/wiki
https://github.com/qqqlll/Java-Thread/wiki