Лямбда выражения в Java. Сравнение подходов решения задач.

lambda

В версию Java 8 была добавлена полноценная поддержка лямбда-выражений — специализированного синтаксиса, позволяющего определить функциональные объекты из формальной системы исчислений λ. Являясь упрощенным вариантом записи безымянных классов, лямбда в Java дает возможность писать более аккуратный и лаконичный программный код для библиотеки Stream API и утилитарного класса Optional. Помимо стандартных коллекций классов, лямбда выражения Java могут использоваться сторонними API: реактивные стримы, JavaFX и т.д. Определение функциональных интерфейсов и лямбда-выражений Лямбда выражения в Java представляют собой специализированный синтаксис записи безымянного класса, с помощью которого реализуется основной функциональный интерфейс. Функциональный интерфейс, встроенный в…

Read More

30 лучших онлайн курсов Java программирования

dual-screen

Обучению программированию с помощью онлайн курсов на платформе Java есть большое количество. Все они разделяются условно на два вида — бесплатные и за определенную оплату. Курсы за определенную плату — это качественные программы с углубленным изучением темы, что предполагают возможное трудоустройство. Бесплатные очень часто выбирают новички, ведь благодаря ознакомительным урокам у них появляется возможность, чтобы определиться с видом профессии. Платные онлайн — курсы на Java Начнём статью с пятнадцати лучших программ за определенную оплату, так как они являются гарантией изучению новой профессии и с возможностью в дальнейшем трудоустроится. Большинство из…

Read More

Базовый функционал класса Timer в Java. Примеры использования.

Java timer

Классы java.util.Timer и java.util.TimerTask являются стандартными классами для имплементации задачи и планирования ее выполенения.  Класс Timer в Java предназначен для того, чтобы запускать задачу единожды или с определённой цикличностью. Класс TimerTask является абстрактным и поэтому нуждается в определённой имплементации. В свою очередь он имплементирует интерфейс Runnable, предоставляя дополнительные возможности многопоточности. Унаследовавшись от класса TimerTask мы должны создать свой объект задачи. Принцип работы Как уже было сказано выше, Timer в Java — служебный класс, который выполняет в системе определенную роль, а именно запуск программных процессов по своему расписанию. Он запускает определенный…

Read More

Класс Scanner в Java — обзор с примерами использования

business

Основная задача класса Scanner в Java состоит в том, чтобы сканировать полученные данные. Источники этих данных могут быть самые разнообразные, файлы, ввод с консоли или даже строки. Базовый функционал класса легко умеет отделять такие примитивные типы как byte, short, float, String и другие. Сканирование происходит при помощи поиска разделителя или так называемоего токена. Также в дело могут быть применены регулярные выражение, для которых в классе Scanner существуют определенные методы. Токен может быть представлен любым из символом: пробел, табуляция или любым другим символом. Также и разделитель строк зачастую представлен символом перевода…

Read More

Как программно сократить ссылку с возможностью заработка. Сервис CatCut.

Сокращение ссылки

Современная сеть предоставляет множество возможностей, чтобы сокращать ссылки. Короткие ссылки могут быть полезны для разных целей, например, для отправки в мессенджерах или размещения в социальных сетях. Поэтому предлагаем рассмотреть, как с легкостью сокращать ссылки в несколько кликов. Параллельно в данном случае также можно и подзаработать. Для таких целей существует множество разных сервисов. Один из них CatCut, где без проблем можно укоротить ссылку. Зачастую ссылки содержат очень много лишней информации в виде каких-то слов или спецсимволов. Данная информация часто применяется для поисковой оптимизации или других целей. Хотя конкретно для пользователя эта…

Read More

Обзор структуры JVM. Принципы распределения памяти.

Java Virtual Machine

Как известно JVM очень сильно упрощает и автоматизирует работу с памятью. В Java программах программист просто объявляет переменные, даже не беспокоясь о том, как занятая память будет освобождена. Хотя в некоторых случаях случайным образом можно добиться утечки памяти, где программа просто начнёт пожирать память большими объемами, однако в большинстве случаев все происходит автоматически и без проблем. Типы распределения памяти Если говорить в общем, JVM распределяет память на стек (stack) и хип (heap). У каждой программы на Java есть как минимум один родительский процесс, где в каждом процессе располагается обязательно один…

Read More

Immutable объекты в Java. Назначение и использование.

Stonehenge

Что такое immutable объекты в Java Это многофункциональные immutable (неизменяемые) объекты, которые можно применять в разных частях программы. Например, это могут быть неизменяемые объекты в многопоточной среде для работы с данными. Также это могут быть сложные константы, которые помогают избежать излишнего использования памяти и перегрузки сборщика мусора (garbage collector). Отдельно стоит упомянуть иммутабельность при работе с коллекциями. Основные параметры имутабельных классов (immutable classes) Для того чтобы сказать, что класс является immutable (неизменяемым) он должен соотвествовать следующим критериям: Не предоставляйте методы, которые модифицируют состояние объекта. Такие методы могут напрямую модифировать состояние…

Read More

Как поменять два значения местами без третьей переменой. Популярные задачи для ИТ собеседований.

Rubik's cube

Казалось бы данная задача не решаема, в случае когда отсутствует третья переменная. Обычно можно было бы присвоить промежуточное значение в третью переменную и две другие обменять местами. Ну, а продублированное значение забрать опять таки из третьем переменой, давайте рассмотрим пример. На самом же деле все обстоит иначе, существует несколько методов обмена значений без промежуточных переменных. Давайте их рассмотрим: Арифметические методы сложения/вычитания и деления/умножения Операции сложения/вычитания: Операции деления/умножения: Главным недостатком такой замены значений является большое количество операций. Также операции деления и умножения являются более «дорогостоящими». Побитные операции

Read More

Обзор класса String в Java. Детальное рассмотрение функционала.

String coffee

В данной статье будут рассмотрены базовые функции по работе со строками. Где будет объснено назначения класса String в Java, сложение, сравнение, поиск и другой функционал связанный со строками. Назначение класса String в Java Класс String, в первую очередь, предназначен для работы со строками. Ранее мы рассматривали, что в Java существуют строковые литералы и строковые объекты. Давайте рассмотрим основные особенности класса String: Класс имеет immutable состояние. Это означает, что после создания, каждый раз модифицируя его мы будет получать не модифицированный класс, а новую копию. В свою очередь, чтобы избежать излишнего использования…

Read More

Как хранится в памяти java.lang.String. Оптимизация использования.

Класс java.lang.String пожалуй один из более всего используемых в Java. С помощью строк можно хранить большое множество разных типов данных. Далее в статье мы подробнее рассмотрим, как JVM хранит данные, оптимизацию хранения и другие особенности строк в Java. Что такое pool строк Это определенное хранилище в памяти JVM для хранение строк. Еще это хранилище называется, как Java String Pool. В зависимости от версии Java хранится данные будут по разному. В Java 6 строки хранились в PermGen пространстве, которое настраивалось при старте JVM. Данное пространство памяти было статическим, расширять его в…

Read More