Java: многопоточность, работа с XML. Параллельное выполнение задач Процессы – параллельное выполнение в различном адресном пространстве. Взаимодействие.

Презентация:



Advertisements
Похожие презентации
Основы Java – среда NetBeans, работа с консолью Вашенков Олег Евгеньевич
Advertisements

Java: интерфейсы, наследование, обработка исключительных ситуаций Вашенков Олег Евгеньевич.
МНОГОПОТОЧНОЕ ПРОГРАММИРОВАНИЕ В JAVA Пакеты java.lang java.util.concurrent.
Java : доступ к базам данных, технология JDBC. Примеры баз данных.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Язык Java. JSP.. Java. Синтаксис. Перевод строчки эквивалентен пробелу Регистр в именах различается // Комментарии до конца строки /* Многострочные комментарии.
Программный доступ к XML DOM, SAX,.NET среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря 2013 г.среда, 11 декабря.
Test 6 Вопрос 1. Как можно уничтожить объект в Java? a)присвоить null всем ссылкам на объект b)вызвать Runtime.getRuntime().gc() c)вызвать метод finalize()
1 © Luxoft Training 2012 Java: расширенные вопросы Модуль #8.
Сокеты TCP/IP Лекция Понятие сокета Если требуется получить доступ к сетевым операциям низкого уровня (класс URL обеспечивает выполнение только.
Классы в С#. Перечисления С# Перечисление задает конечное множество возможных значений, которые могут получать объекты класса перечисление. [атрибуты][модификаторы]
Исключения в Java. Исключения – это механизм взаимодействия между кодом, приведшим к ошибке, и кодом, обрабатывающим ошибку Исключение выбрасывается (throw),
Новосибирск, 2004 (С) Всеволод Рылов, все права защищены 1 Основы программирования на языке Java Стандартная библиотека Java: java.net; Многопоточное программирование.
Многопоточное программирование на Java Java Advanced.
Практическое использование Java Макаревич Л. Г.. Инсталляция Java Документация в docs Прописать PATH (каталог bin в JSDK) Прописать CLASSPATH (путь к.
ПОТОКИ Начальные сведенияПОТОКИ Начальные сведения.
Многопоточное программирование на Java Java Advanced.
БАЗЫ ДАННЫХ ЛЕКЦИЯ 14. тема: XML-ТЕХНОЛОГИИ В БАЗАХ ДАННЫХ.
Hadoop Лекция 5. Основы MapReduce API. План Базовые компоненты MapReduce API Mapper Reducer Driver.
Пользовательские действия (custom actions) в JSP. JSTL.
Транксрипт:

Java: многопоточность, работа с XML

Параллельное выполнение задач Процессы – параллельное выполнение в различном адресном пространстве. Взаимодействие через средства InterProcess Communication (IPC): sockets, pipes, shared memory. Потоки – параллельное выполнение в едином адресном пространстве. Проблемы – синхронизация при доступе к общим данным, блокировки.

Потоки Java: java.lang.Thread Создание потока: public static void main( String []args ){ class MyThread extends Thread{ public void run(){ for( int i = 0; i < NNN; i++ ){ … } } t.start(); System.out.println( Waiting for the thread… ); t.join(); }

Потоки Java: java.lang.Thread Создание потока: public static void main( String []args ){ Thread t = new Thread(){ public void run(){ /* long operation */ } }.start(); //Waiting… t.join(); }

Потоки Java: java.lang.Thread Создание потока на основе интерфейса Runnable: class MyRunnable implements Runnable{ public void run(){ … } } new Thread( new MyRunnable() ).start();

Работа с XML-документами Пакет javax.xml Библиотека dom4j/jaxen ( Библиотека Apache Xerces for Java ( Библиотека JDom (

dom4j Подключение библиотек в NetBeans:

dom4j - пример ]]>. Simple text nodes not allows

Dom4j - пример import org.dom4j.Document; import org.dom4j.io.SAXReader; import java.io.InputStreamReader; import java.io.FileInputStream; public class TestDom4j{ public static void main( String []args ){ try{ SAXReader reader = new SAXReader(); Document doc = reader.read( new InputStreamReader( new FileInputStream(in.xml) ) ); System.out.println( NewsFeed/Item/title: + doc.getRootElement().element(Item).element(title).getText() ); }catch( Exception exc ){ exc.printStackTrace(); }

Выражения XPath Выбор всех узлов Item: /NewsFeed/Item или //Item Выбор элемента title для Item с порядковым номером 10: /NewsFeed/Item[position() = 10]/title или /NewsFeed/Item[10]/title Поиск по значению атрибута (Item с атрибутом id=112233): = ] Поиск Item, для которых изображение имеет расширение png: //Item[ ] Поиск Item, для которых в элементе desc присутствует фраза Simple text: //Item[ contains(desc/text(), Simple text) ]

XPath в Dom4j import …; public class TestXPath{ public static void main( String []args ){ try{ Document doc = new SAXReader().read( new InputStreamReader( new FileInputStream( in.xml ) ); //Выбор первого элемента Item Element firstItem = (Element)doc.selectSingleNode( /NewsFeed/Item[1] ); //Количество элементов Item System.out.println( Item count: + doc.valueOf( count(//Item) ) ); //Выбор всех элементов Item List items = doc.selectNodes( /NewsFeed/Item ); for( Node item : items ){ //Доступ к атрибуту System.out.println( + ); //Доступ к атрибуту System.out.println( Item/image: + ); //Приведение типа и использование методов класса org.dom4j.Element Element itemElement = (Element)item; itemElement.addAttribute( temporaryAttribute, +rnd.nextInt(32767) ); System.out.println( itemElement.attributeValue( temporaryAttribute ) ); System.out.println( ) ); } }catch( Exception exc ){ … } }

Дополнительные сведения Получение части XML-документа: Document doc = … doc.selectSingleNode( /NewsFeed/item[1] ).asXML(); Запись XML-документа: OutputFormat fmt = OutputFormat.createPrettyPrint(); FileOutputStream outStream = new FileOutputStream( out.xml ); XMLWriter wr = new XMLWriter( outStream, fmt ); wr.write( doc ); wr.close();

Задание 1 Разработать программу, которая позволяла бы выполнение запросов XPath для загруженного XML-документа. Документ должен быть загружен при запуске программы.

XPath – выбор части элементов Выбор части элементов Item doc.selectNodes( /NewsFeed/Item[ position() >= 0 and position() < 10] ); Выбор всех атрибутов и элементов: doc.selectNodes( //* | ); Полный список функций XPath (position(), contains(), substring() и др.) :

Задание 2 Исходный файл ex-xml.xml содержит элементов Item. Разработать консольную программу для выбора всех элементов Item из XML-файла, которые содержат элемент desc с искомым текстом (задается, как переменная в main). В методе main() должна быть объявлена константа THREADS_COUNT – ограничение на количество строк, читаемых каждым потоком из исходного файла. Реализовать поиск элементов одним XPath-запросом и запросом, выполняемым параллельно в THREADS_COUNT потоках. Оценить время выполнения единого и множества параллельных запросов.