453 subscribers
69 photos
25 files
83 links
Пишу иногда интересно, а иногда не очень. Предложения, сотрудничество @Javacoding_bot
加入频道
Роберт Седжвик, «Алгоритмы на Java»
Алгоритмы_на_Java_by_Седжвик_Р_Уэйн_К_Sedgewick_Wayne_z_lib_org.pdf
186.6 MB
Наряду с Корменом, это классика, которую надо знать.

вся необходимая база описана с учетом особенностей Java;
даны реальные примеры, а не псевдокод (всегда ценю такое);
написано легко и доступно: в свое время с трудом продирался сквозь Кнута и Скиену, а вот Седжвик зашел прекрасно.

К сожалению, под рукой оказался только перевод, но если у вас есть возможность – читайте в оригинале. В русскоязычном издании при оформлении почему-то решили переносить вложенные циклы на следующую страницу – читать, мягко говоря, неудобно.
А техническое собеседование, наверное, на стрельбище проводится?
Полезный ресурс для работы с TLS 🔐

Рано или поздно с протоколом TLS сталкивается каждый: например, если нужно настроить протокол в приложении на Spring Boot. И к такой встрече лучше подготовиться.

На этом сайте в полуинтерактивной форме демонстрируются все этапы TLS-хендшейка. Можно подробно изучить, как работает соединение, и посмотреть код на GitHub. Будет интересно даже тем, кто совсем не представляет, как функционируют криптографические протоколы.
Какой из перечисленных компонентов класса А не будет доступен расширяющему его классу B?
Anonymous Quiz
2%
public short a;
2%
protected void summ (int a, int b)
87%
private void pow (int a, double b)
2%
protected int summ (double x1, double x2)
7%
void mult (float a) при условии, что классы А и B находятся в одном пакете
Замечал, что даже вполне опытные разработчики временами путаются в определениях многопоточности, параллелизма и асинхронности. Ничего удивительного, вопрос и правда сложный, но разрешимый – нужно только упорство и желание разобраться.

Прочитав статью, можно увидеть отчетливую разницу между тремя понятиями. Только не поддавайтесь на уловку автора: он нахваливает преимущества асинхронной модели перед синхронной, но на графиках нет привязки ни ко времени, ни к размеру задач.

Каждая модель хороша для своих целей, а наша задача – не путаться в способах их достижения. С этим статья точно поможет.
Brian Goetz, Java Concurrency in Practice
Java_Concurrency_In_Practice_Brian_Goetz_with_Tim_Peierls,_Joshua.pdf
6.3 MB
Базовая книга про concurrency, считается классикой. Стоит прочесть, если:

вам надо разобраться в основах работы с потоками;

вы хотите понять, как избежать распространенных ошибок компиляции при работе с многопоточностью;

вы уже не новичок, но немного «плаваете» в терминологии.

Есть значительный недостаток:

книга 2006 года выпуска, так что про новые фичи никакой инфы оттуда вы не почерпнете. Автор говорил, что даже с учетом обновлений Java перерабатывать материал не собирается. Но если вам нужна только база – смело читайте.
Сегодняшнее настроение.
Радует, когда выходят переводы по-настоящему годных материалов.

Появился неплохой перевод статьи о создании нативных образов при помощи Spring Boot. Рассматриваются все аспекты: создание нового проекта, конфигурирование компонента и контроллера, неблокирующий HTTP-клиент, параметризация, тестирование и многое другое.

Можно сохранить и использовать как туториал 📝
Недавняя уязвимость Apache Log4j для пользователей Spring Boot может быть деликатно устранена переходом на версию Log4j 2.15.0. Например, при использовании системы сборки Maven, изменить версию можно, добавив в pom-файл в раздел Properties следующую строку: <log4j2.version>2.15.0</log4j2.version>.
Появилась подробная статья об уязвимости Apache Log4j. Информативный обзор, где собрали все необходимые данные и рассказали о способах защиты (описанный мной в прошлом посте тоже упоминают), за что авторам отдельное спасибо.
Это должно было случиться: неравнодушные из Intruder создали сайт с мемами про уязвимость Apache Log4j. Можно полистать, посмеяться (или поплакать) и даже отправить свой мем по теме.

Мой любимый пока вот этот.
(источник)
Трудности импортозамещения: Сбер отказался от серверов на базе российских процессоров «Эльбрус-8С» после предварительного тестирования. Причина – абсолютное техническое несоответствие требованиям. Из 44 параметров предоставленные на тестирование серверы соответствовали лишь 7.

На данном этапе российское железо настолько не вызывает доверия, что фраза: «Мы приятно удивлены, что это вообще работает» никого не смущает. Вокруг «Эльбруса» много негатива, но на текущей стадии ожидать конкуренции с тем же Intel Xeon как минимум странно. Посмотрим, что будет, когда поступят в массовое использование «Эльбрус-8СВ», которые по характеристикам обещают быть значительно лучше.

А еще отбракованные «Эльбрусы» можно было купить как магнит на холодильник. Теперь такой раритет разве что на авито искать.
Ситуация с Log4j меняется стремительно, лучше обновлять до версии 2.17.0 и следить за новостями. А пока вот хорошая статья о том, как определить, зависит ли ваш Java-проект от уязвимой версии Log4j.

P.S. Друзья и коллеги, скоро вернусь к прежнему формату, буду делиться полезным контентом и мемами, но пока, сами понимаете, пишу о том, что волнует больше всего.
При условии,что коды символов 'a' и 'b' равны 97 и 98 соответственно, укажите, что будет выведено на экран в результате выполнения следующего фрагмента программы?

char ch1 = 'a';
char ch2 = 'b';
System.out.print(ch1 * ch2);
System.out.print(ch1 + ch2);
При условии,что коды символов 'a' и 'b' равны 97 и 98 соответственно, укажите, что будет выведено на экран в результате выполнения следующего фрагмента программы?
Anonymous Quiz
32%
сообщение об ошибке
44%
9506195
5%
a + b
11%
9506a + b
8%
NaNNaN
Jon Kleinberg, Eva Tardos, “Algorithm Design”
Algorithm_design_Pearson_Kleinberg,_Jon_Tardos,_Éva_2013_2014.pdf
4.6 MB
Jon Kleinberg, Eva Tardos, “Algorithm Design”

Чем книга хороша:

прекрасно разобраны назначения алгоритмов: зачем вообще изучать их особенности и какую проблему/задачу помогает решить каждый алгоритм;

подробно расписаны примеры, даны задачи для самостоятельной работы;

материал четко структурирован, никакой путаницы и перескакивания с темы на тему.

Что не очень классно:

❗️мало инфы про анализ алгоритмов, потребуются дополнительные источники;

❗️не подойдет для начинающих: авторы не объясняют вещи, которые считают очевидными, и не всем терминам дают определение. Хотя, если вам не лень постоянно гуглить, можете попробовать.
Меня часто спрашивают, в чем главное отличие опытных разрабов от начинающих...
Обсуждения Log4j не утихают, а мы и рады почитать что-нибудь интересное. Вот, например, подробный разбор уязвимости. Автор пошел длинным изощренным путем, но статья как минимум расширяет кругозор (знали, как можно легко поднять LDAP?), и дискуссия в комментариях увлекательная.