Производительность в RPS: Java vs PHP

Если рассматривать производительность в терминах RPS (Requests Per Second), то Java Spring Boot обычно выдерживает больше запросов в секунду, чем PHP Laravel, благодаря следующим причинам:

Читать далее
Рубрика: Web | Метки: , , , | Оставить комментарий

Java vs PHP безопасность

Java считается более безопасным, чем PHP, по нескольким причинам, связанным с архитектурой, механизмами исполнения и встроенными защитными механизмами. Рассмотрим ключевые технические аспекты:

1. Механизм исполнения и изоляция кода

  • Java: Код выполняется в виртуальной машине (JVM), которая обеспечивает песочницу (sandbox), контролируя доступ к ресурсам системы. Это предотвращает выполнение вредоносного кода и снижает вероятность атак типа RCE (Remote Code Execution).
  • PHP: Исполняется интерпретатором в окружении веб-сервера, часто в виде модулей (например, mod_php для Apache, php-fpm). Отсутствие встроенной изоляции делает его более уязвимым к атакам через исполняемые файлы.
Читать далее
Рубрика: Web | Оставить комментарий

Императивное и декларативное программирование

Императивный подход — это стиль программирования, при котором вы описываете, как добиться желаемого результата. Например, при переборе в цикле вы ищете определенное значение и работаете как-то далее с данными — вы прям конкретно описываете что нужно делать. Примеры языков: C, C++, Java.

Декларативный подход — описывает результат, которого необходимо достичь, при этом без указания шагов, необходимых для его получения. Другими словами, вы сразу указываете то что вам нужно. Например, при запросе SQL вы указываете что конкретно вам нужно, а СУБД уже сама разберется как предоставить вам этот результат. Примеры языков: SQL, HTML.

Рубрика: Основы | Метки: , , | Оставить комментарий

Наследование, Композиция, Агрегация

В объектно-ориентированных языках программирования существует три способа организации взаимодействия между классами (наследование, композиция, агрегация).

(1) Наследование — это когда класс-наследник имеет все поля и методы родительского класса, и, как правило, добавляет какой-то новый функционал или/и поля. Наследование описывается словом «является» (IS-A). Легковой автомобиль является автомобилем. Вполне естественно, если он будет его наследником.

Ассоциация – это когда один класс включает в себя другой класс в качестве одного из полей. Ассоциация описывается словом «имеет» (HAS-A). Автомобиль имеет двигатель. Вполне естественно, что он не будет являться наследником двигателя. (Ассоциация по сути говорит о взаимоотношении с объектом).

Читать далее
Рубрика: Основы | Оставить комментарий

10 способов оптимизации SQL запросов

  1. Значение, содержащееся в IN в инструкции SQL, не должно быть слишком большим
  2. В операторе SELECT нужно указывать имя полей
  3. Используйте LIMIT для ограничения количества записей
  4. Используйте индексы на фильтрующие поля запроса
  5. По надобности, используйте принудительное использование индекса (FORCE INDEX) для ускорения запроса
  6. Измените настройки используемой СУБД для увеличения используемых аппаратных ресурсов
  7. Во время запроса используйте нужный JOIN для более быстрого выполнения запроса
  8. Старайтесь не использовать подзапросы
  9. Используйте нормализацию и денормализацию структуры базы данных. Нормализация уменьшает избыточность данных, а денормализация позволяет уменьшить количество JOIN операций
  10. Разделите нагрузку между несколькими серверами, чтобы улучшить производительность и обеспечить масштабируемость. Используйте репликацию для распределения чтения между несколькими серверами, а также шардирование для распределения данных по нескольким базам данных
Рубрика: Советы | Метки: , , | Оставить комментарий