powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема со сравнением
25 сообщений из 25, страница 1 из 1
Проблема со сравнением
    #34135423
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче читаю логи из юникс сервера, парсю их и записываю в Vector, выглядит этот вектор так:
Код: plaintext
1.
2.
3.
zzz         3333
rrr          1111
ttt          0000
zzz          qqqq 
где слева стоят мак адреса, а справа айпишники
Как видно из выше написанного, есть одинаковые маки с разными айпи (в данном случае реч идет о серваке,который имеет одну сетевую,на которой прописано 2 айпи).
Есть таблица базы данных:
Код: plaintext
1.
2.
3.
zzz         ssss
rrr          1111
ttt          0000
zzz          pppp 
Задача сравнить то что пришло,с тем, что находится в базе данных и сообщить потом по почте админу,что произошла подмена айпи например.
Короче как я делаю:
беру строчку из пришедшего на сравнение вектора, выбираю там айпи и мак, ищу есть ли в базе уже такой айпи,если есть,то проверяю соответствует ли данному айпи в базе мак который пришел из файла с этим айпи, если и маки совпадают,значит ничего не шлем админу,т.е. подмен никаких не было, если маки не совпадают,то делаем обновление мак адреса в базе ,и шлем сообщение админу,что у юзера поменялся мак адрес.Теперь,если пришедший айпи не совпал с тем,который есть в базе, но совпал мак,тогда мне нужно сделать обновление айпи адреса которому соответствует мак,вот тут весь геморой и получается, геморой вот в чем:
строка из файла zzz 3333 ---> в базе находим получается две строчки,которым соответстует мак zzz, т.е.:
Код: plaintext
zzz         ssss
и
Код: plaintext
zzz          pppp

на такую ситуацию получается 2 запроса, эти 2 запроса обновляют две строки
Код: plaintext
zzz         ssss
и
Код: plaintext
zzz          pppp
, т.е. получается в результате 2 одинаковых записей в базе данных.Короче надеюсь меня поняли,как мне разрулить такую ситуацию.
А бывает еще и такая ситуация:
Опять же вектор:
Код: plaintext
1.
2.
3.
zzz         3333
rrr          1111
ttt          0000
zzz          qqqq 
и таблица:
Код: plaintext
1.
2.
3.
zzz         ssss
rrr          1111
ttt          0000
 
Берем строчку:
Код: plaintext
zzz          3333 
находим в базе запись с маком zzz
Код: plaintext
zzz         ssss
, меняем у неё айпи адрес с sss на 333, потом берем следующую строчку и т.д до тех пор пока не доходим еще до одной записи из файла с маком zzz,т.е.
Код: plaintext
 zzz          qqqq
, снова находим запись в базе данных с маком zzz и меняем, и тут гемор снова в том, что второе обновление затирает первое,т.е. нет никакого смысла от того,что было произведен апдейт на первом шаге.Короче помогите,не знаю что его делать.
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34135728
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не очень понял а чего бы хотелось-то?
Может ложить в HashMap?
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34135802
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LINUXERне очень понял а чего бы хотелось-то?
Может ложить в HashMap?
геморой вот в чем:
строка из файла:
Код: plaintext
zzz          3333 
строка в БД:
Код: plaintext
 zzz         ssss
обновляю запись в базе данных:
1) update ... set ip=3333 where мак=zzz and ip=ssss
Дальше беру следующую строчку из файла,например она равна:
Код: plaintext
zzz         pppp
делаю запрос:
2) update ... set ip=pppp where мак=zzz and ip=ssss
в результате один завпрос 2) перекрывает запрос 1), как избавится от этого
Говоришь ложить в HashMap,но там могут быть одинаковые маки, а это значит,что как ключ он не годится,если в качестве ключа брать ip,тогда тоже есть гемор,но о нем позже скажу если ничего не будет предложено по поводу первой идеи
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34135986
Фотография nex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, что вам нужно добавить колонку в таблицу, которая вместе с MAC адресом будет являться ключиком таблицы... Например название интерфейса. Тогда update будет таким:

update ... set ip=3333 where мак=zzz and ip=ssss and interface='eth0'

--
nexus
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34136052
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nexМне кажется, что вам нужно добавить колонку в таблицу, которая вместе с MAC адресом будет являться ключиком таблицы... Например название интерфейса. Тогда update будет таким:

update ... set ip=3333 where мак=zzz and ip=ssss and interface='eth0'

--
nexus
в том то весь и геморой,что название интерфейса тоже одинаковое
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34136220
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мужики!!!!
Эта проблема решаема вообще или нет,подскажите кто что может,я уже сплю и мне маки и айпишники снятся
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34136574
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может я что и не понимаю, но вот пришло из логов
Код: plaintext
1.
zzz ppp

а в базе есть
Код: plaintext
1.
2.
3.
zzz  000 
.....
zzz  111 
Вопрос какая из записей в базе ДОЛЖНА меняться?
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34136638
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael PonomarevМожет я что и не понимаю, но вот пришло из логов
Код: plaintext
1.
zzz ppp

а в базе есть
Код: plaintext
1.
2.
3.
zzz  000 
.....
zzz  111 
Вопрос какая из записей в базе ДОЛЖНА меняться?
в том то и дело,что в таком случае меняются 2 записи в базе у которых мак равен zzz т.е. будет следующее в базе:
Код: plaintext
1.
zzz ppp
zzz ppp
это первая проблема,т.к. получаются одинаковые айпишники
вторая проблема:
когда я беру например из лога строчку N, которая равняется:
Код: plaintext
zzz  111 
он находит 2 строки с одинаковыми маками и ставит айпи равным 111, в результате получается карусель.
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34136692
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я вот что пытаюсь сказать
упростим случай: пусть в логах есть только 1 строка с мак адресом ZZZ
Код: plaintext
zzz  111 
а в базе данных 2 строки смак адресом ZZZ
т.е.
Код: plaintext
1.
2.
3.
zzz  000 
.....
zzz  111 
есть ли правило какую из строк таблицы надо поменять? первую, вторую или обе
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34136821
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael Ponomarevесть ли правило какую из строк таблицы надо поменять? первую, вторую или обе
Ты же в данной предметной области работаешь, так что тебе самому лучше должно быть известно.
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34136831
Зашедший
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зашедший Michael Ponomarevесть ли правило какую из строк таблицы надо поменять? первую, вторую или обе
Ты же в данной предметной области работаешь, так что тебе самому лучше должно быть известно.
Упс, сори - не сразу понял, что автор темы - другой.
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34136930
G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При такой постановке вопроса и исходных данных можно только однозначно сказать что изменился один из IP для данного MAC, и делать update на таблицу нельзя потому что Вы не знаете какой из IP изменился. Делайте insert с новой парой MAC-IP (фактически получится история исменения IP для MAC адреса) и дальше думайте как это анализировать.
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34137084
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael Ponomarevя вот что пытаюсь сказать
упростим случай: пусть в логах есть только 1 строка с мак адресом ZZZ
Код: plaintext
zzz  111 
а в базе данных 2 строки смак адресом ZZZ
т.е.
Код: plaintext
1.
2.
3.
zzz  000 
.....
zzz  111 
есть ли правило какую из строк таблицы надо поменять? первую, вторую или обе
в данном случае будет менятся только одна строка, zzz 111, втрую трогать не нужно т.к. есть совпадение по маку и айпи.
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34137177
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз поясню:

первый вариант самый простой:
берем первую строку из файла:
zzz 3333
в базе данных есть ОДНА строчка с таким маком
zzz 222
айпишники не совпали--->обновляем айпишник на 3333
берем вторую строчку из файла, и вот самое интересное,пришла такая вот строка:
zzz 222
в базе такого айпи адреса уже нету, потому что он обновился в первом случае на айпи 3333,
а раз нету,он снова ему делает апдейт и устанавливает айпишник 222,вот такая вот канитель
второй вариант: когда в базе несколько строк с одинаковым маком, тут вообще жопа наступает
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34137287
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
peter6636Еще раз поясню:

первый вариант самый простой:
берем первую строку из файла:
zzz 3333
в базе данных есть ОДНА строчка с таким маком
zzz 222
айпишники не совпали--->обновляем айпишник на 3333
берем вторую строчку из файла, и вот самое интересное,пришла такая вот строка:
zzz 222
в базе такого айпи адреса уже нету, потому что он обновился в первом случае на айпи 3333,
а раз нету,он снова ему делает апдейт и устанавливает айпишник 222,вот такая вот канитель
второй вариант: когда в базе несколько строк с одинаковым маком, тут вообще жопа наступает
Жопа наступает из-за отсутствия формальных требований.
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34137427
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, а если пришло zzz 111, а базе есть
zzz 222
zzz 333
что обновлять?
может все-таки дополнительная таблица истории?
ведь в лог в хронологическом порядке пишется.
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34137647
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michael PonomarevХорошо, а если пришло zzz 111, а базе есть
zzz 222
zzz 333
что обновлять?
может все-таки дополнительная таблица истории?
ведь в лог в хронологическом порядке пишется.
в таком случае он обновит 2 строчки,и инфа будет утеряна, нужен какой-то ключик, только хз куда его прикрутить.
Скорее всего таблица нужна,но как именно в таком случае делать,голова уже не варит совсем нафиг, пойду напьюсь
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34137668
Michael Ponomarev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если подумать
таблица1:
ID, CODE
ID - первичный ключ для таблица1
CODE - шифр

таблица2:
ID, CODE, MAC, IP, DATETIME
ID - таблица2
CODE - шифр из таблица1
MAC, IP - понятно

DATETIME - время вставки
чем не подходит?
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34137682
G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
peter6636
в таком случае он обновит 2 строчки,и инфа будет утеряна, нужен какой-то ключик, только хз куда его прикрутить.
Скорее всего таблица нужна,но как именно в таком случае делать,голова уже не варит совсем нафиг, пойду напьюсь
Вам уже сказали что при 2 записях в таблице вы не можете определить какой из адресов изменился, например

1. получен IP1
2. получен IP2
3. IP1 изменился на IP3
4. IP3 изменился на IP4
5. IP4 изменился на IP1

и т.д.

получается что IP2 не изменялся ни разу, а Вы никак не можете определить какой из начальных адресов (IP1, IP2) менялся, здесь даже история Вам мало чем поможет
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34137687
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
G. peter6636
в таком случае он обновит 2 строчки,и инфа будет утеряна, нужен какой-то ключик, только хз куда его прикрутить.
Скорее всего таблица нужна,но как именно в таком случае делать,голова уже не варит совсем нафиг, пойду напьюсь
Вам уже сказали что при 2 записях в таблице вы не можете определить какой из адресов изменился, например

1. получен IP1
2. получен IP2
3. IP1 изменился на IP3
4. IP3 изменился на IP4
5. IP4 изменился на IP1

и т.д.

получается что IP2 не изменялся ни разу, а Вы никак не можете определить какой из начальных адресов (IP1, IP2) менялся, здесь даже история Вам мало чем поможет
нет никак
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34139167
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надеюсь все-таки есть выход из этой ситуации
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34139186
Vladimir Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
peter6636Надеюсь все-таки есть выход из этой ситуации

Выход состоит в пересмотре постановки задачи в соответствии с предметной областью. Если у тебя нет однозначного ключа соотвествия - задача сводится к "в нашем дворе живут 50 мальчишек, один из них позвонил ко мне в дверь и убежал, как определить какого цвета кепка была у него на голове?" :)
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34139287
LINUXER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
G.При такой постановке вопроса и исходных данных можно только однозначно сказать что изменился один из IP для данного MAC, и делать update на таблицу нельзя потому что Вы не знаете какой из IP изменился. Делайте insert с новой парой MAC-IP (фактически получится история исменения IP для MAC адреса) и дальше думайте как это анализировать.!
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34139922
Фотография peter6636
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Придумал, осталось закодить это все
...
Рейтинг: 0 / 0
Проблема со сравнением
    #34140455
G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
peter6636Придумал, осталось закодить это все
Поделитесь способом. если не жалко:)
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблема со сравнением
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]