Когда стоит выбрать char[] вместо String?
Первая, очевидная причина – оптимизация. Если вам заранее известен размер строки, и он фиксирован, может быть полезно выбрать массив. Если программа работает с неизменяемыми подстроками, удобно представить их в виде offset-ов общего массива (как это было сделано раньше в самом
Следует помнить, что оптимизировать нужно осознанно и своевременно. JVM тоже прикладывает усилия по оптимизации строк (вроде интернирования), которые могут оказаться эффективнее ваших.
Вторая, менее очевидная причина – безопасность. Строки в Java иммутабельны. Это значит, что когда вы сохраняете пароль в объекте типа String, физически уничтожить его из памяти может только сборщик мусора.
Существует способ алгоритмической атаки на систему, когда хакер своими действиями вызывает переполнение памяти, и конфиденциальная информация попадает в heap dump.
Если пароль хранится в массиве, программист может самостоятельно «занулить» значение после использования.
#Классы
#Безопасность
Первая, очевидная причина – оптимизация. Если вам заранее известен размер строки, и он фиксирован, может быть полезно выбрать массив. Если программа работает с неизменяемыми подстроками, удобно представить их в виде offset-ов общего массива (как это было сделано раньше в самом
String
).Следует помнить, что оптимизировать нужно осознанно и своевременно. JVM тоже прикладывает усилия по оптимизации строк (вроде интернирования), которые могут оказаться эффективнее ваших.
Вторая, менее очевидная причина – безопасность. Строки в Java иммутабельны. Это значит, что когда вы сохраняете пароль в объекте типа String, физически уничтожить его из памяти может только сборщик мусора.
Существует способ алгоритмической атаки на систему, когда хакер своими действиями вызывает переполнение памяти, и конфиденциальная информация попадает в heap dump.
Если пароль хранится в массиве, программист может самостоятельно «занулить» значение после использования.
#Классы
#Безопасность
Опишите синтаксис javadoc-комментария (1/2)
Javadoc-комментарии к классам и их членам заключаются между
До Java 1.4 каждая строка комментария обязана была начинаться со
Первое предложение комментария принимается в качестве заголовка описания элемента. В HTML именно оно попадает на страницу индекса. Предложение заканчивается точкой с последующим разделительным символом.
В javadoc разрешено использовать HTML-теги. Фрагменты кода рекомендуется обрамлять тегом
#Инструменты
Javadoc-комментарии к классам и их членам заключаются между
/**
и */
. С точки зрения синтаксиса Java это обычные многострочные комментарии, но вторая *
позволяет различным инструментам воспринимать их как документацию API. Изначально для этого использовалась стандартная утилита javadoc
, которая генерировала HTML-документацию, сейчас джавадок активно используется прямо в IDE.До Java 1.4 каждая строка комментария обязана была начинаться со
*
. Сейчас это требование необязательное, но следовать ему всё ещё принято.Первое предложение комментария принимается в качестве заголовка описания элемента. В HTML именно оно попадает на страницу индекса. Предложение заканчивается точкой с последующим разделительным символом.
В javadoc разрешено использовать HTML-теги. Фрагменты кода рекомендуется обрамлять тегом
<code>
, для списка с буллетами применяется <ul>
, параграфы отделяются <p>
. В документации библиотеки Reactor активно используются <img>
с диаграммами.#Инструменты