
- Главная
- Каталог
- Интернет технологии
- Программирование
Программирование
Статьи о программировании, обучающие видео IT, книги.
Статистика канала
hdparm или smartctl, которые пришли из эпохи HDD/SATA, nvme-cli заточен под специфику протокола NVMe.
Что умеет:
🛠 Мониторинг здоровья: Детальный вывод SMART-логов, температура, ошибки, ресурс записи (TBW).
⚡ Управление пространствами: Создание, удаление и аттач Namespaces (разделение одного физического диска на логические).
🔒 Безопасная очистка: Выполнение команд Sanitize и Secure Erase (критично для compliance).
📦 Обновление прошивки: Заливка новой firmware без перезагрузки сервера (если поддерживается железом).
Шпаргалка популярных команд:
# Показать список всех NVMe устройств
nvme list
# Посмотреть SMART-лог (здоровье диска)
nvme smart-log /dev/nvme0
# Узнать детальную информацию о контроллере
nvme id-ctrl /dev/nvme0
# Отправить диск в глубокий сон (управление питанием)
nvme set-feature /dev/nvme0 -f 2 -v 2
{}
🔗 Репозиторий: https://github.com/linux-nvme/nvme-cli
#linux
top # запуск, Shift+P для сортировки по CPU, Shift+M по памяти q для выхода.{}
htop # аналогично top, но удобнее;{}
iostat -x 1 5 # расширенный вывод, интервал 1с, 5 итераций{}
(показывает %util — загрузку дисков, await — время отклика).
vmstat 1 5 # интервал 1с, 5 итераций{}
(показывает r/b — процессы в очереди/блоке, swpd — swap, si/so — swap in/out).
netstat -tuln # TCP/UDP listening порты
ss -tuln # аналог netstat
ss -tp 'state established' # активные TCP-соединения с процессами.{}
Эти утилиты — первый инструмент при любой диагностике проблем с производительностью. Не заменяют полноценные системы мониторинга, но дают мгновенную картину происходящего в системе.
#linux
.war файл, закинуть его в папку... 🤯
Spring Boot принес концепцию Fat JAR (Жирный JAR).
🍔 1. Fat JAR - "Всё своё ношу с собой"
Spring Boot упаковывает ваше приложение, все библиотеки (зависимости) и даже сам веб-сервер (Tomcat) в один единственный файл .jar.
Этот файл работает как .exe в Windows. Ему ничего не нужно, кроме установленной Java.
Как собрать?
В терминале (в папке проекта):
# Для Maven
./mvnw clean package
# Для Gradle
./gradlew build
{}
В папке target (или build/libs) появится файл myapp-0.0.1-SNAPSHOT.jar.
Как запустить?
Где угодно (на сервере, на ноутбуке друга), где есть Java:
java -jar myapp.0.0.1-SNAPSHOT.jar
{}
Всё! Сервер стартует.
🐳 2. Docker - "Работает везде"
JAR это хорошо. Но что, если на сервере стоит Java 11, а у вас Java 17? Или другая ОС? Начинается проблема "На моем компьютере работало!".
Docker решает это, упаковывая ваше приложение вместе с Java и операционной системой в Контейнер.
Пишем Dockerfile
Создайте файл без расширения с именем Dockerfile в корне проекта.
Вариант для новичков (Простой):
# 1. Берем базовый образ с Java 17 (легковесный Alpine Linux)
FROM eclipse-temurin:17-jre-alpine
# 2. Копируем наш JAR внутрь образа
# (Предварительно нужно сделать mvn package руками!)
COPY target/*.jar app.jar
# 3. Говорим, какую команду запустить при старте контейнера
ENTRYPOINT ["java", "-jar", "/app.jar"]
{}
Как запустить:
# 1. Собираем образ (Image)
docker build -t my-spring-app .
# 2. Запускаем контейнер
# -p 8080:8080 пробрасывает порт наружу
docker run -p 8080:8080 my-spring-app
{}
🏗 3. Multi-stage Build (Уровень Pro)
В варианте выше вам нужно сначала собрать JAR руками. Это неудобно для CI/CD.
В профессиональном Dockerfile мы делаем сборку внутри Docker.
# --- Этап 1: Сборка (Build) ---
FROM maven:3.8.5-openjdk-17 AS builder
WORKDIR /app
COPY . .
# Собираем JAR, пропуская тесты (для скорости)
RUN mvn clean package -DskipTests
# --- Этап 2: Запуск (Run) ---
# Берем чистый, маленький образ для запуска
FROM eclipse-temurin:17-jre-alpine
WORKDIR /app
# Копируем ТОЛЬКО готовый jar из первого этапа
COPY --from=builder /app/target/*.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
{}
Почему это круто? В финальном образе нет исходного кода и тяжелого Maven. Только Java и ваш JAR. Образ весит минимум, а собрать его можно одной командой docker build, даже если на компьютере вообще не установлена Java!
🔥 Итог
1. Maven/Gradle собирают код в один Fat JAR.
2. Dockerfile описывает среду для запуска.
3. Multi-stage build позволяет собирать и запускать приложение в изолированной среде, не засоряя систему.
#Docker #DevOps #Java
bool, int и еще один bool.
Математика проста: 1 байт + 4 байта + 1 байт = 6 байт.
Вы проверяете через sizeof и видите... 12 байт. 🤯
Куда делись еще 6 байт? Вы только что потеряли 50% памяти на "воздух".
Это называется Padding (Выравнивание).
⚙️ Как это работает?
Процессор не любит читать данные по произвольным адресам. Ему удобно читать кусками по 4 или 8 байт (слова). Чтобы int (4 байта) не "разломился" посередине двух слов, компилятор вставляет пустые байты-заглушки.
❌ Плохой пример (Bad Layout):
struct Bad {
bool a; // 1 байт
// ... 3 байта PADDING (воздух) ...
int b; // 4 байта (должен начинаться с кратного 4 адреса)
bool c; // 1 байт
// ... 3 байта PADDING (чтобы выровнять общий размер) ...
};
// Итог: 12 байт
{}
✅ Хороший пример (Good Layout):
Просто меняем порядок полей. Правило: "От больших к маленьким".
struct Good {
int b; // 4 байта
bool a; // 1 байт
bool c; // 1 байт
// ... 2 байта PADDING (добиваем до кратности 4) ...
};
// Итог: 8 байт
{}
📉 Почему это важно?
Кажется, что 4 байта ерунда. Но если у вас std::vector<Bad> на 1,000,000 элементов:
Bad: ~12 MB памяти.
Good: ~8 MB памяти.
Вы экономите 4 мегабайта просто переставив строчки местами! Плюс, более плотные данные лучше ложатся в кэш процессора (CPU Cache), что ускоряет обработку.
💡 Совет:
Объявляйте поля в порядке убывания их размера:
1. Указатели и double (8 байт)
2. int, float (4 байта)
3. short (2 байта)
4. bool, char (1 байт)
#cpp
Отзывы канала
всего 10 отзывов
- Добавлен: Сначала новые
- Добавлен: Сначала старые
- Оценка: По убыванию
- Оценка: По возрастанию
Каталог Телеграм-каналов для нативных размещений
Программирование — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 4.3K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 37.5, количество отзывов – 10, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 1958.04 ₽, а за 25 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий