Холостые циклы в Java
Привет, сегодня поговорим о тонкостях реализации холостых циклов (холостого ожидания) в Java. Эта задача встречается нечасто: за девять с небольшим лет работы я столкнулся с ней лишь пару раз. Тем не менее, тема видится интересной и по ней есть что сказать, так что добро пожаловать!
👉@BookJava
Привет, сегодня поговорим о тонкостях реализации холостых циклов (холостого ожидания) в Java. Эта задача встречается нечасто: за девять с небольшим лет работы я столкнулся с ней лишь пару раз. Тем не менее, тема видится интересной и по ней есть что сказать, так что добро пожаловать!
👉@BookJava
👍4
Для чего служит Java KeyStore?
KeyStore и TrustStore – это хранилища криптографических публичных и приватных ключей и сертификатов. Обычно они представляются файлами формата
Для манипуляций над файлами хранилищ в JDK поставляется специальная утилита – keytool. Отдельные ключи разных типов добавляются в хранилище под заданными именами (
KeyStore и TrustStore устроены похоже, но служат разным целям. KeyStore хранит данные о нашем приложении, тогда как TrustStore – о других, которым мы доверяем.
По умолчанию не подключается никакой KeyStore. Подключить его можно параметрами
По умолчанию в приложении подключен один
Типичный пример использования – подключить TrustStore с самоподписанным SSL сертификатом, чтобы приложение могло ходить на определенный сайт по протоколу HTTPS, не проваливая проверку безопасности. Либо же подключить KeyStore с подлинным SSL сертификатом, чтобы приложение само работало как HTTPS-сервер.
#Безопасность
👉@BookJava
KeyStore и TrustStore – это хранилища криптографических публичных и приватных ключей и сертификатов. Обычно они представляются файлами формата
.jks
, .dks
, .p12
, и другими, в зависимости от типа хранилища.Для манипуляций над файлами хранилищ в JDK поставляется специальная утилита – keytool. Отдельные ключи разных типов добавляются в хранилище под заданными именами (
alias
). Еще этот файл называют базой данных сертификатов. Этот файл обычно защищен паролем.KeyStore и TrustStore устроены похоже, но служат разным целям. KeyStore хранит данные о нашем приложении, тогда как TrustStore – о других, которым мы доверяем.
По умолчанию не подключается никакой KeyStore. Подключить его можно параметрами
javax.net.ssl.keyStore
(расположение файла), javax.net.ssl.keyStoreType
(тип) и javax.net.ssl.keyStorePassword
(пароль). Добавочные можно загружать динамически, классом java.security.KeyStore
.По умолчанию в приложении подключен один
TrustStore
, файл jre/lib/security/cacerts
. Переопределить его можно параметрами JVM javax.net.ssl.trustStore
, javax.net.ssl.trustStorePassword
и javax.net.ssl.trustStorePassword
.Типичный пример использования – подключить TrustStore с самоподписанным SSL сертификатом, чтобы приложение могло ходить на определенный сайт по протоколу HTTPS, не проваливая проверку безопасности. Либо же подключить KeyStore с подлинным SSL сертификатом, чтобы приложение само работало как HTTPS-сервер.
#Безопасность
👉@BookJava
Wikipedia
Криптография
наука о конфиденциальности, целостности информации, аутентификации и шифровании
👍7
Перечислите методы класса java.lang.Object
Этот вопрос используется, как способ начать разговор – по большинству методов можно уйти в обсуждении далеко вглубь. В первую очередь важно запомнить сигнатуры – не зная ответов на вопросы по этим методам, можно будет хотя бы рассуждать отталкиваясь от них. Также полезно открыть исходник и внимательно прочитать javadoc-документацию. Поступим как на интервью, и далее рассмотрим каждый из методов детально. Их список:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
👉@BookJava
Этот вопрос используется, как способ начать разговор – по большинству методов можно уйти в обсуждении далеко вглубь. В первую очередь важно запомнить сигнатуры – не зная ответов на вопросы по этим методам, можно будет хотя бы рассуждать отталкиваясь от них. Также полезно открыть исходник и внимательно прочитать javadoc-документацию. Поступим как на интервью, и далее рассмотрим каждый из методов детально. Их список:
1.
public final native Class<?> getClass()
2.
public native int hashCode()
3.
public boolean equals(Object obj)
4.
protected native Object clone() throws CloneNotSupportedException
5.
public String toString()
6.
public final native void notify()
7.
public final native void notifyAll()
8.
public final native void wait(long timeout) throws InterruptedException
9.
public final void wait(long timeout, int nanos) throws InterruptedException
10.
public final void wait() throws InterruptedException
11.
protected void finalize() throws Throwable
👉@BookJava
👍7
Подборка Telegram каналов для программистов🔥
Сохраняйте, чтоб не потерять.
Backend разработка 📌
https://t.me/ruby_lib Библиотека Ruby программиста
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_geek Учим Java на примерах
https://t.me/php_lib Библиотека PHP программиста
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/pythonofff Python академия. Учи Python быстро и легко
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/golang_lib Библиотека Go (Golang) разработчика
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
https://t.me/codepen_1 Сообщество пользователей CodePen
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Book reserv 1500 руб
https://t.me/python_360 Книги по Python
https://t.me/java_360 Книги по Java
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии для программистов
Чат программистов📌
https://t.me/developers_ru
Excel лайфхак📌
https://t.me/Excel_lifehack
Подписывайтесь на понравившиеся Telegram-каналы для разработчиков и изучайте программирование из любой точки мира.
Сохраняйте, чтоб не потерять.
Backend разработка 📌
https://t.me/ruby_lib Библиотека Ruby программиста
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_geek Учим Java на примерах
https://t.me/php_lib Библиотека PHP программиста
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/pythonofff Python академия. Учи Python быстро и легко
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/golang_lib Библиотека Go (Golang) разработчика
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
https://t.me/codepen_1 Сообщество пользователей CodePen
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Book reserv 1500 руб
https://t.me/python_360 Книги по Python
https://t.me/java_360 Книги по Java
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии для программистов
Чат программистов📌
https://t.me/developers_ru
Excel лайфхак📌
https://t.me/Excel_lifehack
Подписывайтесь на понравившиеся Telegram-каналы для разработчиков и изучайте программирование из любой точки мира.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Forwarded from Java Geek
Создание объектов только при необходимости
Создание объектов – одна из самых затратных операций в Java. Лучшая практика – создавать их только при необходимости, когда они действительно нужны.
@java_geek
Создание объектов – одна из самых затратных операций в Java. Лучшая практика – создавать их только при необходимости, когда они действительно нужны.
@java_geek
👍4👎3
Как используется
Этой аннотацией помечают код, который устарел и не должен быть более использован. Классы, которые используют или переопределяют
Имеет retention
Начиная с Java 9 у этой аннотации появились опциональные параметры – строка
Обычно, когда элемент помечают устаревшим, причины устаревания и дальнейшие рекомендации указывают в его Javadoc-документации под тегом
#Аннотации
👉@BookJava
@Deprecated
?Этой аннотацией помечают код, который устарел и не должен быть более использован. Классы, которые используют или переопределяют
@Deprecated
элементы, будут компилироваться с warning-ом.Имеет retention
RUNTIME
, что значит, что фреймворки могут динамически проверять наличие аннотации на элементе с помощью Reflection API.Начиная с Java 9 у этой аннотации появились опциональные параметры – строка
since
и булево значение forRemoval
. В since указывается версия вашего приложения, начиная с которой элемент считается устаревшим. Значение true
в forRemoval
предупреждает, что со следующей мажорной версии этот элемент будет удален. Такое нововведение связано с изменением политики устаревания – с Java 9 и устаревшие элементы самой JDK тоже могут удаляться в будущих версиях.Обычно, когда элемент помечают устаревшим, причины устаревания и дальнейшие рекомендации указывают в его Javadoc-документации под тегом
@deprecated
.#Аннотации
👉@BookJava
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Паттерны проектирования программ на языке Java
Фабричный метод (FactoryMethod)
Абстрактная фабрика (Abstract Factory)
Строитель (Builder)
Одиночка (Singleton)
Прототип (Prototype)
Адаптер (Adapter) Реализация на уровне объектов.
Адаптер (Adapter) Реализация на уровне классов.
Мост (Bridge)
Компоновщик (Composite)
Декоратор (Decorator)
Фасад (Facade)
Легковес (Flyweight)
Заместитель (Proxy)
Цепочка обязанностей (Chain of responsibility)
Команда (Command)
Итератор (Iterator)
Посредник (Mediator)
Снимок (Memento)
Наблюдатель (Observer)
Состояние (State)
Стратегия (Strategy)
Шаблонный метод (Template method)
Посетитель (Visitor)
Полный курс на youtube
👉@BookJava
Фабричный метод (FactoryMethod)
Абстрактная фабрика (Abstract Factory)
Строитель (Builder)
Одиночка (Singleton)
Прототип (Prototype)
Адаптер (Adapter) Реализация на уровне объектов.
Адаптер (Adapter) Реализация на уровне классов.
Мост (Bridge)
Компоновщик (Composite)
Декоратор (Decorator)
Фасад (Facade)
Легковес (Flyweight)
Заместитель (Proxy)
Цепочка обязанностей (Chain of responsibility)
Команда (Command)
Итератор (Iterator)
Посредник (Mediator)
Снимок (Memento)
Наблюдатель (Observer)
Состояние (State)
Стратегия (Strategy)
Шаблонный метод (Template method)
Посетитель (Visitor)
Полный курс на youtube
👉@BookJava
👍11🔥1
Forwarded from Java Geek
Выполнение консольных команд
Java позволяет выполнять консольные команды прямо из кода, используя класс Runtime. Очень важно не забывать об обработке исключений.
Например, давайте попробуем открыть файл PDF через терминал Java (на Linux’e).
@java_geek
Java позволяет выполнять консольные команды прямо из кода, используя класс Runtime. Очень важно не забывать об обработке исключений.
Например, давайте попробуем открыть файл PDF через терминал Java (на Linux’e).
@java_geek
👍4
Как выбрать между Statement, PreparedStatement и CallableStatement?
Statement – SQL-выражение, подготовленное к выполнению в рамках определенной JDBC-сессии. Выполняется методом
После выполнения, экземпляр
PreparedStatement – предскомпилированная версия
CallableStatement – наследник
Экземпляры всех трех типов создаются методами интерфейса
#sql
👉@BookJava
Statement – SQL-выражение, подготовленное к выполнению в рамках определенной JDBC-сессии. Выполняется методом
execute
для обычного выражения, executeUpdate
для модифицирующего, executeBatch
для пакетного. Когда ожидаемый размер результата больше Integer.MAX_VALUE
, используются версии методов executeLarge*
.После выполнения, экземпляр
Statement
владеет ResultSet-ом, и другими данными о результате выполнения, такими как количество обновленных записей и сгенерированные ключи.PreparedStatement – предскомпилированная версия
Statement
, его наследник. Эффективнее выполняет одно и то же выражение множество раз. Входные параметры объявляются в SQL-выражении символом ?, следом сеттерами задаются их типы и значения. Делегирует обязанность экранировать введенные пользователем параметры базе данных.CallableStatement – наследник
PreparedStatement
для вызова хранимых процедур. Кроме входных параметров, позволяет регистрировать выходные.Экземпляры всех трех типов создаются методами интерфейса
Connection.
#sql
👉@BookJava
👍6
Forwarded from Java Geek
Меняем местами две переменные в одной строке
Многие знают, что в Python можно красиво поменять значения переменных в одну строку: a, b = b, a
Можно ли что-то похожее сделать в Java? Да. На картинке показан пример, но в реальных проектах так делать не стоит.
@java_geek
Многие знают, что в Python можно красиво поменять значения переменных в одну строку: a, b = b, a
Можно ли что-то похожее сделать в Java? Да. На картинке показан пример, но в реальных проектах так делать не стоит.
@java_geek
👍3😱3❤🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
Создание классической игры в пинг-понг на Java
https://betterprogramming.pub/create-the-classic-ping-pong-game-3aea1f7b16e6
👉@BookJava
https://betterprogramming.pub/create-the-classic-ping-pong-game-3aea1f7b16e6
👉@BookJava
👍4
Подборка Telegram каналов для программистов🔥
Сохраняйте, чтоб не потерять.
https://t.me/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
CodePen 📌
https://t.me/codepen_1 Сообщество пользователей CodePen
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Чат программистов📌
https://t.me/developers_ru
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
https://t.me/arhitekturamira World Architecture
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
Арбитраж трафика 📌
https://t.me/partnerochkin CPA и арбитраж трафика
Крипта 📌
https://t.me/bitkoinoff Новости криптовалют
Метавселенная, GameFi, Crypto 📌
https://t.me/metaverse360
DeepFake 📌
https://t.me/deepfakenow Публикуем deepfake видео
Мир технологий 📌
https://t.me/mir_teh Видео из мира технологий
Excel лайфхак📌
https://t.me/Excel_lifehack
Подписывайтесь на понравившиеся Telegram-каналы для разработчиков и изучайте программирование из любой точки мира.
Сохраняйте, чтоб не потерять.
https://t.me/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
CodePen 📌
https://t.me/codepen_1 Сообщество пользователей CodePen
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Чат программистов📌
https://t.me/developers_ru
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
https://t.me/arhitekturamira World Architecture
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
Арбитраж трафика 📌
https://t.me/partnerochkin CPA и арбитраж трафика
Крипта 📌
https://t.me/bitkoinoff Новости криптовалют
Метавселенная, GameFi, Crypto 📌
https://t.me/metaverse360
DeepFake 📌
https://t.me/deepfakenow Публикуем deepfake видео
Мир технологий 📌
https://t.me/mir_teh Видео из мира технологий
Excel лайфхак📌
https://t.me/Excel_lifehack
Подписывайтесь на понравившиеся Telegram-каналы для разработчиков и изучайте программирование из любой точки мира.
Telegram
Node JS
Подборки по Node js и все что с ним связано. По всем вопросам @evgenycarter
👍3
JDK 19: The new features in Java 19
September release will feature structured concurrency, virtual threads, pattern matching for switch expressions, a vector API, and a Linux/RISC-V port.
https://www.infoworld.com/article/3653331/jdk-19-the-new-features-in-java-19.html
👉@BookJava
September release will feature structured concurrency, virtual threads, pattern matching for switch expressions, a vector API, and a Linux/RISC-V port.
https://www.infoworld.com/article/3653331/jdk-19-the-new-features-in-java-19.html
👉@BookJava
❤2👍1
JDK 19: новые возможности в Java 19 (Rus)
Выпуск не-LTS, который должен быть выпущен в сентябре, Java 19 будет включать структурированный параллелизм, виртуальные потоки, сопоставление шаблонов для выражений переключения, векторный API и порт Linux/RISC-V.
https://telegra.ph/JDK-19-novye-vozmozhnosti-v-Java-19-09-19
👉@BookJava
Выпуск не-LTS, который должен быть выпущен в сентябре, Java 19 будет включать структурированный параллелизм, виртуальные потоки, сопоставление шаблонов для выражений переключения, векторный API и порт Linux/RISC-V.
https://telegra.ph/JDK-19-novye-vozmozhnosti-v-Java-19-09-19
👉@BookJava
Telegraph
JDK 19: новые возможности в Java 19
Выпуск не-LTS, который должен быть выпущен в сентябре, Java 19 будет включать структурированный параллелизм, виртуальные потоки, сопоставление шаблонов для выражений переключения, векторный API и порт Linux/RISC-V. Комплект Java Development Kit 19, который…
👍7
Forwarded from Java Geek
Объединение хеш-таблиц
Объединять два хеша, итерируя их значения вручную, весьма неэффективно. Вот альтернативное решение этой задачи, которое точно вам понравится.
@java_geek
Объединять два хеша, итерируя их значения вручную, весьма неэффективно. Вот альтернативное решение этой задачи, которое точно вам понравится.
@java_geek
👍9
Введение в DbChange JUnit расширение
Простой и декларативный способ выполнять sql запросы в JUnit тестах.
ПредУсловия (PreConditions) - это действия, которые переводят тестируемую систему в определённое состояние необходимое для выполнения тестового сценария.
Тестовый сценарий (Test case) - это действия, которые меняют состояние тестируемой системы с целью сверить действительное поведение системы с ожидаемым.
ПостУсловия (PostConditions) - это действия, которые переводят тестируемую систему в первоначальное состояние, которое было до выполнения ПредУсловий. Далее
👉@BookJava
Простой и декларативный способ выполнять sql запросы в JUnit тестах.
ПредУсловия (PreConditions) - это действия, которые переводят тестируемую систему в определённое состояние необходимое для выполнения тестового сценария.
Тестовый сценарий (Test case) - это действия, которые меняют состояние тестируемой системы с целью сверить действительное поведение системы с ожидаемым.
ПостУсловия (PostConditions) - это действия, которые переводят тестируемую систему в первоначальное состояние, которое было до выполнения ПредУсловий. Далее
👉@BookJava
👍5
Forwarded from Java Geek
Захват координат курсора
Чтобы захватить события мыши, необходимо реализовать интерфейс MouseMotionListener. Когда курсор попадает в определенную область, срабатывает обработчик события mouseMoved, из которого можно получить точные координаты.
@java_geek
Чтобы захватить события мыши, необходимо реализовать интерфейс MouseMotionListener. Когда курсор попадает в определенную область, срабатывает обработчик события mouseMoved, из которого можно получить точные координаты.
@java_geek
👍4
Назовите несколько примеров java.lang.Error
Исключения типа
• AnnotationFormatError –
• AssertionError – провалилась проверка утверждения (ключевое слово
• CoderMalfunctionError – неисправность при кодировании/декодировании Unicode (в пакетах
• ServiceConfigurationError – проблема с загрузкой сервисов в
• IOError – серьезная ошибка ввода-вывода;
• ThreadDeath – особенная ошибка: в отличие от остальных наследников
• LinkageError – после перекомпиляции случилось непоправимое. Предок для 15 различных ошибок формата .class-файлов, загрузки классов, пропажи используемых членов, и прочего.
• VirtualMachineError – JVM сломалась. Абстрактный класс-предок для:
◦ StackOverflowError – переполнение стека вызовов, обычно встречается при бесконечной рекурсии;
◦ OutOfMemoryError – кончилась память, и GC уже не помогает;
◦ InternalError – внутренняя проблема JVM. Её единственный наследник ZipError не используется с Java 9;
◦ UnknownError – что-то другое.
#Классы
👉@BookJava
Исключения типа
Error
говорят о серьезных проблемах во время выполнения программы. Вот все ошибки стандартной библиотеки Java SE:• AnnotationFormatError –
AnnotationParser
(Reflection) обнаружил дефект .class-файла аннотации;• AssertionError – провалилась проверка утверждения (ключевое слово
assert
). Используется в тестах;• CoderMalfunctionError – неисправность при кодировании/декодировании Unicode (в пакетах
java.io/java.nio
);• ServiceConfigurationError – проблема с загрузкой сервисов в
ServiceLoader
(Service Provider Interface);• IOError – серьезная ошибка ввода-вывода;
• ThreadDeath – особенная ошибка: в отличие от остальных наследников
Error
, это – «нормальное явление», сигнал асинхронного завершения текущего потока;• LinkageError – после перекомпиляции случилось непоправимое. Предок для 15 различных ошибок формата .class-файлов, загрузки классов, пропажи используемых членов, и прочего.
• VirtualMachineError – JVM сломалась. Абстрактный класс-предок для:
◦ StackOverflowError – переполнение стека вызовов, обычно встречается при бесконечной рекурсии;
◦ OutOfMemoryError – кончилась память, и GC уже не помогает;
◦ InternalError – внутренняя проблема JVM. Её единственный наследник ZipError не используется с Java 9;
◦ UnknownError – что-то другое.
#Классы
👉@BookJava
👍4
Для ArrayList или для LinkedList операция добавления элемента в середину (list.add(list.size()/ 2, newElement)) медленнее?
Для ArrayList:
• проверка массива на вместимость. Если вместимости недостаточно, то увеличение размера массива и копирование всех элементов в новый массив (O(N));
• копирование всех элементов, расположенных правее от позиции вставки, на одну позицию вправо (O(N));
• вставка элемента (O(1)).
Для LinkedList:
• поиск позиции вставки (O(N));
• вставка элемента (O(1)).
В худшем случае вставка в середину списка эффективнее для
👉@BookJava
Для ArrayList:
• проверка массива на вместимость. Если вместимости недостаточно, то увеличение размера массива и копирование всех элементов в новый массив (O(N));
• копирование всех элементов, расположенных правее от позиции вставки, на одну позицию вправо (O(N));
• вставка элемента (O(1)).
Для LinkedList:
• поиск позиции вставки (O(N));
• вставка элемента (O(1)).
В худшем случае вставка в середину списка эффективнее для
LinkedList
. В остальных - скорее всего, для ArrayList, поскольку копирование элементов осуществляется за счет вызова быстрого системного метода System.arraycopy().👉@BookJava
👍6
Как хранить сеть дорог в БД для построения маршрута?
И так, формулировка задачи следующая: есть база данных, в ней хранится информация о дорогах, включая координаты, нужно реализовать построение маршрутов из начальной точки к конечной.
Эта статья будет про то, как использовать свой источник данных, и как этот источник данных редактировать так, чтобы GraphHopper вас понял.
👉@BookJava
И так, формулировка задачи следующая: есть база данных, в ней хранится информация о дорогах, включая координаты, нужно реализовать построение маршрутов из начальной точки к конечной.
Эта статья будет про то, как использовать свой источник данных, и как этот источник данных редактировать так, чтобы GraphHopper вас понял.
👉@BookJava
👍4