Latest posts

Java | Фишки и трюки
19 Sept, 16:01
⌨️ Где и для чего используется модификатор abstract?Класс, помеченный модификатором abstract, называется абстрактным классом. Такие классы могут выступать только предками для других классов. Создавать экземпляры самого абстрактного класса не разрешается. При этом наследниками абстрактного класса могут быть как другие абстрактные классы, так и классы, допускающие создание объектов.Метод, помеченный ключевым словом abstract - абстрактный метод, т.е. метод, который не имеет реализации. Если в классе присутствует хотя бы один абстрактный метод, то весь класс должен быть объявлен абстрактным.Использование абстрактных классов и методов позволяет описать некий шаблон объекта, который должен быть реализован в других классах. В них же самих описывается лишь некое общее для всех потомков поведение.
Java | Фишки и трюки
19 Sept, 15:02
Чем умнее AI, тем актуальнее математика❗️В век нейросетей легко получить готовый ответ. Сложнее понять, откуда он взялся, и проверить его на правильность.И здесь не обойтись без понимания математики. Тот, кто понял, восстановит любой факт, адаптирует его под задачу и сможет направить AI в нужную сторону.Хороший запрос, проверку и интерпретацию делает не модель, а человек, который глубоко понимает предметную область. 📈@lav_math — канал о высшей математике и математической жизни.Канал про умение чувствовать математику и видеть взаимосвязи.Автор — выпускник СПбГУ, к.ф.-м.н., научный сотрудник РАН, преподаёт в СПбГУ и ИТМО.Что внутри: — Работа со всеми математическими дисциплинами; — Теория вероятностей и математическая статистика — один из основных профилей; — Онлайн-занятия и стримы на YouTube; — Контент для студентов технических направлений и тех, кто уже работает в IT,


Java | Фишки и трюки
18 Sept, 16:03
⌨️ void и VoidВ языке программирования Java ключевое слово void используется для указания, что метод не возвращает никакого значения. Метод с возвращаемым типом void выполняет определенные действия, но не производит результат, который можно было бы использовать в вызывающей части программы.Для void еще есть класс обёртка Void. Класс Void — это класс-заполнитель который нельзя создать и который хранит ссылку на объект Class, представляющий ключевое слово Java void.Этот класс можно использовать, например, в случаях, когда у вас есть обобщенный класс и вы хотите, чтобы метод ничего не возвращал (т.е. чтобы пользователь класса не ожидал ничего особенного оттуда получить):interface I<T> { T doStuff(); }class A implements I<Void> { @Override public Void doStuff() { // ничего другого вернуть нельзя return null; } }
Java | Фишки и трюки
18 Sept, 14:00
Хочешь спроектировать нормальную доменную модель, а вместо этого третий час пишешь геттеры и сеттеры для очередного DTO? Теперь это можно делегировать.CatCode - агент, который работает с проектом сам: пишет бойлерплейт, тесты, javadoc, гоняет сборку, пока ты занят чем-то более интересным. Доступны все топовые модели:😒 Claude Opus 5 🤖 GPT-6 Astra 😐 Grok 4.6 и многие другие.Умный свитчер экономит токены - рутина уйдёт дешёвой модели, сложные задачи - нейросети покруче. Один лимит дешевле зоопарка отдельных подписок - всего 900 рублей в месяц.Оплата картой РФ или СБП, работает без VPN. Первые задачи бесплатно, просто зарегистрируйся и попробуй.Делегируй рутину уже сегодня: catcode.dev


Java | Фишки и трюки
17 Sept, 15:20
⌨️ Что такое generics?Generics - это технический термин, обозначающий набор свойств языка позволяющих определять и использовать обобщенные типы и методы. Обобщенные типы или методы отличаются от обычных тем, что имеют типизированные параметры.Примером использования обобщенных типов может служить Java Collection Framework. Так, класс LinkedList<E> - типичный обобщенный тип. Он содержит параметр E, который представляет тип элементов, которые будут храниться в коллекции. Создание объектов обобщенных типов происходит посредством замены параметризированных типов реальными типами данных. Вместо того, чтобы просто использовать LinkedList, ничего не говоря о типе элемента в списке, предлагается использовать точное указание типа LinkedList<String>, LinkedList<Integer> и т.п.
Java | Фишки и трюки
17 Sept, 12:03
⌨️ Почему char[] предпочтительнее String для хранения пароля?С момента создания строка остаётся в пуле, до тех пор, пока не будет удалена сборщиком мусора. Поэтому, даже после окончания использования пароля, он некоторое время продолжает оставаться доступным в памяти и способа избежать этого не существует. Это представляет определённый риск для безопасности, поскольку кто-либо, имеющий доступ к памяти сможет найти пароль в виде текста. В случае использования массива символов для хранения пароля имеется возможность очистить его сразу по окончанию работы с паролем, позволяя избежать риска безопасности, свойственного строке.
Java | Фишки и трюки
17 Sept, 09:47
Сезон поиска работы только стартанул, а тут такие шишки: СТО, IT-директора и техлиды сами пришли и разместили вакансии.И тут можно даже написать руководителям напрямую:→ CTO Альфа-Банка Кирилл Сафаров ищет руководителя портфеля цифровых продуктов на MLM-проект «Свой в Альфе»;→ IT-директор Сергей Чернуха из «Филип Моррис Интернэшнл» в России в поиске сразу двух управляющих: IT-решениями для бизнеса и IT-инфраструктурой;→ Руководитель направления инженерии и анализа данных в Контуре Юлия Лунёва приглашает продуктового аналитика-сеньора в направление веб-сервисов;→ Техлид команды тестирования в Альфа-Банкее Егор Шохин ищет автотестировщика на C# уровня мидл+;→ CTO МТС Банка Кирилл Золотарев ищет технического лидера в команду платежей;→ Коммерческий директор Skillaz Андрей Синякин опубликовал вакансию директора по продукту




Java | Фишки и трюки
15 Sept, 10:21
Метод Arrays.fill() для инициализации массиваКласс java.util.Arrays имеет несколько методов с именем fill(), которые принимают разные типы аргументов и заполняют весь массив одним и тем же значением: long array[] = new long[5]; Arrays.fill(array, 30); У метода также есть несколько альтернатив, которые устанавливают диапазон массива в определенное значение: int array[] = new int[5]; Arrays.fill(array, 0, 3, -50); Обратите внимание, что метод принимает массив, индекс первого элемента, индекс последнего элемента (не включительно) и значение.
Java | Фишки и трюки
14 Sept, 09:16
⌨️ Чем абстрактный класс отличается от интерфейса? В каких случаях следует использовать абстрактный класс, а в каких интерфейс?В Java абстрактный класс и интерфейс представляют два различных механизма для достижения абстракции и обеспечения множественного наследования. Вот основные различия между ними:1️⃣ Абстрактный класс (Abstract Class):👉 Может содержать как абстрактные методы (методы без тела), так и обычные методы с реализацией. 👉 Может иметь переменные экземпляра (поля). 👉 Может содержать конструкторы. 👉 Поддерживает одиночное наследование: подкласс можно наследовать только от одного абстрактного класса.abstract class Animal { String name;abstract void makeSound();void eat() { System.out.println(name + " is eating."); } }
Java | Фишки и трюки
13 Sept, 08:37
Методы и конструкторы в enumПеречисления (enum) — это классы Java, определяющие наборы констант. Самый простой enum выглядит так:public enum Vehicle { CAR, BUS, BICYCLE, SCOOTER }Но на самом деле, enum в Java обладают гораздо более широким функционалом. Они поддерживают поля, методы, интерфейсы и т.д. Они также Comparable и Serializable и могут имплементировать все методы объекта. Для наглядности давайте создадим enum Animal и присвоим каждому элементу цвет:public enum Animal { DOG("black"), CAT("white"), RAT("gray");private final String color; Animal(String color){ this.color = color; } public String getColor(){ return color;
Java | Фишки и трюки
8 Sept, 08:14
JSON – невероятно удобный и полезный формат для хранения и обмена данными. Java полностью поддерживает его.Сериализовать данные можно так:JSONObject author = new JSONObject(); author.put("name", "J. K. Rowling"); author.put("numberOfBooks", 22);JSONArray books = new JSONArray(); books.put("Harry Potter and the Philosopher's Stone"); books.put("Harry Potter and the Chamber of Secrets"); books.put("Harry Potter and the Prisoner of Azkaban");author.put("books", books); System.out.print(author);Получится вот такая JSON-строка:{"books":["Harry Potter and the Philosopher's Stone","Harry Potter and the Chamber of Secrets","Harry Potter and the Prisoner of Azkaban"],"name":"J. K. Rowling","numberOfBooks":22}
Java | Фишки и трюки
1 Sept, 09:22
⌨️ Фишка: Создание итератора для пользовательского класса.Код: import java.util.Iterator;public class CustomClass implements Iterable<String> { private String[] elements;public CustomClass(String[] elements) { this.elements = elements; }@Override public Iterator<String> iterator() { return new CustomIterator(); }private class CustomIterator implements Iterator<String> { private int index = 0;
Java | Фишки и трюки
31 Aug, 09:52
⌨️ Параллельное выполнение задач с использованием ExecutorServiceExecutorService - это интерфейс, который предоставляет удобный способ для управления параллельным выполнением задач. Он предоставляет пул потоков для выполнения задач и управляет их жизненным циклом:import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;public class Main { public static void main(String[] args) { // Создание пула потоков ExecutorService executor = Executors.newFixedThreadPool(5);// Подача задач на выполнение for (int i = 0; i < 10; i++) { executor.execute(new Task(i)); }// Остановка пула потоков после выполнения задач executor.shutdown(); }
Java | Фишки и трюки
30 Aug, 09:05
⌨️ Метод для глубокого копирования объектов. Это часто используется, когда нужно создать копию объекта, сохраняя его данные, но не связи с другими объектами.📌 Вот пример метода для глубокого копирования:import java.io.;public class DeepCopyExample { public static void main(String[] args) { Person person = new Person("John", 30); Person deepCopy = deepCopy(person);System.out.println("Original: " + person.getName() + ", " + person.getAge()); System.out.println("Deep copy: " + deepCopy.getName() + ", " + deepCopy.getAge()); }public static <T extends Serializable> T deepCopy(T object) { try { ByteArrayOutputStream byteOutputStream = new ByteArrayOutputStream(); ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteOutputStream); objectOutputStream.writeObject(object);
Java | Фишки и трюки
29 Aug, 14:05
⌨️ Использования анонимных классов:Анонимный класс - это класс без имени, который объявляется и создается внутри другого класса или метода. Он удобен, когда требуется определить класс, который будет использоваться только один раз, и нет необходимости создавать отдельный класс.public class Main { interface Greeting { void sayHello(); }public static void main(String[] args) { Greeting greeting = new Greeting() { // объявление и создание анонимного класса @Override public void sayHello() { System.out.println("Привет, мир!"); } };greeting.sayHello(); // вызов метода sayHello у анонимного класса } }
Java | Фишки и трюки
29 Aug, 09:36
⌨️ Использование класса java.time.Duration для рассчета разницы во времени между двумя моментами.Код для расчета разницы во времени:import java.time.Duration; import java.time.LocalDateTime;public class TimeDifferenceCalculator { public static void main(String[] args) { LocalDateTime startTime = LocalDateTime.of(2022, 1, 1, 10, 0, 0); LocalDateTime endTime = LocalDateTime.of(2022, 1, 1, 12, 30, 0);Duration duration = Duration.between(startTime, endTime);long hours = duration.toHours(); long minutes = duration.toMinutes() % 60; long seconds = duration.getSeconds() % 60;System.out.println("Time difference: " + hours + " hours, " + minutes + " minutes, " + seconds + " seconds."); }
Java | Фишки и трюки
25 Aug, 19:19
⌨️ Использование аннотации @FunctionalInterface для определения функциональных интерфейсов.Функциональные интерфейсы - это интерфейсы, которые содержат только один абстрактный метод и могут использоваться как типы данных для лямбда-выражений или методов высшего порядка.При использовании аннотации @FunctionalInterface вы указываете компилятору, что этот интерфейс должен содержать только один абстрактный метод, чтобы избежать возможных ошибок при использовании лямбда-выражений или ссылок на методы.Ниже приведен пример кода, демонстрирующий использование аннотации @FunctionalInterface:@FunctionalInterface interface Calculator { int calculate(int a, int b); }public class FunctionalInterfaceExample { public static void main(String[] args) { Calculator addition = (a, b) -> a + b; System.out.println("Результат сложения: " + addition.calculate(5, 3));
Java | Фишки и трюки
24 Aug, 15:40
⌨️ Использование методов default и static в интерфейсах. Эти методы позволяют добавлять конкретные реализации в интерфейсы, что делает их более гибкими и позволяет избежать некоторых проблем множественного наследования.Пример с default методом в интерфейсе:interface Greeter { void greet();// Default метод в интерфейсе default void greetWithExclamation() { System.out.println("Привет, мир!"); } }class EnglishGreeter implements Greeter { public void greet() { System.out.println("Hello, World!"); } }class RussianGreeter implements Greeter {
Java | Фишки и трюки
18 Aug, 17:27
⌨️ Использование java.util.stream.Collectors для обработки коллекцийКод:import java.util.List; import java.util.stream.Collectors;public class StreamCollectorsExample { public static void main(String[] args) { List<Integer> numbers = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);// Примеры использования Collectors // Преобразование элементов коллекции в строку String numbersAsString = numbers.stream() .map(Object::toString) .collect(Collectors.joining(", ")); System.out.println("Числа в виде строки: " + numbersAsString);// Получение среднего значения всех элементов коллекции double average = numbers.stream()
Java | Фишки и трюки
17 Aug, 13:52
⌨️ "Фабричный метод" (Factory Method).Этот паттерн позволяет создавать объекты без указания конкретных классов объектов. Вместо прямого создания объекта класса, создание объекта делегируется методу (фабричному методу), который может быть переопределен подклассом, чтобы изменить тип создаваемого объекта.Пример реализации:1️⃣Создадим интерфейс продукта, который будет производиться фабричным методом.interface Product { void use(); }2️⃣Создадим реализации продуктов.class ConcreteProductA implements Product { @Override public void use() { System.out.println("Using ConcreteProductA"); } }
Related Channels
Other channels in the same section of the catalogue.
