Показаны сообщения с ярлыком java. Показать все сообщения
Показаны сообщения с ярлыком java. Показать все сообщения
Состояния java.lang.Thread на граблях и примерах
Каждый java разработчик знает что такое поток, как его запустить и, возможно, поменять ему приоритет или даже сделать его демоном. Сегодня этих поверхностных знаний зачастую достаточно для того, чтобы успешно справляться со своими повседневными задачами, в которых крутые фреймворки всеми силами пытаются скрыть от нас нюансы многопоточности. Но иногда жизнь заставляет спустится на дно на уровень ниже и познакомиться с нюансами работы с потоками более детально.
В этой статье, по мере решения простых задач, через серию проб и ошибок, мы рассмотрим некоторые нюансы при работе с классом Thread в java, поговорим о том, какие у потоков бывают состояния и при каких условиях поток переходит из одного состояния в другое.
В этой статье, по мере решения простых задач, через серию проб и ошибок, мы рассмотрим некоторые нюансы при работе с классом Thread в java, поговорим о том, какие у потоков бывают состояния и при каких условиях поток переходит из одного состояния в другое.
Простое RESTful приложение с помощью JAX-RS
|
RESTful - что может быть проще? Только RESTful реализованный с помощью Java EE! Конечно, многие с этим не согласятся и приведут кучу весомых аргументов против, и будут по своему правы. Но поверьте, в Java мире проделана огромная работа, чтобы упростить воплощение ваших REST идей в жизнь. И в этой статье мне бы хотелось наглядно это продемонстрировать. |
Java. Реализация шаблона DAO. Продолжение
В прошлой статье мы начали разговор о реализации паттерна DAO в Java. В качестве наглядного примера использовалась ситуация с двумя сущностями: группой и студентом. В самом начале нашей беседы мы столкнулись с дилеммой: как реализовывать связь студент-группа? Сохранять ли первичный ключ группы, в которой состоит студент, или хранить объект, эту группу описывающий? Первый вариант мы уже рассмотрели. Пришла пора реализовать второй. |
Gradle в Ubuntu. JAVA_HOME is set to an invalid directory
После установки gradle в Ubuntu столкнулся со странной проблемой: gradle рьяно утверждал, что JAVA_HOME не корректна и якобы ссылается на /usr/lib/jvm/default-java.
При этом, это было наглой ложью с его стороны, т.к. эта переменная имела иное значение и была абсолютно корректной:
$ gradle ERROR: JAVA_HOME is set to an invalid directory: /usr/lib/jvm/default-java Please set the JAVA_HOME variable in your environment to match the location of your Java installation.
$ echo $JAVA_HOME /usr/lib/jvm/java-7-oracle
Java. Реализация шаблона DAO
Сегодня я хочу наконец затронуть тему доступа к данным в Java и начать с самых основ - с использования JDBC и шаблона DAO. Описывать DAO я не стану - в интернете полно хороших описаний этого шаблона. Я хочу заострить внимание на его реализации. Статья построена таким образом, чтобы не давать готового решения, а попытаться шаг за шагом привести Вас к нему. Поэтому не торопитесь переживать по поводу заведомо не оптимальных решений в начале, скорее всего ваши замечания будут учтены по ходу статьи. |
JUnit, параметризованные тесты и Spring IoC
|
Чтобы не подымать руками контекст Spring-а в каждом модульном тесте на JUnit, был придуман SpringJUnit4ClassRunner. Но его использование делает невозможным применение еще одного очень плезного запускальщика тестов: Parameterized. И тут возникает проблема, как усидеть на двух стульях сразу: писать параметризованные тесты и пользоваться Spring. |
Компонент JGraphTree
![]() |
Компонент JGraphTree позволяет отрисовывать деревья, представленные стандартным интерфейсом TreeModel, в виде графа. Компонент писался под собственные нужды и на идеальное исполнение не претендует. Архив с исходным кодом, документацией и библиотекой с компонентом можно взять тут. Под катом пример использования компонента и небольшие пояснения к его устройству. |
Как построить дерево в виде графа
Разбор аргументов командной строки в Java
| Графический интерфейс не всегда бывает наиболее удобным способом взаимодействия с программой. Зачастую приложение, запускаемое в командной строке с некоторым набором команд, гораздо удобнее в эксплуатации. При разработке такой программы, встает задача разбора аргументов ее запуска, что само по себе не всегда бывает тривиальной задачей. К счастью, как и большинство других распространенных задач, задача разбора аргументов командной строки уже решена во множестве библиотек. В этой статье я кратко опишу две популярные библиотеки, в основе которых лежат два, несколько отличающихся, подхода к решению этой задачи. |
Взаимодействие из Java с IBM Websphere MQ 6
![]() | Я уже рассказывал о том, как получать и отправлять сообщения с помощью JMS. Но мой рассказ строился на том, что JNDI контекст уже получен, хотя его получение достаточно нетривиальная задача. Сегодня я постараюсь восполнить этот пробел. |
Как в Java сравнить содержимое двух директорий
![]() | Возникла необходимость сравнить две директории по содержимому. Готового решения гугл не подсказал, пришлось городить собственное решение. Исходный код
|
Http в Java. Часть 2.5 - Простой web server.
Предыдущая статья оказалась достаточно объемной и в то же время не законченной. Привести пример HTTP клиента и не показать простейшего HTTP сервера, это как сказать "а" и забыть про "б". Пришло время все исправить. |
Шпаргалка по JUnit 4
JUnit | Краткий перечень аннотаций, используемых в библиотеке модульного тестирования JUnit 4. |
Интеллектуальные системы. Алгоритм A* и игра "Пятнашки"
Повседневная работа современного программиста редко открывает простор для развития творческого мышления. Чаще всего, для решения задач нам достаточно применить проверенное временем решение: паттерн или библиотеку. Знание общепризнанных подходов и практик, библиотек и фреймворков, вот что сегодня является признаком квалификации программиста. Между тем, красота и волшебство программирования для многих (я уверен, что не одинок в этом) в полной мере раскрывается в решении сложных алгоритмических задач, так редко встречающихся в повседневной практике. И раз уж "гора не идет к Магомету", то Магомет придумает себе задачку самостоятельно! |
Http в Java. Часть вторая - HTTP.
HTTP (HyperText Transfer Protocol - протокол передачи гипертекста)честно следует своему названию, и заключается в спецификации обмена сообщениями определенного текстового формата. Клиент и сервер обмениваются текстовыми сообщениями состоящими из заголовка сообщения и его тела. В заголовке указывается необходимая для взаимодействия информация.
Http в java. Часть первая - TCP.
Подписаться на:
Сообщения (Atom)