Рубрика «java» - 236

Cобрал небольшую подборку вопросов. Возможно кому-то она будет полезна.

Общая иерархия

— Расположите в виде иерархии следующий интерфейсы: List, Set, Map, SortedSet, SortedMap, Collection, Iterable, Iterator, NavigableSet, NavigableMap.
— Почему Map — это не Collection, в то время как List и Set являются Collection?
— как одной строчкой преобразовать HashSet в ArrayList?
— как одной строчкой преобразовать ArrayList в HashSet?
— Как перебрать все ключи Map учитывая, что Map — это не Iterable?
— Как перебрать все значения Map учитывая, что Map — это не Iterable?
— Как перебрать все пары ключ-значение в Map учитывая, что Map — это не Iterable?
— В чем проявляется «сортированность» SortedMap, кроме того, что toString() выводит все по порядку?
— Как одним вызовом копировать элементы из любой Collection в массив?
— Реализуйте симметрическую разность двух коллекций используя методы Collection (addAll(), removeAll(), retainAll())
Читать полностью »

Вы находитесь в стране, на которую распространяется эмбарго. Загрузка Java невозможна

Привет!

Чуть-чуть пост не дотянул до пятничного, а ведь тема достойна!

Невозможно загрузить Java(TM) на данный компьютер. Вы находитесь в стране, на которую распространяется эмбарго.

Именно такую надпись вы получите при попытке скачать JVM с java.com находясь на территории России.

Не верите? Убедитесь сами: www.java.com/ru/download/.

На случай если вам не повезло и вы не находитесь в России, то не стоит расстраиваться. Вы всё равно можете узреть Читать полностью »

</sarcasm> Привет! Сегодня я расскажу вам о том, с чем вы можете столкнуться, если вдруг решите залезть в дебри чужого приложения на Android (в данном случае, онлайн игры). Приключения с просмотром Java-классов в .dex, изучение оп-кодов Dalvik и даже программирование в двоичном коде. Но обо всем по порядку.

Под катом трафик на ~800кб, 293 из которых – скриншоты кода (!)
Читать полностью »

29 июля представители Java сообщества собрались уже во второй раз, для того, чтобы пообщаться в неформальной обстановке и обменяться опытом. Площадкой для мероприятия стал уютный коворкинг «Соль», с настоящими домашними тапочками, пуфиками и угощениями. Партнером мероприятия выступила компания Naumen.

Напоминаем, JUG – это Java User Group, встречи JUG.EKB — это обсуждение различных технологий из мира Java, обмен опытом, а также просто интересное общение!

Вниманию слушателей были представлены два доклада:
Хитрин Андрей, компания Naumen, с докладом «Оковы тяжкие падут: как перевести сборку проекта с Ant на Gradle?»
Роман Елизаров, специально приглашенный гость из Санкт-Петербурга, компания Devexperts, с докладом «Миллионы котировок в секунду на чистой Java».
Доклады вызвали волну вопросов, так, что их обсуждение продолжилось даже на афтепати. Также с успехом прошла серия коротких докладов — lightning talks

Ознакомиться с докладами подробнее можно на сайте jugekb.ru/, а фото с мероприятия в группе ВКонтакте vk.com/jugekb?z=album-61807294_199836894

Если у кого-то не получилось прийти, мы выложим видео на сайте или в группе ВК.
С нетерпением ждем Вас на следующей встрече JUG.EKB!

Читать полностью »

По следам Spring Pet Clinic. Maven  Spring Context  Spring Test  Spring ORM  Spring Data JPA
Здравствуйте!
Spring MVC, согласно обзору инструментов и технологий Java за 2014 г. от RevbelLabs, является самым популярным веб фреймворком. Далее тот же обзор называет лидера ORM — Hibernate и лидера веб-контейнеров — Apache Tomcat. Добавим сюда самую используемую java script библиотеку jQuery, самый популярный css фреймворк Bootstrap, до сих пор самую популярную (несморя на наступление Gradle) инструмент сборки Maven, абсолютный лидер среди тестовый фреймворков JUnit и получим пример приложения на Spring от его создателей: Spring Pet Clinic (демо приложение). Кроме перечисленного, в этот достаточно несложный по функциональности проект влючены также Spring-Jdbc, Spring-ORM, Spring Data JPA, Hibernate Validator, SLF4J, Json Jackson, JSP, JSTL, WebJars, Dandelion DataTables, HSQLDB, Hamcrest, Mockito и десятки других зависимостей.
Читать полностью »

Началось все с простого — один мой друг захотел писать проги на яве. Естественно, что просто выучив синтаксис языка, никакого опыта в программировании не наберешся, и потому нужно просто писать уже хоть что-нибудь. Вот я и обдумывал вопрос, что же лучше всего подойдет для этого. Я пришел к выводу, что самое лучше в начале пути, на мой взгляд, это создать простенький класс который бы описывал абстрактную «сущность», но при этом был прост в понимании. В итоге было решено выдать тренировочное задание по написанию самопального класса комплексного числа.
Конечно можно было бы просто написать на листочке все требования к этому классу, описать интерфейс всех его методов и тому подобное, однако потом это пришлось бы проверять, и при этом очень даже вероятно что проверять по нескольку раз, так как товарищ только обучается.
Но тут меня потянуло в сторону экспериментов, а так как я нетак давно заинтересовался TDD, то и эксперименты пошли в ту же степь.
Читать полностью »

Cобрал небольшую подборку вопросов. Возможно кому-то она будет полезна.

Общие вопросы

— В чем разница между потоком и процессом?
— Что такое кооперативная многозадачность и она ли в Java. Если да, то какие преимущества. Если нет, то какая тогда в Java?
— Сравните кооперативную и вытесняющую многозадачности.
— Что такое «зеленый потоки» и они ли в Java (в HotSpot JVM 7)?
— Когда началась «Multicore Era»?
— Что такое — Планировщик потоков? Предположите алгоритм работы.
— Какие выигрыши может дать многопоточность на одноядерной машине?

«Железо»

— Что такое Flynn's taxonomy, SISD/MISD/SIMD/MIMD? К какому классу относятся CPU? GPU?
— Расскажите про иерархию кэшей L1/L2/L3? Что вызвало ее появление?
— Что такое Memory wall?
— Что такое Memory Hierarchy?
— Что такое Cache line? В виде каких эффектов проявляется?
— Что такое False sharing? Плохо это или хорошо? Как с этим бороться?
— Что такое Memory padding?
— Что такое Cache pollution? Плохо это или хорошо? Как с этим бороться?
— Что такое Cache miss? Плохо это или хорошо? Как с этим бороться?
— В чем разница между SMP и NUMA? Как это сказывается на программах?
— В чем разница между Multicore и Multisocket?
— Что такое Thread affinity? Можно ли сделать в Java?
— Что такое Inter Thread Parallelism? Task Parallelism?
— Что такое Branch Prediction?
— Что такое Speculative Execution?
— Сравните с точки зрения программиста — машину с четырехядерным процессором и двумя двухядерными процессорами.
— Напишите программу, которая демонстрирует False sharing.
— Напишите программу, которая демонстрирует размер кэша L1.
— Напишите программу, которая демонстрирует размер кэша L2.
Читать полностью »

Приветствую, читатели!

Сегодня хочу затронуть тему мелкого облагораживания своего виртуального рабочего места. Прошу не возлагать на данную заметку больших надежд, так как после ее прочтения, код все еще не будет писаться сам, но чуток рутины в разработке мы все же поборем. Плюс попробуем себя в написании гаджетов для Windows.
Читать полностью »

В данной статье я предлагаю рассмотреть 10 способов реализовать потокозащищенный стек на Java.

Почему стек?
Потому что это одна из простейших в реализации структур данных, так что это не будет «затенять» многопоточную логику. Также из трех основных операций (push, pop, peek) — есть как операции исключительно чтения мутирующей совместно используемой памяти, так и операции записи.

Целью статьи не было проведение сравнительного анализа различных подходов. Задача статьи — показать разнообразие возможностей. Однако в целом стоит отметить, что основная проблема демонстрируемых реализаций стека — наличие одной «горячей точки».

Существуют реализации, которые ослабляют семантику FIFO (или, в других терминах, являются нелинериализуемыми) и «расщепляют» эту точку в «пятно», что улучшает показатели при высококонкурентном доступе. Возможно, это тема для еще одной статьи «Еще 10 способов ...».

Это не просто статья, это — материал к весеннему вебинару «Multicore programming in Java». Видео к занятию #13 я выкладываю в свободный доступ для сообщества.

1. Не синхронизироваться, использовать чужой happens-before
2. На основе synchronized
3. На основе synchronized + идиома Private Monitor
4. На основе ReentrantLock
5. На основе Semaphore
6. На основе ReentrantReadWriteLock
7. На основе Spin Lock (неблокирующий)
8. Treiber stack (неблокирующий)
9. Используем идиому Copy-on-write
10. В функциональном стиле: Persistent stack

Вот видео вебинара (Лекция #13), где мы разбираем данные 10 способов

Читать полностью »

Сценарии интеграции с Apache Camel

Перетягивание «Верблюда» или интеграция средствами Camel. Часть 2
Сколько вы знаете шаблонов интеграции приложений(EIP)? Сколько из них вы можете использовать?

Симпатичный «верблюд» снова здесь, а значит, представляю вам продолжение серии статей об Apache Camel. В этой статье найдутся как самые необходимые, так и очень любопытные шаблоны интеграции. Расскажу о том, как они ложатся на нашу интеграцию.

Если вы знакомы с шаблонами, но решаете стоит ли связываться с «верблюдом», то наши примеры помогут разобраться. Если вам интересен путь от сценариев использования к реализации интеграции, то эта статья как раз об этом. Прошу под кат.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js