![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Здравствуйте, уважаемые.
Мысль у меня не шелохнется. Каким образом оптимально сконструировать следующее. Есть поток байт соединения, соединение медленное, данные капают медленно. Есть регулярное выражение, извлекающее из таблицы записи. Теоретически у меня получается "метод окна", т.е. я знаю, что максимальная длина записи, подходящая регулярному выражению, равна N символов. По методу окна я должен взять 2N байт, чтобы гарантировано увидеть в этом окне хотя бы 1 запись. Остается только понять, как можно оптимально, без нагрузки, обработать информацию, заключенную в рамку? Постоянно складывать строки - дело тугое. Имеем InputStreamReader, имеем StringWriter. На текущий момент реализована только скачка всей страницы, и проход регулярным выражением. Это меня не устраивает. Большое спасибо за помощь. |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Я что-то непонятно объяснил? Такой возможности нет? Пишите в любом случае.
|
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
Я не совсем понял, или, точнее, совсем не понял
![]() |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
COVD, спасибо за отклик.
Про скольжение. в принципе то я не знаю, но предполагаю, что если часть данных отработала своё, т.е. нашелся фрагмент, подходящий к регулярному выражению, то, конечно же, мы сможем сразу отсечь отработанную часть строки, а потом видимо опять начнем наполнять окно до размера 2N. Таблица - это таблица на сайте.
Еще раз. Проблема заключается в том, что, если на странице K записей, нам придется делать столько же манипуляций со строками. Сейчас попробую реализовать ту версию, которую могу. |
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
Если надо извлекать записи, то я бы сначала решал задачу выделения из текста записи (по наличию точки или html тага, если запись - то, что между тагами <td></td>). Когда запись получена клал бы ее в BlockingQueue. А другим потоком извлекал из очереди записи и анализировал их регулярным выражением или чем-то еще.
Это сообщение отредактировал(а) COVD - 17.6.2008, 16:43 |
|||
|
||||
Platon |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Вот я тут набросал, что имел ввиду.
Добавлено через 52 секунды В качестве теста:
|
||||
|
|||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Сейчас я продемонстрирую вам феноменальные резултаты!
|
|||
|
||||
Platon |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Ошеломительный результат, который отражает не единичный случай, запускал много раз. Сгенерировал файл весом 5М. Вот тестовый код:
Выходит, что на лету не только пользователевыгодно, но и экономично! Добавлено через 2 минуты и 24 секунды С нетерпением жду комментариев! Добавлено через 9 минут и 19 секунд Нашел погреху. Если StringWriter выделить достаточно памяти, к примеру 7MB, то результат становится закономерным:
Это сообщение отредактировал(а) Platon - 17.6.2008, 17:56 |
||||||
|
|||||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
![]() |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Так, вот это я сейчас не понял, к чему большой палец относится?
|
|||
|
||||
COVD |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
К успеху в целом. А по сути трудно комментировать, т.к. все же я не в теме. Вы писали, что данные капают медленно из интернета. И тестируете скорость обработки данных .. из файла? Как я понимаю, эксперимент еще не окончен? Это сообщение отредактировал(а) COVD - 17.6.2008, 18:36 |
|||
|
||||
Platon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1801 Регистрация: 25.4.2006 Репутация: 16 Всего: 40 |
Безусловно. Тест с "окном" продемонстрировал весьма неплохие результаты на локальной машине, 10-15% весьма приемлемая цена. Более того, как вы правильно подметили, через интернет эта разница должна испариться.
Очень красиво выглядит. Ты видишь как постепенно обработанные результаты сливаются на консоль. ^_^ COVD, спасибо за моральную поддержку. Полдня ждал, ответа, в итоге сам дошел. Это сообщение отредактировал(а) Platon - 18.6.2008, 17:31 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |