Вы видите копию треда, сохраненную 19 мая 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?
А: Поздно.
https://github.com/random76/Java-Thread/wiki
https://github.com/qqqlll/Java-Thread/wiki
Наконец-то нормальная шапка!
Только наличием этой дебильной генерации запроса из названия метода?
Лел. А почему не переименовать? Да и типы, я напомню, в путоне есть и работают
О, снова годный фильм вспомнили.
Напоминание: Котлиншизик изгнан из треда за самое гадкое обзывание джавы. Это слово нельзя даже произносить.
>>31271
>>31274
Очень распространенный вопрос, чо вы.
https://dzone.com/articles/what-is-the-difference-between-hibernate-and-sprin-1
Короче Spring Data это удобненький интерфейс для доступа к твоим данным через какую-либо имплементацию, а Hibernate это непосредственно имплементация Java Persistence API. Как и в любом другом случае с паттерном "фасад", ты можешь выкинуть этот удобненький фасад в окно и ипользовать непосредственно underlying implementation, выбор за тобой.
Напоминает java ee, где несколько подпроектов с pom.xml
Но я в ней не разбираюсь, сужу только по мавеновским архетипам
Да тебя убить мало за преждевременный перекат!
>>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: Если третий параграф не поможет тебе найти файл, в который осуществляется запись, то пиши, у меня уже готовы планы куда ковырять дальше. Но я предполагаю что это ты просто файл потерял.
>>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: Если третий параграф не поможет тебе найти файл, в который осуществляется запись, то пиши, у меня уже готовы планы куда ковырять дальше. Но я предполагаю что это ты просто файл потерял.
Я не понял, как в идее сделать несколько отдельных мавен модулей в одном проекте. Да скорее всего никак. Пришлось делать один общий помник.
Так jpa это уже и так апи. Получается фасад над апи?
Чтобы что? Чтобы лишить доступа к фичам конкретной имплементации?
>Перепощу сюда, а то он не найдет.
Скажи спасибо дебилу по кличке ...
>Получается фасад над апи?
Да, но это очень красивый фасад! У него есть множество субмодулей.
>Чтобы что?
Ты про конкретные плюсы спрашиваешь? Они перечислены на главной странице проекта. Ну а асбтрактно, они захотели видеть свою собственную реализацию JPA, но именно "реализовывать" им было лень. Взяли хибернейт, накрутили фасад как посчитали нужным. Каждый хочет именно свой велосипед, именно его считает удобным, и только у больших компаний получается продвинуть свой.
JPA это только SQL. Spring Data поддерживает эластик, монгу, хазелкаст и все прочее.
Что тебя удивляет в абстракциях? Орм тоже лишает доступа к фичам конкретных БД. Как системное апи лишает доступа к прерываниям биоса.
sql - универсальная абстракция раз
jpa, hibernate - универсальная абстракция 2
spring-data - универсальная абстракция 3
Уже становится как в жабаскрипте - когда над жабаскриптом наворачивают слои абстракций, и простенькая страница жрёт гигабайты памяти для ворочания всех этих слоёв абстракций
фасад над 2 системами - значит системы должны иметь одинаковый функционал.
А у них разный функционал
>sql - универсальная абстракция раз
Но диалектов много, некоторые даже кладут на стандарты сиквела.
Всегда было наоборот. Джава уже наворачивала 20 слоёв абстракций, когда на жс был только жквери.
система 1 умеет действие 1
система 2 умеет действие 2
Давай, сделай тут универсальный фасад с одним действием
>действие 1
>действие 2
Достать объект с диска или достать объект из памяти. Но суть одна - достать объект.
Это работает не так.
система 1 умеет действия 1 и 2
система 2 умеет действия 2 и 3.
Фасад будет уметь только 2.
сейчас вот дрочу сервлеты, спринг и тд
на работе классно все, кроме зп, и как я понял она тут растёт медленно
какая средняя зп джунов на джаве в мск? и что дрочить в первую очередь? я вот себе отобрал:
sql, какая-нибудь субд, spring web, mvc, boot, сервлеты, jpa, jdbc.
Что докинуть?
в монгах нет транзакций и sql запросов
посмотрел на вики
>В июне 2018 года (в версии 4.0) добавлена поддержка транзакций, удовлетворяющих требованиям ACID[9].
лол, они из NoSQL делают sql. Не вынесла душа поэта, возвертайте всё взад
>>1631257
Тут у вас какой-то обмудок посты трёт, так что пока его санными тряпками не выгоните, я ливаю (и вам рекомендую).
Двач превратился в форум нулевых, лол.
и что там написано? Очередной апологет ActiveRecord?
Нет.
Какой ты умный!
в NoSQL нет ACID и SQL
Прям как XML, Extensible Markup Language. С аббревиатурами вообще здравый смысл не работает.
У какого-то хохла на ютубе видел, что javac тоже как-то читается потому что там какая-то хуйня за этим стоит.
А, проебал, что это только с @Configuration работает. Спасибо.
Да хуй его знает. Скидывали когда-то давно.
Вот еще на сайте редхат бесплатно лежит, может ее прочесть.
Но он пошел в IBM.
Пусть будет variadic и принимает чары
System.out.println('H', 'e', 'l', 'l', 'o', ',', ' ', 'w', 'o', 'r', 'l', 'd', '!');
TObject, TString, TChar.
Респект за книгу на четвёртой пикче!
90% всех видео это ебаная вода.
Торговец курсами, инфоцыган, вроде это так щас называют?
Если делать вообще нехуя, можно глянуть его пиздёж. Это будет лучше дотки. Но всё равно бессмысленная трата времени.
Только непонятно, какое непосредственное отношение она имеет к жабе.
Не знаю, не видел. Я пытался смотреть его длинные видео.
Но там слишком много воды. И вообще он рассказывает про любую тему для тех кто в ней нихуя не понимает. Вроде и можно слушать, а смысловой нагрузки никакой.
Ну т.е. реклама как она есть.
Еще бесят его самосмехуечки и его ебаная страшная кружка с гербом Украины. И вообще он больной какой-то..
Он шизик на тему украины. Но я не буду развивать эту тему итт.
Меня наоборот его национальность никак не напрягала. Хохлом его назвал ради лулзов.
Я не помню, чтобы он как-то хуёво о русне отзывался, когда упоминал про рыночки заметил даже, что в отличии от незалежной у нас таки можно найти норм работу не на бургеров.
Свидомый патриот, да и хуй с ним, меня это не касается, пока он это при себе держать старается.
Нравится когда в pom новую dependency добавляешь и пытаешься ее использовать автоимпорт idea не работает. Потом ручками пишешь сам импорт и тебе idea подсказывает что надобно бы в module.info добавить новую строчке тогда заживем. И только после этого все наконец собирается.
В 26 поздно вкатываться?
Нет, не поздно
Какой смысл удалять тематический постинг? Го треды полностью состоят из тематического троллинга.
Превратили в говно-форум.
Кстати этот обмудок удалял даже адекватную тематику
Хз, мне проще ливнуть. Раньше было лучше такого бардака я тут не видел, вел даже с десяток Го тредов, лузлов ловили пачку, откровенный шитпостинг игнорили.
Мягкотелые какие джависты стали.
getClass().getResource()
и
getClass().getClassLoader().getResource()
Они же вроде бы одно и то же делают, зачем писать больше?
Хочу простеньки рестик, спринг вроде самый популярный фреймворк?
Спринг бут и спринг это одно и то же?
Maven - что-то типа пакетного менеджера и сервера одновременно?
Кстати я из градла тоже не смог модули сделать. Каким-то фигом одинаковые плагины конфликтуют, не хватило мозгов что ли сделать чтобы "йоба-2.3.5" больше не подгружалось если уже ранее погрузились и вообще каким фигом модули не собираются независимо.
Я знаю что тут не в силах помочь, просто поплакал.
Спринг бут это надстройка над спрингом для быстрого создания типовых проектов.
Мавен это система сборки и пакетный менеджер.
Там разница в путях будет
Если писать getClass().getResource("foo.properties") - то будет искать в пакадже этого класса com/myapp/foo.properties
Чтобы такого не было надо или путь начинать со слеша - /foo.properties или использовать ClassLoader он такого не делает.
Не юзаешь мавен - значит ты пидор.
Выдаёт нуллпоинтэкзепшн. Геттеры сеттеры есть для первого класса/уровня, но на втором параметры идут с заглавной. В доках пишут, что readValue берёт геттры/сеттеры, отсекает гет/сет и переводит первый символ в другой регистр.
Как быть?
нет, но да
С этими статик-нонстатик всегда был не в ладах, извините.
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;
Что это такое как это понимать????
Посоветуйте пожалусто книжку по основам и стандартам актуальную пожалусто
У тебя в ошибке прямым текстом написано, что нужен конструктор без аргументов.
public Class (){}
Русским же языком написано в чем проблема. Какой тебе код писать, если ты читать не умеешь?
>>32121
>>1632108 →
Вот тут я написал тебе как сделать иммутабл десериализацию, без сеттеров. Можно указать конструктор с параметрами через аннотацию @JsonCreator, и можно указывать имена переменных в json @JsonProperty (это для несовпадений имен в полях класса и исходного json).
Учитесь задавать вопросы, блядь!
Никто не будет отвечать на твой вопрос, потому что нихера непонятно что ты хочешь. Книжку по джаве тебе? Или по спрингу? А может по майбатис? Или все-таки по юнит тестам? Или тебя удивляет почему там используют JUnit версии 4, тогда как актуальная давно пятая?
>такой конструктор уже есть
Для вложенного класса.
Нужен конструктор без аргументов для вложенного класса.
Я только вкатываюсь, не могу ничего без кода подсказать.
Жди опытных джедаев, которые уже знают технику чтения кода на расстоянии.
Книжку по джаве чтобы несложно и было объяснено почему постоянно в программах пишутся непонятные 10и вложенные пути и методы(
Да. А конструктор у него нонстатик.
Сейчас закомментировал этот крутой конструктор с JsonCreate, использовал mapper, который уже где-то используется и подкорректированный. Исключения валить перестали, но возвращает null. Где-то в документации читал про эти null-значения, и что им нужно уделять вниманкие, но не особо понял.
Пик случайно приклеился.
Сам класс, не конструктор, объявлен как статик или нет? Если нет, то сделай его статиком.
public static class Foo {
}
Что-то ты недоговариваешь
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
Ошибка явно говорит о том, что у тебя не статический внутренний класс и у него нет конструктора по умолчанию.
В общем показывай код если хочешь чтобы помогли.
По гайду из шапки можно утонуть на лет 10
>>32224
Насчет null'ов есть @JsonInclude с пучком значений как именно трактовать пустые значения, но это только для сериализации.
Еще, если ты не все поля из json в объект мапишь, то конфигурируй маппер, иначе будет падать с ошибкой что не знает такого поля:
MAPPER.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
Об этом я тоже уже писал.
В общем либо ты показываешь оригинальный json, который у тебя падает, либо не показываешь и ебешься дальше сам .
УПД, под ошибками я подразумеваю мелкие ошибки, допустим, я хочу расширить потокобезопасный класс, добавив новую функциональность. Соответственно, я создаю класс хелпер, внутри создаю объект потокобезопасного класса, который хочу расширить, делегирую ему основную часть обеспечения потокобезопасности, добавляю новый функционал в класс-хелпер и синхронизирую новый функционал не на том объекте, на котором синхронизируется потокобезопасный класс. Буквально только что вычитал этот пример. Могут ли анализаторы кода отследить такую брешь?
Два чаю этому.
В 26 пора помирать.
Ну так у меня то же самое. Я про несколько именно отдельных помников. Мб сделать проект идеи, а внутри него мавен проекты?
Толсто.
> допустим, я хочу расширить потокобезопасный класс
наследование - зло. Наследование ломает инкапсуляцию.
>и синхронизирую новый функционал не на том объекте
какето? syncronized же синхронизирует на экземпляре объекта, а он одинаковый для родительских и потомочных методов
>наследование - зло. Наследование ломает инкапсуляцию.
Бла-бла-бла..
>какето? syncronized же синхронизирует на экземпляре объекта, а он одинаковый для родительских и потомочных методов
В данном случае под расширением я имею в виду размещение кода расширения в классе-хелпере без наследования.
С многопоточностью есть много разных ошибок, дедлоки можно ловить так https://youtu.be/5PlBgFWhkPA
Другие типы ошибок, по другому https://youtu.be/YAb7YoEd6mM
Да путь сразу считается абсолютным.
Посмотрю на досуге, спасибо.
Геттеры - зло. Геттеры ломают инкапсуляцию.
Программирование - зло. Программирование ломают инкапсуляцию.
>Бла-бла-бла
Он нормальную тему тебе задвигает, про это целая глава у Блоха.
Юзай интерфейсы, композицию.
в 2к20 считать что общая образованность растет
Это когда особенности реализации не торчат наружу, и можно абстрагироваться от них. Например, в сишке есть структура FILE. Всем похуй, что за поля у этой структуры, никто напрямую их не использует, хоть это и не запрещено. Но зато есть куча функций для работы с объектами такого типа, которые сами знают всё, что нужно.
Ясно, спасибо за объяснение, хоть и очевидное.
Ну им же надо как-то к нужному типу приводить. Хотя зачем, если разные типы и так могут выступаать в роли булина?
Заводи багу на JDK, они в Collections.unmodifiableList нарушили инкапсуляцию.
хотел бы в качестве List получить UnmodifiableList ?
Ну, всё, больше никогда не буду переопределять toString(), а то я так ломаю Object!
когда потомок ломает предка это не нарушение инкапсуляции, а долбоёб в кабине, который нормально сделать не может.
инкапсуляция это не закон божий, не сила тяжести или постоянная планка - это блять инструмент
Идёшь ты такой и вызываешь метод у каждого объекта.
А потом хуяк - тебе попался потомок со сломанным методом предка, и весь твой код по пизде из-за этого внезапного потомка, о существовании которого ты даже не знал.
Это вопрос на сообразительность?
Они никак не выглядят, потому что в HTTP такого нет. Это серверная фича сервлет реквеста и по сети не передается.
>Это серверная фича сервлет реквеста и по сети не передается.
Не понял. Можно же на клиенте к реквесту добавить аттрибуты, а на сервере их прочитать?
Что за аттрибуты ты тогда имеешь ввиду? Покажи где такое. Реквест это имя метода + хедеры + тело (опционально). В том источнике который ты читаешь аттрибутами могут быть либо кастомные хедеры, либо www-x-form-urlencoded тело.
В сервлетах.
https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.html#requestAttr-java.lang.String-java.lang.Object-
https://www.xyzws.com/Servletfaq/what-is-the-difference-between-the-request-attribute-and-request-parameter/1
А еще есть flash attributes...
>Реквест это имя метода + хедеры + тело (опционально)
Ну и очевидный path он же url, который может содержать query и matrix parameters и path variables.
Судя по тому, что здесь написано, можно шарить атрибуты между разными сервлетами, речи про передачу их за пределы приложения (сервера) нет.
https://www.javatpoint.com/attribute
А, вспомнил, она еще когда ты кидаешь исключение с каким-то сообщением, предлагает заменить проверку на requireNonNull без сообщения. Поганенькая штука, хорошо, что в идее почти любые проверки можно отключить.
Это метод мока, он через рефлекшн что угодно может подсунуть в сервер. Проверил запрос - никакие хедеры не добавляются, боди отсутствует, урл чистый. Передать эти аттрибуты извне, т.е. с помощью HTTP, никак нельзя. Ответ остается прежний: в хттп их нет, это фича сервлетов.
Ну это уже пердолинг начинается. Еще под себя делать кастомные инспекции кода.
String variableTrue = "True";
if (String.valueOf(condition).toLowerCase().hashCode() == variableTrue.toLowerCase().hashCode()) {
} else if (String.valueOf(condition).toUpperCase().hashCode() == variableTrue.toUpperCase().hashCode()){
} else {
}
Нужен конечно!
То что ты сказал решает только проблему 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);
Assert.assertTrue(context.equals(obj));
А ну да, использую equals, который не переопределил.
А все же такие методы добавления тестируют только через reflection или есть более простые способы?
https://www.youtube.com/watch?v=Og847HVwRSI
Более красивый и функциональный аналог mvnrepository, чтоб как гитхаб умел всякие социальные штучки делать.
То же самое, только с нескучным дизайном и более хуевым поиском.
А хотелось бы что-то вроде микроблогов, где разрабы писали бы про свои информацию, release notes, getting started и т.д.
гитхаб еблан
Это тебе не котлин, джава компилятор не умнее обычной палки, такой реверанс не получиться сделать с финал полем.
о_0
final поле должно быть инициализированно либо сразу, либо в констухторе. А констухтор тут не поможет, потому что у тебя static {} block раньше выполняется.
В static блоке можно static поля инициализировать, я невнимательно посмотрел твой код.
Он из-за try-catch ругается, а без них можно.
Точно, так не сработает. Тогда прокидывай через анчекед.
>кидать RuntimeEx
А ты не кидай сырой, эт же просто пример. Кидай MyCoolEx extends RuntimeException. Нет, не пахнет, многие библиотеки так делают. Это выбор разработчика к чему у него душа лежит - к чекед чтобы все засрано было try/catch, или анчекед, чтобы ловить только в ключевых местах-чокепоинтах, например, вокруг всего тела psvm.
Спасибо.
Ну пробросил я жсон из pojo обьекта по гайдам, для чего это и куда это в хтмл совать не понятно. Может жс фреймворки с этим работают.
Проблема в том, что в случае эксепшена у тебя будет неициализированное поле. У тебя два варианта: в catch блоке присвоить null или любую другую фигню. Или выбрость какой нибудь runtime exception - тогда класс вообще не загрузится и на статическое поле будет насрать.
Точняк, тогда инициализовать через доп перпеменную.
static {
OutputStream nullStream;
try {
nullStream = new FileOutputStream("/dev/null");
} catch (FileNotFoundException e) {
nullStream = System.out;
}
out = nullStream;
}
Consumer, например?
Так и есть, сейчас лучше использовать более высокоуровневые вещи. Во-первых, они эффективнее, во-вторых, они оставляют меньше шансов на ошибку т.к. написаны профессионалами. В каких-то частных случаях можно и свой тред спроектировать, но это редкие случаи; плюс ты уже должен быть подкован в этом деле, потому что как обычно работа с низкоуровневым апи требует больше внимательности.
Однако, в стандартном SDK джавы существует как минимум один случай, когда от тебя требуют наследоваться от Thread напрямую и что-то там переопределять. Я честно говоря не помню уже этот кейс, но я его встречал. По-другому там не сделать, т.к. апи были спроектированы давно и замены еще на тот момент не написали, может и до сих пор не написали, потому что фича была довольно специфическая, читай "ненужная".
>оставляют меньше шансов на ошибку т.к. написаны профессионалами
А вот об этом я сегодня как раз прочитал, что нужно доверять, но проверять. Документация какого-то класса хоть и гарантировала потокобезопасность, но потокобезопасным он не был. Вот так и гадай, какие подводные могут быть..
Какие классы вообще служат для высокоуровневого обеспечения многопоточности? Есть ли годные сторонние библиотеки, или с лихвой хватает стандартных?
Пока все пункты не прочитаете, в тред не возвращаться.
Тоже сегодня видел.
Но я спрашивал про String.intern() где-то полгода назад, мне итт сказали, что не знали об этом говне и на работе ни разу не юзали.
Да. Экзекуторы вместо тредов, различные семафоры и каунтдауны вместо вейтов+джойнов.
>>33172
Ну это отдельный случай - баги. Винда или SSL тоже гарантируют защиту твоих данных, а вулнерабилити всё равно находят и абузят. В случае со стандартными классами библиотеки джавы или любой другой библиотеки как думаешь, у кого больше шансов наткнуться и найти баг, у тебя в случае самописного класса, или у коммьюнити на сотнях тысяч энтерпрайзных приложений?
>Какие классы служат
Различные экзекуторы и служат: есть с очередями, расписаниями, и тд. Даже отдельный случай singleThreadExecutor - т.е. разработчики библиотеки предлагают тебе не использовать свой Thread даже в случае если тебе нужен всего один поток. Ну тут мораль ясна - завтра тебе понадобится добавить в одному потоку второй и ты просто одноу строку поменяешь, которая возвражает реализацию, т.к. ты уже работаешь с экзекутором через интерфейс. То же самое почему мы пишем List = new ArrayList, потому что потом можно на Linked заменить или другие.
Джавач, я прошёлся по нескольким тематическим тредам в поисках слова "легаси". В каждой тематике искал за последние 2000 постов. Результат весьма интересен.
Шарписты занимаются перефорсом легаси на джаву, хотя у самих на рынке вакансий одни дутнеты без кор на винде, винформс старые и еще хуже вебформс
Понял, спасибо за ответ!
Проблема многопоточного програмиирования не в "скармливать задачи черному ящику", а в том что делать с исходными данными и результатоми. Их же надо как разбить, многопоточно обработать, собрать результат и вот тут уже начинаются сложности.
Есть куча готовых решений: потокобезопасные очереди, executors, паралельные и реакливные стримы, акторы, корутины и прочее. И в целом все неплохо работает, если тебе нет необходимости в супер перформансе или выжать максимум из железа. Иначе добро пожаловать в ручное управление shared memory.
C/C++ - первое правило легаси, никто не говорит про легаси.
Понимаю.
equals()
hashcode()
toString()
notify()
notifyAll()
wait() x3
clone()
Готовишься к собесу? Не забудь про интерфейсы и абстрактные классы ещё.
Для начинающего кто уже хоть как-то знаком с сервлетами - Wrox Professional Java for Web Applications. Там как раз начинают с одскульных приложений на голых сервлетах с jdbc и постепенно переписывают все это дело на спринг (не бут). И лучше еще параллельно почитывай официальную доку ->https://docs.spring.io/spring/docs/current/spring-framework-reference/index.html там то же ничего особо сложного нет.
Если сервлеты не нюхал то читай - Head First Servlets and JSP
щас бы в 2k21 читать что-то толще 5 страниц по сервлетам...
Чтоб JNI работал.
он нужен только чтоб сказать что он не нужен и даже вреден
>>33652
это для нативного кода, обычно его вообще не упоминают
https://stackoverflow.com/questions/1010645/what-does-the-registernatives-method-do
Да, лабы пишут.
ниче не понял в этих ЦК КППС ИСПОЛКОМ
Бывают ситуации когда native драйвер даёт больше возможностей чем pure Javq. У того же Оракла 2 драйвера, один из которых вызывает oci через jni.
Нет, не нужны
Хуй знает, название ни о чем не говорит.
Делаю так (ну почти так) на мавене, инсталлируя свои микро-либы в локальный репо и подключая обычным способом в помник через артифакт+версию. Про градл не знаю, но т.к. там можно использовать репы мавена и даже пом.ыксымэл то думаю это реально. Единственное с чем тебе придется смириться это то что генеришь ты вполне законченные и оформленные jar-ники, что подразумевает перепаковку/повторную инсталляцию при изменении кода либы, но по факту это одна кнопка/команда.
Вот опять эта магическая хуйня. Вроде не должно работать без чего-то, а вроде работает. Скоро и без @SpringBootApplication будет работать, лол.
Да. В папку .m2
Scanner sc = new Scanner(System.in);
while (true) {
System.out.print("gdb> ");
String input = sc.nextLine();
// ... обработка ввода ...
}
Ясно. А почему его через идею нельзя использовать? Я слышал, что там для запуска используется javaw, а не java, но это пиздежь.
Точно не javaw, иначе выхлоп программы внизу не был бы виден.
Никогда не юзал его, сейчас трайнул, и System.console() вернул null. В git-bash он тоже возвращал null, заработало только с winpty.
Ниоч, ну нах.
>System.console() вернул null
Да, потому что там внутри проверка isTty. Если в идее запускать через терминал, то будет работать.
самый популярный пример со стековерфлоу
Зачем тебе новое, если старое работает?
Бля, я когда увидел иерархию из этих InputStream, FileInputStream, BufferedInputStream, NeboInputStream, AllahInputStream и ещё овер 50 классов, сразу зарёкся писать на джаве что-то, где нужно работать с файлами.
Восхищаться динамико-дрисней после опыта на статике, говорит о низком скилле в программировании.
Восхищаться питоном, где вся его нахайпованая "мощь" заканчивается тогда, когда начинаешь что-то серьезное писать - вообще специальная олимпиада.
Я уже не говорю о вывернутом диалекте языка и либ с маняфантазиями. Питон в этом плане не переплюнул только го.
Они для разных задач. Джава - это серьёзные крупные проекты, но никак не консольные утилитки. Для последнего норм питон, но для большего он не годится.
Шел бы ты отсюда.
Пыхтон и части не может, что в котлине можно сделать с файлами в одну строку.
На питоне можно всё писать в одну строку, вопрос лишь в понятности:
(lambda fin: (print(fin), close(fin)))(open("text.txt"))
Даже си можно в одну строку уложить. Речь про вменяемость последующего сопровождение.
Питон исконно херня в столбик, а лямбда скорее праздник чем реалии кодинга.
// Получить последний файл в каталоге с префиксом "img_"
File("text").list().last { it.startsWith("img_") }
Ок, убедил, потыкаю когда-нибудь твой котлин.
(lambda os: [s for s in os.listdir() if s.startswith("img_")][-1])(__import__("os"))
>>34017
Какой-то лисп получился
А как же там
Красивое лучше, чем уродливое.
Явное лучше, чем неявное.
Простое лучше, чем сложное.
Забавно что в питоне имеется такой адок из которого вечно получается не читаемое нечто:
>[s for s in os.listdir() if s.startswith("img_")]
Но при этом очень сложным было добавить this, ведь ппц как запутало бедного Гвидо.
Если бы просто лисп. Тут лисп с перлом.
Я сам до сих пор охуеваю с любителей однострочников в питон-треде. Сам пишу такое только в шутку.
А this нет, думаю, как раз из-за "явное лучше, чем неявное", и поэтому self и cls передаются явно.
'{:^30}'.format('centered')
'centered*'
А как в джаве выровнять строку по центру через дополнение символами? В гуаве есть дополнение слева\справа, а как по центру?
В смысле, сам-то я метод могу сделать, но не уже ли нет готового?
ух, звёздочки исчезли. Хорошо, идея то все равно понятна
"{:-^30}".format("centered")
'-----------centered-----------'
А мне сначала была не понятна.
Искаропки нету. Есть StringUtils.center() в Apache Commons Lang.
https://stackoverflow.com/questions/8154366/how-to-center-a-string-using-string-format
https://kodejava.org/how-do-i-align-string-print-out-in-left-right-center-alignment/
понял, спасибо
> Spring Data
сприн дата это тупа дружбомагия которая по названию метода типа FindByName генерит запросы
Да
Как правильно делать, чтоб Brian Goetz сказал малаца?
не знаю как в свинге, но в javaFX есть .fxml для описания интерфейса, и есть Controller.java для всего кода. Код листенеров для кнопок тоже в контроллере
Да это я знаю. Но мне на свинге с look and feel "Nimbus" захотелось, как же он напоминает старые макоси.
Да и в jfx в контроллере тупо миллион методов на каждый контрол? Какой-то процедурный подход.
Стоит, эти знания не устаревают. Я читал Седжвика (пик), проходя его же курс на курсере.
Ну и стоит ли курс потраченного времени.
https://www.udemy.com/course/java-oca-oracle/
Я эту книгу выбрал именно потому, что там примеры на джаве. У Седжвика тоже или он на с++ примеры показывает?
Седжвик уже давно на джаву перешёл. Раньше — да, было на плюсах, у меня на работе стоит такой двухтомник 2002 года.
Спасибо, пуся!
я пробовал, да, но в них часто многие темы плохо объясняются, хотя может я неправильные книги читал
Читаешь Хоррестмана. Не понятно - посмотри видео, перечитай главу, перепиши весь код с нее. Заменить книги не получится.
Core java.
Чтобы показать, какой в го уебищный импорт через строки.
Понял
чё скажешь за этот типо курс?
Spring Data позволяет тебе не писать код обращения к БД, а просто определить интерфейс с методами, которые называются определённым способом. Например, написал в интерфейсе метод findByUsername(String username) и Spring сам создаст реализацию этого метода, который будет лезть в БД. Если у тебя чисто хибернейт, то тебе придётся ебаться с EntityManager, CriteriaQuery и прочим.
К тому же, Spring Data это не только про редакционные БД. Spring Data может работать с MongoDB, Cassandra, Elasticsearch, Couchbase, Redis, при чём для них есть как обычные интерфейсы, так и реактивные. Хибернейт такого не умеет.
Ты видимо ещё про отношения через DBRef видимо не слышал.
Он читает данные через буфер, т.е. пачками. Это значит, что за одно обращение к системе читается больше данных => меньше дорогих системных вызовов. И кроме того, такое чтение в целом меньше мешает другим процессам.
Если приводить аналогию, это как сходить в магаз закупиться жратвой на неделю, вместо того, чтобы бегать туда каждый раз, когда хочешь есть.
Имеет ли смысл перебираться на Clojure или Scala с Java?
Представь, что у тебя есть много потоков. В каждом выполняется какой-то код. И представь, что один из потоков дошёл до середины, но не может идти дальше, т.к. ему нужно дождаться остальных. В этот момент он говорит wait(), останавливается и ждёт. Ждёт до тех пор, пока кто-то другой не скажет notify() или notifyAll().
Методами notify()/notifyAll() поток уведомляет другие потоки, что он изменил состояние объекта, можно его чекнуть и продолжить работу.
Разница между ними в том, что notifyAll() уведомляет все потоки, а notify() только один другой поток, выбранный случайным образом.
В том примере есть продавец, который не может продать товар, пока его нет на складе. Он говорит wait() и ждёт сигнала notify() от поставщика, когда он подгонит фуру с товаром и наполнит склад. Тогда продавец снова сможет продавать товар.
Если от монадок с функторами тебя корячить не начинает, то определённо.
Ну и если бы ты мог легко перебраться, то давно бы уже сделал это.
А раз ты спрашиваешь тут, значит ты типичный крудошлёп. Какая тебе нахуй функциональщина, дерево крутить научись.
Нет, не путаю. На смену стрингтокенайзеру пришел метод split().
>Например, написал в интерфейсе метод findByUsername(String username) и Spring сам создаст реализацию этого метода, который будет лезть в БД
и зачем такая ёбань нужна? Хипстерки поди эякулируют от этой магии
Как зафорсить порядок загрузки, чтобы загружался класс из jar?
Переупаковку, шадов компайлеры и проч. не предлагать, ограничение со стороны вендора - можно добавить только один джарник в war.
>собралась
>exit code 0
Она работает правильно, просто ты обосрался с энкодингом в windows-1251(/1252)
Ты не можешь написать высоконагруженное™ приложение, не нагрузив его
А нормально объяснить?
Мне вчера накидали кусок кода для доступа к файлу, чтобы не прописывать полный путь, и после это го началось µР±СѓРµ и ђРІС‚РѕР±
Как исправлять-то?
Магии там ровно столько же, но вместо магических аннотаций, падающих в компайлтайме, там не менее магические xml-ки, падающие уже в рантайме.
>µР±СѓРµ и ђРІС‚РѕР±
Подобная ебала выскакивает в utf высранном в энкодинг шинды-125*
Погуглив за тебя можешь попробовать или создавать стринг с утфом или аут стрим с тем же утфом
стрим:
PrintStream out = new PrintStream(System.out, true, "UTF-8");
out.println(test);
Ну или полазией в настройках IDE, скорее всего там должен быть форс в кодировку
Сам я мимопроходил, тыкающий жабу, если что
>Например, написал в интерфейсе метод findByUsername(String username) и Spring сам создаст реализацию этого метода, который будет лезть в БД
это будет падать в компилтайме?
откуда твой компилтайм знает про структуру базы? Не знает, и падать будет в рантайме.
При этом добавляется огромный оверхед на эту твою любимую магию.
Схуяли мою? Я всё нативными запрсами пишу. Правда, они тоже упадут в рантйме, ибо это обычные строки.
Почему он то, что написано в скобочках print(), в консоль выводит со сбитой кодировкой?
Я по-твоему ванга?
Скорее всего если ты не определяешь принтстрим в жабе самостоятельно оно будет придерживаться первого попавшегося
Убери чтение файла и проверь и вообще иди на хуй я тебе уже всё что можно рассказал
>принтстрим
Чяво?
>оно будет придерживаться первого попавшегося
ты только что хуйню
>Убери чтение файла и проверь
чяво?
Да
Ну привет. Это я тебе вчера накидал. Но я ответственно™ заявляю, что это (>>1634209 →) к твоей проблеме не относится, вот подтверждение (>>1634230 →) - там у тебя и мой код, и русский норм выводит. А потом у тебя начались другие проблемы в другом совершенно месте (>>1634247 →). Кстати, как решил? Что по текущей проблеме подсказать не знаю, наверное ты где-то покопался в настройках, вспоминай.
На старте приложения спринг создаёт всю твою магию, работает норм, но стартовать будет долго. Но всем похуй, обычно запускают приложуху на сервере и она работать может овердохуя лет.. На такое ещё прекрасно накладывается jit
Для начала покажи вот эту страничку. Далее, можно попробовать CTRL+A, CTRL+C, потом удалить файл, создать новый файл и CTRL+V.
>запускают приложуху на сервере и она работать может овердохуя лет
как там в 2002?
весь мир давно на faas
У меня приложение в соседнем кабинете работает, ничего не знаю про новомодные штуки
Да
Почему это должно падать?
Это такой же код, просто вылизанный и оттестированный миллион раз, да ещё и упакованный в контейнер.
Не надо искать в спринге магию, там её нет. Это просто инструмент, чтобы писать меньше повторяющегося кода.
Не нравится - можешь хоть каждый запрос к бд руками хуярить, через JDBC. Но тогда задай себе вопрос, зачем тебе Java, а может вообще лучше хуярить на С? Или сразу на ассемблере писать?
Да, есть такие авторы умных книжек, что любят рассуждать об архитектуре в вакууме, которая где-то там в космосе ничего не знает ни о конкретных фреймворках, ни о всяких скучных деталях типа структуры хранения данных в БД. Ради решения какой практической проблемы предлагается вся эта боль - загадка. Просто "ВЫ НЕ ДОЛЖНЫ".
Там нормально всё написано, для чего и почему. Просто он это вырвал из контекста.
Суть в том, чтобы делать архитектуру, а потом уже для решения каких-то задач применять фреймворки модные.
А не делать каргокульт вокруг фреймворка, из которого тебе может и надо будет 2.5 строчки кода.
Пиздец, сто тыщ гайдов на каждый чих и все по разному.
Спринг Бут это вообще раздутая поебень которая работает на чистой магии аннотаций, которые то обязательны то нет.
Охуеваю как в .нет всё стройно и понятно, а попытки погрузиться в жавамир ощущаются как на той пикче где мужик с аквалангом в чан с говном лезет.
Нет там карго-культа. Вся книга, все эти паттерны это просто рекомендации тех, кто уже делал что-то подобное о том, как делать не надо.
>>35283
Обратная совместимость. Можно, конечно забить на неё хуй, харкнуть на 9000 предприятий, которые платят за использование языка деньги. Но что-то мне подсказывает это плохая идея.
Отрицание, злость, торг, депрессия, принятие.. Рано или поздно ты вступишь в наш культ
Она и в .нет есть, но в мелкомягком инфополе минимум мусора и есть годная официальная дока на актуальные и пожилые версии языка/платформы.
В жвм мире по крупицам собираешь инфу чтобы была актуальной и рабочей. Как будто в маргинальный язык пробуешь вкатиться, а не в топ-1 тырпрайз.
Пиздец ты долбаёб... Серьёзно, программирование это не твоё :) Пиздуй на кассу :)
Хз, о чём ты. У того же Спринга отличная документация, одна из самых лучших. Ты просто видимо ни с чем другим не работал.
А по поводу устаревших гайдов, ну так ты смотри на дату публикации, лол. Если старше 3 лет, значит уже неактуально скорее всего.
Ты не там смотришь. Несомненно, васянских сайтов, публикующих гайды "как сделать то-то и то-то", навалом, но, во-первых, всегда есть официальные доки (от оракла по джаве, от пивотал - по спрингу, если не найдешь, пиши, парочку закину сюда) и гайды (то же самое, и от оракла и от авторов спринга), во-вторых, всегда есть специализированная литература, в которой 95% информации up-to-date.
Спринг
https://docs.spring.io/spring/docs/current/spring-framework-reference/index.html
Спринг Бут
https://docs.spring.io/spring-boot/docs/current/reference/
Из книжек выбери что по душе и ближе к текущей дате.
Отдельно литератуда для сертификации, но выше OCP8 я пока ниче не сдавал.
У боярски и селикова овердохуя ошибок, эррата на 500+ ошибок, это примерно по одной ошибке на две страницы, невнимательная быдлокодерша, за что ей джава чампиона дали не понимаю.
отцы-основатели дали вам прекрасный декларативный dsl - sql. Нет, не хочу, хочу костыльную магию на основе НАЗВАНИЯ МЕТОДА (теперь ты не сможешь дать методу цивильное название)
отказ от стандарта JavaEE и переход на хипстерский спринг с революциями и переделыванием всего каждый год.
С ЕЕ всё норм, дебич, то что так приходится кастомизировать, это проблемы контракта с поставщиком.
А, то есть он сразу читает больше, чем надо, тогда все понятно.
>официальные доки (от оракла по джаве
Да там сгенерированный джавадок и если повезет мизерный пример обычным текстом без скриншотов.
Каждые полгода нужно новую наркоманскую херню от спринга учить. Кого-то напоминает.
Неет, это ты доки на API Java SE смотришь. А есть еще оракловские гайды (The Java™ Tutorials).
Точка входа здесь, секция Language and Libraries/Java Tutorials.
https://docs.oracle.com/en/java/javase/13/
Лично я даже сру со спрингом. Сначала просто поднимаю контекст толчка, а затем автовайрю какашки в унитаз. В конце делаю flush контекста.
вот говно. Надо чтобы пук делало среньк. Срок 2 часа
Новые перлы тоже часто выходят.
Одно другому не мешает.
Но когда ты в 10/100/1000 раз напишешь Select * from table, то ты начнёшь задумываться об автоматизации этого процесса.
Сложные запросы всё равно придётся писать на SQL, тут уж никуда не денешься.
На рутрекере вся инфа.
Мне повезло работать в месте, где понимают, что время разработчика стоит дорого
Тект мелкий и код никак не выделен в Tutorials. Могли бы поприятнее сделать, как в спринговских доках.
Лично мне из тройки самых популярных SPA-фреймворков больше всего приглянулся React, поэтому обычно юзаю связку Typescript + React +Mobx + Material UI.
Но вообще, если в проекте на фронте SPA, то ты его трогать скорее всего не будешь, а будешь тупо апишки делать. Я этот стек в основном в своих пет-проектах использую, ну и на работе, когда больше некому (компания небольшая, рук не всегда хватает) и/или когда не надо сильно запариваться над вёрсткой (ненавижу верстать).
Если у вас "традиционное" MVC-приложение, то используют в основном Thymeleaf, он вроде самый популярный сейчас.
Ну а если есть желание поковырять SPA, то
- Vue самый простой в освоении
- React самый популярный
- Angular самый сложный из трёх, подойдёт людям с Java-бэкграундом, потому что Typescript by default, знакомые концепции типа Dependency Injection и повсеместное использование декораторов (как аннотации, только круче), прям как в Спринге.
Ну и естественно для каждого нужно знать Javascript хотя базовом уровне. И иметь хоть какие-то познания в HTML / вёрстке.
У меня есть подозрения что реакт это оверхэд для моих запросов (чуть сложнее голого хтмл+аякс). Или он быстро осваивается на базовом уровне? Не попадались как то гайды спринг+реакт. В основном +ангуляр/вуи или шаблонизаторы.
>Не попадались как то гайды спринг+реакт
А какая разница, на чём у тебя бэк? У тебя SPA с бэком тупо по апишкам общается, и без разницы, на чём они написаны.
По первой ссылке ебаный пиздец, тупо по 200 книжных страниц на одной хтмл-странице, ни закладок ни сделать, нихуя. Читать пиздец неудобно.
мимо
Ебать ты тупой.
>Не попадались как то гайды спринг+реакт
Просто "реакт" гугли, и просто "Spring Boot REST". Отдельно фронт отдельно бэк, мухи от котлет.
>>35403
Закладки легко кладутся ставятся, для этого же придуман анкор (решоточка). И убедись что у тебя в ссылке не стоит "htmlsingle", это вообще для дока в одной html-странице, а то там разные варианты есть, кому как удобнее.
Хочу аналог ломбока, но в виде XML Типа такого:
<?xml version="1.0" encoding="UTF-8"?>
<lombok xmlns="https://projectlombok.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:lombok=https://projectlombok.org https://projectlombok.org /xsd/lombok-1.0.0.xsd">
<lombok:generate-getters-and-setters>
<lombok:configuration>
<lombok:class>MyAwesomeEntity</lombok:class>
</lombok:configuration>
<lombok:fields>
<lombok:field>
<lombok:field-type>int</lombok:field-type>
<lombok:field-name>id</lombok:field-name>
</lombok:field>
</lombok:fields>
</lombok:generate-getters-and-setters">
</lombok>
Вам дали javafx в браузере, Open web start! Не хочу, хочу жрать говно! Что такое?
Апплеты тоже были охуенны, жаль их закопали.
Ну как бы никаких проблем нет, берешь https://github.com/cglib/cglib/wiki и ебашишь.
Я так в своем проекте генерировал DTO, ничего сложного.
Сколько работаю со связкой спринг/хибер -- ещё ни разу не сталкивался с тем, что нельзя загуглить и вкурить что-то за 20 минут.
Я давно уволился и доступа к коду у меня нет.
Посмотри этот тьюториал: https://dzone.com/articles/cglib-missing-manual
Купи нормальный мак, нищук.
Уже скоро будет 2 года как я начал работать джавистом, ощущения, что за это время я накопил дохуя опыта и начал писать качественный код, появились, но, сука, меня беспокоит то, что я по сути нихуя не знаю. Банально даже то, когда нужно переопределять equals() и hashCode(). Проблемы с HashMap, именно с тем, как углубленно все это работает внутри. Про более экзотичные структуры данных и многопоточность, думаю, и говорить не стоит.
Как лечить подобную хуйню? Читать книжки, мб курсы кто посоветует хорошие?
>>когда нужно переопределять equals() и hashCode()
>>как углубленно все это работает внутри
>>HashMap
>>углубленно
>>курсы кто посоветует хорошие?
на ютюбе погугли "джава для начинающих" или там Хорстмана почитай первый том. Ты б лучше про мониторы спросил или concurency collections, хотя это тоже входит в кор джава
DutgaSo
Вот бумеры, не могут сделать онлайн-презентацию новой версии, в которой без preview почти нихера нет.
Хотя лучше сервлетс ин актион почитаю, ну в жопу эти вырвиглазные картиночки.
Кароч немного разобрался. Открыл тхт-файл на русском, и перекодировал предложенным ИДЕ-шкой способом (1251) потом все в консоли полетело. Исправляется, если менять с утф-8 на 1251 вручную в каждой программе.
Да я этим полгода занимаюсь, а не как вы с детства.
пиздаболу в рот нассым?
потому что ищет в рабочей директории. она у тебя в корень проекта указывает, а файл лежит рядом с исходниками
Тебе-то что? Ставь что хочешь.
есть два стула (может больше):
System.out.print((char) i);
System.out.print(Character.toChars(i));
а лучше для текста используй FileReader
Я такого не проходил еще.
я вот тоже не понимаю, давно им не пользовался, но у него есть метод close.. казалось бы, логично если ты передал ему просто файл, то ты закрываешь сам сканер, чтобы он закрыл поток который породил, но если ты сам ему передал поток с которого читать, получается закрывать сам сканер не обязательно, если хочешь использовать свой поток как то еще?
> Condition и Lock
Это то же самое. Только при использовании lock-ов у тебя есть отдельный объект снхронизации, что сложнее. Чаще всего как раз это и не нужно.
Погоди, еще 20 лет тренировки и смогу. Я даже хз что это вообще у тебя.
Могу нарисовать уже сейчас
уже релиз кандидат
Вот и хорошо, что переносят, лол
Ctrl+q
>>35738
>Метод read() возвращает значения int штоле?
Да. Если бы возвращал char то тогда бы нельзя было вернуть -1, точнее, вернуть было бы можно, но это было бы валидное значение чара, т.к диапазон чаров это 0x0000 - 0xFFFF. А вот "(int)-1" это уже 0xFFFF_FFFF, что выходит за диапазон валидных значений чара, соответственно может безопасно использоваться как специальное значение.
Чтобы неторопливо пилить таски на легаси-проекте, пить кофу с дорогими коллегами, тереть про машину, дачу, подготовку детей к школе, и гыгыкать над протухшими мемасами, временами почёсывая лысину.
> ведь ни у кого нет денег на похороны.
меня похороны не интересуют.что и зачем пилить на ней в 2020?
Потомок кобола это SAP ABAP, нахуй вы в джаву это тащите.
AbstractSingletonUnmodifiableListProxyBean
А 22 апреля на выборы!
Может советы какие есть по прохождению собеседования и по другим вещам?
россиюшка до урала уже европа
>Хедфурста хватит все-таки?
ладно. в 2k21 нет смысла читать талмуды про сервлеты и жсп, если ты не имеешь дел с совсем дремучим легасиговном. читай лучше про сприн мвц и таймлиф
Мвц не стал, эндпоинт-то нужен.
Я нашел через https://djinni.co/
Из советов:
- практика разговорного английского я работал в международных компаниях и у меня был опыт регулярного общения по скайпу и почте
- многие компании сильно интересуются твоими софт скилами - "расскажите почему вы хотите работать у нас", "какие ваши сильные и слабые стороны" и прочая HR чушь, но тут это реально важно
- если это не гугл или амазон, то алгоритмы и с труктуры данных никому не уперлись. Зато конкретные технологии и шаблоны проектирования - это вот прям топ вопросов, Что такое REST, отличия PUT от POST, шаблон factory vs builder, ну и прочая.
- ну и я бы заранее настроился на небыстрый процесс, на то что часто надо самому пинать работодателя, и что поначалу будет непростая адаптация.
- заранее детально обговори какую поддержку они оказывают в переезде: например "помощь в поиске жилья" - что в себя включает, кто-то тебе найдет квартиру к моменту приезда, а кто-то наймет риелторов которые будут хуй пинать несколько месяцев мой случай.
- заранее гугли локацию куда ты едешь, как там с жильем, гос услугами не все владеют английским, если конечто ты не в бриташку собрался, медициной и т.п.
Почему?
А сам как думаешь?
Легко, берёшь oracle, websphere, jms, jaxb и jax-ws, пишешь немного кода, и готово.
я на RMI делал
мда
не лезь,оно тебя сожрет
Байт.
даже учитывая,что ОЗУ щас дешевое
джава все такая же прожорливая хрень и это для простецкой проги
это взят максимум энтерпрайз вариант. Никто в здравом уме не использует ораклю.
Простой чат делай на бинарном жавовском протоколе без всяких wsdl, спрингов и хибернейтов. Базу данных какую-нибудь постгрю с минимальной конфигурацией
подразумеваем —
Спринг,
мы говорим
Спринг,
подразумеваем —
Джава.
идея гига 2, хром гига 3, проект гиг, какой-нибудь дбивер ещё гиг. Вот и выжралось всё
я думал что история должна на сервере хранится. Так-то на клиентах вообще база не нужна
> на бинарном жавовском протоколе без всяких
меня именно интересует как это делается коробочными средствами или с минимумов дополнений
На сокетах попробуй, если хочешь совсем без нихуя. Ниже сокета абстракции в жабе для чатика нет. Но лучше взять какой-нить netty (сам ты на сокетах скорее всего говна наделаешь) и навесить своих обработчиков. Базу бери постгрес какой-нить, круче него в попенсорсе ничего нет. Опиши там схему (чат комната, юзер, сообщения, тут онли твоё воображение) , желательно в Dbschema. Выгрузи её в чистый Sql. Подруби ликубейз и туда ченджсетом свой скрипт. Ну и все как бы. Не забывай данные в бд модифицировать в транзакциях и все ок будет. Желательно наверное ещё подрубить пул соединений к Бд. Типо хикари. А лучше возьми спринг и мозга не еби. В нем твой чат с персистенси, с тестами, транзакциями уместитться наверное в 500 строк кода
> возьми спринг
он как то страшно и перегруженно выглядит.
мне вообще советовали изначально ноду и что делать мне дебилу в жаве нечего,а то сойду с ума
это гораздо проще и нагляднее
Или awt!
>морда должна быть на жс.
тогда тебе надо разбираться со всеми этими новомодными js сокетами. java-java взаимодействие тебе не нужно
кстати да
я щас в процессе,связка пхп +жс,но это пыхари говорят извращение,хотя вставка в хтмл не особо сложная
спринх ваб сокетс
Ломбок это че такое по-твоему, дебил? Шаблонизатор? Кодогенератор? Фреймворк?
Сука, какие же долбоебы сюда заюредают иногда.
Он не будет сам ничего инициализировать, если в параметры не прописать.
Самые энтерпрайзные энтерпрайзы.
А как же Amazon?
А потом IOT с java me.
Спасибо за ссыль, а про свой уровень перед отъездом можешь рассказать? Сколько лет опыта было на то время, чем в других компаниях занимался?
Уютный чатик будет у конечных пользователей в IE 8, которые ничего об этом знать не будут.
ну купишь еще пару серваков для своего уютного энтерпрайз чатика, если уж на оракл денег хватило
Впрочем, можно собирать ораклоаой, а крутить на IBM-ной.
Было 15 лет опыта. Занимался разработкой + тимлидил, по опыту в основном бекенд было чуть-чуть фронтенда, но я его не указывал, по технологиям весь актуальный стек кроме клауда специфика компаний не позволяла использовать клауд
По поводу сайта - оттуда не шибко много предложений было, я бы на нем конечно зарегался бы, но про линкедин не забывал. Можешь поменять текущее место на то, куда хочешь свалить - так больше рекрутеров тебя найдет. Ищи сам вакансии и откликайся, предварительно можешь почитать сайт компании, если есть версия на английском и в разделе "о команде" пишут то у них работает 20 nationalities - с большой долей вероятности они занимаются релокацией.
И еще момент - когда ты тут, тебя начнут хайрить гораздо активней, так что реально главное перехать - может и в так себе контору.
Охуеть ты прокачанный, братишка.
>>websphere тоже не дешевая.
>>www.ibm.com/ru-ru/marketplace/java-ee-runtime/purchase
>>Обратитесь к нам, чтобы узнать цену
Охуенный подход, просто обожаю такой. Как на базаре бля.
> Наоборот чаще всего это и нужно.
Зачем? Работать с синхронизацией по объекту гораздо проще чем с отдельным lock'ом и множеством условий.
Здрасьте. Расширенная версия платная. База общая - бесплатная, открытая. Получается и опенсорс, и монетизация; оригинальный ответ корректен.
Так жто он продал же какой-то американской компании. До продажи разве была платная версия?
Если меньше 5 лет опыта - тогда да, будет сложно но все равно возможно возможно, если больше то уже норм.
Просто если у тебя 15+ лет опыта и компании с мировым именем в резюме, то рекрутеры будут за тобой сами бегать. Иначе тебе надо самому за ними побегать. Но дальше все зависит от твоих скилов - позадрачивай все эти микросервисные архитектуры, спринг, шаблоны и т.д. этого достаточно чтобы пройти большую часть технических интервью.
>До продажи разве была платная версия?
Я не знаю когда платная версия появилась, до продажи или после, я про это ничего не говорил. Сейчас есть две версии, поэтому пример подходит.
>Стоит ли выкладывать код проекта на гитхаб, если я теоретически смогу этот проект монетизировать?
И в вопросе не сказано когда планируется монетизация, через 10 лет или завтра.
Я предполагал что такое задание вызовет у тебя затруднения =)
Попробуй так:
char c = 0x424;
System.out.println(c);
Что в приведенной фразе тебя логически подвело к твоему выводу?
>База общая - бесплатная, открытая.
База здесь
https://github.com/nginx/nginx
Ок, троллоло.
Не все.
>0х424
Это код символа "Ф". В юникоде. В противовес 0xD4 в Win1251. Консоль ждет от тебя юникода, понимаешь? Поэтому когда ты ей подсовываешь русский в однобайтовой кодировке Win1251, т.е. символы с кодами 192-255 (0xC0-0xFF), она показывает тебе ??? ? ????? ?? ??????? Ясно?
Ну, если ты действительно хочешь пройти по этому пути, то
> (0x410 + (i - 0xC0))
тебе поможет.
Но я вообще-то намекал что тебе бы неплохо бы сменить кодировку символов в источнике - файле. В наше время кроме UTF-8 ничего другого ставить не следует (есть исключения, но это отдельный обширный топик).
Так тебе это надо делать только для кириллицы, а не ко всем. Ну мог бы догадаться!
Да я уже догадался. Как кодировку исходного тхтшника поменять-то? Я не хакир)
Пруфов, конечно же, не будет? Все внутренние апи давно на W-чарах (напр. SetWindowTextW). А какая кодировка у тебя в конкретном блокноте это от этого самого блокнота и зависит, умные-современные программы давно на юникоде так же.
>Все внутренние апи давно на W-чарах (напр. SetWindowTextW)
Примерно года эдак с 99го.
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-setwindowtextw
>Это только для русских буковок (из диапазона 192-255) надо делать, очевидно.
Да он не понял просто, что ты сделал.
Вот смотри, записал в УТФ-8, кириллица не записалась.
УТФ-8 это же однобайтная запись, на 256 символов, туда кириллица же и не должна влезть, правильно я понимаю?
Тебе сама Идэя говорит что ты не прав. Ты файл в Win1251 открыл в UTF-8, а не пересохранил в UTF-8. Т.е. ты еще хуже сделал по факту.
А если создаешь файл через new FileOutputStream("filename") то он с каким расширением сохраняется и где?
>УТФ-8 это же однобайтная запись, на 256 символов, туда кириллица же и не должна влезть, правильно я понимаю?
Нет, не правильно понимаешь. Настолько неправильно, что буквально каждое слово неверно, но детально комментировать я не буду. Гугли, читай.
Итак, тебе нужно именно сохранить файл в UTF-8. Твои действия:
1) Открыть файл в Win1251
2) На всякий случай CTRL+A, CTRL+C
3) Выбрать кодировку UTF-8
4) Оно спросит Convert? Ответить да
5) Либо сделать Reload, потом CTRL+A, DEL, CTRL+V
Потому что чуть быстрее тормозного джанго.
Без расширения - "filename" и будет полное имя файла. В дефолтной папке проекта (по умолчанию - корень).
Никак. Либо быть охуенным мастером как ребята из JetBrains.
зачем?
двачую
Нет, я имею в виду, что мое веб приложение будет обращаться к стороннему сайту, например.
Ну у всяких популярных сайтов, например о погоде, есть публичные API и их все юзают и не боятся.
>>37201
Падает ли nginx когда апстрим недоступен? Нет, он возвращает 502 bad gateway. Так же и у тебя - если апи недоступно/вернуло ошибку, ты корректно доносишь эту информацию пользователю, а дальше по обстоятельствам - сворачиваешься или ретраишь. Это не краш как таковой, это зависимость недоступна, и тут ничего не поделаешь если у тебя все приложение крутится вокруг этой зависимости.
Вот электрон поднимает хромиум и ноду жс на локальном пк и получает все фишечки как веб-приложение, так и нативный доступ к системе благодаря ноде.
Почему со спрингом нельзя так сделать? Какую-нибудь супер lightweight версию с забандленным jre и хромиум.
Проект должен содержать: дамп БД, входные файлы ...
Использую PostgreSQL.
Вопрос, как происходит подгрузка дампа? Как работадатель запустит его? Сейчас у меня все работает на станднартном localhost.
Что вообще делать? Я создал дамп через pgAdmin, загрузил в папку с проектом, а дальше что? Какой url указывать в проекте для подключения к бд? ведь у работадателя другой url, другой пользователь бд, другой пароль.. Или это все переносится в дамп?
>Какой указывать url, бд, пароль
Это - настройки. Настройки не пишутся в код (не хардкодятся), настройки не попадают в VCS. Настройки берутся из внешнего источника в рантайме. Например, из файла рядом с приложением. Или из environment vars, или из JNDI, или из параметров командной строки, ну ты понел. Спринг? ---> application.properties.
По части дампа, делал дамп в другой RDBMS. Там имя бд хоть и записывается в дамп, но не является обязательным, развернуть дамп можно на любой бд, поэтому работодатель развернет на 0243_temp_another_newb_db. Полагаю что так везде, при импорте можно указать куда собственно импортишь. Можешь сгенерить достаточно уникальное имя db, чтобы оно не пересекалось с потенциальными другими (напр. xxx_my_cool_haker_db_xxx), и предоставить готовую команду для импорта с этим именем. Тогда проверяющим нужно будет только логин/пароль в настройках изменить (это конечно же не дампается).
Чет не очень доходит.. Вот мой созданный дамп, там описание всех таблиц и значений в них. Как я понял, работадатель сам запустить этот sql и развернет у себя? + у меня есть класс-утилита в приложение (с приватным конструктором и статичными полями), в которых хранится логин, пароль, юрл, он сам там сменит на что ему там надо? А то я уже 2 часа мозга ебу и не понимаю, толи написать ему на почту, на вот сам ебись с этим файлом, я не знаю как это делать. (мб хоть за честность возьмет )))))) ), либо вообще хз.
Если работодателю придется что-то изменять в коде и перекомпилировать, чтобы оно хотя бы заработало, то скорее всего он не будет этого делать. Ему нужно:
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 по одной на строку.
Чем легче ты сделаешь это для проверяющего тем тебе же лучше. Т.е. если ты например выбрал указать параметрами в скрипте, то выдели их в начало файла в отдельные переменные, потому что в длиннющей строке запуска сложнее что-то найти и изменить.
Я обычно использую H2 - это один файл, работает в embeded режиме. Если не лень - сделаю создание базы liquibase скриптами. Если лень - создаю Hibernate из entity.
И вообще стараюсь, чтобы тестовое можно было запустить ./gradlew bootRun
Ну и в корне проекта README.md с описанием как сконфигурить если надо, запустить и тестить.
Нечеловеческие.
>Если не лень - сделаю создание базы liquibase скриптами.
Есть пример? Это вообще норм практика? Обычно вроде просто .sql файл используется. А спринг еще и сам этот файл запускает.
Можно завернуть в докер-образ, лол. Натыкался на тестовые, где нужно было наклепать круд и докеризировать.
Хотя не факт, что у тебя можно, судя по постановке задания.
Твою мамочку.
Ускорений свободного падения (g).
"докеризировать" это файл сборки приложить, или прям чтоб на хабе лежал образ?
Прям в docker registry залить. И бейджики понавешать.
Есть вариант без выкладывания на хаб:
> docker save -o dvachimage.tar dvachimage
> docker load -i dvachimage.tar
любые. зависит от архитектуры
Пошел нахуй
Ты ошибся пабликом, ухади.
ну тогда она,один хрен
153.6
>Есть пример?
Примера под рукой нет. Но в целом идея - подключаешь к проекту liquibase plugin и встраиваешь его в процесс билда. И наката на базу. Погугли тьюториалы, если не получится спрашивай.
>>37371
>Это вообще норм практика? Обычно вроде просто .sql файл используется. А спринг еще и сам этот файл запускает.
.sql - файл сойдет для тестового проекта, где база после создания не меняется, а если и меняется то ценных данных в ней нет.
А вот если у тебя реальная прод база, с кучей данных - то тебе надо уметь ее обновлять со старой версии на новую и откатывать изменения, попутно контролируя что уже накатили а что - нет. Все это умеет liquibase.
пишем петицию
На Sun Tech Days немного пощупал Sun Workstation на SPARC с Java Desktop System.
С серверами не имел дела да и вообще Java разрабам пофиг на чем там сервер
Если есть выбор между изучением например кафки или очередного спринга и изучением убунты что предпочтительнее?
дефолтный интерефейс мне не нравится совсем, какой то уровень планшета, а сделать из него что то полноценное не так уж быстро для ньюфага
Ставь минт или что-то на KDE.
Интерфейс понадобится вряд ли, но на уровне консольки знать нужно (Ubuntu Server).
В идеале разраб, имхо, должен иметь хотя бы небольшое представление обо всех технологиях, достаточных, чтобы из ничего мочь в соло сделать проектик под ключ, то есть к джаве знать базово фронтенд и девопс и мочь всё это связать и развернуть на хостинге.
Для этого нужно установить десяточку, а не быть ретроградом, как я. У меня и докер работает криво.
С вероятностью 99% твои творения будут вертеться именно на *никсовом сервере. Но лично я как вкатыш изучил бы очередной спрынг, вряд ли старшие товарищи разрешат в консоль ручками лезть. Да и на собесах про линукс пока толком не спрашивали.
На работе научусь.
Java это tomcat, jboss и иже с ними. Каждый первый веб сервер работает на жабе. Это если по джангам всяким и пхп не ходить, а на нормальные сайты – новости там почитать или интернет банки или вот двачик. Про spring ты тоже ничего не слышал, да, бедняга? Все уважающие себя конторы используют spring сегодня и уже 10 лет без малого. Работать в ентерпрайзе на java это значит быть успешным, не запар(т)ным и с большой ЗП. Но ты хейть дальше, дурачок. Питончика там прихлебни или сишки.
https://habr.com/ru/post/492996/
А в пщ есть какие-нибудь стандартные глобальные методы, которые отовсюду доступны?
Ну вот и иди.
А электрон жрет память чуть меньше толстой джавы, но все терпят. Уже делают компактные версии jre supersonic subatomic.
Даже про equals не спросите?
Кафка удобнее.
>Если я напишу "жзпмчмичечный" это не станет словом.
Ну нельзя же в 2020 на такой троллинг вестись.
> Насколько вообще важно знание убунты/никсов для джависта?
Важно уметь делать базовые операции:
- залогиниться на бокс
- проверить что процесс запущен и перезапустить при необходимости
- погрепать логи
и т.п.
Но опять же зависит от уроня - джуну не особо и надо, а сеньору - маст хэв.
Не ошибки, а демагогию, про то, что есть слово, а что нет.
Удаленная машина.
"запустить через скрин" - в линуксе команда screen, позволяет "отправлять на другой экран" терминальный процесс
Solaris никогда не создавал впечатление законченного продукта. Что их маркетинговые ходы вроде «а давайте переименуем GNOME 2 в Java Desktop System, никто всё равно не заметит», что zfs/smf. В отличие от того же AIX’а, система так и осталась разрозненной.
Так что невелика потеря, учитывая что сейчас даже самые-самые ынтерпрайзные слоупоки находятся в процессе миграции с Solaris на RHEL/CentOS/OL.
Linux победил все эти проприетарные Unix’ы. Туда им и дорога.
https://518770.playcode.io/
вот сам и сделай
Дед-пердед, плз
Пора объединяться с питон-тредом, контингент всё равно уже один и тот же.
Можно. Делаю так каждый день. Нет, не палевно. Все, что можно сделать в браузере, можно сделать и руками в своем приложении: авторизацию, клики по кнопкам и тд. Какие-то вещи легче, какие-то сложнее, в частности с SPA могут быть сложности, нужен джавовский JS движок, но мне до сих пор это не нужно было, Jsoup с http клиентом для моих задач хватает. Даже если сайт SPA, я просто отслеживаю аякс запрос и его абузю, не подтягивая полноценный JS движок в свое приложение.
Мало что понял, но спасибо. Этому надо как-то отдельно учиться, или это познается в процессе обучения сервлетам и спрингам?
>>39236
Сервлеты и спринги тут совершенно ни при чем, на голом приложении все возможно что ты просишь. Так что "в процессе обучения сервлетам и спрингам" такого не будет. Тут нужно хорошо понимать протокол HTTP, и уметь пользоваться отладчиком в браузере, в частности, вкладкой Network. Еще curl'ом советую научиться пользоваться, отладчик в него умеет "копировать" запрос. На худой конец и Postman'ом. Все это HTTP-клиенты, продвинутые. Вот это тебе надо для твоей задачи, а не спринги.
Позволь мне еще внести ясность.. Даже если с моего сайта будут идти миллионы запросов на сторонний, все будет как ни в чем не бывало?
Ну, миллионы... Все зависит от админов того сайта. Если миллионы в "секунду", и все с одного айпи, это может быть расценено как попытка атаки. Если админов нет, или им до пизды и они не мониторят логи, то владельцы сайта могут наоборот радостно воспринять нагрузку, типа "о мы кому-то вдруг интересны стали". В случае с апи всегда есть лимиты, а если ты вне апи это делаешь, "недокументированно", то тут возможно всё. Если сайт на клаудфларе, то админы даже не заметят - клаудфларе забанит автоматически.
На хабре много историй как "мы парсили дату для машин-лернинга с %сайт-нейм%, а там ограничение на запросы в секунду, поэтому мы развернули целую сеть машин для выкачки и за неделю таки выкачали весь %сайт-нейм%".
Ну как и везде - чем выше нагрузка, тем больше ресурсов. А если еще и утечки, то раз в неделю рестартишь =).
Ну шо значит прожорливый ЯП.. Ссылки 4 байта, объекты 16 байт, примитивы стандартных размеров.. А развернешь хеллоу-ворлд и сразу 160 мб как не бывало. Сама JVM тут кушает конечно же немало, но это плата за robust, secure и другие там фичи какие у нас есть.
Если у тебя много маленьких приложений, то их удобно запускать на всего одной JVM в контейнере приложений, минимизируя оверхед.
это что там жрет почти 1гб?
А вот планируют враппер классы (boxed types) сделать value types, то есть они на стеке будут, меньше ли памяти жрать будут? Наверное нет, но стек более быстрая память, чем heap.
Но получается на них ссылка не нужна будет? Короче странно это все.
Прошлый заголовок лучше. Это уже третья версия этой пикчи получается. Петуханы, там spring boot запустился!
Хз, в обычном спринг секурити можно в одной.
стоп, это синтаксис новой джавы такой? Не typeScript? Пиздос
Ты из Java хочешь дергать агента, я правильно понял?
Судя по этой презентации https://2019.codefest.ru/lecture/1460
Можно просто объявить класс с native методом и заимплементить его в агенте.
Это котлин, и магического сахара в нём больше, чем во всех остальных языках вместе взятых.
Это котлин
Это котлин
Но ты взял оригинал же. А тех оригиналов две версии. Старый с нетбинсом, новый с idea.
попробуй через poll() получать элементы
Хотя бы ознакомься как твой класс работает прежде чем использовать. Как говорится, RTFM.
От очереди с приоритетом и не требуется сохранять порядок добавления элементов. Требуется только возвращать при удалении наименьший/наибольший элемент.
спасибо, теперь дошло
Живи, джавач.
Да не, Котлин должен быть лучше Явы а тут такой ублюдочный синтаксис
list.sortWith(Comparator { a, b -> a - b })
против Явы
list.sort((a, b) -> b - a);
Ну всё, пацаны, я снова не уверен, что это котлин.
почему с Collections.sort() мы можем чисто лямбду кинуть (она конвертиться в компаратор), а вот с list.sortWith() уже нет, надо через анонимный класс?
https://pl.kotl.in/vFhnMZhtM
Потому что эти умники решили, что у них должны быть свои интерфейсы на все и при этом хотят совместимости с Явой. В результате там есть 2 компаратора, kotlin и java.util и надо явно указать какой из ты хочешь реализовать, только из-за этого.
Убери Comparator и ошибка тебе явно об этом скажет.
Потому что SAM conversion работает только при вызове джавы из котлина, а в самом котлине нет (но вроде добавят в 1.4). Предполагается, что если оно тебе надо, ты можешь делать аргументом сразу функцию типа (T,T) -> Int
Да что компараторы, сами коллекции у них тоже из kotlin.collections, а не java.util. При этом как-то совместимость не ломается. Чертова магия, не иначе.
Как я сам понял, они не смогли реализовать SAM для котлина (работает только для джава) потому, что в отличие от джавы есть функциональные типы (в жабе только классы и интерфейсы) и, в общем, получается какой-то адок.
В какой-то степени вариант:
list.sortWith(Comparator { a, b -> a - b })
Мне даже нравится, он явный, иначе будет уже какой-то совсем ппц. Ты думаешь что функция лямбду принимает, а она там магически какой-то объект превращает).
Магия это всегда выстрел в ногу, явное лучше чем не явное. тьфу, пистон во рту застрял
Да что коллекции с компараторами, в котлине и строки свои, при попытке импортировать java.lang.String идея пишет, что лучше бы этот класс в котлине не юзать.
Вот этот интероп и выстрелил, тебе нужна совместимость со всеми копараторами которые уже накодили для Явы - поэтому он принимает оба типа компараторов. А потом компилятор не может разобраться какой компаратор ты пытаешься тут использовать.
Там проблема не в этом (но твоя версия тоже верна).
В котлине есть функции высшего порядка и SAM становится запутывающей магией. Я хз как они 1.4 это решили, но лучше бы не решали, написать явно интерфейс - не критично и объективно даже читабельнее.
Зочем?
Подумай, зачем ты везде делаешь final.
пиши val
Не важно. Но если очень хочется, юзай val из ломбока лучше, чем кодесы файналами засерать.
Не уверен, но по-моему это котлин.
А ты думал.
Всем спасибо за подсказки. Получилось.
Уровень знаний джавы, английского, фреймворков? Аппликэйшен контекст создавать умеешь? Бины в xml прописывал? Мавеном пользуешься?
Значит, раньше не кодил? Если есть усидчивость, и готов много учиться, то вкатишься запросто.
Начать нужно с книжки, например, Хорстманн (библиотека), либо, если всё плохо, с видосиков на ютубе.
Дальше пройти какой-нибудь курс по спрингу, попутно много гугля и читая всякие статьи. Заодно ещё придётся изучить базы данных и, возможно, фронтенд.
Ну и поиск работы, к тому времени уже разберёшься, что к чему.
Я не лучший советчик по курсам, спринг учил в разных источниках - хабр, ютуб, сайт спринга,, несколько левых блогов по жабе. Лучше бы я книгу по нему прочитал.
Может, в шапке есть чего, я туда не заглядываю.
Лямбды реализованы в яве весьма уродливо когда дело доходит до ислючений. Но вот с FunctionalInterface вышло прям хорошо
Спринг изначально был хорошей идеей, но потом разрабов переклинило, и теперь это сраный комбайн где кажется даже сами разрабы уже давно перестали ориентироваться.
Аннотации эта блин самая спорная тема всей явы. вроде и удобно, а вроде рантайм и хрен его знает где оно выстрелит.
Ломбок просто нинужон.
Из всех нововведений последних 10 лет имхо самое приятное - Optional. Потому что никакие Nullable, подсветка в IDE и жабодоки с варнингами не заставят на секунду остановиться и включить мозг. Ну и var сойдет, но только в связке с new, иначе расстрел.
0.
Я законы учил, лол, какие фреймворки?
Английский знаю на бегинере, могу простое сказать что-то, текст понимаю получше чем говорю, но не технический.
Просто я каждый день думаю и понимаю, что время идет и скоро станет поздно перекатываться. Пошел на курьера, потому что социофоб ебанный и снимаю хату, на еду около 10к остается.
Каждые день меня корежит, что я бесцельно трачу время, тогда, когда после работы мог бы пытаться превозмогать и не завязывать свою шею в старческий, нищебродский узел.
Надо понимать теорию и практику звуковых эффектов. Тот же distortion режет звук резко по амплитуде, overdrive делает тоже самое только плавно, есть ещё предусиление звука там уже требуется эмуляция например лампового комбика, есть ещё всякие улучшаторы compression, noise gate и тп. там целая история. Есть ещё эквалайзеры. Ну и наконец всякие reverberation, chorus, delay, hall. Собственно эти эффекты наруливаются в цепочке и по разному комбинируются. Большинство из этого всего есть в звуковых редакторах.
классные конспекты
Коротко, но поверхностно собрана инфа. Если забыл что-то, самое то зайти и быстро вспомнить.
>Стримы сахар
Дальше не читал. Зачем высирать столько текста, мог бы просто написать, что ты даун.
Сейчас на любом собесе джуна спрашивают разницу между терминальными и промежуточными операциями.
Это питон
Я понимаю.. Недавно забил уже на это, так как обычным знанием java sound api не отделаешься. Грустно, конечно, это единственный проект, к которому у меня было вдохновение, больше у меня нет идей совсем...
Писал я такой на C++, C#, javascript, потом захотел вкатица в андроид разработку, а тут джава эта опущенная. Поясните за листенеры, нахуй создавать целый новый класс блядь изза одного метода? Почему нельзя ебаный свет закинуть просто лямбду нахуй в сетЛистенер?
Тебе нужен котлин
Как видишь, джава - далеко не самый приятный язык. Все это знают и все с этим живут, выбора особо и нет.
Упомянутое тобой апи появилось до того, как появились лямбды. Но и те - лишь сахарок для классов с одним методом.
Да и само апи андроида - это полный пиздец. В большинстве случаев его можно улучшить только сильно сломав совместимость.
Попробуй взять котлин, говорят, на нём писать намного приятнее.
>Упомянутое тобой апи появилось до того, как появились лямбды.
Что это значит? Я думал смысл как раз в том чтобы новая фича работала со старыми апи "автоматически". Пускай это сахарок и компилятор создает объект анонимного класса за меня, мне то что, пока это все происходит за сценой? Не новость, учитывая что и дженерики так же работают и нихуя там в рантайме нет кроме кастов. Все апи до Java 8 появились именно до Java 8, т.е. до лямбд, но они работают с лямбдами, напр. new Thread(() -> {}). Получается, гуглы этого не сделали потому что письки?
Он звездабол! Я на свинге и фх создавал листенеры лямбдами.
Никак нет.
Ну так Майнкрафт старый, 11 лет уже больше чем мне. Уроков просто мало вижу, особенно на русском, а по документации изучать - я не на столько умный.
>>40111
Ну тык а кто этим пользуется?
Я вообще люблю игры пописать (просто для себя, как хобби), и до этого времени делал всегда на "чистой" Джаве, пробовал LibGDX как-то не понравилось, LWJGL - вроде лучше, но тоже пытался 2 раза вкатываться и обратно скатывался до обычной Джавы. Сейчас хочу всё таки окончательно на LWJGL перейти
> Ну тык а кто этим пользуется?
Ну а какая разница, ты же не работу с этим собрался искать, так что можно брать хоть самое мёртвое или непопулярное. Лишь бы ответы на вопросы гуглились.
Ну вообще да, значит пойду читать документацию lwjgl
Не знаю насколько сырой сейчас котлин-нейтив, но теоретически можно получить годные обертки над годными полноценными движками, оставаясь с джава-подобным синтаксисом:
>>1615630 →
Спасибо
автоимпорт? альт + ентер
> проприетарное
А то.
https://github.com/JetBrains/intellij-community
Так-то на джаве не от большой любви к опенсорсу пишут.
Функционал у коммьюнити на уровне vscode.
Ну хуй знает, ред хат продвигает опенсорс. Хоть и для выгоды.
Да никакой
секс не нужен
в бесконечность?
>Итак, цель всего курса – получить кучу удовольствия, хорошее настроение и практические навыки программирования, чтобы легко устроиться работать программистом.
Это правда?
ты че даун?
я всё никак не могу дописать аналог nominatim без пхп и анальной ебли с установкой си компиляторов. Переписать на джаву, либо написать новый с аналогичным функционалом.
Из данных osm формировать объекты с иерархией и складывать в базу.
Щас завис на изучении postgis
набор слов
а есть к-л простой фреймворк,чтобы отдавал пару страниц браузеру и был роутинг?
Что там жсп - от thymeleaf и freemarker отказались в пользу ангуляра, а от него в пользу реакта.
Через полгода и от свелте выкинут.
пошел нахуй
Но это уже на максимум... :(
Ну так из коробки без фреймворков только на пыхе можно писать.
Сука! Спринг бут для этого!
Что это? Очередная либа для тех, кто пытается писать на джаве "бекенд, который не энтерпрайз"?
Тогда тот вопрос можно перефразировать так: почему EE умер?
Но про это тут много раз уже говорили.
требует тяжеловесных серверов приложений. А спринг ничего не требует, только своих либ
Томкэт это не целый Application Server.
Область видимости. Константа на первом пике доступна только внутри метода main, тогда как константа на втором пике доступна и в этом, и в других классах.
зачем нужен main я знаю.
зачем классы и сколько их может быть я тоже знаю.
Я хочу узнать, как лучше стоит писать константу.
В мейн или над мейн, во втором варианте я как понял можно вызывать его из других классов (если публик), но других отличий я не понял.
приму как правило, но попрошу пояснить, что с первым не так? Тип почему он не жизнеспособен?
Блядь
Это тоже область видимости, которая задается модификатором доступа.
Когда тебе нужно чтоб было видно отовсюду - паблик, если иначе - то иначе. Сверяйся с пиком.
ебать, мне срочно нужна джава библия
Класс топового уровня не может быть private, в нем нет смысла - он недоступен извне. private класс может быть только внутренним (inner). Про классы разговора не было, был разговор при константу-поле класса, вот она спокойно может быть private.
Тут кстати не указано, что если у тебя все классы в одном пакете лежат, то там все кроме private доступно.
sdkman сам делает жава хоум
Я перепутал с package-private значит.
Поверь ты не захочешь это читать.
https://javarush.ru/quests/lectures/questsyntax.level00.lecture02
Такая графомания ебанутая только тянкам зайдет.
а кто-то реально пользуется джава рашем? тип на сколько это эффективно? как по мне это чёт на уровне сололирна, вроде время потратил, а знаний ноль.
хорстман мне тоже нравится, куда лучше полного руководства, или хед фёрст
Да я чет про ПЩ вспомнил.
На C++ не обязательно использовать эту хуйню с <<.
На джаве в 1996 можно было писать так же, как и в 2004.
Короче, картинка от даунов для даунов.
В Норвегии.
А что тебе нужно?
>>джава рашем?
>>на сколько это эффективно?
Как и любой другой сайт с гайдами.
Там вроде еще какая то платная фича с тестами есть, но не пользовался, хз зачем за такое платить.
Да хуй знает, вкатывальщики видимо заметили, что на питоне сложно найти работу, и побежали сюда со своими хеллоуворлдами про main, константы, области видимости и printf.
Аспекты, несколько контекстов, постпроцессоры бинов, спринговые эвенты
И заодно громко осуждать тех, кто не бойкотирует.
Самый низ - факт упоминания System.out.*, метода main, кодстайла и вопросы "почему не компилируется".
Чуть выше - обсуждение алгоритмов и структур данных уровня laba1.
А сдвинутый цикл активности - уже признак.
Какое мне дело кто написал этот класс Ранджит или Кунеш.
Мимо, а в этом теге можно указывать свой ник, типа Javarasher228, или только фи?
У нас не используют. Бессмысленная хрень. Файл может потом дорабатываться десятками других людей, и выделить одного автора не выйдет.
>Какое мне дело кто написал этот класс Ранджит или Кунеш.
А к кому потом в джаббер пойдешь писать?
Жмак в идее в контекстном меню на кнопку "Annotate" - и слева будет построчный список авторов с их почтой.
Неплохой способ совершить камин-аут. - Мама, папа, мне нужно вам кое-что сказать: я перекатил.
Какой гомофобный тред. Не используешь мавен - пидор, перекатил - пидор. Какие еще критерии?
Дан массив ['мама', 'мыла', 'раму', '']. Преобразуйте массив в строку 'мама+мыла+раму'.
System.exit("322");
На учебе в универе учим: си, джаву, ассемблер, жс, питон.
Есть ли смысл начинать учить си++ для себя (в будущем не знаю какое направление выберу, возможно IoT или геймдев, может быть бекенд). Или же забить на кресты и просто продвигаться по джаве (и на учебе легче будет, и так же выучу "большой" язык и ООП)?
Речь о том, что джава такой же "большой", как кресты. Утрированно. Суть была в том, что есть ли смысл учить кресты (которые будут дополнительно к учебе в универе) или забить на них и просто больше и глубже углублятся в то, что уже и так учат в универе.
String.join("+", strings)
А true зачем?
Смотря как глубоко учат, а не переменные и цикломассивы из одного языка в другой с нуля.
А я еще толком не понял как учат. Серьезно. Первый год учебы. В любом случае понимаю, что именно глубоко придется учить все самому.
Больше всего интересует IoT, но знаний в электронике никаких (если только через 3 года не поступить на среднее электриком в дополнение к программисту). Бекенд интересен, но большой, где не надо быть фуллстеком на пхп+вордпресс+жс.
Бред бредом, но что есть.
проорал
Не уверен не объебался ли ты со списком, поэтому бросил два варианта (котлинисты могут себя такое позволить)
https://pl.kotl.in/WsEoXsam-
code...{
}
или
code...
{
}
именно!
ОКР не модная
Покажи этот вариант.
>Второй логичный
Царь в прошлом году обоссал.
https://tsar1997.blogspot.com/2019/10/blog-post_32.html
>>Каков вариант более предпочтителен
первый
https://www.oracle.com/technetwork/java/codeconventions-150003.pdf
но можно так:
methodName (arg 1,
arg 2
){
//code
}
у тимлида/архитектора может быть свое мнение, может он ему похуй на конвенцию - в рамках проекта слушать надо его и ставить табы вместо пробелов, например
так что это значит? какой вариант лучше использовать?
Он раст любит.
Так себе, особенно если ORM использовать.
сто
Ты что, он же джарники вручную копирует!
Неа.
А с инстансами спринг разберется, а с памятью жвм разберется, а с бд хибернейт разберется. Когда уже мы будем что-то делать?
А тебе надо только все это правильно собрать и соединить. Ты рабочий на конвеере.
Почему с типом данных инт или флоат это не работае? с чем это связанно?
Да, потому что он приводится к double c implicit casting. Но возвращает все равно double.
Можыт потерять данные.
suka
У нее логотип вскода.
нихуя себе.
Как я понял, нужно отдельно для переменой и для функции тип указывать, получается дабл по стандарту стоит
Это только у пидоров. Там даже он фотку свою вставил.
а оно само как сделало, так и сделало, я туда не лез
я только учу джаву, читаю книгу, возник вопрос, а почему именно дабл, теперья стал умнее
тяны не думают
Не, мы с каждым тредом всё сильнее деградируем, уже забыли слово "спринг", теперь пытаемся не забыть, как юзать некое явление, которые некоторые тут называют "циклами".
Ломбок?
Ага, помнится, он рассказывал про ключевые слова на букву 'f', сложные оч.
Ну программирование в чулочках - это нормально
Я умный
нет конечно
Есть кстати перевод первого тома 11 издания (2019 год, про жабу 11), второго пока не нашёл.
надо будет поискать. в сравнении с 7 изданием 10 довольно приятно отличается
Знаю, BoJack.
Охуеть вопросы.
Так путь от папки java начинается, там нет пакетов, дефолтный будет.
или мейн с маленькой.
а вообще ты мог на красную шнягу навестись, и нажать, оно бы тебе всё само починило
Записал тебя карандашом в список пидоров.
На дебилоида?
В джаве строка в двойных кавычках.
Питонисты подтянулись
Нет такой буквы
Это котлин?
https://blog.jetbrains.com/kotlin/2020/03/kotlin-1-4-m1-released/
лол, да, забавные интерфейсы
what?
а вообще это легче чем ты думаешь
Да можно. Но если бы полей было очень много, зачем копаться в них?
И плюс эти поля наследованы от абстрактного класса.
Для большинства прикладных задач не понадобятся. Понадобятся логические.
я её скопировал и то получилось не сразу.
вот и хочу узнать, а как её писать, не буду же я каждый раз гуглить эту хуету
Он только на Dvorak клавах есть.
Зачем макрос? Нормальным людям и аlt-кодов достаточно.
Я тебе наделал их много, бери, пользуйся
||||||||||||||||||||||
Кстати, а как римские цифры писать, знаешь?
Установил 14 jdk, указал эту версию в качестве sdk однако идея все равно не понимает что такое рекорды и валится с ошибкой.
Что еще необходимо указать чтоб все заработало?
ну это часы
Там указал 14 версию
В общем проблема оказалась в том, что на уровне каждого из модулей было установлено не Project default (т.е. то что указано на уровне всего проекта), а в явном виде 13 жава.
Ну пиздец просто
И хули ты сюда пришел? Уебок блядь, настрой сначала нормально все, а потом ной на дваче.
Ебу дался, олень? Если в мавене стоит 1.8 то почему на уровне модулей была 13 версия?
Иди помой глаза с мылом, а заодно и рот свой.
Короче ты нахуй не умеешь пользоваться своими инструментами. Тебе блядь дай уровень, ты им гвозди забивать будешь.
>generics are not supported in -source 1.3 (use -source 5 or higher to enable generics)
Ухожу с джавы.
версия 1.3 была году этак в двухтысячном
Лол, помню еще бородатую шутку, что сишарп это конвертер для эксель таблиц.
Я долбоёб и искал криво. Ща вот.
Ты на своих хеллоуворлдах не заметишь.
Нет. Только хуй сосу.
самый важный фреймворк?
самый важный фреймворк.
Про Arrays.toString() знаю.
> public static void printArray(Object... array) {
> for (Object o : array) {
> System.out.println(o);
> }
> }
А мой код почему не работающий? Чтобы знать почему не надо так писать и почему такой код работать не будет.
бляяяяяяяяяяяя
Есть, но тебя туда не пустят.
У нас там вычищатель спринга, эксель-господин, 15лет-опыта господин, котлиншизик. Еще был блаженный ради прикола, но он всех заебал и его кикнули.
1. Generic параметр класса на static методы не распространятся. В static методах надо объявлять свои generic параметры.
2. У тебя параметр просто T а ты пытаешься с ним работать как с массивом, так нельзя.
public static <T> void printArray(T[] array) {
Спасибо.
Можно, только не implements а extends, и массивы не Iterable
Чем новее, тем лучше, конечно, но всё равно с большой вероятностью придётся потом сидеть на 8, где новых фишечек не будет (а может и 11 к тому времени, когда созреешь).
До такой степени, что в другом ide не сможешь писать код? На сколько верно это утверждение?
Стоит ли учить джаву на другом ide, чтобы не быть разбалованным. (как с машиной)
Автогенерация кода есть в любой специализированной IDE, даже в vs code может быть есть. С утверждением не согласен, нет смысла отказывать себе в удобном инструменте, если не мазохист. Да и в любой книжке первая глава обычно это конпеляция в блокноте, так что без IDE тоже дадут поработать. Само собой нужно уметь по памяти написать psvm или цикл, знать сигнатуры методов из Object и уметь их переопределять вручную, ну и всякое другое, это прям царапка на верхушке айсберга кодогенерации.
Новичку лучше начать с 1.7
И классическим способом решать задачи, а потом перейти на 1.8 и прежние задачи ловко парировать стримами. Ну а в 11 мало нового, модули не нужны.
В идее справа анизу есть ползунок, снизь до середины, чтоб подсказок для дебилов не было.
Есть Котлин там на уровне языка.
Ну и конечно Loom https://wiki.openjdk.java.net/display/loom/Main
А вот хуй знает.
Консервативна, но в последнее время не совсем. Я вообще где-то читал, что не добавлять асинки - принципиальная позиция разрабов жавы.
асинхронность
В гугол.
да
Нет, не обязательно любить спринг, но нужно обязательно его задрачивать, создавая несколько контекстов с постпроцессорами бинов, эвентами и аспектами.
Хоть и поздно отвечаю, но спасибо! Я хоть и обосрался, так как за 5 отведенных мне дней на программу, с использование только PostgeSQL, Java8, JDBC - это, к чему я не прикасался пока еще толком, я смог наговнокодить, чтобы все работало, как сказано в задании, нооо не соблюдая особо принципы ООП и паттерны)) 0 интерфейсов вообще в программе))
К сожалению у меня в тестовом было задание использовать Postgre и не использовать Hibernate, да и вообще спринга не касаться, хотя работа у них на спринге и в требованиях его знание, хотябы понимание (т.к. вакансия стажера), требовалось)))))
Это метод. А у массивов переменная.
В данном случае .length() - это метод, который высчитывает и возвращает тебе длину.
Есть так же .length без скобок, это уже свойство объекта.
Метод - это функция, которую можно применить к объекту. То есть как бы ты и static функцию можешь назвать методом, но принято что метод - это функция объекта.
Как-никак выбирая между пыхой и неткором вкатился в джабу. Не прогадал? Или пока неткор господа будут рубить миллионы на интереснейших проектах - я буду на дваче сидеть?
Ну тогда или инструкция как настроить и базу или докер образ с базой (крутое решение, но более сложное).
Ищу работу/стажировку
Хедхантер в помощь.
я просто в факе увидел на него ссылку и немного не понял. это бесплатные задачки или курсы какие-то за деньги?
Nfv gjckt
Выше обсуждалось.
а причём тут котлин? почти во всех вакансиях к андроид деву требуют жабу, так что её в любом случаи придётся учить
а что не так? мне просто интересна эта сфера. а еще я люблю деньги, я полагаю, что денег там не так уж и мало.
90% работы бестолковый CRUD.
Нет более лучшего места, чтобы возненавидеть программирование.
>интересна эта сфера
Школота нулевых зависала по вебу, так как было модно
Школота десятых по мобильникам, которые купили им родители.
Скорее всего выбор сделал ты не сам, а обстоятельства и хайп вокруг тебя.
Есть и вода, лол.
Нет, консоль это cmd.exe или bash. А IDEA запускает процесс и перенаправляет его потоки (stdin/sydout/stderr) в свой UI. Но консоли там нет.
Открой cmd.exe и запусти там, все должно заработать.
Сложнее, потому что вынесено на уровень типов (компиляции), а не магии
передачу текста в консоли осилил
Глава ИТ компании
Нахуй не надо.
Так сублимируй.
Лучше бы завезли template literals и именованные параметры в методах.
мокито с костылем хавает файнал классы, и тут хавать будет. не ссы
Тоже на это бухтел, в котлине изначально дата классы наследовались. Но со слов разраба, это породило тучу магических проблем и его прибили гвоздями.
Я надеюсь кто-то когда-то додумается избавиться от наследования в пользу миксин и полиморфизма только на интерфейсах. опять же, в котлине не осилили это из-за JVM
После твоего поста я понял, почему тырпрайз никогда не перейдёт на котлин. Потому что всё очень плохо с обратной совместимостью.
-Отличия rest и restfull.
-Формат данных Http методов. Заголовки, тело, довольно подробно спрашивал.
-SOLID.
-На каком уровне размещается бизнес-логика в MVC.
-Set и ArrayList, что быстрее, где и почему. Нахуй я вообще про сет вспомнил, язык мой - враг мой.
-Иерархия исключений. Ответ про проверяемые/непроверяемые не устроил, надо было полностью всё называть.
-Впервые был вопрос по Spring Secure.
Кто-нибудь запилите правильные ответы. От себя сходу могу так:
>Отличия 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.
Хз, не изучал.
Помощником джуна возмут?
>Хз, озвучьте список этих уровней.
Под какой из магических аннотаций бизнес-логику писать наверное. На контроллере!!!
>Знаю довольно подробно
А я вот не знаю и не понимаю зачем это помнить всё.
Со всей OSI у меня так, каждый раз я читаю эту хуйню, довольно подробно изучаю. А через неделю большая часть из головы вылетает за ненадобностью.
>Set
HashSet. Вопрос был просто о структурах данных, какие знаете, какие использовали. Я их перечислил, в конце назвал сет. О, сет, расскажите о нём, почему зачем именно его использовали. Ну и понеслась.
>Spring
По нему мало что спрашивают ждунов, просто дают тестовое и ебись как хочешь. Хотя один раз был чел, спрашивал чем там контроллёр от рестконтролёр отличается, транзактионал, контексты, всю хуйню, блядь.
Спринг про, которую в треде советовали, действительно годная книга.
Что на рынке спринга по джаве? Или для бекенда убегать в $php, а для IoT в C++?
Повторяющиеся звуки? Вряд ли.
>Ну и понеслась.
HashSet vs ArrayList это довольно популярный вопрос, так что все ок. Set быстрее офк.
Так ведь уже.
Как раз с обратной совместимостью все очень хорошо, но я считаю это плохо.
Сделали вам жабу 2.0
Зато ссылку не дали неадекватам.
Сап,начал учить жабу,прохожу курс в нетбинсе,подскажите,что значит эта ошибка и как исправит
warning: [options] bootstrap class path not set in conjunction with -source 8
1 warning
А чем это отличается от модной питон галеры, где в опенспейсе сидят люди и пишут бекенды для других людей?
Из знаний основы, массивы, двумерные массивы, ООП (первый раз его трогал), структуры данных.
Надо еще что-то теоретически подтянуть или уже наконец можно заняться реальной практикой?
Сам в джаве нуб, но попробую ответить.
>Отличия 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
>>На каком уровне размещается бизнес-логика в MVC.
Думаю, что вопрос был про архитектурные уровни, так что на уровне Model, т.е. в модели предметной области, она же Domain Model. Далее можно раскрыть, что там есть слой сервисов и слой собственно бизнес-модели. И если приложуха простая, допустимо всю бизнес-логику писать прямо в сервисах, но в целях масштабируемости лучше сразу работать в объектах предметной области, а в сервисах оставить минимально необходимую часть.
И в какой сфере джава более востребована, топ 5 кто-нибудь назвать сможет +-? Желательно линк на какой-нибудь ресерч, ну или ваше скромное ИМХО
в новом треде однозначно больше применяют
Правильно ли я понимаю, что, по сути, в бекенде все сводится к написанию API? Ну и интеграции с другими API + логика обработки?
Ну выходит что можно поделить на две части, работа с БД, и реализация API
Если мы не берем архитекторов, которые решают саму структуру приложения, а только девелоперов.
в современном Java Backend Development*
> логика обработки
В тырпрайзе это самая большая часть. Дохуища бизнес-логики, а апишка - всего лишь сравнительно простой фасад для этого.
Да все, я разобрался, там если версию языка в настройках компилятора поменять, то можно лямбды закидывать. И еще я узнал об этих анонимных классах. Но все равно такое себе
Напугал тем что я не понимаю нахуй их смысла епт. Меня напрягает когда триллион классов между собой сплетены непонятным образом, иформация протекает через сиксильярд методов, а происходит всего лишь пук.
>IoT
Это какой-то форс, про который уже лет 5 говорят, что вот-вот выстрелит?
Имхо, никакого IoT не случилось и вряд ли предвидится в будущем
Что-то так и не нашёл в гугле.
Вы видите копию треда, сохраненную 19 мая 2020 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.