Это копия, сохраненная 16 ноября 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Q: Поздно ли вкатываться в айти в 20/30/40/100 лет?
А: Нет, не поздно.
Q: Cобираюсь учить джаву по 2/5/20 часов в день. За сколько дней я выучу достаточно, чтобы зарабатывать фрилансом?
A: На джаве фриланса нет. Хочешь фрилансить — дуй в ПХП/раби/1С тред.
Q: Хули все книги на английском?
A: Без английского ты не нужен и можешь смело идти нахуй. Ну или в 1С-тред.
Q: Что скажете за джавараш?
Если вкатываешься с нуля, то можешь написать пару "хеллоу ворлдов" до 10 лвла. Дальше курс рассчитан на ленивых и не умеющих читать книжки людей. Количество говнокода зашкаливает, годных задачек пару штук на весь курс. В любом случае решать тебе.
https://github.com/qqqlll/Java-Thread/wiki
Есть массив [A, B, C, R]. Нужно в цикле for удалить из строки все эти символы, представленные в массиве. Как это решить?
Берешь и удаляешь. Ты хоть пробовал это делать?
Загоняешь символы из массива в сет. Перебираешь все символы из строки и сверяешь с теми, что лежат в сете методом exists. Если такого в сете нет, тогда загоняешь символ в какую-нибудь коллекцию (список). В конце создаешь строку из коллекции.
Ну-ка кто тут шарит в джаве 2018. Поясните за слог в этом коде, все красиво написано?
мимо учу жабу
Это код из времен динозавров, только continue к метке внещнего цикла не хватает. Можно написать короче и красивше. А так с ним все ок.
for (char ch : array) {
str = str.replaceAll(String.valueOf(ch),"");
}
да и вообще кажется ему надо в одном цикле
зачем ты final сунул в цикл???
Красава, наплодил мусорных аллокаций и рад, ты же понимаешь что на каждый ебаный replaceAll ты создаешь новый регекс, котоырй компилируется, потом создается новая строка пиздец.
Чем тебе мешает final? Манечка у меня такая везде final пихать.
return str.replaceAll(String.format("[%s]",String.copyValueOf(array)),"");
давай-ка на пенсию ,дедуль
ты про ту, которая в теле блока if? вопрос как раз в том, как ее передать за пределы блока, чтобы метод возвращал стринговое значение
Видимость блоковых переменных - блок. Ты из JS что ли пришёл? Обычно присвается дефолтное значение (пустая строка, null). Затем в зависимости от условий блоки меняют его. Можешь return в блоке писать также, обычно это для валидации используется.
Вангую что ты ебанный байтоеб, который за пол байта убить готов. Маня, ты бы еще шоты заюзал. Код нечитаемое и некрасивое говно.
>Рряя нечитаемое
>ррряяя некрасиво
Ну ты загляни в ApacheCommons, все то же самое.
А от short'а выигрыша не будет, я думаю ты и сам знаешь почему.
Да знаю, один хуй 4 байта.
Одна платная с разнообразными фишечками для тырпрайза, а другая бесплатная.
Если начинающий, хватит бесплатной.
Идеей пользуются все сейчас в снг. В пиндосии почему-то предпочитают эклипс.
Проходил практику во время обучения, которая занималась веб-разработкой. На маленькую группу (3 человека) забили хуй, в итоге знаний кукиш. Старался время зря не терять, подучил Джаву почти что на уровне своего любимого шарпа. Что-то да выхватил из конторки где практиковался.
И вот ищу работу, проходил недавно собеседование дали тестовое задание связанное со спрингом, рестом, джисыном, jdbc и прочее. Сказали реализовать вот так и так, всякие апи и прочее. А я вообще мало что в этом понимаю. Я еще более-менее понял этот model, DAO, repository, как БД подключить, скл запросы и прочее, но мне совершенно не понятно как это все перенести на веб. Все эти рест-контроллеры и прочая мишура непонятна. Нужно сделать вебформу, все это связать, сделать красивый интерфейс. Если внутри программы я более менее понял как и что, могу там через консольку вывести и прочее, то как это сделать чтоб в браузере страницу открыл, тыкнул оно все пошло — хз.
Я чего хочу от местных гуру — помощь в нахождении нормального справочного материала. Я на всяких спринг.ио смотрел примеры, но они до жути простые и не сочетают в себе комплексных решений. Кучу видосов на ютубе от индусов разной степени понятности смотрел, но либо используют устаревшее "технологии", либо совершенно что-то не то. Пока нигде не встретил решения как это все в веб перевести. Уже думаю покупать курсы у америкосов, но они под 200 бачей, у меня денег вообще мало.
С горя думаю уйти в 1С, получить какой-то ебучий сертификат и батрачить эникейщиком либо в ТП уйти. Пиздец какой-то, я отчаиваюсь, до сдачи тестового задания три дня осталось, а спросить вообще не у кого, у меня из группы только два челика по специальности пошло, и то — 1С.
Прошу прощения за кучу текста и сумбурные изъяснения...
Проходил практику во время обучения, которая занималась веб-разработкой. На маленькую группу (3 человека) забили хуй, в итоге знаний кукиш. Старался время зря не терять, подучил Джаву почти что на уровне своего любимого шарпа. Что-то да выхватил из конторки где практиковался.
И вот ищу работу, проходил недавно собеседование дали тестовое задание связанное со спрингом, рестом, джисыном, jdbc и прочее. Сказали реализовать вот так и так, всякие апи и прочее. А я вообще мало что в этом понимаю. Я еще более-менее понял этот model, DAO, repository, как БД подключить, скл запросы и прочее, но мне совершенно не понятно как это все перенести на веб. Все эти рест-контроллеры и прочая мишура непонятна. Нужно сделать вебформу, все это связать, сделать красивый интерфейс. Если внутри программы я более менее понял как и что, могу там через консольку вывести и прочее, то как это сделать чтоб в браузере страницу открыл, тыкнул оно все пошло — хз.
Я чего хочу от местных гуру — помощь в нахождении нормального справочного материала. Я на всяких спринг.ио смотрел примеры, но они до жути простые и не сочетают в себе комплексных решений. Кучу видосов на ютубе от индусов разной степени понятности смотрел, но либо используют устаревшее "технологии", либо совершенно что-то не то. Пока нигде не встретил решения как это все в веб перевести. Уже думаю покупать курсы у америкосов, но они под 200 бачей, у меня денег вообще мало.
С горя думаю уйти в 1С, получить какой-то ебучий сертификат и батрачить эникейщиком либо в ТП уйти. Пиздец какой-то, я отчаиваюсь, до сдачи тестового задания три дня осталось, а спросить вообще не у кого, у меня из группы только два челика по специальности пошло, и то — 1С.
Прошу прощения за кучу текста и сумбурные изъяснения...
Не совсем, зачем тебе try если кидаешь эксепшн, тогда правда закрыть нужно ридер.
Ну и disconnect вызвать надо.
Спринг (бут) сервер "публикует" API через HTTP.
Клиент (браузер) к этому API обращается через JavaScript.
Т.е. тебе нужно, чтобы твоё приложение что-то делало при получении API-запросов через HTTP - GET, POST, PUT, DELETE. Можно обойтись GET (получение данных) и POST (запись).
REST-контроллер и обрабатывает эти запросы, по ходу дела вызывая методы сервисов доступа к данным, и отдавая ответы.
Сам доступ через HTTP (веб) Спринг делает за тебя, на основе аннотаций.
Курсы покупать не надо.
Надо сначала делать простые примеры с сайта спринга и из книжек.
За три дня ты ничего не сделаешь.
Если нет денег - иди хоть в 1С, хоть куда.
В свободное время - изучай эту тему, если интересно, и хочется чего-то большего.
Кстати, в 1С тоже есть веб-сервисы и рест-контроллеры. И идея там примерно та же, что и в Спринге, в общих чертах. Оно везде примерно одинаково.
>зачем тебе try если кидаешь эксепшн, тогда правда закрыть нужно ридер.
Ну да.
А чтобы его гарантированно закрыть - нужен try-finally.
В данном случае у него try с ресурсом, что ещё проще.
мимо
Здравствуй!
Большое спасибо за небольшое пояснение.
Посоветуй пожалуйста литературу.
И, если не трудно (можешь конечно не отвечать) овтеть на пару вопросов, пожалуйста:
1) Нужно ли под каждую "модель" данных свой REST контроллер писать?
2) Тут, возможно пробел в теории по Java, но всё же вопрос - для чего пишется Interface прослойка в сервисах в которой объявляются пустые методы? Затем в этом же пакете пишется класс который, как я понял, расширяется используя тот самый интерфейс (который я воспринимаю как пустышку).
3) Смысл DAO интерфейса, если он идентичен Сервисному? Делал всё по ютуб примеру...
4) Как сделать "оболочку" в браузере всего этого? Я смутно припоминаю что создавались *.html'ки с .JS'ом которые как раз и связывали REST-контроллеры со всем остальным. Там, вроде бы ещё Thymeleaf замешан был. Точно помню, что присутствовал пакет templates в разделе ресурсы со всем этим содержимым, а как дальше шло дело не помню/не знаю.
5) Правильно ли я подключаю БД, используя spring-data-jdbc, через указание путей и прочего в application.properties файле?
Прошу прощения, если вопросы звучат некорректно, я сейчас по 12-15 часов безвылазно за компьютером сижу, у меня уже просто каша в голове.
Прилагаю скрины Сервиса, ДАО и их "реализаций".
С одним скрином ошибся, добавляю...
Огромное С п а с и б и щ е за такой подробный ответ!
Трай с ресурсами я использовал чтобы коннекшн сам закрылся, разве это не так работает?
1) Не обязательно. Зависит от приложения.
2) Да, это пробел.
Интерфейс - это именно интерфейс. Чтобы клиентский код работал с ним, не задумываясь, как это реализовано. А реализацию можно менять (напр. для тестирования).
Также (в спринге и не только) реализация может быть сгенерирована автоматически при выполнении программы.
3) Это в данном частном случае так.
А вообще, сервис - это бизнес-логика, DAO - низкоуровневый доступ к данным.
4) Это в JS тред (если на клиенте, в браузере).
Если - то лучше всего делать на Vue.js (на React сложнее и дольше). Вообще, фронтенд - это отдельная тема, нормально есть разделение труда фронтенд/бэкенд.
Если на сервере (если это не запрещено условиями) - можно использовать Spring MVC.
Это в простых случаях лучше и проще, чем ебля с JS.
Собственно, Thymeleaf - это оттуда.
Можно даже и просто JSP.
5) Не знаю, я его не использую. Ничего плохого в этом не вижу.
Литература: allitebooks.com, scanlibs.com
Поиск по слову Spring, Spring Boot
Смотри рейтинг и отзывы по книгам на Amazon (искать по ISBN).
На scanlibs.com уже есть ссылка Reviews для каждой книги.
Естественно, в случае Spring MVC рест-контроллеры не нужны, т.к. браузер получает уже готовый HTML. Т.е. нужны просто контроллеры.
Т.е. контроллер в этом случае не передаёт "сырые" данные клиенту. Данные из него используются тут же, на сервере, и сервер потом отдаёт клиенту уже готовую страницу.
Можно сделать и то и другое одновременно.
Например, для браузера - MVC, для мобильных приложений - REST.
и правда. он же закрывает ту штуку, которую ты объявляешь в скобках. как тогда лучше гарантированно закрыть коннекшн?
String title = el.getElementsByTagName("title").item(0).getTextContent();
при условии, что я точно знаю, что в el есть 1 единственный элемент с тегом "title"?
2) как преобразовать строку "Mon, 17 Sep 2018 20:12:38 +0300" в объект класса Date? пытаюсь:
DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
Date date = format.parse(dateString);
но нихуя не получается, выдает ParseException: Unparseable date
Добавь ещё блок finally - он будет вызван после закрытия ресурсов в скобках в try.
И в нём уже вызывай disconnect().
https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html
Note: A try-with-resources statement can have catch and finally blocks just like an ordinary try statement. In a try-with-resources statement, any catch or finally block is run after the resources declared have been closed.
как препод скозал так и делою.
так, со второй хуйне понел.
пытаюсь тут понять как java работает с JS и почему в вакансиях иногда требуют сам я только со Spring MVC дело имел
сейчас попытаюсь проанализировать на примере бланка для регистрации
вобщем поправляйте если что не так
1)у нас есть некоторое View JS+html+css я захожу в броузер вбиваю адрес и отправляю запрос после чего джава сервлет выдает мне форму
2) я ее заполняю жмакаю на кнопку и летит уже json в реквесте который джавка принимает и парсит json и в БД
3) потом View должна обновиться допустим написать мое имя
для этого джавка должна выкинуть мне новую форму с переданными туда параметрами и вот как это делается хз это ж у нас не jsp ???
вот собсна и вопрос как это делается просто через REST ?
>для этого джавка должна выкинуть мне новую форму с переданными туда параметрами
Нет.
Через REST ты получишь (как правило) JSON - просто данные в формате джаваскрипт. И затем уже джаваскрипт в странице должен тебе всё нарисовать.
Для простоты - предположи, что исходная страница у тебя вообще статическая, и джава сервер в её создании просто не участвует (часто так и есть).
Так что пиздуй в жс тред - учить Vue или React, лол.
Можешь ещё погуглить using spring with react.js.
На самом деле, для начала можно вполне обойтись jQuery, и просто менять отдельные части страницы по результатам запросов.
В реале многие "настоящие" системы так и делают, включая банки, лол.
Но, двачерам-прогрессистам это не по нраву, они считают, что jQuery не нужно.
Можно также передавать с сервера уже нарисованные куски HTML (просто как строки), и заменять ими исходные куски страницы (см. выше про jQuery). Так делают в некоторых случаях.
То же самое.
Получаешь массив данных и рисуешь таблицу в HTML с помощью JavaScript, тем способом, каким умеешь.
Почитай про Vue.js, например - рендеринг списков.
Есть и специализированные решения для этого:
https://datatables.net
В мануале см. Ajax.
Давайте посремся за rx vs coroutines что ли. Что сами используете, на что мать посадите, функциональщина в глаз или императивщина в жопу раз?
Они для немного разных вещей, с помошью rx можно впринципе сделать все, но это иногда оверкил. С помошью корутин тоже как бы все можно сделать, но некоторые вещи которые на rx хуяк-хуяк уже будет сложней сделать, можно со временем это изменится но пока нет, всетаки каналы не полная замена для rx.
Не ищи серебрянных пуль хули.
> Они для немного разных вещей
Ну здраститя. Для асинхронности и параллельности. Ну и чтобы функционально все было в случае с rx (хотя можно и просто для функциональных чейнов юзать).
Везде про корутины говорится, что не нужен специальный синтаксис и типа пишите в обычном коде, но ведь абсолютно нихуя не мешает через rx стартануть тред на нужном тредпуле или шедулере. А suspendable computations в итоге упирается в блокирующую не suspendable функцию и корутина заблокирована и нихуя никаких отличий в лучшую сторону от rx, где вместо старта треда и дохуя корутин просто стартует один тред.
rx хоть нормально в нонблокинг умеет и нормально в параллельщину (хотя с этим скорее к reactor).
Извиняюсь, имелось в виду, я в основном видел, чтобы сервера писали на Джаве ил энтерпрайзоту. Кроме энтерпрайзоты и майнкампфа что-нибудь осталось?
Ну, десктопные программы для конечных пользователей не пишут, практически (не считая корпоративного энтерпрайза).
Однако, IDE пишут.
Есть ещё какая-то популярная утилита для работы с картинками, забыл название.
Ну, и Андроид.
Я вообще Акку юзаю. Она кластер зуется, хотя отсутсвие backpressure иногда доставляет неудобства.
Если мне по жиденкому сходить с запросом мне не нужен rx, о если у меня цирк с конями где данные рассылаются-мержаться из разных источников по туевой хуче подписчиков с кучей наворотов мне корутины тоже не сильно помогут. Под этим я и подразумеваю разные вещи. Я вообще на ведре работаю потому вменяемо скзать что тебе там на беке будет лучше не могу.
Сап, программач. Помоги!
Как адаптировать этот алгоритм под List<String>? (в котором будут содержаться числа)
ой, я имел ввиду, что в файле будут лежать числа, а мы будем их считывать как String
Я тебе не про телефон. А про сим-карту.
Почему ты считаешь, что джава не может в хороший этерпрайз?
Тебе сколько дней осталось?
И сколько блеадь давалось?
Что ты всё это время делал?
Хуи дрочил пидор?
Какой язык ООП выбрать, Java или C#, чтобы не остаться за бортом через 3 года?
Пояснить можете + и -?
Спасибо
Посоветуйте легковесный фреймворк для внедрения зависимостей. Пробовал разобраться в dagger 2.17 по статье с хабра, но необходимый в примере класс ObjectGraph не нашелся, и я бросил. Ковыряю дальше спринг.
>Ковыряю дальше спринг.
Всё правильно делаешь.
Спринг (бут) достаточно легковесный.
И, к тому же, широко используется.
Годится и для бека и для десктопа.
Гуглопарашу не рекомендую.
Learning Java Through Games:
https://scanlibs.com/learning-java-through-games/
More Do-It-Yourself Java Games: An Introduction to Java Graphics and Event-Driven Programming (Volume 2), 2nd Edition:
https://scanlibs.com/more-do-yourself-java-games-vol-2/
Вторая - про Swing GUI.
Ломаю голову, что за фигня...
Установил эклипс. Скачал библиотеку telegrambots-4.1-jar-with-dependencies.jar
Создал новый проект TelegramBot
Через свойства добавил ее в проект, теперь в Referenced libraries есть этот jar файл.
Пишу import org.telegram.telegrambots.api.methods.send.SendMessage;
Получаю The import org cannot be resolved
Нажимал десять раз уже clean project, перезапускал эклисп, обновлял, пробовал создавать папку libs внутри проекта и копировать библиотеку туда - но итог один, не хочет импортировать.
Подскажите, что я не так делаю то? Гуглил гуглил, нихрена не нашел.
По-новой все создал, руками тыкал-тыкал и получилось.
Теперь ебусь с ошибкой Error: Could not find or load main class TelegramBot
Caused by: java.lang.NoClassDefFoundError: org/telegram/telegrambots/bots/TelegramLongPollingBot
если религия не позволяет использовать спринг - увязывай зависимости ручками - прочувствуешь, как работает DI. В спринге и любом другом фреймворке много свистелок-перделок, которые отвлекут и запутают тебя, если ты Novichok.
в принципе, да. Спринг норм для di. Но спринг бут не надо советовать, имхо. Это уже не про di, а разбухшая связка кучи фреймворков с магией на стероидах. Котора по стечению обстоятельств подходит для создания микросервисов. Если человеку нужен просто di, то это оверкилл.
Всё кроме идеи говно /thread
Чтобы мавен работал обязательно создавать мавен-проект? Или можно pom.xml добавить и все заработает?
Gdx
>игры на свинге
На AWT:
http://www.java4k.com/
https://github.com/glegris/Java4K/tree/master/src/java4k
Лучше создай мавен проект что бы тупорылый эклипс не запорол.
Посоветуйте книгу о создании хорошей архитектуры приложений, размером до 200 страниц, чтобы там была самая суть, необходимая для работы на первое время в типичной шараге.
Он для обучения джаве собирается игры писать. С AWT все просто: графика, звук, управление есть, а для начала ничего больше и не нужно.
Архитектура и типичная шарага это понятия несовместимые. Так что просто забей, понимание нормальной архитектуры принесет тебе только боль. Да и без опыта ты все-равно будешь латать дыры и поддерживать кусок легаси-говна.
>Да и без опыта ты все-равно будешь латать дыры и поддерживать кусок легаси-говна.
Я работаю и хочу развиваться, поэтому и прошу не слишком толстую книгу об архитектуре. И я не латаю дыры, а разрабатываю приложения, которые не нравятся мне архитектурно.
Clean Code, Clean Coder для начала. Если сможешь понять о чем Дядюшка Боб говорит, тогда можно продлжать разговор.
Причем тут проект идиотина? Я спрашивал о другом.
>Clean Code, Clean Coder для начала
Мне надо не для начала. "Чистый код" и "Экстремальное программирование" я уже читал.
Она немного для других целей чем корутины и RxJava. Т.е. если последние это асинхронное выполнерие одного запроса, шаг за шагом.
То Акка это фигачим большое количество сообщений в систему и оно как-то там внутри процессится. Акка более низкоуровневая штука, ты сам думаешь над роутингом сообщений, над размерами пулов, можешь распределять нагрузку по узлам, гибко обрабатывать ошибки и падения акторов. Но это все требует усилий со стороны разработчика.
Лучшая IDE для джавы (и не только) - IDEA.
Студия и рядом не стояла.
Чтобы было понятно - это та же контора, которая делает ReSharper, без которого студия и на хуй не нужна.
С Dependency Injection контейнера.
Это и есть, собственно, Spring.
Остальное - навертели в процессе.
Рекомендую книжку Spring In Aciton, 4-е издание.
http://www.allitebooks.com/spring-in-action-4th-edition/
Оно лучше 5-го в том смысле, что там подробно описана именно суть спринга, а не новые модны фишки.
Впрочем, 5-е ещё не вышло, оно пока в MEAP.
Ещё есть русский перевод 3-го издания, но это только если с английским проблемы, ибо оно совсем старое.
И да - Spring - это чистая Java. Чище некуда.
Потому что Js конская параша. Каждый пишет свой фреймворк под одни и те же цели, но со своими костылями.
Если ты всё делаешь канонiчно (немутабельные сообщения и пр.), получаешь, к примеру, кластеризацию практически из коробки. Можно нарушать их базовые паттерны, но с умом. Если кластер не предвидится, не думаю, что стоит лупить из пушки по воробьям.
в пределах трёх лет будет жить и джавка, и сишарп - однозначно. Не знаю, как щас, но лет 8 назад экосистема джавы (фреймоворки, тулы...) была побогаче, при том, что в сишарп сам язык был слегка продвинутей. Последнее время мне кажется, что важнее экосистема и коммьюнити, чем красота языка. Но это холивор.
Лично я бы хотел:
1. Template literals как в JS. var string = `This is a property of some object: ${someObject.someProperty}`.
2. Возможность использовать эмоджи в названиях классов, методов и переменныъ.
БЛЯТЬ, сука стрелочка, какая в пизду стрелочка сука, я поравался.
Попробуй тут http://www.oracle.com/technetwork/java/javase/tech/index-jsp-136373.html
Но вообще самые-самые кишки это сорцы openhdk
Сурсы можно найти где угодно и на каком угодно языке. Я хочу гайд по тому как она написана и как работает.
Тогда тебе та ссылка что я скинул + спека: https://docs.oracle.com/javase/specs/jvms/se10/html/index.html
Если тебе нечего сказать по делу, то лучше просто промолчать и не позориться. Ты выставляешь себя идиотом)
Это нормальная ситуация на проекте, когда тимлид заставляет всю команду прочесть спеки по Java и JVM, а затем устраивает экзамен, и всех, кто не смог ответить на его вопросы лишаются премии и в последствии попадают в список на увольнение?
Нет, это ситуация сгорающей фирмы. Ищи новую работу пока что, на этой либо вылетишь, либо скоро сама закроется.
Хотя нет, это я слишком скоро. Возможно тимлид просто дебил.
Спасибо за помощь.
Лол, чем занимаетесь? Я понимаю такое может быть нужно если разрабатывать свою кастомную версию жвм, или какая-то очень еба-нагруженная ситема, но нахуя это обычным макакам - вопрос.
Скорее всего тимлид поехал кукухой, либо ему дали разнорядку ужать штат.
Ололо хайлоад проект где люди не понимают зачем нужен постраничный доступ к данным и делают findAll, а затем выплевывают все данные из базы на клиентскую сторону.
Лично я всегда котирую Коудворс. Но тебе конкретно нужен Hackerrank. Там мало задачек но все по теме. Пройди все задачки на нем и начинай изучать Спринг, если прошел курсы и читал книги до этого.
Хуй знает. Это у тимлида нужно спросить.
nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.lang.String com.locoface.central.dao.UsersRepository.findTokenByCredentials(java.lang.String,java.lang.String)
Метод:
@Query(
"SELECT u.token FROM users u WHERE u.username = :uname AND u.password = :upass"
)
String findTokenByCredentials(
@Param("uname") String username,
@Param("upass") String password);
А что это у тебя Gender enum, а? Сделал бы boolean сэкономил бы память, епта.
{"timestamp":"2018-09-22T14:23:05.743+0000","status":401,"error":"Unauthorized","message":"Unauthorized","path":"/oauth/token"}.
В логах так же есть такое:
2018-09-22 20:23:05.735 DEBUG 8648 --- [nio-8080-exec-5] o.s.b.a.audit.listener.AuditListener : AuditEvent [timestamp=2018-09-22T14:23:05.735Z, principal=anonymousUser, type=AUTHORIZATION_FAILURE, data={details=org.springframework.security.web.authentication.WebAuthenticationDetails@b364: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: null, type=org.springframework.security.access.AccessDeniedException, message=Access is denied}]
Классы конфигурации:
https://pastebin.com/WDe20TZa
Код с клиента:
https://pastebin.com/j3rkdG9e
Когда получаю токен с помощью Postman, всё работает нормально. Что я делаю не так?
define расти
Проблема была в том, что я неправильно записывал данные в тело запроса. Данные надо было передавать в виде строки типа username=username&password=password, а у меня передавался JSON. Установил библиотеку query-string, написал
data: queryString.stringify({
grant_type: 'password',
username: username,
password: password,
client_id: 'web_client',
client_secret: 'secret'
})
И теперь всё заработало.
незачто
Анон, есть два стула:
на одном JavaEE + Spring
на другом - C# + ASP.NET
Какой сам выберешь, какой собственно имеет смысл выбрать в 2018?
1. Что лучше почитать Хортсманна или Шилдта? (на инглише) Что-то не могу 2ую часть Хортсманна найти, а вот Шилдта сразу нашел.
2. В чем отличие платной идеи, от бесплатной? Я по чарту вообще не понял зачем мне платную брать.
3. Джаву хочу изучать, чтобы потихоньку вкатываться в автотестирование, а то боюсь через 3-5 лет без работы останусь вообще. (Нау овер 6 йеарс оф qa monkey экспериенс).
Может будут какие-нибудь советы по этому поводу?
Планирую прочитать какую-нить книгу, а потом садиться решать задачки из этого списка, так "по верхам"
https://eax.me/programming-language-learning/
Потом уже изучать селениумы и пр.
Ващет использовать boolean в таких случаях моветон, потмоу что потом сложней расширятся, тем более true/false не передают всю информацию
Подскажите какие книжки почитать, чтобы написать простой скрипт для плагина Greasemonkey/Tampermonkey.
Нужно на сайте исправить некоторые ссылки, которые отображаются на странице.
https://сайт.com/МУСОРКОТОРЫЙНУЖНОУБРАТЬ=НУЖНАЯИНФА
Чтобы получилось такое:
https://сайт.com/НУЖНАЯИНФА
Таких ссылок на странице очень много, вручную постоянно ковырять неудобно(
забыл написать, что мусор в ссылке всегда одинаковый. и все ссылки однотипные.
Знакомое тестовое
Написать программу, в которой будет две функции: добавить в БД строку и
вывести все строки на экран. БД - одна таблица с двумя колонками: id и
name. Соответственно будет два графических интерфейса:
- Интерфейс добавления строки: поле ввода имени и кнопка Добавить.
- Интерфейс вывода строк на экран - таблица с двумя колонкам: Ид и Имя. Над таблицей
должен присутствовать фильтр для поиска в таблице.
В качестве БД использовать MySQL.
В качестве фреймворков - желательно (но не обязательно) spring. Для доступа
к БД - jdbc (spring-jdbc).
По графическим интерфейсам: желательно, чтобы интерфейсы были сделаны с
испоьзованием паттерна MVC (spring-mvc приветствуется).
Алсо, подумываю перкатиться в JS\PHP из-за низкого порога вхождения.
PHP нихуя не просто, особенно если учитывать что там надо обязательно знать минимум 1 фреймворк.
Обосцыте долбоёба. Пусть идет бейсик учить
Так и в жабе ты без фреймворков хуй с горы, разве нет?
Что там может быть не понято?
Набрал код из примеров (обязательно ручками а не копипастой, пусть пальцы привыкают)- запустил, проверил результат, изменил пару переменных, посмотрел результат.
Имхо начинать понимать погромирование нужно с сишки обычной, без крестов, и компилить в консоле под линупс.
Нужно понимать что такое указатели и как работать с памятью даже если ты будешь потом веб макакой.
Типы переменных, массивы, указатели, работа с файлами и строками
Дальше структуры и алгоритмы обработки данных.
Сортировки, списки/очереди/стеки, векторы/матрицы/деревья.
Это гавно на первом курсе вузика даже самые отпоротые дебилы могут выучить.
Тыж не дебил?
Поковыряем узнаем
Извини, но если ты думаешь, что для того, чтобы доказать, что ты достоин получить работу, знаний одной Джавы часто будет недостаточно) Нужно ещё знать ЖС на уровне + один из трёх популярных фреймворков как минимум))
Поковыряй в сишке указатели и работу с памятью.
Вот чтоб знал что такое утечка памяти и как её избежать.
Пригодиться 146%
Скорее всего под утечкой памяти в данном контексте подразумевается несвоевременное освобождение памяти - зря занятая память как например в коллекции, когда элемент а уже нет, но он все равно остается в коллекции и потмоу сборщиком не убирается. Или незакрытый поток/соединение/курсор/файловый дескриптор.
> Или незакрытый поток/соединение/курсор/файловый дескриптор.
Есть же try-with-resources специальной для такой хуйни.
Я на работе только начал 8 по вене пускать месяц назад.
Нет, это ты в своем легаси тырпрайзе закопался. Современные разработчики могут и в задний конец (котлин, реактивщина, rx, reactor, корутины, неблокирующее api, nosql и т.д.), и в передний (простая дрисня на вью жс или реакте, на котлин жс в крайнем случае), и в микросервисы, и в девопс, и даже в ML подсекают и могут написать модель решения задачи двух стульев на коленке. И этого никого не делает ни фронтендером, ни фулстаком.
>>69725
Вали нахуй из сбертеха, делать там нехуй.
>>69734
Ошибаешься. Описываемое явление это как раз посттырпрайзное развитие разработчиков.
Читай шапку ПИДОР
Не повторит ли жава с двумя несовместимыми версиями (1.8/9+) путь питона с его версиями 2.X/3.X?
VM по любому будет зависеть от пользователя/сервера. Будто машин не десятки помимо оракловской.
Это понятно. Меня волнует (1) качество этих VM и (2) разделение сообщества на java 1.8/9+, которое наблюдается уже сейчас когда некоторые библиотеки не работают или плохо работают на новых джавах из-за жигсо. Я-то думал, что все ждут выхода LTS и хотят сразу мигрировать на 11 версию, а оказывается бесплатные LTS всё, а значит и миграции возможно всё.
Нормальное качество, если тебе не нужна экзотика, и опенждк вполне нормальная теперь.
Время всё расставит по местам. 1.8 медленно вымрет, а библиотеки на 10-ку перепишут. На 11-ю естественно перекатят только единицы. Может машину ещё лучше кто напишет, хуй знает.
> а библиотеки на 10-ку перепишут.
Шта? 10 уже сегодня протухает и её никто поддерживать не будет, потому что это не LTS. Кто-то там кукарекал, что будет поддерживать ещё и 9-ю версию, но про 10 вообще никто ничего не говорил.
Что, опять наебалово для хомячков?
Держи в курсе.
Каков вопрос, таков и ответ. Тем более учитывая, что простые вещи в большинстве случаев подробно разобраны в доках и туториалах. А в случае сложных вопросов часто оказывается, что вопрощающие хотят странного, опять же зачастую из-за недостаточного знания основ.
В основе ноль и единица. А как только пытаешься прочитать очередной говноучебник "с которого все начинали" то сразу натыкаешься на какие-то прыжки от элементарного до сложного, и все вопросы рассматриваются на одном-двух примерах, оторванных от всего контекста программы - соответственно подводные камни в связке с примером не рассматриваются вовсе.
properties.load(new FileInputStream( что здесь правильно написать ?));
Просто на первый взгляд мне кажется пиздец запутанным то, что есть всякие методы вроде getRealPath(), getResource() и т д.
тупых вопросов по жабе нить иди
Довольно быстро, мне кажется, если тебя интересует за сколько ты запомнишь в каких пакетах находятся стримы, или где коллекции и какие они. Но в чём фишка? Какая разница?
>Шта? 10 уже сегодня протухает и её никто поддерживать не будет, потому что это не LTS. Кто-то там кукарекал, что будет поддерживать ещё и 9-ю версию, но про 10 вообще никто ничего не говорил.
Какая разница, если для коммерческих организаций джава будет платной?
Это пиздос вообще. Скриньте, что джава спустится с орены тиобе и соснет хуйца.
>Какая разница, если для коммерческих организаций джава будет платной?
Ну охуеть просто, щас если мелкомягкие подскочат кабанчиком и запилят полностью совместимый .НЕТ для линупса, тогда ж джава будет ВСЁ
Так мелкомягкие уже кабанчиков подскачили и выпустили котлин. Он работает на 1.6 джаве и уже дает пососать.
> Какая разница, если для коммерческих организаций джава будет платной?
Ты наркоман? Платной она будет если ты захочешь получать обновления от оракла больше чем стандартный 6-месячный срок. Т.е. стоит выбор: либо обновляй жяву раз в пол0года, либо плоти.
Впрочем, будут VM от других разрабов (RedHat, Azul и прочие), основанные на openjdk с бекпортами важных багфиксов.
https://itnext.io/java-is-still-free-c02aef8c9e04?gi=bcdc1750af1e
>>70256
Это не мелкомягкие, а руссичи из JetBrains его сделали.
месяца джва постоянного написания кода со всякими коллекциями, утилитарными классами из java.lang, стримами, каким-нибудь говном из пакета concurrency и будешь шарить в том что где и как находится. Но ЗАЧЕМ?
Удивился, что, например в таком небезызвестном языке как Джава, если вам понадобится префиксное дерево, для хранения списка имейлов, то вам придется всё это писать под себя, самописно.
Лол. TreeSet, TreeMap.
А в чем отличие реализации дерева на джаве от плюсов напрмиер, кроме ебли с поинтерами (выделение/удаление)?
> TreeSet, TreeMap.
Это не trie. Реализация trie есть в apache commons: https://github.com/apache/commons-collections
>Лолка, ты б сперва узнал что такое префиксное дерево.
Ну я отвечал на "про деревья и их реализацию". Префиксному как мне кажется не место в стандартной либе.
>Зачем тебе оно для хранения имейлов?
Для более быстрой навигации и поиска,
этоя как пример привел, а вообще нужно изучить эту тему
Префиксное дерево же хорошо, когда есть набор строк и среди них нужно найти нужные очень быстро
вобщем есть задача скоммуниздить базу данных с резюме у hh ru
есть вариант купить там прем аккаунт какой-то и дадут доступ на 24 часа НО только на мой мухосранск а мне надо по всей державе так что ето не вариант
на худой конец смогу просто довольствоваться колвом вакансий там показывают но прям ХОЧЕТСЯ всю БД
нужны ваши предложения
Мне кажется что тебе нужно смотреть в сторону готовых БД, если речь идёт об ынтерпрайзе. Засовывание кучу емейлов в память, чтоб потом среди них что-то очень быстро искать нужно разве что для каких-нибудь научных расчётов.
Устраиваешься работать в хх и пиздишь базу / платишь за пиздинг тому кто там работает.
Но ты просто диванный кукаретик, поэтому ты сосешь или идешь перебирать гуиды и атомы во вселенной.
>платишь
хаха спасибо
там доступ к бд на 7 дней стоит 21к которые мне оч нужны а ты предлагаешь дать 100 рублей их вахтерше иди нахуй
и причем тут атомы?
Потому что я могу. А почему бы и нет?
getClass().getResourceAsStream("/app.properties")
половина базы скрыта и надо покупать доступ
Goto — это анти-паттерн и его в любом случае нельзя использовать, даже если язык это позволяет. Пошёл нахуй.
Язык-то действительно убогий, но далеко не потому, что твой конпелятор не может переварить гото.
> Ты в курсе, что твои неготофункции на ассемблере выполняют по тысяче гото, ебанутый?
Вся суть языка высокого уровня - это абстрагировать эти (без)условные переходи более удобными конструкциями.
> По-твоему это норма, что я не могу гото в андроид студио?
В жаве вообще нет гото как такового (хотя слово goto и зарезервировано). В жаве вместо гото можно использовать break с метками. Вот так:
https://ideone.com/dP2qKT
Хуй его знает что ты там пытаешься сделать.
Сабж: https://ideone.com/f9CBUb
Где-то здесь if(f.func(vals, v)) count++; вместо f.func() в майне подставляется/вызывается
boolean sameTemp(HighTemp ht2)
{ return hTemp == ht2.hTemp; }, где
hTemp - переменная вызывающего класса(объекта), ht2.hTemp - очевидно переменная параметра.
Как программа решает вот здесь f.func(vals, v), какой объект класса vals или v вызывающий, а какой из них параметр, если в реализируемом интерфейсе это просто 2 параметра, никак между собой не связанные?
boolean func(T v1, T v2), какой из параметров в методе sameTemp будет вызывающим, а какой - параметром. Ведь ссылка HighTemp::sameTemp просто передает код. А HighTemp это класс, а не объект.
Это магия InvokeDynamic. Он используется в том числе для лямбд, а в данном случае так сделано именно для поддержки лямбд старыми АПИ.
Представь, есть интерфейс
interface Comparator<T> {
int compare(T a, T b); // -1 - a меньше b, 0 - а равно b, 1 - a больше b
}
и есть функция
class Array<T> {
// ...
void sort(Comparator<T> cmp) {
// Где-то в коде есть такая строка:
// int result = cmp.compare(...);
}
}
раньше (до восьмой жавы) приходилось создавать классы, наследуемые от Comparator и вызов выглядел как-то так (в данном примере используется анонимный класс:
arr.sort(new Comparator<Object>() {
@Override
public int compare(Object a, Object b) {
return 0;
}
});
Но в восьмой жаве интерфейсы с одной функцией внутри стали особенными и вместо них стало возможным использовать лямбды:
arr.sort((a, b) -> 0);
Что он видит? Определение лямбды совпадает с определением единственной функции в интерфейсе Comparator и потому можно при вызове cmp.compare внутри sort вызывать саму лямбду (этот вызов и совершает InvokeDynamic).
Ссылки на методы это по сути те же лямбды. В твоём коде:
HighTemp::sameTemp
эквивалентно
(a, b) -> a.sameTemp(b)
потому что это метод инстанса класса, а значит сам инстанс всегда будет первым аргументом (ссылки на статические методы и конструктор, очевидно, инстанса не содержат и их аргументы эквивалентны аргументам оригинальной функции). Только самой лямбды нет и метод вызывается напрямую при помощи InvokeDynamic.
Это магия InvokeDynamic. Он используется в том числе для лямбд, а в данном случае так сделано именно для поддержки лямбд старыми АПИ.
Представь, есть интерфейс
interface Comparator<T> {
int compare(T a, T b); // -1 - a меньше b, 0 - а равно b, 1 - a больше b
}
и есть функция
class Array<T> {
// ...
void sort(Comparator<T> cmp) {
// Где-то в коде есть такая строка:
// int result = cmp.compare(...);
}
}
раньше (до восьмой жавы) приходилось создавать классы, наследуемые от Comparator и вызов выглядел как-то так (в данном примере используется анонимный класс:
arr.sort(new Comparator<Object>() {
@Override
public int compare(Object a, Object b) {
return 0;
}
});
Но в восьмой жаве интерфейсы с одной функцией внутри стали особенными и вместо них стало возможным использовать лямбды:
arr.sort((a, b) -> 0);
Что он видит? Определение лямбды совпадает с определением единственной функции в интерфейсе Comparator и потому можно при вызове cmp.compare внутри sort вызывать саму лямбду (этот вызов и совершает InvokeDynamic).
Ссылки на методы это по сути те же лямбды. В твоём коде:
HighTemp::sameTemp
эквивалентно
(a, b) -> a.sameTemp(b)
потому что это метод инстанса класса, а значит сам инстанс всегда будет первым аргументом (ссылки на статические методы и конструктор, очевидно, инстанса не содержат и их аргументы эквивалентны аргументам оригинальной функции). Только самой лямбды нет и метод вызывается напрямую при помощи InvokeDynamic.
Убили жабу своей новой платной поддержкой. Надо перекатываться с этого говна на нормальные развивающиеся языки. Господи, лучше бы я отдал 6 лет своей жизни простому js с его новыми примочками и фреймворками, чем сраной java.
И что посоветуете, вдруг.
Сейчас начал развиваться node, который работает на движке v8 от гугл, а те кучу времени на него убили, плюс завезли многопоточность недавно. Появилось очень много интерпретируемых языков и фреймворков. Сейчас на сраном js уже десктопные апы пишут и бекэнд держат. Вот скоро гугл выпустит замену андройда, которая пошлет жабу на 3 буквы, хотя надеюсь, что загнется как и их прошлые попытки сделать нормальную ос.
Придется легасить древнее говно либо пытаться его переводить на новую баганутую jvm, попутно выступая бесплатным бетатестером. Это может привести к тому, что язык начнет активно развиваться и обновляться, но больше шансов, что новые проекты будут избегать джаву и она станет cobol 2.0. Ну лет 10 минимум еще говнокод разгребать придется.
> плюс завезли многопоточность недавно
Воркеры - это очень неполноценная многопоточность. Например передача строк всегда копирует их (перемещать можно только типизированные массивы) и много чего подобного. И да, поддержки там как нет, так и нету. Ты видимо не до конца понимаешь значение слова "поддержка".
>>70573
Значит, что с 11 версии у тебя есть три стула
1. Обновляться каждые пол-года.
2. Платить ораклу 25$ за процесс (в смылсе запущенный процесс жавы) и получать очень длительную поддержку.
3. Перекатываться к другим мейнтейнерам жавы.
По сути оракл просто перестанет оказывать бесплатную поддержку опенсорснутой жаве на более чем пол-года.
Алсо, восьмая жава протухает уже в январе следующего года. Такие дела.
А не похуй ли? Богатые и так привыкли уже платить за нахуй ненужные Weblogic или WAS. У бедных как правило более быстрый релиз-цикл. Остальным на OpenJDK будет норм.
Знаю проекты, которые на 5(пятой!!) джаве до сих пор крутится - всем похуй. И будет и дальше похуй пока либо само не развалится, либо не похекают.
Уже .net core есть. Сейчас майки дофига для кроссплатформы пилят.
Только не новые фичи, а новые баги (если не считать багофичу под названием жигсо). И под "кто-то" чаще всего подразумевается не изготовитель по, а его потребитель.
https://blog.joda.org/2018/09/do-not-fall-into-oracles-java-11-trap.html
>You may not: use the Programs for any data processing or any commercial, production, or internal business purposes other than developing, testing, prototyping, and demonstrating your Application;
> Download Oracle JDK (because that is what you've always done, and it is what the web-search tells you)
> Use it in production (because you didn't realise the license changed)
> Get a nasty phone call from Oracle's license enforcement teams demanding lots of money
>>70577
>Алсо, восьмая жава протухает уже в январе следующего года. Такие дела.
Нет, ред хат ее (опенждк) будет поддерживать еще 5 лет.
Ок, спасибо.
На CppCon загляни
Вы там какой JUnit используете? 4-ый или 5-ый?
Intellij IDEA при установке через maven archetype ставит 4.11 (Хотя последний четвёртый это 4.12, а пятый уже 5.3)
Чё там ваще?
Мы с недавних пор переехали на Groovy/Spock, и JUnit я с тех пор труба шатал.
Например, выбор одного из нескольких разных алгоритмов ИИ.
Насколько это ненужно/невозможно/бесполезно/велосипед?
Это не то. Это для компиляции жава-кода в байт-код, а тебе нужен динамический загрузчик модулей. В JVM такого нет, так что тебе придётся писать свой собственный класслоадер, попутно долблясь со внутренностями JVM в срачельничек.
Ну или как вариант, в java 9+ можно добавлять модули в специальный файл (или командную строку для запуска) и после перезапуска JVM с основной программой она их подхватит и твой код получит к ним доступ.
Ну значит вот: https://examples.javacodegeeks.com/core-java/dynamic-class-loading-example/
В любом случае я придумал какую-то ненужную хуйню, которую придумали до меня.
Ага, только в статье не рассказывается про самое интересное: загрузку модуля и интеграцию его в уже работающую VM. Там подразумавается, что модуль уже доступен и к нему можно спокойно обращаться.
Не понял, в чем проблема сконпелировать класс JavaCompilerом, а потом загрузить, как в той статье.
Проблема в том, что в той статье ничего не загружается. Там подразумевается, что все классы уже доступны рантайму, а сам класслоадер просто может динамически выбрать нужный из имеющихся. Тебе же надо сами эти классы загрузить из файла и сделать их доступными рантайму.
Лучше замути RPC и для каждого модуля запускай отдельную JVM. ТАк будет проще, хотя и потребуется больше памяти.
>твои неготофункции на ассемблере выполняют по тысяче гото
Вот именно. Умные мужики писали высокоуровневые языки как раз для того, чтобы никто и никогда не ебался с этими goto.
Энтерпрайзы будут платить много денег ораклам, а ушлый пидораха предприниматель в твоей конторе уменьшит издержки за счёт твоей зарплаты.
А что в кафке нет функций для запуска или что? Ставишь таймер и после срабатывания вызываешь нужную функцию.
https://ideone.com/uKWdW8
Скомпилированный класс - абсолютно бесполезно (за редким исключением).
Скрипт на каком-то DSL - вполне практично и общепринято.
Звучит как механизм ServiceLoader, нет?
Я пишу на котлин. Он даже удобнее C# (особенно версия 1.3 с корутинами). Иногда раздражают только неполноценные генерики, но вроде как обещают исправить в project valhalla.
По сравнению с дотнетом в джаве не так много неудобств. Зато охуенный тулинг и кросплатформ
В том, что (1) занимают меньше места, (2) имеют утиную типизацию (впрочем опциональную, типы можно указывать и конкретные).
Бампуе, джаваны
Задача: необходимо чтобы проперти ридер перехватывал два исключения:
1) если файла пропертей нет, то выбрасывает эксепшн -> check
2) если нужной пары ключ/значение не оказалось в файле пропертей (переменная result), то выбрасывается IOException + логгируется в консоли (на уровне error)
вот со вторым пунктом не задалось. У меня при ненахождении ключа/значения выбрасывается NullPointerException. Что я не так делаю и вообще в правильном ли направлении иду?
Используй для этой задачи динамический язык программирования (в случае жвм - это кложа или груви), там это делается одной строчкой.
>>71165
ScheduledExecutorService, Quartz
>>71171
OpenJDK не поддерживается ораклом, если грубо.
>>71297
>как вы можете писать на говне, когда существует моча? каждый раз когда после мочи приходится трогать говно меня кастрируют
>>71552
Все так, но net profit появляется в сочетании со streams. Можно писать код почти как в скале\кложе, без лапши. Это ненастоящие лямбды, потому что введение Ъ функциональных типов поломало бы обратную совместимость, но good enough для простых вещей.
Откуда у тебя там NPE? Ни один метод там его не кидает (кроме class loader, но у тебя же это исключение не всегда появляется, да?) Плюс где ты сам кидаешь IOException? Ты просто получаешь проперти в result и все, в блоке if нет проверки result на null, после которой оно и должно кидаться по твоему описанию.
> OpenJDK не поддерживается ораклом, если грубо.
Не поддерживается дольше чем пол-года. Т.е. бесплатных LTS релизов от оракла больше нет.
Это не просто грубо, это неправильно:
> OpenJDK не поддерживается ораклом
Звуыит как будто оракл полностью закрыл жаву и теперь распространяет её только на платной основе.
Я бы рекомендовал джава раш для начала. Хотя бы кор пройти.
Попутно изучаешь системы контроля версий (git/svn), CI (maven/gradle + jenkins), и собственно автотестинг. Тестнг + селениум + индус с ютуба = профит.
NPE выбрасывается стабильно, проперти получает метод openAnySite() который находится в другом классе
public void openAnySite() throws IOException {
open(propertyReader.getPropValues("url"));
}
>Ты просто получаешь проперти в result и все, в блоке if нет проверки result на null
была такая мысль, но я туплю и не знаю как туда засунуть IOException. Пикрелейтед пример, но я опять не то что-то делаю
>>71598
>И почему не используешь try with resources?
Ты про getResourceAsStream? геттер обернут в try блок
Ты зачем InputStream вынес за пределы метода? Да и result тоже. Чтоб веселее было при многопоточном использовании?
> Ты про getResourceAsStream? геттер обернут в try блок
AutoCloseable и Closeable надо оборачивать в специальный try-блок (если версия жавы посзовляет). Т.е. пишешь
String result = "";
String propFileName = "...";
try (InputStream input = getClass()...) {
if (input == null) {
throw ...
} else {
Properties prop = new Properties();
...
}
} catch (Exception e) {
...
}
и try сам правильно закрывает input если тот не равен null.
> NPE выбрасывается стабильно
А откуда выбрасывается из этого метода или дальше? Если проблема в том, что возвращаемое значение равно null, то просто в конец перед return добавь что-то вроде
if (result == null) {
LOG.error("Property {} not found", property);
throw new IOException("...");
}
return result
Ты зачем InputStream вынес за пределы метода? Да и result тоже. Чтоб веселее было при многопоточном использовании?
> Ты про getResourceAsStream? геттер обернут в try блок
AutoCloseable и Closeable надо оборачивать в специальный try-блок (если версия жавы посзовляет). Т.е. пишешь
String result = "";
String propFileName = "...";
try (InputStream input = getClass()...) {
if (input == null) {
throw ...
} else {
Properties prop = new Properties();
...
}
} catch (Exception e) {
...
}
и try сам правильно закрывает input если тот не равен null.
> NPE выбрасывается стабильно
А откуда выбрасывается из этого метода или дальше? Если проблема в том, что возвращаемое значение равно null, то просто в конец перед return добавь что-то вроде
if (result == null) {
LOG.error("Property {} not found", property);
throw new IOException("...");
}
return result
Это платный OracleJDK. OpenJDK распространяется по швабодной GPL 2with the Classpath Exception.
это то понятно, но выходит что корпорации платят ораклу
а остальные сидят на опенждк ибо ибо больше вариантов и нет, лол
Порекомендуйте ресурс чтобы быстро влиться в джаву
Спасибо анон, завелось!
Однако остался один не понятный момент
InputStream input вынес в метод, но за предел try и присвоил ей значение null, причина по которой я так сделал - если объявить в блоке try, то область видимости будет try блок, в таком случае finally блок не понимает переменную input
Корректен ли такой подход? Или целесообразней будет отказаться от блока finally, объявить input в try и закрыть поток в первом if, то есть:
try {
InputStream input = getClass().getClassLoader().getResourceAsStream(propFileName);
if (input == null){
throw new FileNotFoundException("property file '" + propFileName + "' not found");
input.close();
} else if (input != null){...}
> if (input == null){
> throw new FileNotFoundException("property file '" + propFileName + "' not found");
> input.close();
> } else if (input != null){...}
Этот код настолько ебанут, что я даже не знаю с чего начать. Ладно.
1) input.close() тут никогда не вызовется, поскольку throw завершит выполнение этого ветвления.
2) Вызов input.close() выдаст тебе NPE, поскольку input равен null.
3) Зачем else if? Кроме == null и != null у тебя там может быть и третье состояние?
> в таком случае finally блок не понимает переменную input
Тебе уже десять раз сказали. Используй try-with-resources (погугли что это такое). Он сам закроет input и никакие finally-блоки не будут нужны.
>1) input.close() тут никогда не вызовется, поскольку throw завершит выполнение этого ветвления.
Он же в файналли, так что вызовется, хоть и кинет NPE.
Я про конкретно этот кусок кода. Там слишком много всего лишнего, что никогда выполняться не будет.
Благодарю за подсказку. С try-with-resources оказалось удобнее, не нужно принудительно закрывать. Сейчас вроде более лаконичнее выглядит
1) String propFileName можно заменить на final String propFileName, чтоб указать что это константа. Ну и можно вынести её за пределы метода и даже сделать статической.
2) else-блок не нужен. throw прервёт выполнение программы в этом месте. Обычно пишут так:
if (input == null) {
throw new ...
}
Properties prop = ...
3) Переменную result можно переместить внутрь try в виде String result = prop.getProperty(property), а в конце просто возвращать "".
4) LOG.error выглядит странно. Либо убери второй аргумент, либо погугли как происходить формат строки в твоём фреймворке для логирования и используй его вместо конкатенации.
>сидят на опенждк ибо ибо больше вариантов и нет, лол
Ну охуеть, zing, azul, redhat, ibm, exclesior вообще альтернатив нет, если хочешь платить вот тебе куча вендоров, если не хочешь бери базовый пакет.
>3) Переменную result можно переместить внутрь try в виде String result = prop.getProperty(property), а в конце просто возвращать "".
вот тут не совсем понял, ты имеешь ввиду в конце метода возвращать return null; ?
LTS поддержка от производителя жавы (остальные могут максимум бекпортировать исправление багов из новых версий) и некоторые фичи для интеграции с другими платными оракловскими сервисами.
Теперь только форматирование исправь (и возможно сделай PROP_FILE_NAME приватной) и всё.
Ну и название функции наверное должно быть getPropValue (в единственном числе). Всё таки получаешь одно значение.
Тем более все фичи разрабатываются в рамках openjdk.
согласен, логично. Благодарю за комменты
Ты только в терминах не путайся, окда? Искаробки всё там есть, а что ты хочешь называется свободные функции, и да в жаве их нет. Есть только классы и функции внутри них, потому классы и надо импортировать и (если функция не статическая) делать инстанс.
А чём проблема сделать импорт? Это часть стандартной библиотеки жавы, а под "импортом" в этом случае подразумевается строка кода:
import java.util.Scanner;
Ты долбаеб?
Ну тогда пусть тот класс выкидывает ошибку при неправильных данных, а ты её отлавливай и сообщай о ней пользователю.
Да, я уже понял, тупанул, спасибо
Что значит "с return не работает". Ты уж реши как ошибку будешь выкидывать: через throw (тогда return тут вообще не при чём) и с помощью специальной монады (тогда return возвращает и ошибку и результат).
Зачем ты это здесь пишешь?
Если не считать майнкрафта, то нет. Для гейдева выбирай либо юнити (там C#), либо что-нибудь покруче, но уже на C++.
писал на жава8 и горя не знал
а эти сплошные add-exports теперь by design в любом проекте или я что-то делаю не так?
По идее всё это заносится в module-info.java
Тебе не похуй? Вряд ли у тебя возникли бы проблемы требующие официальной поддержкой. Если твоим софтом пользуется кто-то кроме тебя - мигрируй.
Unity или Unreal Engine. Но это уже к жаве не относится.
Да я бы вообще на kotlin перекатился, да только он также к jvm прихуярен и проблемы с ним такие же. Безусловно я говноед, но как язык мне жава очень нравится, даже по сравнению с шарпоглотством и тем более крестами.
У меня что-то такое уже есть, работа с PostgreSQL. И со спрингом тоже что-то напишу. Только над игрой можно поаутировать месяц в свободное время.
Можно через apache common utils:
https://commons.apache.org/proper/commons-text/javadocs/api-release/org/apache/commons/text/StringEscapeUtils.html#unescapeJava-java.lang.String-
Ну или пердолится самому заменяя каждый unicode code point на нужный символ.
>>72794
Может он имеет в виду, что сама строка так отображается. Т.е. по сути является "\\u203\\u039b\\u39\\u0023"
Считывать откуда? И что значит построчно? Весь html (в виде разметки) может быть одной строкой, тогда как при отображении там может быть куча строк.
tesr
Вообщем я сам пытаюсь написать простенький сервер у меня всё почти получается.Только у меня текст в браузер который выводится при запросе просто в коде написан руками, я же хочу читать его с файла html, который лежит в корневой папке проекта.Какими методами это делается
Ах, в этом плане. Тогда ты видимо хочешь потоки. Отерываешь файл при помощи FileInputStream и этот InputStream уже считываешь по кусочкам и отдаёшь клиенту.
Спасибо
веб
Хуевый у тебя вуз, даже в моеи мухосранском вузе по выбору либо юнити с vr обучают, либо вебу с дотнетом/джангой.
Так вебсокеты поверх tcp и работают. В чём проблема не разрывать подключение? Или ты про http? В http2 тоже есть возможность держать подключение сколько угодно долго и посылать данные в обе стороны.
он монстроуозен
По делу.
Клиенты регаются на сервере. Сервер сохраняет сокеты в доступности и держит их открытыми. Дальше гуглишь паттерн наблюдатель.
Я неофи в ойти, я не понимаю что пишут на жаве, ну кроме ведра, с чем вы работаете? Напишите пожалуйста, над чем вы работали за последние пару месяцев?
Применяется, но мало где. Мы к нашим микросервисам доки пишем, но их никто не читает, да и диаграммы там довольно простые. Поэтому мы пишем их на отъебись.
Короче, надо просто быть более-менее с этой хуйнёй знакомым, на всю оставшуюся жизнь этого будет достаточно. Учить точно нахуй не надо.
Тормози с жабой, ебашь инглиш. Рили, без английского ты нинужон, тебя на собесе забракуют 95%.
Что за хуйню я прочитал?
Ты понимаешь что разные мэйны это разные процессы? Как ты с одним объектов будешь из разных процессов работать лол.
Прикрути какой-нибудь rabbit-mq или kakafkу и через них связывай, тогда и конкаренси не потребуется.
Черт, я уже 200 страниц по нему осилил. Ну лан, хоть для собственного удобства буду использовать, а то в голове тяжко все взаимосвязи держать.
Не, впизду кафку вот совсем. Ладно,спс, просто почему то думал что spring может такие чудеса заебенить. Но увы увы, придется перепиливать mainы в runnabble, и запускать с одного мейна. целых 10 минут работы
Какие перспективы?
Как думаете это реально?
Ты про их шаблоны? Уже читаю, но это слишком углубленные знания, как мне кажется. Во-первых, потому, что не везде применяются, во-вторых, не зря, наверно, шаблоны не советуют изучать новичкам.
https://towardsdatascience.com/10-common-software-architectural-patterns-in-a-nutshell-a0b47a1e9013
https://en.wikipedia.org/wiki/Multitier_architecture
http://www.dossier-andreas.net/software_architecture/ports_and_adapters.html
диссер роя филдинга
https://staltz.com/unidirectional-user-interface-architectures.html
out of the tar pit pdf
https://www.youtube.com/watch?v=ROL58LJGNfA
Спасибо.
А почему не можешь? Кнопку тыкнул - ивент появился и обработался, а ты рефрешаешь рисунок.
> Потом у меня бомбануло, что нигде блядь под шиндошс jre 11 отдельным бинарником нету - поставляй клиентам сраную openjdk в архиве
Так сделай свой собственный JRE. Начиная с жавы9 в поставке идёт jlink, который и используется для создания jre с необходимыми модулями. Получается размером меньше чем полный jre, хотя зависит от количества используемых модулей. Вот у меня для жава-программы получился jre размером в 28.5Мб.
Из KeyListenera нельзя вызвать переменные x y, расположенные в методе paintComponents. Пробовал даже экземпляр класса там и через него вызвать, но не высвечивается.
>расположенные в методе paintComponents
В смысле? Нахуй тебе переменные в методе? Делай их глобальными ало, инстансами класса.
А, точно! Завтра попробую. Сегодня прост писал васянопакет для кастомизации свингового интерфейса, ну чтоб там например легко look and feel'ы менять, вот в шараге все офигеют.
Найди книжку Filthy Rich Clients и почитай, как в свинге всё работает.
Наверное ебанутый вопрос, но мне это скозал знакомый прогер, а я пытаюсь войтивайти
Пиздёж, конечно. Джава в своём большинстве только в вебе и живёт.
Не знаю что там пол года учить, мне кажется если знаешь джаву, то перекатиться в автотесты это пару вечеров за кофе повникать в селениум и прочую хуйню
Ну да, я понимаю. Потихонку подтягиваю инглиш, но мне всегда языки сложно давались. Просто со Spring`ом есть вариант в этом месяце уже на джуна устроиться, а если я буду сейчас в оригинале читать, то потрачу уйму времени. В итоге нашёл "Spring для профессионалов" на русском, вроде норм/
Кластер расчетов какой-то хуйни на акке
Да, апплеты уже никому не нужны.
Но почему? Неужели никого не заёбывает компилить одну и ту же десктоп прогу на разные операционные системы и архитектуры?
Ну вообще жава компилируется в байт-код, который будет работать на любой операционке с совместимой виртуальной машиной. Да и причём тут заёбывание, если во всех крупных организация на разные платформы компилит (и тестирует) специальный билд-сервер, а ты работаешь исключительно на своей системе.
Мавеновский проект, выдает NPE.
Main.class.getResourceAsStream("CommonDuck.java")
А если нажать ctrl и тыкнуть по имени метода, а затем почитать открывшиеся доки? М, че епта, слабо?
Ну так включая изучения джавы. У меня сейчас разве что на уровне прочтения там какой-то книги head first.
Аноны, почему это говно перестает работать для порядка листа 10^7?
так то 6 гигов. Соре за вайп.
> ТАК, чтобы на другом ПК ничего не пришлось настраивать?
Что значит "ничего не пришлось настраивать"?
Для создания самодостаточного дистрибутива (т.е. который будет работать вообще без JRE) можно использовать jlink, но для этого все библиотеки проекта должны нормально работать с модулями жигсо (а работают далеко не все из-за требований в отсутствии одинаковых пакетов в разных модулях). Либо вместе с программой поставлять свою собственную jre (опять таки можно создать при помощи jlink) с нужными модулями стандартной библиотеки. Лаунчер тоже можно сделать при помощи jlink и он сразу запустит нужный жарник как будто это родная для системы программа.
Всё сказанное выше подходит для java 9+. С восьмёркой придётся распространять полный jre.
Я знаю про jlink. Я говорю именно про проект IDEA. Чтобы другой разработчик мог форкнуть проект и билдить его с jdk, поставляемой с самим проектом. Сейчас для этого нужно добавлять эту JDK в саму IDE.
Во всех проектах что я видел делают проще: для распространённых действий делают bat/bash скрипты которые ставят все нужные переменные среды, а потом запускают нужные таски градла. А в README.md
в корне проекта уже пишешь что нужно установить определённую версию jdk для нормальной работы в idea.
Похоже, так и придётся делать. Спасибо.
Вы охуели что ли? Ламп вопросу.
Иди фрилансить за еду. Или делать моды на майнкрафт. В принципе перспективы те же.
Я серьёзно. Наберёшь опыта и получишь копеек на выжить. А вообще такие вещи лучше всего через знакомых делать. Без бг ты хуй на палочке.
Иди делать моды на майнкрафт.
Notepad++ лучше нетбинса.
А я серьёзно. Я так пиздюком на новый ПК заработал. Если бы не майнач, то работал бы сейчас в макдаке.
Про абстрактные методы я ещё понял - если нужно что-бы метод, при наследовании был обязательно переопределён, то его нужно сделать абстрактным. А про абстрактные классы я чёт не понял.
Видел простой пример на животных, мол, есть абстрактный класс "животное" и у него есть методы, общие для всех животных, например "голос". Он абстрактный, по скольку в реальности встретить общее "животное" невозможно. У него есть наследники, обычные классы - кот, собака, корова. И у каждого наследника метод "голос" определён по своему.
Но ведь можно сделать "животное" не абстрактным классом, а обычным и создать кота, собаку и т.д. как объект класса животное, у которых также можно будет переопределить метод "голос". Так какой смысл в абстрактных классах? Экономия памяти? Увеличение производительности?
Поправочка - метод "голос" тоже абстрактный получается
1. Использовать entity напрямую как дто, причем в классе будет каша из аннотаций (jpa, валидация, @jsonignore и т.д.).
2. Использовать entity + разные дто для разных методов (3-4 класса с почти одинаковыми полями).
3. Использовать entity + один дто с аннотациями @jsonview и т.п., исключая ненужные поля.
Но ведь можно сделать "животное" не абстрактным классом, а обычным и создать кота, собаку и т.д. как объект класса
т.е. применение некоторых классов как абстрактных обусловлено тем, что в общем виде этот класс не применяется,а только в виде конкретного объекта?
>В пиндосии почему-то предпочитают эклипс
Потому что бесплатный. Сам столкнулся с этой проблемой, когда заказчик из штатов пришел. Мол зачем платить бабло за ide, когда есть бесплатная. Если у тебя есть купленная идея, то возражений у них нету.
Говно тоже бесплатное
Ясен хуй с явы. Если хочешь стать успешным синьором-помидором 300кк/нсек, то яву нужно знать лучше родного языка, ибо все потроха ведроида так или иначе на ней завязаны. Котлин позиционируется скорее как дополнение явы, или переосмысление её концептов с учётом текущей ситуации в мире ИТ. Без явы сам по себе котлин нинужон.
Это до FuchsiaOS, хехе.
Иди запусти идею и попей чайку пока она 30 минут индексирует твой каждый пук. А и не забудь что-то изменить на жёском диске и получить инвалидацию кеша с полным реиндексом в лучшем случае. В хучшем - потерять свои изменения.
А идея думаешь нет?))) Она на свинге с явой написана!!
Ну хуй знает. Если логика уровня передавать/не передавать пароль, то можно не плодить сущностей и сделать все на аннотациях. Если чуть сложнее, то я бы не хотел в чужом проекте в своей голове представлять правильные объекты из какого-то generic-DTO, лучше иметь их в явном виде. Ну а если логика твоего сервиса тупая как валенок (конвертирует данные из одного апи в другое например), то можно и вообще везде внутренний объект фигачить.
Нетбинс раньше убер уебищный был, сейчас вроде как ситуацию исправляют, но осадочек остался, плюс под эклипс дохуя плагинов.
Всего 16 гигов оперативы + ссд? Этого мало, чувак.
У тебя в проекте 100к классов каждый по 100к строк?
> Что пробовали и на чем остановились?
Android studio на жид брейнс базируется. На ней и пишу. Остальные предпочитают ждать говно в продакшене на спринге. Правда здесь не попишешь на нем, поэтому просто отправил студак, они мне кинули на годик все бесплатно. Сижу и работаю.
Я хоть и не по джаве, но предположу что ты слишком дохуя уже прочитал. Начинай кодить.
Не получится такая точность, ты не АНБ. Сначал апо координатам проверять что они в +-20 метрах, дальше определят по блютусам/звукам.
Бля, а как же всякие геолокационные игры? Типа покемон го и всё такое. Там же нужно подойти близко к точки.
5-10 метров это достаточно близко, можно конечно еще гироскопы/акселерометры всякие использовать для интерполяции и предскозания, но в покемонах такого вроде небыло.
Заведи фейк на нн, укажи вузик и прочие.
Проси тестовое.
Я так пинганул шут пять контор, но получил одно тестовое. Я его сюда запиливал, местные аноны сказали это гавно на два часа хотя мне неделю давали.
5-10 метров этож пиздец как далеко. Мысль с блютозом, мне кстати, понравилась. Это похоже то, что мне нужно. Разве что мне всё равно требуется для начала узнать координаты хотя бы с точностью 5 метров.
Вроде как Яндекс.Локатор довольно точный, потому что использует разные методы для вычисления координат. Или Google Services Geofences всё таки точней?
у меня такая же проблема. Читаю и читаю, уже даж желание кодить от этого пропало .
ну вот создал я пак main, потом создал в нем пак java. если я в main хочу создать еще один пак,например, python, он у меня вкладывается в java и получается main.java.python. а я хочу, чтобы у меня было main.java и main.python
пиздец ответы, блять. ты вопрос читаешь нахуй или жопой по монитору водишь? я сказал, что идеа не позволяет директорию создать, только пак
Очевидно же, что раз идея не дает создать в мэйн пакет, то пакеты должны храниться только в директории джава.
ты тупой или притворяешься? я не могу создать директорию джава. идея дает мне только пакеты внутри src создавать
Ты дебил? Вот же, все создается. Берешь свой пакет по правой кнопке мыши и создаешь. Какие же нюфаги дегенераты, пиздец просто.
Проблемы?
>профит интерфейсов
Ты не сможешь расширить несколько абстрактных классов, а вот несколько интерфейсов заимплементить без б.
Да, я знаю это. Тут вопрос в другом: нужно ли создавать иерархию интерфейсов параллельно с иерархией классов, чтобы как бы строго обозначить действия, выполняемые классами, если можно обойтись только иерархией классов? Думаю, тут скорее вопрос соответствия ООП, чем каких-то различий в функциональности.
Обычно иерархия классов потом вылазит боком, если это конечно не какая-нибудь либа. Вот предыдущие уебаны наплодили 5 классов, весьма похожих, но наследующихся, а можно было просто сделать 1 класс, а все остальное к нему параметрами выполняющими работу передать.
Приведу пример.
Первый вариант: есть класс UserManager. Он реализует интерфейс UserActions, в котором есть методы работы с неким юзером. Теперь мы создаем класс PrivilegedUserManager, который наследуется от UserManager. Этот класс реализует интерфейс PrivilegedUserActions с методами работы с элитными пользователями, унаследованный от UserActions. И так далее.
Второй вариант: мы просто создаем абстрактный класс UserManager, в который и помещаем методы из интерфейса UserActions, которого теперь нет. А дальше просто наследуем PrivilegedUserManager и другие классы от него.
Какой вариант выбрать?
А зачем объединять логику работы с обычными пользователями и логику работы с випами. Интерфейс для обычных и интерейс для випов, их классам нет смысла преесекаться.
Но ведь с точки зрения расширяемости создать иерархию лучше. Один большой класс получится очень неповоротливым и связанным, так что при малейшем изменении придется переписывать код сразу во многих его местах. Или я не так тебя понял?
Так они и не пересекаются. Весь общий функционал перенесен в базовый класс (и интерфейс, если он есть, зависит от варианта), а уже особые методы для каждого вида пользователей вынесены в отдельные классы. Просто в одном случае есть обвязка иерархией интерфейсов, в другом - нет.
Попытатся стоило.
Eclipse еще больше фу. Или ты мне нетбинс хочешь предложить? А может сразу блокнот?
Неправильно понял.
Есть класс Булочная, в ней есть места которые по разному работают в зависимости от сегодняшнего меню, нет смысла менять булочную, пустьв ней меняются люди и меню, вот они и выполнят нудные работы.
Конкретноу меня контроллер который показывает товары по заданному критерию, но кроме критерия выборки меняется и внешний вид. Соответственно базовый контроллер может спокойно бегать за товарами по критерию, а переданные в него делегаты умеют их правильно отрисовать и спозицонировать.
А предыдущие дегенераты сделали 5 классов 4 из которых почти нихуя не отличаются.
Я не знаю что ты собрался дублировать. Я считаю что операции над простыми пользователями ничем не отличаются от операций на випами, просто у випов есть доп. операции. Соответсвенно ничего не дублируется, работают вообще разные сущности.
Если ты сейчас подразумеваешь, что я должен унаследовать випов от обычных юзеров, то ты подтвердил мои мысли, просто я не смог правильно донести. Если же нет - то там по-любому будет дублирование кода, сам же говоришь - ничем не отличаются, только у випов есть особенности.
Только вот мы ушли от темы. Нужно ли обвязать эту иерархию юзер - вип-юзер еще и интерфейсами, которые как бы обяжут эти классы что-то делать?
Логику подруби. Допускаешь ли ты возможность, что экземпляр твоего животного может быть одновременно котом, тумбочкой и атомной подводной лодкой класса "Карп"? Если да, то Animal будет интерфейсом. Если нет, то абстрактным классом.
Intellij SOSAT 6.0
Либо используются стандартные АПИ конкретной системы (winapi, cocoa, gtk/qt) либо пишется своё собственное поделие на низкоуровневых АПИ вроде opengl/directx/vulkan.
Берёшь LWJGL...
> Как правильно измерять время работы метода?
Профайлером (например visualvm). Либо
var a = System.nanoTime();
// Код
var b = System.nanoTime();
System.out.println(b - a);
Однако время может сильно скакать в зависимости от того, откомпилировал ли JIT твой метод или нет.
По заголовкам. Если браузер просит html, отдаёшь ему html. Если json (а для этого нужно в ajax-запросах ставить заголовок Accept: application/json), то отдаёшь json.
А встраивать json можно по разному, либо на сервере, либо уже у клиента.
Всё кучей писать в main или например отдельно объявить компоненты, сделать конструктор с размещением компонентов и отдельный класс Listener'ов? А в main тупо запускать это всё.
Есть какие-то паттерны насчёт этого, чтоб не быть говнокодером?
Неужели на каждую однострочную хуйнюшку надо создавать отдельный метод?
Ты хотел сказать отдельный класс? Потому что в отдельном методе нет ничего плохого. А вообще пиздуй в котлин, там можно даже встраиваемые функции (а в версии 1.3 даже встраиваемые классы с настоящими генериками) делать.
> Это как ссылки на методы через лямбды в джаве?
Нет, это как встраиваемые (inline) функции в системных языках. Вместо вызова функции внедряется её полный байт-код.
Эмм, так это ведь уже есть в джаве, пусть и не на уровне самого языка. Компиляторы способны такое делать, например, если ты объявишь в классе метод как final. Так что выигрыш невелик.
Не совсем, когда метод принимает лямбды, то вместо того что бы создавать лямбду/анонимный класс и вызвать его метож, ее (лямбды) тело встроится в код (если на ней конечно нет пометки так не делать). Ну и JIT на самом деле не такой крутой как величают, может съоптимизирует, а может и нет.
В критических местах, например в системе лэйаута ведра, вон инты передают и с битовыми масками играются, так как от выделения объектов gc загибался бы, вот там инлайновые классы встали бы как влитые.
> Так что выигрыш невелик.
Это сделано не ради скорости, а по большей части ради двух вещей:
1) Полноценные генерики.
Допустим есть функция
fun <T> asd(Clazz<T> clazz, T value)
вызывается она так:
asd(someVar::class.java, someVar)
что некрасиво, однако можно сделать специальную инлайн функцию:
inline fun <reified T> asd(T value) = asd(T::class.java, value)
и вызывать таким образом
asd(someVar)
Согласись, выглядит в разы красивее.
2) встраивание лямбд. Позволяет вместо отдельных языковых конструкций вроде try-with-resources использовать простые функции. Ну и встраиваемые функции получает внешний контекст корутин, а потому позволяют очень просто совмещать лямбды (которые по сути тоже встраиваются) и корутины.
Хммм, а можно ли замутить полноценный вирус на джаве? Помогут ли нативные методы, или там это предусмотрели и как-то урезали свободу действий?
https://ideone.com/R1iOEI
должны выводиться все слова, которые записаны в дерево
печататься в виде строки и древовидной структурой (лесенкой)
> Извините, установленная в системе jre не поддерживается. Не могли бы вы поставить jre 1.8? Желательно openjdk со свободной лицензией. Спасибо за содействие. Ваш вирус.
> Идёт зашифровка ваших личных данных. Оставшееся время: 46ч. 23м. 13с.
StringBuffer buffer = new StringBuffer();
try (
FileInputStream myFile = new FileInputStream("abc.txt");
InputStreamReader inputStreamReader =
new InputStreamReader(myFile, "UTF8"
);
Reader reader = new BufferedReader(inputStreamReader);){
int ch; // the code of one character
while ((ch = reader.read()) > -1) {
buffer.append((char)ch);
}
buffer.toString();
} catch (IOException e) {
e.printStackTrace();
}
Вот у автора и спроси придурок!
Читай доки по этим классам, установи сырцы явы и глянь исходники всем методом.
Этож ява там всё так. обёртка поверх обёртки и обёрткой погоняет.
Если коротко то обернув свой хуй спец классом у тебя появляются методы которые иногда удобно использовать.
Но чтоб это понять нужно прочекать внимательно ВСЕ методы. Когда будешь знать какие методы использовать можно тогда есть смысл обмазывать говно поверх говна.
Т.е. Files.readString
Мне тоже не понятно, почему нет какой-нибудь простой библиотеки для работы с файлами от apache. Или есть.
у тя шрифт дебильный
Okio
Уже лет триста есть.
И именно от Apache.
Для тех, кого в гугле не забанили, конечно.
И в Groovy это тоже есть уже хуй знает с каких времён.
>>77653
Если тебе надо "попроще" - то выше я уже про это написал.
Если же тебе надо "изучить кор" - то это будет посложнее.
Потому, что низкоуровневая реализация более гибкая и универсальная
И в джаве работа с данными унифицирована, т.е. с помощью подобных объектов читаются не только файлы.
Почитай Java Tutorial или то, что ты там читаешь.
Это не "обёртки" "потому что джава". Это абстракции, чтобы ты единообразно мог работать с разными источниками/приёмниками данных.
И да, именно для текстовых файлов лучше использовать метод reader.readLine(), т.е. читать сразу целыми строками.
https://www.mkyong.com/java/how-to-read-file-from-java-bufferedreader-example/
А при чтении двоичных файлов (произвольных данных) Reader не нужен, надо читать прямо из InputStream.
https://www.mkyong.com/java/how-to-read-file-in-java-fileinputstream/
Так что пример у тебя там весьма неудачный.
Можно также читать сразу несколько байт в байтовый буфер, а не по одному:
https://www.tutorialspoint.com/java/io/inputstream_read_byte.htm
https://www.tutorialspoint.com/java/io/inputstream_read_byte_len.htm
Да там особо нового ничего нет. Если изучаешь для себя, то лукчше вкатывайся в котлин, на нём чуть легче писать и кода меньше выходит. А если для работы, то на жаву11 в эынтерпрайзе ещё не скоро перейдут. Да и разница там (в самом языке) только в наличии var.
Бутылку пива, две банки с килькой в томате и буханку хлеба.
Принципиальные изменения в языке были в Java 8.
Так что если изучаешь язык - книг по 8-й версии будет достаточно.
Отличия 9-10-11 - главным образом в деплойменте.
И в выбрасывании ненужных (по мнению оракла) частей, типа десктопного UI или апплетов.
И самое главное отличие новых версий и новой системы релизов - отказ от бесплатной долгосрочной поддержки предыдущих версий.
Ради этого всё и затевалось.
И ещё отсутствие 32-битных версий.
Все Java-господа работают, нет времени на болтовню
Велосипед за 300к.
Поезд. Сидишь такой на месте машиниста и тащишь за собой вагоны со всякой хуйнёй.
Создал вопрос. А к вам вопрос как не городить такую хероту а разбивать задачу на более простые компоненты?
Это не сработает если число больше 9, я проебался и там не чар а стринг собсна.
я изучаю пока синтаксис и мне на работе предложили факультотивом проект,
есть сервер на котором крутятся рендермашины, есть агрегатор с дашбордом и веб интерфейсом - называется tractor от Renderman,
так вот, просят приложение на андроид, с которого можно эти дажборды смотреть в любой момент, не заходя на вебинтерфейс агрегатора, мол когда в дороге и например под рукой только телефон, вот
натолкните куда смотреть чтобы понять как вообще это должно работать
нашел API https://rmanwiki.pixar.com/display/TRA/APIs
но я нуб, ткните носом куда копать плез не харкайте в лицо
Ну хуй знает что тебе надо. Но вроде в URL Api возвращается json и там есть методы показывающие списки джобов/юзеров.
И насколько хорошо нужно знать каждую из них по шкале от 1 до 5, где 1 - это иметь представление, что это такое.
Пробовал также сделать авторизацию с jwt, но в этот раз ресурс-сервер вообще токены не требует почему-то. И как в этом случае залогиниться на сервер авторизации, если с SessionCreationPolicy.STATELESS у меня не получается пройти дальше формы логина, а в ином случае ресурс-сервер требует jsessionid, но опять же не проверяет jwt. Как я понимаю, сессия должна быть на сервере авторизации, а на ресурсном только проверка jwt, так?
Делал по этим гайдам:
https://www.baeldung.com/rest-api-spring-oauth2-angularjs
https://www.baeldung.com/spring-security-oauth-jwt
Вот код по JWT, может кто поможет, потому что я уже нихрена не понимаю
https://pastebin.com/a0B2VpZL
Есть же раздельные события нажатия и отпускания клавиши.
В их обработчиках надо смотреть код клавиши и, если надо, модификаторы - ctrl, alt etc.
https://docs.oracle.com/javase/tutorial/uiswing/events/keylistener.html
Мне дадут для устной части переговорку в опенспейсе иногда бывает шумно?
В письменной я просто вбиваю текст в форму на сайте или я должен буду пошарить экран в скайпе и при интервьюере писать никуда не подглядывая?
Тебе лень глянуть вакансии на хх??
Ява кор само собой. Умение писать проги без гугла.
Эскюэль. Умение писать запросы без гугла.
Ждбс без гугла.
Жюнит, мокито без гугла.
Без гугла это значит что можешь написать код в блокноте, на бумажке и не обосрёшся!
К примеру уметь нахуярить код на вайтбоард вроде:
Scanner in = new Scanner(System.in);
PrintWriter out = new PrintWriter(System.out);
out.println(in.nextInt() + 1);
out.flush();
Ты конечно можешь забыть какие пакеты нужно импортировать т.к. идеешка за тебя это делает. Но помнить писать
public static void main(String[] args)
Нужно.
Простые/Топ паттерны без гугла.
Хелоу ворды на Спринг без гугла.
Ну и прочие ява ее технологии.
Это всё реально только если ты постоянно кодишь за пекой а не дрочишь.
Там тестовые обычно CRUD на спринге и срок неделю. Вот это и задрачивай.
Первый раз будешь гуглить каждый чих, второй уже меньше.
К третьему разу пальцы будут сами нажимать что нужно.
А если напишешь десяток крудов то на собесе уже будешь реально уверенно выглядеть. Прям придёшь сразу и не дожидаясь тупых вопросов сам скажешь что можешь на бумажке круд нахуярить.
Базовые хтмл, ксс + йява скрипт само собой.
Ну и базовая хуита вроде древовирта. Короч что в вузике учил.
Тебе лень глянуть вакансии на хх??
Ява кор само собой. Умение писать проги без гугла.
Эскюэль. Умение писать запросы без гугла.
Ждбс без гугла.
Жюнит, мокито без гугла.
Без гугла это значит что можешь написать код в блокноте, на бумажке и не обосрёшся!
К примеру уметь нахуярить код на вайтбоард вроде:
Scanner in = new Scanner(System.in);
PrintWriter out = new PrintWriter(System.out);
out.println(in.nextInt() + 1);
out.flush();
Ты конечно можешь забыть какие пакеты нужно импортировать т.к. идеешка за тебя это делает. Но помнить писать
public static void main(String[] args)
Нужно.
Простые/Топ паттерны без гугла.
Хелоу ворды на Спринг без гугла.
Ну и прочие ява ее технологии.
Это всё реально только если ты постоянно кодишь за пекой а не дрочишь.
Там тестовые обычно CRUD на спринге и срок неделю. Вот это и задрачивай.
Первый раз будешь гуглить каждый чих, второй уже меньше.
К третьему разу пальцы будут сами нажимать что нужно.
А если напишешь десяток крудов то на собесе уже будешь реально уверенно выглядеть. Прям придёшь сразу и не дожидаясь тупых вопросов сам скажешь что можешь на бумажке круд нахуярить.
Базовые хтмл, ксс + йява скрипт само собой.
Ну и базовая хуита вроде древовирта. Короч что в вузике учил.
>без гугла.
>>80886
>Простые/Топ паттерны без гугла.
>Хелоу ворды на Спринг без гугла.
>>80886
>К третьему разу пальцы будут сами нажимать что нужно.
>>80886
>хтмл, ксс + йява скрип
>>80886
>круд
Давно так не проигрывал. Сходи в гугл, посмотри как правильно произносятся вещи, которые ты упоминаешь, маняфантазер блядь.
Это копия, сохраненная 16 ноября 2018 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.