Вы видите копию треда, сохраненную 10 ноября 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Что такое Java?
Java - язык программирования с классами (aka объектно ориентированный), где нужно явно указывать тип объявляемых переменных (aka со строгой типизацией).
Заебись. А что ещё делает Java лучшим языком программирования?
- На Java написано столько всего, что любая твоя невообразимая идея уже существует в виде библиотеки, которую можно скочать и юзать
- Java - мультипарадигменный язык, тут можно писать в любом стиле, который тебе вздумается, даже к памяти можно получить доступ через Unsafe, но, при этом спроектирован язык для того, чтобы на нём писали в ОО-стиле.
- От прошлого пункта плавно перешли к отличной проработке языка - язык с самого начала задумывался как язык для ООП и многопоточности, благодаря чему писать чистокод на Java легче лёгкого!
- Java - относительно молодой язык, который до сих пор активно развивается жидами из Oracle, при этом почти неполживо опенсорсно.
- Java следует принципу write once во всём. Java никогда не ломает обратную совместимость - твой код, написанный на Java 1.2 будет работать на Java 18 - и не зависит от платформы, являя из себя единственный полностью кроссплатформенный язык с кроссплатформенной экосистемой (если не считать языков-паразитов на JVM).
Тред по жабе на гитхабе: https://github.com/java2ch/java-thread
Вики по вкатыванию в джаву: https://github.com/java2ch/java-thread/wiki
Предыдущий: >>2443253 (OP)
Ну нравится тебе сосать хуй майкрософтов, ну почему нельзя тихо сосать? Нам, адекватным господам до этого дела нет
Почти квадрипл был блен
А уж опхуй, перекатывающий до 1000, вообще за гранью доьра и зла.
В итоге тред висит на первой странице, залётные петушарперы его видят и срут до самого бамплимита.
>где нужно явно указывать тип объявляемых переменных (aka со строгой типизацией)
В петухоне строгая типизация, шах и мат
Чё? Там же можно писать говно типа
variable = new Double();
variable = "50";
variable2 = 10+variable;
Как всегда путают строгую и статическую типизацию
Вот думаю, когда вернусь к кафке какую дочитать?
Видел в интернете сравнение, что эффективная лучше первого издания гайда. Но второе издание на год свежее.
Бесполезно, правила-то формально он не нарушает.
ОП - петух
Кубернетес - сервер приложений
Джава - не нужна
Сишарп - топ
Это синоним понятия "слабая типизация".
Я вообще о чём: сильная-слабая это условные понятия. Так-то даже в го (петухоланге?) есть неявные касты, но он щитается сильно типизированным, как и питухон (и жаба).
А статическая-динамическая не мешает языку быть строго-нестрого типизированным, можно строго типизированный питухон иметь, а можно нестрого типизированную сишку.
Петушарперу - не сидится в своём треде, ведь петушарп не нужный язык.
Не кажется.
Это кек из прошлого треда, когда местные ментальные диды охуели от существования ленивых вычислений и свалили это на оптимизации жвм.
>как и питухон
В каком месте питухон у тебя сильно типизированный?
Ты его с перлом не попутал, случайно, лол?
>Ты его с перлом не попутал, случайно, лол?
В перле как раз полно неявных кастов, в отличие от
Да пусть перекатываю, тебе жалко?
Нет, питухон как раз таки с сильной динамической типизацией.
А вот чистая сишка - со слабой статической.
https://www.cisin.com/coffee-break/technology/c-vs-java-which-is-better-for-building-your-product-2022.html
если коротко, C# выигрывает в скорости сгенерированного кода, а Java в безопасности.
А почему у жабки и петухона сильная, а у сишки слабая? Какие там есть неявные кастинги, из-которых она слабая?
>просто нет булевых типов
Можно подумать в той версии стандарта, где есть булевы типы так сделать не получится и компилятор выругается если в условие положить что угодно кроме булева.
А ещё всё есть воид поинтер и наоборот.
Более поздние стандарты - это обратная совместимость.
А разве кустинг к войд поинтер не должен быть явным?
>А разве кустинг к войд поинтер не должен быть явным?
Тут я немного про другое хотел сказать: в сишке помимо прочего и типизация ещё и не совсем статическая, ибо через войд поинтеры можно "терять" типы и кастовать всё во всё.
Да нет уж, нахуй такое не нужно.
Вот тот сахар, который есть в Groovy - это то, что надо.
И то даже, местами, лишнее.
Масса туповатых анальников не понимает простой вещи - джава - это простой язык. С простым синтаксисом. Это позволяет человеку читать его на уровне бессознательного. И это позволяет делать очень хорошие IDE, анализаторы и т.п. - инструментальная поддержка у джавы - на порядок лучше, чем у любого другого языка.
Что может идея делать с джавой, из того что не умеет студия делать с шарпом?
мутабельные листы не нужны
Ты целый гор не переставая смеёшься с одной и той же шутки? Обратись к психиатру, серьёзно.
Главное, о чём стоит задуматься - это тот факт, что компилятор жабы написан не на жабе.
Хочешь сказать что это невозможно или что?
А на чем была написана прошивка кофеварки того, кто писал компилятор С? Синк эбаут зис мэн
Кэп
Ну потому что смешно же.
То есть, что бы их можно было скачать с сервера на пк через класс URL. Раньше помогал бесплатный Ucoz, но недавно оттуда стало невозможно выкачивать файлы и я хз почему :с Может хостинг кто знает бесплатный для этого ?
localhost
Аноны, босс дал задание парсить профили на фейсбуке, я хз с чего начать. Java подойдет для этой цели?
По существу вопросов не имею, петухон это как раз язык для гнилых задач и копроработы - спам и прочие помехи людям. Только вот называть петухон надо правильно. Петухон - петухон. Питон - животное.
github.com
Подойдет что угодно в чем ты разбираешься.
>парсить профили на фейсбуке
Python однозначно. Зачем что-либо еще, когда для парсинга питон является де факто стандартом?
На жабе конечно есть jsoup, но нахуя целую жабу для такого тащить?
>компилятор жабы написан не на жабе
Ебан? Компилятор как раз таки на жабе написан. А вот сама JVM уже на С++.
https://github.com/openjdk/jdk/tree/master/src/jdk.compiler/share/classes/com/sun/tools/javac
Я другой анон, но мне тоже хочется написать парсилки для личных нужд. Пока забивал на это дело.
Ну jsoup я немного ковырял. На жабе уже год работаю. А питон я в глаза видел раз 5, почти не знаю его синтаксис.
Мне все равно брать питон?
Ну для личных нужд можешь на чем угодно писать, jsoup вполне позволяет это делать на жабе, никто не запрещает. Просто если делать кому-то парсер под заказ, то лучше на питухоне, просто потому что так принято.
Ну а по функционалу у питонячих либ есть преимущества? Или все преимущество, что jvm не надо тащить?
jsoup жабы и beautifulsoup у питона по сути одно и то же с одинаковым функционалом, jsoup - это порт bs с питона на жабу. А кроме этого я ничего не использовал, увы
Лол
Двачую.
Для каких задач?
>де факто стандартом
Стандартом для парсинга является Perl.
Питон - хуита для детей.
Собственно, с этим и связана его популярность в последние годы - на нём пишут не- или недо- программисты.
Питон - новый перл.
Можно говорить что угодно, но перл умер, и ничего с этим не сделать. Для говноскриптов на 50 строчек для парсинга, переименовывания файлов и других подобных говнозадач надо юзать петухон или жопаскрипт, и все прекрасно обходятся без $_ =~ y/a-z/A-Z/ unless $_ m/q/;
Каковы критерии человеческого фреймворка? Чем спринг не устраивает?
Компилятором джавы.
Кваркус, микронавт, vert.x (или netty, если нужен лоулевел), javalin. Много всякого есть.
Заранее спасибо.
ip клиента*
Если это SpringMVC - добавь в параметры метода HttpServletRequest, тебе спринг туда подсунет сервлет реквест, а потом в методе из него достань все что тебе нужно - ип, дату/время запроса, урл, хедеры - не помню точно что в нем есть, но если там чего то нет - значит этого нет нигде.
В webflux вместо HttpServletRequest - ServerWebExchange.
>>инфу о времени и дате запроса?
А еще ты можешь просто записать время вызова метода через LocalDAteTime.now() и не мучать сервлеты.
Ты так говоришь "знать", будто от тебя требуют учить два новых языка программирования и фреймворки к ним, хотя это всего лишь кафка и грпц.
Они, конечно не везде используются, в нашем легаси вместо кафки IBM MQ, а вместо grpc - SOAP.
Спасибо, анончик!
class Main {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
String str = "qwerty";
int num = 0;
while (!str.equals("0")) {
str = console.nextLine();
try {
num = Integer.parseInt(str);}
catch (Exception e) {
System.out.println("Invalid user input: " + str);
}
System.out.println(num*10);
}
}
}
сам допер, я гений Java
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
String str = "qwerty";
int num = 0;
while (!str.equals("0")) {
str = console.nextLine();
try {
num = Integer.parseInt(str);
}
catch (Exception e) {
System.out.println("Invalid user input: " + str);
continue;
}
if (num != 0) {
System.out.println(num * 10);
}
}
}
}
Не поняла, у тебя же условие цикла проверяется уже после вывода, очевидно же, что 0 выведется. Можешь переписать цикл так:
while (!str.equals("0")) {
try {
final String str = console.nextLine();
final int num = Integer.parseInt(str);
if (str.equals("0")) {
break;
}
System.out.println(num*10);
} catch (Exception e) {
System.out.println("Invalid user input: " + str);
}
}
>пока не доделаю эту задачку - отдыхать не пойду
В этом и проблема. Если переспать, то задача решится за 5 минут.
Всем известно что решения приходят в ванной комнате, в туалетной комнате или в спальной комнате.
Или если ты не мам я долбаеб - то где угодно.
Да, что-то такое, примерно.
Под это дело даже есть теоретическая база - "hammock driven development":
https://github.com/matthiasn/talk-transcripts/blob/master/Hickey_Rich/HammockDrivenDev.md
https://learning-notes.mistermicheels.com/mindset/hammock-driven-development/#stop-consciously-thinking-about-the-problem
Вот это дело.
И еще условие цикла заменить на while(true) а то фиг ли оно два раза проверяется
Точно, не то скопировалось.
И if (str.equals("0")) заменить на if (num == 0), чуть быстрее будет работать.
Во всех, где может что-то сломаться на проде, и продебажить нельзя, но можно у саппорта запросить логи. Обычно да, catch.
Какая нахуй красота кода в жабе?
> А в методах когда что то происходит нужно писать info ? Например метод закачивает файлы, то я это логирую через info ?
Нужно знать меру. В этом случае имеет смысл, например, если сервер может быть недоступен, и чтобы явно сохранить, что удалось загрузить, а что не удалось.
ENTER
sout
ENTER
"BAZA"
А если она из фг ?
> не ломает обратную совместимость
А нахуя тогда кабанчики на жабе восьмой сидят до сих пор? Просто бы обновились, лол
Ломает обратную совместимость, но не так сильно, как некоторые языки. Если в PHP при обновлении вообще всё сломается назуй, то в жабе можно потратить немного времени на переход с минимальными правками в коде.
catch нужен для борьбы с проверяемыми исключениями, чтобы оьорачивать в непроверяемые.
Как вылазит?
Во всех. Логируй все и везде. В продовом рантайме внятные логи --- одна из немногих опций понять, что за хуйня произошла.
Но чтобы не просадить перформанс, логируй под разными логгинг-уровнями, держа включенным по умолчанию только info. Оборачивай низкоуровневые логи (debug, trace) в проверки isDebug/TraceEnabled, чтобы не собирать лишних данных в рантайне когда debug/trace отключен.
ПИШЕШЬ ЛОГИ НА КАЖДЫЙ ПУК
@
ПРОД УПАЛ И НЕ ПОДНИМАЕТСЯ
@
ЛЕЗЕШЬ В ЛОГИ
@
ОШИБОК НЕТ
@
3 ДНЯ ПЕРЕБИРАЕШЬ КАЖДУЮ СТРОЧКУ
@
УЖЕ ДУМАЕШЬ КАК НОВУЮ РАБОТУ ИСКАТЬ
@
СЛУЧАЙНО ЗАМЕЧАЕШЬ ОТСУТСВИЕ СВОБОДНОГО МЕСТА НА ДИСКЕ
@
БАЗА С ЛОГАМИ ПЕРЕПОЛНИЛАСЬ И УРОНИЛА ПРОД
че все от тебя одного зависело?
Лол
Это же пиздец сколько данных. У меня вот где-то 300к юзеров и это пиздец, дебаг логи можно включать только на короткое время, а если в нормально режиме писать мало, то логи становятся бессмысленными. Соответственно, держу включенным только info с короткими сообщениями и traceid.
А всё, что можно, сохраняю в базу, соответственно, по базе можно понять, какая сущность с какой связана и когда была обновлена, дальше уже обычно можно по коду догадаться, что пошло не так.
мимокрокодил
Собственно, для себя сделал такой вывод, что подробные дебаг-логи хороши только для тестов, а в бою они всё равно никогда не будут подробными, ты замаешься столько писать и, главное, хранить.
Поэтому внятная бд, которая сама своей структурой отвечает не только "что", но и "как" это чуть ли не единственное решение.
Как максимально тупой пример, если у тебя один юзер может позвать другого, то есть у тебя есть сущности юзер и реферальная ссылка, то у тебя не просто должен быть fk со ссылки на владельца, но также и у приглашённого должен быть fk на ссылку, по которой он зарегистрировался. А может даже в отдельной таблице отдельно набор ссылок, по которым он пытался зарегистрироваться, с primary key по email.
Тогда ты всегда сможешь глядя на таблицу понять, почему один Петя стал другом Васи, а не Сережи, по какой ссылке и когда это произошло. И всё это без логов.
Хотя может я и неправ, хз
У нас в рабочем проекте есть логи, но на них не так сильно полагаются, т.к. есть такая хуйня, как аудит операций - отдельная гигантская таблица, куда пишутся все действия пользователей, типа "Зашёл в систему и получил такую-то сессию", "Запустил отчёт", "Удалил запись", "Откатил статус". Аудит запилен в первую очередь для безопасников, хотя неплохо помогает и для исследования непонятных багов с прода, но он занимает пиздец дохуя места, около четверти всей БД. Местами ради аудита приходится класть на производительность, например, даже если работаешь только с ID, для журналирования надо вытащить по ID доп. инфу из базы лишним запросом, вроде наименования клиента.
купить нельзя, только бесплатно
через степик, перерегистрацию триала, ЕАР
на ютюбе гайдов полно
Who watch the watchers
> - На Java написано столько всего, что любая твоя невообразимая идея уже существует в виде библиотеки, которую можно скочать и юзать
Аналог itertools из питона есть?
apache commons collections
Стандартная stream api
Кабаноиды, сэр. Кабан не понимает "кодить сложно на старом говне, общие траты в перспективе увеличиваются", кабан понимает только "РАБОТАЕТ? НАХУЙ ЧЁ ТО ТРОГАТЬ И ОБНОВЛЯТЬ??? У НАС КРИЗИС БЛЯДЬ!!!!!!!!!"
Ну вот стал ты лидом, а AdINC придумали должность директора, и так далее до бесконечности.
А я как раз нашёл последнюю ошибку в своём языке программирования.
>Сотона
Какая встреча, гражданин начальник!
тут вопрос скорее про другое: если я меняю код с верхнего на нижний - он не компилируется
точнее не не компилируется, не инициализируется. Массив как будто одномерный остается
Не плохо, а чё.
Это ебучий задачник джава раш(да-да, я знаю, что он дно, я учусь не по нему, просто задачки решил порешать), тут result не надо объявлять.
Вы мне скажите - если я все норм сделал, то я погляжу правильный ответ, иногда эта херня безбожно тупит и требует КАКОГО-ТО ОПРЕДЕЛЕННОГО решения.
первое утверждение к другому скрину - понял, принял, спасибо!
По второму утверждению: а почему? Поле же паблик, то есть оно должно быть видно во всем классе
Затем, что nextInt не учитывает перевод строки, у них на скрине числа будут читаться только после того, как юзер нажмет Enter
>>461909
За последние 2 года я массив использовал ... не могу вспомнить даже когда.
Есть же ArrayList, есть же StreamApi, нахуя ты это говно мамонта юзаешь?
И даже не foreeachloop или как там, i++, блядь, ну такого легаси уже нет нигде, даже 8 это уже легаси, на всех вакансиях минимум 11.
Эти знания тебе не пригодятся нигде, иди лучше про мейби, мапредус, флатмап почитай.
таски решай долбаеб
https://youtube.com/playlist?list=PLtPJ9lKvJ4oiNMvYbOzCmWy6cRzYAh9B1
И ещё вопрос, я буду понимать как всё работает в интернете ?
https://youtube.com/playlist?list=PLtPJ9lKvJ4oiNMvYbOzCmWy6cRzYAh9B1
И ещё вопрос, я буду понимать как всё работает в интернете ?
Просто ебануть сервис валидации, где я буду это все ручками проверять, и этот сервис вызывать в контроллере сразу после того как дто получена (или же лучше вызывать этот сервис валидации в других сервисах?)
В общем хуй знает как лучше
Любая нетривиальная логика чуть сложнее конвертеров должна быть в сервисах. В контроллере вызываешь конвертер во внутренний объект, его передаёшь в сервис и там уже проводишь валидацию.
То есть конвертацию DTO -> Entity нужно прямо в контроллере делать? У меня логика очень простая (делаю тестовое), дто можно напрямую в ентити сконвертить, но только если само дто корректное.
> дто можно напрямую в ентити сконвертить, но только если само дто корректное.
Странная задача. Контроллеры должны быть тупыми и ничего не знать о правильности ввода, кроме совсем прямых случаев, к которым уж точно не относится проверка id на наличие в базе. Сервис наоборот должен быть умным, но ничего не знать о внешнем мире, в частности, не знать о существовании DTO, т.к. они могут приходить из разных видов источников, и обычно на каждый такой источник по своему набору DTO. Но если в тестовом так требуется, прилётся забить и делать как скажут.
В моем понимании сервис обычно принимает на вход дто. Типо если мы условно хотим PersonDTO полученную в контроллере положить в таблицу БД tb_person, то мы должны эту dto отправить в сервис, в сервисе вызовется маппер/другой сервис, откуда к нам уже придет ентити и эту энтити мы кладем в БД.
То есть цепочка PersonDTO->PersonEntity->db
Какие объекты должны принимать сервисы, раз они не должны знать о существовании дто? Дополнительный слой между дто и энтити?
Уникальность в базе - это не валидация. Делаешь или предварительно запрос к репошке в сервисе или в базе делаешь ограничение уникальности. Потом бросаешь исключение/оборачиваешь исключение драйвера базы и в адвайсе отдаешь, как 422. Я так делаю, предпочитаю через констрейнты.
А проверка уникальности внутри одной дто делается кастомным бин валидатором для дтошки. Там уже возвращаешь 400.
>>Требуется проверить, что элементов с такими id еще нет в бд,
я б сервисе это проверял, ты все равно без запроса в бд об этом не узнаешь, а значит в контроле это тащить не надо.
>>двух одинаковых айдишников нет в дто.
ну самое банальное list.size() == Set.copyOf(list).size().
Если они там раскиданы по разным полям - ну соберешь через стримы в один, потом проверишь точно также
>>ебануть сервис валидации
там проверка в 2 строчки же - запрос в бд с ответом тру/фолс и проверка дублей.
Сервис имеет смысл пилить если там действительно какая то йоба с кучей запросов в бд и другие сервисы, свичкейсы и ифелсы. Да и то возможно методом в этом же классе обойтись можно.
Вообще для валидации можешь просто писать свои валидаторы через ConstraintValidator. Например проверку на дубли там можно сделать. А вот если там запросы в бд - только в сервисе, чтоб не размазывать логику по слоям.
>>То есть конвертацию DTO -> Entity нужно прямо в контроллере делать?
Лучше в отдельном мапере, который вызывается на уровне сервисов.
Открой для себя MapStruct, с ним все просто.
> В моем понимании сервис обычно принимает на вход дто. Типо если мы условно хотим PersonDTO полученную в контроллере положить в таблицу БД tb_person, то мы должны эту dto отправить в сервис, в сервисе вызовется маппер/другой сервис, откуда к нам уже придет ентити и эту энтити мы кладем в БД.
Можно и так, тогда будет некий "фасадный" сервис, который будет вызываться только из контроллера, проводить первичную валидацию и конвертацию.
> Какие объекты должны принимать сервисы, раз они не должны знать о существовании дто? Дополнительный слой между дто и энтити?
Объекты никакие сервисы не принимают, есть только конвертеры, которые преобразуют DTO во внутренние объекты и наоборот.
>Объекты никакие сервисы не принимают
Я про то, что методы сервиса могут ДТО принимать. Разве нет? В сервисе PersonService есть метод savePerson(PersonDto personDto), который уже внутри себя вызывает маппер и сохраняет полученное ентити.
быстрый, никакой магии кроме мб самой кодогенерации, почти всегда идут парой мавен плагины ломбок и мапструкт, легко мапить как простые так и сложные поля, в проде почти всегда он
моделмапер сам использовал когда вкатывался и петы писал, с тех пор о нем и не слышал.
Я посмотрел и модел маппер реально магический и тормозной. Но он у меня на проекте. Правда там до прода еще хз сколько. Это плохо?
Если сложного мапинга нет, то наверное пойдет. А когда там из дто надо достать список объектов, достать из каждого какое то поле и соединить все это в одну строку - мэпстракт куда проще будет. В нем в принципе можно что угодно в поле смапить через отдельный метод.
Не решай. В рф 5 компаний, которые спрашивают литкод.
А за пределы рф ты вряд ли теперь устроишься.
Размерность массива должна быть константой, клоун.
Тебе IDE об этом не написала?
Хочешь подобной хуиты - делай на списках.
Или одинаковую размерность у вложенных массивов.
В довесок в восьмой жабе всегда идёт четвёртый спринг и сервер приложений Java EE 6.
Массив - это говно мамонта?
И код циклов надо переписывать с появлением каждого нового сахара в "новых" никому не нужных версиях?
Да ты, чувствуется, настоящий синьор.
>>с появлением каждого нового сахара в "новых" никому не нужных версиях?
стримы вышли в 8 версии, уже 10 раз можно было все старое говно переписать.
Чувак, стримы сами по себе ничего не улучшают.
Если у тебя в старом коде есть цикл for, то переписывать его на стрим не просто бесполезно, а даже вредно - for эффективнее.
Стримы - они не для этого.
Вся кодовая база должна быть value oriented (fp-like, если угодно), тогда в этом есть смысл.
И я имел в виду бесполезный сахар в версиях после 8.
Ты хоть понял, что этот код делает?
В скале есть похожий матчинг case classов, а вообще НИНУЖНО. Синтаксис должен оставаться простым и явным, каким его создали в НАУЧНЫХ лабораториях УЧОНЫЕ. А вот эта вот вся залупень тупо от скучающих первокуров не видавших больших ЗАЛУП. Безумцы открывают ящик пандоры.
в говне печоные
джей и апл кстати тоже
Я понял, что выходить на рынок вакансий надо будет с парой готовых проектов. У меня уже есть идеи, так как окунувшись в ИТ я понял какие задачи мои(занимаюсь предпринимательством в данный момент) оно может решать.
Идеи такие: интернет магаз с небольшой номенклатурой(буквально 15-20 позиций), с оплатой на сайте, с доставкой всякими сдэками, с админкой, чтобы можно было легко вносить изменения в позиции(цены, фотки, описание).
Вторая идея: приложение(или просто сайт) с предзаказом в фастфудной. Типа тоже регаешься, выбираешь позиции, указываешь время и т.д.
Вопрос: насколько широко я раскрыл ебало? не треснет? в одного можно такие проекты потянуть в какие-то адекватные сроки? Ясен пень что визуал будет максимально шаблонный и простой, фронт я не изучаю, особо и не планирую.
>окунувшись в ИТ я понял какие задачи мои(занимаюсь >предпринимательством в данный момент) оно может решать.
хуево выразился, я и так знал, какие задачи оно может решать, правильнее будет выразиться так - я задумался, а смогу ли я сам решить свои текущие задачи? И опять же я понимаю - что эти задачи должны решать спецы за деньги, так вот я сам хочу стать таким спецом и решать чужие подобные задачи за деньги.
Тупые вопросы от вкатуна по спрингу:
- Правильно ли я понимаю, что все контроллеры должны сами себя мапить на конкретные юрл? Не нашел способа задать какой то аналог роутера, который бы каждому пути, какой то контроллер сопостовлял. аналог джанговского urlpatterns
- Как написать хэндл который бы имел доступ и к реквесту и респонсу? Хочу написать что то вроде такого: func handle(request) -> responce
Потыкай сервлеты, тебе понравится.
Реально же сложно. Половины удобных функций нет в 8 жабе.
Functional bean registration
1) Может кто-нибудь пояснить за spring cloud? Зачем он нужен, если есть kafka - для общения между микросервисами? Единственное, что заценил - это OpenFeign в вопросе реализации клиентов для стороннего api вместо использования RestTemplate - ов и прочего говнища. Как часто используется на практике?
2) Кто-нибудь может пояснить за необходимость знать Spring Integration и Spring Batch? Spring Integration, насколько я понял, связан с реализацией каких - то EIP паттернов разработки, которые какой-то шиз в своей книжке в 2003 году описал. Насколько важно это всё знать, какова вероятность применения на практике?
3) Какой должен быть уровень знания брокеров сообщений? Допустим, я умею поднять zookeeper и kafka с дефолтными настройками, и через них с дефолтными конфигами пересылать сообщения из одного микросервиса в другой, используя KafkaTemplate на Producer - е и KafkaListener на Consumer-е, думаю, что этих знаний очень мало. Насколько важно знать тонкости настройки Kafka и прочих брокеров?
4) Spring Security - знаю базу. Нужно ли Oauth2 учить?
5) Spring WebFlux, RSocket и тд - надо?
6) Docker. Умею писать ручками Dockerfile для приложения, свзязать его с какой-нибудь бд - шкой с помощью Dockercompose и поднять локально в контейнерах. Что еще нужно?
7) Kubernetes - выглядит как лютый ад, почему то при первом же знакомстве с первого взляда появилась неприязнь. Стоит ли изучать, или понадеяться, что придет девопсер и мне ни разу не придется прикасаться к подобным делам?
8) Jenkins - дело девопса?
> 1) Может кто-нибудь пояснить за spring cloud? Зачем он нужен, если есть kafka - для общения между микросервисами? Единственное, что заценил - это OpenFeign в вопросе реализации клиентов для стороннего api вместо использования RestTemplate - ов и прочего говнища. Как часто используется на практике?
Не используется.
> 2) Кто-нибудь может пояснить за необходимость знать Spring Integration и Spring Batch? Spring Integration, насколько я понял, связан с реализацией каких - то EIP паттернов разработки, которые какой-то шиз в своей книжке в 2003 году описал. Насколько важно это всё знать, какова вероятность применения на практике?
Не нужно.
> 3) Какой должен быть уровень знания брокеров сообщений? Допустим, я умею поднять zookeeper и kafka с дефолтными настройками, и через них с дефолтными конфигами пересылать сообщения из одного микросервиса в другой, используя KafkaTemplate на Producer - е и KafkaListener на Consumer-е, думаю, что этих знаний очень мало. Насколько важно знать тонкости настройки Kafka и прочих брокеров?
В принципе, хватит.
> 4) Spring Security - знаю базу. Нужно ли Oauth2 учить?
Полезно будет. Но учить не надо - в пете юзай.
> 5) Spring WebFlux, RSocket и тд - надо?
Вебфлюкс интересно, рсокет в пизду.
> 6) Docker. Умею писать ручками Dockerfile для приложения, свзязать его с какой-нибудь бд - шкой с помощью Dockercompose и поднять локально в контейнерах. Что еще нужно?
Пет-проект какой нибудь, крутящийся в докере.
> 7) Kubernetes - выглядит как лютый ад, почему то при первом же знакомстве с первого взляда появилась неприязнь. Стоит ли изучать, или понадеяться, что придет девопсер и мне ни разу не придется прикасаться к подобным делам?
Правильно. Нахуй его.
8) Jenkins - дело девопса?
Не, это прикольная штука. И не особо гемор.
Ни разу не слушал курсы и, если честно, и даже немного их презираю, тк учился всему сам лет 10 назад, когда никаких курсов не было.
Конкретно с отусом сталкивался только на хабре и там из всех корпоративных блогов у них самый уёбищный, они переводят и выкладывают кучу "статей", которые и helloworld'ами-то назвать стыдно. У меня в дипломе воды было меньше, чем у них. Позорище.
К слову, недавно попросили посоветовать какой-нибудь курс одному чуваку, который хотел вкатиться, и я посмотрел/посравнивал все эти яндекс практикумы, скиллбоксы, скиллфекторе, хекслеты и иже с ним. Ты не поверишь, какая там херь, научиться программировать по таким курсам невозможно.
Выходит, что нода или го сильно современнее под капотом.
Читай шапку, блядь!
> 7) Kubernetes - выглядит как лютый ад, почему то при первом же знакомстве с первого взляда появилась неприязнь. Стоит ли изучать, или понадеяться, что придет девопсер и мне ни разу не придется прикасаться к подобным делам?
И да, и нет. Кубернетес это прям операционная система для распределенных приложений и если у тебя больше одного сервиса, то с ним становится удобнее.
Всерьёз изучать его внутрянку не нужно, а вот как пользователь лучше ознакомиться, рано или поздно всё равно столкнёшься, много где разработчики сами себе описывают сервисы в кубах, а девопсы занимаются администрированием самого кубернетеса изнутри.
Да и в целом оно довольно удобно, когда научишься. Описываешь в ямлике какой-нибудь деплоймент: возьми такой-то контейнер, выдай ему столько-то памяти, смапь ему вот такой вот конфиг и запусти на таком-то порту и просто скармливаешь этот ямлик кубам и там всё само происходит. С точки зрения клиента от docker compose оно отличается большим количеством свистелок и инструментов. да собственно docker compose легким движением руки подхватывается docker swarm, становясь вполне себе альтернативой кубернетесу. если сворм жив ещё, конечно
Блять, http-запросы, рпс, сигналы, джобы или сообщения из очереди, не важно. Можем назвать это "вызовами", если тебе так легче.
Так эти вакансии ебанутые бабки составляют. Гуглят "java" и все слова, что на английском в выдаче будут добавляют в список требований.
Этого всего нет в стандартной библиотеке, долбоёб. И зависти реализация только от реализации сторонней библиотеки.
Ты дурачок что ли, я спрашиваю про сам джавовый рантайм. Так как до релиза loom он вообще не умеет в виртуальные треды, это не может не накладывать соответствующие ограничения. Я верю, что могут существовать фрейморки, с самописным event loop и промисами, но поскольку всего этого в стдлиб нет, то в итоге использовав такую хуйню ты не сможешь использовать большую часть экосистемы.
А теперь сравни это с го, где всё это есть просто в ядре языка и вообще весь существующий код на го написан с поддержкой асинхронности. Да что там, сам гошный рантайм умеет насильно, в режиме вытесняющей многозадачности, менять контекст исполнения, чтобы одна горутина не могла надолго залочить испольнение остальных.
> то в итоге использовав такую хуйню ты не сможешь использовать большую часть экосистемы.
Че ты несёшь вообще?
>Как я понял, джава обрабатывает каждый запрос
Да, язык обрабатывает запросы. И вот эти люди сравнивают что-то там "под капотом". Представьте лицо этого субъекта, когда он обнаружит существование таких невероятных технологий, как неблокирующие контроллеры.
Так как вся реактивщина написана на отдельных от стандартной либы библиотеках - весь реактивный стек это отдельная экосистема - и хттп и драйвера к базам и ормы и клиенты очередей сообщений и куча другого обвеса.
А в ноде и гошке асинхронное апи не отделено от синхронного? Если оно и там отделено, то какая разница в стандартной библиотеке реализованы эвент залупы или в отдельных библиотеках?
Как ты не поймешь, ну вот важно человеку не методы на промисах вызывать, а await писать перед ними. У него от этого, может, ощущение причастности к самым модным веяниям возникает.
int number = 5 + 5 * 5;
Чему будет равно значение number?
Какие иксы к зепке я могу получить за правильный ответ?
Нет, не проходит, потому что я анальник с комплексом неполноценности, он охуел что ли решать не так, как я сказал? Выёбистый дохуя чтобы проходить дальше
Да
Разговор двух первокуров.
Лобок для кого придумали? И сеттеры антипаттерн, за него в хороших компаниях пиздят не менее, чем за публик поля.
Спроси в JS-треде.
Правда ?
Единственное преимущество геттеров-сеттеров над прямым доступом к полям --- то, что оные являются частю JavaBean конвеншена, на котором построена вся экосистема джавы. В остальном это ебанистика. Но ебанистика намертво устоявшаяся, к сожалению.
>Выходит, что нода или го сильно современнее под капотом.
Это --- ложная дихотомия. Позиксные треды и зеленые потоки --- разные штуки для разных задач, одно другое не взаимозаменяет, а взаимодополняет.
Но вообще это довольно рофельная история, на мой взгляд. На заре времен джава поддерживала многопоточность, а нода --- нет. Причем первая была в поддержке многопоточности настолько охуенна для своего времени, что идея Java Memory Modelи в том или ином виде начала перекочевывать в другие экосистемы. В однопоточной ноде же тем временем без позиксных потоков было грустно, поэтому эволюция ноды сразу пошла в сторону асинхронности. Тупо от безнадеги. Сначала это был колбэк хелл, потом придумали промисы, и понеслась.
Тем временем сервисы становились все более высоконагруженны, так как количество сычей в интернетах росло, и внезапно выяснилось, что скейлиться потоками --- довольно затратно. С каждым новым потоком растет потребление процессорного времени на их скедулинг. Асинхронность была выходом из этой ситуации, но до изобретения всяких языковых штук типа async/await и корутин кодить асинхронно было лютым геморроем в плане кодинга и дебага. Поэтому когда такие языковые фишки появились --- они выстрелили.
На данный момент джава отстает по языковым средствам. Project loom в будущем призван закрыть эту проблему. Но это не значит что сейчас асинхронности в джаве нет ни в каком виде, и проблема переполнения тредпула запросов в ней неизбежна.
Гугли jansi
дВачУю=))) брАтуха ООП для терпил ссаных я на С тут написал 200к строчек кода у меня все работает епты бля!
Так чел, без сарказма --- дтоха с геттерами и сеттерами это и есть полотно говнокода, по сравнению с простой компактной структурой. Ладно хоть ломбок с рекордами изобрели.
Ну во первых да, а во вторых сеттеры сами по себе ублюдское днище ебаное. Если делаешь модельки, то всегда лучше поставить визеры вместо сеттеров через @With, а если пишешь что-то в настоящем ОО-стиле, то там в принципе и впихнуть сеттеры будет некуда, они будут бесполезными.
Логи читают через ELK, то что в консоль выводится это баловство.
> к сожалению
Читай про генерацию и назначение прокси классов, а потом свою хуйню еще раз прочти.
Да отделено, конечно.
> Так как вся реактивщина написана на отдельных от стандартной либы библиотеках - весь реактивный стек это отдельная экосистема
Я именно это и имел ввиду. Так как апи джавы по умолчанию не асинхронные, то получается, что я не могу взять рандомную либу и заюзать, получается, что мой выбор ограничен. Или возможно существуют какие-то офигенные либы, которые написаны сугубо синхронно и поэтому опять же не подойдут. В отличие языков, где всё асинхронно сразу по умолчанию.
Так то в любом языке хоть пхп можно написать свой эвент луп, свои промисы и свои системные апи и потом писать неблокирующийся код. Только от этого сам язык и экосистема асинхронными не станут.
>>462719
Надеюсь теперь понял.
Грамотный ответ, спасибо. Если бы ты ещё раскрыл
> Но это не значит что сейчас асинхронности в джаве нет ни в каком виде, и проблема переполнения тредпула запросов в ней неизбежна.
цены бы ему не было
Аргумент с проксей работает лишь в защиту сложившейся экосистемы, где всякие ОРМы подвязываются на ентити чтобы обслуживать коллекции-связи и прочие lazy-поля. Что я и признал выше --- сложившийся статус кво это единственное что оправдывает геттеры-сеттеры. Но так уж вышло что на ОРМы мне давно похуй, а сам в клиентском коде я проксированием дтох никогда заниматься не стану --- навешивание аспектов на геттеры-сеттеры ИМХО полная залупа.
Так что не убедил.
Ага.
>Если бы ты ещё раскрыл
Ну, есть projectreactor, есть webflux. Есть nio, есть r2dbc, из того что навскидку вспомнил. Чай никто ж тебя не заставляет в 2022м блокироваться на вводе-выводе и засирать тредпул. Не так круто конечно как корутины в котлине, но лучше чем вообще ничего.
Ты ебанулся? Я уверен, в 100 процентах ентерпрайза будет круд хуерга с вкраплениями какой - то бизнес логики. Все постбин процессоры - это извращения и если челикс не может написать без них - он конченный уебан. Фэктс
Можешь ещё над несколькими датасорсами поржать.
>Или возможно существуют какие-то офигенные либы, которые написаны сугубо синхронно и поэтому опять же не подойдут. В отличие языков, где всё асинхронно сразу по умолчанию.
Так а пример можно, какой тип библиотек тебе может быть недоступен?
Да и в языках, где синхронное и асинхронное апи есть в стандартной либе тебе никто не гарантирует, что все сторонние либы будут использовать оба подхода. Это в любом случае двойная работа.
>Если бы ты ещё раскрыл
netty начал разрабатываться в 2004 - еще до появления ноды и го. А в 2011 уже был вполне продакшн-реади.
хорошо переваривает множество юзеров?
Java никогда не ломает обратную совместимость - твой код, написанный на Java 1.2 будет работать на Java 18 - и не зависит от платформы, являя из себя единственный полностью кроссплатформенный язык с кроссплатформенной экосистемой (если не считать языков-паразитов на JVM).
А почему-то блядский Дженкинс хочет Джаву 1.8.
У автотестеров Джава 11 в Селениумах - потолок.
И только у разрабов Спринг позволяет использовать Джаву 18.
Второе:
Заебало, что мавен не может нормально в жирные jar-ники. Делает всегда кусками и без манифеста.
Хоть Градл умеет сразу.
А в Андроид студии пошли ещё дальше - там сразу и манифест есть и Градл настроен.
Так что насчёт совместимости, сомневаюсь. Пусть автор сам радуется, что игрушка для кнопочных телефонов на java 1.2 ME откроется в IDE и ещё можно запустить. Но толку?
> Так а пример можно, какой тип библиотек тебе может быть недоступен?
Ну к примеру, какой-нибудь клиент будет блокироваться, ожидая ответа апи, веб или системного, не важно.
> Да и в языках, где синхронное и асинхронное апи есть в стандартной либе тебе никто не гарантирует, что все сторонние либы будут использовать оба подхода. Это в любом случае двойная работа.
В таких языках как правило все либы пишутся сразу с поддержкой асинхронщины, потому что асинхронный код превращается в синхронный очень легко, в отличие от обратного.
> ОП пишет
ОП пиздит. Он вообще редкостный долбоёб, высрал говношапку вместо нормальной и перекатывает после 500.
Джава даже теоретически не сохраняет обратную совместимость. Например, в 8 жабе можно создать класс с названием var (похуй, что нейминг не соответствует соглашению), а в 11 уже нельзя. Но это не так важно, куда важнее то, что создатели стороннего софта часто лезут в недокументированные кишки жабы через рефлексию, а потом, когда детали реализации ломаются, все жидко обсираются.
> блядский Дженкинс хочет Джаву 1.8
У нас недавно его перевели на 11, видимо, он может с ней работать, но переход не бесшовный.
> мавен
Говно, но стандарт индустрии.
>>Java никогда не ломает обратную совместимость
Не то чтобы совсем не ломает, но с вероятностью 90% все запустится сразу или после мелких правок.
>>Дженкинс
>>Спринг
Это уже на усмотрение создателей либы, фреймворка. Они могут требовать жаву 8u341 и слать нахуй все остальные версии.
А делают ограничение для 8/11 из за использования новых фич джавы - стримов, комплитабл фучер и тп. Делать несколько реализаций (и главное тестировать их) накладно поэтому проще сразу сказать что те 10% что сидят на старой джаве не могут тянуть новые либы (а им похуй - у них и старые либы отлично работают)
>>А в Андроид
Там у них своя атмосфера. И свой тред.
>>создатели стороннего софта часто лезут в недокументированные кишки жабы через рефлексию
Что то такое проворачивает вроде только ломбок с его @SneakyThrows, все остальные популярные либы такими хаками после 9 версии уже не пользуются.
>игрушка для кнопочных телефонов на java 1.2 ME откроется в IDE и ещё можно запустить
Как раз таки java me и всякие java card, java embedded давным давно вымерли, и ты их уже не запустишь.
>>463111
>А почему-то блядский Дженкинс хочет Джаву 1.8.
>У автотестеров Джава 11 в Селениумах - потолок.
>И только у разрабов Спринг позволяет использовать Джаву 18.
Это проблема разработчиков библиотек, а не самой джавы. Код, написанный и скомпилированный для Java SE в 2002 году запустится и в 2022, но только если ты не будешь лезть через рефлексию во всякие ансейфы, кишки jdk итд. Возможно будут большие проблемы со свингом, например часть функционала просто не поддерживается в wayland, вроде того же java.awt.Robot с его фишками вроде снятия скриншота и перемещения курсора мыши, и в данный момент разработчики жабы пилят какие-то костыли. Ну и по мелочи - в том же гноме трея как раньше уже нет без дополнительного предолинга, поэтому свинг жидко обсирается при попытке свернуть в трей.
>>463111
>мавен
Мавен старая хуйня на самом деле. Он в 2004 году появился, так что ты от него много хочешь. Но вообще плагины решают проблему fat jar так-то. Да, нагромождение xml, но это собрать все в один джарник любой вкатун сможет по гайдам из мурзилок.
Лобок работает при компиляции, ему и не нужно никуда лезть, рантайм ведь ничего про проверяемые эксепшены не знает, это тупо проверка в самом компиляторе жабы.
А вот блядские сервера приложений, которые запускаются на 8 и падают с NPE на 11, эти хаки очень даже практикуют.
Весь лобок --- один сплошной хак. Он юзает annotation processor api (который обычно используется для кодогенерации на основе аннотаций). Но прикол в том, что этот api оригинально не дает возможность менять сорцы, AST-дерево, доступное через него, неизменяемо. Лобок же ректально получает доступ к мутабельной версии AST, и ее уже меняет. Верх инженерной мысли, вобщем.
>блядские сервера приложений
А нахуй они нужны в 2022 году? Они умерли вместе с Java EE. Вся эта срань в виде глассфиша, вебсферы, jboss, итд это натурально середина нулевых годов.
Сейчас все упаковывается в джарник и закидывается в докер контейнер.
Мы вот с вебсферы и четвёртого спринга слезть не можем до сих пор, и это у нас ещё не самое старьё, до сих пор используются и дорабатываются смежные системы, написанные на хранимых процедурах. Слезли бы давно, сверху давят и ставят сроки по отказу от старья, но даже обновление софта на следующую минорную версию всегда что-то ломает.
А вообще, кубернетес - это зумерский сервер приложений.
Давай начнем с того, что ты написал на своём До-диезе.
> где нужно явно указывать тип объявляемых переменных
Нинужна есть var, ясно тред нубасов, это собственно из пика с кококонтроллером понятно
Вывод: разработчикам javac надо просто дать доступ к ast для плагинов, как этол сделано в груви, и поменьше выебываться.
@
EJB-JAR.XML
@
SERVER-CONFIG.WSDD
@
BINDINGS.XML
@
PERSISTENCE.XML
Лум умереть не может, это часть java se.
Лумбок.
Надо через регулярные выражения посчитать кол-во скобок ( и ) и потом сравнить их.
Остальную хуйню я сделал а вот с этим проблема.
Но даже если б было нужно: как бы щас проксе есть альтернатива в виде вархендлов, можно в теории было бы подцепиться через них напрямую к публичным пропертям, без геттеров-сеттеров.
Обязательно прям регулярками? Это как забивать гвозди микроскопом.
Ты можешь тупо пройтись по строке и сравнивать каждый символ с символом олной из скобок, если совпадают, увеличивать счётчик.
Корректность расстановки скобок регулярками ты не проверишь никак, принципиально, доказано.
Так а че там считать то? Сначала паттерн-матчишь по ([\(]), потом паттерн матчишь по ([\)]), считаешь количество найденных групп и сравниваешь.
я 10 лет мучу бизнес и баб трахаю. До того домутился и дотрахался, что вот сижу учу джаву любую свободную минуту.
Зачем сторонний? Можно поднять свой oauth-сервер.
Хех. Вспоминается история одного чувака, которого я встретил как то на айти-конференции. Если я правильно помню, он до 40 лет занимался сопровождением многомиллиардных сделок и тендеров, имея с них процентик. Но в конечном итоге ему все равно пришлось вкатываться в айти. Как он рассказывал --- такого рода контракты невозможно заключать без моря выпитого алкоголя, и к 40 годам он уже просто не вывозил пьянство как должностную обязанность, тупо по здоровью.
Непонятно только почему он выбрал айти --- ведь тут то же самое пьянство, только платят меньше.
Хороший вывод. Я б его озвучил еще разрабам kotlinc, у которых plugin api доступен только из форка kotlinc репозитория.
Разве? Я вроде видел, что у них как раз плагины для компилятора как раз доступны.
Сами плагины --- да. А вот если ты свой написать хочешь, то придется склонировать реп компилятора и контрибьютить плагин в него. API как подключаемая джарка не распростряняется.
Не правда. Становись тимлидом и пусть шныри вкатуны переводят документацию. А ты только обкашливай вопросики
К сожалению --- да.
Значит, предложил решение.
С помощью переводчика читаю документацию и стэковерфлов с туториалами на изи. По началу было сложно воспринимать чушь которая выходила с переводчика т.к. перевод далеко не идеальный... А потом как то всё само заходить начало :/
Интерфейсами и паттернами. Ну или копипастой и кодогенерацией.
Я че то не видел в России индусов.
> их самих трогать нельзя? Кастовать тоже нельзя
Копипастой.
Вместо add(T)
Будет add(Int) add(String) add(Hui) add(Govno)
Структуру, куда будет добавляться каждый тип тоже копипастить
int[] String[] Hui[] Govno[]
>Например, в 8 жабе можно создать класс с названием var (похуй, что нейминг не соответствует соглашению), а в 11 уже нельзя.
Нихуя себе поломка обратной совместимости. Так можно любой багфикс считать поломкой обратной совместимости, если строить логику, основанную на багах. Поломка обратной совместимости - это когда ты написал хороший, чистый код, а он потом взял и не запустился после обновы жабы. Такого в джаве нет, если чё то и ломается, то ломается из-за привязки к кишкам.
На 100% сохранить полную обратную совместимость можно только перестав вообще вносить правки в жабу. Законсервировать как кобол на текущей стадии развития и потом искать пути для обхода текущих багов жабы.
> Такого в джаве нет, если чё то и ломается, то ломается из-за привязки к кишкам.
В восьмой жабе я мог спокойно пользоваться JAXB, а теперь надо тащить левые жарники с рантаймами всяких говноглассфишей. И так с кучей других API.
>>Такого в джаве нет
У меня например жук написанный на 11 в некоторых местах не компилируется в 17 из за добавления java.lang.Record.
Или название класса Record это тоже использование кишок?
Нет у него java.lang.Record, есть org.jooq.Record, который, очевидно, был импортирован, а не писался везде полным именем класса с пакетом. И теперь импортировать нельзя.
И что? Охуеть проблема полное имя класса написать или вынести в отдельный класс.
Немного не понял, в чём проблема. Прямо сейчас затестил - у меня всё работает.
Не вижу у тебя ни жуковский рекорд, ни джавовский. Ты вообще понял про что речь?
На каком гуй-тулките в жабе нынче модно писать оконные приложения?
на жаба скрипт
Спс, пойду потыкаю.
Так, формочку сделоль. А как там разметку создавать? Какие-то аналоги xaml есть?
> А как там разметку создавать?
Вся разметка пишется на жабе. Дизайнеры форм в IDE также генерируют код на жабе.
> Какие-то аналоги xaml есть?
Зачем нужны аналоги XAML, если XAML уже существует? Достаточно не лезть в жабу и выбрать подходящий язык для "оконных приложений".
ПОЧЕМУ У ТЕБЯ НАЗВАНИЕ КЛАССА С МАЛЕНЬКОЙ БУКВЫ СУКА???????????????????????????????????????????????????????!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Да, писать класс ради одного клика. Не то что в шарпе. Понял, как всё плохо с гуем в жабе?
Тоже думаю об этом...
> Не то что в шарпе.
Да не трясись ты так. Я немного погуглил и нашёл лямбды и всё заработало.
Сразу блять шарперов ищут под кроватью. Я изучаю все языки подряд и кайфую.
О.
Тогда пойду сразу на JavaFX взгляну. А то что-то свинг как-то сразу вызывает кучу вопросов, на которые ответ один.
Всё-всё. Исправился.
Я не петушарпер, просто хочу, чтобы никто никогда не писал гуй на жабе. Идею, например, надо срочно переписать на C++.
> я не петушарпер
Урокъ 5. Пятая теорема Петухана.
Аксиома: Не существует петушарпера, который смог бы скрыть от мира свой диагноз или сексуальную ориентацию. При критическом уровне ЗРАДЫ свиной визг настолько силён, что пробивает все системы защиты и маскировки петушарперов на планете
> не мешайте людям общатся
О какой-то хуите общаемся, логгеры, опхуй, гуи, лум, лабы, шарпобляди. Даже ООП-срач и Егорка были интереснее.
Добавлю тебе интересную тему для обсуждения. Как всё-таки ВКАТИТЬСЯ сейчас в жабу? Что нужно знать вкатуну????
Что нужно знать, то пишут в вакансиях. Кор, алгоритмы/структуры данных, спринг, REST, базы, хибернейт, очевидные Git и мавен, опционально докер.
Сложно википедию открыть? 7 уровней.
Сетевой модели OSI/ISO не существует.
>Как сделать нормальный обработчик события
Лямбдой.
>>465275
>Какие-то аналоги xaml есть?
Нет. Вообще разметка в свинге на редкость убогая по сравнению с винформами и дельфи - здесь нельзя произвольным образом контролы размещать в формочке. И все через джава код, никакого xaml.
>>465413
Идею никто никогда не перепишет на С++....
>JavaFX
Оно вроде погибло несколько лет назад, хотя вроде как какой-то опенсорс продолжали тянуть в полуработающем виде. Не помню уже. Но вообще возьми Qt/electron и не мучай жопу.
А надо.
1. Сейчас кризис и никто в проекты подобного рода вкладываться не будет
2. Это займет охулиард времени, учитывая какое помойное легаси представляет из себя идея.
3. Нет столько желающих людей портировать awt/swing приложение (со всеми дополнительными костылями от jb) на какой-нибудь Qt, который через N-ое количество лет тоже может умереть.
Еще возможно SWT живой
https://www.eclipse.org/swt/
А вообще гуи на жабе в здравом уме начинать никто не будет.
> Оно вроде погибло несколько лет назад
Я скочал на пощупать 19 версию, выпущенную в сентябре этого же года. Крайний LTS это 17 версия, выпущеная год назад и на поддержке до 26 года. Ну я хуй знает, как такое можно считать погибшим.
>>465670
> А вообще гуи на жабе в здравом уме начинать никто не будет.
Ну, судя по сайту с которого я кочал (Глюон) - этот тулкит кому-то всё таки нужен. Ну ладно, раз нет, пойду другие варики искать.
Всем пока. Можете не отвечать. От треда отписался. Вот вам напоследок, что я за вечер наваял неспешно тыкая по кнопкам.
Хуйню какую-то сделал
>Ну я хуй знает, как такое можно считать погибшим
Версии-то может и обновляются, цифры увеличиваются, однако в реальности жабой FX почти никто не пользуется. Если потребуется сделать что-либо нетрививальное, то не получится просто вязть и нагуглить примеры на стаковерфлоу, как это можно сделать с qt, электроном или даже свингом с винформами.
>>465709
>кому-то всё таки нужен
Да, но это буквально единицы от и без того очень узкого рынка десктопов.
хахахха
try {
....addon.run();
} catch (RuntimeException exception) {
....addon.disable();
}
может завалиться от @SneakyThrows?
Подобные программы часто ловят не то что RuntimeException, они ловят и Throwable, чтобы уж точно не свалиться. Например, так делают в серверах приложений, чтобы не свалилось всё из-за говна в одном war-нике.
Конкретно мне нужен доступ к аудиофайлу с расширением wav.
Есть конечно вариант вынести его в отдельную папку, но хотелось бы что бы мелодия запускалась вместе с приложением, а не после того как будет установлена рабочая директория.
Ничего не запрещает ловить Exception. Если тебе нужна надёжность, то будешь писать код более надёжным, чем предположения стандарта, чтобы защититься от других даунов, которые кидают Error или наследуются от Throwable. Проблемы можно создать и без лобка.
Через getResourceAsStream(). Если жарник не загружен, загружаешь его через класслоадер. Если путь не известен, обходишь жарник через JarFile.
Если в пуле достаточно тредов, это не вызывает проблем.
У асинхронного кода, если нет больших нагрузок есть оверхед по времени исполнения по сравнению с синхронным.
К тому же под капотом асинхронный код с неблокирующим вводом-выводом сложнее и его в разы сложнее отлаживать и тестировать.
На невысоко нагруженных системах использовать асинхронное io - глупо.
Есть, забыл sql. Похуй.
После 3х книг по жабе (Шилдт,Майкрофт,Гетц) понял, что слишком дохуя чего не знаю. Как фиксить?
Ну, допустим, я точно не помню, метод clone находится в Object или в Cloneable, потому что этим никогда не пользуюсь. Забыл коллекции, потому что они нахуй никогда не нужны, кроме arraylist, hashmap и hashset. Забыл многопоточку, потому что в чистом виде она нахуй никогда не нужна
Тут даже инфу по Спрингу держат в тайне
Так с практикой же читаю книги. Увидел какую-то новую йобу, покрутил её, закинул разные данные. И когда я понял, каким именно образом это работает, то продолжаю дальше.
80 iq чтоб крудошлёпить, 140 iq для настоящего программирования. Правда айтишка сейчас прогнила, гораздо более важен тембр твоего голоса и размер челюсти, чем реальные навыки.
Вот я тесты сколько ни сдавал, у меня результаты в промежутке 115-125. Сколько уже учусь, для себя заметил, что "крудошлепскую хуйню" я делаю на изиче, не напрягаясь. Но когда нужно применить какой-нибудь алгоритм, например что-нибудь связанное с графами и работой с ними и прочее подобное, я зачастую ощущаю себя бабуином и демотивируюсь. Поэтому, пожалуй, с тобой соглашусь. Крудошлепствовать любой средний Васян сможет. Про 80 ты загнул, но с среднехуй с соткой справится. А вот быть тру-программистом, по праву носящему это звание, способно лишь пара процентов от популяции.
>>466431
А что два месяца назад произошло?
> Правда айтишка сейчас прогнила, гораздо более важен тембр твоего голоса и размер челюсти, чем реальные навыки.
Распиши, пожалуйста, что это значит.
> настоящее программирование
У вас тут локальный мем такой?
ищи реально никакой как все сидит?
>Распиши, пожалуйста, что это значит.
Это значит, что из-за длительного "золотого периода" айтишка стала чем-то типа шоу-бизнеса, где количество заработанных тобой денег зависит только от твоей внешности и умения пиздеть, а ещё связей, конечно же. Но никак не от твоего интеллекта и тем более навыков.
>>466443
>>466446
Господа ципсошники и петушарперы, идите нахуй с треда.
Это по жабе или в целом? Если второе, то делать выводы по этой статистике относительно положения дел на рынке тырпрайз жабы неправильно
80 хватит точно при должной усидчивости, даже если это ссанная веб-студия с вёрсткой, битриксом и 1С.
Я никаких тестов всерьёз не проходил (только поржать, типа "выберите 15 цветов и узнайте свой IQ", но вряд ли у меня больше 100. Сам считаю себя тупым, но усидчивый что пиздец, таски закрываю в срок, ЗП растёт.
В целом, конечно. И теперь двощеры делают выводы, типа раз аутсорс съебался, то айти всё. Будто внутренних продуктов у нас нет.
По жабе в прошлом или в позапрошлом треде были скрины
>схлопнулся два месяца назад
Раньше, сейчас-то все уже стабильно хуево. В марте-апреле регулярно скидывал количество джава вакансий в мвп тред. Сначала было 5000, потом 4500, потом 4000, потом меньше 4к, потом небольшой отскок до 4, и падение до трех тысяч. Сейчас стабильно 2850-3000 держится. Но видимо еще сдуется медленно до двух тыщ за несколько месяцев. Потребности в джава разрабах сейчас нет.
Дело даже не в оставшемся количестве. Там половина объявлений тупо фиктивные, по ним никогда не ответят, потому что они не ищут разрабов. Не знаю зачем их открывают и переоткрывают несколько раз в неделю, статы мб набивают какие то.
Они хотя бы есть. Мне вот пришлось уехать из родного мухосранска в Д
Москву, но в Рашке с этим проще.
Небось что-то с путями.
Ты тоже забудешь. Вот закончишь изучать кор, приступишь к спрингу и забудешь
Идинах.
У джавы дела еще более-менее в отличие от петушарперов, у которых и до 2022 рынок был мертвейший, и лоу айсикью петухонщиков, работу которых может выполнять любая продавщица пятерочки
И ничего я не заебал. А вот разрабы джавы заебали тянуть с релизом лума!
Че вообще нужно прописывать в проекте чтобы 5 000 000 строк получилось?
А кстати, в 19 жабу завезут эксклюзивные фичи для рекордов, поэтому @Data сразу в топку.
Ну это тоже, но это не основное. Все что ты перечислил надрачивается за неделю.
За два часа. Вообще бэкендером становятся за неделю, до сеньора недели полторы. Вот пиздоболом-максималистом на дваче дольше придётся становиться, это путь длиною в жизнь.
А если ты замкнутый в себе, пугливый ассоциальный хиккан, то что, не возьмут в жава разработчики?
Неделю это если ты бывший петухонщик или закончил пту со справкой. В ином случае - тут день-два максимум и то, если весь спринг целиком осваивать
Не, ждём, когда в WebSphere добавят поддержку лума.
>>466633
Просто надо впилить дохуя функционала в один проект, чтобы в одной системе могли работать десятки тысяч пользователей с разными ролями. У нас всего лишь 500 000, ибо проект более специализированный, хотя нет и половины того, что в планах у кабанов.
Не надо меня буллить, пжлст.
Посмотрел вот исходники одного легаси-копролита(java-8, spring 4 без бута, все деплоилось на 7ой томкат? часть конфигов в хмл, часть кодом, без тестов, фронт на велосипеде поверх древнего реакта), с которого я убежал в страхе год назад. И там всего 318к строчек джава кода, хотя всего строчек 1.6кк. Убежал очень быстро, успел пощупать ну 5% кодовой базы где-то. Причем там даже по рассказам старожил как минимум четверть кода была просто дохлой.
Сейчас пишу в 2 микросервиса(джава-17, спринг-бут последний) по 8к и 10к строчек джава-кода, где половина тесты. Без тестов микросервис ну 4-5к строк. А вместе со всей мишурой - под 40к. Но там до прода еще далеко и тогда объем кода еще раза в два увеличится, ну будет 10к рабочего кода.
У меня каждая неделя это где-то +1500-300 строчек(ну это всего вместе с тестовыми json-ками, наверно нового нетестового джава кода строчек по 200 в неделю).
В декабре собираюсь микросервисы сразу переводить на спринг 6.
Java21-LTS выходит 2023-09-19, так что может и ее успею на этом проекте впихнуть.
Я другой анон, но рекорды мне в большинстве случаев не подходят.
У меня здоровенные динамические входные дтошки с 4мя кейсами-наследниками. Поэтому куча аннотаций валидаций и аннотаций джексона лежат в интерфейсе.
К сожалению, тебе будет очень сложно.
Если бы ты писал чистый объектно ориентированный код у тебя такой хуйни бы не было.
Ну вот кейс конкретный. У меня есть сущность организация. Организаций - 4 типа. Там 20 полей общих и по 5-10 у каждой свои. Эндпоинт для сохранения один.
Как мне их правильно сохранять по маня-ооп?
Дегенеративное хуйло с клиповым мышлением не может посмотреть на проблему с другой стороны, спешите видеть. ООП - это не про структуры данных, ООП - это про живые объекты, которые чё-то делают, не открывая, что находится в них. В ООП создающиеся классы сразу после создания прячутся под интерфейс. А теперь расскажи, зачем тебе эти организации нужны и я бесплатно, по своей доброй воле натолкну тебя на ООП решение.
Это информационная система для отображения контрагентов нашей организации. Типов контрагентов сейчас 4, потом будет больше. Ну и есть обязательные и опциональные поля, как для всех, так и для отдельных типов организации. Для банков одни, для служб доставки другие, для арендаторов третьи, для поставщиков четвертые. Но все должны быть в одной сущности для сводных отчетов.
Интерфейс Сounterparty с обязательными методами для всех контрагентов, далее классы Deliverer, Tenant, Bank, Provider и тд. У каждого своя логика и свои конструкторы, но все реализуют один интерфейс.
Прикол ООП в том, что вышеупомянутое говно
> Deliverer, Tenant, Bank, Provider
можно типизировать и создавать одним методом, а твой топорный 1С как был топорной оболочкой к БД, так и останется, без какой-то крутой логики.
Ты оппост что-ли не читал?
> Java никогда не ломает обратную совместимость - твой код, написанный на Java 1.2 будет работать на Java 18 - и не зависит от платформы, являя из себя единственный полностью кроссплатформенный язык с кроссплатформенной экосистемой (если не считать языков-паразитов на JVM).
Конечно заведется
>Это значит, что из-за длительного "золотого периода" айтишка стала чем-то типа шоу-бизнеса, где количество заработанных тобой денег зависит только от твоей внешности и умения пиздеть, а ещё связей, конечно же. Но никак не от твоего интеллекта и тем более навыков.
Вот. Тред даже был в прошлом году, что селёдки-эйчарки отбирают соискателей по фоткам в резюме. Чем красивее, тем выше шансов, и это даже при более плохих профессиональных показателях.
И вообще, да, айти сейчас действительно сорт шоу-биза, где нужно быть стильно-модно-молодёжным смузихлёбом, а не инженером.
Не противоречит.
Если в вашем коде есть инкапсуляция, значит это признак плохой архитектуры приложения.
>С пробуждением, так во все сферах бтв
Возможно, но не до такой степени. Айти, особенно в снг, слишком распиарено, слишком смузихлёбно и слишком ванильно.
>Даже статистика была что более карстовые и высокие люди больше зарабатывают
И в Европе даже хотели ввести налог на красоту, да.
>
>ну и софт скилы неожиданно очень важны
Логично, что нужно уметь общаться с людьми, чтобы работать в команде. Но в айти опять же этому уже слишком много внимания уделяется, имхо.
Да.
Да.
Сеттер создает копию поля и устанавливает ему переданное значение или меняет ИЗНАЧАЛЬНОЕ поле класса?
Сейчас на РАБотку берут только сеньеров, просто некоторым платят как мидлам или джунам.
а в чем профит?
С одной стороны я понимаю - типа перестраховка на случай когда у нас очень много переменных, но ведь в этом случае можно и сеттеры перепутать, разве нет?
Шта Шта?
зачем нужны сеттеры и геттеры? нахуй нужна приватность, если есть обход этой приватности?
Я не утверждаю, что не нужна, я лишь даю понять что я не понимаю, поясните простым языком, пожалста.
Про геттеры сеттеры писал какой-то анон выше, вкратце: геттеры нужны для того, чтобы вернуть копию филда в имьютбл обьекте, а сеттеры нахуй не нужны, но все их пишут. Ну еще в геттерах/сеттерах можно какую-то логику написать, но это вроде АНТИПАТТЕРН
Бывают еще дебилы которые считают что любой метод который вообще хоть что-то возвращает обязательно должен начинаться с ГЕТ.
Причем даже когда пишут на питоне или плюсах.
>зачем нужны сеттеры и геттеры?
Концептуально с т.з ООП - это публичный интерфейс класса по данным на котором строится ОРХИТЕКТУРА. Это контракт который ты выставляешь наружу и мамой клянешься, что он не поменяется и значит на него можно расчитывать когда ты проектируешь охуительные взаимодествия между объектами. Приватное состояние которое возвращают/меняют гет/сет это твое грязное белиьшко реализации - оно полностью в твоей власти и можно делать с ним что угодно при условии, что ты не нарушаешь контракт.
С практической точки зрения - чуть проще менять класс внутри, на этом все.
Профит в том, что ты пишешь менее связанный код.
>геттеры нужны для того, чтобы вернуть копию филда в имьютбл обьекте
в чем проблема филд сразу паблик объявить
>сеттеры нахуй не нужны, но все их пишут
Это если у тебя простой DTO без логики. А так сеттер проверяет значение и может делать дополнительные действия. Например есть у тебя объект квадрат, сет сайз будет ещё и перерисовать его.
пиздец
zalupa.huy.pizda.lalka = 5
повсеместно в коде.
Это же так охуенно потом рефакторить, отлаживать или изменять, мммм, просто 10 из 10
Ещё и глобальных переменных пиздануть на весь скоуп, охх щас кончу
Не добавляли того, что ты написал.
Создатели спринга не настаивали на использовании конкретной подхода к организации архитектуры проекта, так что оставили все скоупы. Это на практике сложилось делить всё на умные сервисы без данных и тупые дата-классы без логики (anemic model), но кто-то захочет реализовать active record и с prototype напишет что-то подобное:
huiBean.setId(0);
huiBean.setSize(4, 3);
huiBean.save();
И т.д. Например, в session можно хранить корзину, а в request - свалку параметров запроса.
Всё верно.
Которое стоило 17500 рублей, да?
Иди нахуй.
Дроч на паттерны --- антипаттерн. А так --- ну паттерны и паттерны. Умные инженеры нашли в своих проектах повторяющиеся по структуре кода, обозвали их паттернами, написали книгу и продали многомиллионным тиражом. А анальники сделали из этого каргокульт и ищут в нем ответ на то, почему у них код --- говно. Как всегда.
СОДОМИТИЩЕ
Ну не все же рабочее время на кабанчика въебывать
Имхо, подмена понятий stateless и неизменяемость.
Как-ты реализуешь, например, stateless connection pool?
Объекты, если и должны меняться (хотя в большинстве случаев объекты лучше сделать неизменяемыми), то только сами.
Действительно ли нужно, как говорит немчинский, откликаться не только на джунов, но и на мидлов?
Сами решают в процессе выполнения указаний других объектов, которые напрямую не говорят менять, а лишь говорят, что им нужно. Объекты сами решают, что менять, а что не менять.
Я все жду, когда ты напишешь про сообщения от объекта к объекту.
>которые напрямую не говорят менять, а лишь говорят, что им нужно.
Есть объект счет и объект клиент. Клиент ложит деньги на счет. Что клиенту "нужно"?
Это не доёбка, это прямое улучшение кода. Вместо того, чтобы всегда вызывать account.set(account.get()-sum), ты вызываешь account.remove(sum). Это принцип DRY.
В конкретном случае соглашусь, когда метод выполняет больше одной операции. Но не понимаю, чем плохи геттеры/сеттеры в тех же дто. Иногда удобно создать дтоху с через конструктор с аргументами, а затем поменять пару полей.
ДТО - антипаттерн.
Неправильно. Улучшение конечно есть, но всё равно говно. Message и Destination неразлучны с контекстом и сами по себе не должны существовать. Если ты например обрабатываешь пользовательскую команду, то код должен выглядеть так:
public void on(CommandDispatch dispatch) {
----dispatch.author().sendMessage("Петух сказал: "+write.dispatched().asString());
}
А если шлёшь email на новый год всем своим клиентам, то
myCompany.getClients().stream()
----.filter(client -> client.getLatestVisit().happenedInPast(1, TimeUnit.MONTH))
----.forEach(client -> client.email(new Email("С новым годом!")));
>write.dispatched().asString()
А откуда берется write? текст сообщения в CommandDispatch должен быть, не?
Ну ты и навыдумывал хуйни. У меня был вопрос простой: что должно быть вместо сервисов.
Это ты нихуя не понял. Я тебе ответил, что нельзя сервис просто взять и заменить. А вообще, в общем случае user.message(Message message).
>Это ты нихуя не понял
Так значит ты хуево объяснил.
>user.message(Message message)
Откуда взялась сущность юзера? Если появятся новые способы нотифицирования, надо будет изменять класс юзера, чтобы их туда добавить? Что если перед отправкой сообщения необходимо выполнить какие-то произвольные действия, например провалидировать или поменять какое-то поле, причем список правил лежит где-то снаружи?
>Если появятся новые способы нотифицирования,
В общем случае - да. А как иначе то, лол? Но опять же, если бы ты читал моё сообщение не жопой, ты бы увидел мой посыл о том, что отправлять сообщения лучше из контекста. Не из контекста, а из непосредственно юзера отправлять только то, что с этим юзером непосредственно связано. Например, емайл. Если не хочешь целого юзера менять - добавь к нему метод getEmailBox(), который вернёт спрятанный под интерфейсом EmailBox способ работы с сервисом емейлов (не поле emailBox, его не должно быть!).
>провалидировать или поменять какое-то поле, причем список правил лежит где-то снаружи?
Например?
Ну то есть в моем примере это будет Destination.message(Message m). Почему не Message.send(Destination d)?
>Например?
Да банально список правил лежит в спринг проперти, которые подгружаются через спринг клауд конфиг и могут обновляться в рантайме.
> Почему не Message.send(Destination d)?
Потому что сообщение не должно уметь отправлять само себя. Это контринтуитивно и в конечном итоге всё равно приведёт после цепочки методов к тому же Destination.message(Message message), если конечно у тебя есть хоть какая-то инкапсуляция и сообщения не могут сами добавлять себя в ящики сообщений.
P.S. - не хочется по библиотеке лазить... ._.
> Идею никто никогда не перепишет на С++....
Так то Jetbrains Fleet уже в превью. Он в текущем состоянии конешно даже близко не идея, но все же инициатива есть.
> Идею, например, надо срочно переписать на C++.
Тыщу лет жили не тужили, кодили в идее и горя не знали. Нет, давай на плюсах переписывать. На плюсах, блять, идею, в 2022м.
> хочу, чтобы никто никогда не писал гуй на жабе
Ох уж эти смешные затейники со своими хотелками) Навыдумывают себе фетишей, а потом страдают от нереализованных фантазий)
А если меня не возьмут джава-погроммистом, а только юнит-тестировщиком?
>ряяя готовьтесь самообразовываться эвридей
А в других сферах будто бы тебе не надо развиваться. Пиздец инфатилы.
https://habr.com/ru/post/687820/
Антипаттерн, но не классический. Лучше не писать их.
Я тоже начинал с Бейсика на Спектруме, но кому сейчас нужны такие программисты?
Пошёл нахуй, хабрашиз.
Это не виртуальные методы. Логика написанная в конструкторе непереопределима, поэтому классы с конструкторами не полиморфичны и должны отсутствовать в ООП языках.
Почему?
Так им и не надо. Ты как вообще себе видишь их переопределение, если они не наследуются?
Сотка потолок, дс2
Надо просить всегда больше и ещё если занижаешь планку, то это сразу говорит о том, что не уверен в себе и значит ничего не знаешь.
Так-то я субъективно нормально знаю,плюс петы есть. Дело в том,что я сам с Воронежа и мне 50к хватит на скромную жизнь. Также видя 300+ откликов на вакансию я предполагаю что есть мизерный шанс пройти чисто за счет жадности работодателя
Плюс ещё мне до сих пор слабо верится что джуны в принципе могут получать 70к+ тупо за знание жизненного цикла бина, транзакций и прочих дефолтных штук
Как сформулирована задача? Нотификация клиента по различным каналам? Как вариант в User хранить перечень каналов для нотификация конкретного пользователя, отдельно сделать сервис Notifier, который по идентификатору пользователя получает реквизиты (можно и в User это хранить) для отправки сообщения и формирует Message в соотв. со спецификой каналаи класс Sender, который отвечает за интеграционную логику.
Не знаю жизненного цикла бина, т.к. все бины синглтоны, а значит бессмертные пока контекст поднят. Работаю мидлом.
ПЕРЕКАТ >>2468422 (OP)
Наличие невиртуальных мнтодов не нарушает полиморфизм
вобще словосочетание нарушает полиморфизм звучит странно, полиморфизм это не какое то правило или метод, чтобы его нарушать можно было
Текущая - 17, новая - 23 и она еще не вышла. Все что не лтс не достойно внимания.
Оба перенаправляют запросы. Пока все что я понял это то что API Gateway это прокси,к которому обращается клиент,а он уже дальше сам решает в какой сервис отправить запрос. А Service Discovery знает где физически находится сервис и можно делать запросы не зная айпи адреса. Получается он тоже распределяет запросы. Поясните плиз
Как будто это мой тред. Я хотел тебе помочь, чтобы тебе ответили быстрее, а ты меня послал. Не стыдно?
Помогай в новом треде
там первые 500 постов будет шарпосрач и его вопрос потонет в этом потоке говна
А если minecraft bin ?
Все, что делает дискавери - дает настоящий адрес по виртуальному. И потом на этот настоящий адрес ты шлёшь запрос.
Гейтвей же перенаправляет запросы на нужные сервисы. Например, если урл /users/, то в сервис юзеров, если /vehicles/, то в сервис машинок и тд. Кстати, для нахождения настоящих адресов этих сервисов гейтвей пользуется дискавери
Чтобы мне было проще после них трудоустроиться ^^
Джависты в большинстве своём - многодетные скуфы 30-40 лет, так что шансы сам оценивай.
А я так и не осилил, хотя вкатился давно.
Назови конкретные причины, почему тебе не подходит винда. И не надо про баги и дыры.
Винда платная. Тяжёловесная. Скучные обои.
Хотелось просто иметь виртуалку для программирования, чтобы быстро запускалась и там можно было бы делать всё, не боясь сломать систему.
Раз за два года до сих пор не бросил, значит, хоть чуть-чуть тебе это интересно. Вдруг для тебя каторга - не занятие программированием, а сам процесс обучения. В реальном проекте может быть ещё интереснее, там будут настоящие задачи, а не однотипные учебные круды.
Каждому своё.
Набор операций CRUD: Create, Read, Update, Delete
Крудами в переносном смысле называют такие приложения, где нет сложной логики, и всё сводится к созданию режимов, где есть тупо создание записей, просмотр, редактирование и удаление. Это обычно первое, чему учится вкатун в спринг.
Нет, очень скучно.
Скорее всего и последнее. Иначе чему еще учиться в жабе? Как связать несколько крудов между собой?
Как только ты написал хоть один if, круд закончился.
Нет, в пайтон так нельзя. Первые две строчки - это шэдоуинг, ну или просто замена адреса в ссылке. Такой кульбит возможен как раз из-за динамической типизации. Сами значения по адресам в памяти никак не меняются, не кастятся (оставшиеся без ссылок данные потом сборщик скушает). А вот вторая и последняя строчки вызовут ошибку, т.к. типизация строгая, складывать строку с числами нельзя.
Или может в пизду вообще этот фронт? Хватит чисто реста какого-нибудь для проекта в резюме?
ExecutorService executor = Executors.newFixedThreadPool(5);
Ему дается пачка Callable. Какой метод вызвать чтобы он вернул то, что выполнится быстрее всего? invokeAny() подойдет?
Я уже пользуюсь dropbox, там есть функции для разработчиков.
Здесь одни спрингомакаки, никто не ебётся с AWT/Swing каждый день и ответить тебе вряд ли смогут. Так что гугли, ты быстрее решить проблему копанием в документации и на стаковерфлове, чем дождёшься здесь ответа.
Мне бы хотелось создавать графические программы на джаве типа офисных программ каких-нибудь. А бэкенд скучный. Хотел писать свой пет-проект, но креативных идей нет, а без этого нет интереса программировать.
> Мне бы хотелось создавать графические программы
Ты выбрал не тот язык, десктопом занимаются в плюсах и шарпе. Достаточно унылое занятие, на самом деле.
Фронт на сваггере.
у у а а
Так пиши на плюсах.
В шарпе с недавних пор можно писать и под линукс, есть несколько кроссплатформенных библиотек для гуя. Хотя не юзал, наверняка там сырое говнище. И никаких винформ и WPF, они да, винда онли.
Ну так вот, есть у меня ноутбук pixus rise grey на celerone 3350 (1.1GH), 4 озу и 64 гб NVME. Присмотрелся мне вот такой ноутбук интересный, с огромной скидкой 15350 - ASUS VivoBook X415EA-EK1336WS 14" 7505 4GB RAM 128GB SSD Windows 11 Home S. Как думаете стоит его покупать ? Будет ли он намного производительней моего нынешнего ноута ?
P.S.- оперативную память и ссд можно добавить...
А жаба тут при чём бля? В /hw/ спрашивай, если там не отвечают, то в /b/. Если ищешь ноут для программирования на жабе, то определённо не стоит, на таком железе даже винда едва ли будет работать.
Bump. Please help.
Можно поставить AstraLinux он базе дебиана и жрёт меньше 512Мбайт. Там есть OpenJDK 8 и Liberica 8. Из редакторов можно использовать VS Code, который гораздо менее прожорлив по памяти, чем та же идея или эклипс.
Если кто не верил, вот скрин, что всё работает на конфигурации 2 ядра - 2 гига.
Между прочим отличный совет для тех, кто планирует остаться в этой стране.
Всем доброго времени суток!
28 лвл, раньше работал с SAPом. Пытаюсь вкатиться в Java, изучаю пока что Core по различным книжкам. Идет туговато, соответственно код ужасный, но иногда работает.
У меня такие вопросы:
1. Хватит ли 3 лет, чтобы вкатиться в Java на уровне хотя бы слабенького Джуна?
2. Как можно найти ментора, вернее даже не ментора, а того, у кого будет раз в неделю несколько минут посмотреть мой код и сказать, насколько все плохо или хорошо. Ну и спрашивать у него всякие глупые вопросы типа, "почему список лучше массива", что лучше использовать - дерево или таблицу и т.д.
3. По очередности изучения. Очень многое написано по стек технологий, но я мало, где нашел саму очередность изучения, что изучать: Core, потом Collections, а потом по очереди что к примеру. Тут я откровенно плаваю, если честно, особенно с БД, Spring и т.д., когда надо, когда не надо и т.д.
>1. Хватит ли 3 лет, чтобы вкатиться в Java на уровне хотя бы слабенького Джуна?
Раньше работал с SAPом - как пользователь или как разработчик? Если как разработчик, вкатишься намного быстрее, чем за три года. Хотя многие и без опыта программирования вкатываются быстро.
> 2. Как можно найти ментора
Да тупо здесь спрашивай.
> 3. По очередности изучения.
Сначала да, Core/Collections и всё, что пишут в книгах по основам жабы. Дальше БД хотя бы в виде консольки Postgresql и подключения к БД через JDBC. Потом разберись с Maven и Git и можешь приступать к спрингу, легче всего начать с Spring Boot, но не фект, что на работе будет именно бут, а не просто спринг с XML-конфигами и деплоем на сервер приложений. В любом случае, нужны основы спринга, работа с базой из спринга через JdbcTemplate и Hibernate/Spring Data, MVC/REST, тесты.
>Хватит ли 3 лет
Ты ебанутый? Вкатуси с полного нуля вкатываются за год и даже меньше. Собственно, грубо говоря, навернули кор + спринг, высрали круд и пошли на самую ссанную вакансию.
Ну за год наверное уникумы вкатываются и без знания базы, алгоритмов и т.д.
SAP как консультант, код видел, но это КОБОЛьная дичь.
Просто могут возникать глупые вопросы, поэтому и спросил про ментора.
Насчет технологий - спасибо, буду изучать!
>>Просто могут возникать глупые вопросы, поэтому и спросил про ментора.
Ментор тебе не нужен - учить правильно формулировать вопрос и гугл все расскажет. Все ворпосы обсосаны по 100 раз. Если не гуглится - значит хуйню спрашиваешь (спроси тут - расскажут почему).
Я уже 2 года учусь и не вкатился.
ПИЗДЕЦ ССАННЫЙ JPQL, скажите, что его не используют нигде, нахуй его ваще знать?
Ну этот кал, я уверен, вообще никто не использует. Кому нахуй в голову взбредёт писать тонны бойлерплейт кода ResultSetExtractor-ов и RowMapper-ов?
Конечно, вместо этого пишут тонны бойлерплейт кода, чтобы решать описанные тобой проблемы.
Используют, ещё как.
А нахуй это говно нужно, если есть спринг дата?
Изучать придётся всё и сразу. А ты думал, в сказку попал?
Если взять какой-нибудь РНР, то почти все книги объясняют как написать простой веб-приложения и дальше уже сам наращиваешь знания, потому что база у тебя есть. В спринге же ни какой базы нет, ты как в болоте, где каждый неосторожный шаг приводит к катастрофе. Без внешних источников информации невозможно ничего написать. Буквально каждый шаг надо изучать.
Вроде написал простое веб-приложение, которое отдаёт страничку, но работа с базой данных - тут отдельный мир со своими фреймворками. Хочешь добавить авторизацию? Погружайся с головой в Spring Security. Тестирование? Логирование? Брокеры сообщений? По каждой теме ещё надо учится годы. А в итоге ни какого приложения у тебя нет, потому что под тонной теории, нет понимания как это всё соединить вместе.
Где они хранятся, по какой ссылке, как их открыть в браузере? Я помню, что к ним есть доступ через веб, но потерял ссылку и не могу найти.
javadoc.io
Как же хочется Maven Application Server
Да.
Ошибаешься, у меня сейчас celerone 3350N на 2 ядра 2 потока, 4 гб оперативы -> 2 открытых проекта в intellij idea, 25 вкладок в опере, 4 видео открытых в ютубе, что - то скачивается, открытый фотошоп и всё летает на изи. На пентиуме будет ещё лучше...
Каким таким образом тебе такое удается? У меня 8гб, при открытой IntelliJ Idea (2-3 проекта) и 4-5 более менее активных вкладок в фф и врубается своп и все буквально умирает. Плюс фф, телега и, особенно, Idea нехило текут. 2-3 раза в день делаю ребут. Особенно перед или после запуска куче всяких тулз типа pgAdmin, dbeaver или какого нибудь постмана, или всего сразу, память забивает полностью. ЧЯДНТ?
_,met$$$$$gg. root@pav
,g$$$$$$$$$$$$$$$P. --------
,g$$P" """Y$$.". OS: Debian GNU/Linux 11 (bullseye) x86_64
,$$P' `$$$. Host: HP Pavilion Power Laptop 15-cb0xx
',$$P ,ggs. `$$b: Kernel: 5.10.0-18-amd64
`d$$' ,$P"' . $$$ Uptime: 1 hour, 45 mins
$$P d$' , $$P Packages: 3306 (dpkg)
$$: $$. - ,d$$' Shell: bash 5.1.4
$$; Y$b._ _,d$P' Resolution: 1920x1080
Y$$. `.`"Y$$$$P"' DE: Cinnamon 4.8.6
`$$b "-.__ WM: Mutter (Muffin)
`Y$$ WM Theme: (Default)
`Y$$. Theme: Adwaita [GTK2/3]
`$$b. Icons: gnome [GTK2/3]
`Y$$b. Terminal: ranger
`"Y$b._ CPU: Intel i5-7300HQ (4) @ 3.500GHz
`""" GPU: Intel HD Graphics 630
GPU: NVIDIA GeForce GTX 1050 Mobile
Memory: 5412MiB / 7842MiB
[▇▇....................................] 388.5 MiB cinnamon [2163]
[▇▇▇▇..................................] 763.7 MiB Telegram [2193]
[▇▇▇▇▇.................................] 907.7 MiB firefox-esr [2717]
[▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇..............] 5.0 GiB java [2437]
[▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋..........] total: 5.8 GiB / 8.0 GiB
Каким таким образом тебе такое удается? У меня 8гб, при открытой IntelliJ Idea (2-3 проекта) и 4-5 более менее активных вкладок в фф и врубается своп и все буквально умирает. Плюс фф, телега и, особенно, Idea нехило текут. 2-3 раза в день делаю ребут. Особенно перед или после запуска куче всяких тулз типа pgAdmin, dbeaver или какого нибудь постмана, или всего сразу, память забивает полностью. ЧЯДНТ?
_,met$$$$$gg. root@pav
,g$$$$$$$$$$$$$$$P. --------
,g$$P" """Y$$.". OS: Debian GNU/Linux 11 (bullseye) x86_64
,$$P' `$$$. Host: HP Pavilion Power Laptop 15-cb0xx
',$$P ,ggs. `$$b: Kernel: 5.10.0-18-amd64
`d$$' ,$P"' . $$$ Uptime: 1 hour, 45 mins
$$P d$' , $$P Packages: 3306 (dpkg)
$$: $$. - ,d$$' Shell: bash 5.1.4
$$; Y$b._ _,d$P' Resolution: 1920x1080
Y$$. `.`"Y$$$$P"' DE: Cinnamon 4.8.6
`$$b "-.__ WM: Mutter (Muffin)
`Y$$ WM Theme: (Default)
`Y$$. Theme: Adwaita [GTK2/3]
`$$b. Icons: gnome [GTK2/3]
`Y$$b. Terminal: ranger
`"Y$b._ CPU: Intel i5-7300HQ (4) @ 3.500GHz
`""" GPU: Intel HD Graphics 630
GPU: NVIDIA GeForce GTX 1050 Mobile
Memory: 5412MiB / 7842MiB
[▇▇....................................] 388.5 MiB cinnamon [2163]
[▇▇▇▇..................................] 763.7 MiB Telegram [2193]
[▇▇▇▇▇.................................] 907.7 MiB firefox-esr [2717]
[▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇..............] 5.0 GiB java [2437]
[▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋▋..........] total: 5.8 GiB / 8.0 GiB
Упс. Сорри за ,g$$$$$$$$$$$$$$$P.
Никак, когда 40 летние деды из треда вкатывались, от них требовалось знать только иерархию исключений и чем отличается эррейлист от линкедлиста.
Получается ее можно не задрачивать?
Джава-джедаи, подскажите лучшую первую книгу по жабе для вкатуна с практически нулевым опытом программирования.
бамп вопросу
бамп вопросу
бамп вопросу
последний бамп вопросу
Head first, там совсем для дебилов, которые только картинки воспринимают во всяком случае, она мне такой запомнилась
Но вообще идеальным вариантом будет начинать с видиков на ютубе, это гораздо интереснее и легче поначалу, имхо
У меня просто есть крякнутая 2020~
А под 2022 не уверен (да и не хочется искать)
С языком немного знаком: и несколько лет назад ходил в Айти школу Самсунга, будучи школьником, и Java Core на HyperSkill'e на четверть прошел пару месяцев назад, параллельно почитывая Шилдта, но потом подзабил в силу некоторых причин.
Сейчас же хочу уже активно за Джаву взяться, в приоритете бэкенд писать. От курса, помимо теории, хочу получить какую-никакую практику в виде хоть сколько-то приближенных к реальности задач и проектов, чтобы всё это сопровождалось адекватными кодревью. В принципе обратная связь для меня первостепенно важная штука, из-за которой именно курс хочу взять, потому что хочется научиться писать +- нормальный код, а не накручивать спагетти-код, который, кажется, даже делает то, что нужно, но впоследствии будет ужасать потенциальных работодателей/коллег.
Наличие чатов, где сидят те, кто так же учится, тоже будет плюсом, чтобы не было такого, что в случае затыка/непонимания придется оставлять коммент на страничке и ждать месяц, пока кто-то созволит на него ответить. Плюс это, наверное, какая-никакая, но поддерживающая среда.
В деньгах в принципе не особо ограничен (т.е. 140к за 10 месяцев Практикума готов отдать, если он того стоит), в свободном времени тоже, поэтому к нагрузке готов.
По окончании курса хочу быть +- пригодным хотя бы к стажировке с последующим выходом на работу. Под окончанием, конечно, подразумеваю добросовестное прохождение, наверняка, с параллельным обучением по другим источникам (тем же книгам), а не тяп-ляп хоть что-то сделать лишь бы получить сертификатик :)
Пока что склоняюсь к Яндекс.Практикуму, т.к. он, кажется, +- подходит под описанные выше критерии и довольно много о нем слушал, плюс в теории могу купить его за 70к вместо 140к, т.к. являюсь студентом (точно пока что хз, т.к. в академе сижу, и мб из-за этого не одобрят). Но вроде и job4j хвалят, хотя чисто по первому впечатлению сайт и инфа на нем их мне не особо вкатили хд. И все еще есть какая-нибудь Kata Academy, но стоящая почти в 2, а то и в 3, если таки дадут скидку Яндекс.Практикум, раза дороже, и кажется, что такой переплаты оно не стоит (обучение с постоплатой в виде процента с ЗП не рассматриваю). Да и еще куча курсов есть.
В общем, вариков не мало, и сложно их адекватно сравнить и выбрать лучший по соотношению цена/качество.
С языком немного знаком: и несколько лет назад ходил в Айти школу Самсунга, будучи школьником, и Java Core на HyperSkill'e на четверть прошел пару месяцев назад, параллельно почитывая Шилдта, но потом подзабил в силу некоторых причин.
Сейчас же хочу уже активно за Джаву взяться, в приоритете бэкенд писать. От курса, помимо теории, хочу получить какую-никакую практику в виде хоть сколько-то приближенных к реальности задач и проектов, чтобы всё это сопровождалось адекватными кодревью. В принципе обратная связь для меня первостепенно важная штука, из-за которой именно курс хочу взять, потому что хочется научиться писать +- нормальный код, а не накручивать спагетти-код, который, кажется, даже делает то, что нужно, но впоследствии будет ужасать потенциальных работодателей/коллег.
Наличие чатов, где сидят те, кто так же учится, тоже будет плюсом, чтобы не было такого, что в случае затыка/непонимания придется оставлять коммент на страничке и ждать месяц, пока кто-то созволит на него ответить. Плюс это, наверное, какая-никакая, но поддерживающая среда.
В деньгах в принципе не особо ограничен (т.е. 140к за 10 месяцев Практикума готов отдать, если он того стоит), в свободном времени тоже, поэтому к нагрузке готов.
По окончании курса хочу быть +- пригодным хотя бы к стажировке с последующим выходом на работу. Под окончанием, конечно, подразумеваю добросовестное прохождение, наверняка, с параллельным обучением по другим источникам (тем же книгам), а не тяп-ляп хоть что-то сделать лишь бы получить сертификатик :)
Пока что склоняюсь к Яндекс.Практикуму, т.к. он, кажется, +- подходит под описанные выше критерии и довольно много о нем слушал, плюс в теории могу купить его за 70к вместо 140к, т.к. являюсь студентом (точно пока что хз, т.к. в академе сижу, и мб из-за этого не одобрят). Но вроде и job4j хвалят, хотя чисто по первому впечатлению сайт и инфа на нем их мне не особо вкатили хд. И все еще есть какая-нибудь Kata Academy, но стоящая почти в 2, а то и в 3, если таки дадут скидку Яндекс.Практикум, раза дороже, и кажется, что такой переплаты оно не стоит (обучение с постоплатой в виде процента с ЗП не рассматриваю). Да и еще куча курсов есть.
В общем, вариков не мало, и сложно их адекватно сравнить и выбрать лучший по соотношению цена/качество.
Биский, ты? Я узнал тебя по твоим шизоидным высерам
Ты про перерегивание аккаунта/почты?
Через флаги JVM указать лимит потребления памяти.
https://www.jetbrains.com/help/idea/tuning-the-ide.html
> Готов заплатить производительностью.
Это сейчас ты так говоришь, не пробовав запустить какую-нибудь Android Studio на 4 гигах, i3 и без SSD. Мало того, что запускается она 10 минут, так ещё и приходится закрывать браузер и другие программы, жрущие память, а для запуска эмулятора Android надо закрывать саму андроид студию и ждать ещё 15 минут.
> Через флаги JVM указать лимит потребления памяти.
Спасибо.
> 10 минут
Ну, я готов подождать иной раз, лишь бы не кончалась память как таковая, тогда экспириенс превращается в ад. У меня 8 гигов, и критично чтобы одновременно был запущен браузер и несколько рандомных демонов в докерах. Пусть работает медленней, но не будет виснуть все к чертям, чтобы не приходилось делать аварийный ребут, посреди демонстрации экрана коллегам, например.
> закрывать браузер и другие программы
Мне вот как раз и нужно чтобы можно было другие программы использовать одновременно с Idea не поглядывая в ужасе и молитвах на индикатор памяти в системе.
Если совсем критично, можно юзать vscode с плагинами, я его даже на планшете 10 летней давности запускал.
8 гигов? В 2022? Ты даун?
Лол, начинал вкат в жабу с андройда, думал 10 минутные загрузки студии и лагучий эмулятор из-за моего не слишком современного ноута, а вон оно че оказывается
Да так и есть, любые тормоза решаются апгрейдом железа. С каждой версией всё это жрёт больше и больше ресурсов, когда-то и на слабом ноуте всё нормально работало. Bloatware оно и есть bloatware.
- Работа с регулярными выражениями
- Фреймворк коллекций
- Steam API
- Работа с Input Out Streams
- Объекты даты и времени
Еще какие-нибудь другие моменты... Напишите, что реально больше всего нужно знать и уметь именно из Core.
Да все, что ты описал, может регулярки только краем глаза или вообще пока опустить. У меня игогда складывается впечатление, что в стандартной жабе кроме коллекций и инструментов для работы с ними больше ничего нахуй почти не используется
Для чего тебе подобные списки, какой-то чеклист составляешь? Прочитай ЛЮБУЮ книгу по кору и будешь знать всё, что нужно. Главы про Swing и апплеты можно скипнуть.
Опять ты со своими талмудами, ты в курсе вообще, что существуют другие источники информации?
Пошёл нахуй, чё тебя так триггерят эти талмуды? Книги, курсы, ютуб, мурзилки, суть не меняется. Я же не говорю, что надо именно читать книги.
> Сложные задачи с регулярками в реальной практике редко встречаются?
Да, очень редко.
> Пытаюсь понять что нужно приоритетно задрочить настолько, чтобы в 3 ночи разбудили, а та все помнишь.
Ничего.
>>что реально больше всего нужно знать и уметь именно из Core.
зачем выбирать? знай все кроме свинга
>>Сложные задачи с регулярками в реальной практике редко встречаются?
Встречаются, но ты один хуй в гугел полезешь чтоб вспомнить какой символ что значит.
>Фреймворк коллекций
>Steam API
>Объекты даты и времени
Вот это нужно чуть ли не ежедневно, регулярки и файловый IO уже реже. Но все это знать нужно.
Есть одна программа, которая не хочет запускаться. Ошибка на пикриле, у меня стоит Java 8 и Java SE 13. Что я должен сделать, что бы программа заработала?
Тебе ж написали что ты сколмпилировал 13, а запустить пытаешься в 8. Запускай в 13 или перекомпилируй в 8.
Это не моё приложение, к сожалению в кодинге ноль, мне надо просто что бы она работала
>Запускай в 13
Можно примерный гайд?
Гугли как установить жабу. У тебя наверное в path прописана 8 - и она используется по умолчанию для запуска приложения.
Поставить Liberica Java 19
Есть интерфейс сервиса FooService и две реализации FooServiceImpl и FooServiceStub.
FooServiceImpl будет инжектиться по умолчанию в продакшне, потому что он проаннотирован как @Primary. Но в тестовой среде я хочу использовать FooServiceStub, указывая в командной строке в тестовой среде именно его, не меняя код.
Что-то типа такого:
java -jar application.jar --????=fooServiceStub
В интернете простого решения не нашел.
Решил спомощью @Profile.
- какой лвл был когда вкат начали
- сколько на вкат времени ушло
- сколько зп была в начале/сколько сейчас
- за какое время выросли из джуна в мидла и выше мб?
- с какими проблемами сталкивались (хоть парочку)
- еще какой-нибудь совет 30+ вкатуну
640x360, 0:04
После 30 сейчас только на фронт.
>>722
>>бамп
А ты не очень умный, да?
Ладно вот тебе мой опыт.
Вкатился в 32 без вышки. За полтора года гэпа учил джаву и писал петы. Дописал себе 4 месяца опыта в ООО Вектор и прошел 2 собеса из 4 (откликался неделю на все подряд, перезванивали далеко не все). Это было в 2020. Дали 50к, через 3 месяца подняли до 70к, еще через неделю выгнали на мороз. Через месяц сычевания дописал еще полгода опыта, прошел 2 из 2 собесов и вкатился на 100к. Это как раз перед войной было.
Щас надо было бы просить прибавку до 150-180к или перекатываться, но пыневизация порушила все планы и тружусь все также за сотыгу. Но хоть условия комфортные.
На своем стеке задачи делаю наравне со всеми, но на незнакомых буду тупить и работать медленно, поэтому скорее слабый мидл по уровню.
>>с какими проблемами сталкивались (хоть парочку)
Не знаю о чем ты, но все мои проблемы - от людей. Сами технологии требуют для изучения только концентрации и времени. А вот найти подход к коллеге или начальнику-долбоебу куда сложнее. (работает в обе стороны, я тоже не образец адекватности)
>>еще какой-нибудь совет 30+ вкатуну
ХЗ че тебе советовать. Айти в упадке - сиди дрочи спринг и надейся, что отскочит обратно и тебя самого к тому времени не утилизируют. Если ты уже за бугром - то шансов чуть выше.
В любом случае пока не будешь уверенно круды писать лучше не суйся, чтоб не дизморалиться за зря. Но и слишком долго не тяни - я до сих пор кафку не знаю и похуй. Ее нет на проекте.
На возраст в джаве не особо смотрят, с этим сильно не парься.
Да все вопросы примерно одинаковы. Кор джава, экуалс/хэшкод, коллекции, эскюэл, немного по спрингу, рест, иногда паттерны. Могут подушить волатайлами с синхроонайзами или хибернейтом.
Посмотри выборочно этого челика - примерно это и спрашивают на джуна
https://www.youtube.com/watch?v=XZIwI_bdNKU&list=PLlsMRoVt5sTMMCwd_gLaaZMkQhzVh9hLA
Не обязательно прям все ответить правильно, мне часто прилетали офферы и после не самых удачных с моей точки зрения собесов.
Где блять следующий?
UNIX не имеет прямого отношения к джаве и каких то базовых знаний тебе хватит. Пишу щас на винде, до этого была КДЕНеон - разницы особой нет. Другое дело конечно если девопсов не будет и тебе с деплоем ебаться придется - но это не то о чем должен думать ждун.
public class UserStats {
private Map<String, AtomicLong> hitsPerUser;
public void onUserCall(String userId) {
if (hitsPerUser == null) {
hitsPerUser = new ConcurrentHashMap<>();
}
if (!hitsPerUser.containsKey(userId)) {
hitsPerUser.put(userId, new AtomicLong());
}
hitsPerUser.get(userId).addAndGet(1L);
}
}
public void onUserCall(String userId) {
if (hitsPerUser == null) {
hitsPerUser = new ConcurrentHashMap<>();
}
if (!hitsPerUser.containsKey(userId)) {
hitsPerUser.put(userId, new AtomicLong(1L));//новый юзер первый рез хитнул
}
hitsPerUser.get(userId).incrementAndGet();//если это счетчик, то и юзать его нужно как счетчик
}
}
или даже так
class UserStats {
private Map<String, AtomicLong> hitsPerUser;
public void onUserCall(String userId) {
if (hitsPerUser == null) {
hitsPerUser = new ConcurrentHashMap<>();
}
var hitCounter = hitsPerUser.computeIfAbsent(userId, k -> new AtomicLong());
hitCounter.incrementAndGet();
}
}
хуя я обосрался)) мне теперь точно не перезвонят
>>Что тут не так
1. Уебанское форматирование. просто слелай скрин и запости, ты все таки на картинкодоске. Я б тебе просто номера строк указывал.
2. if (hitsPerUser == null)
Тут синхронайз блок какой нибудь нужен с дабл чеком. Или как там нынче в синглтонах нынче ебуться с этим.
Но я бы ее сразу инициализировал, а не в методе. Такая ленивая инициализая больше гемора создаст за сэкономленные пару байтов.
Этот вкатунец прав. Создание мапы и новой записи должно быть под локом. Синхронайзд - это плохо для виртуальных тредов.
Суть в том, что у TextView не выводит данные из переменных edit. Впрочем как и напрямую из ячеек массива. Как такое реализовать?
Вот код, если надо:
package com.example.rabotay;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import java.lang.reflect.Array;
import java.util.Arrays;
public class MainActivity extends AppCompatActivity {
EditText et1, et2, et3;
TextView tv1, tv2, tv3;
String edit1, edit2, edit3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1 = findViewById(R.id.et1);
et2 = findViewById(R.id.et2);
et3 = findViewById(R.id.et3);
tv1 = findViewById(R.id.tv1);
tv2 = findViewById(R.id.tv2);
tv3 = findViewById(R.id.tv3);
}
public void main(String[] args) {
int[] arr = new int[2];
arr[0] = Integer.parseInt(et1.getText().toString());
arr[1] = Integer.parseInt(et1.getText().toString());
arr[2] = Integer.parseInt(et1.getText().toString());
Arrays.sort(arr);
edit1 = String.valueOf(arr[0]);
edit2 = String.valueOf(arr[1]);
edit3 = String.valueOf(arr[2]);
}
public void onButtClick(View view) {
tv1.setText(edit1);
tv2.setText(edit2);
tv3.setText(edit3);
}
}
Суть в том, что у TextView не выводит данные из переменных edit. Впрочем как и напрямую из ячеек массива. Как такое реализовать?
Вот код, если надо:
package com.example.rabotay;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import java.lang.reflect.Array;
import java.util.Arrays;
public class MainActivity extends AppCompatActivity {
EditText et1, et2, et3;
TextView tv1, tv2, tv3;
String edit1, edit2, edit3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1 = findViewById(R.id.et1);
et2 = findViewById(R.id.et2);
et3 = findViewById(R.id.et3);
tv1 = findViewById(R.id.tv1);
tv2 = findViewById(R.id.tv2);
tv3 = findViewById(R.id.tv3);
}
public void main(String[] args) {
int[] arr = new int[2];
arr[0] = Integer.parseInt(et1.getText().toString());
arr[1] = Integer.parseInt(et1.getText().toString());
arr[2] = Integer.parseInt(et1.getText().toString());
Arrays.sort(arr);
edit1 = String.valueOf(arr[0]);
edit2 = String.valueOf(arr[1]);
edit3 = String.valueOf(arr[2]);
}
public void onButtClick(View view) {
tv1.setText(edit1);
tv2.setText(edit2);
tv3.setText(edit3);
}
}
В андроид приложениях ты не пишешь точку входа main (а если бы писал, то она была бы static).
Перенеси код из main в onCreate, например.
jdbc-url: jdbc:oracle:thin:@eb-dev-db.ter-it.local:1521/DEV
solr:
url: http://solr.eb-dev-k4s-cloud.ter-it.local/solr/
На ютьюбе 15 лекций, весьма крутых.
https://medium.com/helidon/helidon-n%C3%ADma-helidon-on-virtual-threads-130bb2ea2088
шишка встала
Необходимо разработать возможность расширения функциональности приложения с помощью плагинов (закинул в папку "plugins" джарник и тем самым расширил функционал)
Но вот только пока не разобрался с какой стороны подойти, подскажет кто подходящую литературу? (Если можно будет использовать или интегрировать Spring то было бо прям хорошо)
P.S начал смотреть теорию связанную с Class Loaders и OSGI
Тут кто-нибудь с нуля без образования вкатывался в джаву? Насколько это сложно?
Ебанулся?
c 5 семестрами местной техвышки вкатывался 2 года назад через тренинг от галеры на e. Насколько сложно - хз. Если ты задрот, то не сложно.
Ищи там где не пишут.
ZGC ofc
Таджик Вахром
Поищи по тегам, перекат был и очень давно, просто тут насрали и перекат утонул.
Обчно кэш с аннотацией @Cachable храниться прямо в R10 регистре процессора, доступ будет очень быстрый!
Как дальше быть? Можно как-то из РБ подписку оплатить? Чет не оч охота эклипсу дрочить честно говоря...
Сап, джаваны. Хочу немножко сменить область и после семи лет крестов с соответствующими задачами (в основном многопоточность и сеть) свитчнуться в жабу. Вопрос: какие у вас примерно задачи на работе? В моем представлении типичная задача жабиста выглядит так:
- пойти в СУБД через ОРМ
- вытащить N строчек
- сериализовать их в джейсон и отдать по HTTP
- goto 10
Возможно, я ошибаюсь. Но не хотелось бы променять накопившийся за семь лет благодаря крестам пласт знаний (от чисто теоретических - как на прыщах под x86 устроена виртуальная память и взаимодействия атомарных операций с кэшами до вполне практических вроде устройства динамических прыщебиблиотек) на перекладывание джейсонов между микросервисами.
Пиратить тока. Или с vpn юзать. Я как студент юзаю их подписку , но code with me у меня не работает , пишет недоступно в вашем регионе.
Если у меня спринговый проект с зависимостями. Пока я не поставлю на Шинду сам mvn (не пропишу переменные среды), то проект в идейке не будет билдиться?
И еще. Где-то находил что нужно прописывать MAVEN_HOME, а в других M2_HOME.
Что из этого верное? Вроде и так, и тар работает.. не понимать
Или курс. А лучше - и то, и другое
Вы видите копию треда, сохраненную 10 ноября 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.