Комментарии (18)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #1983828
Уровень 35
7 апреля 2021, 06:52
CAS механизм compare and swap Блокировка подразумевает пессимистический подход, разрешая только одному потоку выполнять определенный код, связанный с изменением значения некоторой «общей» переменной. Таким образом, никакой другой поток не имеет доступа к определенным переменным. Но можно использовать и оптимистический подход. В этом случае блокировки не происходит, и если поток обнаруживает, что значение переменной изменилось другим потоком, то он повторяет операцию снова, но уже с новым значением переменной. Так работают атомарные классы.
hidden #1983828
Уровень 35
9 октября 2020, 08:41
Обычная жесткая ссылка – любая переменная ссылочного типа. Очистится сборщиком мусора не раньше, чем станет неиспользуемой (перестанет быть доступной из GC roots, подробнее в следующих постах). SoftReference – мягкая ссылка. Объект не станет причиной израсходования всей памяти – гарантированно будет удален до возникновения OutOfMemoryError. Может быть раньше, зависит от реализации сборщика мусора. WeakReference – слабая ссылка. Слабее мягкой. Не препятствует утилизации объекта, сборщик мусора игнорирует такие ссылки. PhantomReference – фантомная ссылка. Используется для «предсмертной» обработки объекта: объект доступен после финализации, пока не очищен сборщиком мусора.
hidden #1983828
Уровень 35
9 октября 2020, 07:30
SOLID Принцип единственной ответственности (single responsibility principle) Для каждого класса должно быть определено единственное назначение. Все ресурсы, необходимые для его осуществления, должны быть инкапсулированы в этот класс и подчинены только этой задаче. Принцип открытости/закрытости (open–closed principle) «программные сущности … должны быть открыты для расширения, но закрыты для модификации». Принцип подстановки Лисков (Liskov substitution principle) «объекты в программе должны быть заменяемыми на экземпляры их подтипов без изменения правильности выполнения программы». Наследующий класс должен дополнять, а не изменять базовый. Принцип разделения интерфейса (interface segregation principle) «много интерфейсов, специально предназначенных для клиентов, лучше, чем один интерфейс общего назначения». Принцип инверсии зависимостей (dependency inversion principle) «Зависимость на Абстракциях. Нет зависимости на что-то конкретное».
hidden #1983828
Уровень 35
25 сентября 2020, 12:21
Алгоритм поиска полей, которые надо пометить как volatile: 1) Вычислить ,сколько в программе будет работать нитей 2) Посмотреть методы run каждой нити 3) В методах run найти поля , общие для всех нитей
hidden #1983828
Уровень 35
19 августа 2020, 20:18
Запускаешь через консоль java Test input.txt output.txt, где Test — имя твоего класса. Если выполняете в ИДЕА, то меню Run -> Edit Configuration -> Application в поле Program Arguments указываете аргументы через пробел. Потом в main эти параметры получаешь String fileNameIn = args[0]; String fileNameOut = args[1];
hidden #1983828
Уровень 35
14 августа 2020, 11:31
Date and Time Formatting Note: Using the formatting characters with “%T” instead of “%t” in the table below makes the output uppercase. FLAG NOTES %tA Full name of the day of the week, e.g. “Sunday“, “Monday“ %ta Abbreviated name of the week day e.g. “Sun“, “Mon“, etc. %tB Full name of the month e.g. “January“, “February“, etc. %tb Abbreviated month name e.g. “Jan“, “Feb“, etc. %tC Century part of year formatted with two digits e.g. “00” through “99”. %tc Date and time formatted with “%ta %tb %td %tT %tZ %tY” e.g. “Fri Feb 17 07:45:42 PST 2017“ %tD Date formatted as “%tm/%td/%ty“ %td Day of the month formatted with two digits. e.g. “01” to “31“. %te Day of the month formatted without a leading 0 e.g. “1” to “31”. %tF ISO 8601 formatted date with “%tY-%tm-%td“. %tH Hour of the day for the 24-hour clock e.g. “00” to “23“. %th Same as %tb. %tI Hour of the day for the 12-hour clock e.g. “01” – “12“. %tj Day of the year formatted with leading 0s e.g. “001” to “366“. %tk Hour of the day for the 24 hour clock without a leading 0 e.g. “0” to “23“. %tl Hour of the day for the 12-hour click without a leading 0 e.g. “1” to “12“. %tM Minute within the hour formatted a leading 0 e.g. “00” to “59“. %tm Month formatted with a leading 0 e.g. “01” to “12“. %tN Nanosecond formatted with 9 digits and leading 0s e.g. “000000000” to “999999999”. %tp Locale specific “am” or “pm” marker. %tQ Milliseconds since epoch Jan 1 , 1970 00:00:00 UTC. %tR Time formatted as 24-hours e.g. “%tH:%tM“. %tr Time formatted as 12-hours e.g. “%tI:%tM:%tS %Tp“. %tS Seconds within the minute formatted with 2 digits e.g. “00” to “60”. “60” is required to support leap seconds. %ts Seconds since the epoch Jan 1, 1970 00:00:00 UTC. %tT Time formatted as 24-hours e.g. “%tH:%tM:%tS“. %tY Year formatted with 4 digits e.g. “0000” to “9999“. %ty Year formatted with 2 digits e.g. “00” to “99“. %tZ Time zone abbreviation. e.g. “UTC“, “PST“, etc. %tz Time Zone Offset from GMT e.g. “ -0800 “.
hidden #1983828
Уровень 35
14 августа 2020, 11:22
Обозначение Тип %s String %d целое число: int, long, … %f вещественное число: float, double %b boolean %c char %t Date %% Символ % %3$s треться строка
hidden #1983828
Уровень 35
14 июня 2020, 17:27
имеются в виду параметры которые подаются в main при запуске программы. Чтобы их установить в IDEA, тыкаем: Run - Edit Configurations и вписываем аргументы через пробел в поле Program arguments. Для этой задачи у нас один аргумент - имя файла, т.е. пишем в это поле например: 123.txt Далее в программе, используем этот аргумент, у нас он первый, поэтому будет args[0]. FileInputStream fileReader = new FileInputStream(args[0]);
hidden #1983828
Уровень 35
13 июня 2020, 16:41
interface Невозможно создать объект интерфейса, потому что это не класс. У интерфейса нет конструкторов. Access modifier у всех топ-левел интерфейсов или public, или default. Если не указать самостоятельно, то компилятор добавит в определение интерфейса слово abstract. Интерфейс не может быть final. Если не указать самостоятельно, то компилятор добавит в определение всех non-default (не access modifier) и non-static методов слова abstract и public. Из переменных в интерфейсе могут быть только константы, которые должны быть в нём инициализированны. Если не указать самостоятельно, то компилятор добавит в определение всех переменных слова public, final и static. Если класс, который имплементировал интерфейс не перезаписал все его методы, то этот класс должен объявляться abstract. Методы интерфейса не могут быть final.
hidden #1983828
Уровень 35
13 июня 2020, 16:40
abstract классы и abstract методы abstract class Figura{ public void abc() { some code } abstract int ploshad(); } У abstract методов не бывает тела. abstract класс может содержать, а может и не содержать abstract методы. Если в классе есть abstract метод, то этот класс тоже должен быть abstract. Невозможно создать объект abstract класса. Дочерний класс должен перезаписать все abstract методы родительского класса или тоже быть abstract. Можно использовать reference variable типа abstract класса чтобы ссылаться на объект дочернего класса, который не является abstract . abstract класс не может быть final. Переменные не могут быть abstract. У abstract классов есть конструктор. Любой перезаписанный метод может быть как abstract, так и не abstract. Для методов недопустимо сочетание: final abstract, private abstract, static abstract Интерфейс – это конструкция языка программирования, которую часто сравнивают с контрактом. В этом контракте указанно, что класс сможет делать, т.е. какие методы в нём будут присутствовать, если он имплементирует данный интерфейс. Когда класс имплементирует какой либо интерфейс, он обязуется снабдить методы этого интерфейса телами (перезаписать абстрактные методы); в противном случае класс должен стать абстрактным. Т.о. если известно, что класс имплементировал какой либо интерфейс, то в этом классе гарантированно будут методы из интерфейса.