[МУЗЫКА] [МУЗЫКА] Давайте подведем итоги этого модуля. В этом модуле мы с вами рассмотрели, как выглядят разные характеристики центральной тенденции и разброса в выборке. Вы познакомились со средним и стандартным отклонением, с медианой и квартилями, когда и какую меру использовать. Если вы имеете дело с симметричным распределением, в котором нет выбросов, вы можете смело пользоваться средним и стандартным отклонением, но если у вас есть асимметричное распределение или есть какие-то далеко отскакивающие значения, то надежнее использовать медиану и квартили. В случае если ваша выборка симметрична и вы таки решились пользоваться средним значением, там тоже есть из чего выбрать. И тогда вам нужно спросить себя: «А что я хочу показать?» Если вы хотите показать, как устроена изменчивость в выборке, то вам нужно стандартное отклонение. Размах его усов будет показывать, насколько значения в самой выборке отличаются друг от друга. Это среднее отклонение, если вы помните, всех значений. Если вдруг вам нужно сделать фокус на точности оценки, то разумно использовать стандартную ошибку. Но тогда не пытайтесь ее интерпретировать как разброс значений в выборке, потому что величина стандартной ошибки зависит от объема выборки: чем больше у вас выборка, тем меньше будет стандартная ошибка. И наконец, если ваша задача — показать вашу степень уверенности в том, какую оценку среднего значения вы получили, то тогда лучше показать доверительный интервал. В этом модуле мы обсудили, что такое нормальное распределение. Вы теперь знаете, что это симметричное колоколообразное распределение с двумя параметрами — со средним, которое описывает центр распределения, и стандартным отклонением, которое описывает его разброс. В результате процедуры стандартизации любое нормальное распределение можно легко превратить в стандартное. Если вы хотите проверить, какому распределению подчиняется величина вашей выборки, вы можете построить квантильный график, и тогда по оси x этого квантильного графика вы отложите квантили стандартного нормального распределения, а по оси y — квантили вашей выборки. Если точки лягут на прямую линию, это будет означать, что распределение в вашей выборке соответствует тому теоретическому распределению, которое было нарисовано вдоль оси x. Второе распределение, с которым вы познакомились, это t-распределение. Оно тоже симметричное, тоже колоколообразное, но оно от нормального немножко отличается тем, что у него более толстые хвосты и чуть меньше, соответственно, вершины, потому что общая площадь под кривой распределения все равно должна быть равна единице. T-распределение используется для построения доверительных интервалов для средних значений в том случае, если у нас нет никакой информации о значении параметров в генеральной совокупности. Если мы вынуждены стандартное отклонение в генеральной совокупности оценивать при помощи выборочной оценки, мы для построения доверительного интервала пользуемся t-распределением. В этом модуле мы познакомились с разными способами описывать выборки, но это не единственная задача статистики. Главное не просто описать выборку, а каким-то образом понять, что происходит в генеральной совокупности. Один из способов это понять — это тестирование статистических гипотез. Как это делается, мы поговорим в следующем модуле. А изменение общего счетчика один раз за этаж вместо количества людей на этаже раз хорошо скажется на производительности. Что с Android? С Android, на самом деле, все просто. В кавычках. Есть main thread — главный поток, который отвечает на отрисовку интерфейса. Чем меньше нагрузка на main thread, тем отзывчивее и плавнее интерфейс. И, соответственно, тем больше шансов того, что пользователь не влепит одну [НЕРАЗБОРЧИВО] Поэтому с точки зрения производительности задачи, не связанные с отрисовкой интерфейса, желательно опрокинуть в фоновый поток. Это относится к тяжелым задачам, например к сетевым запросам, запросам в базу данных, каким-то тяжелым манипуляциями с данными или с изображениями. Разработчики самого Anroid стараются надавить на разработчиков приложений под Android, чтобы они не захламляли main thread. Так, в Android 3.0 Honeycomb, уровень 11, появился NetworkOnMainThreadException, который бросался при сетевом запросе из main thread. Так как сетевой запрос — это тяжелая операция, она может занять несколько секунд. А в Android, если приложение зависло на 5 секунд, то бросается ANR-ошибка — то самое окошко «Приложение не отвечает». Это не самый лучший сценарий взаимодействия с пользователем, поэтому было решено запретить сетевые запросы из main thread вообще. Параллельно с этим развитие платформы Android приводило к появлению новых инструментов многопоточного взаимодействия. Некоторые решения были спорными, некоторые хорошими, но вне зависимости от этого все нужно знать. Правда, в современной разработке эти нативные решения постепенно-постепенно уступает место сторонним библиотекам, которые реализуют тот или иной архитектурный паттерн. Зачем же мы тогда уделяем время нативным решениям? Мы — и не только мы — считаем, что если разработчик в состоянии реализовать любую функциональность с помощью того, что предлагает Android-фреймворк, то ему не составит труда разобраться в сторонней библиотеке. Плюс тащить библиотеку ради, например, сетевого запроса вряд ли целесообразно. И, напротив, если проект ожидается большим или не ожидается, а постепенно разрастается до больших размеров, то уже тогда имеет смысл подключить архитектурную библиотеку. Меньше слов — больше дела. Давайте пройдемся по инструментам обеспечения многопоточности в Java/ [ЗВУК] [БЕЗ_ЗВУКА]