Несколько дней назад зарелизилась новая версия Nginx — 1.13.10. Главная фича данного релиза — это нативная поддержка проксирования HTTP/2, и, как следствие, gRPC.
Рубрика «java» - 105
NGINX и gRPC теперь настоящие друзья
2018-03-25 в 22:26, admin, рубрики: grpc, java, nginx, protobuf, Программирование, Промышленное программированиеПрограмма JPoint: из жизни разработчика
2018-03-23 в 12:55, admin, рубрики: java, jpoint, jpoint2018, Блог компании JUG.ru GroupJPoint всегда славился хардкорными докладами. Которые, так уж получилось, в основном состоят из рекомендаций по написанию сборщиков мусора, компиляторов, и прочей жести, которую далеко не каждый может применить в повседневной жизни.
Но дело в том, что многим перформанс не интересен. Существует ещё множество проблем, которые куда важней, чем ускорение приложения на 1%. Поэтому больше половины докладов на этой конференции представляют собой вполне разумный материал, который каждый может попробовать использовать у себя.
Обзор программы докладов по перформансу делался в отдельном посте, — поэтому в этой статье мы не выбрасываем их вообще, но описания будут максимально краткими.
За более подробной информацией — добро пожаловать под кат.
REST API Best Practices
2018-03-23 в 11:21, admin, рубрики: backend, java, rest api, spring, Spring MVC, ПрограммированиеПривет! Представляю вашему вниманию перевод статьи "REST API Best Practices" автора Krishna Srinivasan.
REST становится общим подходом для представления сервисов окружающему миру. Причина его популярности заключается в его простоте, легкости использования, доступе через HTTP и другие. Существует неправильное представление о том, что все данные, доступные через сеть, считаются REST, но это не так. В этой статье я собираюсь объяснить вам некоторые best practices, которые вы должны всегда помнить при реализации собственного REST приложения. Я бы хотел услышать ваш опыт в REST приложениях, поэтому если вы знаете best practies, которые не упомянуты в этой статье, пожалуйста, поделитесь с нами в комментариях.
Disclamer: все best practies основаны на моем личном опыте. Если вы имеете другое мнение, не стесняйтесь отправлять его мне на email, и мы обсудим его.
Здесь представлен список best practices, которые будут обсуждаться в этой статье:
1. Конечные точки в URL – имя существительное, не глагол
2. Множественное число
3. Документация
4. Версия вашего приложения
5. Пагинация
6. Использование SSL
7. HTTP методы
8. Эффективное использование кодов ответов HTTP
Читать полностью »
Учебник Thymeleaf: Глава 10. Приоритет атрибутов
2018-03-22 в 22:35, admin, рубрики: java, thymeleaf10 Приоритет атрибутов
Что происходит, когда вы пишете в одном теге более одного атрибута th:*? Например:
Читать полностью »
Учебник Thymeleaf: Глава 9. Локальные переменные
2018-03-22 в 22:18, admin, рубрики: java, thymeleaf9 Локальные переменные
Thymeleaf называет локальными переменными те переменные, которые определены для определенного фрагмента шаблона и доступны только для выполнения внутри этого фрагмента.
Читать полностью »
8 Макет шаблона / Template Layout
8.1 Включение фрагментов шаблонов
Определение и ссылка на фрагменты
В шаблоны мы часто включаем фрагменты из других шаблонов, такие как подвал, заголовок, меню…
Читать полностью »
Разбор перформансных задач с JBreak (часть 3)
2018-03-22 в 7:18, admin, рубрики: java, jit, JIT-компилятор, бенчмарки, Блог компании Контур, оптимизация, Программирование, тестирование производительностиПубликую предпоследнюю часть разбора с третьей задачей. До этого выходил разбор первой задачи и второй задачи.
Код к третьей задаче:
public static double compute(
double x1, double y1, double z1,
double x2, double y2, double z2) {
double x = y1 * z2 - z1 * y2;
double y = z1 * x2 - x1 * z2;
double z = x1 * y2 - y1 * x2;
return x * x + y * y + z * z;
}
public static double compute(
double x1, double y1, double z1,
double x2, double y2, double z2) {
Vector v1 = new Vector(x1, y1, z1);
Vector v2 = new Vector(x2, y2, z2);
return v1.crossProduct(v2).squared();
}
public final static class Vector {
private final double x, y, z;
public Vector(double x, double y, double z) {
this.x = x; this.y = y; this.z = z;
}
public double squared() {
return x * x + y * y + z * z;
}
public Vector crossProduct(Vector v) {
return new Vector(
y * v.z - z * v.y,
z * v.x - x * v.z,
x * v.y - y * v.x);
}
}
Условие (упрощённо):
Определить, какие методы быстрые, а какие — медленные (JRE 1.8.0_161).
Алгоритм Пинг-Понг или критика Обратной Польской Нотации
2018-03-22 в 6:47, admin, рубрики: java, Алгоритмы, алгоритмы обработки данныхДанная статья написана в силу возмущения тем, что в наших ВУЗах студентов простому разбору математических выражений обучают на основе как раз Обратной Польской Нотации (ОПН), что является откровенным извращением нормальной человеческой логики.
Источником описания ОПН будет описание из Лафоре Р.: Л29 Структуры данных и алгоритмы в Java. Классика Computers Science. 2-е изд. — СПб.: Питер, 2013. — 704 с, рекомендованное как наиболее популярное и адекватное по этому вопросу, впрочем как и по другим часто применяемым алгоритмам.
Ну то есть сравниваем разные алгоритмы с разной идеологией.
Читать полностью »
Java 10 General Availability
2018-03-21 в 10:32, admin, рубрики: java, java 10, java10, jdk 10, jdk10, jpoint, jpoint2018, openjdk, openjdk 10, openjdk10, Блог компании JUG.ru GroupGraal: как использовать новый JIT-компилятор JVM в реальной жизни
2018-03-21 в 4:37, admin, рубрики: graal, java, java 9, JIT-компилятор, Блог компании Петер-СервисНа главной сибирской Java-конференции JBreak-2018, проходившей в Новосибирске, Christian Thalinger из Twitter поделился практическим опытом использования Graal. Этот доклад мы слушали всей рабочей группой в полном составе. Вполне объяснимо, если учесть тот факт, что Graal по-прежнему считается смелым и потенциально опасным экспериментом (хотя очень похоже, что он войдёт в JDK 10). Было очень интересно узнать, как эта новинка проявляет себя в бою — да не где-нибудь, а в разработке такого уровня.
Кристиан Талингер десяток с лишним лет работает с виртуальными машинами Java, причём ключевой навык в его экспертизе — как раз JIT-компиляторы. Именно Кристиан внедрил Graal и стал инициатором его нынешнего (весьма, по словам Криса, активного) использования в продакшн-среде Twitter. И, если верить Талингеру, это нововведение сохраняет компании приличные деньги за счёт экономии железных ресурсов.
Читать полностью »