Вчера я выпустил небольшой сайт * глоток> для отслеживания представителя, который использовал общую базу данных SQLite для всех посетителей. К сожалению, даже со скромной загрузкой, что это поставило мой хост, который это выполняло вполне медленно. Это вызвано тем, что вся база данных была заблокирована каждый раз, когда кто-то просмотрел страницу, потому что это содержало, обновляет/вставляет. Я скоро переключился на MySQL и в то время как у меня не было большого количества времени для проверения его, это кажется намного более масштабируемым, чем SQLite. Я просто помню медленные загрузки страницы, и иногда получение базы данных заблокировало ошибку при попытке выполнить запросы от оболочки в sqlite. Однако я выполняю другой сайт от SQLite очень хорошо. Различие - то, что сайт статичен (т.е. я - единственный, который может изменить базу данных), и таким образом, это работает просто великолепно для параллельных чтений. Мораль истории: только используйте SQLite для веб-сайтов, где обновления базы данных происходят редко (менее часто, чем каждая загруженная страница).
редактирование : Я просто понял, что не мог быть справедливым к SQLite - я не индексировал столбцов в базе данных SQLite, когда я служил ему от веб-страницы. Это частично вызвало замедление, которое я испытывал. Однако наблюдение за блокировкой базы данных стоит - если у Вас будут особенно тягостные обновления, производительность SQLite не будет соответствовать MySQL или Пост-ГРЭС.
другое редактирование: , Так как я отправил это почти 3 месяца назад, у меня была возможность тесно исследовать масштабируемость SQLite, и с несколькими приемами это может быть довольно масштабируемо. Как я упомянул в своем первом редактировании, индексы базы данных существенно уменьшают время запроса, но это - больше общего наблюдения о базах данных, чем это о SQLite. Однако существует другой прием, который можно использовать для ускорения SQLite: транзакции . Каждый раз, когда необходимо сделать несколько записей базы данных, поместите их в транзакции. Вместо того, чтобы писать в (и заблокировать) файл каждый раз, когда запрос записи выпущен, запись только произойдет однажды, когда транзакция завершится.
сайт, что я упоминаю, что выпустил в первом абзаце, был переключен назад на SQLite, и это работает вполне гладко, как только я настроил свой код в нескольких местах.
* сайт больше не не доступен глоток>
Предпочтительный способ запуска программ при запуске OS X - создание демона launchd
, как описано здесь .
В mac os x вы также можете просто запустить "open program.jar" (или любую папку, '-a' для собственных приложений), и он откроется отдельно от терминала в любой среде по умолчанию. настройки, которые он использовал бы, если бы вы просто дважды щелкнули по нему.
Вы также можете добавить программу (или сценарий) к элементам входа пользователя через Системные настройки> Учетные записи> 'имя пользователя'> Элементы входа. Это полностью наведи и щелкни и не требует сценария оболочки
Сценарий оболочки будет примерно таким:
cd /directory/to/jar
java -jar Jar.jar
Или, может быть, вам действительно не нужно писать Jar.jar, только Jar. Я не совсем помню.