
⚡️ Заказывайте в AI-каталоге — получайте скидку!
5% скидка на размещения в каналах, которые подобрал AI. Промокод: TELEGA-AI
Подробнее

РегистрацияВойтиВойти
Скидка 3,5% на первые три заказа
Получите скидку на первые три заказа!
Зарегистрируйтесь и получите скидку 3,5% на первые рекламные кампании — промокод активен 7 дней.
21.9

Java | Фишки и трюки
5.0
25
Интернет технологии
659
14
Аудитория канала - начинающие или опытные Java программисты. Канал о разработке приложений на Java, в том числе написание бэкенд и web-приложений. Рассматриваются фишки и трюки при программировании на Java.
Поделиться
В избранное
Купить рекламу в этом канале
Формат:
keyboard_arrow_down
- 1/24
- 2/48
- 3/72
- 7 дней
- Репост
1 час в топе / 24 часа в ленте
Количество:
%keyboard_arrow_down
- 1
- 2
- 3
- 4
- 5
- 8
- 10
- 15
Стоимость публикации:
local_activity
2 237.76₽2 237.76₽local_mall
0.0%
Осталось по этой цене:0
Последние посты канала
👨💻Ищем Backend и ML разработчиков, удалёнка, платим много!
Специально для Вас, собираем лучшие вакансии. Только вакансии с прямыми контактами в Telegram!
👩💻 Java 👣 GoLang
👩💻 Python 🖼️ PHP
👩💻 Node.js 🤖 ML & Data Science
👩💻 C#
Подпишись чтобы не упустить свой шанс получить лучший оффер!
928
17:00
22.07.2025
⚡️ Static Initializer Hack в Java — выполняем код при загрузке класса
Java даёт способ выполнить код один раз, ещё до создания объекта. Это называется static initializer — и с ним можно делать настоящие фокусы 👇
🔁 Что это вообще такое
Когда JVM загружает класс — выполняются все static-блоки, даже если ты не создавал ни одного объекта.
Это можно использовать для:
🟢 регистрации классов
🟢 скрытой инициализации
🟢 запуска кода без
main()
🟢 взлома "одиночек" или подмены поведения
📦 Простой пример static-блока
public class Hello {
static {
System.out.println("Загрузка Hello");
}
public static void main(String[] args) {
System.out.println("main()");
}
}{}
➡️ Вывод:
Загрузка Hello
main(){}
🟢 Сначала сработал static-блок, потом вызвался main.
💣 Выполнение кода без main()
public class RunOnce {
static {
System.out.println("Код запустился без main()");
System.exit(0); // JVM завершится
}
}{}
🟢 При запуске RunOnce.class
— код выполнится, и main()
даже не потребуется.
🧠 Применение: регистрация классов
interface Plugin {
void run();
}
class Registry {
static List<Plugin> plugins = new ArrayList<>();
static void register(Plugin p) {
plugins.add(p);
}
}
public class PluginA implements Plugin {
static {
Registry.register(new PluginA());
}
public void run() {
System.out.println("Плагин A запущен");
}
}{}
🟢 Просто загрузив PluginA
, ты уже зарегистрировал его — без явного вызова конструктора или методов.
🧪 Хак с подменой поведения
class Evil {
static {
System.setSecurityManager(null); // отключаем защиту
}
}{}
🟢 Опасная штука — используется при обходе sandbox'а или во взломе.
Подгружаешь Evil.class
, и твой код внезапно без ограничений.
💬 Хочешь пост про Unsafe
, Objenesis
или про bytecode-инъекции? Пиши тему — сделаем с практикой.
🗣️ Запомни:Если ты понимаешь когда и зачем срабатывает static-блок — ты уже на шаг ближе к JVM-магию ☄️895
19:02
22.07.2025
imageИзображение не доступно для предпросмотра
Жара в IT! Теперь популярные языки программирования можно легко выучить по гайдам в картинках
Бесплатные инструменты, полезные ресурсы, а также советы и задачки. Выбирай нужное направление и учись не напрягаясь:
👩💻 Linux Ninja
🖥 CodHub | Курсы IT
📱 Python | Программирование
😷 Hacking | Кибербезопасность
⚙️ Webdev | Backend & Frontend
🖥 Программирование по мемам
829
10:00
23.07.2025
🧰 Маппинг Enum по String без if/switch: делаем Map
Классика: приходит строка
"ACTIVE"
— надо получить Status.ACTIVE
. Но вместо кучи if
или switch
— строим быстрый и красивый Map
-мэппинг, который работает за O(1) и не ломается при добавлении новых enum.
Вот как это сделать правильно 👇
🟢 Enum с кодом
public enum Status {
ACTIVE("active"),
BLOCKED("blocked"),
DELETED("deleted");
private final String code;
Status(String code) { this.code = code; }
public String getCode() { return code; }
}{}
➡️ Мы явно задали code
, который будет использоваться для маппинга (например, из JSON, БД или UI).
🟢 Создаём Map один раз
public class StatusMapper {
private static final Map<String, Status> CODE_MAP = Arrays.stream(Status.values())
.collect(Collectors.toMap(Status::getCode, Function.identity()));
public static Status fromCode(String code) {
return CODE_MAP.get(code);
}
}{}
➡️ При первом запуске строим Map<String, Status>
, где ключ — это status.getCode()
, а значение — сам enum.
🧪 Использование:
Status status = StatusMapper.fromCode("active");
System.out.println(status); // ACTIVE{}
➡️ Работает мгновенно и безопасно. Без цепочек if
, без null
, без ошибок при добавлении новых значений.
🛡 Добавим защиту от невалидных значений:
public static Status fromCode(String code) {
Status result = CODE_MAP.get(code);
if (result == null) {
throw new IllegalArgumentException("Unknown status: " + code);
}
return result;
}{}
➡️ Код теперь fail-fast. Любое неожиданное значение сразу бросит ошибку — удобно в API и при валидации.
🗣️ Запомни: Enum.name()
и Enum.toString()
— не для бизнес-логики. Маппинг через Map
— самый быстрый и читаемый способ.885
12:03
23.07.2025
imageИзображение не доступно для предпросмотра
Айтишники, это вам — в телеграм есть комьюнити по каждому направлению в IT
Там есть буквально всё: чаты для общения, тонны материала(книги, курсы, ресурсы и гайды), свежие новости и конечно же мемы
Выбирайте своё направление:
💩 Frontend 🐍 Python
🐧 Linux 👩💻 С/С++
👩💻 C# 🤔 Хакинг & ИБ
📱 GitHub 🖥 SQL
👩💻 Сисадмин 🤟 DevOps
⚙️ Backend 🖥 Data Science
🧑💻 Java 🐞 Тестирование
🖥 PM / PdM 👩💻 GameDev
🧑💻 Golang 👣 Rust
🧑💻 PHP 💻 WebDev
🖥 Моб. Dev 🖥Анали.(SA&BA)
👩💻 Дизайн 🖥 Нейросети
💛 1C 🤓 Книги IT
➡️ Сохраняйте в закладки
787
09:37
24.07.2025
🧨 Unsafe в Java: прямой доступ к памяти (и да — это реально работает)
Java — безопасный язык, пока ты не подключаешь
Unsafe
. Это внутренний API из JDK, который даёт доступ к памяти как в C: ты можешь читать, писать, аллоцировать и даже обойти конструкторы. Без всяких JVM-защит.
⛔ Не использовать в проде без необходимости. Но как концепт — огонь.
📦 Получаем доступ к Unsafe
(через костыль)
Field f = Unsafe.class.getDeclaredField("theUnsafe");
f.setAccessible(true);
Unsafe unsafe = (Unsafe) f.get(null);{}
➡️ Это приватное поле, поэтому нужен рефлекс. С Java 12 и выше понадобится --add-opens
, но в старых версиях работает напрямую.
💥 Аллокация памяти вручную
long address = unsafe.allocateMemory(8); // 8 байт
unsafe.putLong(address, 123456789L); // запись
long value = unsafe.getLong(address); // чтение
System.out.println(value); // 123456789
unsafe.freeMemory(address); // ручной free{}
➡️ Как malloc/free. Память вне кучи (off-heap), GC её не видит.
🧬 Доступ к полям объекта по смещению
class Demo {
private int secret = 42;
}
Demo d = new Demo();
Field field = Demo.class.getDeclaredField("secret");
long offset = unsafe.objectFieldOffset(field);
unsafe.putInt(d, offset, 99); // меняем приватное поле
System.out.println(unsafe.getInt(d, offset)); // 99{}
➡️ Меняем приватные поля БЕЗ сеттеров и даже без setAccessible.
🚫 Обход конструктора: создаём объект без new
class NoConstructor {
private NoConstructor() {
throw new RuntimeException("Don't call me");
}
}
NoConstructor obj = (NoConstructor) unsafe.allocateInstance(NoConstructor.class);
System.out.println(obj);{}
➡️ JVM не вызывает конструктор вообще. Объект появляется из воздуха.
🧠 Прямое управление массивами
int[] arr = new int[10];
long base = unsafe.arrayBaseOffset(int[].class);
int scale = unsafe.arrayIndexScale(int[].class);
unsafe.putInt(arr, base + scale * 5, 99); // пишем в arr[5]
System.out.println(arr[5]); // 99{}
➡️ Как pointer arithmetic в C. У тебя есть offset и шаг (scale).
✔️ Используй Unsafe
, чтобы:
🟢 делать off-heap кэш/пулы
🟢 изменять приватные данные в рантайме
🟢 писать кастомные структуры данных
🟢 встраивать C-подобные трюки в Java
🗣️ Запомни: Это выход за пределы JVM-санбокса. Но иногда он даёт то, что невозможно сделать иначе. Unsafe
— это как ядро Java-хакерства. У него огромная сила, но и риск.711
11:37
24.07.2025
close
С этим каналом часто покупают
Отзывы канала
keyboard_arrow_down
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
5.0
1 отзыва за 6 мес.
Превосходно (100%) За последние 6 мес
m
**rketing@****.academy
на сервисе с декабря 2024
01.04.202510:44
5
Оперативное размещение
Показать еще
Новинки в тематике
Лучшие в тематике
Статистика канала
Рейтинг
21.9
Оценка отзывов
5.0
Выполнено заявок
78
Подписчики:
7.5K
Просмотры на пост:
lock_outline
ER:
11.2%
Публикаций в день:
1.0
CPV
lock_outlineВыбрано
0
каналов на сумму:0.00₽
Подписчики:
0
Просмотры:
lock_outline
Перейти в корзинуКупить за:0.00₽
Комментарий