Вы видите копию треда, сохраненную 30 августа 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Нет, не надо.
Вместо этого тебе надо каждый раз проверять, не вылетело ли вдруг исключение. Индекс ведь может оказаться и слишком большим.
Ты дебил отрицательный индекс передавать? Проверяй контракты на стыке интерфейсов.
Ты дебил вообще массивы использовать? Работай с коллекциями.
А то что int ограниченной точности, это тебя уже не смущает?
Если уж такой фашист - используй библиотеки, в которых Unsigned реализованы в виде объектной обертки (вот только из-за соображений эффективности они обычно mutable и api у них ебанутое из-за экономии на сборке мусора). Но люди тебя не поймут.
На днях понадобилось портировать невротебеную формулу на джаву.
В формуле большие числа, поэтому пришлось юзать биг интеджер.
Вот как я заебался переписывать.
имплаинг с языком где есть перегрузка операторов ты б так просто все сделал что у тебя даже сомнений бы не появилось в правильности полученного кода.
http://projects.congrace.de/exp4j/ ?
Хз что там с точной арифметикой. Вообще можно гуглить по builder formula expresssion bigdecimal
http://stackoverflow.com/questions/7258538/free-java-library-for-evaluating-math-expressions
Алсо что заставляет вас брать язык не под свои задачи и потом ругаться где-то в интернете на форумах мол язык говно потому что вам не подошел? Ну не подошел язык, так возьми другой. Возьми язык под свои задачи, возьми хаскел, который придуман на математической базе. Отсутствие unsigned int это настолько изощренная мелочная и нереалистичная высосанная из пальца проблема, что вот хуже только спросить почему в Hashtable нельзя положить null.
А раз за это еще и платят то вопрос совсем неуместен.
Джава - язык йоба энтерпрайза, где часто считают деньги. Деньги моделируются как BigDecimal. Так схуяли это язык не под эту задачу?
I che blya?
Это где суммы такие оперируются что в лонг не влазят? 9.223372e+18 хватит всем!
Ну раз деньги, значит, формула не "вротебеная". И даже скорее всего реализована в какой-то библиотеке (йоба-энтерпрайз же) и для тебя вообще выглядит как
CompoundInterest.cacluate(1,2,3)
А мог бы индусу зааутсорсить. Умные мысли то есть? Потому что я не слышал чтобы в котлин какие-то другие bigdecimal завезли.
Кловен тут только ты. Дважды уже.
Не могущий в массовую замену регэкспом)000
Ты со groovy перепутал
https://kotlinlang.org/docs/reference/operator-overloading.html
Экстендишь бигдесимикал и наслаждаешься операторами.
Можно сделать отдельный котлин класс имплементящий интерфейс нужных операций и перенести туда код.
Потом в основном коде вызывать через полиморфизм нужную хуйню и всё.
Вопрос: Что пишут на Java? Я студентота по IT-специальности, изучаю Java самостоятельно уже полгода. И тут возник вопрос: а как, в общем-то, вкатиться? Давай-те на секунду представим, что у меня есть некоторый объём знаний, которого будет достаточно для, например, джуниора. Зашёл я на сайтик по поиску работу, увидел, что в моей мухасрани 350к нет объявлению по поиск Java-кодера. Анон, расскажи, как ты вкатывался. С чего начинал? Где и как искал работу?
Проще всего устроиться в консалтинг/интегратор джуном. Пару лет назад вакансий в ДСах хватало.
>изучаю Java самостоятельно уже полгода
Надеюсь ты уже понял что Java неудачный вариант для новичка. Язык сложный, возможностей мало, работы тоже мало, а на каждую вакансию десяток макак. Сейчас каждый школьник учит java, а потом не знает что делать с ним. Лучше попробуй Haskell. На нём и конкуренция пониже, и зарплаты больше, и сам язык понятней. Если никогда не занимался программированием, то начинать лучше всего с Haskell - после него другие языки учатся быстрее. Работы полно, платят отлично. По книгам. Если есть хоть немного знаний программирования, читай это: http://www.ozon.ru/context/detail/id/30425643/ Если совсем новичок, пойдет эта книга: http://www.ozon.ru/context/detail/id/28346038/ Ну и куча онлайн-учебников. Вот, например: https://anton-k.github.io/ru-haskell-book/book/home.html Хороший учебник, всё расписано подробно. Сам по нему учился. Рекомендую.
Когда я писал свой пост, то, конечно, понимал, что двач - не лучшее место для советов, но блять всё-таки понадеялся на то, что адекваты всё же снизойдут до меня.
Чтобы стать полноценным Java-программистом, мне по-любому придётся съёбывать в миллионик или ты можешь подкинуть идейку для заработка в мухасрани?
В смысле? Я тебе добра желаю, не каждый же день приходит нюфаг с таким вопросом.
На Haskell полно удаленной работы, а вот специалистов не хватает. Некоторые компании готовы брать себе нихуя не умеющих макак за огромные деньги, чтобы научить их кодить на Haskell.
Group root = new Group();
Scene theScene = new Scene( root );
theStage.setScene( theScene );
Canvas canvas = new Canvas( 400, 200 );
root.getChildren().add( canvas );
GraphicsContext gc = canvas.getGraphicsContext2D();
gc.setFill( Color.RED );
gc.setStroke( Color.BLACK );
gc.setLineWidth(2);
Font theFont = Font.font( "Times New Roman", FontWeight.BOLD, 48 );
gc.setFont( theFont );
gc.fillText( "Hello, World!", 60, 50 );
gc.strokeText( "Hello, World!", 60, 50 );
String path = "/resources/earth.png";
Snake.class.getResourceAsStream(path);
// URL location = Snake.class.getProtectionDomain().getCodeSource().getLocation();
Image earth = new Image( path);
gc.drawImage( earth, 1800, 1000 );
theStage.show();
Честно хз, что работой в мухосранях, т.к. из своей свалил в ДС сразу после универа. Как вариант вкатится в андроид, написать что-нибудь своё, вообщем заиметь портфолио/профиль на гитхабе и пробовать устроиться на удаленку.
cега явадаунам
Жаль что всем похуй на твое мнение
Хз, в яве и ее стандартных пакетах повсюду используются
Че там в жс треде? Совсем плохо? WebAssembly пришел?
Появилась необходимость освоить Java. Занимаюсь на JavaRush. Правильно ли я выбрал ресурс.
>Занимаюсь на JavaRush. Правильно ли я выбрал ресурс.
Тоже там занимался, теперь делаю сайтики на ангуляре и бэкенд немножко могу на ноде c(^_0)э
Я вообще занимаюсь АСУТП, но очень хочу оттуда уйти. Надеюсь, что в будущем это мне поможет.
SpeakingJS
до ios мне доходить пока не доводилось. моя цель сугубо ведро.
Пишу бота который транслирует переписку из Skype чата в Gitter, пишу на Java, и буду рад, если вы вгляните на мой код и подскажете что и где плохо, и как это сделать лучше.
Также буду рад совету знатоков Gradle и Groovy по поводу срипта сборки проекта.
Ссылка на репозиторий - https://github.com/last-khajiit/skype2gitter
пиксрандом
зато трипл
Хороший код: всё по делу, ничего лишнего.
Но в энтепрайзе такое не любят, там нужно чтобы позапутаннее было, с паттернами-хуятернами.
ну паттерны должны быть по делу, а когда у меня 4 класса, то городить ДипенденсиИнжекшоны, Стратегии и прочие Фабрики не вижу смысла. Если код будет разрастаться, тогда уже буду думать о таких вещах, пока просто хочу отладить приложение, вычистить хардкод и покрыть это дело тестами.
>>808357
> *Utils.java
что ты хотел этим сказать?
пиздец это вообще-то не "продакшн", а пробный код посмотреть, как делаются игры, даун тупорылый. уебывай на свой коворкинг нищая мразина.
Если ты говнокодишь осознанно, то нахуй вообще кодить тогда макак? Еще и тут свои высеры постишь, в гости тоже немытым ходишь?
DeepBunnyHole не выдумывай. Возьми салфетку.
я спрашиваю, почему картинка не рисуется, проблема уже найдена. нахуй пройди. а пример скопирован с сайта, маня.
Спасибо!
В джаве? Их нет блять.
тогда дам тебе один по настоящему ценный совет
дропай этот сайт, хуже чем писать свое говно, это учится на примерах чужого говна, только время потеряешь, а и так придется потом переучиваться
Пиздец в том, что *Utils - это набор статических утилитных методов, а у тебя utils передается в utils и там начинается какая-то ебатень.
т.е. тебе не нравится название классов?
>*Utils - это набор статических утилитных методов
это какой-то кодконвеншн?
не встречал раньше, спасибо, погуглю
> набор статических утилитных методов
Вроде везде пишут, что это некошерно, и надо делать синглтоны.
ну вот допустим в разных абсолютно автономных классах у тебя используется один и тот же метод, с хуяли тогда вынос этого метода в отдельную АБСОЛЮТНО ЧИСТУЮ функцию является антипаттерном?
Это не то. Если сорцы твои, то еще можно как угарелый навешивать на все подряд интерфейсы, полные дефолтных методов, а если нет?
Конвешн-хуйвеншн. Это просто сложившаяся практика. Я бы на твоем месте сделал что-то типа:
class SkypeWorker {
void setCredentials(String login, String passord){...}
void setListener(SkypeListener listener){...}
void start(){...}
}
interface SkypeListener {
void onMessage(String name, String message);
}
Ну а имплементацию интерфейса хоть в анонимным классом, хоть как.
Не бывает на 100% правильного кода, но мой подход считаю понятным для чтения и понимания, а когда написано одно а там другое - это плохо.
Не антипаттерн а единственно возможный костыль для Джява.
Спасибо за пример!
Нужно кодить с учетом ООП.
Работа с абстракциями - функции отвечающих за эти абстракции действий принадлежащих объекту который должен выполнять эти действия.
Какое-то специфическое утилитарное байтоебство - в байтоебном методе.
Вообще ящитаю так, функция для какой-то работы с примитивами или коллекциями однозначно статически в - Utils.
А в чем конкретно говнокод ты можешь пояснить? в том что сцена рисуется кодом, а не в FXML?
>> *Utils.java
Вынеси это хотя бы в отдельный пакет "common" что бы с бизнес-логикой не смешивались
с чего такие выводы? болишьнство комментов по коду выше довольно адекватны и аргементированны
дада, я слушаю (:
Пододжди до gradle 3.0, там наконец-то появится статическая типизация и подсказки в IDEA.
начинай с haskel для JVM
Thinking in Java, Bruce Eckel
потому что каждый второй коммент заканчивается фразой "иди в мак, с таким говнокодом работу не найдешь". такие жирные проекции.
Шапку для кого написали?
Ну а ты чего ожидал от огромного тырпрайза? Он же до ужаса инертен в этом плане, современные технологии они в молодых стартапах да и то не всегда
буду признателен, если пояснишь мне за профиты использования nginx в качестве прокси для java приложений (проще говоря, нахуй оно нужно то?). у меня слишком туго с пониманием этой хуйни, поэтому на пальцах, в несколько предложений, коротко о сути, пожалуйста.
#Хэштэги#Там#Где#Они#Не#Уместны
Вин-вин, хуин-хуин
Мы такие ПаСиТиФФнЫе!
У нас Фсе ДруК дРуКу улыбаЮццА! =))))))))
На это не обращай внимание, а с требованиями что?
addListener в AWT/Swing типичный пример. Нужны, чтобы не создавать лишних сущностей (имен). Но лучше, где возможно, использовать лямбды.
Имиджборду.
> Но главное, зачем мы с утра спешим на работу - интересные задачи
gans_spb/О программистишках
Что такое интересный проект? Например, это постройка марсохода, разработка алгоритмов для работы лунного модуля или там лазарной пушки. На худой конец, поиск лекарства от рака. Но когда какой-нибудь сраный портал или недобитый стартап называют интересным проектом только потому, что так решили его создатели, надо сделать шаг назад и спросить себя — не пытаются ли меня поиметь? Потому что «интересный проект» — такая же абстрактная и сугубо субъективная вещь, как и «вкусный пирожок». Никто еще ни разу не признался, что у них проект скучный и неинтересный, хотя таких проектов 99.999%. Развод из той же темы — «бонусы» и «система поощрений» — это когда ты вкалываешь как проклятый и тебе может единоразово накинут в конце года пару десятков баксов. Дадут на одну ветку бананов больше. Молодец! Возьми печеньку с полки. Заслужил.
В Рашке кобола нет, используют 1C (он появился еще в начале 90-х).
(Visual) FoxPro в госконторах очень любят.
антоши, в портфолио какие программы сделать?
Интересный проект в таком случае - это если это твой бизнес. Тогда интересный проект. В любом другом случае ты все равно пишешь код и понимаешь, что основная денежная масса течет мимо тебя, а тебе кидают лишь огрызок с барского стола на пол, даже если это 120к в месяц.
Не вижу в фейсбуке ничего интересного.
>>808873
Обычно когда говорят "интересный проект", то подразумевают как раз нематериальную заинтересованность. Ну типа как у Linux разработчиков.
>как у Linux разработчиков.
А какая у них нематериальная заинтересованность?
Если ты хотел сказать про OpenSource сообщество, то такая работа вроде же не оплачивается?
Они хотят сделать свободную операционную систему, в которой не будет зондов и ограничений.
Возможно, еще добавят. В кресты вот уже собираются. Лямбды в жабе тоже появились после выхода нового стандарта C++, до этого все жатники кричали, что они НЕНУЖНЫ, и им достаточно анонимных классов.
Ну помоги анон.
Вот нахуя нужен enum, если это фактически класс, а не перечисление? Зачем плодить объекты, если мне нужен простой алиас числа?
В январе 2015 сидел без работы, без опыта и без понимания в какую сторону двигаться.
Сейчас зп 50к милионник мухосранск. Нет тян нет друзей, по вечерам хуярю код.
Пора выпускать книгу - как перестать беспокоится о том, что плодятся лишние объекты и начать писать код
Напиши свой однонаправленный лист без использования коллекций.
Jvm может и не будет множить объекты.
Алсо, енамы в лжаве, это не просто алиасы к числам.
Нужен простой алиас к числам – сделай класс с final константными числовыми полями.
В декабре написал хелловорлд. Сейчас 80к+50к квартальная премия.
Но это не мертвая джава, а модный JS и нода.
лепить жаву на быдловебкодинг - какое же это убожество, просто просер ресурсов.
Печет, плохо без куньчика :(
Джва чайка. Пилить бекенд магазина рандомных ключей для ксго на джаве это дичайшее извращение.
ой ну все, бесплатной стоматологией они меня точно уломали, уже бегу паковать чемоданы и заказывать билет в ДС.
Бесплатная стоматология это новый тренд, просто на западе это охуенный бенефит, ввиду того, сколько там это стоит. Наши жуёбки просто бездумно копируют.
У нас нормальный стоматолого дохуя стоит, 2 500 рублей за один зуб, учитывая зп по мухосрани 13 т.р. - это дохуя. У нас же ультра-капитализм, маня.
>2 500 рублей за один зуб
Минимальный рейт в раше 0.65$, 40$ за зуб.
Минимальный рейт в мурике 8$, 1500$ за зуб.
Итого, в раше дешевле в 3 раза, там блять даже простое обследование >100$ стоит, приходится к латиносам кататься.
Медстраховка от работодателя? Персональная медстраховка? Obamacare для совсем нищуков? НАХУЙ ВСЕ ЭТО! БУДУ САМ ПЛАТИТЬ ЗА ВСЕ
Ты слишком тупои, иди в ЖС тред. бля.
А вдруг мне не понравицца? Давай смирненько запили супчик, а там посмотрим.
С мозгами щас не берут. Нужны те, что без мозгов. http://ebanoe.it/2016/07/20/shitcoders/
Кстати, кто-нибудь объяснит мне термин "сыроварня"?
Проходит время, человек втягивается. Вроде и подачки с барского стола неплохие, всё становится таким родным и таким ебаным. Постепенно на его бледных пальцах вырастают перепонки (да, прямо как у лягушек) — так чужое гавно разгребать удобно. И тут БАХ! Тебе пизда. Теперь ты уже и средний код от говна с трудом отличаешь. Теперь ты — ебаная жалкая амфибия. И на следующем стендапе начинаешь новенькому заряжать, чтобы он не впрягался. Круг замкнулся.
БОМБАНУЛО ЧЕТ
Мавен для понимания как строить проект, после этого переходить на грабл
Благодарю. Я тоже подумал, что если щас анон не ответит, то буду использовать maven, т.к. часто упоминается в вакансиях.
Про доу- а за что его так прозвали? Причем тут сыр и украинский айти-форум?
Хочу тоже быть украинским программистом, покупать дорогие сыры за 500 гривен и жрать их.
Заебал уже импортозамещенный сыр залупный с отечественными волосами.
Пиздуй на удаленку в хохляцкую галеру же
А ты и читай, и пиши
Ты просто тупой. Программирование не для тебя - дальше будет еще сложнее. Иди в системные администраторы.
Я же написал. По вечерам хуярю код. Какие-то сложные вещи коммичу на гитхаб как заготовки, ибо запоминать это пиздец. Пару раз вбрасывал даже в этот тренд.
Не, у меня хохлофилия, ты что!
Кобол выбираешь . Оракал положил хуй на javaEE и сама джава медленно умирает . Будущее за универсальными языками типа JS . Рекомендую .
надо
Нужно изучать JS, потому что JS нужен как на фронте, так и на бэке, а джава не нужна. Иди к ним в тред.
>>809725
И ты тоже. Только английский еще выучи.
А я твоя мамаша.
Погуглил, кэшируются только инты от -127 до 127. Значит, с большими числами будет оверхед.
Про эякуляцию знаю, но у меня в цикле это хуячится. И погуглив бенчмарки, разница в скорости - десяток раз. Когда я уже сейчас могу парой строчек сделать не мап интеджеров, а обычный Object[].
вот тут двачую
если ты не математик или физик то тебе нахуй хаксля не нужна, в прочем если физик то тоже не нужна
мимофизик
btw зацените какие вещи на жабе с биндингами к GL можно делать.
2 года изучала несколько яп, сейчас вот стриппухой работаю, зарплата норм.
он учится, а я движок пилю, что бы когда он научился и нарисовал мне годноту, в эту годноту можно было бы поиграть
>>809809
но я нищий, з\п нихуя
сексистские шутки за 300 ммм))
Спс за подтверждение, хуйдожница))
ну первоначально была идея сделать частично киберпанк пиксель-артом
а частично еще чем нибудь (например акварелью при переходе в параллельную реальность), но пока нашелся только один человек и он (скоро) может только в пиксели
Но зочем это, если можно взять box2d+box2dlights и запилить динамическое освещение любого уровня охуенности, написав всего пару строк кода?
А в джаве и нет множественного наследования. Нет конкретных методов - делай интерфейс. Абстрактный класс тут не нужен.
> box2d+box2dlights
тяжеловесное вырождение же, к тому же не позволяющее контролировать весь процесс рендера
Свой велосипед он может и костыльный, но зато свой, родной, всегда знаешь чего от него ожидать и как все работает, а если что всегда можно прикрутить необходимое.
+Многому можно научится
нативный что ли?
btw его или хотя бы просто Си и так придется знать когда с графикой работаешь на уровне большем чем просто отрисовка загруженной текстуры
Так вот я и спрашиваю, если сделать его интерфейсом, то можно будет наследоваться от другого класса, что будет нелогично в моем случае.
Ну сообразность такого поступка это уже тема для другого разговора.
двачую этого
С чего лучше начинать изучать этот фреймворк и java заодно? Как мне создать простое базовое веб приложение, чтобы потом по нарастающей начинать разбираться? За что отвечает spring boot? Это не то, что мне нужно?
либо с книжки spring in action, либо гугли наброски mkyong по спрингу. Другой годной литературы нет по нему.
Мне и не нужна литература. Я бы доками обошелся. Там обширная документация. Только, она не линейная.
spring in action -- я так понял, что это тупо копипаста той же документации... хотя, там, наверняка, как раз есть линейность
То есть, документации море. Мне просто как бы упорядочить этот разброс для быстрого старта.
Сап, сосоны. Подскажите нубу чем subscribeOn отличается от observeOn в javaRX?
SiA - вполне себе линейная.
фу бля
Ява кодер не сразу стал кодером.
start.spring.io
ты опять выходишь на связь мудило хохлятское со своим бокстуди.
Благодарю.
Ладно, шучу. Кейс примерно такой (смотри картинку)
Итак, есть, например, 3 воркера, которые посылают запросы на условный target сервер (зеленый круг). Запрос идет в формате обычного restAPI, то есть
[https://example.com/user=1&option=2]
[https://example.com/user=2&option=3]
[https://example.com/user=2&option=4]
1. Запрос выполняется исключительно по защищенному соединению.
2. Ответ в JSON формате.
3. API не передает никаких индификаторов тго, кто запрос послал, поэтому возвращенный ответ по телу идентифицировать нельзя.
Соответственно я пока не придумал, в какой момент генерировать запросы, но идея такова.
1. Worker генерирует запрос в формате выше
2. Передает его в Proxy Controller
2.1. Proxy controller присваивает отдельный прокси
2.2. Выполняет запрос.
2.3. Получает ответ.
3. Передает ответ одному из Worker'ов, например, через Load Balancer.
Теперь собственно вопрос - куда гуглить? Есть ли какие-нибудь библиотеки, которые позволяют это сделать менее болезненно? Какие варианты вообще существуют.
В большей части литературы, которую я читал, говорится, что сборщик убивает объекты, на которые ничто не ссылается. Отсюда вопрос: например у нас есть следующий кусок кода. Есть ли вероятность, что сборщик захавает объект созданного MyFrame'а?
[CODE]...
new MyFrame();
...
class MyFrame extends JFrame {
...
}[/CODE]
Заебись разметка работает.
> куда гуглить?
1. Брокеры сообщений и менеджеры очередей - ActiveMQ, Kafka
2. ESB - Apache Camel или Spring Integration/Batch
Но я думаю это все будет оверкилл. Гораздо интереснее писать самому.
И тебе спасибо, анон.
есть
Странный код. Так написать нельзя. Попробуй на пастбин, может нам понятней станет чо ты там не выкупил.
Ок, например вот так - http://pastebin.com/SV8j2Fk3
Считается ли мусором new MyFrame(), созданный в мейне?
Мне нужно обращаться к API через разные Proxy Server.
Другими словами, у меня есть запрос к серверу с Rest API: [https://example.com/user=2&option=4]
Вместо того, чтобы его отправлял сам Worker, я хочу, чтобы он шел через Proxy. В целом, я мог бы был назначить каждому воркеру по Proxy серверу, однако один воркер должен генерировать очень много запросов с разными API keys.
На самом деле, план такой. Воркер генерирует запрос без ключа, передает его Proxy Controller, а тот в свою очередь уже выполняет запрос через определенный proxy, но ещё и добавляет необходимый API KEY, а ответ уже передает обратно воркеру.
Буду благодарен, если расскажешь немного подробней, я прочитал сейчас в общих чертах. Если не сложно, то как ты представляешь реализацию. Буду очень благодарен.
Публика одних задротов каких-то, костыли и тд, я ебу, нежели на яве нельзя захуячить все без этого?.
Создал я, например, класс, который выводит в консоль ХэллоуВорлд.
Как в IntellijIdea собрать проект?
>Как в Maven получить jar-файл?
Можешь запилить Shade Build
https://maven.apache.org/plugins/maven-shade-plugin/examples/executable-jar.html
Снова XML. Последнее время мне кажется, что иксэмэль файлы за мной следят.
Я думал можно как-то типа далее-далее-готово сделать. Мавен же в Идею интегрирован.
Ну это Java. Я могу ошибаться, но, вроде бы, тебе все равно придется написать xml файл для maven'a. А насчет билда - погугли что-то вроде intellij build maven jar.
Я правильно понимаю, что этот самый interface нужен для того, чтобы заставить класс обязательно обеспечить выполнение всех методов указанных в interface? Зачем это нужно, если так?
Этот самый interface должен быть сохранен в отдельном файле или прилеплен к методу?
Возможно я тупой, но все же.
Хорошо, загуглю. Ну да, Идея геренирует .pom файл с xml-описанием, но мне кажется, это как-то не руками правится.
>Как в Maven получить jar-файл?
mvn clean package
>Как в IntellijIdea собрать проект?
Вызовом мавен-таска package
pom это дескриптор сборки мавена, правится руками.
>Я правильно понимаю
Да
>Зачем это нужно
Если ты наследуешь интерфейс, то стороннее приложение будет ожидать, что в твоем приложении реализованы определенные методы, указанные в интерфейсе, и будет их вызывать при необходимости.
Иначе получится ошибка, когда стороннее приложение попробует вызвать метод, а его тупо нет.
мимо-еще-не-вкатился-в-джаву, формошлепы, поправьте, если неправильно написал.
>чтобы заставить класс обязательно обеспечить выполнение всех методов указанных в interface?
Неабстрактный класс, реализующий интерфейс, должен реализовать все абстрактные методы интерфейса.
>Зачем это нужно, если так?
Если сейчас не понимаешь просто забей, со временем поймешь когда дойдешь до коллекций
>Этот самый interface должен быть сохранен в отдельном файле или прилеплен к методу?
В отдельном файле, как и классы.
Ну что же вы, Бетмены? Поясните за сборщик мусора. И за анонимные классы за одной.
Создаться-то он то создался, но при следующей сборке умрет, так как на него никто не ссылается.
А что с анонимными то не понятно, он держит ссылку на объект в котором его объявили, попробуй посмотреть что из себя представляет декомпилированный анонимный класс и все поймешь.
Если посмотреть на твой ответ со стороны не знающего человека, то это полный пиздос.
Окей, но тогда почему при вызове сборщика System.gc() экземпляр продолжает жить?
И вообще, получается ссылки на все, чему я хочу гарантировать вечную жизнь, должны хранится в переменных экземпляров? Ведь локальные переменные исчезают после завершения метода. Нипанятно короч.
Сборщик Мусора, пашет сам-по-себе, вот нахуй тебе это? Там всего-то пара никчемных методов. Когда-нибуть вернешься еще.
Да сборщик - дело второе. Вопрос в том, столкнусь ли я с неизвестными проблемами если продолжу писать так, как продолжу.
Потому что в Frame возможно хранится ссылка на самого себя же, GUI поток с ним работает и так далее.
Если сделать класс
class Pidor {
Pidor inner;
Pidor() {
inner = this;
}
}
То сборщик мусора его не уберет.
Пока твое окошко маячит перед тобой, то на него что-то ссылается. Его гуй поток отрисовывает, и сборщик мусора его не убьет.
Сборщик мусора собирает то, до чего уже из кода программы никак не добраться.
Как вычислить степень, используя только побитовые операции?
Например, как вычислить 2^n, используя только &, |, ~, ^, <<, >>,>>>
Благодарю, уважаемый. Разложил по полкам.
>Сборщик мусора собирает то, до чего уже из кода программы никак не добраться.
Забыл добавить, что за редким исключением типо weakhashmap.
Хотя это вроде тоже не исключение. Пока ты можешь вытащить объект из weakhashmap то на GC ему похуй, а когда не похуй, то и в weakhashmap его уже не будет.
Допустим, у нас есть сущность ItemHolder. В конструктор передается его размер. Есть несколько вариантов, что мы будем делать:
1) Принимаем int size и сразу делаем new Item[size]. Если size отрицательный или слишком большой, нам похуй.
2) Принимаем int size и добавляем проверку if (size < 0 || size > MAX_SIZE) throw [...]. Скорее всего, выбросим unchecked-исключение. Но тогда смысла мало в этой проверке. Только чтобы раньше крашнуться. И если мы принимаем size в 10 методах, в каждом придется делать эту же проверку.
И вот я чисто логически пришел к такому варианту, скорее всего, он уже где-то описан:
3) Создаем свой тип ItemHolderSize, который гарантирует, что заинкапсулированный int в правильном диапазоне. Принимаем ItemHolderSize size и спокойно делаем new Item[size.intVal()]. Обработка ошибок уже на вызывающей стороне.
Какие подводные камни, кроме оверхеда?
А если кто-то отрицательное число отправит в твой класс?
Хуйню несешь какую-то. Выбрасываешь анчекед эксепшон и не ебешься.
Лолчто? При создании объекта ItemHolderSize, очевидно, он и сделает эту проверку в конструкторе. Если отрицательное отправят, соснут хуйца и не смогут вызвать метод, принимающий ItemHolderSize.
>new ItemHolder(new ItemHolderSize(-10));
Фикс.
Тупой ебанат какой-то, выбрасываешь illegal argument exception со значением размера и тебе потом спасибо скажут.
А если делаешь говно под себя, то можешь хоть abs брать и потом ебаться с поиском ошибки.
1) Не надо в каждом методе проверять диапазон
2) Исключение выбрасывает вызывающий метод, а не метод мой библиотеки
Ну и твое использование высосано из пальца. Обычно это будет:
byte[] buffer;
try { ItemHolderSize.parse(buffer) }
catch () {}
>Не надо в каждом методе проверять диапазон
Ты в конструкторе не можешь выкинуть исключение? Ебанат?
Вот тебе еблан пример, как надо поступать.
Вызови new ArrayList<>(-10);
И глянь как умные люди делают.
Блять, это простой пример был.
Вот конкретно. В конструкторе проверили size, ок. Но у нас еще есть геттер, сеттер, хуетор, каждый из которых принимает slotId. И каждый раз приходится проверять диапазон slotId. Даже если эту проверку в отдельный метод isInRange() вынести, это все равно хуита.
Ещё раз, смотришь исходные коды колекшонс фреймворка и учишься, даунич.
1 << n
Ну и это лал, что сказать. Если с тем же аргументом вызываются несколько сетов или гетов, будут лишние проверки.
Ты серьезно думаешь, что 2 сравнения примитива в инлайнящемся блоке медленнее чем вызов гетера из твоего класса-обертки?
Какой же ты мудель, ой блядь.
Тебя ещё обоссать надо за дрочку на скорость.
Конечно-же внутри джава треда.
>чем вызов гетера из твоего класса-обертки
Тоже инлайнится, только без лишних проверок. Мой вариант быстрее почти всегда.
Тут дрочка не на скорость, а на качество кода. Гораздо приятнее видеть в примитивных методах саму их суть, а не какую-ту хуиту вроде ckeckRange(), повторяющую в каждом из них.
Потому что Worker - просто обрабатывает данные и сохраняет их. Мне же надо скрыть местоположение этого воркера от api сервера. Не суть зачем, просто спрашиваю рекомендации.
Анон написал про шину предприятия и прочие тулзы для интеграции платформ, но я не совсем концептуально понимаю, что он хотел мне этим сказать.
flush используется в процессе работы с потоком, close неявно вызывает flush перед закрытием
Ты можешь применить паттер consumer-producer с помощью BlockingQueue, и сделать так чтобы прокси брали результаты выполнения волкеров из этой самой очереди. Если еще больше абстрагироваться, ты можешь заюзаать для этого ExecutorService. Пролистай два или три треда назад, я уже объяснял это одному анону недавно, как ознакомишься задавай вопросы.
Про все это я знаю. Тут вопрос в другом. Есть ли какие-нибудь продвинутые технологии для этого?
Создать список проксей и как-нибудь его мэтчить - никаких проблем.
Другое дело, решение очень костыльное будет, как по мне.
Если уж быть до конца честным, я не понял что ты вообще хочешь. В частности, я не понял этих странных фраз:
>скрыть местоположение этого воркера от api сервера.
>я хочу, чтобы он шел через Proxy
что ты имеешь ввиду под Proxy - сервер или какую-то сущность?
>На самом деле, план такой. Воркер генерирует запрос без ключа, передает его Proxy Controller, а тот в свою очередь уже выполняет запрос через определенный proxy, но ещё и добавляет необходимый API KEY, а ответ уже передает обратно воркеру.
т.е. ты хочешь чтобы worker работал на два фронта: генерировал запросы и принимал результаты от ProxyContainer-а?
Если я тебя правильно понимаю, ты хочешь чтобы воркер и прокси ассоциировались как один к одному, так?
Тогда почему бы тебе не выделить интерфейс из прокси и научить воркера работать с этим интерфейсом, а конкретную реализацию подпихивать в конструктор воркера при каждом создании воркера? IoC или DI хз как по-умному. Воркер не будет знать ничего про реализацию твоего прокси, только про интерфейс.
Блин, так и понял, что спутают с proxy шаблоном проектирования.
Суть в чем.
Есть некий API сервер (не мой), который не должен знать откуда конкретно идет запрос.
Есть список Proxy серверов, которые гоняют тафик через себя. Тупо сервера, которых в интернете навалом.
Есть воркер, который должен сохранять данные в базу.
Запросы, которые посылают воркеры:
[https://example.com/user=1&option=2&api_key=?]
[https://example.com/user=2&option=3&api_key=?]
[https://example.com/user=2&option=4&api_key=?]
Соответственно, у меня идея такая. Воркер генерирует запросы без api_key. Меняет user, option и т.д.Передает их на контроллер proxy серверов.
Тот в свою очередь добавляет api_key и отправляет запрос через proxy сервер к api серверу.
Получает ответ и отправляет его обратно воркеру.
Короч. Хз. Как бы сделал я:
--- App.class#main(String[] args) ---
ExecutorService service = Executors.newFixedThreadPoolExecutor(100);
for (String url:proxyUrls) {
service.submit(new Worker(url));
}
service.shutdown();
--- Worker.class ---
public class Worker {
private String url;
Worker(String url) {this.url = url};
public void run() {
// do call to proxy
// save results to database
}
}
Комментарии:
Я предлагаю создавать тредпул и наполнять его воркерами, задача которых преобразовать url, обратиться к api через прокси на свое усмотрение и сохранить результат в бд. Потом из бд уже отдельно доставать и анализировать удобными для этого средствами. В воркере нечего анализировать (по крайней мере ты не написал что хочешь что-то анализировать), поэтому результат хранить в воркере тоже нет смысла, пусть убиваются garbage collector-ом.
В этом и проблема. У меня в воркере довольно много аналитики идет.
Есть несколько причин, почему я хочу отделить Proxy от Worker, так как через прокси пойду разные запросы (и не все воркеры их смогут обработать).
Во-вторых, я хочу организовать микросервисинг с эндпоинтом, который будет собирать статистику. И вообще все на Spring переписать, так как по ощущениям - ебусь с гвоздатым дилдаком.
Другими словами нет никаких библиотек, которые помогут мне это организовать?
Поэтому их совсем немножко добавили, там где без этого нельзя.
К примеру: у Scala в Iterable 116 дефолтных методов, а в Java завели отдельный класс Stream.
Если дефолт метод реализован то дефолт реализация скрывается. Никаких проблем нет.
>Нахуя делать дефаулт методы в интерфейсах?
Видео 1
>>810651
>Никаких проблем нет.
Ну несовсем (Видео 2)
У меня от этих видео МЕТОД ФУ и ИНКОМПАТИБАЛ ЕРРОР.
для создания простого приложения для такси, для себя, недавно начал изучать джаву. Просто не знаю в какую сторону гуглить
http://stackoverflow.com/questions/38707795/building-proxies-hub
Я накатал вопрос ещё раз, только он, к сожалению, на английском. Может быть, будет понятнее, чего я хочу.
Веб часть с jsf на spring переписать.
ejb + jpa видимо тоже на spring спортировать.
таймерные бины тоже реализовать как то внутренними средствами.
Какие профиты кроме изучения новых технологий?
Проблемы множественного наследования возникают при наследовании классов. У интерфейсов нет внутреннего состояния, и с этим проще.
Как по мне так переливание из пустого в порожнее. Кроме как для изучения таким заниматься щитаю не стоит.
чет мало
http://ideone.com/ki21LG
Use assert, Vader.
String x = "qwe";
String y = x; 1 раз присвоил и сьебал
x = "asd"; поменял х, у равно qwe
//y = x;mycode, присвоил y'ку новый икс
System.out.println(y);
Строки неизменяемым, x и y - ссылки на конкретные объекты. При присвоении двигается сама ссылка. Если тебе нужны алиас к имени переменной, то в джаве их нет.
Зачем присваивать значения одной переменной к другой переменной, они же будут иметь одинаковые значения, зачем?
Я это знаю. Но это уже реализация, она не должна влиять на логику выполнения. По логике при присваивании любого объекта должна просто присваиваться ссылка, объект не должен копироваться. Строка это объект. Я знаю, что на самом деле строки не копируются, а там просто ссылка ставится, потому что строки иммутабельные, но это уже реализация, а с логической точки зрения они копируются.
что куда копируется? была ведь строка "qwe", на нее, т.е. на один объект, ссылались две переменные x и y, ты изменил содержимое x, теперь создалась новая строка "asd", но y-то продолжает ссылаться на "qwe"
7 баксов в месяц самая дешевая подписка https://www.heroku.com/pricing
ОЗУ там же. Максимальный допустимый обхем jar-ника емнип 300 мб, а статик контент хранить на хероку вообще нельзя из-за его микросервисной природы, если ток юзать cdn какойнить. Алсо можно бесплатно пользоваться если у тебя будет бот который будет твой сайт дергать раз в 30 минут.
Math.random() округлишь до целого сам.
Или напиши функцию
fun mt_rand() = Math.random().toInt()
Функции = методы. Привыкли к своему JS бля.
Разница примерно как между говном и мочёй.
>>810844
Короче. С проксями я вычитал про класс Proxy
Запилил что-то типа
new Proxy(Proxy.Type.HTTP, new InetSocketAddress("host", port));
В итоге на Proxy Controller будет коллекция в формате
Timestamp=>ClientObj
Где Timestamp - время последнего вызова объекта.
ClientObj - собственно объект с хостом\портом + всякие другие важные данные.
Worker будет отсылать в json формате запросы к Proxy Controller, тот будет их выполнять и возвращать результаты обратно в контроллер.
Другой вопрос:
Поясните за Camel/Integration. Мне понравилась идея с шиной предприятия, потому что если воркер помер, то его просто перезапущу и т.д.
Однако мне не совсем ясно принцип хранения и передачи информации.
Вот Proxy Controller отработал, отправил данные в эту шину, а дальше что?
>Однако мне не совсем ясно принцип хранения и передачи информации.
Кемл и не хранит данные нигде сам. Он их только отрабатывает. Так что тебя ждет еще очередь activemq.
А что за хуйню там ты с проксями себе понавыдумывал, я не понялл.
Как я выше писал - мне нужно отправлять запросы через разные прокси. Я знал про System.setProperty, которая позволяет задать host/port, но мне надо чтобы на одной машине использовалось сразу несколько прокси-серверов.
Я не знаю, когда я слышу прокси и http, мне на ум приходит nginx. Но точно не java. При чем там систем проперти я вообще не понял.
Олсо, вопрос про endpoint'ы. Я хочу всю мою хуйню переписать на Spring. В частности в проекте есть воркеры, proxy_controller, веб-морда и т.д.
Все это оформлено в мелких *.jar файлах, которые выполняют каждый свою задачу. Куда гуглить, анон?
>Все это оформлено в мелких *.jar файлах, которые выполняют каждый свою задачу. Куда гуглить, анон?
Ты сначала реши зачем ты что-то делаешь, а потом уже гугли. "Хочу на спринг" - это глупость какая-то.
Ну смотри. Есть удаленный api сервер. Я хочу к нему подключиться.
Вариант первый:
Я подключаюсь к нему напрямую. (Ну думаю никаких вопросов)
Вариант второй:
Я подключаюсь через proxy сервер (сервер между моей платформой и api сервером).
Меня интересует второй вариант. Соответственно, воплотить это в жизнь можно:
https://docs.oracle.com/javase/8/docs/technotes/guides/net/proxies.html
Либо
В Java 1.5 + появился класс Proxy, через который можно работать.
>Вариант второй:
>Я подключаюсь через proxy сервер (сервер между моей платформой и api сервером).
При чем здесь java? Я вот чего не понимаю.
То есть в идеале мы могли бы десериализовывать объект из базы в конкретный объект в памяти.
> нельзя создать больше одного объекта с определенным значением поля (guid)?
GUID внезапно уникальны.
> То есть в идеале мы могли бы десериализовывать объект из базы в конкретный объект в памяти.
Берешь и десериализуешь. Все.
А как же его тудой?
В смысле хуйню в массив захуярить? Форичем конечно нельзя, простым for (int i = 0; i , n; i++) конечно можно.
Ну типа того. В целом именно к этому и сводится. >>811287
Несколькими постами выше я спрашивал: бля, анон, придумал хуйню. Есть ли идеи какие-нибудь. Ничего не ответили.
Если у тебя есть идеи, как сделать ассоциацию token => proxy[host/port] без кучи серверов и без использования Java, то буду безмерно благодарен, если расскажешь об этом. Так как желания ебаться с этим вообще нет никакого.
Однако другого решения я не вижу. Мало того, что мне нужна связка proxy=>token, так как на другом ip токен считается недействительным, так ещё и proxy могут дохнуть, их нужно отлавливать, досыпать новые и т.д. Я не представляю, как сделать это без собственной реализации.
>>811282
Окей. Разъясняю. На данный момент есть несколько десятков воркеров (это именно виртуальные машины, на которых запущены приложения, которые делают запросы и обрабатывают их). Работает все, конечно, заебись, но недостаточно.
Сначала возникла необходимость разворачивать и убивать их автоматически. Можно через cli какой-нибудь делать, но это все равно ручной труд. Захотелось кнопочку в веб интерфейсе, которая все сделает за тебя.
Затем возникла проблема: а что если воркер сдыхает? Надо его перезапустить. Надо допилить кнопочку, которая перезапускает.
А как понять, что воркер сдох? Надо чтобы он отсылал статистику. Как это делать? Ну какой-нибудь Rest API, который сообщает состояние.
В итоге таких кейсов набралось дохуя. Я стал гуглить, а что же есть в Java, чтобы из коробки сделать быстро и эффективно приложение с Rest API, но так чтобы много не ебаться.
Нашел Spring, который решает всю мою боль. Подкупили их туториалы, которые обозначают required time: 15 minutes. Почитав, я пришел к выводу, что прямо сесть и поехать - не выйдет и придется разбираться. Однако альтернативы придумать не могу.
Следовательно, возникает вопрос: а как вообще организовать разворот всего проекта: воркеров, прокси, базы, etc? Решил спросить тут.
Ты куда пихаешь и что блять? В массивы нельзя пихать, они не ресайзятся, ты им один раз место выделил и обращаешься по индексу. В списки можно добавлять с помощью add(obj). Можно вставлять внутрь списка по add(int, obj), но только если у коллекции УЖЕ такой размер, причем не зарезервированный, а именно использованный. Так что если тебе просто заполнить список то просто add().
final List<Integer> list = new ArrayList<>(10); //10 это резерв, а не размер, размер равен 0
for (int i = 0; i < 12; i++) list.add(i);
Теперь размер 12, а зарезервированно скорее всего больше, зависит от реализации.
Где проверять входные аргументы и бросать исключение: только в parent, в parent и child или только child?
А что про него писать-то? Интерфейс с методом который сравнивает для объекта и должен вернуть отрицательное число если первый меньше второго, 0 если равны, и положительное если первый больше. По сути это создание отношения по какому-то признаку. В восьмой джавке добавили дефолтный метод equals, хз зачем, он кажется просто проверяет что результат сравнения равен 0. Ах да, аргументы на налл можно не проверять, ожидаемое поведение что туда не будут передавать наллы, а если передадут то он упадет с налпоинтерэксепшн. Используется во время сортировок в основном.
Анончики, вы хоть скажите, что я долбоеб или дайте совета. Без фидбека очень тяжело сидеть. Я уже просто в объемах документации теряюсь. Скажите, что не понятно - я схемы всякие нарисую, объясню, что хочу сделать и т.д.
> а что если воркер сдыхает? Надо его перезапустить.
Не надо, он просто ловит все исключения и логгирует.
> А как понять, что воркер сдох?
Поймал исключение или 4xx/5xx ошибку от сервера.
> Ну какой-нибудь Rest API, который сообщает состояние
Пиши все операции в БД.
> воркеров
Просто очередь runnable.
> прокси
В БД с вебуем для круд операций.
> базы
В фоне крутится pg/maria. В приложении только миграции.
Примерно такое решение сейчас и работает, только беда в том, что слишком много проблем возникает при эксплуатации этой системы.
Хочу отметить, что это все же не простая приложуха, которая полчаса отработает и будет заброшена в папку old_projects, а небольшая платформа, которую я хочу крутить 24/7 и не сидеть перед монитором, проверяя корректность её работы.
Какие же проблемы сейчас возникли:
База данных. Использую Postgresql, но она как-то слабо вывозит. Конечно, существует вариант арендовать очень дорогую базу, но это мне не по карману. Речь идет о пропускной способности в 100 000 insert'ов в секунду и примерно 1000 update'ов в секунду. Сюда ещё добавим вариант с тем, что в БД будет отправляться статистика работы + всякие meta данные.
Если даже усраться и использовать все плюшки, которые предлагает postgresql, то возникнет ещё одна проблема. База данных - это не endpoint. После сбора данных ещё происходит их анализ, который выполняет отдельная группа воркеров, которая не меньше насилует базу данных всевозможными запросами.
Следующая проблема - объем данных. Postgresql, который я могу позволить себе, уже не особо вывозит его. Простенький join уже занимает около 70 секунд. (inb4: у тебя запрос хуевый). Есть одно решение, которое удовлетворяет потребностей, но оно не поддерживает update/delete операций, что совсем не вписывается в рамки этой задачи.
Закрыв глаза на то, что было пару кейсов, когда нужно было перезапускать воркеров, я столкнулся с ситуацией, что их нужно иногда выключать, когда обрабатывать нечего. Развернуть 10 воркеров довольно легко, но когда речь идет о 100? Ну можно всякие knife и прочее использовать, но как по мне - это ад.
С прокси вообще отдельная тема. Token, который завязан с proxy, имеет несколько состояний, которые мне крайне необходимо знать.
В итоге сталкиваюсь с тем, что как бы я не хотел, все равно надо запилить какой-то main app, который дирижирует этим цирком уродов. Идея с шиной предприятия мне очень понравилась, так как как раз этот роутинг очень и очень нужен, чтобы приложения могли общаться между собой.
Примерно такое решение сейчас и работает, только беда в том, что слишком много проблем возникает при эксплуатации этой системы.
Хочу отметить, что это все же не простая приложуха, которая полчаса отработает и будет заброшена в папку old_projects, а небольшая платформа, которую я хочу крутить 24/7 и не сидеть перед монитором, проверяя корректность её работы.
Какие же проблемы сейчас возникли:
База данных. Использую Postgresql, но она как-то слабо вывозит. Конечно, существует вариант арендовать очень дорогую базу, но это мне не по карману. Речь идет о пропускной способности в 100 000 insert'ов в секунду и примерно 1000 update'ов в секунду. Сюда ещё добавим вариант с тем, что в БД будет отправляться статистика работы + всякие meta данные.
Если даже усраться и использовать все плюшки, которые предлагает postgresql, то возникнет ещё одна проблема. База данных - это не endpoint. После сбора данных ещё происходит их анализ, который выполняет отдельная группа воркеров, которая не меньше насилует базу данных всевозможными запросами.
Следующая проблема - объем данных. Postgresql, который я могу позволить себе, уже не особо вывозит его. Простенький join уже занимает около 70 секунд. (inb4: у тебя запрос хуевый). Есть одно решение, которое удовлетворяет потребностей, но оно не поддерживает update/delete операций, что совсем не вписывается в рамки этой задачи.
Закрыв глаза на то, что было пару кейсов, когда нужно было перезапускать воркеров, я столкнулся с ситуацией, что их нужно иногда выключать, когда обрабатывать нечего. Развернуть 10 воркеров довольно легко, но когда речь идет о 100? Ну можно всякие knife и прочее использовать, но как по мне - это ад.
С прокси вообще отдельная тема. Token, который завязан с proxy, имеет несколько состояний, которые мне крайне необходимо знать.
В итоге сталкиваюсь с тем, что как бы я не хотел, все равно надо запилить какой-то main app, который дирижирует этим цирком уродов. Идея с шиной предприятия мне очень понравилась, так как как раз этот роутинг очень и очень нужен, чтобы приложения могли общаться между собой.
Допустим ты даже не пиздишь про свою криворукость в качестве дата моделера.
Допустим ты все уже денормализовал и использовал все нереляционные фишки PG.
Разбей БД на админскую и доменную.
Для апдейтов используй NativeQuery или JdbcTemplate, а не ORM.
Пиши только конечный результат в БД. Промежуточный результат храни в памяти.
> их нужно иногда выключать, когда обрабатывать нечего
Одна задача - один runnable, который сам завершается после очередной операции. Его поток возвращается в пул. При добавлении в очередь следующей задачи, стартует новый runnable
> С прокси вообще отдельная тема. Token, который завязан с proxy, имеет несколько состояний, которые мне крайне необходимо знать.
Ну и в чем именно проблема? Просто выдели это все в отдельный класс, который будет решать маппить хост/токен на прокси адрес при помощи простых предикатов.
И что тебе по ESB не ясно?
SOOOQUAAA
Третий день учу язык, а тут уже такие подляны, по простому тестовое задание не зафигачить, а лишние 20 строчек кода писать в программу из 30 строчек не хочется.
Это делается тернарным оператором в одну строчку - какие нахуй 20 строк? И это даже типобезопаснее какого-то там каста.
>тернарным
Это мы не проходили, это на не научили. Я так понимаю, надо уже описанными в предыдущих главах методами делать. Но слово это погуглю, да.
> Сперва пишет на двач, а потом в гугл
Как-то не очень у тебя перспективы, другой вкатывальщик
Я погуглил, но нигде не увидел надписи БУЛИН НЕЛЬЗЯ В ЧИСЛЕННЫЙ, поэтому уточнил.
Я вообще про "тернарный" и неважные навыки в поиске информации.
А вот и смотри, первая ссылка в гугле:
stackoverflow.com/questions/3793650/convert-boolean-to-int-in-java
пишу простейшие хелловорлды, и ни еклипс ни идея не распознают system.out.println
в system path путь к jdk и jre прописал. такое ощущение что то ли иде-шкам нужно где-то явно указать пути к этой оракловской залупе, то ли при создании класса нужно проимпортить что-то (пробовал java.lang.io, но хуй там плавал)
мб тут кто подскажет, что я делаю не так?
и с маленькой и с большой - один хер
ctrl+space не дает никаких вариантов после того как точку ставлю
system. - и тут вот он по идее должен предложить мне и ауты и хуяуты (как например на работе) - а хуйнанэ
Ну, ты в любом случае только с большой пиши. С маленькой он не воспримет. И компилируй через командную строку пока, не запаривайся с иде. Я два учебника параллельно штудируют, в обоих советуют компилировать через цмд. тоже только вкатился
спасибо, попробую
но если кто вдруг подскажет, как через иде это настроить - будет вообще волшебно
Странно что вроде все знаешь все умеешь, а банально вопрос сформировать не можешь
>Следовательно, возникает вопрос: а как вообще организовать разворот всего проекта: воркеров, прокси, базы, etc?
D O C K E R
O
C
K
E
R
>>811642
>Допустим ты все уже денормализовал и использовал все нереляционные фишки PG.
А может ему в сторону нереляционного чего и взглянуть? Правда хз, что у него там за данные.
>Для апдейтов используй NativeQuery или JdbcTemplate, а не ORM.
Я думаю, что у него там вообще jdbc.
Не берут джава-разработчиком из-за того, что пока что мало знаю. Может, вкатиться в тестировщицыки?
DA TI OHUEL.
java core ещё не осилил. Понимаю, что справедливо отказывают, но хочется УЖЕ начать работать, хоть стажером. Заебало сисадминство в край.
Есть у меня небольшое веб-приложение. Ясное дело, на джаве.
Нужно сделать так, что-бы это приложение слало POST/GET запросы на сервер, и обрабатывало полученные данные. Хочу слать запросы с помощью HttpURLConnection. Будет работать?
Если правильно сделаешь, то будет.
Да. Как можно не осилить java core и искать работу? Ты же понятия не имеешь, что тебе там делать. И сисадмин ты походу такой же, как и погромист.
Можно конечно самому выучить. Ток если с тебя такое сбивает мотивацию, то похоже ее у тебя не очень много.
Ясно-понятно. Видал я таких умников. А потом выясняется, что критикан вообще сам по знакомству в ИТ попал. Зато гонору хоть отбавляй.
Прост мозг у меня бздливый, все время хочет оптимальный путь найти, а тут ниебаца гуру такое в щи заявляет.
>Я есть хочу сегодня.
Ну так иди у мамки борщ наверни
>Фреймворк выучу по ходу дела.
Как же раздражают такие посредственности в IT (вчера он был дворником, а сегодня еба-программист).
Иному работодателю проще нанять 10 мартых без мотивации и работающих за жрат, чем пару тройку толковых ребят.
Спасибо хоть что в Java вкатываешься, хоть не пересечемся никогда.
>вчера он был дворником, а сегодня еба-программист
Обычное дело в IT. Говоришь, как будто что-то плохое.
Ты, похоже, с завода капчуешь.
Ещё скажи, что если не в Москве родился, то все, шансов нет никаких.
сука
кому какое дело что это за метод блять
даун блять подавать метод не указывая даже из какой библиотеки, информативности НОЛЬ сука, да хоть пусть setUrMumAnus(null), нам то какое дело сука, уебывай
ну если ты на говносвинге сидишь, то да неоч
>Странно что вроде все знаешь все умеешь,
Я нихуя не умею, но есть желание разобраться. Другая проблема, что я схожие задачи решал ранее через веб реализации (меньший объем данных, скорость не важна), поэтому быстро подсел на REST api, когда каждая нода просто отчитывалась\выполняла задачу по сраному get/post запросу.
Вопрос я сформулировать не могу, так как объем технологий слишком большой. Я понимаю, что я явно дохуя замахнулся, что Spring для меня - это из пушки по воробьям, однако я не могу найти срез технологий, которые позволят спроектировать оптимальную систему за короткий промежуток времени.
>>811642
>Допустим ты даже не пиздишь про свою криворукость в качестве дата моделера.
Пизжу. База данных вообще больное место проекта. Однако сделать две таблички с ключом и отношением один ко многим, а потом написать join, который объединит вторую с первой таблицу может даже школьник в 9 классе.
>Допустим ты все уже денормализовал и использовал все нереляционные фишки PG.
Зачем использовать нереляционные фишки, когда есть нереляционный БД? Тот же clickhouse позволяет хранить тысячи тонн информации, маштабировать кластер, получать доступ к ещё не агрегированным данным и импортировать данные с огромной скоростью, в то время как PG - позволяет всего лишь 32TB информации (если память не изменяет) на таблицу.
>Для апдейтов используй NativeQuery или JdbcTemplate, а не ORM.
Как ниже анон сказал, действительно у меня jdbc был. Мне кто-то жука посоветовал, но это вообще оверкилл для этой задачи. Посмотрю, что ты предлагаешь.
>Одна задача - один runnable, который сам завершается после очередной операции.
Есть воркер, который в тредпуле - тут никаких проблем. Все красиво работает, прямо доволен. Но я говорю про воркер, как виртуальную машину, на которой уже запущено приложение. Вот именно эту VM надо иногда останавливать\перезагружать\убивать. Про докер отличное замечание. Собираюсь его использовать.
>Ну и в чем именно проблема?
Проблем никаких. После 20 минут тестов я понял, что надо. Только я хочу вынести эту задачу на отдельную VM.
>И что тебе по ESB не ясно?
Да я хуй знает, что за сущность это. Я понял, что это охуенный роутер, который позволяет организовать интеграцию.
Окей, camel использует сервис очередей, в которых хранит месседжы, который потом роутит.
Вопрос. Как попасть данным в эту очередь? Вот у меня есть выработанный файл на 20 млн строк. Обычный csv файл.
Я хочу его разделить между воркерами (отдельный виртуальные машины), а в случае если воркер дохлый, то не дай б-г лишней информации ему не скинуть.
Дальше у меня вообще начинает полное непонимание, как в этот процесс вступает Camel.
>Странно что вроде все знаешь все умеешь,
Я нихуя не умею, но есть желание разобраться. Другая проблема, что я схожие задачи решал ранее через веб реализации (меньший объем данных, скорость не важна), поэтому быстро подсел на REST api, когда каждая нода просто отчитывалась\выполняла задачу по сраному get/post запросу.
Вопрос я сформулировать не могу, так как объем технологий слишком большой. Я понимаю, что я явно дохуя замахнулся, что Spring для меня - это из пушки по воробьям, однако я не могу найти срез технологий, которые позволят спроектировать оптимальную систему за короткий промежуток времени.
>>811642
>Допустим ты даже не пиздишь про свою криворукость в качестве дата моделера.
Пизжу. База данных вообще больное место проекта. Однако сделать две таблички с ключом и отношением один ко многим, а потом написать join, который объединит вторую с первой таблицу может даже школьник в 9 классе.
>Допустим ты все уже денормализовал и использовал все нереляционные фишки PG.
Зачем использовать нереляционные фишки, когда есть нереляционный БД? Тот же clickhouse позволяет хранить тысячи тонн информации, маштабировать кластер, получать доступ к ещё не агрегированным данным и импортировать данные с огромной скоростью, в то время как PG - позволяет всего лишь 32TB информации (если память не изменяет) на таблицу.
>Для апдейтов используй NativeQuery или JdbcTemplate, а не ORM.
Как ниже анон сказал, действительно у меня jdbc был. Мне кто-то жука посоветовал, но это вообще оверкилл для этой задачи. Посмотрю, что ты предлагаешь.
>Одна задача - один runnable, который сам завершается после очередной операции.
Есть воркер, который в тредпуле - тут никаких проблем. Все красиво работает, прямо доволен. Но я говорю про воркер, как виртуальную машину, на которой уже запущено приложение. Вот именно эту VM надо иногда останавливать\перезагружать\убивать. Про докер отличное замечание. Собираюсь его использовать.
>Ну и в чем именно проблема?
Проблем никаких. После 20 минут тестов я понял, что надо. Только я хочу вынести эту задачу на отдельную VM.
>И что тебе по ESB не ясно?
Да я хуй знает, что за сущность это. Я понял, что это охуенный роутер, который позволяет организовать интеграцию.
Окей, camel использует сервис очередей, в которых хранит месседжы, который потом роутит.
Вопрос. Как попасть данным в эту очередь? Вот у меня есть выработанный файл на 20 млн строк. Обычный csv файл.
Я хочу его разделить между воркерами (отдельный виртуальные машины), а в случае если воркер дохлый, то не дай б-г лишней информации ему не скинуть.
Дальше у меня вообще начинает полное непонимание, как в этот процесс вступает Camel.
>Дальше у меня вообще начинает полное непонимание, как в этот процесс вступает Camel.
http://pastebin.com/mNBam88D
Воркеры отработанные впихивают в другую очередь и ты оттуда их забираешь. Как-то так.
Camel - всего лишь кучка библиотек, которые помогают тебе связать твои процессе в систему. Он позволяет тебе описывать эти связи чуть проще, чем если бы ты это делал руками.
Тогда у меня сразу несколько вопросов на эту тему. Вопросы архитупые, так как меня смущают методы from/to. С интеграцией Java приложений я первый раз сталкиваюсь и не осознаю задумку.
Возьмем для примера один узкий сегмент приложения:
Есть сервера:
[192.168.10.5] - Proxy server, который выполняет запросы.
[192.168.10.6] - Сервер producer.
[192.168.10.7-10] - Сервера с worker.
Workflow я представляю себе примерно такой.
Producer генерирует запрос типа: https://api.server/user=1&option=1;
Кидает его в Proxy Controller, который выполняет его, добавив к нему токен.
В случае, если запрос 200 OK, то тот должен быть передан Worker'у. (Воркер может его вернуть на повторное выполнение, если найдет какую-то ошибку в ответе).
То есть между этими тремя сущностями гуляет объект, например, client, который содержит важные поля типа proxy/host/request/timeout/etc.
Соответственно Camel должен быть где-то между ними. Что вообще по себе представляет этот инстанс? Отдельный сервер, который стучится по FTP/Protocol name, забирая данные, или задумка такова, что каждая нода в цепочке знает о camel и использует его?
Я же там написал - всего лишь кучка библиотек. Т.е. кому нужны его фишечки - тот о нем знает. А кто-то просто в очередь напихивает данные. Или еще что.
Каналы же универсальны, их можно и без кемла использовать.
Отдельным сервером же в этом случае будет скорее activemq.
ага ага прокрастинатор ебаный, катись в свои конфочки прокрастинировать там
а лучше съеби в ЖС тред, там все просто и учить много не надо
Спасибо за ценнейший совет, тебе тоже всего хорошего.
error: try-with-resources is not supported in -source 1.5
error: multi-catch statement is not supported in -source 1.5
Что мавен от меня хочет? Гуглил, ничего не понял.
>error: try-with-resources is not supported in -source 1.5
>error: multi-catch statement is not supported in -source 1.5
http://stackoverflow.com/questions/16723533/how-do-you-specify-the-java-compiler-version-in-a-pom-xml-file
Скажи мавену, что ты в 2016 году живешь.
То есть я каждой сущности при помощи camel описываю, как работать с очередью?
Типа Proxy получает ответ. и делает что-то типа from(...).split().to(response-qeue); //ещё до конца не прочитал.
Воркеры чекают очередь и вытаскивают из них данные, обрабатывая их.
Другими словами, я могу не ебаться и взять Amazon SQS? А есть ли возможность какую-нибудь фишку с нотификацией провернуть? Типа чтобы воркеру сообщали о том, что есть сообщение в очереди? А можно ли пачками данные оттуда тянуть? Лучше пилить каждому воркеру по очереди или одну большую очередь на всех воркеров?
Спасибо
ggggggra
Олсо, шина данных это какое-то абстрактное понятие или что? В чем она выражается?
Почему он по умолчанию это не может сделать? Мне все время приходится это руками писать.
потомушта мавен
<maven.compiler.source>1.8</maven.compiler.source>
Блядь, вот хоть убей - не могу понять концепцию.
Я так понимаю, что проще всего мне стоит создать Camel-service, который описывает все роутеры в формате from().to();
Блядь, не. Я нихуя не понимаю. Как запилить ебучий транспорт для моих воркеров?
>Другими словами, я могу не ебаться и взять Amazon SQS?
Ты не поверишь. http://camel.apache.org/aws-sqs.html
Ендпоинты в кемеле - это абстракция. Что там за ним: активмку, амазаон, фтп или соап - тебе наплевать. Ты просто указываешь откуда взять, что сделать и куда передать.
>А есть ли возможность какую-нибудь фишку с нотификацией провернуть?
Зачем? Ты написал from(endpoint).to() и все. jms за тебя разберется с нотификацией.
>Лучше пилить каждому воркеру по очереди или одну большую очередь на всех воркеров?
Смотря какая у тебя задача, очевидно же.
А вообще - погугли. Твои вопросы гуглятся достаточно легко.
>Блядь, не. Я нихуя не понимаю. Как запилить ебучий транспорт для моих воркеров?
Да используй jms. Это и будет твой транспорт. А чтобы проще с ним работать и описывать поток хождения данных используй кемл. Просто либа, которая облегчает тебе жизнь.
У меня уже две страницы гугла прокликаны на русском\английском\немецком. Я просто не знаю, что гуглить.
См. пикчу.
Я хочу себе коробку, которая будет решать что и куда отправлять.
По порядку
Proxy:
На вход: json object (proxy/port/token/request)
На выход: json object(proxy/port/token/request/data);
Worker_n:
На вход: json object (как выше)
На выход: csv файл, с обработанной информацией.
Analyze_n:
На вход: csv файл
На выход: csv файл
4. ???
Сохранить в базу данных.
Как тут данные друг от друга тягать? Или я вообще концептуально обосрался? Все прямоугольники - отдельные сервера с ip адресами и приложениями на Java, которые выполняют свой стэк задач.
Другими словами, я хочу организовать платформу по linux way. Каждый компонент решает только одну задачу и о других компонентах не знает, а также быстро заменим.
Ну потому что маштабировать надо. Workers/Analyze я могу сложить в докер на одном сервере. Не суть.
Взяли полгода назад так в бодишоп стажером.
Да, я немного сократил схему.
Сначала Access token storage пытается получить токены у сервиса. То есть запрос идет к Proxy.
Затем, после того, как хоть один токен получит, включается Producer, который генерирует запрос и передает его в Proxy.
Proxy подписывает запрос токеном и выполняет его через конкретный proxy-server.
Полученный запрос идет в обработку воркерам, которые смотрят, что там им прислали.
Если в ответе есть ошибка, то они отсылают объект обратно, Proxy передает запрос повторно. На самом деле я пока не знаю, как это корректно сделать.
Если ошибки нет, то просто сохраняем в файлик\бд.
>Если в ответе есть ошибка, то они отсылают объект обратно, Proxy передает запрос повторно.
у меня плохо предчуствие
Почему? Я просто буду подсчитывать количество ошибок у каждого токена и убивать его если это будет большое число.
И все же, возвращаясь к вопросу - хули делать-то?
Шилдт академическое говнецо, бесконечно далекое от реального и современного мира. Ты уверен, что там нормально?
Ну, в ежедневной работе каждый день не нужно, но уж точно не
> академ говно
> ништяки для хуцкера
Вот прямо сейчас юзкейс подгоню. Метод, который принимает класс и над нужными полями делает грязные вещи. Конкретнее, допустим есть возвращаемый доменный обжект из базы. Но идентификаторы ты хочешь не long id, а PK + адрес мамаши ентити в бд. В случае идентификатора сущности в базе можно без рефлексии. А если хочешь, чтобы все было автоматически и делалось над всеми идентификаторами в классе, то без рефлексии не обойтись.
Я тоже когда-то угорел по рефлексии. Но в итоге - это все для фреймворков и библиотек. В рабочем коде это только скатывает твой код в говно, которое никто, кроме тебя не понимает.
Есть такое, мысль здравая. Но все же хотелось знать побольше, чем нафига нужно, где используется и причем тут setAccessible. Не то чтобы нужно, но для общего развития пригодится. Сам что наворачивал?
Всякой фигней занимался. Но если тебе интересно посмотреть на неё в действии - посмотри на внутринности спринга. Его вайринг бинов по аннотациям - самое оно.
Так вот, лежит папка resources в рабочей директории. Из неё спокойно считываются как статичные ресурсы, так и обычные view-ы. Однако Thymeleaf мало того, что каждый раз одаривает меня предупреждением, что "HTML5"-режим deprecated и а-я-яй, так ещё и ругается, что не может найти путь classpath:/templates, которого, очевидно, нет, ведь всё хранится в папке resources.
View-ы и fragment-ы (th:fragment) он спокойно отдаёт и всё работает, но предупреждения несколько напрягают.
Путём восхитительного дебага с помощью System.out.println оказалось, что спринг, вообще-то, не особо желает пользоваться моим TemplateEngine, хотя и принимает во внимание мой ITemplateResolver. При этом метод создания TemplateEngine не вызывается вообще.
В TemplateEngine-е, который выдаётся мне при создании ViewResolver-а, кроме моего ITemplateResolver-а содержится ещё какой-то левый.
Если убрать метод templateEngine вообще, не изменяется ничего.
С меня как обычно.
Берешь Spring Boot - там уже есть AutoConfiguration для Thymeleaf из коробки.
Можешь попробовать навесить Primary поверх Bean у template engine
Можешь задать другое имя для template engine и инжектить его в другие фасолины.
Судя по тому, что у тебя эти методы серым идея подсвечивает, ты их и в контекст то не добавил. Это твой основной файл конфигурации?
Вопрос такой: где-нибудь на гитхабе есть полный рабочий пример springboot-приложения с тестированием, где я увижу, как правильно инжектить сервисы?
Логики там действительно нет, обработка запроса сводится к "yobaService.process(request);". Но чтобы все удобно тестировать, мне надо разобраться, как этот yobaService в контроллере подменить сервисом-заглушкой.
Так и пиши тест на yobaService.
А про InjectMocks - ты поставил @RunWith(MockitoJUnitRunner.class) над классом теста?
>Так и пиши тест на yobaService.
Похоже, тебе не ясна суть проблемы. Внутри yobaService может быть fizzBuzzService который я хочу подменить еще одним стабом — как быть тогда? Вот в этой замене суть вопроса, а не в том, какой класс я тестирую.
>А про InjectMocks - ты поставил @RunWith(MockitoJUnitRunner.class) над классом теста?
Я проверял два варианта: с MockitoJUnitRunner и с SpringJUnit4ClassRunner+MockitoAnnotations.initMocks(this) в @Before-методе. В первом случае не автовайрится WebApplicationContext, во втором не инжектится заглушка.
>Похоже, тебе не ясна суть проблемы.
Это тебе не ясна суть проблемы. Юнит тест тестирует один класс за раз. Если ты заменил yobaService моком, то ты никогда и не доберешься до fizzBuzzService.
А если ты пилишь интеграционный тест (на контроллер, боги), то там совсем другой подход.
>В первом случае не автовайрится WebApplicationContext
Это что вообще за пиздец? Кто же контекст вайрит?
>Это что вообще за пиздец? Кто же контекст вайрит?
Ты меня траллировать пытаешься?
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/integration-testing.html#testcontext-ctx-management
>А если ты пилишь интеграционный тест, то там совсем другой подход.
Хорошо, что ты напомнил мне, что это называется интеграционным тестом. Я нашел нужную подсказку в документации и прописал класс конфигурации в самом тесте — работает как надо. Ура.
>(на контроллер, боги)
И что же не так с тестированием контроллера? Мне надо убедиться, что определенный POST-запрос возвращает определенный ответ — я это и тестирую.
Не, прост много линий, да и вообще слабо че-то.
Там же вроде просто синтаксис околоспринговский, а сам спринг он не вынуждает использовать.
>Вот, проблема в Spring Boot, как оказывается; он как раз и перекрывает мою конфигурацию. Отключил автоконфиг Thymeleaf-а - всё работает как должно. Спасибо.
Это вообще дрянная особенность Boot'а. Чуть подключаешь какую зависимость - сразу надо чекать "а нет ли там автоконфига, из-за которого все не будет работать".
А нет ли какого-нибудь способа проверить, какими классами конфигурации спринг воспользовался?
Что-нибудь такое может быть
@Bean
public static BeanFactoryPostProcessor postProcessor() {
return beanFactory -> beanFactory.getBeansWithAnnotation(Configuration.class).forEach((s, o) -> log.debug("config {} => {}", s, o));
}
Я бы попробовал, но ухожу уже.
Падает на строчке beanFactory.getBeansWithAnnotation(Configuration.class):
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration$DispatcherServletConfiguration': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration$DispatcherServletConfiguration$$EnhancerBySpringCGLIB$$29bf56ad]: No default constructor found; nested exception is java.lang.NoSuchMethodException: org.springframework.boot.autoconfigure.web.DispatcherServletAutoConfiguration$DispatcherServletConfiguration$$EnhancerBySpringCGLIB$$29bf56ad.<init>()
Если указывать другую аннотацию, с которой bean-ов нет, то не падает.
>>813105
Ну раз Spring Boot подключен, то лучше не конфигурировать бины, а пользоваться автоконфигурацией и прописывать проперти
docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#common-application-properties
Можно поставить logging.level.org.springframework.boot.autoconfigure.logging.AutoConfigurationReportLoggingInitializer в DEBUG, тогда при старте в логе будет показано какие автоконфигурации включены, какие отключены.
Не всегда удобно, не всегда подходит, не всегда знаешь вообще, что есть автоконфигурация.
> Не всегда удобно, не всегда подходит
В этом случае подходит.
> не всегда знаешь вообще, что есть автоконфигурация
Референс читать нужно.
Даже более: этот случай как раз тот, ради которого придумали spring boot.
Всё, с этим разобрался.
Теперь новая проблема. Есть Gson, который подключен к проекту. Jackson-а нету. Бины Gson-а инжектятся правильно, GsonHttpMessageConvertersConfiguration срабатывает, GsonHttpMessageConverter инжектится с правильным Gson-ом.
Однако, оно не используется, если контроллер отдаёт, собственно, JSON (JSON-таки отдаётся, но при этом преобразуется не с помощью прописанного мной Gson-а). Работать начинает, если прописать configureMessageConverters(), но судя по тому, что HttpMessageConvertersAutoConfiguration также срабатывает, и при этом ещё и зависит от GsoHttpMessageConvertersConfiguration, Spring Boot должен как бы сам подхватывать.
Что делать-то? Оставлять configureMessageConverters(), или есть какой-то способ ткнуть Boot мордой в то, что ему надо делать?
Не изобретай велосипед и уж точно не используй говносипеды и фреймворки для запуска фреймворков потому что мы слышали, что ты любишь фреймворки, поэтому мы сделали фреймворк, чтобы ты мог использовать фреймворк, когда используешь фреймворк. Выбрось нахуй этот жопорожденный спринг бут и забудь о нем. Он должен был сделать работу со спрингом проще, но по факту он лишь ее усложнил из-за лишней прослойки с концепцией черного ящика на боку которого какой-то шутник нарисовал большой дружелюбный смайлик.
>Выбрось нахуй этот жопорожденный спринг бут и забудь о нем
Зря ты так. Вполне неплохая штука для хеллоу-веб-аппликатион.
Вообще ни разу. Цель хеллоу х не увидеть хеллоу х, а разобрать по частям тобою написанное и сделать соответствующие выводы для себя.
Я не про учебу. Для учебы неплохо бы начать с xml-конфигурации спринга. Самая верная и идеологически правильная. Чтобы понимать, что вообще происходит.
нюфаг
Ты хотел спросить могут ли они заменять только интерфейсы с одним методом (не считая дефолтных)? Да только их.
Именно. А почему они не могут заменять также классы с одним методом? Потому что ТАК ЗДЕЛОЛИ, или есть какое-то функциональное ограничение, в силу которого это невозможно?
Абстрактные классы несут другую идеологию нежели интерфейсы.
Spring + Hibernate. Еще посомртри в сторону Spark/Hadoop.
Спасибо, уже ушел.
Как правильно реализовать неограниченную вложенность объектов? (не технически, а сам алгоритм)
На пикрелейде пытаюсь сделать нечто подобное виртуальной папки. Т.е Папка, в ней могут быть другие папки или файлы, при этом сама папка тоже может быть в другой папке.
Я двигаюсь в правильном направлении, или совсем хуйню сделал?
Ну тип хранишь все в коллекциях, дохуя неограниченно, в каждой папке есть коллекция папок и ссылка на родительскую дирректорию.
Мимонуб
class File {String name;}
class Dir extends File {List<File> content;}
Хуле тебе еще надо, блджад?
Это, конечно, прикольно, но если я приду устраиваться на работку с жуком вместо гибернейта, меня нахуй пошлют.
Говнолегаси бд со схемой отношений - все со всеми. Нужен десяток полей из десятка разных таблиц в одном объекте.
@
ХИБЕРНЕЙТ, ЗАЩОО
@
С ЛИЦОМ БАТТХЕРТА, ПИШЕШЬ МЕМАС CREATESQLQUERY
А так берешь, джойнишь как надо в дао и хоть обвытаскивайся.
Вот это им и рассказывай. Опционально еще вскочи на стол и расскажи, что джава мертва и будущее за нодой.
Но когда дело дошло до моей хотелки по использованию драйвера устройства, я обосрался. Неужели Джава не может в драйвера?
> Начал осваивать джаву, выбрал ее рандомно, типа популярно, все дела.
Тебя наебали, джава умирает. Популярен JS. Иди к ним в тред.
> использованию драйвера устройства, я обосрался. Неужели Джава не может в драйвера?
Ты вообще читал что такое java и как работает? Native API дальше по коридору в C и C++.
>нужно разобраться с ОРМ, потому что у всех работодателей оно в обязательных скиллах
>описываю ситуацию и пишу вопрос
>в ответ слышу, что ОРМ нинужно, джава мертва, а все конторы, где они используются - говно
>в добавок называют тупым
И чего я от двача ждал?
>скриптодурачок прибежал в чужой тред
>вместо ответов на вопросы начал переубеждать окружающих, заявляя, что их технологии нинужны
>назвал тупым собеседника, которому безразличны его взгляды и который пришёл сюда не за этим
>диагностировал у него батхёрт
>в следующем посте сагрится на зелёный текст
Ты описал свой баттхерт, послушный мемас. А теперь опиши с чем ты не согласен.
> чужой тред
Какой-то петушок с нулевым опытом коммерческой разработки на Java (что так и останется) считает тред своим. Ньюфаг обезумел.
> >в следующем посте сагрится на зелёный текст
> Мам, ну скажи ему, пусть мне не отвечает. :(
Так вот, возвращаясь пройденному - разбери по частям мое послание тебе и опиши, что тебе непонятно или с чем ты не согласен.
Слив обоссанного недоджуниора (которого никуда не возьмут, ибо 60 человек на 1 место) засчитан.
У меня ничего не изменилось, ведь это ты обосрался, даже не программист, а не я. С простейшим хибернейтом даже разобраться не может, вообще охуеть.
>>814522
С G1 имеет.
>С простейшим хибернейтом
>>814494
>ХИБЕРНЕЙТ, ЗАЩОО
>С ЛИЦОМ БАТТХЕРТА, ПИШЕШЬ МЕМАС CREATESQLQUERY
>С простейшим
Скриптодурачок ловко извернулся и засунул собственный хуй себе в рот.
Безработная обоссанная манька продолжает фантазировать.
> >ХИБЕРНЕЙТ, ЗАЩОО
> >С ЛИЦОМ БАТТХЕРТА, ПИШЕШЬ МЕМАС CREATESQLQUERY
> >С простейшим
Долбоеб, ты что, вообще нихуя не понял что я тебе сказал?
Вы видите копию треда, сохраненную 30 августа 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.