Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6😁4
• программа в исполнении называется процессом, тогда как Поток является подмножеством процесса;
• процессы независимы, тогда как потоки являются подмножеством процесса.
• процессы имеют различное адресное пространство в памяти, в то время как потоки содержат общее адресное пространство;
• переключение контекста происходит быстрее между потоками по сравнению с процессами;
• межпроцессное взаимодействие медленнее и дороже, чем межпотоковое взаимодействие;
• любые изменения в родительском процессе не влияют на дочерний процесс, тогда как изменения в родительском потоке могут влиять на дочерний поток.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3👏1
Ответ -
Если используется метод Object.equals(), то для двух ссылок x и y метод вернет true тогда и только тогда, когда обе ссылки указывают на один и тот же объект (т.е. x == y возвращает true).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3👏2
Автоупаковка (autoboxing) - процесс автоматического преобразования из примитивного типа в соответствующий класс обертку.
Автораспаковка (unboxing) - делает ровно обратное к автоупаковке - преобразует класс обертку в примитив. А вот если окажется значение обертки null, то при распаковке будет выброшено исключение NullPointerException.
Пример Autoboxing
public void autoBoxing() {
Boolean booleanBox = true;
Integer intBox = 3;
// и так далее к другим типам
}Пример Unboxing
int intValue = new Integer(4);
double doubleValue = new Double(2.3);
char c = new Character((char) 3);
boolean b = Boolean.TRUE;
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3😁3🔥2
Ответ -
execute(Runnable command) определён в интерфейсе Executor и выполняет поданную задачу и ничего не возвращает.
submit() – перегруженный метод, определённый в интерфейсе ExecutorService. Способен принимать задачи типов Runnable и Callable и возвращать объект Future, который можно использовать для контроля и управления процессом выполнения, получения его результата.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3
JRE кратко - для работы. Java Runtime Environment (сокр. JRE) - минимальная реализация виртуальной машины, необходимая для исполнения Java-приложений, без компилятора и других средств разработки. Состоит из виртуальной машины - Java Virtual Machine и библиотеки Java-классов.
JDK кратко - для программирования. Java Development Kit (сокращенно JDK) - бесплатно распространяемый компанией Oracle Corporation (ранее Sun Microsystems) комплект разработчика приложений на языке Java, включающий в себя компилятор Java (javac), стандартные библиотеки классов Java, примеры, документацию, различные утилиты и исполнительную систему Java (JRE).
Java Virtual Machine (сокращенно Java VM, JVM) - виртуальная машина Java - основная часть исполняющей системы Java, так называемой Java Runtime Environment (JRE). Виртуальная машина Java интерпретирует Байт-код Java, предварительно созданный из исходного текста Java-программы компилятором Java (javac). JVM может также использоваться для выполнения программ, написанных на других языках программирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥3👍2
Ответ -
1. Сделать класс финальным;
2. Сделать все поля приватными и создать только геттеры к ним. Сеттеры, разумеется, не нужно;
3. Сделать все mutable поля final, чтобы установить значение можно было только один раз;
4. Инициализировать все поля через конструктор, выполняя глубокое копирование (то есть, копируя и сам объект, и его переменные, и переменные переменных, и так далее);
5. Клонировать объекты mutable переменных в геттерах, чтобы возвращать только копии значений, а не ссылки на актуальные объекты.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3
Настраивая размер пула потоков, важно избежать двух ошибок: слишком мало потоков (очередь на выполнение будет расти, потребляя много памяти) или слишком много потоков (замедление работы всей систему из-за частых переключений контекста).
Оптимальный размер пула потоков зависит от количества доступных процессоров и природы задач в рабочей очереди. На N-процессорной системе для рабочей очереди, которая будет выполнять исключительно задачи с ограничением по скорости вычислений, можно достигнуть максимального использования CPU с пулом потоков, в котором содержится N или N+1 поток. Для задач, которые могут ждать осуществления I/O (ввода - вывода) - например, задачи, считывающей HTTP-запрос из сокета – может понадобиться увеличение размера пула свыше количества доступных процессоров, потому, что не все потоки будут работать все время. Используя профилирование, можно оценить отношение времени ожидания (WT) ко времени обработки (ST) для типичного запроса. Если назвать это соотношение WT/ST, то для N-процессорной системе понадобится примерно N*(1 + WT/ST) потоков для полной загруженности процессоров.
Использование процессора – не единственный фактор, важный при настройке размера пула потоков. По мере возрастания пула потоков, можно столкнуться с ограничениями планировщика, доступной памяти, или других системных ресурсов, таких, как количество сокетов, дескрипторы открытого файла, или каналы связи базы данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥6❤2
В этом руководстве, в продолжение темы просмотра зависимостей, мы рассмотрим управление зависимостями в IntelliJ IDEA.
Мы рассмотрим различные способы добавления зависимостей в ваш проект, а также способы добавления, обновления и удаления зависимостей с помощью Package Search.
Rus https://habr.com/ru/post/710802/
Eng https://foojay.io/today/managing-dependencies-in-intellij-idea/
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥4
Please open Telegram to view this post
VIEW IN TELEGRAM
😁11🔥5
Ответ -
Реальный пример livelock, – когда два человека встречаются в узком коридоре и каждый, пытаясь быть вежливым, отходит в сторону, и так они бесконечно двигаются из стороны в сторону, абсолютно не продвигаясь в нужном им направлении.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍2🔥1🥰1
В области криптографии шифрование — это процесс превращения открытого текста или информации в шифротекст, или текст, который может быть расшифрован только предполагаемым получателем.
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍4🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4😁3
В данной статье описано, как реализовать метод LRU, и не вынуждать коллег вручную сбрасывать кэш там, где не требуется.
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥5
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4😁4🔥3
История развития построения веб-приложений на языке программирования Java с примерами их использования на временном промежутке от появления спецификации сервлетов до сегодняшнего дня.
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥7
Самый простой и базовый способ – с помощью метода Runtime.getRuntime().exec(). В качестве параметра ему передается строка системной команды. Опциональные можно передать рабочую директорию, и переменные окружения в виде массива строк "имя=значение". Если команде нужны аргументы, они передаются либо массивом, либо в той же строке команды через пробелы.
Рекомендуемый, и более управляемый способ – использование класса ProcessBuilder. Он же применяется внутри метода exec. Билдер дает, например, средства для использования в команде пайплайнов https://ru.wikipedia.org/wiki/Конвейер_(Unix) и редиректов ввода-вывода https://ru.wikipedia.org/wiki/Перенаправление_ввода-в...
В результате запуска команды создается объект класса Process. Его можно сконвертировать в более современный (Java 9+) и функциональный ProcessHandle. Через эти объекты идет работа с вводом-выводом процесса, его характеристиками и статусом.
Команда запускается в отдельном подпроцессе операционной системы. Это значит, что лозунг «Write once, run anywhere» перестает здесь работать – ваша программа становится платформо-зависимой. Обращение к ОС, а тем более выделение нового процесса обычно занимает немало ресурсов компьютера. Запуск внешних программ не считается плохой практикой, но всё-таки при возможности стоит его избегать.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3🔥3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥3😁3🥰2
Spring Framework позволяет сфокусироваться на бизнес-логике, а вся настройка инфраструктуры выполняется силами самого фреймворка.
🔗 Ссылка на статью
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2