Удаление предустановленной Windows.

Сложности с удалением Windows. На первый взгляд процедура удаления Windows ничем не отличается от вполне обычного форматирования винчестера с последующей установкой системы. К сожалению, все гораздо сложней. Первой сложностью являются скрытые разделы. На ноутбуках с предустановленной Windows их больше и организация их другая: Recovery (400Мб). ESP (300 Мб). MSR (128 Мб). Основной раздел для системы. Push Button Reset (примерно 18–20 ГБ). Перед тем как удалять систему, нужно сделать их резервную копию на случай… →

Big data простым языком.

Глава 1. Что такое Big Data? Марсианские диалекты. Что же это все-таки такое и откуда взялось? Постинформационное общество[4]. Data-driven организации[11]. 7 шагов data-driven decision culture. Шаг #1. Всегда переходите к Результатам – Go to the Outcomes. Шаг #2. Отчетность – это еще не Аналитика – Reporting is not Analysis. Шаг #3. Деперсонифицировать принимаемые решения – Depersonalise Decisions making. Шаг #4. Проактивный инсайт (прогноз) важнее реактивной аналитики – Proactive insights rather than reactive. ... Шаг #5. Расширить полномочия Аналитиков – Empower your Analyst. Шаг #6. Треугольник ценности – Solve the Trinity. Шаг #7. Создайте вокруг процесс – Got Process? В чем ценность data-driven организации. Data-informed организации. Data-informed или data-driven. Революция open-source и доступность технологий. 4-я промышленная революция, или Почему человек больше не нужен для поиска инсайтов. Глава 2. Стратегия данных. С чего начинается стратегия данных? Миссия компании и данные. Ключевые стейкхолдеры. Техническая инфраструктура. Зачем нужна стратегия данных? Как влияет культура компании на успешность стратегии? Кто владелец стратегии данных? Self-service BI. Как измерить успешность стратегии данных? Сколько стоит реализовать стратегию данных? Технологии. Люди. Процессы. Глава 3. Storytelling с данными. Идеальная история отвечаем на ключевые вопросы. ВАШ ДЭШБОРД УМЕР. Декодирование аналитического контента требует усилий. Impact investment – у каждого рассказа должна быть цель. Глава 4. Регулирование данных. Суровые европейские консерваторы. Глава 5. Метаданные. Глава 6. Зачем нужно качество данных? Основные методы управления качеством данных. Как измерять качество данных? Как понять, какие измерения качества выбрать? Инструменты управления качеством данных. Глава 7. Не Big Data единой: платформы и экосистемы. PaaS и платформы. Что такое DMP-платформа? DMP1.0. Отличие DMP от CRM-систем. DMP 2.0 – Траектория развития. Эволюция CRM. Эволюция DMP. Экосистемы. Глава 8. А что дальше? Проблемы и тренды. Проблемы с Вig Data сегодня. Мы думаем, что понимаем Big Data. Как рассчитать финансовый эффект? Big Data может быть вообще не нужна. К чему мы движемся? Тренды. Облачные решения. Машинное обучение применяется все чаще. Аналитика всего. Big Data приложения – появляется простота и стабильность. Развивается направление Intelligent Security. Развиваются решения Edge Computing. Возрастает ценность людей. Растет популярность Self-Service. Рост объемов данных продолжится. In-memory решения. Конец Big Data. Послесловие. Примечания. →

BIG DATA. Вся технология в одной книге.

Пролог. Когда зафиксировано все. Введение. Революция социальных данных. Как можно заставить информацию приносить пользу людям? Дашь на дашь. ДОСТУП К ЛИЧНОЙ. ИНФОРМАЦИИ ЧЕЛОВЕКА — РЕАЛЬНАЯ УГРОЗА. ЕГО БЕЗОПАСНОСТИ. Правила для эры постприватности. Баланс сил. Глава 1. Как научиться разбираться в данных. Основной инструментарий цифрового гражданина. Процесс переработки данных. ЕДИНСТВЕННОЕ, НА ЧТО НЕ СПОСОБНЫ. НОВЫЕ ТЕХНОЛОГИИ, — РЕШИТЬ, КАКОЕ БУДУЩЕЕ. МЫ ХОТИМ ДЛЯ СЕБЯ. И КАК ОТДЕЛЬНО ВЗЯТЫЕ. ЛИЧНОСТИ, И КАК. ... ОБЩЕСТВО В ЦЕЛОМ. Чего стоят ваши данные? Исследование и использование. Работа над ошибками. Превращение информации в решения. ИНФОРМАЦИЯ. НЕ ДОЛЖНА. РУКОВОДИТЬ НАМИ. ОНА ДОЛЖНА. РАСШИРЯТЬ СПЕКТР. НАШИХ ВОЗМОЖНОСТЕЙ. Эксперименты, эксперименты, эксперименты. Глава 2. Знаки и значения. Противостояние между цифровым частным и цифровым честным. Краткая история недолгой истории приватности. От стен к окнам. ЗАИНТЕРЕСОВАННЫМИ. ЛИЦАМИ РЕВОЛЮЦИИ. В ИСПОЛЬЗОВАНИИ. СОЦИАЛЬНЫХ ДАННЫХ. ЯВЛЯЕМСЯ МЫ ВСЕ. Все в интернете знают, что ты собака. Что за псевдонимом? СОЦИАЛЬНЫЕ ДАННЫЕ — САМОЕ ЦЕННОЕ СЫРЬЕ. XXI ВЕКА, НОВАЯ НЕФТЬ. Честные сигналы. Призыв к открытости. Глава 3. Знакомые и собеседники. Идентичность и репутация в профайле социальной сети. Ваш район в социальном графе. ЧЕЛОВЕКА В РАВНОЙ. СТЕПЕНИ ОПРЕДЕЛЯЮТ. И СОЗДАВАЕМАЯ. ИМ ИНФОРМАЦИЯ, И ПРИНИМАЕМЫЕ ИМ. РЕШЕНИЯ. Новый социальный капитал. Предназначено для людей (с социальными данными). ЛЮДИ СКЛОННЫ. СОЗДАВАТЬ СВЯЗИ С СЕБЕ. ПОДОБНЫМИ. ПО ПРИНЦИПУ СТАТУСА. ИЛИ ОБЩИХ ЦЕННОСТЕЙ. Министерство производства социальных данных. Ценность взаимного доверия. ЛЮДИ СКЛОННЫ. КОНТРОЛИРОВАТЬ. СВОЕ ПОВЕДЕНИЕ, КОГДА ЗНАЮТ, ЧТО ЗА НИМИ. НАБЛЮДАЮТ. В широком смысле. Глава 4. Среда и условия. Осмысление сенсоризации общества. Личное видение. СЕГОДНЯ. ЛЮБОЙ ЧЕЛОВЕК. ПОСТОЯННО УЧАСТВУЕТ. В ИНТЕРНЕТ-ЭКСПЕРИМЕНТАХ. От «где» к «с кем». Обнажение души. СОЦИАЛЬНАЯ СРЕДА. ВЛИЯЕТ НА НАШИ. РЕШЕНИЯ, НО ТО ЖЕ. САМОЕ СПРАВЕДЛИВО. И В ОТНОШЕНИИ. ФИЗИЧЕСКОЙ СРЕДЫ. В чем фокус вашего внимания? (Иногда в буквальном смысле). Свидетель от народа. Глава 5. Панель управления. Прозрачность для людей. Два права, способствующие повышению прозрачности обработки данных… Четыре права, способствующие расширению свободы выбора для пользователей… ОБОРОТНОЙ СТОРОНОЙ. ВОЗМОЖНОСТИ СБОРА. И РАСПРОСТРАНЕНИЯ. ИНФОРМАЦИИ ЯВЛЯЕТСЯ. ВОЗМОЖНОСТЬ. ЕЕ БУДУЩЕГО ИСПОЛЬЗОВАНИЯ. КЕМ-ТО ЕЩЕ. И В СОВЕРШЕННО. НЕИЗВЕСТНЫХ ЦЕЛЯХ. Право на доступ к своим данным. Право на инспекцию инфопереработчиков. Право на ознакомление с аудитом сохранности данных. КОМПЛЕКС. СОЦИОМЕТРИЧЕСКИХ ДАННЫХ. МОЖЕТ ДАТЬ ПРЕДСТАВЛЕНИЕ. ОБ УРОВНЕ СПЛОЧЕННОСТИ. КОЛЛЕКТИВА И О СТАТУСЕ. ЧЕЛОВЕКА ВНЕ ЗАВИСИМОСТИ. ОТ ТОГО, ЧТО НАПИСАНО. НА ЕГО ВИЗИТКЕ. Право на ознакомление с коэффициентом использования частной информации. Право на ознакомление с показателем «доходности информационных активов». На виду. ВЛАДЕНИЕ ИНФОРМАЦИЕЙ. НЕ ОЗНАЧАЕТ. ИСКЛЮЧИТЕЛЬНОЕ ПРАВО. ПРОДАВАТЬ, ПОКУПАТЬ, ДАРИТЬ. ИЛИ УНИЧТОЖАТЬ БАЙТЫ. Глава 6. Управление. Свобода выбора для людей. Право вносить исправления в информацию. Право на размытие данных о себе. Право экспериментировать с обработкой данных. В МИРЕ ДАННЫХ. ОДНИМ ИЗ НАИБОЛЕЕ. ЗНАЧИТЕЛЬНЫХ. НЕПРОГНОЗИРУЕМЫХ. НЕГАТИВНЫХ РЕЗУЛЬТАТОВ. ЯВЛЯЕТСЯ ВЗЛОМ. Право переносить свои данные. Влияние на машины. Глава 7. Право и жизнь. Прозрачность и свобода выбора на практике. Покупки на собственных условиях. У ПОЛЬЗОВАТЕЛЕЙ. ДОЛЖЕН БЫТЬ. СПОСОБ ОЦЕНИТЬ. ПОТЕНЦИАЛЬНУЮ ВЫГОДУ. ОТ ИНФОПЕРЕРАБОТЧИКОВ, ПРЕЖДЕ ЧЕМ ОНИ. ПРЕДОСТАВЯТ ЕМУ. СВОИ ДАННЫЕ. Будущее финансов. Содействие справедливости условий найма. Учиться играючи. ОБРАБОТКА. И АНАЛИЗ ДАННЫХ — МЕХАНИЗМ, ФУНКЦИОНИРУЮЩИЙ. В АВТОМАТИЧЕСКОМ. РЕЖИМЕ. То, что данные прописали. Честная сделка? В РЕВОЛЮЦИИ. СОЦИАЛЬНЫХ ДАННЫХ. МОБИЛЬНОСТЬ – ЗАЛОГ. СВОБОДЫ ВЫБОРА. Эпилог. К свету! Благодарности. Примечания. →

Неизведанная территория. Как «большие данные» помогают раскрывать тайны прошлого и предсказывать будущее нашей культуры.

Глава 1. Зазеркалье. Форма света. Как считать овец. Большие данные. Цифровая линза. Библиотека всего. Длинные данные. Больше данных – больше проблем. Культуромика. Скольких слов стоит картинка? Глава 2. Г. К. Ципф и охотники за окаменелостями. Трудный ребенок. Охотники на динозавров. 1937: Одиссея данных. Мир глазами Ципфа. Не слишком ли много Ципфа. Избранные, гордые и сильные. 2005: Еще одна одиссея данных. Выживание наиболее приспособленных. Будущее прошедшее. Блестящая туфля Джона Гарварда. Словарь и конкорданс. ... Разделить розу на части и посчитать лепестки. Как правильно «гореть». Глава 3. Кабинетные лексикограферологи. Психология 29-летнего миллиардера. Страницы Пейджа. Психология 29-летнего выпускника университета. Психология юридического отдела компании из рейтинга Fortune 500. Большие данные и их большая тень. В тени Google books. Лидеры свободного слова. Это слово или нет? Словарь по принципу «Сделай сам». Лексическая темная материя. Четыре дня рождения и одни похороны. Папа, откуда берутся бэбиситтеры? Глава 4. Семь с половиной минут славы. Пора начинать процесс очистки. Мистер чистота. Что можно купить за славу. История славы. Правильный шаг Райтов. Почти знаменитые. Слава как болезнь. Зал славы. Единая теория величия. Как стать знаменитым: руководство по выбору карьеры. Дурная слава. Гигантский скачок для человечества. Глава 5. Звуки тишины. Витраж. Дегенеративное искусство. Самая популярная художественная выставка всех времен. Сожжение книг. То, что они хотят от вас скрыть: путешествие по миру. Можем ли мы распознавать цензуру автоматически? Просачиваясь через миллионы каналов. Постскриптум. Из двух правд можно сложить одни права. Глава 6. Постоянство памяти. Тест памяти. Незабываемое. Хоть памятью назови ее, хоть нет. Кривая забывания. Долой старое, да здравствует новое. Эврика. Патентные заявки. 147 свиданий вслепую. Сингулярность или смерть! Дух народа, культура, культуромика. «Эволюция» – то, что привело нас туда, где мы оказались. Первая выборка всегда бесплатна. Боремся с зависимостью: новая стратегия. Мамочка, откуда берутся марсиане? Глава 7. Утопия, антиутопия и дат(а)топия. Цифровое прошлое. Цифровое настоящее. Цифровое будущее. Правда и последствия. Данные – это власть. Родственные души. Психоистория. Приложения. Великие битвы истории. Дилеммы. Дуэли. Религия. Наука. Наука. Социальные изменения. Экономика. Еще немного экономики. Окружающая среда. Мир. Инженерные науки. Вечный бой. Болезни. Медицина. Еда. Напитки. Игры и развлечения. Ночная жизнь. Жизнь тяжела. Новые времена. Великие умы. Мудрые слова. О графиках. Примечания. →

Философия DevOps.

Вступительное слово Джона Оллспоу. Вступительное слово Николь Форсгрен. Предисловие. Первое знакомство с devops. Для кого предназначена книга. Структура книги. Соглашения, используемые в книге. Использование примеров кода. Safari® Books Online. Благодарности. От издательства. Часть I. Основы devops. Глава 1. Первое знакомство. Культура развертывания ПО. Эволюция культуры развертывания ПО. Истории пути к успеху. История Кэтрин. История Дженнифер. Истории, иллюстрирующие devops-практики. Глава 2. Определение devops. ... Рецепт формирования культуры. Уравнение devops. Глава 3. История devops. Разработчик в качестве оператора. Появление программной инженерии. Появление закрытого программного обеспечения и стандартизация. Сетевая эра. Истоки глобального сообщества. Эра приложений и Интернета. Развитие методологий разработки программного обеспечения. Приложения с открытым исходным кодом и собственные услуги. Гибкая инфраструктура. Конференции devopsdays. Текущее состояние devops. Выводы. Глава 4. Основные термины и концепции. Методологии, применяемые при разработке программного обеспечения. Методологии эксплуатации. Системные методологии. Концепции разработки, релиза и развертывания ПО. Концепции, относящиеся к инфраструктуре. Культурные концепции. Выводы. Глава 5. Заблуждения и антишаблоны, относящиеся к devops. Общие заблуждения, связанные с devops. Антишаблоны devops. Выводы. Глава 6. Четыре столпа devops. Сотрудничество. Близость. Инструменты. Масштабирование. Выводы. Часть II. Сотрудничество. Глава 7. Совместная работа. Еженедельные совещания в компании Sparkle Corp. Определение сотрудничества. Индивидуальные различия и навыки. Возможности по достижению конкурентных преимуществ. Наставничество. Знакомство с образом мышления. Образ мышления и обучающие организации. Роль обратной связи. Обзоры и рейтинги. Стили общения и разрешения конфликтов. Эмпатия и доверие. Персонал и кадровые ресурсы. Эффективное сотрудничество в компании Sparkle Corp. Выводы. Глава 8. Сотрудничество: заблуждения и устранение проблем. Заблуждения, связанные с сотрудничеством. Устранение проблем, связанных с сотрудничеством. Часть III. Близость. Глава 9. Формирование близости между отдельными сотрудниками и командами. Демонстрационный пример по разработке программ в компании Sparkle Corp. Сети. Факторы создания команды. Командная и организационная структура. Поиск точек соприкосновения между командами. Практика: ведомство по патентам и товарным знакам США. Преимущества усиленной близости. Требования к близости. Сотрудничество и кооперация. Близость между командами разработчиков и эксплуатации в компании Sparkle Corp. Выводы. Глава 10. Заблуждения и устранение проблем. Заблуждения. Поиск и устранение проблем. Часть IV. Инструменты. Глава 11. Обзор экосистемы инструментов. Разработка программного обеспечения. Автоматизация. Мониторинг. Эволюция экосистемы инструментов. Выводы. Глава 12. Инструменты: акселераторы культуры. Значение инструментов для людей. Определение инструментов. Выбор нужных инструментов для решения реальных проблем. Область охвата проектов с открытым кодом. Стандартизация инструментов. Последовательные процессы анализа инструментов. Исключения из стандартизации. Бесполезность инструментов. Влияние инструментов на культуру. Выбор инструментов. Аудит экосистемы инструментов. Устранение инструментов. Практики. Знакомство с DramaFever. Знакомство с Etsy. Проблемы, связанные с мотивацией и процессом принятия решений. Использование инструментов в Sparkle Corp. Выводы. Глава 13. Инструменты: заблуждения и устранение неполадок. Заблуждения, связанные с инструментами. Поиск и устранение проблем, связанных с инструментами. Часть V. Масштабирование. Глава 14. Масштабирование: критические точки. Знакомство с масштабированием. Рассмотрение корпоративных devops-практик. Соображения по выполнению масштабирования. Организационная структура. Командная гибкость. Жизненный цикл организации. Сложность и изменения. Масштабирование команд. Практика: рост и масштабирование команд. Масштабирование команд и стратегии роста. Масштабирование организаций. Практика: государственное агентство по оказанию цифровых услуг, GOV.UK. Практика: Target. Знакомство с Target. Выводы. Глава 15. Масштабирование: заблуждения и устранение проблем. Заблуждения, связанные с масштабированием. Устранение проблем, связанных с масштабированием. Мы не знаем, нужна ли нам полноценная команда для выполнения Х. Часть VI. Объединение культур devops. Глава 16. Наведение мостов между культурами с помощью четырех столпов devops. Важность историй. Теория и практика devops. Выводы. Глава 17. Объединение devops-культур: обучение на основе историй. Что могут поведать истории о культуре. Взаимодействие между организациями. Поощрение близости между организациями. Выводы. Глава 18. Объединение devops-культур: укрепление связей между людьми. Индивидуальные истории и рассказы, связанные с работой. Культурные долги. Состояние систем. Выводы. Глава 19. Заключение. Ваши следующие действия. Внедрение эффективных devops-практик. Глава 20. Дополнительные ресурсы. Основы devops. Сотрудничество. Близость. Инструменты: акселераторы культуры. Масштабирование. Наведение мостов между devops-культурами. Рекомендуемые конференции и встречи. Рекомендуемые подкасты. Об авторах. Примечания. →

Цифровая электроника для начинающих.

Современный мир наполнен интеллектуальной электроникой. Еще 50 лет назад единственными устройствами в доме были утюг и телевизор, сейчас, чтобы перечислить всё, не хватит пальцев на обеих руках. Маршрутизатор WiFi раздает интернет, умные розетки подключены к беспроводной сети и передают текущее потребление электроэнергии, датчик за окном передает температуру на висящую на стене метеостанцию, которая не только показывает погоду, но и синхронизирует и показывает точное время по радиосигналу из Германии. Напольные… →

Flat Assembler. Мануал программера.

Глава 1. Введение. 1.1 Обзор компилятора. 1.1.1 Системные требования. 1.1.2 Работа с компилятором из командной строки. 1.1.3 Сообщения компилятора. 1.1.4 Форматы вывода. 1.2 Синтаксис ассемблера. 1.2.1 Синтаксис инструкций. Таблица 1.1 Размеры операторов. Таблица 1.2 Регистры. 1.2.2 Описание данных. Таблица 1.3 Директивы данных. 1.2.3 Константы и метки. 1.2.4 Числовые выражения. Таблица 1.4 Арифметические и логические операторы в порядке приоритета. 1.2.5 Переходы и вызовы. 1.2.6 Установки размера. Глава 2. Описание инструкций. ... 2.2 Директивы управления. 2.2.1 Условное ассемблирование. 2.2.2 Повторение блоков инструкций. 2.2.3 Адресные пространства. 2.2.4 Другие директивы. 2.2.5 Множественные проходы. 2.3 Директивы препроцессора. 2.3.1 Включение файлов-исходников. 2.3.2 Символьные константы. 2.3.3 Макроинструкции. 2.3.4 Структуры. 2.3.5 Повторение макроинструкций. 2.3.6 Условный препроцессинг. 2.3.7 Порядок обработки. 2.4 Директивы форматирования. 2.4.1 MZ. 2.4.2 PE. 2.4.3 COFF. 2.4.4 ELF. →

Java 7.

Введение. ЧАСТЬ I. Базовые конструкции языка Java. Встроенные типы данных, операции над ними. Листинг 1.1. Первая программа на языке Java. Листинг 1.2. Первая программа с комментариями. Целые. Действительные. Символы. Строки. Логический тип. Логические операции. Упражнения. Целые типы. Операции над целыми типами. Упражнения. Вещественные типы. Операции присваивания. Упражнения. Условная операция. Упражнения. Приоритет операций. Блок. Операторы присваивания. Условный оператор. Листинг 1.4. Вычисление корней квадратного уравнения. ... Упражнения. Операторы цикла. Оператор continue и метки. Оператор break. Упражнения. Оператор варианта. Многомерные массивы. Затем определяем внешний массив и его размерность… Становится ясно, что с — массив, состоящий из трех элементов-массивов. Теперь определяем его элементы-массивы… После этих определений переменная c.length равна 3, c[0] .length равна 2, c[1] .length равна 4 и c[2]. length равна 3. Двумерный массив в Java не обязан быть прямоугольным. Описания можно сократить… А начальные значения задать так… В листинге 1.6 приведен пример программы, вычисляющей первые 10 строк треугольника Паскаля, заносящей их в треугольный массив и выводящей его элементы на экран. Рисунок 1.4 показывает вывод этой программы. Листинг 1.6. Треугольник Паскаля. Объектно-ориентированное программирование в Java. Абстракция. Иерархия. Ответственность. Модульность. Принцип KISS. Упражнения. Листинг 2.1. Нахождение корня нелинейного уравнения методом бисекции. Передача аргументов в метод. Перегрузка методов. Переопределение методов. Реализация полиморфизма в Java. Листинг 2.2. Пример полиморфного метода. Упражнения. Упражнение. Класс Complex. зике и технических дисциплинах. Но класс, описывающий комплексные числа, почему-то не включен в стандартную библиотеку Java. Восполним этот пробел. Листинг 2.4 длинный, но просмотрите его внимательно, при обучении языку программирования очень полезно чтение программ на этом языке. Более того, только программы и стоит читать, пояснения автора лишь мешают вникнуть в смысл действий (шутка). Листинг 2.4. Класс Complex. На рис. 2.3 показан вывод этой программы. Листинг 2.5. Передача аргументов в метод main(). Листинг 2.7. Вложенные классы. Пакеты, интерфейсы и перечисления. Листинг 3.1. Файл Base.java с описанием пакета pi. Листинг 3.5. Общие свойства перечислений. Как видите, теперь константы создаются конструктором, определяющим для каждой константы поле value. А сейчас можно применить полученное перечисление Lights для регулирования дорожного движения. Это сделано в листинге 3.6. Листинг 3.6. Система управления светофором с перечислением. Листинг 3.7. Простейший калькулятор. Схема проектирования MVC. Шаблон Singleton. Листинг 3.8. Схема Singleton. ЧАСТЬ II. Использование классов из Java API. Классы-оболочки и generics. Листинг 4.1. Методы числовых классов. Листинг 4.3. Настраиваемые классы — параметры методов. Шаблон типа (wildcard type). Листинг 4.4. Настраиваемый метод. Класс Boolean. Класс Character. □ isJavaIdentifierStart () — определяет, может ли символ начинать идентификатор; □ isLetter () — проверяет, является ли символ буквой Java; □ isLetterOrDigit () — проверяет, является ли символ буквой или цифрой Unicode; □ isLowerCase () — определяет, записан ли символ в нижнем регистре; □ isSpaceChar () — выясняет, является ли символ пробелом в смысле Unicode; □ isTitleCase () — проверяет, является ли символ титульным; □ isUnicodeIdentifierPart ( ) - выясняет, можно ли использовать символ в именах. Unicode; □ isUnicodeIdentifierStart () — проверяет, является ли символ буквой Unicode; □ isUpperCase () — проверяет, записан ли символ в верхнем регистре; □ isWhitespace () — выясняет, является ли символ пробельным. Точные диапазоны управляющих символов, понятия верхнего и нижнего регистра, титульного символа, пробельных символов лучше всего посмотреть в документации Java API. Листинг 4.5 демонстрирует использование этих методов, а на рис. 4.3 показан вывод этой программы. В класс Character вложены классы Subset и UnicodeBlock, причем класс UnicodeBlock и еще один класс, InputSubset, являются расширениями класса Subset, как это видно на рис. 4.1. Объекты этого класса содержат подмножества кодировки Unicode. Следует заметить, что каждая новая версия Java добавляет новые методы в класс Character, поэтому точный состав методов лучше посмотреть по документации. Класс BigInteger. □ max(x) — наибольшее из значений объекта this и аргумента x; □ min(x) — наименьшее из значений объекта this и аргумента x; □ mod(x) — остаток от деления объекта this на аргумент метода x; □ modInverse (x) — остаток от деления числа, обратного объекту this, на аргумент x; □ modPow(n, m) — остаток от деления объекта this, возведенного в степень n, на m; □ negate () — перемена знака числа, хранящегося в объекте; □ not () — операция отрицания -this; □ or(x) — операция побитовой дизъюнкции this | x; □ pow(n) — операция возведения числа, хранящегося в объекте, в степень n; □ remainder(x) — операция взятия остатка от деления this % x; □ shiftLeft (n) — операция сдвига влево this << n; □ shiftRight (n) — операция арифметического сдвига вправо this >> n; □ xor(x ) — операция "исключающее ИЛИ" this л x. В листинге 4.6 приведены примеры использования данных методов, а рис. 4.4 показывает результаты выполнения этого листинга. Класс BigDecimal. Листинг 4.9. Методы класса class в программе ciassTest. Работа со строками. Как создать строку. Листинг 5.1 показывает различные случаи записи кириллического текста. В нем создаются три массива байтов, содержащих слово "Россия" в трех кодировках… □ массив byteCp1251 содержит слово "Россия" в кодировке CP1251; □ массив byteCp866 содержит слово "Россия" в кодировке CP866; □ массив byteKOI8R содержит слово "Россия" в кодировке KOI8-R. Из каждого массива создаются по три строки с использованием трех кодовых таблиц. Кроме того, из массива символов c[] создается строка s1, из массива байтов, записанного в кодировке CP866, создается строка s2. Наконец, создается ссылка s3 на строку-константу. Листинг 5.1. Создание кириллических строк. Все эти данные выводятся на консоль MS Windows 2000, как показано на рис. 5.1. Упражнение. Сцепление строк. Как узнать длину строки. Как выбрать символы из строки. Как выбрать подстроку. Как разбить строку на подстроки. Как сравнить строки. Как найти символ в строке. Как найти подстроку. Как изменить регистр букв. Как заменить отдельный символ. Как заменить подстроку. Как убрать пробелы в начале и конце строки. Как преобразовать в строку данные другого типа. Упражнения. Класс StringBuilder. Конструкторы. Как добавить подстроку. Как вставить подстроку. Как удалить подстроку. Как удалить символ. Как заменить подстроку. Как перевернуть строку. Листинг 5.2. Разбиение строки на слова. Классы-коллекции. Как создать вектор. Как добавить элемент в вектор. Как заменить элемент. Как узнать размер вектора. Как обратиться к элементу вектора. Как узнать, есть ли элемент в векторе. Как узнать индекс элемента. Как удалить элементы. Листинг 6.1. Работа с вектором. Листинг 6.2. Проверка парности скобок. Класс Hashtable. Как создать таблицу Hashtable. Как заполнить таблицу Hashtable. Как получить значение по ключу. Как узнать наличие ключа или значения. Как получить все элементы таблицы Hashtable. Как удалить элементы. Листинг 6.3. Телефонный справочник. Листинг 6.4. Вывод системных свойств. Интерфейс SortedSet. Вложенный интерфейс Map.Entry. Интерфейс SortedMap. Листинг 6.5. Использование итератора вектора j. Двунаправленный список. Дек. Упражнение. Связанные отображения. Упорядоченные отображения. Листинг 6.6. Сравнение комплексных чисел. Упражнение. Связанные множества. Упорядоченные множества. Листинг 6.7. Хранение комплексных чисел в упорядоченном виде ! Методы класса Collections. Упражнение. Классы-утилиты. Сортировка массива. Бинарный поиск в массиве. Заполнение массива. Копирование массива. Сравнение массивов. Представление массива строкой. Получение хеш-кода массива. Часовой пояс и летнее время. Представление даты и времени. ЧАСТЬ III. Создание графического интерфейса пользователя и апплетов. Принципы построения графического интерфейса. Листинг 8.1. Слишком простое окно приложения AWT. Листинг 8.2. Простое окно приложения. Листинг 8.4. Простое окно приложения Swing. System Tray. Splash Screen. Графические примитивы. Как задать цвет. Упражнение. Как нарисовать чертеж. Упражнение. Прочие методы класса Graphics. Как вывести текст. Как установить шрифт. Как задать шрифт. Большая часть этого файла занята сопоставлениями логических и физических имен. Вы видите, что… □ логическому имени "dialog" сопоставлено имя семейства "Arial"; □ логическому имени "dialoginput" сопоставлено имя семейства "Courier New"; □ логическому имени "serif" сопоставлено имя семейства "Times New Roman"; □ логическому имени "sansserif" сопоставлено имя семейства "Arial"; □ логическому имени "monospaced" сопоставлено имя семейства "Courier New". Там, где указан стиль: dialog.italic, dialog.bold и т. д., подставлен соответствующий физический шрифт. В строках листинга 9.1, начинающихся со слова filename, указаны файлы с соответствующими физическими шрифтами, например… Эти строки необязательны, но они ускоряют поиск файлов со шрифтами. Листинг 9.2. Использование графических примитивов и шрифтов. Упражнение. Листинг 9.3. Преобразование пространства пользователя. Упражнение. Листинг 9.4. Определение перьев. В классе TextLayout есть не только более двадцати методов getXXX(), позволяющих узнать различные сведения о тексте, его шрифте и контексте, но и метод. вычерчивающий содержимое объекта класса TextLayout в графической области g, начиная с точки (x, y) . Еще один интересный метод, возвращает контур шрифта в виде объекта Shape. Этот контур можно затем заполнить по какому-нибудь образцу или вывести только контур, как показано в листинге 9.6. Листинг 9.6. Вывод текста средствами Java 2D. Визуализацию (rendering) созданной графики можно усовершенствовать, установив метод улучшения (hint) одним из методов класса Graphics2D… Ключи — методы улучшения — и их значения задаются константами класса RenderingHints, некоторые из них перечислены в табл. 9.2. Не все графические системы обеспечивают выполнение этих методов, поэтому задание указанных атрибутов не означает, что определяемые ими методы будут применяться на самом деле. Вот как может выглядеть начало метода paint () с указанием методов улучшения визуализации… Упражнение. Основные компоненты AWT. Класс Component. Как создать свой курсор. Упражнение. События. Класс Container. События. События. События. События. Как создать группу радиокнопок. Листинг 10.1. Размещение компонентов. События. События. Кроме событий класса Component — ComponentEvent, FocusEvent, KeyEvent, MouseEvent — при двойном щелчке кнопкой мыши на выбранном пункте происходит событие ActionEvent. В листинге 10.2 с помощью классов Choice и List задаются компоненты, аналогичные компонентам листинга 10.1, а рис. 10.2 показывает, как изменится при этом интерфейс. Строка ввода TextField. Поле ввода TextArea. Листинг 10.3. Поля ввода. События. Листинг 10.4. Линейки прокрутки для выбора цвета. В листинге 10.4 использован контейнер Panel. Рассмотрим возможности этого класса. Контейнер Panel — это невидимый компонент графического интерфейса, служащий для объединения нескольких других компонентов в один объект типа Panel. Класс Panel очень прост, но важен. В нем всего два конструктора… □ Panel ( ) -создает контейнер с менеджером размещения по умолчанию FlowLayout; □ Panel (LayoutManager layout) — создает контейнер с указанным менеджером размещения компонентов layout. После создания контейнера в него добавляются компоненты унаследованным методом. и т. д. Размещает компоненты в контейнере его менеджер размещения, о чем мы поговорим в следующей главе. События. События. Листинг 10.5. Создание двух окон. События. События. Компонент Canvas. Листинг 10.7. Кнопка с рисунком. Создание "легкого" компонента. Листинг 10.8. Создание круглой кнопки. Упражнение. Листинг 10.9. Программа рисования с меню. Листинг 10.10. Программа рисования со всплывающим меню. Оформление ГИП компонентами Swing. Листинг 11.1. Шаблон приложения, использующего Swing. Компонент JComponent. Схема MVC в компонентах Swing. Надпись JLabel. Кнопки. Листинг 11.2. Простейшая кнопка с двумя состояниями. Листинг 11.3. Группа радиокнопок. Упражнение. Раскрывающийся список JComboBox. Список выбора JList. Визуализация элементов списков. Упражнение. Счетчик JSpinner. Полосы прокрутки JScrollBar. Ползунок JSlider. Упражнение. Дерево объектов JTree. Построение меню средствами Swing. Панель выбора цвета JColorChooser. Упражнение. Окно выбора файла JFileChooser. же еще одно окно выбора файла. Вот, например, класс, формирующий окно предварительного просмотра файлов с изображениями… После определения объекта класса JFileChooser, но до его вывода на экран, присоединяем этот компонент… Получившееся окно открытия файла показано на рис. 11.5. В окне выбора файла перед каталогами и файлами выводятся стандартные значки. Их можно заменить какими-то другими изображениями. Для этого надо расширить абстрактный класс FileView, переопределив пять его методов, и установить новые изобра- жения методом setFileView(FileView). Например, выведем перед исходными файлами Java изображение дымящейся чашечки кофе… Теперь достаточно к описанию объекта fch класса JFileChooser добавить строку. и стандартный значок перед исходными файлами Java с расширением java будет заменен изображением из файла javacup.gif, как показано на рис. 11.5. Более содержательный пример создания окна выбора файла имеется в составе J2SE JDK в каталоге $JAVA_HOME/demo/jfc/FileChooserDemo/. Текстовые компоненты. Компонент JTextComponent. Модель данных — документ. Вид. Контроллер — редактор текста. Раскладка клавиатуры. Печать текста документа. Редактор объектов JFormattedTextField. Таблицы. Листинг 13.1. Простое определение таблицы. Модель ячеек таблицы. Остальные методы переопределяются по усмотрению разработчика. Но если этого не сделать, то получится нередактируемая таблица только для чтения, поскольку метод. isEditable () в классе AbstractTableModel возвращает false, а метод setValueAt () пуст. Для того чтобы таблица стала редактируемой, надо переопределить и эти два метода. В листинге 13.2 приведен пример расширения класса AbstractTableModel — модель ячеек таблицы, запрещающая редактировать первый столбец таблицы. Листинг 13.2. Модель запрещает редактировать первый столбец. Свойства столбца таблицы TableColumn. Модель столбцов таблицы. Заголовки столбцов таблицы JTableHeader. Листинг 13.4. Отдельный вывод заголовка таблицы. Модель выделения ячеек. Листинг 13.5. Несколько строк в одной ячейке таблицы. Листинг 13.6. Разные редакторы ячеек таблицы. Вы знаете, что, работая с электронными таблицами, такими как MS Excel, можно отсортировать строки таблицы по какому-нибудь столбцу, просто щелкнув мышью по заголовку столбца. Повторный щелчок вызовет сортировку в обратном порядке. Такая возможность есть и в классе JTable. Самый простой способ реализовать ее — это включить сортировку методом setAutoCreateRowSorter(true)… дана константа FIT_WIDTH вложенного в класс JTable перечисления JTable.PrintMode, или не будут — константа normal. □ print () — печать содержимого таблицы без колонтитулов со сжатием столбцов в режиме JTable. PrintMode. FIT_WIDTH. Остальные, более сложные методы печати используют сервер печати, что выходит за. рамки нашей книги. Примеры создания таблиц и связи их с базами данных имеются в документации Java SE. в каталоге $JAVA_HOME/demo/jfc/TableExample/. Размещение компонентов и контейнеры Swing. Менеджер FlowLayout. Листинг 14.1. Менеджер размещения FlowLayout. Менеджер BorderLayout. Листинг 14.2. Менеджер размещения BorderLayout. Листинг 14.3. Сложная компоновка. Менеджер GridLayout. Листинг 14.4. Менеджер GridLayout. Менеджер CardLayout. Менеджер GridBagLayout. Панель JPanel. Панель прокрутки JScrollPane. Двойная панель JSplitPane. Панель с вкладками JTabbedPane. Линейная панель Box. Листинг 14.8. Размещение компонентов на панели Box. Менеджер размещения SpringLayout. Панель инструментальных кнопок JToolBar. Слоеная панель JLayeredPane. Корневая панель JRootPane. Диалоговое окно JDialog. Окно верхнего уровня JFrame. Внутреннее окно JInternalFrame. обрезано границами внешнего окна. В листинге 14.11 приведена программа, создающая эти окна. Листинг 14.11. Внутренние окна. Рабочий стол JDesktopPane. Листинг 14.12. Внутренние окна на внутреннем рабочем столе. Стандартные диалоги JOptionPane. Окно с индикатором ProgressMonitor. Листинг 14.13. Создание окна индикатора. В заключение нужно сказать, что следить за загрузкой большого входного потока класса Inputstream удобно с помощью специально разработанного фильтра входного потока — класса ProgressMonitorInputStream, расширяющего класс FilterInputStream. Все менеджеры размещения написаны полностью на языке Java, в состав Sun Java SE входят их исходные тексты. Если вы решили написать свой менеджер размещения, реализовав интерфейс LayoutManager или LayoutManager2, то посмотрите эти исходные. тексты. Обработка событий. Листинг 15.1. Обработка события ActionEvent. Листинг 15.2. Самообработка события ActionEvent. Листинг 15.3. Обработка вложенным классом. Упражнение. Событие ActionEvent. Листинг 15.4. Простейшая программа рисования. При создании класса-с^шателя Scribble и реализации интерфейсов MouseListener и MouseMotionListener пришлось реализовать все их семь методов, хотя мы отслежива- ли только нажатие кнопки и перемещение мыши, и нам нужны были лишь методы mousePressed ( ) и mouseDragged( ). Для остальных методов мы задали пустые реализации. Чтобы облегчить задачу реализации интерфейсов, имеющих более одного метода, созданы классы-адаптеры. Упражнение. Классы-адаптеры представляют собой пустую реализацию интерфейсов-слушателей, имеющих более одного метода. Их имена составляются из имени события и слова. "Adapter". Например, для действий с мышью есть два класса-адаптера. Выглядят они. очень просто… Листинг 15.5. Событие колесика мыши. Упражнение. Событие ComponentEvent. Событие ContainerEvent. Ообытие FocusEvent. Событие ItemEvent. Событие AdjustmentEvent. Листинг 15.6. Программа создания цвета. В главе 10 мы уже применили такое переопределение в листинге 10.10 для вызова всплывающего меню. Вы можете создать собственное событие и определить источник и условия его возникновения. В листинге 15.7 приведен пример создания события MyEvent, любезно предоставленный Вячеславом Педаком. Событие MyEvent говорит о начале работы программы (start) и окончании ее работы. Листинг 15.7. Создание собственного события. Все, теперь при запуске программы делаем. а при окончании. При этом все зарегистрированные слушатели получат экземпляры событий. Оформление рамок. Листинг 16.1. Простые рамки. Закругленная объемная рамка SoftBevelBorder. Листинг 16.2. Рамки с изображениями и разной толщины I. Листинг 16.3 содержит программу, создавшую рис. 16.3. В ней приведены все описанные возможности создания рамок с надписями. Листинг 16.3. Рамки с надписями. Класс CompoundBorder создает рамку, состоящую из двух вложенных рамок любых типов. Это делается конструктором CompoundBorder(Border out, Border in) или статическим методом createCompoundBorder(Border out, Border in) класса BorderFactory. Число возможных комбинаций двух рамок очень велико. На рис. 16.4 показаны некоторые из них, а в листинге 16.4 приведена программа, создающая это окно. Листинг 16.4. Сдвоенные рамки. Листинг 16.5. Рамка с заголовком, содержащим компонент. Изменение. внешнего вида компонента. внешнего вида компонента. Листинг 17.1. Внутренние окна со стандартными L&F. В листинге 17.2 приведен пример программы, дающей возможность пользователю менять L&F во время работы приложения, выбрав нужный пункт меню. На рис. 17.2 показан вывод этой программы. Листинг 17.2. Смена L&F во время работы приложения. В листинге 17.3 приведена программа, в которой выполнены эти действия. Она позволяет заменить размер шрифта в текстовых полях другим размером, выбранным из меню. Листинг 17.3. Смена размера шрифта в полях ввода. На рис. 17.3 показан результат работы программы из листинга 17.3. В области ввода установлен шрифт величиной 20 пунктов. Поскольку две строчки листинга закомментированы, в поле ввода и в поле пароля остался прежний системный размер шрифта. Листинг 17.4. Окна, оформленные в "серой" теме. В стандартной поставке Java SE, в каталоге $JAVA_HOME/demo/jfc/MetalWorks/, лежат файлы приложения MetalWorks с примерами тем Java L&F. Запустить это приложение можно из командной строки, перейдя в этот каталог и набрав. Там же есть исходные тексты приложения, из которых видно, как создаются и используются темы Java L&F. Апплеты. Листинг 18.2. Файл HTML ДЛЯ загрузки апплета HelloWorld. Листинг 18.3. Бегущая строка в строке состояния браузера. Листинг 18.4. Файл RunningString.html. Листинг 18.5. Апплет, создающий окно. В листинге 18.8 показан переработанный апплет HelloWorld. В нем назначен белый фон, а шрифт устанавливается с параметрами, извлеченными из HTML-файла. Листинг 18.8. Апплет, принимающий параметры. На рис. 18.4 показан работающий апплет. Слежение за процессом загрузки. Листинг 18.9. Звук и изображение в апплете. Листинг 18.10. Шаблон апплета, использующего Swing. Прочие свойства Swing. Листинг 19.2. Перетаскивание текста из поля ввода в надпись. Листинг 19.3. Методы класса Timer. Изображения и звук. Классы-фильтры. Как выделить фрагмент изображения. В листинге 20.2 выделяется фрагмент изображения и выводится на экран в увеличенном виде. Кроме того, ниже выводятся изображения, увеличенные с помощью классов. Листинг 20.2. Примеры масштабирования изображения j. На рис. 20.3, слева сверху, показано исходное изображение, справа — увеличенный фрагмент, внизу — изображение, увеличенное двумя способами. Как изменить цвет изображения. Листинг 20.3. Изменение цвета всех пикселов. Как переставить пикселы изображения. Листинг 20.4. Циклический сдвиг изображения. Упражнения. Object. — LookupTable. -DataBufferByte. — Raster-WritableRaster. DirectColorModel. Преобразование изображения в Java 2D. Аффинное преобразование изображения. Листинг 20.5. Аффинное преобразование изображения. На рис. 20.6 показано исходное изображение, преобразованная область и преобразованное внутри области изображение. Изменение интенсивности изображения. Листинг 20.6. Изменение интенсивности изображения. Изменение составляющих цвета. Листинг 20.7. Изменение составляющих цвета. Упражнения. Улучшение изображения двойной буферизацией. Листинг 20.10. Двойная буферизация с помощью класса image. Листинг 20.12. Анимация рисованием. Эффект мерцания, переливы цвета, затемнение и прочие эффекты, получающиеся заменой отдельных пикселов изображения, удобно создавать с помощью класса. MemoryImageSource. Методы newPixels () этого класса вызывают немедленную перерисовку изображения даже без обращения к методу repaint (), если перед этим выполнен метод setAnimated (true). Чаще всего применяются два метода… □ newPixels (int x, int y, int width, int height) — получателю посылается указанный аргументами прямоугольный фрагмент изображения; □ newPixels () — получателю посылается все изображение. В листинге 20.13 показано применение этого способа. Квадрат, выведенный на экран, переливается разными цветами. Упражнения. Листинг 20.14. Простейшее аудиоприложение. Проигрывание звука в Java. Листинг 20.15. Проигрывание аудиоклипа. Как видите, методы Java Sound API выполняют элементарные действия, которые надо повторять из программы в программу. Как говорят, это методы "низкого уровня" (low level). Второй способ (использующий методы интерфейса SourceDataLine) требует предварительного создания буфера произвольного размера. Листинг 20.16. Проигрывание аудиофайла. Синтез и запись звука в Java. Листинг 20.18. Создание MIDI-последовательности нот звукоряда. Упражнение. ЧАСТЬ IV. Необходимые конструкции. Java. Обработка. исключительных ситуаций. Листинг 21.1. Программа без обработки исключений. Листинг 21.2. Программа с блоками обработки исключений. Листинг 21.3. Выбрасывание исключения из метода. Упражнения. исключительных ситуаций. Листинг 21.1. Программа без обработки исключений. Листинг 21.2. Программа с блоками обработки исключений. Листинг 21.3. Выбрасывание исключения из метода. Упражнения. Листинг 21.4. Обработка исключения в методе. Упражнение. Листинг 21.6. Обработка нескольких типов исключений с помощью перечисления. Подпроцессы. Листинг 22.1. Два подпроцесса, запущенные из главного подпроцесса. Листинг 22.2. Класс расширяет Thread ! Листинг 22.3. Реализация интерфейса Runnable. Листинг 22.4. Прекращение работы подпроцессов. Листинг 22.5. Синхронизация метода. Листинг 22.6. Несогласованные подпроцессы. Листинг 22.7. Согласование получения и выдачи информации. Листинг 22.8. Согласование стандартным классом SynchronousQueue. Потоки ввода/вывода и печать. Классы, входящие в иерархии потоков ввода/вывода, показаны на рис. 23.1 и 23.2. Все классы пакета j ava. io можно разделить на две группы: классы, создающие поток (data sink), и классы, управляющие потоком (data processing). Классы, создающие потоки, в свою очередь, можно разделить на пять групп… □ классы, создающие потоки, связанные с файлами… □ классы, создающие потоки, связанные с массивами… □ классы, создающие каналы обмена информацией между подпроцессами… □ классы, создающие символьные потоки, связанные со строкой… □ классы, создающие байтовые потоки из объектов Java… Слева перечислены классы символьных потоков, справа — классы байтовых потоков. Листинг 23.1. Консольный ввод/вывод. Форматированный вывод. Упражнения. Получение свойств файла. Работа с файлом средствами NIO2. Каналы буферизованного ввода/вывода. Листинг 23.4. Работа с файлом методами N102. Упражнения. Кодировка UTF-8. Листинг 23.5. Ввод/вывод данных. Упражнение. Листинг 23.6. Канал обмена информацией. Нужно только соблюдать порядок чтения элементов потока. В листинге 23.7 мы создаем объект класса GregorianCalendar с текущей датой и временем, сериализуем его в файл date.ser, через три секунды десериализуем обратно и сравниваем с текущим временем. Результат показан на рис. 23.7. Листинг 23.7. Сериализация объекта. Листинг 23.9. Простая печать методами Java 2D. Печать файла. Листинг 23.10. Печать текстового файла. Печать страниц с разными параметрами. Листинг 23.11. Печать страниц с разными параметрами. Сетевые средства Java. Листинг 24.1. Получение Web-страницы. Листинг 24.2. Посылка строки по адресу URL. Упражнения. 5. Клиент выводит содержимое полученного файла в стандартный вывод System.out или выводит код сообщения сервера в стандартный вывод сообщений System.err. 6. Клиент закрывает сокет, завершая связь. Этот протокол реализуется в клиентской программе листинга 24.3 и серверной программе листинга 24.4. Листинг 24.3. Упрощенный НТТР-клиент. Листинг 24.4. Упрощенный НТТР-сервер. Работа с proxy-сервером. Упражнения. Упражнение. ЧАСТЬ V Web-технологии Java. Web-инструменты Java. Создание архива. Файл описания MANIFEST.MF. Файл INDEX.LIST. Листинг 25.1. Апплет, обращающийся к базе Oracle. Таким образом, JDBC позволяет проделать весь цикл работы с базой данных. Подробно со всеми возможностями JDBC можно познакомиться, прочитав спецификацию JDBC, имеющуюся по адресу: http://java.sun.com/products/jdbc/. В документации Java SE, в каталоге technotes/guides/jdbc/, есть ссылки на пособия по использованию JDBC. Сервлеты. InfoAppI. —WEB-INF-г. web.xml. myservlets. sdotags— InfoServlet.class. HeadTag.class QueryTag.class. Конфигурационный файл. Листинг 26.1. Конфигурационный файл web.xml. Листинг 26.2. Начальные параметры сервлета. Контекст сервлета. Цикл работы сервлета. Класс GenericServlet. Аннотации сервлета. Пример сервлета класса HttpServlet. Листинг 26.4. Форма регистрации клиента СДО. Листинг 26.5. Сервлет регистрации клиента СДО. Кстати говоря, некоторые контейнеры сервлетов не воспринимают кодировку, если оставлены пробелы между точкой с запятой и словом "charset". Листинг 26.7. Фильтр определения кодировки параметров запроса. Асинхронную работу естественно выполнять в отдельном подпроцессе. В листинге 26.8 приведен типичный пример асинхронного сервлета. Обратиться к нему можно примерно так… После набора этого адреса в адресной строке браузера, подождите 10 секунд, и вы увидите ответ сервлета. Листинг 26.8. Асинхронный сервлет. Страницы JSP. Листинг 27.1. Простейшая страница JSP. Листинг 27.2. Простейшая страница JSP в форме XML. exception. У этих объектов заданы определенные имена и типы. В большинстве случаев заданы не точные типы объектов, а их суперклассы и интерфейсы… □ out — выходной поток типа JspWriter; □ page — произвольный объект класса Object; □ exception — исключение класса Throwable. В листинге 27.3 приведена страница JSP, использующая скриптлеты и встроенные объекты для организации запроса к базе СДО, описанной в предыдущей главе. Из страницы JSP можно обращаться к объектам Java, оформленным как компоненты JavaBeans. Это выполняется тегом. "Имя экземпляра компонента" id определяет имя JavaBean, уникальное в заданной атрибутом scope области. По умолчанию принимается область page — текущая страница JSP и включенные в нее страницы. Компонент хранится как атрибут контекста указанной атрибутом scope области и вызывается методом getAttribute () соответствующего контекста. Выполнение апплета в браузере клиента. Передача управления. Класс-обработчик пользовательского тега. Пользовательский тег с атрибутами. Листинг 27.6. Пользовательский тег с атрибутом. Пользовательский тег с телом. Этот тег реализован классом HeadTag, описанным в листинге 27.7. Листинг 27.7. Пользовательский тег с простым телом. После этого на странице JSP можно писать пользовательский тег. Текст, написанный в его теле, будет выведен у клиента шрифтом указанного размера. Обработка тела пользовательского тега. содержит в своем теле SQL-запросы, например… В листинге 27.8 приведен фрагмент обработчика этого тега. Обработка взаимодействующих тегов. Листинг 27.9. Реализация тега соединения с базой данных. Листинг 27.10. Реализация связанного тега. Обработка исключений в пользовательских тегах. Библиотека core. Листинг 27.11. Ответ, сформированный с помощью JSTL. Библиотека xml. Библиотека fmt. Библиотека sql. Библиотека fn. Листинг 27.12. Страница JSP с тегами библиотеки JSF. Листинг 27.13. Класс с данными HTML-формы j. Листинг 27.14. Конфигурационный файл JSF. Листинг 27.15. Страница приветствия с тегами библиотеки JSF. Связь Java с технологией XML. Листинг 28.1. Пример XML-документа. list>. Заметьте, что элемент <name> с атрибутами пустой, у него нет тела, следовательно, не нужен закрывающий тег. Поэтому тег <name> с атрибутами завершается символами "/>". В листинге 28.2 приведена измененная адресная книжка. Листинг 28.2. Пример XML-документа с атрибутами в открывающем теге. Атрибуты открывающего тега удобны и для указания типа элемента. Например, мы не уточняем, в городе живет наш родственник, в поселке или в деревне. Можно ввести в тег <city> атрибут type, принимающий одно из значений: город, поселок, деревня. Например… Встроенные простые типы XSD. Определение простых типов. Описание элементов и их атрибутов. Определение сложных типов. Пример: схема адресной книги. Безымянные типы. Пространства имен языка XSD. Листинг 28.6. Схема документа XML с целевым пространством имен. Поскольку в листинге 28.6 пространством имен по умолчанию сделано пространство. Следует заметить, что в целевое пространство имен попадают только глобальные имена, чьи описания непосредственно вложены в элемент <schema>. Это естественно, потому что лишь глобальными именами можно воспользоваться далее в этой или другой схеме. В листинге 28.6 только одно глобальное имя — <notebook>. Вложенные имена name, address и другие всего-навсего ассоциированы с глобальными именами. Включение файлов схемы в другую схему. Связь документа XML со своей схемой. Другие языки описания схем. Листинг 28.7. Класс, описывающий адрес. Листинг 28.8. Класс, описывающий запись адресной книжки. Листинг 28.9. Кпасс-обработник документа XML средствами SAX2. Листинг 28.10. Класс-обработчик документа XML средствами StAX. Интерфейс Node. Интерфейс Document. Интерфейс Element. Удалить атрибут можно методами. Установить значение атрибута можно методами. Добавить атрибут в качестве потомка можно методами. Два метода позволяют получить список узлов-потомков… Итак, методы перечисленных интерфейсов позволяют перемещаться по дереву, менять структуру дерева, просматривать информацию, хранящуюся в узлах и листьях дерева, и изменять ее. Приведем пример работы с деревом объектов, построенным по документу XML. Добавим в адресную книжку листинга 28.2 новый рабочий или домашний телефон Сидоровой. Это действие записано в листинге 28.11. Листинг 28.11. Анализ адресной книжки с помощью DOM API. Другие DOM-парсеры. Листинг 28.12. Простейшая таблица стилей XSL. Листинг 28.13. Консольная программа преобразования документа XML. После компиляции набираем в командной строке. и получаем на экране дисплея содержимое тегов документа ntb.xml. В более сложных случаях просто изменяем таблицу стилей. Например, если мы хотим получить содержимое документа на консоли, то таблицу стилей для объекта-преобразователя класса Transformer надо записать так, как показано в листинге 28.14. Листинг 28.14. Таблица стилей для показа адресной книжки. Листинг 28.15. Таблица стилей для преобразования XML в HTML. Эту таблицу стилей можно записать в файл, например, ntb.xsl, и сослаться на него в документе XML, описывающем адресную книжку… После этого любой браузер, "понимающий" XML и XSLT, например Mozilla Firefox или Internet Explorer, покажет содержимое адресной книжки, как предписано листингом 28.15. Если набрать в командной строке. то в текущем каталоге будет записан преобразованный HTML-файл с именем ntb.html. Список литературы. Предметный указатель. →

SQL за двадцать четыре часа.

1-й час Добро пожаловать в мир SQL. Определение и история SQL. Что такое SQL? Что такое ANSI SQL? Новый стандарт: SQL3. Что такое база данных? Реляционные базы данных. Технология клиент/сервер. Популярные производители систем управления базами данных. Различия между реализациями. Сеанс SQL. Команда CONNECT. Команда DISCONNECT. Типы команд SQL. Определение структур базы данных (DDL). Манипуляция данными (DML). Отбор данных (DQL). Язык управления данными (DCL). Команды администрирования данных. Команды управления транзакциями. ... Описание базы данных, используемой в данной книге. Схема таблиц, используемых в книге. Стандарты назначения имен таблицам. Обзор данных. Из чего состоят таблицы. Поле. Запись или строка данных. Столбец. Ключевое поле. Значение NULL. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 2-й час Структура данных. Что такое данные? Основные типы данных. Строки фиксированной длины. Строки переменной длины. Числовые значения. Десятичные значения. Целые. Десятичные значения с плавающей точкой. Значения даты и времени. Буквальные значения. Значения NULL. Значения типа BOOLEAN. Пользовательские типы данных. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 3-й час Управление объектами базы данных. Что такое объекты базы данных? Что такое схема? Таблица как основная форма хранения данных. Поля и столбцы. Строки. Оператор CREATE TABLE. Ключевое слово STORAGE. Соглашения о присвоении имен. Команда ALTER TABLE. Модификация элементов таблицы. Добавление столбцов, требующих обязательного ввода данных. Изменение столбцов. Создание таблицы на основе уже существующей. SELECT * FROM PRODUCTS_TMP; Удаление таблиц. Условия целостности. Ключевые поля. Требования уникальности. Внешние ключи. Атрибут NOT NULL. Использование условий проверки. Удаление условий. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 4-й час Процесс нормализации. Нормализация баз данных. „Сырая" база данных. Логическая организация базы данных. Что нужно конечному пользователю? Избыточность данных. Нормальные формы. Первая нормальная форма. Вторая нормальная форма. Третья нормальная форма. Соглашения о присвоении имен. Преимущества нормализации. Ссылочная целостность. Недостатки нормализации. Денормализация базы данных. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 5-й час Манипуляция данными. Обзор возможностей манипуляции данными. Заполнение таблиц новыми данными. Ввод данных в таблицу. Ввод данных в определенные столбцы таблицы. Ввод данных из другой таблицы. Ввод значений NULL. Обновление уже имеющихся данных. Обновление значений одного столбца. Обновление нескольких столбцов в одной или нескольких записях. Удаление данных из таблиц. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 6-й час Управление транзакциями. Что такое транзакция? Что такое управление транзакциями? Команда COMMIT. Рис. 6.1. Область изменений, допускающих отмену Синтаксис команды следующий. Команда ROLLBACK. SELECT * FROM PRODUCTS_TMP; Команда SAVE POINT. Команда ROLLBACK TO SAVEPOINT. Команда RELEASE SAVEPOINT. Команда SET TRANSACTION. Управление транзакциями и производительность базы данных. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 7-й час Знакомство с запросами. Что такое запрос? Оператор SELECT. Ключевое слово SELECT. Ключевое слово FROM. Использование условий для отбора данных. Сортировка вывода. Учет регистра символов. Примеры простых запросов. Подсчет записей в таблице. Получение данных из таблиц других пользователей. Псевдонимы столбцов. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 8-й час Операции в условиях для отбора данных. Что такое операции в SQL? Операции сравнения. Равенство. Неравенство. „Меньше" и „больше". Примеры комбинирования операций сравнения. Логические операции. IS NULL. BETWEEN. IN. LIKE. EXISTS. UNIQUE. ALL И ANY. Операции конъюнкции и дизъюнкции. AND. OR. Отрицание условий с помощью операции отрицания. Неравенство. NOT BETWEEN. NOT IN. Пример________________________________Значение______ NOT LIKE. IS NOT NULL. NOT EXISTS. NOT UNIQUE. Арифметические операции. Сложение. Вычитание. Умножение. Деление. Комбинирование арифметических операций. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 9-й час Подведение итогов по данным запроса. Что такое итоговые функции? Функция COUNT. Функция SUM. Функция AVG. Функция MAX. Функция MIN. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 10-й час Сортировка и группирование данных. Зачем группировать данные? Ключевое слово GROUP BY. Группирование выбранных данных. Создание групп и использование итоговых функций. Представление имен столбцов числами. GROUP BY И ORDER BY. Ключевое слово HAVING. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 11-й час Изменение представления данных при выводе. Функции стандарта ANSI для работы со строками. Конкатенация. Выделение частей строки. Трансляция. Общие функции для работы со строками. Конкатенация. Функция TRANSLATE. Функция REPLACE. Функция UPPER. Функция LOWER. Функция SUBSTR. Функция INSTR. Функция LTRIM. Функция RTRIM. Функция DECODE. Другие функции для работы со строками. Выяснение длины значения. Функция NVL (замещение значения NULL). Функция LPAD. Функция RPAD. Функция ASCII. Математические функции. Функции преобразования. К главным классам преобразования данных относятся следующие преобразования… Преобразование символьных строк в числа. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 12-й час Работа с датами и временем. Как хранятся даты? Стандартные типы данных для дат и времени. Компоненты типа DATETIME. Вариации представления конкретных типов данных. Функции для работы с датами. Текущая дата. Часовые пояса. Добавление интервалов времени к датам. Сравнение дат и значений времени. Другие функции для работы с датами. Преобразования дат. Шаблоны представления дат. Преобразование дат в строки символов. Преобразование символьных строк в даты. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 13-й час Объединение таблиц в запросах. Отбор данных из нескольких таблиц. Типы связывания. Компоненты условия связывания. Связывание по равенству. Естественное связывание. Использование псевдонимов для имен таблиц. Связывание по неравенству. Внешнее связывание. Рекурсивное связывание. Связывание по нескольким ключам. Вопросы связывания. Использование связующей таблицы. Декартово произведение. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 14-й час Использование подзапросов. Что такое подзапрос? Подзапросы в операторе SELECT. Подзапросы в операторе INSERT. Подзапросы в операторе UPDATE. Подзапросы в операторе DELETE. Подзапросы внутри подзапросов. Связанные подзапросы. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 15-й час Объединение запросов. Обычные и составные запросы. Зачем использовать составные запросы? Команды построения сложных запросов. Команда UNION. Команда UNION ALL. Команда INTERSECT. Команда EXCEPT. Использование ORDER BY в составных запросах. Использование GROUP BY в составных запросах. Обеспечение правильности результатов. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 16-й час Использование индексов для ускорения поиска данных. Что такое индекс? Принцип работы индексов. Команда CREATE INDEX. Типы индексов. Простые индексы. Уникальные индексы. Составные индексы. Простые и составные индексы. Неявные индексы. Когда следует создавать индекс? Когда не следует создавать индекс? Удаление индексов. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 17-й час Повышение эффективности работы с базой данных. Что означает оптимизация операторов SQL? Оптимизация базы данных и оптимизация операторов SQL. Форматирование операторов SQL. Форматирование операторов для лучшего восприятия. Правильный порядок таблиц в выражении FROM. Правильный порядок условий связывания. Наиболее ограничительное условие. Полное сканирование таблиц. Когда и как избегать полного сканирования таблиц. Другие аспекты оптимизации. Использование LIKE и знаков подстановки. Замена операций OR выражением с ключевым словом IN. Недостатки использования выражения с ключевым словом HAVING. Долгие операции сортировки. Использование готовых процедур. Отмена использования индексов в больших пакетных операциях. Средства для анализа производительности. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. CONSTRAINT EMP_PK PRIMARY KEY (EMP_ID). 18-й час Управление доступом к базе данных. Пользователь превыше всего. Типы пользователей. Кто управляет пользователями? Место пользователя в базе данных. О пользователях и схемах. Процесс управления. Создание учетных записей пользователей. Создание учетной записи пользователя в Oracle. Создание учетных записей пользователей в Sybase и Microsoft SQL Server. Оператор CREATE SCHEMA. Удаление схем. Изменение атрибутов пользователей. Сеансы доступа к базе данных. Удаление учетных записей пользователей базы данных. Средства, доступные пользователю. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 19-й час Обеспечение сохранности данных. Что такое защита данных? Различия между защитой данных и управлением пользователями. Что такое привилегии? Привилегии доступа к системе. Привилегии доступа к объектам. Кто предоставляет и отменяет привилегии? Управление доступом к данным. Команда GRANT. GRANT OPTION. ADMIN OPTION. Команда REVOKE. Управление доступом к отдельным столбцам. Пользовательское имя PUBLIC. Группы привилегий. Контроль за привилегиями с помощью распределения ролей. Оператор CREATE ROLE. Оператор DROP ROLE. Оператор SET ROLE. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 20-й час Создание и использование представлений и синонимов. Что такое представление? Использование представлений для защиты данных. Использование представлений для управления выводом данных. Хранение представлений. Создание представлений. Создание представления для данных одной таблицы. Создание представления для данных нескольких таблиц. Создание представления на основе другого представления. Уровни зависимости представлений. Опция WITH CHECK OPTION. Опции CASCADED и LOCAL. Обновление данных представления. Добавление строк в представление. Удаление строк из представления. Связывание представлений с таблицами и другими представлениями. Создание таблицы из представления. Представления и выражение ORDER BY. Удаление представлений. Что такое синонимы? Управление синонимами. Создание синонимов. Удаление синонимов. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 21-й час Работа с системным каталогом. Что такое системный каталог? Как создается системный каталог? Содержимое системного каталога. Пользовательские данные. Информация о безопасности. Информация о структуре базы данных. Статистика производительности системы. Таблицы системного каталога. Использование данных системного каталога. Примеры запросов к системному каталогу. Обновление содержимого системного каталога. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 22-й час Средства опытного пользователя. Средства, выходящие за рамки элементарных. Курсоры. Открытие курсора. Доступ к данным курсора. Закрытие курсора. Сохраненные процедуры и функции. Преимущества использования процедур. Триггеры. Оператор CREATE TRIGGER. Оператор DROP TRIGGER. Динамический SQL. Интерфейс уровня вызовов. ЕХЕС SQL. Использование SQL для генерации SQL. Прямой вызов SQL и вложенный SQL. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 23-й час Использование SQL в локальных и глобальных сетях. SQL на уровне предприятия. Прикладная часть. Интерфейсная часть. Удаленный доступ к базе данных. ODBC. Другие интерфейсы доступа к данным. Доступ к удаленным базам данных с помощью интерфейса Web. SQL и Internet. Предоставление доступа к данным пользователям во всем мире. Предоставление доступа к данным служащим и привилегированным клиентам. Интерфейсные приложения Web, использующие SQL. SQL и intranet. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. 24-й час Расширения стандартного SQL. Реализации SQL. Различия между реализациями. Соответствие стандарту ANSI SQL. Расширения SQL. Примеры расширений. Transact-SQL. PL/SQL. MySQL. Интерактивные операторы SQL. Использование параметров. Oracle. Sybase. Резюме. Вопросы и ответы. Практикум. Тесты. Упражнения. →

Базы данных. Конспект лекций.

Лекция № 1. Введение. 1. Системы управления базами данных. 2. Реляционные базы данных. Лекция № 2. Отсутствующие данные. 1. Пустые значения (Empty-значения). 2. Неопределенные значения (Null-значения). 3. Null-значения и общее правило вычисления выражений. 4. Null-значения и логические операции. 5. Null-значения и проверка условий. Лекция № 3. Реляционные объекты данных. 1. Требования к табличной форме представления отношений. 2. Домены и атрибуты. 3. Схемы отношений. Именованные значения кортежей. ... 4. Кортежи. Типы кортежей. 5. Отношения. Типы отношений. Лекция № 4. Реляционная алгебра. Унарные операции. 1. Унарная операция выборки. 2. Унарная операция проекции. 3. Унарная операция переименования. 4. Свойства унарных операций. Лекция № 5. Реляционная алгебра. Бинарные операции. 1. Операции объединения, пересечения, разности. 2. Операции декартового произведения и естественного соединения. 3. Свойства бинарных операций. 4. Варианты операций соединения. 5. Производные операции. 6. Выражения реляционной алгебры. Лекция № 6. Язык SQL. 1. Оператор Select – базовый оператор языка структурированных запросов. 2. Унарные операции на языке структурированных запросов. 1. Операция выборки. 2. Операция проекции. 3. Операция переименования. 3. Бинарные операции на языке структурированных запросов. 1. Операция объединения. 2. Операция пересечения. 3. Операция разности. 4. Операция декартова произведения. 5. Операции внутреннего соединения. 6. Операция естественного соединения. 7. Операция левого внешнего соединения. 8. Операция правого внешнего соединения. 9. Операция полного внешнего соединения. 4. Использование подзапросов. Лекция № 7. Базовые отношения. 1. Базовые типы данных. 2. Пользовательский тип данных. 3. Значения по умолчанию. 4. Виртуальные атрибуты. 5. Понятие ключей. Лекция № 8. Создание базовых отношений. 1. Металингвистические символы. 2. Пример создания базового отношения в записи на псевдокоде. 3. Ограничение целостности по состоянию. 4. Ограничения ссылочной целостности. 5. Понятие индексов. 6. Модификация базовых отношений. Лекция № 9. Функциональные зависимости. 1. Ограничение функциональной зависимости. 2. Правила вывода Армстронга. 3. Производные правила вывода. 4. Полнота системы правил Армстронга. Лекция № 10. Нормальные формы. 1. Смысл нормализации схем баз данных. 2. Первая нормальная форма (1NF). 3. Вторая нормальная форма (2NF). 4. Третья нормальная форма (3NF). 5. Нормальная форма Бойса – Кодда (NFBC). 6. Вложенность нормальных форм. Лекция № 11. Проектирование схем баз данных. 1. Различные типы и кратности связей. 2. Диаграммы. Виды диаграмм. 3. Связи и миграция ключей. Лекция № 12. Связи классов сущностей. 1. Иерархическая рекурсивная связь. 2. Сетевая рекурсивная связь. 3. Ассоциация. 4. Обобщения. 5. Композиция. 6. Агрегация. 7. Унификация атрибутов. Лекция № 13. Экспертные системы и продукционная модель знаний. 1. Назначение экспертных систем. 2. Структура экспертных систем. 3. Участники разработки экспертных систем. 4. Режимы работы экспертных систем. 5. Продукционная модель знаний. Примечания. →