
- •Указатели
- •2 Сервера, 2 клиента (один из них – средний и сервер (для клиента запрашиваемого данные) и клиент (для сервера, у которого он эти данные потом запрашивает).
- •2.4.1. Сохранность и синхронность
- •Во взаимодействиях
- •2.4. Связь посредством сообщений 127
- •128 Глава 2. Связь
- •2.4. Связь посредством сообщений 129
- •2.4. Связь посредством сообщений 131
- •Синхронизация
- •Алгоритм Беркли
- •Логические часы. Временные отметки Лэмпорта:
- •Отказоустойчивость
Платформа JAVA
- пакет программ, которые позволяют разрабатывать и запускать программы, написанные на языке программирования Java:
- Виртуальная машина Java
- Компилятор я языка Java в байтй код
- Библиотеки классов
При создании Java ставили следующие задачи: Создать язык программирования который бы был:
- Простым, объектно-ориентированным и знакомым
- Надёржным и безопасным
- Независимым от архитектуры и переносимым
- Высокопроизводительность
Платформы Java
Редакции платформы Java
- Java Card
- Java EE (Enterprise Edition) – нам понадобится
Пакет распространения:
JRE – Java Runtime Environment
*виртуальная машина Java
* библиотеки классов
- JDK – Java development Kit = JRE + компилятор Java (нам понадобится Джава девелопмент Ентерпрайс эдишн)
Рекомендует: NetBeans
На след. пару установить Джаву
Hello, world!
public class TestJava
{
public static void main (Stringp[args)
…
}
Компиляция и запуск Hello, world!
!Добавить к переменной окружения PATH путь к компилятору и виртуальной машине Java (…)
javac TestJava.java
java TestJava
Главное отличае от СИ – компиляция в байт код.
Байткод – промежуточный язык, который может интерпретироваться в джава машину.
Указатели
Формально все переменные (за исключением перемнный примитивный типов) в Java являются иказателями на объекты. С их помощью можно работать с объектами, но нельзя получить адрес.
Следствия:
- Автоматическая обработка мусора
- Проверка совместимости типов при присваивании
- Меньше ошибок при работе с памятью
- Простая сериализация объектов
Другие отличия Java от C/C++
- Чистый объектно-ориентированный язык. Object – всеобщий предок.
- Нет глобальных переменных
- Нет препроцессорной обработки
- Нет ненадёжных структур (struct, union)
- Нет разделения на заголовочные файлы и файлы с реализацией
- Не воддерживает множественное наследование
- Интерфейсы
import вместо #include, пакеты вместо библиотек
import java.math.*;
import java.until.Date;
Аннотации
- используются дл добавления метаданных в программу
@Resource (lookup = “jms/ConnectionFactory”)
Создание документации из комментариев
package testJava;
public class TestJava
{
/**
* закомментированная строка
*/
Оптимизация
- Just-In-Time компеляция, этот компилятор при мервом проховде какого то участка кода – кмпелирует в машинный код конкретной архитектуры, поэтому то, что пытается его выполнить – делает это быстрее.
- HotSpot – поиск и оптимизация горячих точек (некоторые части программ выполняются чаще остальных, HS находит такие места и производит их оптимизацию)
- Динамическая перекомпиляция
- Анализ многопоточных приложений и определение необходимости захвата разделяемых объектов
- Оптимизация GarbageCollector (уменьшение дефрагментации)
- Совместное использование классов
07.03.2013
Формальная модель распределённых систем.
Выполнение системы
- Выполнением системы S называется макесимальная последовательность E = (c0,c1,c2,…), где c0Эl и для каждого I, выполняется отношение ci->c(i+1).
-Заключённой конфигурацией называется такая конфигурация сi для которой не сущетсвует cj, такой, что ci->cj.
- Конфигурация d называетмся достижимой из конфигурации c, если сущ последовтельность конфигураций c0,c1…,ck
…
Локальный алгоритм
- Локальным алгоритмом называется пятёрка (Z,I, |-I - переход связанный с внутренним событием, |-s – события связанные с изменением состояния и одновременной отправкой сообщений,|-r – множество событий связанных с получением сообщения), в которой Z – множество состояний, I – начальные состояния (подмножество множества Z).
Распределённый алгоритмы – совокупность локальных алгоритмов.
Система переходов для асинхронного распределённого алгоритма
Пусть задано семейство процессов P = {p1,p2,…,pn} локальных процессов и локальный алгоритм каждого процесса представлен пятёркой (Zpi,Ipi, |-Ipi, |-spi, |-rpi). Тогда говорят, что система переходов S = (C, -> m I) порождена распределённым алгоритмом для семейства асинхронно связанных процессов, если: C={…} ,
I={…} – началльно сост распред системы представляет собой совокупность всех начальных состояних локальных алгоритмов, плюс пустое множество сообщений.
3) Система переходов представляет собой множество всех пар вида:
-> = (UpэP -> p), где ->
(cp1, cp2 ,…, cpi, , … cpn, m), (cp1, cp2 ,…, c’pi, , … cpn, m’)
Смысл: множество переходов – множество эл шагов, которые могу твыполнятся в распределённой системе, каждый шаг – изменение состояния в системе. Оно может быть изменение либо только внутренноего состояния, либо процесс мог отправить сообщение и тогда множество сообщений пополнилость множеством сообщений. Либо принято сообщение изменение состояния. Асинхронный алгоритм.
Система переходов для синхронного распределенного алгоритма
Отличается тем, что сообщения отправляются и получаются одновременно, т.е. представляют из себя одно действие, синхронные система – системы, в которых время доставки сообщения ограничены только константной.
C={cp1,cp2,…cpn}: ApЭP
тоже что и асинх*
-> = (UpэP->p) U (Up,qэP=/=q -> pq)
Свойства системы переходов:
Типы свойств системы переходов:
- Свойство безопасности – каждая достижимая конфигурация в любом выполнении системы обладает свойством (конкретно -…)
- Свойство живости – хотя бы одна достижимая конфигурация в либом выполнении системы обладает свойством …
Теорема: любое свойство множества выполнений может быть предсталвено в виде конъюнкции свойств безопасности и живости.
Пример: алгоритм забияки для выбора лидера
Обнаружив недоступность предыдущенр лидера, процессор P посылает всем процесса с большими номерами сообщение ГОЛОСОВАНИЕ
- Если никто не отвечает, то P выигрывает голосование координатором
- Если один из процессов с большим номером отвечает, то он становится координотором, а Р на этом выполнении алгоритма заканчивает.
- Если ему приходит сообщение от какого то другого процесса, То он должен ответить, что он готов быть лидером.
Свойство безопасности: в каждый момент времени во время конфигурации в системе присутствует не более одного лидера.
Свойство живости: всегда должна быть достижима конфигурация, когда лидер найден.
Недоступен
Лидер
Не лидер
Начальное состояние
Итерации i
Практика:
написать сермлет, это аналог CJI в джава, т.е. сермлет получает запрос, производит какие то действия и формирует HTML стриачку с результатом своей работы, в отличае от CJI, (джава, даже не джава, а - ) вебконтейнер, она за нас произведёт … разберёт HTTP запрос и сформирует объект класса HTTP реквест и передаст его нашему СЕРМЛЕТУ, наш сермлет должен наследоваться от класса HTTP сермлет (HttpServlet), класс http абстрактный, нам надо будет переопределить его – doGet, он в качестве параметров берёт (httpRequest reg, HttpResponce resp) в этом методе мы можем реализовать логику работы своего приложения.
Говорят что распределённая система построена по арх клиент сервер, если все процессы в этой системе состоят из 2х возможно пересекающахися множест (клиенты и сервера).
Серверы – процессы, которые предоставляют какие нибудь ресурсы или службы.
Клиенты – процессы, которые эти ресурсы или службы используют.
Архитектура клиент-сервер самая простая и распространённая архитектура.
Приемущества:
- отсутствие дублирование кома программы – сервера программами клиентами
- Ниже требования к компьютерам-клиентам
- Безопасность
Недостатки:
- Сервер – узкое место по Надёжности и Масштабируемости.
- Стоимость оборудования сервера
Разделение приложений по уровням:
- Уровень пользовательского интерфейса
- Уровень обработки
- Уровень данных
Различные формы организации архитектуры клиент-сервер:
Тонкий клиент – клиент выполняющий минимум функций по представлению данных (пользвательскйи интерфейс) как правило в роли тонкого клиента выступает веб браузер.
Толстый клиент – выполняет обработку, разделение, хранение данных (много функций, много кода)
Трехзвенная архитектура (3 звена):