Еще раз вернемся к теме измерения скорости исполнения чего-либо. Ранее я уже рассказал о том, как измерить скорость исполнения участка кода на C/C++, а сейчас перейду немножко в другую степь, а именно к базам данных. Расскажу и покажу, как легко измерить время исполнения запроса к базе не выходя из консоли MySQL и не написав ни одной строчки кода.
Такую чудесную возможность нам дает инструмент профилирования в MySQL. В этой заметке я не буду углубляться в тонкости его использования, просто пробегусь по верхам и покажу как вытащить основную информацию о запросах к базе данных. Поехали!
Включаем профилирование в MySQL
Первым делом нужно включить инструмент профилирования. Все команды выполняются напрямую из консоли mysql, напомню, как в нее войти.
mysql -u root -p
После этого включаем профилирование.
set profiling=1
С текущего момента информация о запросах будет логироваться, давайте ее получим.
читать далее «Измерить время исполнения запроса в MySQL с помощью PROFILES» →
Термин репликация используется для обозначения механизма синхронизации нескольких копий данных, что повышает сохранность информации, отказоустойчивость и производительность системы. Ярким примером служит репликация базы данных между двумя серверами.
Master-Slave репликация MySQL
В терминологии Master-Slave мастером является первичный сервер с базой данных, на нем производится запись в базу, но чтение распределяется между мастером и слейвом в зависимости от нагрузки на систему, что повышает отказоустойчивость и производительность. Кроме того, благодаря такому подходу, копия базы данных всегда под рукой и ее можно восстановить в случае отказа одного из серверов.
В каких ситуациях может понадобится slave-сервер? Например, когда поступает большой массив данных для записи в базу и master-сервер просто не успевает выполнять чтение и клиенту приходится ждать окончания записи, чего можно избежать благодаря slave-серверу.
Возможны ситуации, когда мастер-сервер выходит из строя, в этом случае слейв-сервер подхватывает все функции мастера и работает в одиночку до его восстановления. Клиент скорее всего ничего не заметит, и уж точно не будет час-два-три ждать пока починят мастера.
Репликацию настроить совсем не сложно, благо механизм заложен в MySQL с самого начала.
Настройка на Master сервере
читать далее «Настройка репликации Master-Slave в MySQL» →
«Клиент-сервер» это очень распространенная и логичная архитектура приложений. Мне кажется, что в наши дни редко можно встретить standalone-клиентское приложение. Поэтому я принял решение рассмотреть пример построения клиент-серверного приложения на Java без привязки к конкретной задаче. Сначала вкратце пробежимся по классовой структуре приложения, потом посмотрим на отдельную реализацию каждого класса. В самом конце статьи я дам ссылку на скачивание архива с готовой структурой приложения. Итак, начнем.
Основные компоненты приложения
Основными компонентами, естественно, являются непосредственно клиент и сервер. Однако, кроме них необходим еще пакет вспомогательных классов, которые, в простейшем случае, будут отвечать за обмен сообщениями между клиентом и сервером. В минимальной комплектации нужны такие классы: MessageReader/MessageWriter(считывает/записывает сообщение в поток на сокете), MessageFactory(содержит идентификаторы всех возможных сообщений), набор сообщений-запросов(Request) и набор сообщений-ответов(Response). Все они будут размещены в пакете «core», который должны иметь у себя и клиент и сервер.
Рассмотрим классовую структуру всего проекта, а потом перейдем к реализации.
Классовая структура клиент-серверного приложения
читать далее «Пример простого клиент-серверного приложения на Java» →
В прошлой своей инструкции я предложил скачать настроенный Zend Framework с установленной Doctrina на борту и добавил, что можно «легко и просто» скачать все с официального сайта и установить. А сейчас я решил, что пришло время написать подробнее про «легкую и простую» установку.
Устанавливать будем с помощью замечательного пакетного менеджера на PHP — Composer. Очень удобная штука, позволяет буквально в одну команду установить любые зависимости в проекте, подключать библиотеки и прочее. Zend Framework тоже поддерживает Composer и сейчас я опишу, как можно сравнительно легко установить любую версию фреймворка.
Установка Zend Framework
Прежде всего стоит определиться, какая версия фреймворка нужна. Выбрать и скачать нужную можно на официальном сайте, кстати, там же можно скачать различные модули.
читать далее «Zend Framework — установка с помощью Composer» →
После продолжительного программирования на C++ переходить на Java бывает болезненно. С одной стороны прославленный сборщик мусора, а с другой огромное множество принципиальных различий в подходах к программированию. Об одном таком отличии я сегодня расскажу подробнее.
Речь пойдет о наследовании в Java. В отличии от C++, где наследование могло быть множественным, здесь это не совсем так. Кроме того, привычный синтаксис через «:» заменился на целых два ключевых слова: extends и implements. Начну с первого.
Ключевое слово extends в Java
Действие ключевого слова в точности совпадает с его переводом, один класс расширяет другой, что является классическим наследованием. Правила видимости полей и методов сохранились: private доступны только в самом классе, protected в самом классе и во всех наследниках, к public методам и полям можно обращаться откуда угодно. Главное отличие от «сишного» наследования в том, что можно расширять только один класс. Я сейчас не буду рассуждать о том, насколько это удобно, скажу только, что со множественным наследованием в C++ постоянно творилась какая-то каша.
читать далее «Java — разница между extends и implements на примерах» →