Что выведет код?
#Tasks
import java.util.LinkedList;
import java.util.List;
public class Task031025 {
public static void main(String[] args) {
List<String> list = new LinkedList<>();
list.add("A");
list.add("B");
list.add(1, "C");
list.remove(0);
list.remove(1);
System.out.println(list);
}
}
#Tasks
🔥1
Продолжаем выбирать темы для разбора и голосовать за рассмотрение предложенных! 🤓
Голосуем за тему к рассмотрению в эти выходные!
Выбираем новую тему!
(можете предложить что-то из того, что предлагали на прошлой и позапрошлых неделях и что проиграло в голосовании!)
Не стесняемся!✌️
Голосуем за тему к рассмотрению в эти выходные!
Выбираем новую тему!
(можете предложить что-то из того, что предлагали на прошлой и позапрошлых неделях и что проиграло в голосовании!)
Не стесняемся!
Please open Telegram to view this post
VIEW IN TELEGRAM
Вопрос с собеседований
Что такое finally-блок?🤓
Ответ:
Блок finally в блоке try-catch выполняется всегда — независимо от того, произошло исключение или нет.
Обычно он используется для освобождения ресурсов: закрытия потоков, соединений.
Даже при return в try или catch блок finally будет вызван (кроме System.exit()).
#собеседование
Что такое finally-блок?
Ответ:
Обычно он используется для освобождения ресурсов: закрытия потоков, соединений.
Даже при return в try или catch блок finally будет вызван (кроме System.exit()).
#собеседование
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
Вита́лий Ла́заревич Ги́нзбург (21 сентября (4 октября) 1916, Москва — 8 ноября 2009, там же) — советский и российский физик-теоретик, доктор физико-математических наук (1942), профессор. Академик АН СССР (1966; член-корреспондент 1953). Лауреат Ленинской премии (1966), Сталинской премии первой степени (1953) и Нобелевской премии по физике (2003).
Джон Винсент Атанасов OCM (4 октября 1903 г. — 15 июня 1995 г.) — американский физик, создатель одного из первых электронных цифровых компьютеров (Atanasoff-Berry Computer, ABC), который применил двоичную арифметику и регенеративную память.
1957 — в СССР произведён запуск первого искусственного спутника Земли.
1959 — запущен космический аппарат «Луна-3», впервые сфотографировавший обратную сторону Луны.
#Biography #Birth_Date #Events #04Октября
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
С 27.09 по 03.10
Предыдущий пост(с 20.09 по 26.09)
Воскресный мотивационный пост:
Как я сейчас вижу ситуацию с рынком труда.
Выбранная голосованием тема:
Введение в GraphQL
Запись встреч/видео:
Не проводилось
Обучающие статьи:
Реактивное программирование
Знакомство с Project Reactor: Mono и Flux
Подписка и жизненный цикл в Reactor: onNext, onError, onComplete
Java:
Коллекции в Java:
Обзор Java Collections Framework. Интерфейсы Collection и Map. Иерархия коллекций. Отличия коллекций от массивов
Основные характеристики коллекций: время доступа (Big O), хранение уникальных элементов, упорядоченность и сортировка
(Практика): Начать проект «Библиотека».
Полезные статьи и видео:
О подводных камнях виртуальных потоков в Java
Юнит-тесты: чек-лист методик проектирования
Как и всегда, задачи можно найти под тегом - #Tasks, вопросы с собеседований - #собеседование
Предыдущий пост(с 20.09 по 26.09)
Воскресный мотивационный пост:
Как я сейчас вижу ситуацию с рынком труда.
Выбранная голосованием тема:
Введение в GraphQL
Запись встреч/видео:
Не проводилось
Обучающие статьи:
Реактивное программирование
Знакомство с Project Reactor: Mono и Flux
Подписка и жизненный цикл в Reactor: onNext, onError, onComplete
Java:
Коллекции в Java:
Обзор Java Collections Framework. Интерфейсы Collection и Map. Иерархия коллекций. Отличия коллекций от массивов
Основные характеристики коллекций: время доступа (Big O), хранение уникальных элементов, упорядоченность и сортировка
(Практика): Начать проект «Библиотека».
Полезные статьи и видео:
О подводных камнях виртуальных потоков в Java
Юнит-тесты: чек-лист методик проектирования
Как и всегда, задачи можно найти под тегом - #Tasks, вопросы с собеседований - #собеседование
Аспектно-ориентированное программирование в Java (AOP)
АОП — это подход к программированию, который позволяет отделить "сквозные" concerns (это слово значит "заботы" или "аспекты" — повторяющийся код, не связанный с основной логикой, например, логирование или проверка прав доступа) от основной бизнес-логики. В обычном объектно-ориентированном программировании такой код разбросан по всему приложению, что делает его сложным в поддержке. АОП позволяет "вплести" этот код в нужные места автоматически, без изменения основного кода.
Почему АОП полезно?
Представь, что в твоём приложении нужно логировать каждый вызов метода сервиса: записывать, кто вызвал, когда и с какими параметрами. Без АОП ты добавишь строки логирования в каждый метод — это загрязнит код и нарушит принцип "единственной ответственности". С АОП ты создаёшь отдельный "аспект" (модуль для сквозной логики), который автоматически применяется к нужным методам.
Плюсы:
Чистый код: Основная логика не смешивается с вспомогательной.
Легко изменять: Измени аспект — и всё приложение обновится.
Переиспользование: Один аспект для множества мест.
Примеры использования: Логирование, транзакции (атомарные операции с базой данных), кэширование, обработка ошибок, безопасность.
В Java АОП реализуется через библиотеки вроде AspectJ (полноценный язык АОП) или Spring AOP (упрощённая версия, интегрированная в Spring). Spring AOP проще для новичков, использует прокси (заместители объектов) и подходит для большинства задач. Если нужно что-то сложное, как аспекты на уровне полей, переходи к AspectJ, который Spring тоже поддерживает.
Настройка проекта в Spring
Давай создадим простой проект. Предполагаем, у тебя Spring Boot (фреймворк для быстрой разработки). Используй Spring Initializr для генерации.
Добавь зависимости в pom.xml (файл конфигурации сборки Maven):
Включи АОП в конфигурации. В основном классе приложения добавь аннотацию (метку):
Основные понятия АОП
Аспект: Класс с логикой, которая применяется сквозно. Обозначается @Aspect.
Совет (Advice): Что именно делать — до, после или вокруг метода. Например, @Before — перед вызовом.
Точка присоединения (Join Point): Место в коде, где аспект применяется, например, вызов метода.
Точка среза (Pointcut): Выражение, определяющее, где применять аспект, например, все методы в пакете сервисов.
Введение (Introduction): Добавление новых методов или интерфейсов (редко, но мощно).
Вплетение (Weaving): Процесс применения аспекта — в Spring это на этапе выполнения (runtime) через прокси.
#Java #middle #on_request #AOP
АОП — это подход к программированию, который позволяет отделить "сквозные" concerns (это слово значит "заботы" или "аспекты" — повторяющийся код, не связанный с основной логикой, например, логирование или проверка прав доступа) от основной бизнес-логики. В обычном объектно-ориентированном программировании такой код разбросан по всему приложению, что делает его сложным в поддержке. АОП позволяет "вплести" этот код в нужные места автоматически, без изменения основного кода.
Почему АОП полезно?
Представь, что в твоём приложении нужно логировать каждый вызов метода сервиса: записывать, кто вызвал, когда и с какими параметрами. Без АОП ты добавишь строки логирования в каждый метод — это загрязнит код и нарушит принцип "единственной ответственности". С АОП ты создаёшь отдельный "аспект" (модуль для сквозной логики), который автоматически применяется к нужным методам.
Плюсы:
Чистый код: Основная логика не смешивается с вспомогательной.
Легко изменять: Измени аспект — и всё приложение обновится.
Переиспользование: Один аспект для множества мест.
Примеры использования: Логирование, транзакции (атомарные операции с базой данных), кэширование, обработка ошибок, безопасность.
В Java АОП реализуется через библиотеки вроде AspectJ (полноценный язык АОП) или Spring AOP (упрощённая версия, интегрированная в Spring). Spring AOP проще для новичков, использует прокси (заместители объектов) и подходит для большинства задач. Если нужно что-то сложное, как аспекты на уровне полей, переходи к AspectJ, который Spring тоже поддерживает.
Настройка проекта в Spring
Давай создадим простой проект. Предполагаем, у тебя Spring Boot (фреймворк для быстрой разработки). Используй Spring Initializr для генерации.
Добавь зависимости в pom.xml (файл конфигурации сборки Maven):
xml<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
</dependencies>
spring-boot-starter-aop включает всё необходимое для АОП.
Включи АОП в конфигурации. В основном классе приложения добавь аннотацию (метку):
javaimport org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.EnableAspectJAutoProxy;
@SpringBootApplication
@EnableAspectJAutoProxy // Включает автоматическое создание прокси для аспектов
public class AopApplication {
public static void main(String[] args) {
SpringApplication.run(AopApplication.class, args);
}
}
Это говорит Spring: "Используй АОП с прокси".
Основные понятия АОП
Аспект: Класс с логикой, которая применяется сквозно. Обозначается @Aspect.
Совет (Advice): Что именно делать — до, после или вокруг метода. Например, @Before — перед вызовом.
Точка присоединения (Join Point): Место в коде, где аспект применяется, например, вызов метода.
Точка среза (Pointcut): Выражение, определяющее, где применять аспект, например, все методы в пакете сервисов.
Введение (Introduction): Добавление новых методов или интерфейсов (редко, но мощно).
Вплетение (Weaving): Процесс применения аспекта — в Spring это на этапе выполнения (runtime) через прокси.
#Java #middle #on_request #AOP
Пример: Аспект для логирования
Создадим сервис — класс с бизнес-логикой:
Теперь аспект для логирования:
Более сложный пример: Аспект вокруг метода
Для обработки ошибок или измерения времени используй @Around — он оборачивает метод.
Продвинутые советы для опытных разработчиков
Производительность: Прокси в Spring добавляют overhead (небольшую задержку). Для критичных мест используй compile-time weaving из AspectJ.
Порядок аспектов: Если несколько аспектов на одном методе, используй @Order(1) для приоритета (меньше число — выше приоритет).
Обработка исключений: В @Around лови Throwable, логируй и перебрасывай, чтобы не глотать ошибки.
Тестирование: Используй @EnableAspectJAutoProxy в тестах, моки (заменители) для аспектов с Mockito.
Интеграция с другими модулями: Spring Security или Spring Cache часто используют АОП внутри — изучи их исходники для идей.
Ограничения: Spring AOP работает только на методах бинов (объектов, управляемых Spring). Для статических методов или конструкторов нужен AspectJ.
#Java #middle #on_request #AOP
Создадим сервис — класс с бизнес-логикой:
javaimport org.springframework.stereotype.Service;
@Service // Обозначает, что это сервис, Spring создаст экземпляр
public class MyService {
public String doSomething(String input) {
return "Результат: " + input.toUpperCase(); // Простая логика
}
}
Теперь аспект для логирования:
javaimport org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.springframework.stereotype.Component;
@Aspect // Это аспект
@Component // Spring зарегистрирует его
public class LoggingAspect {
@Before("execution(* com.example.service.*.*(..))") // Pointcut: все методы в пакете service
public void logBefore(JoinPoint joinPoint) { // JoinPoint — информация о точке
System.out.println("Вызов метода: " + joinPoint.getSignature().getName());
System.out.println("Аргументы: " + Arrays.toString(joinPoint.getArgs()));
}
}
Здесь @Before значит "выполни перед методом". execution — выражение для pointcut: * значит любой возврат, com.example.service..(..) — любой класс в пакете service, любой метод с любыми аргументами.
Если вызвать myService.doSomething("hello"), в консоли увидишь лог перед результатом.
Более сложный пример: Аспект вокруг метода
Для обработки ошибок или измерения времени используй @Around — он оборачивает метод.
javaimport org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.stereotype.Component;
@Aspect
@Component
public class TimingAspect {
@Around("execution(* com.example.service.*.*(..))")
public Object measureTime(ProceedingJoinPoint joinPoint) throws Throwable {
long start = System.currentTimeMillis();
Object result = joinPoint.proceed(); // Выполняет оригинальный метод
long end = System.currentTimeMillis();
System.out.println("Время выполнения: " + (end - start) + " мс");
return result; // Возвращает результат метода
}
}
ProceedingJoinPoint позволяет контролировать вызов: можно пропустить метод, изменить аргументы или результат. Идеально для транзакций или кэша.
Продвинутые советы для опытных разработчиков
Производительность: Прокси в Spring добавляют overhead (небольшую задержку). Для критичных мест используй compile-time weaving из AspectJ.
Порядок аспектов: Если несколько аспектов на одном методе, используй @Order(1) для приоритета (меньше число — выше приоритет).
Обработка исключений: В @Around лови Throwable, логируй и перебрасывай, чтобы не глотать ошибки.
Тестирование: Используй @EnableAspectJAutoProxy в тестах, моки (заменители) для аспектов с Mockito.
Интеграция с другими модулями: Spring Security или Spring Cache часто используют АОП внутри — изучи их исходники для идей.
Ограничения: Spring AOP работает только на методах бинов (объектов, управляемых Spring). Для статических методов или конструкторов нужен AspectJ.
#Java #middle #on_request #AOP
👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Ро́берт Ха́тчингс Го́ддард (англ. Robert Hutchings Goddard, 5 октября 1882 года — 10 августа 1945 года) — американский учёный, один из пионеров современной ракетной техники, создатель первого жидкостного ракетного двигателя.
2021 — состоялся релиз OC Windows 11.
#Biography #Birth_Date #Events #05Октября
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
А сколько вы жмете от груди?
Хотите парадокс?😨
И сегодня (как понятно наверно из заголовка) я хочу поговорить с Вами о спорте и поддержании нашего мешка с костями в надлежащем состоянии.
Раньше, когда у меня практически не было свободного времени, я мечтал, что как только оно появится - я начну постоянно заниматься (возможно даже в спортзале) и поддерживать себя в форме.💪
Теперь когда я работаю на удаленке, заставить себя заниматься оказалось неожиданно сложной задачей.
Ведь хоть работа и удаленная - она все равно есть. А так же всегда есть очередное видео, по новой, неизученной технологии, которое уже долго ждет своего часа.
И по-любому надо делать выбор.
Что мы получаем от сидячей работы.
Тут наверно стоит предупредить молодых людей - вы не бессмертны.
Увы и ах🤷♀️
Поэтому, чем раньше вы задумаетесь о том в каком состоянии будет ваш организм к 40-50 годам, тем лучше (любители энергетиков привет!).
Но и тем кто сейчас вкатывается в IT стоит знать - если вы меняете активный, физический труд, на сидячий образ жизни - изменения в организме не заставят себя ждать (дружно машем геморрою и варикозу, ожирению и остаткам зрения😂 ).
И многие с пренебрежением относятся к этом, мол, "я вон худой как палка, какое ожирение, какой геморрой?"
В целом они правы, но уж точно поверьте - болячка от застоя организма найдется для каждого, если об этом не заботиться.
Что делать?
Двигаться.
Одно слово реально поможет вам не задумываться о негативных последствиях 12-часового, сидячего рабочего дня.
Как двигаться и куда - это зависит от индивидуального состояния организма.
Кто-то может 90 минут гонять по полю мяч, без особого напряжения, а кому-то 3-х километровая прогулка по парку кажется вызовом.
Поэтому по настоящему выбирать Вам.
Нужно помнить только одно - двигаться необходимо.
Цифры конечно отличаются, сколько в среднем, в зависимости от возраста и так далее. Я не собираюсь тут рассказывать КАК и СКОЛЬКО. Я просто хочу по дружески предупредить, а в остальном Вам поможет интернет, тренер или не дай бог, доктор.
Как себя заставить?
Тут вам пригодятся мои советы из предыдущих воскресных мотивационных статей по изучению Java.
Ведь это очень похоже.
Вы заставляете себя выйти из зоны комфорта, заставляете свое тело и мозг работать, чего они не хотят.
Самое главное - сделать первый шаг.
И в целом, эта статья - не попытка напугать. Я знаю множество людей которые столкнулись с проблемами при сидячем образе жизни. Добавить к этому вкусную и жирную пищу, алкоголь и сигареты - и вот кандидат к получению хронических заболеваний.
Ну и надеюсь, вы понимаете - ни одному бизнесу не нужен хронически больной работник, который регулярно ходит на больничные, не выполняет свою работу в полном объеме из-за регулярно плохого состояния и так далее.
И это относится не только к IT.
Поэтому - а сколько вы жмете от груди?💪
Берегите себя. На этом извольте откланяться - ваш @Oleborn
😎 Пишите вашем мнение в комментарии.
#мои_мысли
Хотите парадокс?
Чем больше у Вас свободного времени, тем больше интересных занятий которые пожирают все свободное время, которое вы хотели потратить на "полезные" дела.
И сегодня (как понятно наверно из заголовка) я хочу поговорить с Вами о спорте и поддержании нашего мешка с костями в надлежащем состоянии.
Раньше, когда у меня практически не было свободного времени, я мечтал, что как только оно появится - я начну постоянно заниматься (возможно даже в спортзале) и поддерживать себя в форме.
Теперь когда я работаю на удаленке, заставить себя заниматься оказалось неожиданно сложной задачей.
Ведь хоть работа и удаленная - она все равно есть. А так же всегда есть очередное видео, по новой, неизученной технологии, которое уже долго ждет своего часа.
И по-любому надо делать выбор.
Что мы получаем от сидячей работы.
Тут наверно стоит предупредить молодых людей - вы не бессмертны.
Увы и ах
Поэтому, чем раньше вы задумаетесь о том в каком состоянии будет ваш организм к 40-50 годам, тем лучше (любители энергетиков привет!).
Но и тем кто сейчас вкатывается в IT стоит знать - если вы меняете активный, физический труд, на сидячий образ жизни - изменения в организме не заставят себя ждать (дружно машем геморрою и варикозу, ожирению и остаткам зрения
И многие с пренебрежением относятся к этом, мол, "я вон худой как палка, какое ожирение, какой геморрой?"
В целом они правы, но уж точно поверьте - болячка от застоя организма найдется для каждого, если об этом не заботиться.
Что делать?
Двигаться.
Одно слово реально поможет вам не задумываться о негативных последствиях 12-часового, сидячего рабочего дня.
Как двигаться и куда - это зависит от индивидуального состояния организма.
Кто-то может 90 минут гонять по полю мяч, без особого напряжения, а кому-то 3-х километровая прогулка по парку кажется вызовом.
Поэтому по настоящему выбирать Вам.
Нужно помнить только одно - двигаться необходимо.
Цифры конечно отличаются, сколько в среднем, в зависимости от возраста и так далее. Я не собираюсь тут рассказывать КАК и СКОЛЬКО. Я просто хочу по дружески предупредить, а в остальном Вам поможет интернет, тренер или не дай бог, доктор.
Как себя заставить?
Тут вам пригодятся мои советы из предыдущих воскресных мотивационных статей по изучению Java.
Ведь это очень похоже.
Вы заставляете себя выйти из зоны комфорта, заставляете свое тело и мозг работать, чего они не хотят.
Самое главное - сделать первый шаг.
И в целом, эта статья - не попытка напугать. Я знаю множество людей которые столкнулись с проблемами при сидячем образе жизни. Добавить к этому вкусную и жирную пищу, алкоголь и сигареты - и вот кандидат к получению хронических заболеваний.
Ну и надеюсь, вы понимаете - ни одному бизнесу не нужен хронически больной работник, который регулярно ходит на больничные, не выполняет свою работу в полном объеме из-за регулярно плохого состояния и так далее.
И это относится не только к IT.
Поэтому - а сколько вы жмете от груди?
Берегите себя. На этом извольте откланяться - ваш @Oleborn
😎 Пишите вашем мнение в комментарии.
#мои_мысли
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5