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) — это таблица без кластерного индекса. Данные в куче хранятся без какого-либо логического порядка. Между страницами нет никакой связи. Хотя для кучи можно создать некластерный индекс, который будет содержать физический адрес исходных данных. В некластерном индексе для каждой записи содержится номер файла, номер страницы и номер слота внутри этой страницы.
#backend #web
Реляционные и нереляционные базы данных
🔸Реляционные базы данных используют язык структурированных запросов (SQL) для того, чтобы обрабатывать данные и управлять ими.
С одной стороны, это довольно удобно: SQL - один из наиболее разносторонних и общеупотребимых вариантов, так что это безопасный выбор. Также этот язык подходит для сложных запросов.
С другой стороны, с этим языком идут определенные ограничения. В SQL нужно использовать заданные наперед схемы и определять структуру данных перед началом работы с нею. К тому же, все данные должны иметь одну и ту же структуру. Так как перемена в структуре может обернуться сложностями и разрушить всю систему.
🔸Нереляционные базы данных, напротив, обладают гибкими схемами для неструктурированных данных. Они могут храниться по-разному: в колонках, документах, графах или в виде хранилища «ключ-значение». Эта гибкость позволяет:
▫️Создавать документы, не определяя их структуру заранее;
▫️Каждый документ может обладать собственной уникальной структурой;
▫️Синтаксис может различаться в разных базах данных;
▫️В процессе работы можно добавлять новые поля.
Реляционные и нереляционные базы данных
🔸Реляционные базы данных используют язык структурированных запросов (SQL) для того, чтобы обрабатывать данные и управлять ими.
С одной стороны, это довольно удобно: SQL - один из наиболее разносторонних и общеупотребимых вариантов, так что это безопасный выбор. Также этот язык подходит для сложных запросов.
С другой стороны, с этим языком идут определенные ограничения. В SQL нужно использовать заданные наперед схемы и определять структуру данных перед началом работы с нею. К тому же, все данные должны иметь одну и ту же структуру. Так как перемена в структуре может обернуться сложностями и разрушить всю систему.
🔸Нереляционные базы данных, напротив, обладают гибкими схемами для неструктурированных данных. Они могут храниться по-разному: в колонках, документах, графах или в виде хранилища «ключ-значение». Эта гибкость позволяет:
▫️Создавать документы, не определяя их структуру заранее;
▫️Каждый документ может обладать собственной уникальной структурой;
▫️Синтаксис может различаться в разных базах данных;
▫️В процессе работы можно добавлять новые поля.
#science
Новая металинза толщиной в микрон
Инженеры из Массачусетского технологического института разработали адаптивные «металинзы», которые смогут обеспечить более эффективную фокусировку объективов камер, микроскопов, телескопов и прочих систем визуализации без использования громоздких приводных механизмов.
Исследователи выгравировали поверхность материала крошечными структурами с точным рисунком, которые работают вместе как метаповерхность, уникальным образом преломляя или отражая свет. При изменении свойств материала соответственно изменяется и оптическая функция метаповерхности. В этом случае, когда материал имеет комнатную температуру, метаповерхность фокусирует свет для создания четкого изображения объекта на определенном расстоянии. После нагрева материала его атомная структура изменяется, и в ответ метаповерхность перенаправляет свет, чтобы сфокусироваться на более удаленном объекте.
Таким образом, новая активная металинза может настраивать фокус без необходимости использования громоздких механических элементов.
Новая металинза толщиной в микрон
Инженеры из Массачусетского технологического института разработали адаптивные «металинзы», которые смогут обеспечить более эффективную фокусировку объективов камер, микроскопов, телескопов и прочих систем визуализации без использования громоздких приводных механизмов.
Исследователи выгравировали поверхность материала крошечными структурами с точным рисунком, которые работают вместе как метаповерхность, уникальным образом преломляя или отражая свет. При изменении свойств материала соответственно изменяется и оптическая функция метаповерхности. В этом случае, когда материал имеет комнатную температуру, метаповерхность фокусирует свет для создания четкого изображения объекта на определенном расстоянии. После нагрева материала его атомная структура изменяется, и в ответ метаповерхность перенаправляет свет, чтобы сфокусироваться на более удаленном объекте.
Таким образом, новая активная металинза может настраивать фокус без необходимости использования громоздких механических элементов.
#utils
Лучший набор ссылок для разработчика
Обязательно ознакомьтесь -> https://habr.com/ru/company/JetBrains-education/blog/547768/
Лучший набор ссылок для разработчика
Обязательно ознакомьтесь -> https://habr.com/ru/company/JetBrains-education/blog/547768/
Хабр
Полезные материалы для разработчика
Существует много полезных инструментов, которые помогают автоматизировать рутинную работу и тем самым облегчить жизнь разработчика. Выпускнику и преподавателю Computer Science Center , Равилю...
#java
Что такое Lombok, и зачем он нужен?
Project Lombok(библиотека) помогает с некоторыми неудобствами Java в таких вещах, как генерация геттеров и сеттеров с аннотациями и даже простая генерация JavaBean с @Data. Это может действительно помочь, особенно в 50 различных объектах событий, где у вас есть до 7 различных полей, которые нужно построить и скрыть с помощью геттеров. Благодаря Lombok можно описывать неявно толмуды кода.
https://habr.com/ru/post/345520/
Что такое Lombok, и зачем он нужен?
Project Lombok(библиотека) помогает с некоторыми неудобствами Java в таких вещах, как генерация геттеров и сеттеров с аннотациями и даже простая генерация JavaBean с @Data. Это может действительно помочь, особенно в 50 различных объектах событий, где у вас есть до 7 различных полей, которые нужно построить и скрыть с помощью геттеров. Благодаря Lombok можно описывать неявно толмуды кода.
https://habr.com/ru/post/345520/
Хабр
Шпаргалки Java программиста 10: Lombok
Lombok — проект по добавлению дополнительной функциональности в Java c помощью изменения исходного кода перед Java компиляцией. По сути, проект Lombok позвол...
#definition
Закон Мура - (англ. Moore's law) — эмпирическое наблюдение, изначально сделанное Гордоном Муром, согласно которому (в современной формулировке) количество транзисторов, размещаемых на кристалле интегральной схемы, удваивается каждые 24 месяца. Часто цитируемый интервал в 18 месяцев связан с прогнозом Давида Хауса из Intel, по мнению которого, производительность процессоров должна удваиваться каждые 18 месяцев из-за сочетания роста количества транзисторов и увеличения тактовых частот процессоров.
Рост числа транзисторов на кристалле микропроцессора показан на графике снизу. Точки соответствуют наблюдаемым данным, а прямая — периоду удвоения в 24 месяца.
Закон Мура - (англ. Moore's law) — эмпирическое наблюдение, изначально сделанное Гордоном Муром, согласно которому (в современной формулировке) количество транзисторов, размещаемых на кристалле интегральной схемы, удваивается каждые 24 месяца. Часто цитируемый интервал в 18 месяцев связан с прогнозом Давида Хауса из Intel, по мнению которого, производительность процессоров должна удваиваться каждые 18 месяцев из-за сочетания роста количества транзисторов и увеличения тактовых частот процессоров.
Рост числа транзисторов на кристалле микропроцессора показан на графике снизу. Точки соответствуют наблюдаемым данным, а прямая — периоду удвоения в 24 месяца.
#web
Flutter вот-вот завоюет Web
Если вы слышали о Flutter, то, скорее всего, слышали о нем в контексте разработки мобильных приложений. Так какое отношение он имеет к веб-сайтам? С обычной HTML-страницей вы работаете как с документом. Во Flutter «страница» (или то, с чем взаимодействует пользователь) фактически рисуется на канве (canvas) HTML. Flutter фактически контролирует каждый пиксель, который рисуется на экране, и не использует HTML, JavaScript или CSS для определения его внешнего вида или логики. (Технически говоря, родной код Dart переносится на JavaScript через dart2js, но на самом деле никакая бизнес-логика не пишется на JavaScript.)
Понимаю — это звучит странно и, по крайней мере, рисование непосредственно на канве, не очень производительно. Но давайте углубимся в этот вопрос.
*Что делать, если вы хотите, чтобы пользователь прокручивал страницу слева направо, а не сверху вниз? Это уже не так просто сделать на обычной веб-странице. Во Flutter, если вы хотите сделать определенную часть контента горизонтально прокручиваемым, а не вертикально прокручиваемым, это так же просто, как сделать виджеты в SingleChildScrollView.
*Flutter использует Dart в качестве языка. Весь внешний вид приложения и бизнес-логика написаны на нем. Dart поставляется со статической проверкой типов данных, и скоро появится null safety (прим. переводчика: уже появился), поэтому каждая строка кода в вашем приложении, будь то визуальное описание вашего приложения, придание ему стиля или управление бизнес-логикой вашего приложения, полностью типобезопасна.
*Поскольку Flutter визуализирует каждый пиксель на экране, это дает дизайнерам и разработчикам большой контроль над тем, что именно они хотят видеть в приложении.
Flutter вот-вот завоюет Web
Если вы слышали о Flutter, то, скорее всего, слышали о нем в контексте разработки мобильных приложений. Так какое отношение он имеет к веб-сайтам? С обычной HTML-страницей вы работаете как с документом. Во Flutter «страница» (или то, с чем взаимодействует пользователь) фактически рисуется на канве (canvas) HTML. Flutter фактически контролирует каждый пиксель, который рисуется на экране, и не использует HTML, JavaScript или CSS для определения его внешнего вида или логики. (Технически говоря, родной код Dart переносится на JavaScript через dart2js, но на самом деле никакая бизнес-логика не пишется на JavaScript.)
Понимаю — это звучит странно и, по крайней мере, рисование непосредственно на канве, не очень производительно. Но давайте углубимся в этот вопрос.
*Что делать, если вы хотите, чтобы пользователь прокручивал страницу слева направо, а не сверху вниз? Это уже не так просто сделать на обычной веб-странице. Во Flutter, если вы хотите сделать определенную часть контента горизонтально прокручиваемым, а не вертикально прокручиваемым, это так же просто, как сделать виджеты в SingleChildScrollView.
*Flutter использует Dart в качестве языка. Весь внешний вид приложения и бизнес-логика написаны на нем. Dart поставляется со статической проверкой типов данных, и скоро появится null safety (прим. переводчика: уже появился), поэтому каждая строка кода в вашем приложении, будь то визуальное описание вашего приложения, придание ему стиля или управление бизнес-логикой вашего приложения, полностью типобезопасна.
*Поскольку Flutter визуализирует каждый пиксель на экране, это дает дизайнерам и разработчикам большой контроль над тем, что именно они хотят видеть в приложении.
Какие из нижеперечисленных исключений в java unchecked?
Anonymous Quiz
12%
Exception
53%
ClassCastException
23%
FileNotFoundException
12%
IOException
#definition #java
Thymeleaf — современный серверный механизм Java-шаблонов для веб- и автономных сред, способный обрабатывать HTML, XML, JavaScript, CSS и даже простой текст.
Основной целью Thymeleaf является создание элегантного и удобного способа шаблонизации. Чтобы достичь этого, Thymeleaf основывается на концепции Natural Templates, чтобы внедрить свою логику в файлы шаблонов таким образом, чтобы этот шаблон не влиял на отображение прототипа дизайна. Это улучшает коммуникацию в команде и уменьшает разрыв между дизайнерско-программистскими группами.
Thymeleaf — современный серверный механизм Java-шаблонов для веб- и автономных сред, способный обрабатывать HTML, XML, JavaScript, CSS и даже простой текст.
Основной целью Thymeleaf является создание элегантного и удобного способа шаблонизации. Чтобы достичь этого, Thymeleaf основывается на концепции Natural Templates, чтобы внедрить свою логику в файлы шаблонов таким образом, чтобы этот шаблон не влиял на отображение прототипа дизайна. Это улучшает коммуникацию в команде и уменьшает разрыв между дизайнерско-программистскими группами.
#java
Абстрактные классы
Производный класс обязан переопределить и реализовать все абстрактные методы, которые имеются в базовом абстрактном классе. Также следует учитывать, что если класс имеет хотя бы один абстрактный метод, то данный класс должен быть определен как абстрактный.
Зачем нужны абстрактные классы? Допустим, мы делаем программу для обслуживания банковских операций и определяем в ней три класса: Person, который описывает человека, Employee, который описывает банковского служащего, и класс Client, который представляет клиента банка. Очевидно, что классы Employee и Client будут производными от класса Person, так как оба класса имеют некоторые общие поля и методы. И так как все объекты будут представлять либо сотрудника, либо клиента банка, то напрямую мы от класса Person создавать объекты не будем. Поэтому имеет смысл сделать его абстрактным.
Абстрактные классы
Абстрактный класс
— это класс, в объявлении которого есть ключевое слово abstract. Его отличие от обычного класса в том, что нельзя создать объект или экземпляр данного класса. Все остальное в абстрактном классе остается таким как и в обычном. Производный класс обязан переопределить и реализовать все абстрактные методы, которые имеются в базовом абстрактном классе. Также следует учитывать, что если класс имеет хотя бы один абстрактный метод, то данный класс должен быть определен как абстрактный.
Зачем нужны абстрактные классы? Допустим, мы делаем программу для обслуживания банковских операций и определяем в ней три класса: Person, который описывает человека, Employee, который описывает банковского служащего, и класс Client, который представляет клиента банка. Очевидно, что классы Employee и Client будут производными от класса Person, так как оба класса имеют некоторые общие поля и методы. И так как все объекты будут представлять либо сотрудника, либо клиента банка, то напрямую мы от класса Person создавать объекты не будем. Поэтому имеет смысл сделать его абстрактным.
#java
Почему в Java нет множественного наследования, но реализация нескольких интерфейсов разрешена?
Проблема множественного наследования заключается в том, что два класса могут определять разные способы выполнения одного и того же, и подкласс не может выбрать, какой из них выбрать.
C помощью интерфейса вы описываете то, что может сделать класс, а не заимствуете метод другого класса. Несколько интерфейсов гораздо реже вызывают сложные конфликты, которые необходимо разрешить, чем несколько родительских классов.
Почему в Java нет множественного наследования, но реализация нескольких интерфейсов разрешена?
Проблема множественного наследования заключается в том, что два класса могут определять разные способы выполнения одного и того же, и подкласс не может выбрать, какой из них выбрать.
C помощью интерфейса вы описываете то, что может сделать класс, а не заимствуете метод другого класса. Несколько интерфейсов гораздо реже вызывают сложные конфликты, которые необходимо разрешить, чем несколько родительских классов.
#java
Разница между абстрактным классом и интерфейсом в Java
Короткое различие:
Интерфейс нужен обычно когда описывается только логика взаимодействия между объектами. Например, один класс хочет дать другому возможность доступа к некоторым своим методам, но не хочет себя «раскрывать». Поэтому он просто реализует интерфейс.
Абстрактный класс нужен, когда нужно семейство классов, у которых есть много общего. Конечно, можно применить и интерфейс, но тогда нужно будет писать много идентичного кода.
Можно считать, что любой интерфейс — это уже абстрактный класс, но не наоборот.
Разница между абстрактным классом и интерфейсом в Java
Короткое различие:
Абстрактный класс
— это класс, у которого не реализован один или больше методов.Интерфейс
— это абстрактный класс, у которого ни один метод не реализован, все они публичные и нет переменных класса.Интерфейс нужен обычно когда описывается только логика взаимодействия между объектами. Например, один класс хочет дать другому возможность доступа к некоторым своим методам, но не хочет себя «раскрывать». Поэтому он просто реализует интерфейс.
Абстрактный класс нужен, когда нужно семейство классов, у которых есть много общего. Конечно, можно применить и интерфейс, но тогда нужно будет писать много идентичного кода.
Можно считать, что любой интерфейс — это уже абстрактный класс, но не наоборот.
#UI #hardware
Retina (в переводе с лат. — «сетчатка») — общее маркетинговое название ЖК и OLED дисплеев, используемых в устройствах Apple с 2010 года. Они отличаются повышенной плотностью пикселей, с тем, чтобы человеческий глаз не мог различить отдельные пиксели, из которых состоит изображение. И в то же время, название Retina запрещается использовать в продуктах других брендов для дисплеев, имеющих такую же или даже большую плотность пикселей.
Для технологии нет устоявшегося норматива по плотности пикселей: Apple определяет различную плотность для разных устройств и в соответствии с типичным расстоянием просмотра для данного класса устройств — чем больше типичное расстояние, тем меньшей плотности пикселей достаточно для их неразличимости.
Retina (в переводе с лат. — «сетчатка») — общее маркетинговое название ЖК и OLED дисплеев, используемых в устройствах Apple с 2010 года. Они отличаются повышенной плотностью пикселей, с тем, чтобы человеческий глаз не мог различить отдельные пиксели, из которых состоит изображение. И в то же время, название Retina запрещается использовать в продуктах других брендов для дисплеев, имеющих такую же или даже большую плотность пикселей.
Для технологии нет устоявшегося норматива по плотности пикселей: Apple определяет различную плотность для разных устройств и в соответствии с типичным расстоянием просмотра для данного класса устройств — чем больше типичное расстояние, тем меньшей плотности пикселей достаточно для их неразличимости.
#java
Интерфейс или абстрактный класс?
Выбор между интерфейсом и абстрактным классом зависит от многих факторов. Давайте рассмотрим основные аргументы в пользу интерфейсов и абстрактных классов.
1. Java не поддерживает множественное наследование, поэтому каждый класс может наследовать только один суперкласс. При этом любой класс может реализовать несколько интерфейсов. Именно поэтому интерфейсы являются лучшим выбором для вашего проекта. Также написание кода с использованием интерфейсов является одним из лучших практик программирования на Java.
2. Если вы решили написать много методов, то лучшим решением для вас будет абстрактный класс. Все дело в том, что мы можем обеспечить реализацию по умолчанию для некоторых методов, которые являются общими для всех подклассов.
3. Если мы захотим добавить или удалить метод из интерфейса, то с этим могут возникнуть проблемы. Все дело в том, что мы не можем объявить дополнительные методы в интерфейсе без изменения всех классов, которые реализуют этот интерфейс.
Интерфейс или абстрактный класс?
Выбор между интерфейсом и абстрактным классом зависит от многих факторов. Давайте рассмотрим основные аргументы в пользу интерфейсов и абстрактных классов.
1. Java не поддерживает множественное наследование, поэтому каждый класс может наследовать только один суперкласс. При этом любой класс может реализовать несколько интерфейсов. Именно поэтому интерфейсы являются лучшим выбором для вашего проекта. Также написание кода с использованием интерфейсов является одним из лучших практик программирования на Java.
2. Если вы решили написать много методов, то лучшим решением для вас будет абстрактный класс. Все дело в том, что мы можем обеспечить реализацию по умолчанию для некоторых методов, которые являются общими для всех подклассов.
3. Если мы захотим добавить или удалить метод из интерфейса, то с этим могут возникнуть проблемы. Все дело в том, что мы не можем объявить дополнительные методы в интерфейсе без изменения всех классов, которые реализуют этот интерфейс.
#java
Разница между Hashtable и HashMap в Java
(Обратите внимание. Под синхронизированностью (
Разница между Hashtable и HashMap в Java
⟡ HashMap
реализует интерфейс Map, который подразумевает хранение данных в виде пар ключ-значение. HashMap не является синхронизированным и потокобезопасным. Также HashMap допускает хранение null ключей и значений, но недопускает дублей ключей. Следует помнить, что для null-ключа hashCode() всегда равен нулю.⟡ Hashtable
реализует интерфейс Map, которая хранит пары ключ-значения. Hashtable является синхронизированной и потокобезопасной коллекцией. Hashtable не допускается null-ключей и дублирующих ключей, а также null-значений.(Обратите внимание. Под синхронизированностью (
synchonized
) имеется ввиду следующее: только один поток может изменить одну таблицу в одно и то же время. Когда какой-то поток работает c Hashtable, то она закрыта для других потоков, пока не отработает один)What is an aggregate object?
Anonymous Quiz
14%
An object with only primitive attributes
23%
An instance of a class which has only static methods
63%
An instance which has other objects
#java
Лямбда-выражения в Java — что это такое, зачем нужны и как выглядят
Лямбда-выражения в Java
Лямбда-выражения в Java — что это такое, зачем нужны и как выглядят
Лямбда-выражения или анонимные функции
— это блоки кода с параметрами, которые можно вызвать из другого места программы. Они называются анонимными, потому что в отличие от функций, у них нет имён.Лямбда-выражения в Java
⟡ Присутствуют начиная с 8 версии.
⟡ Являются анонимными классами, реализующими метод функционального интерфейса.
⟡ Имеют доступ только к final (или effectively final) переменным из охватывающей области видимости (для потокобезопасности).
⟡ Не могут возвращать значение в каких-то ветках, а в других не возвращать.
⟡ Позволяют уменьшить количество кода и повысить его читаемость.
Лямбда-выражения в Java состоят из параметров и стрелки —> отделяющей тело функции. Скобки нужны, если параметров 0 или больше одного. Для однострочных лямбд ключевое слово return не обязательно.(список параметров) -> тело лямбды
#hardware #backEnd
Как создатель node.js сам разочаровался в нем
Примерно за полгода до конференции JSConf 2018 Райан Даль решил попробовать работать со своим детищем, спустя почти 10 лет с момента его создания. Нельзя сказать, что он был доволен тем, что увидел. Несомненно, проект сильно развился, но во время разработки Node.js Райан был слишком зациклен на решении проблем ввода/вывода, потому допустил некоторые ошибки, которые потом превратились в системные проблемы. Поскольку платформа стала чрезвычайно популярной, то уже поздно было что-то глобально менять, не поломав все зависимости и совместимость.
В 2011 году он устроил небольшую «пятиминутку ненависти» на Google+. Сама соцсеть давно закрыта, но интернет все помнит.
Давайте вспомним основные тезисы, которые были в нем рассмотрены:
Отсутствие Promises, от которых отказались на начальном этапе разработки.
Проблема с безопасностью. Приложение на Node.js получает доступ к локальному диску, сети и вообще ко всей системе сразу.
Как создатель node.js сам разочаровался в нем
Примерно за полгода до конференции JSConf 2018 Райан Даль решил попробовать работать со своим детищем, спустя почти 10 лет с момента его создания. Нельзя сказать, что он был доволен тем, что увидел. Несомненно, проект сильно развился, но во время разработки Node.js Райан был слишком зациклен на решении проблем ввода/вывода, потому допустил некоторые ошибки, которые потом превратились в системные проблемы. Поскольку платформа стала чрезвычайно популярной, то уже поздно было что-то глобально менять, не поломав все зависимости и совместимость.
В 2011 году он устроил небольшую «пятиминутку ненависти» на Google+. Сама соцсеть давно закрыта, но интернет все помнит.
Давайте вспомним основные тезисы, которые были в нем рассмотрены:
Отсутствие Promises, от которых отказались на начальном этапе разработки.
Проблема с безопасностью. Приложение на Node.js получает доступ к локальному диску, сети и вообще ко всей системе сразу.