java- все статьи тега


Замеры производительности на Java с JMH

Практически каждому разработчику известна фраза, сказанная Дональдом Кнутом в 1974 году: “Преждевременная оптимизация — корень всех зол”. Но откуда мы должны узнать, что именно стоит оптимизировать? С тех пор вычислительные мощности многократно возросли. Но настрой на то, чтобы сосредоточиться на реальных проблемах, стоящих оптимизации, по-прежнем...

Жизненный цикл потока в Java

Эта статья направлена на объяснение различных состояний потока в мире Java. Если вы новичок в области многопоточного программирования, попробуйте сначала почитать про потоки что-нибудь базовое. Согласно Sun Microsystems, существует четыре состояния жизненного цикла потока Java. Вот они: New  —  поток находится в состоянии New, когда создается экзе...

Портируем решатель судоку с Java на WebAssembly

Мне давно хотелось приступить к изучению WebAssembly, но никак не находилось подходящего материала. Однако недавно я просматривал некоторые старые программы и вспомнил, что как-то написал решатель судоку, который отлично подходил для этого эксперимента. И я поставил цель: перенести эту программу в WASM и провести тестирование производительности. Р...

Функции Java 15: скрытые и запечатанные классы, сопоставление шаблонов и текстовые блоки

Java 15  —  это еще один функциональный релиз, таким будет и 16. Следующий LTS (релиз с долгосрочной поддержкой) запланирован как Java 17, и выйдет он в сентябре 2021 года. Этот релиз включает новое превью запечатанных (sealed) классов, а также вторую предварительную версию записей (records) и сопоставления шаблонов (pattern matching) для instance...

RxPermissions: простой способ управления разрешениями в Android M

Давайте узнаем, как можно с легкостью настроить управление потоком разрешений с помощью всего нескольких строк кода. С того времени, как в качестве меры безопасности был выпущен Android Marshmallow, существует процедура получения разрешений на доступ к конфиденциальным данным. Цель существования разрешений — защита конфиденциальности пользователя....

Java. Вложенные классы

Вложенный (иначе  —  внутренний) класс в объектно-ориентированных языках программирования  —  это такой класс,объявленный внутри другого класса. Это позволяет объединять логически связанные между собой классы и увеличивать таким образом инкапсуляцию, а заодно делать код более поддерживаемым и лаконичным. Далее рассмотрим четыре разновидности вложе...

Под покровом капустного листа: шаблон Декоратор

Я родилась в городке, расположенном на западном берегу реки Амур на Дальнем востоке России. Эта область известна своим влажным континентальным климатом, для которого характерны значительные сезонные перепады температур. Просто огромные перепады! Зимы были очень холодными. Иногда температура падала до -40℃.  Одним из моих самых ярких воспомина...

String, StringBuilder и StringBuffer: понимаете ли вы разницу?

Все разработчики имеют дело со словами и фразами в некоторых частях кода. String — это тип данных, используемый в программировании для представления текста. В Java есть три класса с именами String, StringBuilder и StringBuffer, где содержатся методы, написанные для операций над строками. Эти классы включены в пакет lang и импортируются в Java-код ...

Генерируем образы Docker с помощью Spring Boot

Почему контейнеры? В мире, где пользователи обращаются к приложениям, способным возвращать данные за считанные миллисекунды, есть единственный в своем роде инструмент, который любая компания стремится использовать для решения проблем, связанных с увеличением емкости запросов… Контейнеры. Независимо от того, пользуетесь ли вы Docker, Kubernetes или...

Фреймворк Executor в Java

Вплоть до Java 5 создавать потоки и управлять ими было возможно только на уровне приложения. Объекты Thread требуют значительного объема памяти. Таким образом, если постоянно создавать много таких объектов в крупномасштабном приложении, это приведет к существенным затратам памяти. Поэтому создание потоков и управление ими лучше отделить от остальн...

Учимся избегать null-значений в современном Java. Часть 2

  Предыдущая часть: Часть 1 В предыдущей статье мы разобрали, почему в некоторых случаях null оказывается необходимым злом, а также узнали, что есть правильные и ошибочные варианты его использования. В текущей же статье я расскажу, как наиболее безопасно работать с null-значениями и приведу некоторые варианты решений, используемых нами в про...

Учимся избегать null-значений в современном Java. Часть 1

Null. Правила использования В своем выступлении “Null References: The billion dollar mistake” (“Нулевые ссылки: ошибка на миллиард долларов”), Тони Хоар описывает реализацию нулевых ссылок в языках программирования ALGOL, что также по его словам стало ошибкой стоимостью в миллиард долларов. Такие авторитетные книги, как Clean Code: A Handbook of A...

Процессы vs потоки в Java

В вопросах, которые я прочитал, мы предлагаем использовать потоки над процессами, потому что потоки быстрее. Я решил пойти с потоками для моей программы, которая редактирует статьи в категории В Википедии. Программа получает список статей для редактирования,а затем делит статьи между 10 потоками. При этом я делаю 6-7 правок в минуту, и это такая же скорость, как если бы я не использовал потоки. Когда я запускаю несколько экземпляров моей программы и даю для каждого экземпляра категорию для обраб ...

LibGDX-заголовок диалога не подходит

Я успешно добавил свой собственный шрифт по умолчанию .файл json и он отображается, однако я получаю некоторые странные проблемы с размером. В частности, когда я пытаюсь создать диалог. Вот как это выглядит:игнорируйте тот факт, что это говорит "и"Как вы можете видеть, заголовок не подходит, и кнопка кажется немного большой... Вот как я создаю диалог: Dialog d = new Dialog("Error", RBResources.gameSkin); d.add(new Label("You cannot continue and empty game.", RBResources.gameSkin)); ...

явное приведение из суперкласса в подкласс

public class Animal { public void eat() {} } public class Dog extends Animal { public void eat() {} public void main(String[] args) { Animal animal = new Animal(); Dog dog = (Dog) animal; } } Присваивание Dog dog = (Dog) animal; не генерирует ошибку компиляции, но во время выполнения оно генерирует ClassCastException. Почему компилятор не может обнаружить эту ошибку? ...

Отключить некоторые пункты контекстного меню, если в TableView JavaFx выбрано несколько строк

Я новичок в JavaFx. Есть ли способ, которым я могу привязать элемент меню disable property к свойству выбора tableview. Итак, пункт меню получить отключить, если выбрано несколько строк? Я пытался mnuItem.disableProperty().bind(tblView.selectionModelProperty().isNull()); Но он отключается как для одиночного, так и для множественного выбора. Как отключить пункт меню в нескольких строках, выбранных в табличном представлении ? P.S. я знаю и пытался сделать это со слушателем, как показано ни ...

Hibernate: как использовать пользовательскую коллекцию @ Embeddables?

Я хочу использовать пользовательский тип коллекции для набора встраиваемых объектов. Как это сделать с помощью Hibernate 4.3.8 и Spring Boot, используя конфигурацию на основе Java? Мой встраиваемый выглядит так @Embeddable public class MyEmbeddable implements Entry<Object, Integer> { } И сущность, имеющая множество этого встраиваемого, выглядит следующим образом @Entity public class MyOtherClass { @ElementCollection(fetch = FetchType.EAGER) private Set<MyEmbeddable> em ...

Java Spring Mongo сортировка игнорировать вопрос случая

Я использую Spring-Data-mongodb, выполняя все виды запросов к MongoDB. При попытке выполнить paging & sort с ignore case я получаю исключение, Вот мой код: Sort.Order order = new Sort.Order(ascending? Sort.Direction.ASC: Sort.Direction.DESC, sortKey).ignoreCase(); Query query = new Query(filter).with(new PageRequest(page, size, new Sort(order))); return mongoTemplate.find(query, clazz,collection); Обратите внимание .Метод IgnoreCase() применяется к сортировке.объект order. За ...

Всегда ли HQL-запрос попадает в базу данных и получает результаты?

Я проходил через hibernate и ситуации, когда использовать Criteria vs HQL , и мое понимание заключается в том, что с Hibernate, каждый раз, когда мы запрашиваем базу данных либо по Criteria, либо по HQL в обоих случаях hibernate получит результирующий набор и помещается в память, а затем, когда мы снова вызовем этот запрос, данные будут извлечены из памяти, а не попали в эту базу данных, правильно ли мое понимание? Также, как вы можете видеть из комментариев к вопросу, упомянутому ниже, было пр ...

Когда поток простаивает?

Что мы подразумеваем под неработающим потоком? И когда это происходит? Контекст: ThreadPoolExecutor-он говорит, что даже если есть простой поток, если corePoolSize мал, создается новый поток ...