Непрерывный, Java в оперативной памяти кодирует компиляцию для Java 5 и Java 6

Вы можете сделать резервную копию своей базы данных в репозитории git. Конечно, если вы поместите данные в git в двоичной форме, вы потеряете все возможности git для эффективного хранения данных с помощью diff (changes). Итак, лучшая практика номер один: хранить данные в текстовом сериализованном формате.

mysqldump - подходящая программа, которая поможет вам в этом. Однако это не идеально. Если что-то нарушает порядок сортировки элементов (например, в результате создания новых таблиц и т. Д.), Тогда в diff будут введены искусственные разрывы. Это снизит эффективность хранения. Вы можете написать собственный сериализатор для сериализации только изменений - но тогда вы делаете тяжелую работу, в которой git уже хорош. Просто используйте дамп sql.

. Говоря, то, что вы хотите сделать, это не то, что обычно подразумевают разработчики, когда они говорят о помещении базы данных в git. Например, если вы прочтете ссылку, помещенную ссылкой @eggyal ( на codinghorror ), вы увидите, что то, что фактически помещено в git, - это скрипты, необходимые для создания исходной базы данных. Могут быть дополнительные сценарии, например, для заполнения данных базы данных чистым состоянием или для заполнения его данными тестирования. Все такие sql-скрипты представляют собой текстовые файлы и почти такой же формат, как и sql-дамп, который вы получите от mysqldump. Поэтому нет причин, по которым вы не можете так поступать с вашими повседневными данными.

17
задан Ran Biron 3 May 2009 в 12:31
поделиться

5 ответов

Если Вы не полностью связываетесь с компиляцией, решения как Beanshell, отличный и другие языки сценариев, легко встраиваются (на самом деле, Java имеет встроенную поддержку того, чтобы включить язык сценариев, таким образом, Ваш код даже не знает, какой язык сценарий записан в)

, Beanshell должен выполнить любой 100%-й код Java IIRC, и я полагаю, что Groovy может выполнить большую часть кода Java - возможно все.

3
ответ дан 30 November 2019 в 13:46
поделиться

JCI выглядит хорошо. Этот фрагмент кода должен быть Вашей базой:

JavaCompiler compiler = new JavaCompilerFactory().createCompiler("eclipse");

MemoryResourceReader mrr = new MemoryResourceReader();
mrr.add("resource name string", yourJavaSourceString.getBytes());

MemoryResourceStore mrs = new MemoryResourceStore();

CompilationResult result = compiler.compile(sources, mrr, mrs);

// don't need the result, unless you care for errors/warnings
// the class should have been compiled to your destination dir

Какая-либо причина это не должно работать?

<час> Редактирование: добавил MemoryResourceStore для отправки вывода скомпилированного класса в память, как требуемый.

кроме того, настройки установки javac, как путь к классу в Вашем случае, могут быть сделаны через setCustomArguments(String[] pCustomArguments) в JavacJavaCompilerSettings класс.

9
ответ дан 30 November 2019 в 13:46
поделиться

Вы могли бы хотеть проверить Янино также.

От их веб-сайта:

Янино является компилятором, который читает выражение JavaTM, блок, тело класса, исходный файл или ряд исходных файлов, и генерирует байт-код JavaTM, который загружается и выполняется непосредственно. Янино не предназначается, чтобы быть средством разработки, но встроенным компилятором в целях компиляции во время выполнения, например, средствами анализа выражения или "механизмами" страниц сервера как JSP.

http://www.janino.net/

Im в настоящее время с помощью него в довольно большом проекте в жестком реальном времени и он работает просто великолепно

7
ответ дан 30 November 2019 в 13:46
поделиться

Javassist мог бы заинтересовать Вас

1
ответ дан 30 November 2019 в 13:46
поделиться

Выполненный в веб-контейнере как Tomcat и сначала генерируют страницу JSP и затем вызывают его.

Это также позволяет Вам избавляться от старых определений классов путем простой перезаписи страницы JSP вместо того, чтобы иметь classloader, медленно выполняемый полный.

требование "в оперативной памяти" из-за скорости или из-за не изменения кодовой базы?

0
ответ дан 30 November 2019 в 13:46
поделиться
Другие вопросы по тегам:

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