Результатом выполнения программы будет
Anonymous Quiz
26%
Compile-time error
11%
Hello
53%
Hello World
10%
Hello Hello World
#java
Коллекции [1/3]
Queue: наследует интерфейс Collection и представляет функционал для структур данных в виде очереди
Deque: наследует интерфейс Queue и представляет функционал для двунаправленных очередей
List: наследует интерфейс Collection и представляет функциональность простых списков
Set: также расширяет интерфейс Collection и используется для хранения множеств уникальных объектов
SortedSet: расширяет интерфейс Set для создания сортированных коллекций
NavigableSet: расширяет интерфейс SortedSet для создания коллекций, в которых можно осуществлять поиск по соответствию
Map: предназначен для созданий структур данных в виде словаря, где каждый элемент имеет определенный ключ и значение. В отличие от других интерфейсов коллекций не наследуется от интерфейса Collection
Коллекции [1/3]
Коллекции образуют стройную и логичную систему. Во-первых, в основе всех коллекций лежит применение того или иного интерфейса, который определяет базовый функционал. Среди этих интерфейсов можно выделить следующие:Collection: базовый интерфейс для всех коллекций и других интерфейсов коллекций
Queue: наследует интерфейс Collection и представляет функционал для структур данных в виде очереди
Deque: наследует интерфейс Queue и представляет функционал для двунаправленных очередей
List: наследует интерфейс Collection и представляет функциональность простых списков
Set: также расширяет интерфейс Collection и используется для хранения множеств уникальных объектов
SortedSet: расширяет интерфейс Set для создания сортированных коллекций
NavigableSet: расширяет интерфейс SortedSet для создания коллекций, в которых можно осуществлять поиск по соответствию
Map: предназначен для созданий структур данных в виде словаря, где каждый элемент имеет определенный ключ и значение. В отличие от других интерфейсов коллекций не наследуется от интерфейса Collection
#java
Коллекции [2/3]
AbstractList: расширяет класс AbstractCollection и применяет интерфейс List, предназначен для создания коллекций в виде списков
AbstractSet: расширяет класс AbstractCollection и применяет интерфейс Set для создания коллекций в виде множеств
AbstractQueue: расширяет класс AbstractCollection и применяет интерфейс Queue, предназначен для создания коллекций в виде очередей и стеков
AbstractSequentialList: также расширяет класс AbstractList и реализует интерфейс List. Используется для создания связанных списков
AbstractMap: применяет интерфейс Map, предназначен для создания наборов по типу словаря с объектами в виде пары "ключ-значение"
Коллекции [2/3]
Интерфейсы из 1/3 частично реализуются абстрактными классами:AbstractCollection: базовый абстрактный класс для других коллекций, который применяет интерфейс Collection
AbstractList: расширяет класс AbstractCollection и применяет интерфейс List, предназначен для создания коллекций в виде списков
AbstractSet: расширяет класс AbstractCollection и применяет интерфейс Set для создания коллекций в виде множеств
AbstractQueue: расширяет класс AbstractCollection и применяет интерфейс Queue, предназначен для создания коллекций в виде очередей и стеков
AbstractSequentialList: также расширяет класс AbstractList и реализует интерфейс List. Используется для создания связанных списков
AbstractMap: применяет интерфейс Map, предназначен для создания наборов по типу словаря с объектами в виде пары "ключ-значение"
#java
Коллекции [3/3]
LinkedList: представляет связанный список
ArrayDeque: класс двунаправленной очереди, в которой мы можем произвести вставку и удаление как в начале коллекции, так и в ее конце
HashSet: набор объектов или хеш-множество, где каждый элемент имеет ключ - уникальный хеш-код
TreeSet: набор отсортированных объектов в виде дерева
LinkedHashSet: связанное хеш-множество
PriorityQueue: очередь приоритетов
HashMap: структура данных в виде словаря, в котором каждый объект имеет уникальный ключ и некоторое значение
TreeMap: структура данных в виде дерева, где каждый элемент имеет уникальный ключ и некоторое значение
Коллекции [3/3]
С помощью применения вышеописанных интерфейсов и абстрактных классов в Java реализуется широкая палитра классов коллекций - списки, множества, очереди, отображения и другие, среди которых можно выделить следующие:ArrayList: простой список объектов
LinkedList: представляет связанный список
ArrayDeque: класс двунаправленной очереди, в которой мы можем произвести вставку и удаление как в начале коллекции, так и в ее конце
HashSet: набор объектов или хеш-множество, где каждый элемент имеет ключ - уникальный хеш-код
TreeSet: набор отсортированных объектов в виде дерева
LinkedHashSet: связанное хеш-множество
PriorityQueue: очередь приоритетов
HashMap: структура данных в виде словаря, в котором каждый объект имеет уникальный ключ и некоторое значение
TreeMap: структура данных в виде дерева, где каждый элемент имеет уникальный ключ и некоторое значение
Схематично всю систему коллекций вкратце можно представить следующим образом:
Результатом выполнения программы будет
Anonymous Quiz
8%
Выведется 10
32%
Выведется 20
38%
Compile Time Error
22%
Runtime error, так как Foo.x is final.
#linux
Разработчик 7-Zip выпустил официальный билд для Linux спустя 22 года после выхода Windows-версии
Первая версия 7-Zip увидела свет 18 июля 1999 года, за относительно короткое время архиватор смог стать очень популярным. Относительный недостаток 7-Zip — наличие лишь версии для Windows (официальный клиент). Но сейчас, спустя всего 22 года, появился и вариант для Linux, официальный билд от разработчиков.
Версия 21.01 доступна как для Linux, так и для Windows. На сайте разработчика есть варианты для разных систем, включая 32-bit, 64-bit, x86 и ARM.
Linux-версия получила не меньше функций и возможностей, чем Windows-релиз. Единственное: пока — с 7-Zip можно работать лишь в командной строке, графического интерфейса нет. Возможно, его выпустят еще через пару десятков лет, кто знает.
Разработчик 7-Zip выпустил официальный билд для Linux спустя 22 года после выхода Windows-версии
Первая версия 7-Zip увидела свет 18 июля 1999 года, за относительно короткое время архиватор смог стать очень популярным. Относительный недостаток 7-Zip — наличие лишь версии для Windows (официальный клиент). Но сейчас, спустя всего 22 года, появился и вариант для Linux, официальный билд от разработчиков.
Версия 21.01 доступна как для Linux, так и для Windows. На сайте разработчика есть варианты для разных систем, включая 32-bit, 64-bit, x86 и ARM.
Linux-версия получила не меньше функций и возможностей, чем Windows-релиз. Единственное: пока — с 7-Zip можно работать лишь в командной строке, графического интерфейса нет. Возможно, его выпустят еще через пару десятков лет, кто знает.
#OOP
Overriding vs Overloading
Overriding implements Runtime Polymorphism whereas Overloading implements Compile time polymorphism.
The method Overriding occurs between superclass and subclass. Overloading occurs between the methods in the same class.
Overriding methods have the same signature i.e. same name and method arguments. Overloaded method names are the same but the parameters are different.
With Overloading, the method to call is determined at the compile-time. With overriding, the method call is determined at the runtime based on the object type.
If overriding breaks, it can cause serious issues in our program because the effect will be visible at runtime. Whereas if overloading breaks, the compile-time error will come and it’s easy to fix.
Overriding vs Overloading
Overriding implements Runtime Polymorphism whereas Overloading implements Compile time polymorphism.
The method Overriding occurs between superclass and subclass. Overloading occurs between the methods in the same class.
Overriding methods have the same signature i.e. same name and method arguments. Overloaded method names are the same but the parameters are different.
With Overloading, the method to call is determined at the compile-time. With overriding, the method call is determined at the runtime based on the object type.
If overriding breaks, it can cause serious issues in our program because the effect will be visible at runtime. Whereas if overloading breaks, the compile-time error will come and it’s easy to fix.
#Spring #java #backEnd
Релиз Spring Native Beta
Недавно команда, занимающаяся портированием Spring для GraalVM, выпустила первый крупный релиз - Spring Native Beta. Вместе с создателями GraalVM они смогли пофиксить множество багов как в самом компиляторе так и спринге. Теперь у проекта появилась официальная поддержка, свой цикл релизов и его можно щупать.
Согласно документации, ключевые различия между обычным JVM и нативной реализацией заключаются в следующем:
Статический анализ всего приложения выполняется во время сборки.
Неиспользуемые компоненты удаляются во время сборки.
Рефлексия, ресурсы и динамические прокси могут быть настроены только с помощью дополнительных конфигураций.
На время сборки фиксируются все компоненты в Classpath.
Нет ленивой загрузки класса: при загрузке все, что поставляется в исполняемых файлах, будет загружено в память. Например, чтобы вызов Class.forName ("myClass") отработал верно, нужно иметь myClass в файле конфигурации. Если в файле конфигурации не будет найден класс, который запрашивается для динамической загрузки класса, будет выбрано исключение ClassNotFoundException
Часть кода будет запущена во время сборки, чтобы правильно связать компоненты. Например, тесты.
https://www.youtube.com/watch?v=96n_YpGx-JU
Релиз Spring Native Beta
Недавно команда, занимающаяся портированием Spring для GraalVM, выпустила первый крупный релиз - Spring Native Beta. Вместе с создателями GraalVM они смогли пофиксить множество багов как в самом компиляторе так и спринге. Теперь у проекта появилась официальная поддержка, свой цикл релизов и его можно щупать.
Согласно документации, ключевые различия между обычным JVM и нативной реализацией заключаются в следующем:
Статический анализ всего приложения выполняется во время сборки.
Неиспользуемые компоненты удаляются во время сборки.
Рефлексия, ресурсы и динамические прокси могут быть настроены только с помощью дополнительных конфигураций.
На время сборки фиксируются все компоненты в Classpath.
Нет ленивой загрузки класса: при загрузке все, что поставляется в исполняемых файлах, будет загружено в память. Например, чтобы вызов Class.forName ("myClass") отработал верно, нужно иметь myClass в файле конфигурации. Если в файле конфигурации не будет найден класс, который запрашивается для динамической загрузки класса, будет выбрано исключение ClassNotFoundException
Часть кода будет запущена во время сборки, чтобы правильно связать компоненты. Например, тесты.
https://www.youtube.com/watch?v=96n_YpGx-JU
YouTube
Announcing Spring Native Beta!
Sébastien Deleuze, Andy Clement, Brian Clozel, Jens Schauder, Ria Stein & David Syer announce Spring Native Beta v0.9.0. For more details check out the blog post at https://spring.io/blog/2021/03/11/announcing-spring-native-beta
00:00 - Introduction (Sébastien…
00:00 - Introduction (Sébastien…
What is the return type of lambda expression?
Anonymous Quiz
4%
String
20%
Object
22%
void
54%
Function
#space #science
SpaceX объявил первый орбитальный запуск Starship летом 2021 года. Teslarati
SpaceX считает, что у нее есть шесть месяцев запаса времени, чтобы пройти предварительные испытания сверхтяжелых ускорителей (возможно, включая один или несколько прыжков), оценить модернизированную конструкцию Starship (начиная с SN15), завершить орбитальный стартовый комплекс и доставить до конца года — два десятка двигателей Raptor, способных вывести корабль на орбиту. Хотя пока неясно, также возможно, что эта цель потребует от SpaceX квалификации и поставки первых летных двигателей Raptor Vacuum — еще одна серьезная проблема среди многих.
Заявленная цель означает, что существует вполне реальная вероятность того, что Starship достигнет орбиты до конца 2021 года. Цели, которую генеральный директор SpaceX Илон Маск и главный операционный директор/президент Гвинн Шотвелл повторяли в течение последних нескольких месяцев.
https://twitter.com/NASASpaceflight/status/1371480144699871237?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1371480144699871237%7Ctwgr%5E%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Fwww.teslarati.com%2Fspacex-starship-orbital-launch-debut-summer-2021%2F
SpaceX объявил первый орбитальный запуск Starship летом 2021 года. Teslarati
SpaceX считает, что у нее есть шесть месяцев запаса времени, чтобы пройти предварительные испытания сверхтяжелых ускорителей (возможно, включая один или несколько прыжков), оценить модернизированную конструкцию Starship (начиная с SN15), завершить орбитальный стартовый комплекс и доставить до конца года — два десятка двигателей Raptor, способных вывести корабль на орбиту. Хотя пока неясно, также возможно, что эта цель потребует от SpaceX квалификации и поставки первых летных двигателей Raptor Vacuum — еще одна серьезная проблема среди многих.
Заявленная цель означает, что существует вполне реальная вероятность того, что Starship достигнет орбиты до конца 2021 года. Цели, которую генеральный директор SpaceX Илон Маск и главный операционный директор/президент Гвинн Шотвелл повторяли в течение последних нескольких месяцев.
https://twitter.com/NASASpaceflight/status/1371480144699871237?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1371480144699871237%7Ctwgr%5E%7Ctwcon%5Es1_&ref_url=https%3A%2F%2Fwww.teslarati.com%2Fspacex-starship-orbital-launch-debut-summer-2021%2F
Twitter
Chris B - NSF
Starship SN11 prepares for Static Fire/Flight. Super Heavy BN1 Ground Testing. BN3 and SN20 targetting orbital flight - (subject to change, especially the schedule!). Photos/vids: Mary (@BocaChicaGal) and Jack (@thejackbeyer). Words by me: https://t.co/ENA0dM82f0
#java
Основные методы класса String
concat():
Основные методы класса String
concat():
объединяет строки
valueOf(): преобразует объект в строковый вид
join(): соединяет строки с учетом разделителя
сompare(): сравнивает две строки
charAt(): возвращает символ строки по индексу
getChars(): возвращает группу символов
equals(): сравнивает строки с учетом регистра
equalsIgnoreCase(): сравнивает строки без учета регистра
indexOf(): находит индекс первого вхождения подстроки в
строку
lastIndexOf(): находит индекс последнего вхождения подстроки в строку
replace(): заменяет в строке одну подстроку на другую
trim(): удаляет начальные и конечные пробелы
substring(): возвращает подстроку, начиная с определенного индекса до конца или до определенного индекса
toLowerCase(): переводит все символы строки в нижний регистр
#Algorithms #AI
Новый алгоритм способен распознать дипфейк по отражению в глазах
Так что там с отражениями? Глаза человека находятся ближе между собой, чем источник света. Когда мы берем реальную фотографию, то ее отражения в нашем правом и левом глазах одинаковые. Они могут иметь отличия, но незначительные. Так вот, в алгоритмах для подмены изображений отсутствуют «физические ограничения, описывающие поведение отражений». Как итог, создаваемые сетью лица имеют отличные между собой отражения и блики.
Для правильной работы алгоритма необходимо соблюдение следующих условий:
1) Оба глаза смотрят в камеру. Линия, соединяющая глаза, параллельна камере.
2) Глаза отдалены от источника света или отражения.
3) Источники света или отражатели видимы обоими глазами.
Но есть и минус. Алгоритм отлично работает с портретным изображением и ярким светом. То есть практически в идеальных условиях. Помимо этого, алгоритм сравнивает не форму изображение в целом, а разбивает фотографии на пиксели.
Новый алгоритм способен распознать дипфейк по отражению в глазах
Так что там с отражениями? Глаза человека находятся ближе между собой, чем источник света. Когда мы берем реальную фотографию, то ее отражения в нашем правом и левом глазах одинаковые. Они могут иметь отличия, но незначительные. Так вот, в алгоритмах для подмены изображений отсутствуют «физические ограничения, описывающие поведение отражений». Как итог, создаваемые сетью лица имеют отличные между собой отражения и блики.
Для правильной работы алгоритма необходимо соблюдение следующих условий:
1) Оба глаза смотрят в камеру. Линия, соединяющая глаза, параллельна камере.
2) Глаза отдалены от источника света или отражения.
3) Источники света или отражатели видимы обоими глазами.
Но есть и минус. Алгоритм отлично работает с портретным изображением и ярким светом. То есть практически в идеальных условиях. Помимо этого, алгоритм сравнивает не форму изображение в целом, а разбивает фотографии на пиксели.
#hardware
Китайцы воскрешают оптические носители, разработав лазерный диск емкостью 700 ТБ
Ученые при поддержке коллег из Национального университета Сингапура, смогли добиться размещения на диске обычного размера объема данных в 700 ТБ. Диаметр диска составляет 120 мм — это текущий стандарт для практически любых оптических дисков, включая CD, DVD и Blu-ray.
На данный момент самым емким является четырехслойный Blu-ray диск, на котором помещается 128 ГБ данных. Стандартный же однослойный Blu-ray диск позволяет записать на нем не более 25 ГБ информации. Получается, что один новый диск заменяет сразу 28 тысяч однослойных Blu-ray дисков.
Разработчики назвали свою технологию «технологией субдифракционной оптической записи». Одно из ее достоинств, кроме возможности записывать огромные массивы информации, — использование недорогих лазеров непрерывного действия. Особых препятствий в массовом выпуске приводов, поддерживающих новую технологию, нет.
Главный секрет здесь — в материале, на который производится запись. Это не металлическая тонкая фольга, а композитный материал. Всех секретов ученые не раскрывают, поскольку планируют коммерциализировать технологию. Но известно, что это нанокомпозит на основе специальных частиц с добавлением лантаноида с «хлопьями» оксида графена.
Китайцы воскрешают оптические носители, разработав лазерный диск емкостью 700 ТБ
Ученые при поддержке коллег из Национального университета Сингапура, смогли добиться размещения на диске обычного размера объема данных в 700 ТБ. Диаметр диска составляет 120 мм — это текущий стандарт для практически любых оптических дисков, включая CD, DVD и Blu-ray.
На данный момент самым емким является четырехслойный Blu-ray диск, на котором помещается 128 ГБ данных. Стандартный же однослойный Blu-ray диск позволяет записать на нем не более 25 ГБ информации. Получается, что один новый диск заменяет сразу 28 тысяч однослойных Blu-ray дисков.
Разработчики назвали свою технологию «технологией субдифракционной оптической записи». Одно из ее достоинств, кроме возможности записывать огромные массивы информации, — использование недорогих лазеров непрерывного действия. Особых препятствий в массовом выпуске приводов, поддерживающих новую технологию, нет.
Главный секрет здесь — в материале, на который производится запись. Это не металлическая тонкая фольга, а композитный материал. Всех секретов ученые не раскрывают, поскольку планируют коммерциализировать технологию. Но известно, что это нанокомпозит на основе специальных частиц с добавлением лантаноида с «хлопьями» оксида графена.
#Spring
What is Inversion of Control?
In software engineering, inversion of control (IoC) is a programming principle. IoC inverts the flow of control as compared to traditional control flow. In IoC, custom-written portions of a computer program receive the flow of control from a generic framework. A software architecture with this design inverts control as compared to traditional procedural programming: in traditional programming, the custom code that expresses the purpose of the program calls into reusable libraries to take care of generic tasks, but with inversion of control, it is the framework that calls into the custom, or task-specific, code.
What is Inversion of Control?
In software engineering, inversion of control (IoC) is a programming principle. IoC inverts the flow of control as compared to traditional control flow. In IoC, custom-written portions of a computer program receive the flow of control from a generic framework. A software architecture with this design inverts control as compared to traditional procedural programming: in traditional programming, the custom code that expresses the purpose of the program calls into reusable libraries to take care of generic tasks, but with inversion of control, it is the framework that calls into the custom, or task-specific, code.
Which of the following statements is false about objects?
Anonymous Quiz
8%
An instance of a class is an object
26%
Objects can access both static and instance data
44%
Objects do not permit encapsulation
23%
Object is the super class of all other classes
Что такое куча в БД?
Куча(Heap) — это таблица без кластерного индекса. Данные в куче хранятся без какого-либо логического порядка. Между страницами нет никакой связи. Хотя для кучи можно создать некластерный индекс, который будет содержать физический адрес исходных данных. В некластерном индексе для каждой записи содержится номер файла, номер страницы и номер слота внутри этой страницы.
Куча(Heap) — это таблица без кластерного индекса. Данные в куче хранятся без какого-либо логического порядка. Между страницами нет никакой связи. Хотя для кучи можно создать некластерный индекс, который будет содержать физический адрес исходных данных. В некластерном индексе для каждой записи содержится номер файла, номер страницы и номер слота внутри этой страницы.