А переменными блока catch 1941–95
экземплярными переменными 194–
Аксессор 382
Алгоритм сортировки 204 195
Аннотация: класс анонимный 191
инспектирование 389 лямбда-выражение 193–194
объявленная 395 недопущение 180–181
типа получателя 374–75 область видимости переменной 185–
Аннотирование:
методов 390 186
пакетов 389 объявления составные 184–185
Аутентификация соединения 681–682 оператор тренарный 186–187
поток 188–189
Б практически финальный 192–193
примеры 174–177
Банда четырех (GoF), книга 112 разбиение вложенных/крупных
Барьер 564–568
Блок: цепочек выражений 189–190
инструкций 126–127 совмещение с обобщенными типами T
статический 234
Буква: 195–196
инвертирование 38–39 сочетание с:
подсчет гласных/согласных 40–41
Буфер байтовый, имплементирование помощью программирования 182
явного понижающего приведения
339–346
типа 180
В ромбовидным оператором 183
техническая сопроводимость
Ввод-вывод в среде Java, 285, 516 исходного кода 178–179
Возраст, вычисление 161–162 тип:
Время: аргумента 190–191
машинное, генерирование временных возвращаемый из метода 190–191
примитивный 177–178
меток 137–140 Вывод типов, логический, задачи 172
проверка 498 Вычисление высокопроизводительное
продолжительность 140–144 (HPC) 79
Вывод типа локальной переменной
Г
логический (LVTI) 172
for 187–188 Геттер 382, 385
try 194 Группирование элементов потока 478–
замена:
485
ковариантов 197 многоуровневое 484
контравариантов 197 одноуровневое 478
подстановочных знаков 196
избегание использования с: Д
null-инициализаторами 194–195
Данные:
плохие, недопущение в немутируемых
объектах 114–116
формы, обработка 693–695
Предметный указатель
Дата: удаление 269
узел 267
LocalDate 160–61 Фенвика (BIT) 277–281
цифровое 266–271
вычисление разницы между датами
164–166 З
обход интервала в цикле 160–161 Заголовок:
Calendar 160 запроса 676–678
LocalDate.datesUntil(LocalDate настройка 676–678
endExclusive) 161 получение 676–78
Замóк на уровне:
Дата-время: класса 524–527
объекта 524–527
Calendar 164–166 Запрос:
GET асинхронный 673–675
Date 145 отправка:
java.util.Date 164–166 асинхронно 684–686
синхронно 684–686
LocalDate 137 Знак подстановочный 196
Значение:
LocalDateTime 145 int:
конвертирование в long 74–75
LocalTime 137 сложение 67–68
умножение 77–78
Temporal 164–166 long:
конвертирование в int 74–75
без даты и времени 137 сложение 67–68
умножение 77–78
вывод на экран полетной информации Optional:
150–151 flatMap() 663–665
map() 663–665
вычитание времени 145–146 беззнаковое:
деление 70–71
единица даты и времени 144–145 остаток от деления 70–71
дефолтное, возвращение из коллекции
конвертирование: Map 238–239
в строку 130 многострочное строковое 59–60
DateFormat 130–133 на основе:
DateTimeFormatter 130 времени 140–144
временной метки UNIX 151–152 даты 140–144
псевдослучайное, создание
локальная, получение: нелимитированных потоков 453
Date 149 с плавающей точкой 76–77
ZonedDateTime.now() 149
во всех временных поясах 148–149
прибавление времени 145–46
форматирование 134–36
Деление:
беззнаковых значений 70–71
целая часть:
деления 75–76
остаток от деления 75–76
День месяца:
первый 152–156
последний 152–154
Дерево:
префиксное 63, 266–271
вставка 268
отыскание 269
строительство 268
структура базовая 268
___________________________________ [ 709 ] ____________________________________
Предметный указатель
И минимум 477
подсчет 476
Идентификатор ресурса сложение 474
унифицированный (URI) 288 усреднение 476
Индекс, проверка в интервале от 0 до собственный 494–499
длины 94–96 посредством collect() 499
Инспектирование аннотаций параметров Коллекция:
методов 392
задачи 199
Интервал, даты в цикле 160–161
Интернирование строк 104 конвертирование в массив 255–56
Интерфейс:
инспектирование аннотаций 394 конкуррентная встроенная в Java 259–
обобщенный 397–400 64
функциональный 409–417 коллекция синхронизированная
263, 264
абстрагирование типа List 415 множество нитебезопасное 259
имплементирование фильтров 414 отображение Map нитебезопасное
класс анонимный как лямбда- 260
очередь нитебезопасная:
выражение 415 задержки 262
передача поведения в качестве па- на основе связных узлов 262
поддерживаемая массивом 261
раметра 412 с приоритетом 262
фильтрация дынь 410, 411 синхронная 262
Исключение: трансферная 262
выбрасываемое 391 против встроенных в Java синхрони-
обобщенное 397–400 зированных коллекций 264
списки нитебезопасные 259
К стек нитебезопасный 263
Каркас разветвления/соединения 585–592 немодифицируемая 233–238
Класс немутируемый: Arrays.asList() 234
написание 108–109 Collections.unmodifiableList() 233
List.of() 235
посредством шаблона строителя блок статический 234
112–114
немутируемая 233–238
объект мутируемый: Arrays.asList() 234
возврат 109–1111 Collections.unmodifiableList() 233
передача 109–111 List.of() 235
создание 233
Ковариант, замена с помощью блок статический 234
логического вывода типа локальной
переменной (LVTI) 196–197 нитебезопасная 259–264
Код исходный: фильтрация по списку 256–258
в функциональном стиле, проверка Компаратор, композиция 510
Композиция 508–513
ссылок null 86–89
императивный, проверка ссылок null компараторов 510
86–89 предикатов 509
Коллектор:
подытоживающий 474–77 функций 512
Конверсия беззнаковая 69
максимум 477 Конец дня, поиск 162–164
___________________________________ [ 710 ] ____________________________________
Предметный указатель
Конкурентность 580 решения, встроенные в JDK 201–213
Конструктор:
клонирование объектов 118 сортировка 201
отрефлексированный 371–374 массива строк по длине 54–56
приватный 372 параллельная 202
Конструкция: по убыванию 203
мостовая 376–377
синтетическая 376–377 целых чисел 202
Контравариант, замена с помощью Метка:
логического вывода типа локальной варианта 126
переменной (LVTI) 196–197
Кортеж 271–272 временная UNIX, конвертирование в
дату-время 151–152
Л
Метод:
Лямбда-выражение 193–194, 417–418
orElseFoo() 651–652 accumulator() 497
отладка 445–448
тестирование методов 443–445 Arrays.asList() 218
М characteristics() 498
clone() 117
Массив 401–402
алгоритмы сортировки 204 Collections.unmodifiableList() 233, 236
задачи 199
значение: combiner() 497
максимальное 224–227 compareAndSetForkJoinTaskTag() 593–
минимальное 224–227 596
среднее 224–227
заполнение 229–231 dropWhile() 450–458
инвертирование 227–229 equals() 97–103
конвертирование коллекции 255–256
сравнение лексикографическое 221– filtering() 488–491
223
настройка 229–231 finisher() 497
тип компонента 370
поиск элемента 218–221 flatMapping() 490
поток 223–224
примитивных типов 203 hashCode() метод 97–103
присвоение переменной var 184 List.of() 235
проверка:
несовпадения 218–221 mapping() 490
эквивалентности 218–221
размер, изменение 232 max() 66–67
min() 466–470
ofNullable() 660–661
Optional.filter() 665
Optional.get() 646
Optional.of() 660–661
orElseFoo() 651–52
Path.equals() 294
sum()
в потоке 466–470
вычисление посредством
RecursiveTask 587
терминальные операции 467
supplier() 496
takeWhile() 450–458
связка методов 454
toString() 121–123
обобщенный 397–400
по умолчанию 513–514
___________________________________ [ 711 ] ____________________________________
Предметный указатель
прерываемый 581–585 Операция:
статический 396–397
тестирование с лямбда-выражениями Callable 558–560
443–445 И 72–73
трафаретный 423
экземплярный 395–396 ИЛИ 72–73
Модуль, инспектирование 402–404
ИЛИ исключающее 72–73
Н
объединения 276
Наблюдатель 425–428
Наблюдение за путями 304–307 отмена 617–618
модифицирование папки 305
Надкласс 393, 399 поиска 275
Начало дня, поиск 162–164
Немутируемость строковых значений чувствительная к идентичности 667–
668
104–108
недостатки 106 Остаток от деления 75–76
преимущества 104
беззнаковые значения 70–71
О
целя часть 75–76
Обменник 568–571 Отклик:
Объект:
User 691, 692 заголовок 677
клонирование 116–121
информация 687
clone() 117 Отображение:
Cloning 119
JSON 121 compute() 241
конструктор 118
ручное 117 computeIfAbsent() 240
сериализация 120
мутируемый, класс немутируемый: computeIfPresent() 239
возврат 109–111
передача 109–111 merge() 243
немутируемый 103
недопущение плохих данных 114– putIfAbsent() 244
116 вычисление осутствия/присутствия
обыкновенный Java (POJO) 121 элемента 239–244
Обязанность межобъектная (сквозная)
замена элементов 245–246
404
Ожидание: слияние двух отображений 252–253
занятое оптимизирование 616
циклическое 637 сортировка 248–251
по значению посредством:
компаратора 249
потока 249
списка 250
по ключу посредством:
TreeMap 249
компаратора 249
потока 249
списка 250
сравнение отображений 246–248
удаление элемента 244–245
упорядочивание в естественном
порядке 249
элементов потока 458–463
Stream.flatMap() 460
Stream.map() 458
Отправка многочисленных запросов,
конкуррентная 685
Отступ 63–65
Очередь нитебезопасная 259–264
___________________________________ [ 712 ] ____________________________________
Предметный указатель
П последовательный упорядоченный
451
Пакет:
нелимитированный 453
инспектирование 361
внутри модулей 365 обработка параллельная 501–506
операция терминальная 466–470
получение классов 362
Папка, поиск в файловом дереве 308–310 поиск элемента 463–465
Пара суррогатная 34
Параметризация поведения 412 сбор результатов 470–473
Первым вошел первым вышел (FIFO) 261
Переменная атомарная 623–627 соединение результатов 473–474
накопители 626 создание из массива 223–224
сопоставление элементов 465–466
сумматоры 626
Переполнение операции: фильтрация ненулевых элементов 448–
450
сложения 67–68
Пояс часовой:
умножения 77–78
Перестановка, генерирование 46–48 API даты-времени Java 146–148
Перетасовка:
GMT 146–148
Кнута 213
UTC 146–148
массива объектов 213
дата-время локальное 148–149
Фишера — Йейтса 213
Период времени 140–144 извлечение смещения 147
Подинтервал 96–97 Предикат 412
Подстрока, подсчет появлений в строке
композиция 509
56–57 Предмет в шаблоне наблюдателя 425
Поиск: Префикс наибольший общий 62–63
Программирование в функциональном
двоичный 63
стиле 408, 439
сперва в ширину (BFS) 264–266 Прокси-сервер 675–676
алгоритм 265 Прохождение путей 296–304
псевдокод 264
File.walk() 303
Поле:
JDK 8 303
инспектирование аннотаций 393
копирование папки 301
обобщенное 397–400
Политика перенаправления 683 поиск файла по имени 297
Последним вошел первым вышел (LIFO)
тривиальный обход папки 297
185
Посредник динамический 404–407 удаление папки 299
Пул:
имплементирование 405
Построитель параметров запроса 675 нитей исполнения 527–531
Поток: Executor 527
Executors 530
max() 466–470 ExecutorService 527
ScheduledExecutorService 530
min() 466–470 одна нить 531–539
производитель ждет наличия по-
null-безопасный 506–508 требителя 532
производитель не проверяет на-
sum() 466–470 личия потребителя 537
с запланированными нитями 540–
бесконечный 450–458 547
последовательный неупорядочен- с кэшированными нитями 540–547
ный 454
___________________________________ [ 713 ] ____________________________________
Предметный указатель
с фиксированным числом нитей Символ:
539–340
идеографический (CJKV) 506
обкрадывающих 547–553
крупное число малых операций отыскание первого неповторяющегося
549 символа 36–38
малое число времязатратных опе-
раций 551 подсчет дубликатов 32–35
строковых констант (SCP) 104 удаление 51–52
Путь: дубликатов символов 49–51
абсолютный 290
к файлу: юникодный 33
Синхронизация 526
абсолютный 289 Слово, инвертирование 38–39
конвертирование 291–292 Смещение поясное, извлечение 154–156
конструирование 293–294
сравнение лексикографическое 295 java.time.ZoneId() 155
представление одинакового фай-
java.time.ZoneOffset() 155
ла/папки 295
соединение 292–293 TimeZone.getRawOffset() 155
создание 287–291 Сокращение 289
Сортировка:
в корне файлового хранилища
288 вставками 206
в текущей папке 288 кучи 209
с помощью сокращений 289
сравнение 294–296 массива:
Path.equals() 294 параллельная 202
частичное 296 по убыванию 203
Р подсчетом 208
Разбиение 486–488 пузырьком 204
Разграничитель 44–45
Редукция 468 с двойным опорным элементом 202
Ресурс: Состояние жизненного цикла нити
закачивание на сервер 696–698
скачивание с сервера 695 исполнения Java 518–524
С BLOCKED 520
Семафор 571–574 NEW 519
Сериализация, клонирование объектов
RUNNABLE 519
120
Сеттер: TERMINATED 523
генерирование 385
получение 382 TIMED_WAITING 522
Сжатие 692–93
WAITING 521
Сочленение 492–494
Сплитератор собственный 506
Сравнение, подсчет 40–41
Сравнить и поменять местами (CAS
Compare и Swap) 624
Ссылка null 648–49
Optional 648–49
на метод 499–501
статический 500
экземплярный 500
на конструктор 501
проверка:
в императивном стиле 86–89
в функциональном стиле 86–89
и возврат дефолтных ссылок не-null
93
___________________________________ [ 714 ] ____________________________________
Предметный указатель
и выбрасывание заданного исклю- удаление:
чения 91–92 пробелов 44
замыкающих 62
и выбрасывание специализирован- начальных 62
ного исключения символов 51–52
NullPointerException 89–91 повторяющихся 49–51
Стек нитебезопасный 259–264 число беззнаковое с основанием
Стопор 560–564 системы счисления 68–69
Строка:
Структуры данных, задачи 199
генерирование перестановок 46–48
Т
задачи 29
Таймаут 682–683
инвертирование: Тело запроса:
символов 38–39 настройка 679–681
слов 38–39 создание из:
конвертирование в: InputStream 680
double 43–44 значения типа String 679
float 43–44 массива байт 680
int 43–44 файла 681
long 43–44 Тело отклика, обработка 687–689
дату-время 130–133 как InputStream 688
как значения типа String 688
конкатенация 60–62 как массива байтов 688
как потока значений типа String 689
отступ 63–65 как файла 688
Тип возвращаемого значения,
подсчет: инспектирование аннотаций 392
гласных 40–41 Тупик 637–40
повторяющихся символов 32–35
появлений некоторого символа 42– У
43
появлений подстроки 56–57 Умножение и сложение совмещенное
согласных 40–41 (FMA) 79
поиск: Управление гнездовым доступом
наибольшего общего префикса 62– (гнездами) посредством API рефлексии
63 Java 378–382
первого неповторяющегося символа
36–38 Ф
символа с наибольшим числом по-
явлений 52–54 Фазировщик 574–579
Файл:
проверка на наличие: cookie 686–687
анаграмм 58–59 CSV 325–329
палиндрома 48–49 JSON 325–329
подстроки 56
цифр 39–40
решения 32, 86, 130, 174, 201, 287, 361,
409, 441, 518, 581, 643, 672
соединение с помощью разделителя
44–45
сортировка массива по длине строк 54–
56
трансформирование 65–66
___________________________________ [ 715 ] ____________________________________
Предметный указатель
большой компактное:
BufferedReader 322 разбор 82
MappedByteBuffer 324 форматирование 79–83
Scanner 323
поиск строки в файле 321–325 максимум 66–67
Файл.lines() 323 минимум 66–67
Файл.readAllLines() 322
Ш
временный 330–334
создание 330 Шаблон:
удаление посредством: декоратора 430–434
DELETE_ON_CLOSE 333 исполнения вокруг опорной операции
deleteOnExit() 332
перехватчика отключения 331 418–420
каскадного строителя 434–435
двоичный: команд 435–438
запись 320 наблюдателя 425–428
эффективная 317 одалживания 428–430
чтение: стратегий 422–423
в память 319 строителя, класс немутируемый 112–
эффективное 317–321
114
запись форматированного результата трафаретного метода 423–425
351–54 фабричный 420–422
форматирования даты-времени 134–136
лексемизация (токенизация) 347–51
многочастный, закачивание на сервер Э
696–698 Элемент:
обнаружение несовпадений 337–339 замена в списке 258
передача потоковая 307–308 не-null, фильтрация из потока 448–450
поиск в деревьях файлов 308–310 поиск:
текстовый:
в массиве 218–221
запись 316 в потоке 463–465
эффективная 310–317
findAny() 464
чтение: findFirst() 464
в память 314 проверка:
эффективное 310–317 присутствия 214
только первого индекса 217
фильтрация 334–337 разделение посредством
File.newDirectoryStream() 334 Collectors.partitioningBy() 255
FileFilter 337 следующий больший (NGE) 231
FilenameFilter 336 сопоставление в потоке 465–466
удаление:
Фибоначчи последовательность 588 из коллекции 253–255
Фильтр Блума 281–284 посредством Collection.removeIf() 254
Функция: посредством Stream 254
высшего порядка 441–43 посредством итератора 2
композиция 512
Ч
Часы шахматные 166–171
Число:
беззнаковое, сравнение 70
___________________________________ [ 716 ] ____________________________________
Машнин Т.
JavaFX 2.0: разработка RIA-приложений
www.bhv.ru
Отдел оптовых поставок
e-mail: [email protected]
• Новые GUI-компоненты с поддержкой CSS
• Визуальные эффекты, трансформации и
анимации
• Воспроизведение аудио и видео
• Язык FXML для создания GUI-интерфейса
Книга посвящена разработке RIA-приложений (Rich Internet Applications) с исполь-
зованием технологии JavaFX 2.0. Рассмотрены архитектура платформы JavaFX 2.0,
ее основные компоненты графического интерфейса пользователя, применение CSS-
стилей, создание визуальных эффектов, трансформация и анимация изображений,
совместное использование JavaScript и JavaFX, Swing и JavaFX, выполнение фоно-
вых задач, использование компонентов JavaFX Beans и связывание данных, язык
FXML и др. Приведен справочник программного интерфейса JavaFX 2.0 API. Ма-
териал книги сопровождается большим количеством примеров с подробным анали-
зом исходных кодов. На сайте издательства находятся проекты примеров из книги,
а также дополнительные материалы.
Машнин Тимур Сергеевич, инженер-программист с многолетним опытом разра-
ботки программных комплексов и внедрения информационных систем. Автор книг
«Современные Java-технологии на практике», «Web-сервисы Java» и др.
Прохоренок Н.
www.bhv.ru OpenCV и Java.
Обработка изображений и компьютерное зрение
Отдел оптовых поставок:
e-mail: [email protected]
Взгляни на мир глазами робота
Загрузка изображения из файла
Захват кадров с веб-камеры
Трансформация изображения
Применение фильтров
Сегментация изображения
Выделение границ объектов
Поиск и сравнение контуров
Поиск объекта по цвету или шаблону
Поиск и сравнение особых точек
Книга знакомит с современными технологиями компьютерного зрения, позволяю-
щими машинам, роботам, веб-камерам и другим устройствам распознавать изобра-
жения. Приведено описание библиотеки компьютерного зрения OpenCV примени-
тельно к языку программирования Java. Прочитав книгу, вы научитесь загружать
и сохранять изображения в различных форматах, захватывать кадры с веб-камеры
в режиме реального времени, выполнять обработку, трансформацию и сегментацию
изображения, применять к изображению фильтры. На практических примерах рас-
сматриваются алгоритмы компьютерного зрения, предназначенные для обнаруже-
ния, классификации и отслеживания объектов. Вы научитесь выделять границы
и контуры объектов, выполнять поиск объектов по шаблону, особым точкам, цвету
или обученному классификатору.
Пользоваться библиотекой OpenCV в Java просто и очень эффективно! Для пони-
мания материала книги потребуется всего лишь владение основами языка програм-
мирования Java Standard Edition и знание математики на уровне средней школы.
Прохоренок Николай Анатольевич, профессиональный программист, автор книг
«HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера», «Python 3.
Самое необходимое», «Python 3 и PyQt 5. Разработка приложений», «Основы Java»
и др.
www.bhv.ru Прохоренок Н.
Основы Java
2-е изд.
Отдел оптовых поставок
e-mail: [email protected]
Просто о сложном
• Базовый синтаксис языка Java
• Объектно-ориентированное программирование
• Работа с файлами и каталогами
• Stream API
• Функциональные интерфейсы
• Лямбда-выражения
• Работа с базой данных MySQL
• Получение данных из Интернета
• Интерактивная оболочка JShell
Если вы хотите научиться программировать на языке Java, то эта книга для вас.
В книге описан базовый синтаксис языка Java: типы данных, операторы, условия,
циклы, регулярные выражения, лямбда-выражения, ссылки на методы, объектно-
ориентированное программирование. Рассмотрены основные классы стандартной
библиотеки, получение данных из сети Интернет, работа с базой данных MySQL.
Во втором издании приводится описание большинства нововведений: модули, ин-
терактивная оболочка JShell, инструкция var и др.
Книга содержит большое количество практических примеров, помогающих начать
программировать на языке Java самостоятельно. Весь материал тщательно подоб-
ран, хорошо структурирован и компактно изложен, что позволяет использовать
книгу как удобный справочник.
Прохоренок Николай Анатольевич, профессиональный программист, автор книг
«HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера», «Python 3.
Самое необходимое», «Python 3 и PyQt 5. Разработка приложений», «OpenCV и Java.
Обработка изображений и компьютерное зрение» и др.
Прохоренок Н.
JavaFX
www.bhv.ru
Отдел оптовых поставок:
e-mail: [email protected]
Разработка оконных приложений на языке Java
Управление окнами приложения
Размещение компонентов внутри окна
Обработка событий
Работа с графикой и изображениями
Трансформации и эффекты
Создание анимации
Графики и диаграммы
Воспроизведение аудио и видео
JavaFX CSS
Программа Scene Builder
Описываются базовые возможности библиотеки JavaFX, позволяющей создавать
приложения с графическим интерфейсом на языке Java. Книга ориентирована на
тех, кто уже знаком с языком программирования Java и хотел бы научиться разра-
батывать оконные приложения, насыщенные графикой, анимацией и интерактив-
ными элементами. Рассматриваются способы обработки событий, управление свой-
ствами окна, создание формы с помощью программы Scene Builder, а также все
основные компоненты (кнопки, текстовые поля, списки, таблицы, меню и др.) и
варианты их размещения внутри окна.
Книга содержит большое количество практических примеров, помогающих начать
разрабатывать приложения с графическим интерфейсом самостоятельно. Весь ма-
териал тщательно подобран, хорошо структурирован и компактно изложен, что по-
зволяет использовать книгу как удобный справочник.
Прохоренок Николай Анатольевич, профессиональный программист, имеющий
большой практический опыт создания и продвижения сайтов, анализа и обработки
данных, автор книг «Основы Java», «OpenCV и Java. Обработка изображений и
компьютерное зрение», «HTML, JavaScript, PHP и MySQL. Джентльменский набор
Web-мастера», «Python 3. Самое необходимое», «Python 3 и PyQt 5. Разработка
приложений» и др., многие из которых выдержали несколько переизданий и стали
бестселлерами.