forked from dkomanov/fizteh-java-2014
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
13 changed files
with
487 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
language: java | ||
jdk: | ||
- oraclejdk8 | ||
script: ant checkstyle |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
package ru.fizteh.fivt.storage.strings; | ||
|
||
import java.util.List; | ||
|
||
/** | ||
* @author Fedor Lavrentyev | ||
* @author Dmitriy Komanov | ||
*/ | ||
public interface Table { | ||
|
||
/** | ||
* Возвращает название базы данных. | ||
*/ | ||
String getName(); | ||
|
||
/** | ||
* Получает значение по указанному ключу. | ||
* | ||
* @param key Ключ. | ||
* @return Значение. Если не найдено, возвращает null. | ||
* | ||
* @throws IllegalArgumentException Если значение параметра key является null. | ||
*/ | ||
String get(String key); | ||
|
||
/** | ||
* Устанавливает значение по указанному ключу. | ||
* | ||
* @param key Ключ. | ||
* @param value Значение. | ||
* @return Значение, которое было записано по этому ключу ранее. Если ранее значения не было записано, | ||
* возвращает null. | ||
* | ||
* @throws IllegalArgumentException Если значение параметров key или value является null. | ||
*/ | ||
String put(String key, String value); | ||
|
||
/** | ||
* Удаляет значение по указанному ключу. | ||
* | ||
* @param key Ключ. | ||
* @return Значение. Если не найдено, возвращает null. | ||
* | ||
* @throws IllegalArgumentException Если значение параметра key является null. | ||
*/ | ||
String remove(String key); | ||
|
||
/** | ||
* Возвращает количество ключей в таблице. | ||
* | ||
* @return Количество ключей в таблице. | ||
*/ | ||
int size(); | ||
|
||
/** | ||
* Выполняет фиксацию изменений. | ||
* | ||
* @return Количество сохранённых ключей. | ||
*/ | ||
int commit(); | ||
|
||
/** | ||
* Выполняет откат изменений с момента последней фиксации. | ||
* | ||
* @return Количество отменённых ключей. | ||
*/ | ||
int rollback(); | ||
|
||
/** | ||
* Выводит список ключей таблицы | ||
* | ||
* @return Список ключей. | ||
*/ | ||
List<String> list(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
package ru.fizteh.fivt.storage.strings; | ||
|
||
/** | ||
* @author Fedor Lavrentyev | ||
* @author Dmitriy Komanov | ||
*/ | ||
public interface TableProvider { | ||
|
||
/** | ||
* Возвращает таблицу с указанным названием. | ||
* | ||
* @param name Название таблицы. | ||
* @return Объект, представляющий таблицу. Если таблицы с указанным именем не существует, возвращает null. | ||
* @throws IllegalArgumentException Если название таблицы null или имеет недопустимое значение. | ||
*/ | ||
Table getTable(String name); | ||
|
||
/** | ||
* Создаёт таблицу с указанным названием. | ||
* | ||
* @param name Название таблицы. | ||
* @return Объект, представляющий таблицу. Если таблица уже существует, возвращает null. | ||
* @throws IllegalArgumentException Если название таблицы null или имеет недопустимое значение. | ||
*/ | ||
Table createTable(String name); | ||
|
||
/** | ||
* Удаляет таблицу с указанным названием. | ||
* | ||
* @param name Название таблицы. | ||
* @throws IllegalArgumentException Если название таблицы null или имеет недопустимое значение. | ||
* @throws IllegalStateException Если таблицы с указанным названием не существует. | ||
*/ | ||
void removeTable(String name); | ||
} |
20 changes: 20 additions & 0 deletions
20
src/ru/fizteh/fivt/storage/strings/TableProviderFactory.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
package ru.fizteh.fivt.storage.strings; | ||
|
||
/** | ||
* Представляет интерфейс для создание экземпляров {@link TableProvider}. Предполагается, что реализация интерфейса | ||
* фабрики будет иметь публичный конструктор без параметров. | ||
* | ||
* @author Fedor Lavrentyev | ||
* @author Dmitriy Komanov | ||
*/ | ||
public interface TableProviderFactory { | ||
|
||
/** | ||
* Возвращает объект для работы с базой данных. | ||
* | ||
* @param dir Директория с файлами базы данных. | ||
* @return Объект для работы с базой данных. | ||
* @throws IllegalArgumentException Если значение директории null или имеет недопустимое значение. | ||
*/ | ||
TableProvider create(String dir); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
## Калькулятор | ||
Задание - альтернатива Shell. Не нужно делать оба. Только для группы 394. | ||
|
||
Консольное приложение, на вход принимает выражение как параметр : | ||
```bash | ||
java Calculator "-(3 + 5.5) * 2 - 20/(15 - 5)" | ||
``` | ||
|
||
Результат работы приложения -- результат выражения: | ||
``` | ||
-19 | ||
``` | ||
|
||
Поддерживаемые операции: ```+ - * /```. Приоритет операций -- математический | ||
(скобки, потом унарное отрицание, потом умножение/деление, потом сложение/вычитание). | ||
|
||
В случае неправильных входных данных приложение должно вывести понятное описание | ||
ошибки. | ||
|
||
Ограничения: не использовать встроенные скриптовые движки и кодо- или байткод генерацию. | ||
Одним словом, парсить вручную. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
## Внешняя сортировка связанного списка | ||
Задание - альтернатива FileMap. Не нужно делать оба. Только для группы 394. | ||
|
||
Консольное приложение, на вход принимает имя входного и выходного файлов: | ||
```bash | ||
java ExternalListRank <in_filename> <out_filename> | ||
``` | ||
|
||
На входе файл с заданным односвязным списком. Все вершины пронумерованы от 1 до n. Каждая строчка имеет формат: вершина<пробел>следующая вершина. Последняя вершина имеет вид <номер вершины><пробел>0. | ||
Например: | ||
``` | ||
1 5 | ||
2 3 | ||
5 0 | ||
4 1 | ||
3 4 | ||
``` | ||
|
||
На выходе должен быть файл, в котором вершины идут в порядке следования в списке: | ||
``` | ||
2 3 | ||
3 4 | ||
4 1 | ||
1 5 | ||
5 0 | ||
``` | ||
|
||
Ограничения: программа должна работать с памятью -Xmx64M и уметь сортировать файлы до 1Гб. Должна делать O(nlogn) операций ввода/вывода во внешнюю память. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,120 @@ | ||
## FileMap | ||
|
||
Консольное приложение, которое работает с файлом-БД. Путь к файлу задаётся системным свойством ```System.getProperty("db.file")```. Из командной строки надо запускать приложение так: ```java -Ddb.file=/home/student/db.dat ru.fizteh.fivt.students.test.DbMain```. | ||
|
||
Приложение должно работать как в интерактивном режиме, так и в пакетном (см. задание Shell). | ||
|
||
Приложение должно поддерживать следующие команды с фиксированным выводом: | ||
|
||
### put | ||
``` | ||
put key value | ||
``` | ||
|
||
Если значение новое, то вывод: | ||
``` | ||
new | ||
``` | ||
|
||
Если значение затирает существующее: | ||
``` | ||
overwrite | ||
old value | ||
``` | ||
|
||
### get | ||
``` | ||
get key | ||
``` | ||
|
||
Если значение есть: | ||
``` | ||
found | ||
value | ||
``` | ||
|
||
Если значения нет: | ||
``` | ||
not found | ||
``` | ||
|
||
### remove | ||
``` | ||
remove key | ||
``` | ||
|
||
Если значение удалено: | ||
``` | ||
removed | ||
``` | ||
|
||
Если значения нет: | ||
``` | ||
not found | ||
``` | ||
|
||
### list | ||
``` | ||
list | ||
``` | ||
|
||
Выводит список всех ключей или пустую строку, если ничего нет: | ||
``` | ||
key1, key2, kеy3 | ||
``` | ||
|
||
### exit | ||
``` | ||
exit | ||
``` | ||
|
||
### Вариант 1 | ||
Данные лежат в бинарном файле следующего формата: | ||
``` | ||
Длина ключа 1, ключ 1, длина значения 1, значение 1, | ||
Длина ключа 2, ключ 2, длина значения 2, значение 2, | ||
... | ||
``` | ||
|
||
Форматы длин - целые числа в машинном представлении, 4 байта. | ||
Формат ключа и значения - байты, полученные из строки в кодировке UTF-8. | ||
|
||
#### Пример | ||
``` | ||
add key value | ||
add ключ значение | ||
``` | ||
|
||
В файле должно оказаться (в бинарном виде): | ||
``` | ||
00000008 d0bad0bb d18ed187 00000010 | ||
d0b7d0bd d0b0d187 d0b5d0bd d0b8d0b5 | ||
00000003 6b657900 00000576 616c7565 | ||
``` | ||
|
||
### Вариант 2 | ||
Данные лежат в бинарном файле следующего формата: | ||
``` | ||
Ключ 1, \0, смещение значения 1, | ||
Ключ 2, \0, смещение значения 2, | ||
... | ||
Ключ N, \0, смещение значения N, | ||
значение 1, значение 2, ... | ||
``` | ||
|
||
Форматы смещений - целые числа в машинном представлении, 4 байта. | ||
Формат ключа - байты, полученные из строки в кодировке UTF-8. Оканчивается ключ нулевым символом (\0). | ||
Между списком смещений и первым значением нет разрыва. | ||
|
||
#### Пример | ||
``` | ||
add key value | ||
add ключ значение | ||
``` | ||
|
||
В файле должно оказаться (в бинарном виде): | ||
``` | ||
d0bad0bb d18ed187 00000000 156b6579 | ||
00000000 25d0b7d0 bdd0b0d1 87d0b5d0 | ||
bdd0b8d0 b576616c 7565 | ||
``` |
Oops, something went wrong.