Forwarded from Библиотека питониста | Python, Django, Flask
🌐 Как работает GraphQL и чем он лучше RESTful API
GraphQL не следует путать с SQL — он не используется для прямых запросов к таблицам базы данных. GraphQL — это, скорее, формат или структура, которая задаёт контракт между клиентом и сервером API. Его можно рассматривать как спецификацию или новый стандарт API, похожий на REST, но более эффективный и гибкий.
В новой статье делаем детальный разбор преимуществ и недостатков GraphQL с примерами кода. Помогаем понять, стоит ли переходить на эту технологию в вашем проекте.
👉 Читать по этой ссылке
В новой статье делаем детальный разбор преимуществ и недостатков GraphQL с примерами кода. Помогаем понять, стоит ли переходить на эту технологию в вашем проекте.
👉 Читать по этой ссылке
👑🧟 Король спама: насколько сильно ты бесишь коллег в рабочих чатах
Признайся, ты тоже иногда отправляешь голосовые сообщения из маршрутки? Или может быть, ты тот самый человек, который пишет «Привет» и исчезает на час? Всего 10 вопросов, которые помогут понять, являешься ли ты мастером цифрового этикета или главным спамером офиса. Готов узнать правду?
👉 Пройти тест
Признайся, ты тоже иногда отправляешь голосовые сообщения из маршрутки? Или может быть, ты тот самый человек, который пишет «Привет» и исчезает на час? Всего 10 вопросов, которые помогут понять, являешься ли ты мастером цифрового этикета или главным спамером офиса. Готов узнать правду?
👉 Пройти тест
Задумывались ли вы, как одна небольшая опечатка в коде может привести к неожиданным последствиям?
Представьте, что ваше приложение внезапно начинает показывать даты, сдвинутые на год вперёд. Причина? Всего лишь одна заглавная буква вместо строчной.
Подробнее о том, как избежать подводных камней при работе с датой в статье.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Progbook.djvu | Книги для программистов
📚 Pragmatic Unit Testing in Java with JUnit (2024)
✍️ Автор: Jeff Langr
📃 Страниц: 512
В этом издании вы узнаете, как создавать лаконичные и удобные в обслуживании модульные тесты. Новые главы содержат примеры для тестирования общих концепций, а также рекомендации по использованию современных инструментов искусственного интеллекта в разработке и тестировании. Обновленные темы включают повышение качества тестов с помощью мнемоник разработки, увеличение рентабельности инвестиций за счет рефакторинга тестового и производственного кода, а также использование тестов для стимулирования разработки.
✍️ Автор: Jeff Langr
📃 Страниц: 512
В этом издании вы узнаете, как создавать лаконичные и удобные в обслуживании модульные тесты. Новые главы содержат примеры для тестирования общих концепций, а также рекомендации по использованию современных инструментов искусственного интеллекта в разработке и тестировании. Обновленные темы включают повышение качества тестов с помощью мнемоник разработки, увеличение рентабельности инвестиций за счет рефакторинга тестового и производственного кода, а также использование тестов для стимулирования разработки.
Новый год — время для новых начинаний!
Пока все строят планы на будущее, подумайте, что поможет вам двигаться вперёд в карьере. Мы знаем, что навыки в IT открывают огромные возможности — и мы готовы помочь вам начать!
🔹 Почему IT?
- Большинство компаний активно ищут специалистов.
- Вы можете работать из любой точки мира — с гибким графиком и интересными задачами.
- А ещё IT — это высокий доход и стремительный карьерный рост.
Возможно, именно сейчас тот момент, когда стоит инвестировать в себя и развить востребованные навыки. У нас есть конструктор курсов, с помощью которого вы сможете составить свой идеальный план обучения — под свои цели и интересы.
📚 Как это работает?
- Несколько программ по цене одной — выбирайте всё, что вам нужно.
- Бессрочный доступ — учитесь в своём ритме и когда удобно.
- Это выгодно — вы получаете навыки, которые помогут вам расти профессионально и зарабатывать больше.
А для тех, кто решит сделать шаг в будущее до конца года, у нас есть кое-что особенное… 🎁 Узнайте больше
Как выбрать свой путь?
Мы предлагаем несколько уникальных комбинаций курсов, которые помогут вам стать настоящим экспертом:
🔵 Математика для Data Science + Алгоритмы и структуры данных — для тех, кто хочет готовиться к собеседованиям в топовые компании.
🔵 Алгоритмы + ML — чтобы не просто решать задачи, а понимать, как работают современные технологии.
🔵 Frontend + ML — создавайте приложения и учитесь работать с нейросетями.
🔵 И другие комбинации для разных целей.
Новогодний подарок, который будет работать на вас весь год — это отличная идея! 🎁 Начните сейчас
Развивайтесь в IT — и будущее уже будет в ваших руках!
Пока все строят планы на будущее, подумайте, что поможет вам двигаться вперёд в карьере. Мы знаем, что навыки в IT открывают огромные возможности — и мы готовы помочь вам начать!
🔹 Почему IT?
- Большинство компаний активно ищут специалистов.
- Вы можете работать из любой точки мира — с гибким графиком и интересными задачами.
- А ещё IT — это высокий доход и стремительный карьерный рост.
Возможно, именно сейчас тот момент, когда стоит инвестировать в себя и развить востребованные навыки. У нас есть конструктор курсов, с помощью которого вы сможете составить свой идеальный план обучения — под свои цели и интересы.
📚 Как это работает?
- Несколько программ по цене одной — выбирайте всё, что вам нужно.
- Бессрочный доступ — учитесь в своём ритме и когда удобно.
- Это выгодно — вы получаете навыки, которые помогут вам расти профессионально и зарабатывать больше.
А для тех, кто решит сделать шаг в будущее до конца года, у нас есть кое-что особенное… 🎁 Узнайте больше
Как выбрать свой путь?
Мы предлагаем несколько уникальных комбинаций курсов, которые помогут вам стать настоящим экспертом:
🔵 Математика для Data Science + Алгоритмы и структуры данных — для тех, кто хочет готовиться к собеседованиям в топовые компании.
🔵 Алгоритмы + ML — чтобы не просто решать задачи, а понимать, как работают современные технологии.
🔵 Frontend + ML — создавайте приложения и учитесь работать с нейросетями.
🔵 И другие комбинации для разных целей.
Новогодний подарок, который будет работать на вас весь год — это отличная идея! 🎁 Начните сейчас
Развивайтесь в IT — и будущее уже будет в ваших руках!
Flyweight — это структурный паттерн, который позволяет экономить память за счёт повторного использования уже имеющихся объектов, разделяя их состояние на внутреннее и внешнее. Внутреннее состояние хранится в самом объекте и не зависит от контекста, а внешнее передаётся извне.
Использование:
🔹 Когда в системе требуется большое количество однотипных объектов, и это негативно влияет на использование памяти.
🔹 Когда можно разделить состояние объекта на неизменяемую (внутреннюю) и изменяемую (внешнюю) части.
🔹 Для оптимизации ресурсов в системах с высокой степенью повторения данных.
Преимущества:
Недостатки:
📌 Flyweight отлично подходит для оптимизации ресурсов в играх (например, представление графических объектов) или при работе с большими наборами данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
🌩 Что такое S3 и как его использовать в Java?
Amazon S3 (Simple Storage Service) — это облачное хранилище от AWS, которое позволяет безопасно сохранять и извлекать данные любого объёма и формата. S3 предоставляет масштабируемое решение для хранения файлов, данных резервного копирования, статического контента для веб-приложений и многого другого.
🔹 Ключевые особенности S3:
- Данные хранятся в виде объектов (файлов), которые организуются в бакеты.
- S3 легко интегрируется с приложениями благодаря API.
- Поддержка шифрования данных и управление доступом через IAM.
- От небольших проектов до огромных хранилищ данных.
- 99,999999999% (11 девяток!) долговечности данных.
🔹 Как начать работу с S3 в Java?
1️⃣ Подключите SDK:
Добавьте зависимость в ваш проект.
2️⃣ Настройте доступ:
Создайте учетные данные AWS (Access Key и Secret Key). Эти ключи позволяют вашему приложению взаимодействовать с S3.
3️⃣ Пример загрузки/выгрузки файла в/из S3:
💡 Где это пригодится?
- Хранение статического контента для веб-приложений.
- Бэкапы данных и журналов.
- Интеграция с микросервисами для обмена файлами.
- Хранение обучающих наборов данных для ML.
Amazon S3 (Simple Storage Service) — это облачное хранилище от AWS, которое позволяет безопасно сохранять и извлекать данные любого объёма и формата. S3 предоставляет масштабируемое решение для хранения файлов, данных резервного копирования, статического контента для веб-приложений и многого другого.
🔹 Ключевые особенности S3:
- Данные хранятся в виде объектов (файлов), которые организуются в бакеты.
- S3 легко интегрируется с приложениями благодаря API.
- Поддержка шифрования данных и управление доступом через IAM.
- От небольших проектов до огромных хранилищ данных.
- 99,999999999% (11 девяток!) долговечности данных.
🔹 Как начать работу с S3 в Java?
Добавьте зависимость в ваш проект.
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>s3</artifactId>
<version>{actualVersion}</version>
</dependency>
Создайте учетные данные AWS (Access Key и Secret Key). Эти ключи позволяют вашему приложению взаимодействовать с S3.
public class S3Example {
public static void main(String[] args) {
S3Client s3 = S3Client.create();
// Загрузка файла в S3
s3.putObject(
PutObjectRequest.builder()
.bucket("my-bucket-name")
.key("example.txt")
.build(),
Paths.get("path/to/local/file.txt")
);
System.out.println("Файл успешно загружен в S3");
// Выгрузка файла из S3
s3.getObject(
GetObjectRequest.builder()
.bucket("my-bucket-name")
.key("example.txt")
.build(),
Paths.get("path/to/downloaded/file.txt")
);
System.out.println("Файл успешно выгружен из S3");
}
}
- Хранение статического контента для веб-приложений.
- Бэкапы данных и журналов.
- Интеграция с микросервисами для обмена файлами.
- Хранение обучающих наборов данных для ML.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤️ IntelliJ IDEA
🔥 Vim/Emacs
👍🏼 Eclipse
⚡️ VS Code
😁 Notepad++
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Java jobs — вакансии для java-разработчиков
#дайджест #Javadevjob
Вакансии Java разработчиков уровня Junior
▪️ Программист Java (junior)
Гибрид (Челябинск), ЧЕЛЯБИНВЕСТБАНК
Подробнее
▪️ Java разработчик [Junior]
Офис (Омск), deeplay
Подробнее
Вакансии Java разработчиков уровня Middle
▪️ Java разработчик
Офис (Москва) / Удалёнка, ЛАНИТ
Подробнее
▪️ Java разработчик
Удалёнка (РФ), Sitronics Group
Подробнее
Вакансии Java разработчиков уровня Senior
▪️ Senior Java Developer
Удалёнка / Офис (Москва, Санкт-Петербург), Метр квадратный
Подробнее
▪️ Senior Java developer
Удалёнка (РФ), Газпромбанк
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии Java разработчиков уровня Junior
▪️ Программист Java (junior)
Гибрид (Челябинск), ЧЕЛЯБИНВЕСТБАНК
Подробнее
▪️ Java разработчик [Junior]
Офис (Омск), deeplay
Подробнее
Вакансии Java разработчиков уровня Middle
▪️ Java разработчик
Офис (Москва) / Удалёнка, ЛАНИТ
Подробнее
▪️ Java разработчик
Удалёнка (РФ), Sitronics Group
Подробнее
Вакансии Java разработчиков уровня Senior
▪️ Senior Java Developer
Удалёнка / Офис (Москва, Санкт-Петербург), Метр квадратный
Подробнее
▪️ Senior Java developer
Удалёнка (РФ), Газпромбанк
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Forwarded from Библиотека собеса по Java | вопросы с собеседований
— Дан массив целых чисел, необходимо найти подмассив с наибольшей суммой и вернуть эту сумму.
- Подмассив — это непрерывная последовательность элементов исходного массива.
- Требуется определить такую последовательность, сумма элементов которой максимальна.
- Эффективное решение задачи достигается с помощью алгоритма Кадане, который позволяет найти максимальную сумму подмассива за линейное время O(n).
Реализация на картинке 👆🏻
Please open Telegram to view this post
VIEW IN TELEGRAM
ForkJoinPool — это специализированный пул потоков в Java, предназначенный для выполнения задач, которые можно разделить на более мелкие подзадачи и объединить результаты их выполнения. Этот пул является частью пакета java.util.concurrent и основан на принципе разделяй и властвуй (divide and conquer).
ForkJoinPool позволяет эффективно выполнять параллельные вычисления, автоматически распределяя задачи между доступными потоками и оптимизируя их выполнение. Он используется для задач, которые могут быть:
- Рекурсивно разделены на подзадачи.
- Выполнены параллельно.
- Объединены в один итоговый результат.
🔹 Как работает?
Большая задача разбивается на несколько подзадач, каждая из которых может быть выполнена независимо.
Каждая подзадача отправляется в пул потоков для выполнения.
После выполнения подзадачи результаты объединяются для получения итогового значения.
🔹 Пример использования:
Для работы с ForkJoinPool используются два ключевых абстрактных класса:
- RecursiveTask<V> — для задач, которые возвращают результат.
- RecursiveAction — для задач, которые ничего не возвращают.
Пример: нахождение суммы чисел массива с помощью RecursiveTask:
class SumTask extends RecursiveTask<Integer> {
private int[] array;
private int start, end;
public SumTask(int[] array, int start, int end) {
this.array = array;
this.start = start;
this.end = end;
}
@Override
protected Integer compute() {
if (end - start <= 10) {
int sum = 0;
for (int i = start; i < end; i++) {
sum += array[i];
}
return sum;
} else {
int mid = (start + end) / 2;
SumTask leftTask = new SumTask(array, start, mid);
SumTask rightTask = new SumTask(array, mid, end);
leftTask.fork();
int rightResult = rightTask.compute();
int leftResult = leftTask.join();
return leftResult + rightResult;
}
}
}
public class ForkJoinExample {
public static void main(String[] args) {
ForkJoinPool forkJoinPool = new ForkJoinPool();
int[] array = new int[100];
for (int i = 0; i < array.length; i++) {
array[i] = i + 1;
}
SumTask task = new SumTask(array, 0, array.length);
int result = forkJoinPool.invoke(task);
System.out.println("Сумма: " + result);
}
}
🔹 Преимущества ForkJoinPool:
- Work-Stealing алгоритм:
Потоки берут задачи из очередей других потоков, если у них нет своей работы. Это минимизирует простои.
- Поддержка параллельных вычислений:
Упрощает разработку алгоритмов, которые можно разделить и выполнить параллельно.
- Автоматическая настройка потоков:
Количество потоков настраивается автоматически в зависимости от доступных процессорных ядер (Runtime.getRuntime().availableProcessors()).
🔹 Когда использовать?
- Для задач, которые можно рекурсивно разбить на подзадачи.
- Для вычислительных задач, таких как сортировка, поиск, суммирование, обработка больших данных.
- Когда требуется высокая производительность в многопоточной среде.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤️ Дома (удалёнка)
🔥 В офисе
👍🏼 Гибрид
⚡️ Коворкинг или кафе
😁 Другое (пишите в комментарии)
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Библиотека задач по Java | тесты, код, задания
Forwarded from Библиотека задач по Java | тесты, код, задания
Что будет результатом кода?
Anonymous Quiz
2%
0
50%
1
34%
2
10%
Ошибка компиляции
5%
RuntimeException
🦑👨💻 Программист в «Игре в кальмара»: каковы твои шансы выжить?
Ежедневно управляешь потоками, выстраиваешь архитектуру и пишешь идеальный код? Но каковы твои шансы, если код станет реальностью?
Остаться в живых или получить NPE? Все зависит от тебя!
📌 Пройти тест
Ежедневно управляешь потоками, выстраиваешь архитектуру и пишешь идеальный код? Но каковы твои шансы, если код станет реальностью?
Остаться в живых или получить NPE? Все зависит от тебя!
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉 Конечно, тесты – это основа качественного кода
🔥 Иногда пишу, но не всегда
👍🏼 Только если проект сложный
🌚 Никогда не пишу тесты
😁 Что такое тесты?
Please open Telegram to view this post
VIEW IN TELEGRAM
Вот интересные тренды java разработки этого года:
А Вы готовы ворваться в новый 2025 год?
Please open Telegram to view this post
VIEW IN TELEGRAM
Сертификат на обучение от Proglib Academy! Это крутой подарок для тех, кто интересуется IT, хочет освоить новую профессию
Почему наши курсы — хороший презент:
Сертификат оформляется за пару минут, и даже не нужно ломать голову над упаковкой.
Please open Telegram to view this post
VIEW IN TELEGRAM