Лучший способ хранить данные между прогонами программы в Java?

Нет никакого правильного ответа.

Для неофициальных оценок, я использую туалет-l.

, Если бы я должен был измерить что-то строго, я измерил бы исполняемые операторы. В значительной степени, что-либо с разделителем оператора (обычно точка с запятой), или заканчивающийся блоком. Для составных операторов я считал бы каждый подоператор.

Так:

int i = 7;                  # one statement terminator; one (1) statement
if (r == 9)                # count the if as one (1) statement
  output("Yes");      # one statement terminator; one (1) statement; total (2) for the if
while (n <= 14) {    # count the while as one (1) statement
  output("n = ", n);  # one statement terminator; one (1) statement
  do_something();   # one statement terminator; one (1) statement
  n++                       # count this one, one statement (1), even though it doesn't need a statement terminator in some languages
}                              # brace doesn't count; total (4) for the while

, Если бы я делал его в Схеме или Lisp, я считал бы выражения.

, Поскольку другие сказали, что имеет значение, больше всего то, что Ваше количество последовательно. Также имеет значение, для чего Вы используете это. Если Вы просто хотите сообщить потенциально новому найму, насколько большой Ваш проект, используйте туалет-l. Если Вы желаете сделать планирование и оценку, то Вы могли бы хотеть стать более формальными. Вы не должны ни при каких обстоятельствах использовать LOC для базирования компенсации программиста на.

7
задан numaroth 29 April 2014 в 16:37
поделиться

11 ответов

Мне было интересно, есть ли способ другое размещение информации, которая генерируется программой между запусками программы?

Просто используйте ObjectOutputStream , чтобы сериализовать его в файл, и ObjectInputStream , чтобы вернуть его.

Также есть ли способ сделать это, чтобы сохранить информацию в безопасности? от конечный пользователь может получить к нему доступ?

Если код работает в системе конечного пользователя, тогда нет, нет никакого способа помешать им получить данные - это даже не стоит вашего времени, пытаясь как-то закодировать его, поскольку он легко подключить отладчик и проверять состояние программы во время ее работы. Как двоичный формат, сериализация Java не позволит пользователям, не имеющим технических знаний, его расшифровать, и это лучшее, на что можно надеяться.

6
ответ дан 6 December 2019 в 11:50
поделиться

Я никогда не использовал его сам, но думаю, что это то, для чего изначально был разработан JDK's java.util.prefs.Preferences .

5
ответ дан 6 December 2019 в 11:50
поделиться

Вы можете использовать Свойства для хранения информации. Если вы хотите сделать его безопасным, пропустите его через какой-то поток шифрования .

2
ответ дан 6 December 2019 в 11:50
поделиться

Вы можете использовать db4o для хранения данных. Это объектная база данных, поддерживающая шифрование.

1
ответ дан 6 December 2019 в 11:50
поделиться

Шифрование файлов или локальная база данных с паролем.

1
ответ дан 6 December 2019 в 11:50
поделиться

Возможно, вас заинтересует Quick'n'dirty персистентность для Java .

1
ответ дан 6 December 2019 в 11:50
поделиться

Некоторые предлагали использовать сериализацию. Помните, что сериализация имеет ряд недостатков.

  • Проблема управления версиями. Если вы измените что-то в сериализованных классах, сериализованные файлы, написанные с помощью старой версии вашей программы, больше не будут легко читаться.
  • Вы не знаете точный формат файла. Будет действительно сложно, если позже вы захотите написать другую программу, возможно, на другом языке программирования, которая должна читать файл.

Сериализация не очень подходит для длительного хранения.

Я бы посоветовал вместо этого используйте небольшую встроенную базу данных. (Встроенная база данных - это база данных, которая выполняется в том же процессе, что и ваша программа). Обратите внимание, что Sun Java включает Java DB , которая является версией Apache Derby. Там'

1
ответ дан 6 December 2019 в 11:50
поделиться

Лучшее, что можно использовать при запуске Java, - это использовать ObjectOutputStream или текстовый файл. Когда у вас будет больше опыта, вы сможете использовать базы данных.

0
ответ дан 6 December 2019 в 11:50
поделиться

Как насчет сериализации?

Он не может быть прочитан пользователем, и это относительно просто.

0
ответ дан 6 December 2019 в 11:50
поделиться

XML как метод сериализации более устойчив к будущим изменениям в вашей программе, которые будут регулировать хранилище, чем двоичные форматы, такие как сериализация объектов. Однако это сделало бы его очень читаемым и изменяемым для большинства пользователей.

Очень простое сжатие / распаковка остановит почти всех пользователей от доступа к фактическому содержанию данных. Использование GZipInputStream / GZipOutputStream вокруг вашего текущего потока записи выполнит свою работу. Чем более тщательно вы будете защищены от постороннего вмешательства, тем сильнее это повлияет на пользователей вашего программного обеспечения.

0
ответ дан 6 December 2019 в 11:50
поделиться

Как говорили другие , существует множество способов сериализации данных. Вы можете использовать что-то легкое, например SQLite, или просто сериализацию. Просто поймите, что любые ваши попытки зашифровать данные могут быть проиграны. особенно в случае кода Java, поскольку его можно легко обратить.

Однако, если основная часть ваших пользователей недостаточно технических специалистов, чтобы понимать сложности обратного проектирования программы Java, чтобы выяснить, как расшифровать ваши данные, вам следует уметь обходиться некоторыми базовыми методами шифрования, такими как то, что было упомянуто в другом ответе, и быть хорошим. Просто поймите, что в любое время, когда что-либо находится на машине, которую вы не контролируете, невозможно помешать наиболее настойчивым пользователям выяснить, как это взломать.

Я лично предлагаю использовать sqlite и использовать простое шифрование данных. вы вводите поля, поэтому, если кто-то достаточно умен, чтобы иметь возможность подключиться к локальному файлу БД, он все равно должен каким-то образом изменить ваш алгоритм шифрования. 99,9% обычных пользователей не станут беспокоиться о таком уровне расследования.

0
ответ дан 6 December 2019 в 11:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: