
- •Распределенные системы обработки информации. Недашковский Вячеслав Михайлович
- •Лекция 3.09.04 Литература
- •1.Язык программирования Java
- •1.1.История и предпосылки
- •1.3.Архитектура Java
- •1.3.1Именованные константы
- •1.3.2Классы и объекты
- •1.3.3Комментарии
- •Лекция 21.09.04
- •1.3.4Класс Object
- •1.3.5Класс Class
- •Синхронизация
- •Взаимодействие потоков
- •1.5.Библиотека Swing
- •1.5.2Панели
- •1.5.3Обработка событий
- •2.1.1Требования к системе
- •2.1.2Прозрачность системы
- •2.2.Общие сведения о промежуточном слое
- •2.3.Типы промежуточного слоя
- •2.4.Удаленный вызов процедур
- •Лекция 2.11.04
- •2.5.Передача параметров
- •2.6.Передача параметров по ссылке.
- •2.7.Расширение модели rpc. Асинхронный вызов.
- •3.Общие сведения об объектно-ориентированном промежуточном слое. Обращение к удаленным объектам.
- •3.1.Привязка клиента к распределенному объекту.
- •3.2.Объекты времени компиляции и объекты времени выполнения (раздел)
- •3.3.Сохранные и не резидентные объекты.
- •3.3.1Привязка клиента к объекту.
- •3.4.Реализация ссылок на объект
- •Лекция 9.11.04
- •3.4.1Идентификатор сервера. Об именовании. Имена, идентификаторы, адреса.
- •Идентификатор сервера
- •3.5.2Динамическое обращение
- •Передача параметров
- •3.5.3Сервер объектов
- •3.5.4Адаптер объекта
- •3.6.Перенос кода
- •3.6.1Модели переноса кода
- •3.8.4Реализация технологии клиент-сервер на Java (работа с сетями)
- •Лекция 30.11.04
- •3.8.5Клиентская часть
- •Объяснение в виде диаграммы последовательности
- •3.8.6Дополнительные сведения rmi.Java
- •Разница между удаленными и локальными объектами.
- •Блокировка объектов
- •Вопрос удаленных объектов
- •4.Последний раздел языка Java: интерфейс jdbc при работе с бд
- •4.1.Определение местонахождения распределенных объектов
- •Именование
- •Трейдинг
- •Лекция 7.12.04
- •4.2.Иерархические подходы в службах локализации.
- •4.2.1Кэширование указателей
- •4.2.2Масштабирование
- •4.3.Объектный трейдинг.
- •4.5.Алгоритм Крестиана
- •4.6.Алгоритм Беркли
- •4.7.Логические часы. Алгоритм Лампорта.
- •4.8.Жизненный цикл объекта
- •4.9.Миграция объектов на удаленный хост
Синхронизация
Критические секции. Право доступа к свойству (?) блокировки может быть приобретено и возвращено посредством методов и инструкций, помеченных как Synchtonized.
Плохой скан. Дальше, похоже, 2 примера.
Synchronized для методов public synchronized void some method() { … }
Synchronized для инструкций void some method() { Synchronized(values) { … } }
Взаимодействие потоков
wait();
notifyAll();
notify();
synchronized void DoWhileCondition() {
обязательно [while !условие wait]
//выполнить что-либо
}
synchronized void ChangeCondition() {
//выполнить что-либо
notifyAll();
}
class Cell { Cell next; Object Item; Cell(object item ) {this.item = item;} } class ? { private Cell head, tail; public synchronized void add(object o) { Cell p = new Cell(o); if (null==tail) head = p; else tail.next = p; p.next = null; tail = p; notifyAll(); } public synchronized object take() throws ?Exception { while (null ==head) wait(); Cell p = head; head = head.next; if (null = head) tail = null; return p.item; } }
1.4.I/O
-Символьные потоки данных
-Байтовые потоки данных
Симв. последовательность 16-битовых слов – Unicode.
I/O
Текстовый – симв. потоки
Бинарный – байт. потоки
Байтовые потоки называют потоками ввода и вывода.
Символьные потоки называют потоками записи и чтения.
Типы общего назначения
Классы, определяющие классы потоков (???? 1. Фильтровать ??? 2. Буферизовать)
Специализированность – для простоых типов, строк.
?? Для обр. файловых данных ???
Поддержка сериализации
Все байтовые потоки поддерживают механизмы открытие и закрытия.
Поток открывается при … ???
InputStream
public abstract int read() throws IOException – читает 1 байт, возвращается в виде целого числа.
public abstract int read(byte[] buf, int offset, int count) throws IOException
class CountBytes{
public static void main(Strings args) throws Exception
{
..
}
}
OutputStream
public abstract int write(int b) throws IOException – выводит 8 младших битов.
public abstract int write(byte[] buf, int offset, int count) throws IOException…
???
1.5.Библиотека Swing
AWT-Abstract Window Tolkit
Набор инструментальных средств для создания машинонезависмого(???) интерфейса.
1.5.1Frame
В библиотеке AWT-Frame
В библиотеке Swing – JFrame.
import javax.swing.*;
<пример из книжки Simple_Frame Frame/>
<куча заклинаний>
1.5.2Панели
.
Рис. .1.1
Служебные панели
Корневая панель
Слоеная панель
Прозрачная панель
Нужны для создания меню(?) и панели содержимого (?)ContentPanel.
1.5.3Обработка событий
Есть объекты событий – EventObject. Соответственно имеются типы событий: ActionEvent, WindowEvent и другие.
Чтобы подписаться на событие: ОбъектИсточника.addСобытиеListner(объект слушателя события).
ActionListner listner = JButton button = new JButton(“Ok”); button.addActionListner(listner);
Слушатель – класс, реализующий специализированный интерфейс слушателя, например, ActionListner. У такого интерфейса есть метод actionPerformed(ОбъектСобытия).
Наша задача – реализовать интерфейс слушателя.
class MyListner implements ActionListner { ⋮ public void actionPerformed(ActionEvent event) { // Реакция на событие } }
Источник события вызывает этот метод для генерации события(сообщает, что это событие наступило): listner.actionPerformed(event);
JButton btnYellow = new JButton(“Yellow”); JButton btnBlue = new JButton(“Blue”); class ButtonPanel extends JPanel { public ButtonPanel(){ add(btnYellow); add(btnBlue); ⋮ class ColorAction implements ActionListner { private Color bkColor; public ColorAction(Color c) { bkColor = c; } public void actionPerformed(EventObject event) { // Отреагировать на событие } ⋮ ColorAction actYellow = new ColorAction(Color.yellow); ColorAction actBlue = new ColorAction(Color.blue);// регистрация ??? // Чтобы получить доступ, нужно сделать класс внутренним для класса Panel. class ButtonPanel extends JPanel { private class ColorAction implements ActionListner { public void actionPerformed(ActionListner { // … SetBackground(backgroundColor); repaint(); } private Color backgroundColor; }}
Превращение компонентов в слушателей событий
class ButtonPanel extends JPanel implements ActionListner { … public ButtonPanel() { btnYellow.addActionListner(this); btnBlue.addActionListner(this); } public void actionPerformed(ActionEvent event){ // действие по событию }
Для распознавания источника события используется event.getSource.
Классы – адаптеры
WindowAdapter class Terminators extends WinodwAdapter{ pubic void WindowClosing(WindowEvent e) { System.exit(0); } } WindowListner listner = new Terminator(); frame.addWindowListner(listner);
Иерархия событий библиотеки awt
Иерархия событий библиотеки awt.
Рис. 1.2.
Пакет java.awt.event включает 14 интерфейсов слушателей, к которым есть соответствующие адаптеры.
2.Общие сведения о распределенных системах
2.1.Понятие распределенной системы
РС содержит компоненты, которые распределены по разным компьютерам.,
Определение 2.2 Хост – компьютер, на котором размещены компоненты вычислительной системы: аппаратура и сетевая ОС.
Взаимодействие компонентов РС.
Рис. 2.3.
А – головная боль для программистов.
РС содержит несколько хостов и более одного компонента. Компоненты должны взаимодействовать друг с другом.
Взаимодействие компонентов:
доступ к своим службам
компонент может запрашивать обслуживание у других компонентов
Для взаимодействия используется тот или иной вариант промежуточного уровня, который решает проблему неоднородности и распределения. Промежуточный слой располагается между компонентами и сетевой ОС
Промежуточный слой.
Рис. 2.4.
Определение 2.3 Хост – компьютер, на котором выполняются компоненты, составляющие часть распределенной системы.
Определение 2.4 Распределенная система – группа автономных хостов, соединенных при помощи компьютерных сетей. На каждом хосте:
выполняются компоненты
функционирует промежуточный слой. Компоненты, которые координируют свои действия, таким образом, что пользователь воспринимает систему как единое интегрированное вычислительное средство.
Лекция