Как стать автором
Обновить
-21
0.5
Никому Не Иванович @avost

Сижу, никого не трогаю, починяю примусы

Отправить сообщение

Шпаргалки Java программиста 9: Java SE — Шпаргалка для собеседований и повторений

Время на прочтение32 мин
Количество просмотров139K
Данная статья в первую очередь предназначена для подготовки к собеседованиям на позицию Java разработчика (на самом деле, это шпаргалка, которую я писал для себя в течении многих лет, и повторяю при каждом новом поиске работы).

Предполагается. что вы знакомы с многими функциями из Java SE, поэтому в основном информация дается кратко. Конечно, можно использовать эту статью и просто для обучения основам Java SE платформы (но в этом случае, после чтения статьи вам скорее всего придется обратиться к другим источникам).

image

Итак, вы пытаетесь вспомнить все, что знаете перед собеседованием и не важно сколько лет опыта, без подготовки вас все равно могут поймать на том вопросе, который вы вроде бы помнили, но именно на собеседовании забыли. Это шпаргалка позволит вам освежить некоторые из ваших знаний.

Внимание: я не буду касаться вопросов по самому языку Java (вроде для чего нужно слово final или чем overriding отличается от overloading), это потребует отдельной статьи, это вопросы именно по Java SE (6-9) платформе.
Читать дальше →
Всего голосов 30: ↑28 и ↓2+26
Комментарии10

Котики против нейросети. Или выбираем и запускаем нейросеть для распознавания объектов на Raspberry Zero

Время на прочтение5 мин
Количество просмотров19K
Добрый день всем.

Крохотный компьютер Raspberry — замечательная вещь. Я использовал Raspberry Zero W в паре проектов в течение последнего полугода. Подкупила простота протипирования и откатки различных идей. А теперь вот факультативно заинтересовал вопрос, потянет ли сей девайс полноценную сверточную сетку? [Спойлер — потянет, но есть забавые нюансы]. Кому интересна тема — добро пожаловать под кат. Осторожно, будет много котиков!

image
Читать дальше →
Всего голосов 36: ↑34 и ↓2+32
Комментарии39

Принцип экономии мыслетоплива

Время на прочтение15 мин
Количество просмотров81K


Представления, на наш взгляд, излишни. Под катом доклад гуру прокрастинатологии Максима Дорофеева, в котором он расскажет, как сделать больше, а устать меньше. Узнаем немного про обезьяну, эффективность и многое другое. Возможно даже, что после прочтения половина всего, что вы слышали ранее о мышлении, обесценится.
Всего голосов 40: ↑40 и ↓0+40
Комментарии30

Корутины в Kotlin (гайд)

Время на прочтение12 мин
Количество просмотров155K


Simon Wirtz в своем блоге публикует достаточно много интересных постов о Kotlin.
Представляю вашему вниманию перевод одного из них.
Читать дальше →
Всего голосов 37: ↑35 и ↓2+33
Комментарии20

Java Challengers #3: Полиморфизм и наследование

Время на прочтение9 мин
Количество просмотров50K

Java Challengers #3: Полиморфизм и наследование


Мы продолжаем перевод серии статей с задачками по Java. Прошлый пост про строки вызвал на удивление бурную дискуссию. Надеемся, что мимо этой статьи вы тоже не пройдете мимо. И да — мы приглашаем теперь на юбилейный десятый поток нашего курса "Разработчик Java".


Согласно легендарному Венкату Субраманиам (Venkat Subramaniam) полиморфизм является самым важным понятием в объектно — ориентированном программировании. Полиморфизм — или способность объекта выполнять специализированные действия на основе его типа — это то, что делает Java — код гибким. Шаблоны проектирования, такие как Команда (Command), Наблюдатель (Observer), Декоратор (Decorator), Стратегия (Strategy), и многие другие, созданные бандой четырех (Gang Of Four), все используют ту или иную форму полиморфизма. Освоение этой концепции значительно улучшит вашу способность продумывать программные решения.


Читать дальше →
Всего голосов 13: ↑11 и ↓2+9
Комментарии3

Ktor как HTTP клиент для Android

Время на прочтение7 мин
Количество просмотров39K
Retrofit2 мне, как Android разработчику, нравится, но как на счет того, чтобы попробовать к качестве HTTP клиента Ktor? На мой взгляд, для Android разработки он не хуже и не лучше, просто один из вариантов, хотя если всё немного обернуть, то может получиться очень неплохо. Я рассмотрю базовые возможности с которыми можно будет начать пользоваться Ktor как HTTP клиентом — это создание запросов разных видов, получение raw ответов и ответов в виде текста, десериализация json в классы через конвертеры, логирование.


Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии1

Согласованность данных в высоконагруженных системах

Время на прочтение5 мин
Количество просмотров16K

Проблематика


Практически любая информационная система требует хранения данных на постоянной основе. В большинстве систем с малой и средней нагрузкой эту функцию выполняют реляционные СУБД, неоспоримым преимуществом которых является гарантия согласованности данных.

Классический пример, объясняющий, что такое согласованность данных – операция перевода денежных средств с одного счёта на другой. В момент, когда операция изменения баланса одного счёта уже выполнилась, а другого – ещё не успела, может произойти сбой. Тогда с одного счёта средства будут списаны, а на другой не поступят. Такое состояние данных системы называется рассогласованным, и, пожалуй, нет необходимости объяснять, к каким последствиям это может привести. Реляционные СУБД предоставляют механизм транзакций, гарантирующий согласованность данных в любой момент времени. Транзакция – это конечный набор операций, который переводит одно согласованное состояние в другое согласованное состояние.
Читать дальше →
Всего голосов 24: ↑23 и ↓1+22
Комментарии4

Причины плохого звучания большинства смартфонов на Android

Время на прочтение10 мин
Количество просмотров197K

Зачастую смартфоны не могут похвастаться хорошим звуком, включая «музыкальные смартфоны с ЦАП» в сравнении с отдельными Hi-Fi плеерами. Этот материал о причинах и их возможных решениях. Наиболее подробно будет описана та часть, которая критичная именно для смартфонов.
Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Комментарии240

Децентрализованная система обмена сообщениями

Время на прочтение5 мин
Количество просмотров35K
Мир IT-разработок идет по спирали. Основатели UNIX считали, что пусть программ будет много, но каждая из них выполняет свою задачу на «отлично». В начале 2000х основным трендом были программы-комбайны, выполняющие все, что только можно и даже больше. Сейчас вектор направления разработок начал движение в обратную сторону. И если раньше для обмена данными использовался в основном стандартный поток ввода/вывода, то теперь из-за того, что системы делают все более распределенными, передачей данными между узлами занимаются специализированные интеграционные комплексы (англ. Message Bus или Message broker).

Для повышения отказоустойчивости и снижения нагрузки на систему в целом, существует отдельный подход к обмену данными без использования центрального сервера.

Пример реализации я хотел бы представить.
Читать дальше →
Всего голосов 43: ↑40 и ↓3+37
Комментарии7

Полезный обзор. 28 книг, которые повлияли на мое мышление, вдохновили или сделали лучше

Время на прочтение7 мин
Количество просмотров154K


Я не люблю читать книжные рейтинги по двум причинам. Во-первых, чаще всего они представляют собой список книг, отобранных неведомым автором по неведомым критериям. Во-вторых, описания книг больше напоминают рекламные тексты издательств, которым сложно верить.

Из-за этого большинство подобных материалов мало полезны, несмотря на то, что могут содержать толковые книги. Мне давно хотелось написать полезный обзор, который не станет навязывать определенные материалы, а позволит читателю выбрать наиболее подходящие.
Читать дальше →
Всего голосов 62: ↑55 и ↓7+48
Комментарии79

Используйте Stream API проще (или не используйте вообще)

Время на прочтение7 мин
Количество просмотров182K

С появлением Java 8 Stream API позволило программистам писать существенно короче то, что раньше занимало много строк кода. Однако оказалось, что многие даже с использованием Stream API пишут длиннее, чем надо. Причём это не только делает код длиннее и усложняет его понимание, но иногда приводит к существенному провалу производительности. Не всегда понятно, почему люди так пишут. Возможно, они прочитали только небольшой кусок документации, а про другие возможности не слышали. Или вообще документацию не читали, просто видели где-то пример и решили сделать похоже. Иногда это напоминает анекдот про «задача сведена к предыдущей».


В этой статье я собрал те примеры, с которыми столкнулся в практике. Надеюсь, после такого ликбеза код программистов станет чуточку красивее и быстрее. Большинство этих штук хорошая IDE поможет вам исправить, но IDE всё-таки не всесильна и голову не заменяет.

Читать дальше →
Всего голосов 71: ↑71 и ↓0+71
Комментарии50

Все, что нужно знать о стрессе и сильных эмоциях

Время на прочтение5 мин
Количество просмотров23K

Под катом — цикл из 3-х видео и текстовых версий к ним.


Главное — стресс вызван не внешними событиями. Причина внутри нас.


Внутри каждого существует процесс, который отвечает за обработку информации, и на определенном этапе которого возникает эмоция. Мы можем управлять этим процессом, потому что он основан на нашем опыте.

Всего голосов 21: ↑17 и ↓4+13
Комментарии41

Как использовать корутины в проде и спокойно спать по ночам

Время на прочтение20 мин
Количество просмотров33K
Корутины — мощный инструмент для асинхронного исполнения кода. Они работают параллельно, общаются друг с другом и потребляют мало ресурсов. Казалось бы, без страха можно внедрять корутины в продакшен. Но страхи есть и они мешают.

Доклад Владимира Иванова на AppsConf как раз о том, что не так страшен чёрт и что можно прямо сегодня применять корутины:



О спикере: Владимир Иванов (dzigoro) — ведущий Android-разработчик в компании EPAM с 7-летним опытом, увлекается Solution Architecture, React Native и разработкой под iOS, а еще имеет сертификат Google Cloud Architect.
Всего голосов 34: ↑31 и ↓3+28
Комментарии36

Java и Project Reactor

Время на прочтение13 мин
Количество просмотров71K


Всем привет! Меня зовут Лёха, и я работаю бэкенд-разработчиком в FunCorp. Сегодня мы поговорим про реактивное программирование, библиотеку Reactor и немного про веб.


Реактивное программирование часто «подвергается упоминанию», но если вы (как и автор статьи) всё ещё не знаете, что это такое — устраивайтесь поудобнее, попробуем разобраться вместе.

Читать дальше →
Всего голосов 43: ↑43 и ↓0+43
Комментарии15

Реализация системы GTD на основе новых возможностей Google Keep и Calendar

Время на прочтение19 мин
Количество просмотров35K
This article in English: GTD Implementation via New Google Keep and Calendar Features

За последние годы Google Keep и Calendar значительно расширили свою функциональность, что дает возможность построить более удобную реализацию методологии GTD (Getting Things Done) на их основе. Ранее я уже публиковал материал с реализацией GTD на основе Google Calendar. Представленный теперь материал можно рассматривать как обновленную реализацию GTD на тех же принципах, но с использованием более современных средств.

В моем материале 2015 года в качестве базового элемента для всех пяти фаз управления рабочим процессом (Control) в системе GTD был выбран один и тот же сервис — Google Calendar. Теперь на различных фазах в качестве базовых элементов будут использоваться два разных сервиса — Calendar и Keep — в соответствии с приспособленностью их функционала для отдельных фаз.

  • Calendar теперь будет использоваться в качестве базы для фазы обзора (Review-Reflect), а также для фазы выполнения (Do-Engage).
  • Keep будет использоваться в качестве базы для фазы сбора (Collect-Capture), фазы обработки (Process-Clarify) и фазы организации (Organize).

Реализация GTD в Google Calendar (развернут список ближайших действий на неделю):


Pеализация GTD в Google Keep (категория ближайших действий):
Читать дальше →
Всего голосов 16: ↑16 и ↓0+16
Комментарии18

Реализация мгновенного поиска в Android с помощью RxJava

Время на прочтение6 мин
Количество просмотров7.4K

Реализация мгновенного поиска в Android с помощью RxJava


Я работаю над новым приложением, которое, как это обычно и происходит, связывается с бэкенд-сервисом для получения данных через API. В этом примере я буду разрабатывать функцию поиска, одной из особенностей которого будет мгновенный поиск прямо во время ввода текста.

Читать дальше →
Всего голосов 6: ↑6 и ↓0+6
Комментарии6

Как разобраться в Tensorflow и не умереть, а даже научить чему-то машину

Время на прочтение8 мин
Количество просмотров39K

Привет, Хабражители. Сегодняшний пост будет о том, как не затеряться в дебрях многообразия вариантов использования TensorFlow для машинного обучения и достигнуть своей цели. Статья рассчитана на то, что читатель знает основы принципов работы машинного обучения, но пока еще не пробовал это делать своими руками. В итоге мы получим работающее демо на Андроиде, которое кое-что распознает с довольно высокой точностью. Но обо всем по порядку.


Читать дальше →
Всего голосов 26: ↑26 и ↓0+26
Комментарии15

Как анализировать Thread Dump

Время на прочтение21 мин
Количество просмотров54K
В программе курса Разработчик Java довольно много тем, посвященных внутренностям работы JVM. Мы разбираемся в механизмах работы коллекций, байт-кода, сборщика мусора и т.д. Сегодня предлагаем Вашему внимаю перевод довольно интересной статьи о thread dump-е. Что это такое, как его получить и как использовать.

Хотите узнать, как анализировать thread dump (дамп потоков)? Заходите под кат, чтобы узнать больше о том как в Java получить thread dump и что с ним потом делать.
Читать дальше →
Всего голосов 15: ↑14 и ↓1+13
Комментарии2

Самое краткое введение в Reactive Programming

Время на прочтение3 мин
Количество просмотров21K

Цель данной статьи – показать на примере зачем нужно reactive programming, как оно связано с функциональным программированием, и как с его помощью можно писать декларативный код, который легко адаптировать к новым требованиям. Кроме того, хочется сделать это максимально кратко и просто на примере приближенном к реальному.


Возьмем такую задачу:
Есть некий сервис c REST API и endpointом /people. При POST-запросе на этот endpoint'a создается новая сущность. Написать функцию которая принимает массив объектов вида { name: 'Max' } и создают набор сущностей посредством API(по-английски, это называется batch-операция).


Давайте решим эту задачу в императивном стиле:


const request = require('superagent')

function batchCreate(bodies) {
  const calls = []
  for (let body of bodies) {
    calls.push(
      request
        .post('/people')
        .send(body)
        .then(r => r.status)
    )
  }
  return Promise.all(calls)
}

Давайте, для сравнения, перепишем этот кусочек кода в функциональном стиле. Для простоты, под функциональным стилем мы будем понимать:


  1. Применение функциональных примитивов(.map, .filter, .reduce) вместо императивных циклов(for, while)
  2. Код организован в "чистые" функции – они зависят только от своих аргументов и не зависят от состояния системы
Читать дальше →
Всего голосов 16: ↑13 и ↓3+10
Комментарии40

Теорема Гёделя о неполноте за 20 минут

Время на прочтение8 мин
Количество просмотров200K


Теореме Гёделя о неполноте, одной из самых известных теорем математической логики, повезло и не повезло одновременно. В этом она похожа на специальную теорию относительности Эйнштейна. С одной стороны, почти все о них что-то слышали. С другой — в народной интерпретации теория Эйнштейна, как известно, «говорит, что всё в мире относительно». А теорема Гёделя о неполноте (далее просто ТГН), в примерно столь же вольной фолк-формулировке, «доказывает, что есть вещи, непостижимые для человеческого разума». И вот одни пытаются приспособить её в качестве аргумента против материализма, а другие, напротив, доказывают с её помощью, что бога нет. Забавно не только то, что обе стороны не могут оказаться правыми одновременно, но и то, что ни те, ни другие не удосуживаются разобраться, что же, собственно, эта теорема утверждает.

Итак, что же? Ниже я попытаюсь «на пальцах» рассказать об этом. Изложение моё будет, разумеется нестрогим и интуитивным, но я попрошу математиков не судить меня строго. Возможно, что для нематематиков (к которым, вообще-то, отношусь и я), в рассказанном ниже будет что-то новое и полезное.

Математическая логика — наука действительно довольно сложная, а главное — не очень привычная. Она требует аккуратных и строгих манёвров, при которых важно не перепутать реально доказанное с тем, что «и так понятно». Тем не менее, я надеюсь, что для понимания следующего ниже «наброска доказательства ТГН» читателю понадобится только знание школьной математики/информатики, навыки логического мышления и 15-20 минут времени.

Читать дальше →
Всего голосов 64: ↑62 и ↓2+60
Комментарии138

Информация

В рейтинге
1 970-й
Откуда
Россия
Зарегистрирован
Активность

Специализация

Backend Developer