Вариант 11 — различия между версиями
(не показаны 3 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
= Создание веб-приложения для поиска информации в сети = | = Создание веб-приложения для поиска информации в сети = | ||
== Введение == | == Введение == | ||
− | '''Интернет''' – это информационное пространство, в котором можно отыскать ответ практически на любой интересующий пользователя вопрос. Это огромная глобальная сеть, в которую как информационные ручейки стекаются потоки более мелких сетей. Любой пользователь, располагающий ПК и соответствующими программами, сможет | + | '''Интернет''' – это информационное пространство, в котором можно отыскать ответ практически на любой интересующий пользователя вопрос. Это огромная глобальная сеть, в которую как информационные ручейки стекаются потоки более мелких сетей. Любой пользователь, располагающий ПК и соответствующими программами, сможет подключиться к сети, используя её возможности для самых разных целей – проведения досуга, обучения, чтения научных работ, отправки электронной почты и т.д. По различным данным, ещё в 2006 г. количество пользователей интернет достигло миллиарда человек. Сегодня глобальная сеть превращается в важный социальный и политический фактор современного информационного общества. С развитием Интернет-технологий появился новый гигантский источник информационных ресурсов, доступ к которым является не только относительно дешевым, но и очень быстрым.<br/> |
Поиск в компьютерных сетях становится искусством и требует вполне определённых знаний, которыми современному человеку необходимо овладеть. И для того, чтобы не утонуть во всём изобилии информации необходимо научиться не только её искать, но и находить. | Поиск в компьютерных сетях становится искусством и требует вполне определённых знаний, которыми современному человеку необходимо овладеть. И для того, чтобы не утонуть во всём изобилии информации необходимо научиться не только её искать, но и находить. | ||
== Использованные технологии == | == Использованные технологии == | ||
Строка 22: | Строка 22: | ||
* Большое количество и разнообразие разработанных библиотек. | * Большое количество и разнообразие разработанных библиотек. | ||
* Переносимость между различными платформами. | * Переносимость между различными платформами. | ||
− | {| class=" | + | {| class="wikitable" |
− | ! | + | ! Версия |
− | ! | + | ! Полное имя |
− | ! | + | ! Дата публикации |
|- | |- | ||
| 1.0 | | 1.0 | ||
Строка 88: | Строка 88: | ||
Прежде всего существует несколько конкурирующих серверов веб-приложений, которые несмотря на различия придерживаются некоторых стандартов, установленных Sun, а значит большинство приложений без каких-либо значительных модификаций могут быть перенесены с сервера на сервер. | Прежде всего существует несколько конкурирующих серверов веб-приложений, которые несмотря на различия придерживаются некоторых стандартов, установленных Sun, а значит большинство приложений без каких-либо значительных модификаций могут быть перенесены с сервера на сервер. | ||
Кроме того существует несколько разного уровня сложности и с разными подходами фреймворков для разработки веб-приложений (т.е. библиотек классов, на основе которых строится веб-приложение). Это фреймворки для структурирования приложений на основе паттерна MVC (''Struts'', ''Spring''), библиотеки для построения шаблонов веб-страниц (''JSTL'', ''Velocity'', ''Java ServerFaces''), библиотеки для отображения реляционной таблицы на объекты и обратно (''Hibernate''). | Кроме того существует несколько разного уровня сложности и с разными подходами фреймворков для разработки веб-приложений (т.е. библиотек классов, на основе которых строится веб-приложение). Это фреймворки для структурирования приложений на основе паттерна MVC (''Struts'', ''Spring''), библиотеки для построения шаблонов веб-страниц (''JSTL'', ''Velocity'', ''Java ServerFaces''), библиотеки для отображения реляционной таблицы на объекты и обратно (''Hibernate''). | ||
− | [[Файл:Mvc.png|350px|right|Паттерн MVC]] | + | [[Файл:Mvc.png|350px|right|Паттерн MVC]]<br /> |
'''Пример.''' Код на языке программирования Java. | '''Пример.''' Код на языке программирования Java. | ||
<source lang="java"> | <source lang="java"> | ||
Строка 100: | Строка 100: | ||
} | } | ||
</source> | </source> | ||
− | + | ||
=== Достоинства и недостатки быстрой сортировки === | === Достоинства и недостатки быстрой сортировки === | ||
Строка 106: | Строка 106: | ||
* Один из самых быстродействующих (на практике) из алгоритмов внутренней сортировки общего назначения. | * Один из самых быстродействующих (на практике) из алгоритмов внутренней сортировки общего назначения. | ||
* Прост в реализации. | * Прост в реализации. | ||
− | * Требует лишь <math>O( | + | * Требует лишь <math>O(lg \ n)</math> дополнительной памяти для своей работы. (Не улучшенный рекурсивный алгоритм в худшем случае <math>\ O(n)</math> памяти) |
− | * Хорошо сочетается с механизмами | + | * Хорошо сочетается с механизмами кэширования и виртуальной памяти. |
* Допускает естественное распараллеливание (сортировка выделенных подмассивов в параллельно выполняющихся подпроцессах). | * Допускает естественное распараллеливание (сортировка выделенных подмассивов в параллельно выполняющихся подпроцессах). | ||
− | * Допускает эффективную модификацию для сортировки по нескольким ключам (в частности — | + | * Допускает эффективную модификацию для сортировки по нескольким ключам (в частности — алгоритм Седжвика для сортировки строк): благодаря тому, что в процессе разделения автоматически выделяется отрезок элементов, равных опорному, этот отрезок можно сразу же сортировать по следующему ключу. |
− | * Работает на | + | * Работает на связных списках и других структурах с последовательным доступом, допускающих эффективный проход как от начала к концу, так и от конца к началу. |
Недостатки: | Недостатки: | ||
* Сильно деградирует по скорости (до <math>\Theta(n^2)</math>) в худшем или близком к нему случае, что может случиться при неудачных входных данных. | * Сильно деградирует по скорости (до <math>\Theta(n^2)</math>) в худшем или близком к нему случае, что может случиться при неудачных входных данных. | ||
− | * Прямая реализация в виде функции с двумя рекурсивными вызовами может привести к ошибке | + | * Прямая реализация в виде функции с двумя рекурсивными вызовами может привести к ошибке переполнения стека, так как в худшем случае ей может потребоваться сделать <math>O(n)</math> вложенных рекурсивных вызовов. |
− | * | + | * Неустойчив. |
<br /> | <br /> | ||
Строка 144: | Строка 144: | ||
|} | |} | ||
<br /><br /> | <br /><br /> | ||
− | |||
− | |||
− | |||
− | |||
<graph> | <graph> | ||
Строка 164: | Строка 160: | ||
'''СПИСОК ЛИТЕРАТУРЫ'''<br /> | '''СПИСОК ЛИТЕРАТУРЫ'''<br /> | ||
− | [1] | + | [1] http://jakarta.apache.org/faq<br /> |
[2] http://faq.realcoding.net/index.php<br /> | [2] http://faq.realcoding.net/index.php<br /> | ||
[3] http://java.sun.com/j2ee/learning/tutorial/index.html<br /> | [3] http://java.sun.com/j2ee/learning/tutorial/index.html<br /> | ||
[4] http://egor.spb.ru/doc/db/mysql/14.html#_ftnref1<br /> | [4] http://egor.spb.ru/doc/db/mysql/14.html#_ftnref1<br /> | ||
[5] http://www.coreservlets.com/Apache-Tomcat-Tutorial/<br /> | [5] http://www.coreservlets.com/Apache-Tomcat-Tutorial/<br /> | ||
− | [6] http://www-ucs.usc.edu/~toms/jakartafaq.html | + | [6] http://www-ucs.usc.edu/~toms/jakartafaq.html<br /> |
− | + |
Текущая версия на 19:19, 16 декабря 2013
Содержание |
Создание веб-приложения для поиска информации в сети
Введение
Интернет – это информационное пространство, в котором можно отыскать ответ практически на любой интересующий пользователя вопрос. Это огромная глобальная сеть, в которую как информационные ручейки стекаются потоки более мелких сетей. Любой пользователь, располагающий ПК и соответствующими программами, сможет подключиться к сети, используя её возможности для самых разных целей – проведения досуга, обучения, чтения научных работ, отправки электронной почты и т.д. По различным данным, ещё в 2006 г. количество пользователей интернет достигло миллиарда человек. Сегодня глобальная сеть превращается в важный социальный и политический фактор современного информационного общества. С развитием Интернет-технологий появился новый гигантский источник информационных ресурсов, доступ к которым является не только относительно дешевым, но и очень быстрым.
Поиск в компьютерных сетях становится искусством и требует вполне определённых знаний, которыми современному человеку необходимо овладеть. И для того, чтобы не утонуть во всём изобилии информации необходимо научиться не только её искать, но и находить.
Использованные технологии
Исходя из поставленной задачи, в моей работе было исполь-зовано следующее программное обеспечение и технологии:
- Java Development Kit 1.7
- JavaServer Pages
- JSTL
- Свободная интегрированная среда разработки модульных кроссплатформенных приложений Eclipse.
- В качестве основного языка разработки я выбрал Java EE.
- Фреймворк для автоматизации сборки проектов Apache Maven.
- Система управления базами данных MySQL
- Контейнер сервлетов Apache Tomcat
- Различные паттерны, такие как MVC, Singleton, Command Factory и др.
Java
В этой работе основное внимание будет уделено разработке веб-приложений. В качестве платформы для разработки выбрана Java, т.к. эта технология на данный момент является наиболее развитой, стандартизированной, применяемой на уровне Enterprise и классической (т.е. из нее в основном идут заимствования в других платформах). Она обладает следующими преимуществами:
- Большое сообщество опытных пользователей, программистов, администраторов. Не возникает проблем с поиском интересующей информации.
- Стандартизированность и постоянное развитие через Java Community Process - стандартный процесс, позволяющий заинтересованным сторонам участвовать в разработке будущих версий платформы.
- Большое количество и разнообразие разработанных библиотек.
- Переносимость между различными платформами.
Версия | Полное имя | Дата публикации |
---|---|---|
1.0 | Java 2 Platform Enterprise Edition, v 1.0 | декабрь 1999 |
1.2 | Java 2 Platform Enterprise Edition, v 1.2 | 2000 |
1.2.1 | Java 2 Platform Enterprise Edition, v 1.2.1 | 23 мая 2000 |
1.3 | Java 2 Platform Enterprise Edition, v 1.3 | 24 сентября 2001 |
1.4 | Java 2 Platform Enterprise Edition, v 1.4 | 24 ноября 2003 |
5.0 | Java Platform, Enterprise Edition, v 5 | 11 мая 2006 |
6.0 | Java Platform, Enterprise Edition, v 6 | 6 декабря 2009 |
7.0 | Java Platform, Enterprise Edition, v 7 | 12 июня 2013 |
Язык Java изначально позиционировался производителем, как язык для Интернет. Технология Java обеспечивает разработчиков основой для создания решений, при разработке которых не нужно задумываться об операционной системе и аппаратной платформе, на которых эти решения будут функционировать. Независимость от платформы достигается за счет того, что уникальные характеристики каждой из поддерживаемых Java 2 платформ, реализованы в виде оболочки, называемой Java Runtime Environment (JRE). Компилятор языка Java преобразует код в последовательность байт-кодов, которая будет выполняться на одной из платформ в рамках JRE.
Тип | Длина (в байтах) | Диапазон или набор значений |
---|---|---|
boolean | 1 в массивах, 4 в переменных[1] | true, false |
byte | 1 | −128..127 |
char | 2 | 0..216−1, или 0..65535 |
short | 2 | −215..215−1, или −32768..32767 |
int | 4 | −231..231−1, или −2147483648..2147483647 |
long | 8 | −263..263−1, или примерно −9.2·1018..9.2·1018 |
float | 4 | -(2-2−23)·2127..(2-2−23)·2127, или примерно −3.4·1038..3.4·1038, а также , , NaN |
double | 8 | -(2-2−52)·21023..(2-2−52)·21023, или примерно −1.8·10308..1.8·10308, а также , , NaN |
Пример. Код на языке программирования Java.
outer: for (int i = 2; i < 1000; i++) { for (int j = 2; j < i; j++) { if (i % j == 0) continue outer; } System.out.println (i); }
Достоинства и недостатки быстрой сортировки
Достоинства:
- Один из самых быстродействующих (на практике) из алгоритмов внутренней сортировки общего назначения.
- Прост в реализации.
- Требует лишь дополнительной памяти для своей работы. (Не улучшенный рекурсивный алгоритм в худшем случае памяти)
- Хорошо сочетается с механизмами кэширования и виртуальной памяти.
- Допускает естественное распараллеливание (сортировка выделенных подмассивов в параллельно выполняющихся подпроцессах).
- Допускает эффективную модификацию для сортировки по нескольким ключам (в частности — алгоритм Седжвика для сортировки строк): благодаря тому, что в процессе разделения автоматически выделяется отрезок элементов, равных опорному, этот отрезок можно сразу же сортировать по следующему ключу.
- Работает на связных списках и других структурах с последовательным доступом, допускающих эффективный проход как от начала к концу, так и от конца к началу.
Недостатки:
- Сильно деградирует по скорости (до ) в худшем или близком к нему случае, что может случиться при неудачных входных данных.
- Прямая реализация в виде функции с двумя рекурсивными вызовами может привести к ошибке переполнения стека, так как в худшем случае ей может потребоваться сделать вложенных рекурсивных вызовов.
- Неустойчив.
График работы
Название глав дипломной работы | Дата начала выполнения | Дата конца выполнения |
---|---|---|
WEB-ПРИЛОЖЕНИЯ | 04.04.2014 | 14.04.2014 |
ПРИНЦИП РАБОТЫ ВЕБ-ПРИЛОЖЕНИЯ SEARCHER | 15.04.2014 | 24.04.2014 |
СТРУКТУРА СЕРВЕРА | 25.04.2014 | 16.05.2014 |
Название глав дипломной работы | Отметка о выполнении |
---|---|
WEB-ПРИЛОЖЕНИЯ | |
ПРИНЦИП РАБОТЫ ВЕБ-ПРИЛОЖЕНИЯ SEARCHER | |
СТРУКТУРА СЕРВЕРА |
Заключение
Мною было создано веб-приложение, позволяющее упростить поиск в сети интернет, комбинирующее возможности трёх крупных поисковых систем и обладающее дополнительным функционалом.
СПИСОК ЛИТЕРАТУРЫ
[1] http://jakarta.apache.org/faq
[2] http://faq.realcoding.net/index.php
[3] http://java.sun.com/j2ee/learning/tutorial/index.html
[4] http://egor.spb.ru/doc/db/mysql/14.html#_ftnref1
[5] http://www.coreservlets.com/Apache-Tomcat-Tutorial/
[6] http://www-ucs.usc.edu/~toms/jakartafaq.html
- ↑ JVM не имеет поддержки для переменных типа boolean, поэтому они представляются в виде значений типа int. Однако массивы boolean[] поддерживаются. VM Spec The Structure of the Java Virtual Machine