Метод Mutator в Java

В английском словаре Mutator означает иметь новую форму. Итак, Mutator, хотя и не найден в английском словаре, означает нечто, вызывающее изменение в новую форму. Частная переменная — это поле или свойство класса в Java. В Java нет предопределенного метода, называемого Mutator. Вместо этого Mutator — это метод в классе, и этот метод предназначен для изменения значения частной переменной класса. По соглашению программист должен начинать имя метода с «set». Таким образом, метод может быть чем-то вроде setAge(), setPrice(), setName() и т. д.

 

Разница между частной и общедоступной переменной

Закрытая переменная видна только членам (свойствам и методам) внутри определения класса. Его нельзя увидеть кодом вне определения класса. С другой стороны, общедоступная переменная может быть видна кодом вне определения класса. Код вне класса может просто изменить общедоступную переменную класса, присвоив новое значение, используя имя класса, если метод является статическим, или используя имя объекта, если метод не является статическим. С общедоступной переменной смысла мутации на самом деле нет. Но когда класс изменяет свое собственное значение, которое не может быть изменено извне, это называется трансформацией, в которой лучше понимается мутация.

 

Иллюстрация Mutator

Не каждому классу нужен Mutator. Однако, когда Mutator необходим для частной переменной (свойства), метод Mutatorа, который является членом класса, должен начинаться с «set». Затем программист определяет метод Mutatorа.

Любой объект в магазине может быть определен классом. Например, хорошая чашка в магазине может быть определена классом. Как минимум, класс будет иметь свойство, которое является ценой чашки, метод Mutatorа и метод доступа. Метод доступа — это метод чтения значения свойства. По соглашению метод доступа должен начинаться с «get». В данном случае это будет getPrice(). Пусть свойство с названием price будет частным. Если цена является общедоступной, то нет необходимости в Mutatorе и аксессоре, так как значение может быть установлено или получено (прочитано) публично.

Следующее определение класса предназначено для чашки (добавлено дополнительное свойство (поле) для валюты):

    class Cup {

        private double price = 2.0;

        private Character currency = '$';

        public void setPrice(Double dbl) {

            price = dbl;

        }

        public double getPrice() {

            return price;

        }

    }

 

Mutator setPrice() является общедоступным, поэтому к нему можно получить доступ из кода вне класса. Сделать Mutator общедоступным не означает сделать общедоступным соответствующее свойство. Соответствующее свойство должно быть частным. У Mutatorа здесь есть аргумент dbl, который является новой ценой. При изменении рыночных условий меняется и цена в магазине. Если бы цена была общедоступной, не было бы необходимости в Mutatorе setPrice(), поскольку код вне класса мог бы изменить цену. Поскольку setPrice является членом класса, он может видеть значение цены частного свойства. Однако код вне класса не может видеть это свойство. Это по дизайну.

Аксессор getPrice() является общедоступным, поэтому к нему можно получить доступ из кода вне класса. У него нет аргументов. Если бы цена была общедоступной, не было бы необходимости в методе доступа getPrice(), поскольку код вне класса мог бы прочитать цену. Поскольку getPrice является членом класса, он может видеть значение цены частной собственности. Однако код вне класса не может видеть это свойство. Это по дизайну.

Mutator setCurrency() и метод доступа getCurrency() могут быть аналогичным образом написаны для закрытой переменной currency.

Следующий основной класс и основной метод получают доступ к частной переменной price, изменяют переменную, а затем снова обращаются к переменной; все это после создания экземпляра класса:

    public class TheClass {

        public static void main(String[] args) {

            Cup cup1 = new Cup();

            double firstPrice = cup1.getPrice();

            System.out.print(firstPrice); System.out.print(", ");



            cup1.setPrice(3.0);



            double secondPrice = cup1.getPrice();

            System.out.print(secondPrice);

            System.out.println();

        }

    }

 

Результат:

   2.0, 3.0

 

Первый сегмент кода в основном методе создает экземпляр объекта Cup (cup1) и получает доступ к цене частного свойства через методы доступа getPrice() и cup1. Затем он распечатывает эту первую цену с запятой и пробелом.

Второй сегмент кода представляет собой сегмент кода из одной строки. Он изменяет цену частной собственности с помощью Mutatorа setPrice() и cup1. Третий сегмент кода считывает и печатает новую цену.

 

Проверка

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

            boolean bl = dbl instanceof Double;

 

Оператор instance of возвращает true, если его левый операнд является экземпляром правого операнда; ложно в противном случае.

При проверке определение метода Mutatorа должно быть:

        public void setPrice(Double dbl) {

            if (dbl instanceof Double)

                price = dbl;

            else

                System.out.println("New Price could not be set!");

        }

 

То есть, если входной dbl имеет тип Double, то цена меняется. Если это не так, выдается сообщение об ошибке, и программа продолжает работу. Обратите внимание, что «d» для double в этом сегменте кода — это «D», а не «d».

Аналогичный код для проверки того, является ли валюта символом, можно записать следующим образом:

        public void setCurrency(Character ch) {

            if (ch instanceof Character)

                currency = '€';

            else

                System.out.println("New currency is not a character!");

        }

 

То есть, если ввод ch имеет тип Character, то валюта изменяется с $ на ‘€’. Если это не так, выдается сообщение об ошибке, и программа продолжает работу. Обратите внимание, что «c» для символа в этом сегменте кода — это «C», а не «c».

 

Заключение

В Java нет предопределенного метода в качестве Mutatorа. Mutator кодируется программистом. Mutator — это просто закодированный (общедоступный) метод, который изменяет приватное значение поля (свойства) класса. С другой стороны, метод доступа — это просто закодированный (общедоступный) метод, который считывает частное значение поля (свойства) класса.

Спасибо, что прочитали нашу статью. Оставьте комментарий о своих мыслях и прочитайте другие статьи, которые лучше всего соответствуют идеям, которые вы ищете.



2022-04-01T16:00:06
Java

Как получить размер базы данных Redis

Redis невероятно быстр, эффективен и надежен. Кроме того, это мощный инструмент, обеспечивающий механизм кэширования приложений. Это связано с тем, что он хранит данные в памяти, которая не требует обращения к диску.

Однако есть один недостаток. Redis хранит данные в памяти, что может привести к серьезным проблемам с производительностью для больших наборов данных.

Поэтому очень важно отслеживать размер базы данных, хранящейся в экземпляре Redis, и предпринимать необходимые действия.

В этой статье мы узнаем, как определить размер базы данных в Redis.

 

Управление и переключение баз данных Redis

Redis позволяет хранить данные в 16 логических базах данных. Каждой базе данных соответствует определенный индекс, начинающийся с индекса 0. Следовательно, первая база данных имеет индекс 0, а последняя база данных имеет индекс 15.

Каждая база данных изолирована, и изменения в одной базе данных не влияют на другие базы данных в вашем экземпляре.

По умолчанию Redis автоматически подключается к базе данных 0 при входе в систему.

# redis-cli



127.0.0.1:6379>

 

Чтобы переключиться на базу данных по определенному индексу, используйте команду SELECT, за которой следует индекс базы данных, к которому вы хотите получить доступ.

Например, чтобы переключиться на базу данных 10, мы можем сделать следующее:

127.0.0.1:6379> select 10



OK



127.0.0.1:6379[10]>

 

Обратите внимание, что номер вашей текущей выбранной базы данных указан в приглашении терминала. Это применимо только к базам данных выше индекса 0.

 

Массовая вставка данных Redis

Вы можете массово вставлять данные, используя режим конвейера Redis. Например, чтобы вставить файл ip_addresses.txt, используйте следующую команду:

cat ip_addresses.txt | redis-cli --pipe

 

Записи в файле имеют формат:

SET key "value"

Redis Получить размер базы данных

Чтобы получить размер базы данных в Redis, используйте команду DBSIZE. Это возвращает общее количество ключей, хранящихся в текущей выбранной базе данных.

Например:

127.0.0.1:6379> dbsize



(integer) 103

 

Предыдущая команда возвращает количество ключей в базе данных с индексом 0.

Еще одна команда, которую вы можете использовать для получения размера базы данных, — это команда info. Команда info возвращает информацию о вашем экземпляре Redis.

Чтобы отфильтровать размер базы данных, мы можем запросить раздел пространства ключей. Приведен следующий пример:

127.0.0.1:6379> info keyspace



# Keyspace



db0:keys=103,expires=0,avg_ttl=0

 

Команда должна возвращать количество ключей, среднее время жизни и количество ключей с истекающим сроком действия.

 

Заключение

В этой статье подробно описано, как управлять базами данных и переключать их в Redis. Мы также расскажем, как вставлять массовые данные в базу данных Redis и получать размер базы данных. Мы надеемся, что вы нашли эту статью полезной.



2022-04-01T15:53:22
Redis

Лучший способ обеспечить приватность в интернете

Жизнь людей тесно связана с цифровым пространством. С ростом популярности онлайн-шопинга, социальных сетей и в принципе удалённого оказания услуг, объём конфиденциальной информации в интернете стремительно растёт. Параллельно с ним развиваются и методы персонализации рекламы. Сбором информации о пользователях, для продажи, любят заниматься и сервисы частных сетей, поэтому рекомендуем браузеры с VPN по ссылке: https://top5vpn.ru/vpn-dlya-brauzera.

Сайты и веб-сервисы всё чаще внедряют технологии для пристального слежения за активностью пользователей, но что они делают с вашей личной информацией? Рассмотрим, как в 2022 году сохранить приватность в сети.

 

Частные виртуальные сети

VPN – лучший способ предотвратить утечку персональной информации в интернет. Если Вы решили использовать виртуальные частные сети, то помните, что он защитит только при работе через-интернет обозреватель, приложения для создания частной виртуальной сети затрагивают весь трафик, проходящий в обоих направлениях. VPN перенаправляет сетевой трафик с мессенджеров, браузеров, приложений для обмена файлами и прочих программ через удаленный сервер, где информация шифруется. VPN устанавливает защищенное соединение на компьютере, ноутбуке и мобильных устройствах, предотвращает утечку данных при работе в общественных Wi-Fi сетях.

Даже используемое IT-специалистами решение VPN в полной мере не предотвратит слежку и утечку персональной информации без комплексного подхода – объединения нескольких описанных в статье решений.

 

Что такое приватность

Под приватностью в цифровом пространстве понимают защиту информации и действий, совершаемых человеком в интернете, предотвращение использования полученных сведений против людей (шантаж, кража паролей, чтение переписки). Проблемы с ней остаются на протяжении всей истории развития компьютерных сетей. Поисковые системы, браузеры, онлайн-ресурсы, социальные сети и прочие сайты следят за пользователями.

С одной стороны, приватность в сети есть: близкие, соседи, начальник вряд ли получат доступ к вашим данным, с иной – есть поисковые системы, которые знают о вас порой больше, чем близкие. Возможность предотвратить утечки данных в сеть, запретить сайтам и поисковикам следить за вами есть.

 

Не авторизуйтесь

Для навигации в интернете, просмотра видео не обязательно входить в учётную запись браузера и поисковой системы. Без авторизации в аккаунте Google либо Яндекс не ведут историю поисковых запросов, посещённых пользователем сайтов. Для просмотра публикаций или видео в социальных сетях вход в аккаунт в Twitter, Instagram, на YouTube нужен не всегда.

 

Разрешения для приложений

Перестаньте авторизоваться на сайтах, в веб-приложениях, играх через социальные сети. Во время входа вы соглашаетесь предоставлять им частичный или полный доступ к содержимому профиля в Facebook, VK. В настройках соцсети отзовите разрешения для приложений, запретите доступ к профилю или ограничьте его для определённых типов данных.

 

Разрешения в браузере

Слежку предотвратит запрет на определение местоположения, автоматическое включение микрофона, веб-камеры, воспроизведение видео в браузере. Отключите сохранение отслеживающих cookie в браузере или автоматическую очистку при выходе из него (могут наблюдаться проблемы в работе сайтов) либо разрешите их использование для доверенных ресурсов.

 

Управление рекламой

Ограничьте набор данных, которые социальные сети и поисковики используют для таргетинга рекламных объявлений. В настройках соцсетей и профилях в Google / Яндекс можно отключить слежку за пользователем для персонализации объявлений. Идеальный вариант – после запрета персонализации объявлений установка браузерного расширения для блокировки рекламы (хотя бы назойливой).

 

Защита беспроводной сети

При работе в интернете через Wi-Fi защищайте соединение паролем, иначе любой подключившийся к беспроводной сети пользователь сможет перехватить ваши пароли, номера карточек и прочую информацию с помощью программы-сниффера.

 

Отдельная почта

Для регистрации на сайтах используйте один адрес электронной почты, для ведения деловой переписки, обмена файлами заведите вторую учётную запись. Её не привязывайте к аккаунтам, не используйте переадресацию, синхронизацию.

 

Tor

Браузер Tor – одно из лучших средств для обеспечения приватности в интернете. Он устанавливает защищённое соединение, скрывает IP-адрес, шифрует трафик, блокирует скрипты и куки, использует безопасную поисковую систему DuckDuckGo. Отследить вашу активность при работе в интернете через Tor Browser и перехватить какую-либо информацию смогут разве сотрудники спецслужб.

Недостатки решения:

  • Браузер не сохраняет большинство пользовательских настроек кроме паролей, расширений, закладок.
  • Создан на основе Firefox, а многие привыкли к Chrome.
  • Работает только на десктопной платформе.
  • Защищает только при навигации в браузере.



2022-03-31T17:23:05
Сети

Как включить сжатие с помощью Redis

Remote Dictionary Server, или сокращенно Redis, — это молниеносная база данных в памяти, которая хранит значения в парах ключ-значение. Она в основном используется в качестве механизма кэширования для таких баз данных, как базы данных SQL и документов.

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

По умолчанию Redis не обеспечивает сжатие любых хранимых данных. Следовательно, в приложении реализованы методы сжатия.

Давайте обсудим несколько методов, которые вы можете использовать для оптимизации производительности памяти в Redis.

 

Реализуйте алгоритм сжатия

Поскольку Redis не сжимает сохраненные значения, вы должны сделать это перед их сохранением. Существует несколько алгоритмов сжатия для сжатия строк перед их сохранением.

К таким алгоритмам относятся:

  1. Сжатие LZO — очень быстрое и обеспечивает более высокую скорость декомпрессии.
  2. LZ4 — эффективен по скорости и очень легко интегрируется в приложения.
  3. Snappy — высокая скорость сжатия/распаковки.

 

Используйте более короткие имена ключей

Хотя разработчикам следует отдавать предпочтение более описательным именам, а не коротким, использование памяти может быстро возрасти, если у вас есть обширная коллекция ключей в базе данных.

Всегда рассмотрите возможность использования коротких имен ключей для ваших данных ключ-значение, чтобы избежать этого.

Пример:

SET this_is_a_very_large_key_name value

 

Вместо этого вы можете использовать имя ключа:

SET l_key_name value

 

Это уменьшает количество символов, которые Redis хранит в вашей базе данных.

 

Сжать имена полей

То же самое можно сказать и об именах полей. И опять же, использование более короткого имени поля может сэкономить несколько байтов или килобайт вашей памяти.

Следовательно, рассмотрите возможность использования коротких имен полей для ваших данных Redis.

Пример показан ниже:

127.0.0.1:6379> HSET user_info id 1 firstname Maki lastname K country "India"

 

Здесь мы можем сэкономить немного памяти, рефакторинг имен полей следующим образом:

HSET user_info id 1 fname Maki lname country In

 

Это сжимает имена полей и значения.

 

Используйте список вместо хеша

Хэш состоит из имен полей и соответствующих значений. Хотя это не является серьезной проблемой, она может быть проблематичной, когда в игру вступают тысячи типов хэшей.

Чтобы решить эту проблему, вы можете выбрать список, как показано ниже:

HSET user_info id 1 fname Maki lname country In

 

Вы можете преобразовать приведенный выше хеш в список как:

LPUSH ["fname", "Maki", "lname", "K", "country", "In"]

Избегайте динамических скриптов Lua

Чтобы сэкономить еще больше памяти, избегайте использования динамических LUA-скриптов, вызывающих увеличение кэша. Чем больше скриптов вы загружаете, тем больше вы потребляете много памяти.

 

Включить сжатие списка

Как уже упоминалось, Redis не сжимает хранящиеся в нем значения. Сюда входят элементы внутри списка. Для значений из короткого списка это едва ли проблема. Однако для длинных списков может быть полезно включить сжатие.

В файле Redis.conf найдите строку:

sudo cat /etc/redis/redis.conf | grep list-compress

list-compress-depth 0 // change this value

 

Измените значение list-compress-depth на:

  1. 1 — сжимает все узлы списка, кроме головы и хвоста.
  2. 2 — никогда не сжимать голову или голову-> или хвост или хвост->пред.
  3. 3 – начать сжатие после head->next и tail->-prev

 

Обновите версию Redis

Еще один шаг, который вы можете предпринять, чтобы улучшить использование памяти на вашем сервере Redis, — это обновить версию Redis.

На момент написания этого руководства версия 4.0 (последняя) имела следующие функции.

  1. Он поддерживает смешанный формат RDB + AOF.
  2. Улучшение использования памяти и производительности.
  3. Введена новая команда памяти.
  4. Активная дефрагментация памяти.
  5. Более быстрое создание ключа кластера Redis.

 

Закрытие

В этой статье обсуждаются различные методы и приемы, которые можно использовать для оптимизации использования памяти в кластере Redis. Однако имейте в виду, что не все формы являются 100% гарантированными.



2022-03-31T15:19:10
Redis

Как установить Flask для Arch Linux

Flask — это серверная среда на основе Python, которая выступает в качестве ключевого компонента для разработки веб-приложений на основе Python. Flask — это легкий фреймворк, оснащенный встроенным сервером разработки и эффективной поддержкой отладки.

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

Благодаря последним достижениям в области вычислительной техники пользователи проявили интерес к системам на базе Linux. В сегодняшней статье мы покажем вам, как установить Flask на Arch Linux.

 

Предпосылки

Прежде чем углубляться в детали, у вас должен быть установлен Python на вашем Arch Linux. Приведенную здесь команду можно использовать для установки Python (если вы еще не установили).

$ sudo pacman -S python

 

Убедитесь, что установленная версия Python либо 3, либо выше 3.

$ python --version

 

Кроме того, вы также должны установить модуль виртуальной среды Python, чтобы создавать и использовать виртуальную среду Python. Для этого используйте следующую команду:

$ sudo pacman -S python-virualenv

 

Кроме того, вам может потребоваться установка pip, введя команду, указанную ниже:

$ sudo pacman -S python-pip

 

Как установить Flask для Arch Linux

В этом разделе перечислены различные шаги, которые необходимо выполнить для установки Flask.

Шаг 1: Создайте новый каталог, в котором будет создана виртуальная среда.

$ mkdir flaskpro

$ cd flaskpro

 

Шаг 2: Теперь создайте виртуальную среду с помощью venv (его установка показана в разделе «Предварительные требования»). Написанная здесь команда создаст виртуальную среду с именем «flaskenv» внутри каталога «flaskpro».

$ sudo python -m venv flaskenv

 

Чтобы проверить создание, выполните команду ls, и вы увидите, что «flaskenv» создан.

Шаг 3: Активируйте виртуальную среду, введя команду, написанную ниже.

$ source flaskenv/bin/activate

 

В выводе указано, что вы в настоящее время находитесь в виртуальной среде с именем «flaskenv».

Шаг 4: Теперь все готово для установки Flask в виртуальной среде с помощью команды, указанной ниже:

$ sudo pip install flask

 

Ну вот! Теперь вы можете разрабатывать веб-приложения с помощью Python.

Чтобы проверить, установлена ​​ли фляга или нет, вы можете проверить версию с помощью команды, указанной ниже:

$ flask --version

 

На выходе выводится версия Flask.

Более того, чтобы выйти из виртуального окружения, достаточно написать «deactivate» внутри виртуального окружения:

$ deactivate

 

При успешном выполнении команды сеанс виртуальной среды с именем «flaskenv» будет завершен, что также наблюдается в выводе.

 

Заключение

Платформа Flask позволяет создавать веб-приложения с использованием Python. Внутри среды Python можно установить Flask для работы над внутренним кодированием веб-приложений. В этой статье кратко показано, как можно установить среду Flask для Arch Linux. Помимо этого, вы также научитесь создавать и активировать виртуальную среду для использования среды flask в Arch Linux.



2022-03-31T11:11:40
ArchLinux

🌐 Как исправить распространенные ошибки веб-сервера Nginx

Nginx – очень популярный веб-сервер в наши дни.

В этой статье мы расскажем вам о некоторых распространенных ошибках при работе веб-сервера Nginx и возможных решениях.

Это не полный список.

Если вы все еще не можете устранить ошибку, попробовав предложенные решения, пожалуйста, проверьте логи сервера Nginx в каталоге /var/log/nginx/ и поищите в Google, чтобы отладить проблему. Читать