#java
Wildcards (Generics)
Знак вопроса (?) Известен как подстановочный знак в универсальном программировании. Представляет неизвестный тип.
Подстановочный знак можно использовать в различных ситуациях, таких как тип параметра, поля или локальной переменной; иногда как возвращаемый тип.
В отличие от массивов, разные экземпляры универсального типа несовместимы друг с другом даже явно. Эта несовместимость может быть смягчена подстановочным знаком, если ? используется как фактический параметр типа.
Wildcards (Generics)
Знак вопроса (?) Известен как подстановочный знак в универсальном программировании. Представляет неизвестный тип.
Подстановочный знак можно использовать в различных ситуациях, таких как тип параметра, поля или локальной переменной; иногда как возвращаемый тип.
В отличие от массивов, разные экземпляры универсального типа несовместимы друг с другом даже явно. Эта несовместимость может быть смягчена подстановочным знаком, если ? используется как фактический параметр типа.
#patterns
Одиночка (англ. Singleton) — порождающий шаблон проектирования, гарантирующий, что в однопоточном приложении будет единственный экземпляр некоторого класса, и предоставляющий глобальную точку доступа к этому экземпляру.
Одиночка (англ. Singleton) — порождающий шаблон проектирования, гарантирующий, что в однопоточном приложении будет единственный экземпляр некоторого класса, и предоставляющий глобальную точку доступа к этому экземпляру.
Что выведет этот код?
Anonymous Quiz
16%
JavaPython
21%
C++C++
9%
PythonJava
14%
JavaC++
37%
JavaJava
2%
PythonPython
#microsoft
Почему Microsoft перестали бороться с пиратством своего ПО?
Microsoft теряет миллиарды долларов из-за пиратства своих продуктов. Ранее CEO Microsoft принимали агрессивную политику в борьбе против пиратства. Microsoft даже проводила налеты в Мексике для арестов кортелей. О чем я точно еще напишу.
Все принятые политики по защите ПО Microsoft не обновлялись с 2010-го года. В 2013-м они запустили программу "play it safe". Сейчас, на официальном веб-сайте, вы ее не найдете. Осталась только фото-заглушка.
Почему же Microsoft перестали бороться с пиратством?
Защита SaaS стала куда сильнее, копии гораздо труднее подделывать. С развитием модели платных подписок многие продукты перешли на SaaS.
Все меньше людей ищет взломанное ПО. Это относится не только к Microsoft. Похожим образом действуют Adobe, которые позволяют пиратство своих продуктов. Именно благодаря пиратству Adobe и Microsoft стали лидерами рынка в своих сферах.
Неужели пиратство может заменить расходы на PR?
Почему Microsoft перестали бороться с пиратством своего ПО?
Microsoft теряет миллиарды долларов из-за пиратства своих продуктов. Ранее CEO Microsoft принимали агрессивную политику в борьбе против пиратства. Microsoft даже проводила налеты в Мексике для арестов кортелей. О чем я точно еще напишу.
Все принятые политики по защите ПО Microsoft не обновлялись с 2010-го года. В 2013-м они запустили программу "play it safe". Сейчас, на официальном веб-сайте, вы ее не найдете. Осталась только фото-заглушка.
Почему же Microsoft перестали бороться с пиратством?
Защита SaaS стала куда сильнее, копии гораздо труднее подделывать. С развитием модели платных подписок многие продукты перешли на SaaS.
Все меньше людей ищет взломанное ПО. Это относится не только к Microsoft. Похожим образом действуют Adobe, которые позволяют пиратство своих продуктов. Именно благодаря пиратству Adobe и Microsoft стали лидерами рынка в своих сферах.
Неужели пиратство может заменить расходы на PR?
Как вы можете отсортировать HashMap на основе значений?
Anonymous Quiz
18%
Имплементировать интерфейс Comparator и переопределить его метод сравнения
35%
Это невозможно
38%
Имплементировать интерфейс Comparator и переопределить его метод compareTo
10%
Имплементировать Comparator и Comparable интерфейс
#java
Что такое поток демона в Java?
Демон-поток - это поток, который не предотвращает выход JVM, когда программа заканчивается, но поток все еще работает. Примером для потока демона является сбор мусора.
Вы можете использовать метод setDaemon(boolean) для изменения свойств демона Thread до начала потока.
Когда создается новый поток, он наследует статус демона своего родителя.
Когда все потоки, не являющиеся демонами, заканчивают работу, JVM останавливается, а все оставшиеся потоки демонов удаляются: наконец блоки не выполняются, стеки не разматываются - JVM просто выходит.
По этой причине потоки демонов следует использовать с осторожностью, и их опасно использовать для задач, которые могут выполнять любые операции ввода-вывода.
Что такое поток демона в Java?
Демон-поток - это поток, который не предотвращает выход JVM, когда программа заканчивается, но поток все еще работает. Примером для потока демона является сбор мусора.
Вы можете использовать метод setDaemon(boolean) для изменения свойств демона Thread до начала потока.
Когда создается новый поток, он наследует статус демона своего родителя.
Когда все потоки, не являющиеся демонами, заканчивают работу, JVM останавливается, а все оставшиеся потоки демонов удаляются: наконец блоки не выполняются, стеки не разматываются - JVM просто выходит.
По этой причине потоки демонов следует использовать с осторожностью, и их опасно использовать для задач, которые могут выполнять любые операции ввода-вывода.
Корректно ли такое выражение?
List<Number> nums = new ArrayList<Integer>();
List<Number> nums = new ArrayList<Integer>();
Anonymous Quiz
38%
Да
42%
Нет, будет ошибка компиляции
12%
Нет, будет ошибка во время выполнения
8%
Да, но выбросится Exception
#java
Интерфейсы
Интерфейс — это ссылочный тип в Java. Он схож с классом. Это совокупность абстрактных методов. Класс реализует интерфейс, таким образом наследуя абстрактные методы интерфейса.
Чем отличается класс от интерфейса?
- Вы не можете создать экземпляр интерфейса.
- В интерфейсе не содержатся конструкторы.
- Все методы в интерфейсе абстрактные.
- Интерфейс не может содержать поля экземпляров. Поля, которые могут появиться в интерфейсе, обязаны быть объявлены и статическими, и final.
- Интерфейс не расширяется классом, он реализуется классом.
- Интерфейс может расширить множество интерфейсов.
_____________________
Решение: Убрать метод fly() у класса Bird, и вынести его в интерфейс "toBeAbleToFly". В нем, мы создаем тот самый метод fly(), который уже реализует тот класс, которому нужен этот метод. В нашем случае, это будет Parrot. Курице он нужен, по этому реализовывать этот метод, она не будет.
То есть, мы вынесли конкретный функционал, который нужен специфичной сущности.
// Позже будет выложен еще один пример использования интерфейсов
Интерфейсы
Интерфейс — это ссылочный тип в Java. Он схож с классом. Это совокупность абстрактных методов. Класс реализует интерфейс, таким образом наследуя абстрактные методы интерфейса.
Чем отличается класс от интерфейса?
- Вы не можете создать экземпляр интерфейса.
- В интерфейсе не содержатся конструкторы.
- Все методы в интерфейсе абстрактные.
- Интерфейс не может содержать поля экземпляров. Поля, которые могут появиться в интерфейсе, обязаны быть объявлены и статическими, и final.
- Интерфейс не расширяется классом, он реализуется классом.
- Интерфейс может расширить множество интерфейсов.
_____________________
Пример:
Ниже приведена иерархия классов. Класс Bird имеет метод fly(), но курица унаследовавшая метод, не должна его иметь, что делать в таком случае?Решение: Убрать метод fly() у класса Bird, и вынести его в интерфейс "toBeAbleToFly". В нем, мы создаем тот самый метод fly(), который уже реализует тот класс, которому нужен этот метод. В нашем случае, это будет Parrot. Курице он нужен, по этому реализовывать этот метод, она не будет.
То есть, мы вынесли конкретный функционал, который нужен специфичной сущности.
// Позже будет выложен еще один пример использования интерфейсов
Какое из следующих утверждений верно относительно класса Java?
Anonymous Quiz
53%
Класс Java должен иметь имя, указанное в исходном коде.
19%
Класс Java может иметь несколько локал. перем. с одинаковыми именами внутри одного и того же метода.
13%
Класс Java - это глобальный метод
15%
Знак подчеркивания («_») - это допустимое имя класса Java.
#backEnd
Кто этот ваш Postman?
Postman – удобный инструмент, который умеет описывать и исполнять запросы, получать информацию об их статусах, выстраивать цепочки запросов, зацикливать их, создавать сценарии. Главный плюс – код писать при этом практически не нужно.
Итак, вы определились со сценариями, которые хотите мониторить, и подготовили список запросов, которые соответствуют действиям пользователя. В Postman сценарии собираются из этих запросов, как из конструктора. Помимо запросов, такими кирпичиками являются коллекции и окружения.
Окружения содержат значения переменных, с которыми мы работаем в рамках сценариев – адреса серверов, имена папок и т.д. Фактически одно окружение – это один продукт.
Коллекция описывает, что с этими переменными делать. Это набор запросов, и в нашем случае одна коллекция – это один сценарий мониторинга. Одну коллекцию можно использовать в разных окружениях, подставляя нужные переменные. Не нужно для каждой системы писать новый сценарий авторизации – можно одним кликом вызвать уже готовую коллекцию.
Надо тестить API - Postman
Кто этот ваш Postman?
Postman – удобный инструмент, который умеет описывать и исполнять запросы, получать информацию об их статусах, выстраивать цепочки запросов, зацикливать их, создавать сценарии. Главный плюс – код писать при этом практически не нужно.
Итак, вы определились со сценариями, которые хотите мониторить, и подготовили список запросов, которые соответствуют действиям пользователя. В Postman сценарии собираются из этих запросов, как из конструктора. Помимо запросов, такими кирпичиками являются коллекции и окружения.
Окружения содержат значения переменных, с которыми мы работаем в рамках сценариев – адреса серверов, имена папок и т.д. Фактически одно окружение – это один продукт.
Коллекция описывает, что с этими переменными делать. Это набор запросов, и в нашем случае одна коллекция – это один сценарий мониторинга. Одну коллекцию можно использовать в разных окружениях, подставляя нужные переменные. Не нужно для каждой системы писать новый сценарий авторизации – можно одним кликом вызвать уже готовую коллекцию.
Надо тестить API - Postman
#Web
Что такое модель MVC?
Это способ организации кода, который предполагает выделение блоков, отвечающих за решение разных задач. Один блок отвечает за данные приложения, другой отвечает за внешний вид, а третий контролирует работу приложения.
MVC расшифровывается как модель-вид-контроллер
Модель (Model) - это данные и правила, которые используются для работы с данными, которые представляют концепцию управления приложением. Модель даёт контроллеру представление данных, которые запросил пользователь.Она содержит наиболее важную часть логики приложения, логики, которая решает задачу, с которой мы имеем дело тогда как контроллер содержит в основном организационную логику для самого приложения
Вид (View) - отвечает за взаимодействие с пользователем. То есть код компонента view определяет внешний вид приложения и способы его использования.
Контроллер (Controller) - управляет запросами пользователя (получаемые в виде запросов HTTP GET или POST, когда пользователь нажимает на элементы интерфейса для выполнения различных действий). Его основная функция — вызывать и координировать действие необходимых ресурсов и объектов, нужных для выполнения действий, задаваемых пользователем.
Что такое модель MVC?
Это способ организации кода, который предполагает выделение блоков, отвечающих за решение разных задач. Один блок отвечает за данные приложения, другой отвечает за внешний вид, а третий контролирует работу приложения.
MVC расшифровывается как модель-вид-контроллер
Модель (Model) - это данные и правила, которые используются для работы с данными, которые представляют концепцию управления приложением. Модель даёт контроллеру представление данных, которые запросил пользователь.Она содержит наиболее важную часть логики приложения, логики, которая решает задачу, с которой мы имеем дело тогда как контроллер содержит в основном организационную логику для самого приложения
Вид (View) - отвечает за взаимодействие с пользователем. То есть код компонента view определяет внешний вид приложения и способы его использования.
Контроллер (Controller) - управляет запросами пользователя (получаемые в виде запросов HTTP GET или POST, когда пользователь нажимает на элементы интерфейса для выполнения различных действий). Его основная функция — вызывать и координировать действие необходимых ресурсов и объектов, нужных для выполнения действий, задаваемых пользователем.
#machineLearning
Мне кажется, или телефон смотрит на меня?
Новое исследование EPFL и INRIA показывает, что наши мобильные устройства могут выполнять обучение моделей самостоятельно, являясь частью распределённой сети и не раздавая наши данные технологическим компаниям.
Каждый раз, когда мы читаем новости в Интернете или ищем, где можно перекусить, технологический «Большой Брат» собирает огромное количество данных о нашем поведении.Google и Facebook, например, говорят, что они делают это, чтобы улучшить их сервисы и персонализировать нашу жизнь в онлайне.
Данные используются, в том числе, для рекламы, нацеленной прямо на вас, и они могут быть переданы третьим лицам, – вот почему вопросы цифровой безопасности так важны.
Совместная лаборатория EPFL/INRIA, представляет FLeet – революцию в распределённом машинном обучении с сохранением данных только на устройстве – глобальную модель, обученную с помощью обновлений, вычисленных на мобильных устройствах. Данные при этом остаются только на устройствах.
Федеративное машинное обучение очень привлекательно преимуществами в области конфиденциальности, но поскольку оно разработано таким образом, чтобы не влиять на энергопотребление и производительность мобильных устройств, оно не подходит для приложений, требующих частого обновления, например, для рекомендации новостей.
Профессор Анна-Мари Кермаррек, также автор статьи, рассказывает: «Мы показали, что если сложим мощность телефонов вместе, они начнут составлять большую вычислительную мощность, которая будет соответствовать мощности Google, и это даст людям альтернативу – не полагаться на централизованные мощные компьютерные фермы».
Мне кажется, или телефон смотрит на меня?
Новое исследование EPFL и INRIA показывает, что наши мобильные устройства могут выполнять обучение моделей самостоятельно, являясь частью распределённой сети и не раздавая наши данные технологическим компаниям.
Каждый раз, когда мы читаем новости в Интернете или ищем, где можно перекусить, технологический «Большой Брат» собирает огромное количество данных о нашем поведении.Google и Facebook, например, говорят, что они делают это, чтобы улучшить их сервисы и персонализировать нашу жизнь в онлайне.
Данные используются, в том числе, для рекламы, нацеленной прямо на вас, и они могут быть переданы третьим лицам, – вот почему вопросы цифровой безопасности так важны.
Совместная лаборатория EPFL/INRIA, представляет FLeet – революцию в распределённом машинном обучении с сохранением данных только на устройстве – глобальную модель, обученную с помощью обновлений, вычисленных на мобильных устройствах. Данные при этом остаются только на устройствах.
Федеративное машинное обучение очень привлекательно преимуществами в области конфиденциальности, но поскольку оно разработано таким образом, чтобы не влиять на энергопотребление и производительность мобильных устройств, оно не подходит для приложений, требующих частого обновления, например, для рекомендации новостей.
Профессор Анна-Мари Кермаррек, также автор статьи, рассказывает: «Мы показали, что если сложим мощность телефонов вместе, они начнут составлять большую вычислительную мощность, которая будет соответствовать мощности Google, и это даст людям альтернативу – не полагаться на централизованные мощные компьютерные фермы».
#java
Проверяемые и непроверяемые исключения
К проверяемым исключениям относятся исключения наследники класса Exception. Кроме исключений типа RuntimeException.
Проверяемые исключения должны обрабатываться в ходе работы программы. Проверка того, что проверяемые исключения обработаны в коде, проводиться компилятором и если проверяемые исключения не обработаны, код программы не будет компилироваться. Под обработкой исключения понимается обрамление кода, в котором может возникнуть исключение, блоком try {} catch() {} или передача исключение дальше с помощью ключевого слова throws. Переданное далее исключение должно быть обработано в методах вызывающих данный код.
Исключения типа Error и RuntimeException относятся к непроверяемым исключениям. Такие исключения не обязательны к обработке.
Исключения типа Error – говорят об исключительных ситуациях возникающих в ходе работы программы и возникают из-за внешних условий не зависящих от самого кода программы.
Исключения типа RuntimeException – являются внутренними исключениями и чаще всего не должны обрабатываться Такие исключения обычно говорят об имеющихся багах в программе, неправильной логике работы или неправильном использовании API. Такие исключения могут быть обработаны, но обычно имеет больше смысла устранить имеющиеся баги, приводящие к возникновению RuntimeExceptions.
Проверяемые и непроверяемые исключения
К проверяемым исключениям относятся исключения наследники класса Exception. Кроме исключений типа RuntimeException.
Проверяемые исключения должны обрабатываться в ходе работы программы. Проверка того, что проверяемые исключения обработаны в коде, проводиться компилятором и если проверяемые исключения не обработаны, код программы не будет компилироваться. Под обработкой исключения понимается обрамление кода, в котором может возникнуть исключение, блоком try {} catch() {} или передача исключение дальше с помощью ключевого слова throws. Переданное далее исключение должно быть обработано в методах вызывающих данный код.
Исключения типа Error и RuntimeException относятся к непроверяемым исключениям. Такие исключения не обязательны к обработке.
Исключения типа Error – говорят об исключительных ситуациях возникающих в ходе работы программы и возникают из-за внешних условий не зависящих от самого кода программы.
Исключения типа RuntimeException – являются внутренними исключениями и чаще всего не должны обрабатываться Такие исключения обычно говорят об имеющихся багах в программе, неправильной логике работы или неправильном использовании API. Такие исключения могут быть обработаны, но обычно имеет больше смысла устранить имеющиеся баги, приводящие к возникновению RuntimeExceptions.
Модификатор доступа protected доступен
Anonymous Quiz
4%
в классе, и в пакете
33%
в классе, и в унаследованных классах
43%
в классе, в пакете, и в унаследованных классах
10%
только в унаследованных классах
9%
везде
#backEnd #definition
Что такое ETL?
Начнем с определения: ETL (Extract, Transform, Load) – это совокупность процессов управления хранилищами данных, включая:
Извлечение данных из внешних источников (таблицы баз данных, файлы);
Преобразование и очистка данных согласно бизнес-потребностям;
Загрузка обработанной информации в корпоративное хранилище данных (КХД).
Прикладное назначение ETL состоит в том, чтобы организовать такую структуру данных с помощью интеграции различных информационных систем. Учитывая, что BI-технологии позиционируются как «концепции и методы для улучшения принятия бизнес-решений с использованием систем на основе бизнес-данных», можно сделать вывод о прямой принадлежность ETL к этому технологическому стеку.
Что такое ETL?
Начнем с определения: ETL (Extract, Transform, Load) – это совокупность процессов управления хранилищами данных, включая:
Извлечение данных из внешних источников (таблицы баз данных, файлы);
Преобразование и очистка данных согласно бизнес-потребностям;
Загрузка обработанной информации в корпоративное хранилище данных (КХД).
Прикладное назначение ETL состоит в том, чтобы организовать такую структуру данных с помощью интеграции различных информационных систем. Учитывая, что BI-технологии позиционируются как «концепции и методы для улучшения принятия бизнес-решений с использованием систем на основе бизнес-данных», можно сделать вывод о прямой принадлежность ETL к этому технологическому стеку.
Что выведется на экран?
Anonymous Quiz
14%
A String With White Space
11%
Space White With String A
42%
AStringWithWhiteSpace
34%
A S t r i n g W i t h W h i t e S p a c e