Побег из Крипто Про. ГОСТ 34.10-2012 edition
Под катом рассказ как можно модифицировать свой софт на Bouncy Castle для поддержки работы с ключами по новым гостам.


Объектно-ориентированный язык программирования



Все здесь правы, каждый по-своему, и, следовательно, все здесь не правы.
"Сказка о Тройке" (А. и Б. Стругацкие)
Если вы используете Spring Data JPA, то после обновления на Spring Boot 2 при старте приложения можете заметить в логе новое предупреждение:
spring.jpa.open-in-view is enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning.
В этой статье попытаюсь объяснить, что это значит, кто виноват и что делать.
Для поднятия полноценного приложения на Spring Boot требуется всего лишь одна аннотация @SpringBootApplication. Для того, чтобы это было возможным, фреймворк использует большое количество автоконфигураций и настроек по умолчанию. Более того, для работы "из коробки" разработчикам Spring Boot пришлось выбрать некие концепции разработки приложений из нескольких альтернативных вариантов для каждой, чтобы пользователю не нужно было выбирать их явно. С одной стороны это хорошо для быстрого старта и легкой разработки, но с другой – через некоторое время может оказаться, что некая используемая по умолчанию концепция/парадигма/настройка не подходит для проекта, а для отказа от нее придется многое переделать. Одной из таких концепций является режим Open Session In View (OSIV), включенный в Spring Boot по умолчанию.



240 дней прошло с момента выпуска JEP 3: JDK Release Process, и адская машина по производству новых версий останавливаться не желает. А значит, настало время очередного релиз-кандидата. Это период, когда все мосты сожжены, баги с приоритетами P2-P5 уже ничего не значат, и дни до релиза сочтены.


Здравствуй, Хаброчитатель!
Разрабатывая учебный проект по Spring Boot 2 решил поэкспериментировать с @Param в запросах Spring Data JPA, а точнее c их отсутствием:
@Transactional(readOnly = true)
public interface UserRepository extends JpaRepository<User, Integer> {
@Query("SELECT u FROM User u WHERE LOWER(u.email) = LOWER(:email)")
Optional<User> findByEmailIgnoreCase(@Param("email") String email);
List<User> findByLastNameContainingIgnoreCase(@Param("lastname") String lastName);
}(про магию, как работает второй метод есть в старой публикации По следам Spring Pet Clinic).
Убрав @Param можно убедится, что Spring прекрасно работает и без них. Я слышал про параметр в компиляции, который позволяет не дублировать названия в аннотациях, но я ничего не специального не делал, поэтому решил покопать поглубже подебажить.
Если Вы еще пользуетесь аннотациями из заголовка статьи, Spring Boot и JDK 8, прошу под кат:
UPDATE: аннотации @PathVariable и @RequestParam все еще часто нужны, чтобы приложение работало корректно. Но их атрибуты value/name уже не обязательны: соответствие ищется по именам переменных.
… его четверо отлаживают.
Вдохновлённый докладом Владимира Плизги (Spring Boot 2: чего не пишут в release notes) я решил рассказать о своём опыте работы со Спринг Бут, его особенностях и подводных камнях, встретившихся на моём пути.

В статье речь пойдет о реализации сжатия указателей в Java Virtual Machine 64-bit, которое контролируется опцией UseCompressedOops и включено по-умолчанию для 64 битных систем начиная с Java SE 6u23.


/*Учебный пример №12 */
package localclasses;
/**
*
* @author Ar20L80
*/
public class OuterStaticInit {
static
{
class LocalInit{
LocalInit(){
System.out.println("From static iniz");
}
}
LocalInit localInit = new LocalInit();
System.exit(0);
}
public static void main(String[] args) {
System.out.println("From main");
}
}

/**
* Учебный пример №13
* @author Ar20L80
*/
public class OuterLocal {
OuterLocal(){
// начало блока конструктора
/*объявление локального класса в конструкторе OuterLocal*/
class LocalInnerClass {
LocalInnerClass(){}
}
/* создаем экземпляр в том же блоке*/
LocalInnerClass localObj = new LocalInnerClass();
// окончание блока конструктора
}
/**
* Учебный пример №14
* @author Ar20L80
*/
public class OuterLocal {
OuterLocal(){
/*объявление локального класса в конструкторе OuterLocal*/
class LocalInnerClass {
LocalInnerClass(){}
}
/* создаем экземпляр в том же блоке*/
LocalInnerClass localObj = new LocalInnerClass();
}
public static void main(String[] args) {
// LocalInnerClass localObj = new LocalInnerClass(); не можем создать объект локального класса
// вне области видимости содержащего его блока
}
}
/*Учебный пример пример №15 */
public class OuterStaticLocal {
OuterStaticLocal(){
// static class Local{} ошибка не может быть статичным
}
}
/**
* Учебный пример №16
* @author Ar20L80
*/
public class OuterLocal2 {
OuterLocal2(){
final class LocalInnerClass {
LocalInnerClass(){}
}
}
}
/**
* Учебный пример №17
* @author Ar20L80
* тут я вернул переменную локального класса через iTemp внешнего класса
*/
public class OuterClass {
private int iTemp;
OuterClass(){
// объявим внутри конструктора класс
/* здесь мы не можем использовать private, public
применительно к локальному классу*/
final class LocalInnerClass01{
/* сам локальный класс может содержать
как private, так и public */
private static final int INT_FIN = 10;
LocalInnerClass01(){
iTemp = Return_INT_FIN();
}
int Return_INT_FIN(){
return INT_FIN;
}
}
class LocalInnerClass02{
// public static int i=11; ошибка не может быть не константой внутри
// локального вложенного класса
}
/* создаем локальные объекты локальных классов в том же конструкторе*/
LocalInnerClass01 localInnerClass1 = new LocalInnerClass01();
LocalInnerClass02 localInnerClass2 = new LocalInnerClass02();
}
public static void main(String[] args) {
OuterClass outerClass = new OuterClass();
System.out.println(outerClass.iTemp ); // = 10
//OuterClass.LocalInnerClass1 innerObject = outerClass.new LocalInnerClass1(); ошибка - это не
// внутренний класс, а локальный. И мы не имеем к нему доступа.
}
}

/* Пример №7 */
class OuterClass {
...
class InnerClass {
...
}
}
OuterClass.InnerClass innerObject = outerObject.new InnerClass();
/* Пример №8 файл Outer.java*/
package inner;
/**
*
* @author Ar20L80
*/
public class Outer {
class InnerClass {
}
Outer(){}
public static void main(String[] args) {
Outer outerObject = new Outer();
Outer.InnerClass innerObject = outerObject.new InnerClass(); // создание экземпляра
внутреннего класса
}
}
Внутренние и вложенные классы java. Часть 1
02.03.2017 — 2019 год
Часть 1. Начало

Цель статьи: Рассказать о внутренних, вложенных, локальных, анонимных классах. Показать примеры их использования. Написать и протестировать классы в коде на java. Рассказать о свойствах этих классов. Материал предназначен для лучшего понимания безымянных классов, лямбда выражений, адаптеров и многопоточности. Авторское осмысление материала, позволяет посмотреть на уже известные вещи немного иначе. Такой взгляд помогает лучшему понимаю и большей ясности, того что уже известно.