7. Каков порядок перебора map?
Самый популярный неправильный ответ: «В порядке вставки». Хеш-таблица, которая сортирует элементы в порядке вставки, ага. А как в ней происходит выборка по ключу в таком случае?
Если взять для примера Java с его JVM, то одна версия отдает обход по дереву, а другая отдает по вставке, вне зависимости от формирования дерева. Один и тот же обход map на мобилке и десктопе будет работать по разному.
Возможно в Go есть подобные штуки.
Так что это вопрос из серии «угол заточки стамески».
Возможно, она поможет вам лучше подготовиться следующему собеседованию.
а смысл, если ответы на вопросы выше гуглятся за 5 минут при нормальной техбазе. У вас вопросы по Go, а не по тех базе специлаиста.
Стандартный набор метрик prometheus в Go -программе?
кто бы помнил, 1 раз делается дашборд и носится из проекта в проект, а смотрят в этот дашборд уже как раз «эти девопрсы».
Вам весь день на всех ресурсах пишут что плеер.ру это помойка, а вы всё упираетесь.
Их даже по суду закрывали и не один раз, просто меняют юр лицо и работают дальше.
Алгоритм работает ровно до момента переноса кода на другие системы. Тут опять же по силам и развитию нужно выбирать. Таблицу всегда можно забрать с сервера, а вот код — опасно.
Много раз встречал восьмибитные системы с расчетами плавающей запятой без float, только спец таблицы, например перевод в двоичный вид и сдвиг влево до ухода запятой, после сокращения по простой и неочевидной математике. Если программист умеет в матан, то он молодец, но за мою жизнь было очень мало проектов, где он требуется, ну либо (как выше написали) пишешь сетевую функцию на табличных данных и отдаешь на аутсорс математику на вывод формулы.
Да и основной кодек 264 имеет свои ограничения, плюс если брать мобилку, то часто есть 4 хардварных потока на декодинг и 1 поток на кодинг видео, остальное будет нагружать процессор. Да и джиттеры и задержки в 2-5 секунд никто не отменял при любом подходе. Пока только одноклассники описывали как переписать TCP стек (или сделать эмуляцию), чтобы решить вопрос с размером фрейма TCP и слипанием пакетов. Но автор с этим не столкнется, так как генерит довольно большой поток данных.
В комментариях на реддите люди сказали, что некоторая часть того, что я нагородил, из коробки именно так и работает в Smalltalk. Довольно интересное совпадение, на мой взгляд.
Банда четырех свой справочник создавала на основе Smalltalk. В первом издании книги он часто упоминается, а современный ООП был взрощен на этом труде, так что не такое уж и совпадение
Да, это был шутка. Еще в java поведение String не совсем как у нормального класса.
Но парадигма именно ООП, только классы и больше ничего, а int и т.д. это больше похоже на legacy.
Но java подкупает своим ООП при первом изучении (но c++ мне нравится больше)
Зависит от подхода к архитектуре и области.
Если вы сможете рассказать в чем разница учебных задач и производственных, то много сомнений отпадет. При правильном подходе к проектированию вы сможете держать проект «в узде» долгое время. Чаще проблема архитектуры связана с низкими навыками разработчиков и следованием за трендами (хайпом)
Мы в Android разработке в 15м году выбрали правильный путь с полной протоптанной архитектурой еще от майкрософта. До сих пор не поменялся подход, сменили кучу библиотек, парадигм и подходов, но архитектура неизменна. Смена каллбеков на rx, коннекшнов на http клиенты, файловые таблицы на бд всегда происходили без проблем.
Но мобилки это рассказ о локальных архитектурах, сервера куда интереснее, но даже там какой либо jvm сервер будет выбирать между ktor, netty, akka и своим решением. А на PHP подобных только доменная и объектная архитектура по всем правилам, массивы и «новомодные» подходы строжайше запрещены в вопросах архитектуры, но внутри алгоритмических задач полная свобода
Wiki: Хотя режимы Fortnite: Save the World и Fortnite: Creative также удалось добиться коммерческого успеха, именно Fortnite: Battle Royale приобрел чрезвычайную популярность, превратившись в культурный феномен; в марте 2019 года количество игроков в этот режим достигло 250 миллионов
Тоже рассматривали для онайн игры под эмуляцию ботов, то один jar файл заменяет его на 100% при минимальных затратах на разработку. Уже больше 4х лет работает без перезапуска с возможностью бесконечно множить воркеры. Это если говорить про шедулы, жизнь которых не превышает 5 минут.
А для долгосрочных (сутки-месяц) быстрее свой написать на любой атомарной БД формата ключ-значение (можно найти на ютубе первые попытки реализации инстаграмма, очень интересные решения там)
Сейчас мы используем эту схему для выполнения только периодических последовательных задач, но ее можно использовать и тогда, когда важно начать выполнять задачу в определенной время, без смещения времени на само исполнение. Для этого достаточно повторно запланировать задачу после попадания сообщения в supervisor.
так можно закольцевать очередь и получить много мусора, который будет грузить систему, съесть память и положить сервис.
Да, если есть планирование задач в рамках одной минуты, например эмуляция хода пользователя (бот), то да, создается воркер шедулер и выгребает все сообщения из очереди и закидывает их в другую очередь для ожидания.
отправляем ack.
ack и noack в некоторых библиотеках реббита выполняются только в том же потоке, куда пришел пакет. Так что для некоторых задач не доходит, либо только сам факт доставки пакета. Обычно используем свою систему учета на любом кеш сервере (редис, мемкешд)
Эта схема у нас работает уже полгода
почти 4 года работаем по этой схеме, больше чем на 20 проектах.
Только есть еще воркер-множитель, когда нужно сделать рассылку
1 пакет с эвенном множится на общее количество получателей и кладется в wait-dead-queue-5s (время жизни 5 секунд, под некоторые задачи 5 минут и т.д.)
Если с RabbitMQ что-то случилось и сообщения пропали, тогда нужно вручную смотреть, что потерялось,
полный лог решает эту проблему.
Да и log-queue при уже полных фатальных ошибках никто не отменял
Также про durable очереди не надо забывать.
а также про Supervisor.
это который supervisord на питоне?
По планировщику обычный cron раз в минуту по таблице, время пришло — создали эвент, помножили на получателей (если точка-точка), запихали в очередь, дальше реббит сделает своё дело.
Не знаю, на всех версиях или нет, но пока предыдущее сообщение не отработает, таймаут следующего не будет вызван
т.е. кладем сообщение на 10 секунд и сразу еще одно на 5 секунд.
Второе сообщение умрет только после смерти первого (ну еще выборка количества сообщений на это может повлиять)
ну так мой ответ был на ваш ответ как раз на тот коммент, который вы процитировали. Отсюда совсем не понятен ваш воинственный настрой
Сами спросили что делать в винде, вам дали ответы, которые работают в винде (да и в linux виртуалки будут работать).
Опенсорс никто не критиковал
Если взять для примера Java с его JVM, то одна версия отдает обход по дереву, а другая отдает по вставке, вне зависимости от формирования дерева. Один и тот же обход map на мобилке и десктопе будет работать по разному.
Возможно в Go есть подобные штуки.
Так что это вопрос из серии «угол заточки стамески».
а смысл, если ответы на вопросы выше гуглятся за 5 минут при нормальной техбазе. У вас вопросы по Go, а не по тех базе специлаиста.
кто бы помнил, 1 раз делается дашборд и носится из проекта в проект, а смотрят в этот дашборд уже как раз «эти девопрсы».
Сам сижу в разработке под мобилки и отправляю комментарии по IOT разработчикам
Вам весь день на всех ресурсах пишут что плеер.ру это помойка, а вы всё упираетесь.
Их даже по суду закрывали и не один раз, просто меняют юр лицо и работают дальше.
Много раз встречал восьмибитные системы с расчетами плавающей запятой без float, только спец таблицы, например перевод в двоичный вид и сдвиг влево до ухода запятой, после сокращения по простой и неочевидной математике. Если программист умеет в матан, то он молодец, но за мою жизнь было очень мало проектов, где он требуется, ну либо (как выше написали) пишешь сетевую функцию на табличных данных и отдаешь на аутсорс математику на вывод формулы.
Да и основной кодек 264 имеет свои ограничения, плюс если брать мобилку, то часто есть 4 хардварных потока на декодинг и 1 поток на кодинг видео, остальное будет нагружать процессор. Да и джиттеры и задержки в 2-5 секунд никто не отменял при любом подходе. Пока только одноклассники описывали как переписать TCP стек (или сделать эмуляцию), чтобы решить вопрос с размером фрейма TCP и слипанием пакетов. Но автор с этим не столкнется, так как генерит довольно большой поток данных.
Банда четырех свой справочник создавала на основе Smalltalk. В первом издании книги он часто упоминается, а современный ООП был взрощен на этом труде, так что не такое уж и совпадение
Но парадигма именно ООП, только классы и больше ничего, а int и т.д. это больше похоже на legacy.
Но java подкупает своим ООП при первом изучении (но c++ мне нравится больше)
Мы создали Java :)
Если вы сможете рассказать в чем разница учебных задач и производственных, то много сомнений отпадет. При правильном подходе к проектированию вы сможете держать проект «в узде» долгое время. Чаще проблема архитектуры связана с низкими навыками разработчиков и следованием за трендами (хайпом)
Мы в Android разработке в 15м году выбрали правильный путь с полной протоптанной архитектурой еще от майкрософта. До сих пор не поменялся подход, сменили кучу библиотек, парадигм и подходов, но архитектура неизменна. Смена каллбеков на rx, коннекшнов на http клиенты, файловые таблицы на бд всегда происходили без проблем.
Но мобилки это рассказ о локальных архитектурах, сервера куда интереснее, но даже там какой либо jvm сервер будет выбирать между ktor, netty, akka и своим решением. А на PHP подобных только доменная и объектная архитектура по всем правилам, массивы и «новомодные» подходы строжайше запрещены в вопросах архитектуры, но внутри алгоритмических задач полная свобода
А для долгосрочных (сутки-месяц) быстрее свой написать на любой атомарной БД формата ключ-значение (можно найти на ютубе первые попытки реализации инстаграмма, очень интересные решения там)
Мне казалось, что можно, да и где то читал, что по инструкции тормоз разрешается использовать только после удара :)
так можно закольцевать очередь и получить много мусора, который будет грузить систему, съесть память и положить сервис.
Да, если есть планирование задач в рамках одной минуты, например эмуляция хода пользователя (бот), то да, создается воркер шедулер и выгребает все сообщения из очереди и закидывает их в другую очередь для ожидания.
ack и noack в некоторых библиотеках реббита выполняются только в том же потоке, куда пришел пакет. Так что для некоторых задач не доходит, либо только сам факт доставки пакета. Обычно используем свою систему учета на любом кеш сервере (редис, мемкешд)
почти 4 года работаем по этой схеме, больше чем на 20 проектах.
Только есть еще воркер-множитель, когда нужно сделать рассылку
1 пакет с эвенном множится на общее количество получателей и кладется в wait-dead-queue-5s (время жизни 5 секунд, под некоторые задачи 5 минут и т.д.)
полный лог решает эту проблему.
Да и log-queue при уже полных фатальных ошибках никто не отменял
Также про durable очереди не надо забывать.
это который supervisord на питоне?
По планировщику обычный cron раз в минуту по таблице, время пришло — создали эвент, помножили на получателей (если точка-точка), запихали в очередь, дальше реббит сделает своё дело.
т.е. кладем сообщение на 10 секунд и сразу еще одно на 5 секунд.
Второе сообщение умрет только после смерти первого (ну еще выборка количества сообщений на это может повлиять)
Сами спросили что делать в винде, вам дали ответы, которые работают в винде (да и в linux виртуалки будут работать).
Опенсорс никто не критиковал
не, для 2000, на xp с небольшим бубном запускаются