❤️ 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
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
🤖🎓 SmartClass: как научить AI проверять домашки программистов
Автоматизация рутинных задач — один из главных трендов в IT, но как насчет проверки домашек? Представьте себе систему, которая не только оценивает код студентов, но и помогает им понять свои ошибки, словно опытный наставник. Звучит как фантастика? В статье рассказывается, как проект SmartClass воплощает эту идею в реальность, используя возможности AI. Узнайте, какие технологии лежат в основе, с какими трудностями сталкиваются разработчики и как это меняет обучение программированию.
📎 Подробнее о том, как AI помогает проверять домашние задания
Автоматизация рутинных задач — один из главных трендов в IT, но как насчет проверки домашек? Представьте себе систему, которая не только оценивает код студентов, но и помогает им понять свои ошибки, словно опытный наставник. Звучит как фантастика? В статье рассказывается, как проект SmartClass воплощает эту идею в реальность, используя возможности AI. Узнайте, какие технологии лежат в основе, с какими трудностями сталкиваются разработчики и как это меняет обучение программированию.
📎 Подробнее о том, как AI помогает проверять домашние задания
Forwarded from Библиотека собеса по Java | вопросы с собеседований
Существует 4 типа ссылок, которые определяют, как объект будет обрабатываться сборщиком мусора (Garbage Collector).
Это ссылки, которые используются по умолчанию.
String strongRef = new String("Strong Reference");
Объект, на который указывает сильная ссылка, никогда не будет удален сборщиком мусора, пока существует эта ссылка.
Используйте, когда объект нужен в течение всего времени выполнения.
Создаются с помощью класса SoftReference. Soft ссылка удерживает объект в памяти, пока в JVM достаточно свободной памяти. Если памяти не хватает, объект будет удален.
SoftReference<String> softRef = new SoftReference<>(new String("Soft Reference"));
String softObj = softRef.get();
Удобны для реализации кэшей. Например, если объект можно восстановить, но не хочется держать его в памяти постоянно.
Сборщик мусора удаляет объекты, на которые ссылаются мягкие ссылки, только в случае нехватки памяти.
Создаются с помощью класса WeakReference. Объект, на который ссылается слабая ссылка, удаляется сборщиком мусора, как только на него больше нет сильных или мягких ссылок.
WeakReference<String> weakRef = new WeakReference<>(new String("Weak Reference"));
String weakObj = weakRef.get();
Часто используются в структурах данных, таких как WeakHashMap, для предотвращения удержания ненужных объектов.
Удобны для создания ссылок на временные объекты.
Создаются с помощью класса PhantomReference. Эти ссылки используются исключительно для отслеживания, когда объект будет удален сборщиком мусора.
PhantomReference<String> phantomRef = new PhantomReference<>(new String("Phantom Reference"), new ReferenceQueue<>());
Метод get() у фантомной ссылки всегда возвращает null.
Объекты, на которые ссылаются фантомные ссылки, добавляются в ReferenceQueue, когда сборщик мусора их удаляет.
Please open Telegram to view this post
VIEW IN TELEGRAM
💻 Эффективное проектирование программных систем
Правильная архитектура программного обеспечения помогает создавать устойчивые и масштабируемые приложения, которые легко дорабатывать и поддерживать.
Наш интенсив «Архитектуры и шаблоны проектирования» научит вас строить программные системы без боли и стресса. Вы на практике освоите основные паттерны проектирования и прокачайте свои навыки архитектора программного обеспечения.
🎄Начните свой 2025 со скидкой 35% на все курсы. Это лучшее вложении уходящего года – https://proglib.io/w/cc21e069
Правильная архитектура программного обеспечения помогает создавать устойчивые и масштабируемые приложения, которые легко дорабатывать и поддерживать.
Наш интенсив «Архитектуры и шаблоны проектирования» научит вас строить программные системы без боли и стресса. Вы на практике освоите основные паттерны проектирования и прокачайте свои навыки архитектора программного обеспечения.
🎄Начните свой 2025 со скидкой 35% на все курсы. Это лучшее вложении уходящего года – https://proglib.io/w/cc21e069
Изначально SQLite идеально подходит для транзакционных операций (OLTP). Но аналитические запросы (OLAP), включающие сложные джойны, были её слабым местом. SQLite использует Nested Loop Join — простой, но неэффективный метод, где каждое совпадение требует "дорогих" операций в B-дереве.
Исследователи из Университета Висконсин-Мэдисон предложили использовать Bloom-фильтры — лёгкие и эффективные структуры данных, которые заранее отсекают ненужные строки для джойнов.
🔗 Читайте подробнее в статье
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Если вы считаете, что Java — это только про старые добрые корпоративные приложения, то вы сильно недооцениваете её развитие. Новые версии языка привносят невероятно полезные возможности, которые упрощают жизнь разработчикам: от работы с данными до оптимизации кода.
В статье от экспертов LANIT разбираются ключевые фишки Java 20 и обсуждается, почему сейчас — идеальное время, чтобы начать или продолжить изучение этого языка. Хотите оставаться на пике технологий и быть востребованным?
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Java jobs — вакансии для java-разработчиков
#дайджест #Javadevjob
Вакансии Java разработчиков уровня Junior
▪️ Младший разработчик
Удалёнка / Офис (Москва), Doczilla
Подробнее
▪️ Junior Java Developer
Офис (Минск), Программные решения плюс
Подробнее
Вакансии Java разработчиков уровня Middle
▪️ Middle Java developer (SoftWLC)
Удалёнка / Гибрид (Новосибирск), Eltex
Подробнее
▪️ Java Core разработчик (middle)
Удалёнка (РФ), ДИКСИ
Подробнее
Вакансии Java разработчиков уровня Senior
▪️ Senior Java Developer
Удалёнка, DatsTeam
Подробнее
▪️ Разработчик Java Senior (микросервисы), на территории РФ
Удалёнка (РФ), ИНГОССТРАХ БАНК
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет
Вакансии Java разработчиков уровня Junior
▪️ Младший разработчик
Удалёнка / Офис (Москва), Doczilla
Подробнее
▪️ Junior Java Developer
Офис (Минск), Программные решения плюс
Подробнее
Вакансии Java разработчиков уровня Middle
▪️ Middle Java developer (SoftWLC)
Удалёнка / Гибрид (Новосибирск), Eltex
Подробнее
▪️ Java Core разработчик (middle)
Удалёнка (РФ), ДИКСИ
Подробнее
Вакансии Java разработчиков уровня Senior
▪️ Senior Java Developer
Удалёнка, DatsTeam
Подробнее
▪️ Разработчик Java Senior (микросервисы), на территории РФ
Удалёнка (РФ), ИНГОССТРАХ БАНК
Подробнее
Понравились вакансии?
❤️ — да
🤔 — нет