Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Шаблон проектирования для разбора данных двоичного файла и хранения их в базе данных
Кто-нибудь рекомендует шаблон проектирования для взятия двоичного файла данных, разбора его частей на объекты и хранения результирующих данных в базе данных?
Я думаю, что подобный шаблон можно было бы использовать для взятия файла XML или файла с разделителями табуляции и разбора его на репрезентативные объекты.
Общая структура данных будет включать::
(Заголовок) (DataElement1) (DataElement1SubData1) (DataElement1SubData2)(DataElement2) (DataElement2SubData1) (DataElement2SubData2) (EOF)
Я думаю, что хороший дизайн включал бы способ изменить определение синтаксического анализа на основе типа файла или некоторых определенных метаданных, включенных в заголовок. Таким образом, Фабричный шаблон будет частью общего дизайна для части синтаксического анализатора.
- Просто напишите свой файловый парсер, используя любые методы, которые приходят на ум
- Напишите много модульных тестов для него, чтобы убедиться, что все ваши крайние случаи покрыты
Как только вы сделаете это, у вас действительно будет разумное представление о problem/solution.
Прямо сейчас у вас в голове только и вертятся теории, большинство из которых окажутся ошибочными.
Шаг 3: оптимизация нещадно. Вашей целью должно быть удаление примерно половины кода
Вы обнаружите, что ваш код в конце будет либо напоминать существующий шаблон проектирования, либо вы создадите новый. Тогда вы будете квалифицированы, чтобы ответить на этот вопрос :-)
Я полностью согласен с Орионом Эдвардсом, и обычно именно так я подхожу к проблеме; но в последнее время я начал видеть некоторые закономерности(!) до безумия.
Для более сложных задач я обычно использую что-то вроде интерпретатора (или стратегии), который использует какой-то конструктор (или фабрику ) для создания каждой части данных.
Для потоковых данных весь парсер будет выглядеть чем-то вроде адаптера , адаптирующегося от объекта потока к объектному потоку (который обычно является просто очередью).
В вашем примере, вероятно, будет один компоновщик для полной структуры данных (от head до EOF), который внутренне использует компоновщики для внутренних элементов данных (подаваемых интерпретатором). Как только EOF будет обнаружен, объект будет испущен.
Однако объекты, созданные в операторе switch в некоторой заводской функции, вероятно, являются самым простым способом для многих меньших задач. Кроме того, мне нравится сохранять мои данные-объекты неизменными, поскольку вы никогда не знаете, когда кто-то запихивает параллелизм вам в глотку :)