Измерить время исполнения запроса в MySQL с помощью PROFILES

Еще раз вернемся к теме измерения скорости исполнения чего-либо. Ранее я уже рассказал о том, как измерить скорость исполнения участка кода на C/C++, а сейчас перейду немножко в другую степь, а именно к базам данных. Расскажу и покажу, как легко измерить время исполнения запроса к базе не выходя из консоли MySQL и не написав ни одной строчки кода.

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

Включаем профилирование в MySQL

Первым делом нужно включить инструмент профилирования. Все команды выполняются напрямую из консоли mysql, напомню, как в нее войти.

mysql -u root -p

После этого включаем профилирование.

set profiling=1

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

читать далее «Измерить время исполнения запроса в MySQL с помощью PROFILES»

Пример простого клиент-серверного приложения на Java

«Клиент-сервер» это очень распространенная и логичная архитектура приложений. Мне кажется, что в наши дни редко можно встретить standalone-клиентское приложение. Поэтому я принял решение рассмотреть пример построения клиент-серверного приложения на Java без привязки к конкретной задаче. Сначала вкратце пробежимся по классовой структуре приложения, потом посмотрим на отдельную реализацию каждого класса. В самом конце статьи я дам ссылку на скачивание архива с готовой структурой приложения. Итак, начнем.

Основные компоненты приложения

Основными компонентами, естественно, являются непосредственно клиент и сервер. Однако, кроме них необходим еще пакет вспомогательных классов, которые, в простейшем случае, будут отвечать за обмен сообщениями между клиентом и сервером. В минимальной комплектации нужны такие классы: MessageReader/MessageWriter(считывает/записывает сообщение в поток на сокете), MessageFactory(содержит идентификаторы всех возможных сообщений), набор сообщений-запросов(Request) и набор сообщений-ответов(Response). Все они будут размещены в пакете «core», который должны иметь у себя и клиент и сервер.

Рассмотрим классовую структуру всего проекта, а потом перейдем к реализации.

Классовая структура клиент-серверного приложения

читать далее «Пример простого клиент-серверного приложения на Java»

Java — разница между extends и implements на примерах

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

Речь пойдет о наследовании в Java. В отличии от C++, где наследование могло быть множественным, здесь это не совсем так. Кроме того, привычный синтаксис через «:» заменился на целых два ключевых слова: extends и implements. Начну с первого.

Ключевое слово extends в Java

Действие ключевого слова в точности совпадает с его переводом, один класс расширяет другой, что является классическим наследованием. Правила видимости полей и методов сохранились: private доступны только в самом классе, protected в самом классе и во всех наследниках, к public методам и полям можно обращаться откуда угодно. Главное отличие от «сишного» наследования в том, что можно расширять только один класс. Я сейчас не буду рассуждать о том, насколько это удобно, скажу только, что со множественным наследованием в C++ постоянно творилась какая-то каша.

читать далее «Java — разница между extends и implements на примерах»

Как сделать кнопку «наверх» для сайта

Приветствую вас, друзья мои. Сейчас я освящу наверное один из самых популярных вопросов в области «быстрых рецептов» на html/css/js. А именно — создание кнопки «наверх», которая так часто встречается на самых различных ресурсах. И как обычно, пишу я это не просто так, а исходя из своего личного опыта, ибо вы можете заметить у меня такую кнопку в нижней правой части экрана.

Создание кнопки, как и любого активного элемента на веб-странице, делится на три основные части. Необходимо написать html код самой кнопки, навести марафет с помощью css стилей и оживить кнопку с помощью js кода. О каждом этапе в подробностях, поехали!

HTML код кнопки «наверх»

Начать логичнее всего непосредственно с самой кнопки. Существует огромное количество вариантов, но я расскажу о самом визуально красивом способе нарисовать стрелочку на веб-странице — с помощью набора иконок Font Awesome.

читать далее «Как сделать кнопку «наверх» для сайта»

Быстрая шпаргалка: «inconsistent use of tabs and spaces in indentation» в Python

Сидел на днях, разбирал программу на Python, любезно предоставленную одним моим товарищем, и первый раз в жизни столкнулся с такой ошибкой: «inconsistent use of tabs and spaces in indentation». Маркер дебагера упорно показывал в конец строки вывода, которую я дописал. Так как истинные программисты не гуглят сразу, а бьются над решением сами(шутка, только я такой), я начал грешить на себя. Мол совсем старый дурак разучился принты писать.

Но тут я решил учесть одну особенность — я открыл исходный код обычным двойным нажатием дабы очень быстро, не заморачиваясь ни о чем добавить вывод. Естественно, исходный код открылся в gedit. Я открыл его через Sublime Text и свершилось чудо, все сработало.

Дело вот в чем

читать далее «Быстрая шпаргалка: «inconsistent use of tabs and spaces in indentation» в Python»