acuruma, вот открой какой-нибудь work* или job* сайт и посмотри какие активные ваканси? Там никто не будет писать Требуется С++ разработчик. Там будут писать что требуется гейм-разраб со знанием Unreal Engine (который конечно-же знает С++) в том объеме чтобы юзать этот чортов Анрил Енжин.
Andrei1penguin1, давай порассуждаем. Вот какой-бы ты мощный или слабый ноутбук не выбирал - ты сможешь варьировать производительность видеокарты и процессора в небольших пределах. 1.5-2x.
И на этом пожалуй все. На большее у тебя не хватит денег. Таков рынок ноутбуков. И геймеры иногда покупают другое железо за мифические +5 процентов.
А какие опции у тебя есть для регулировки времени обучения. Да миллиард опций. Или гипер-параметров маш-обучения. Например объем выборки. Сократи объем в 10 раз и получишь меньшее время обучения. И ты его достигаешь с большей гарантией чем здесь торгуясь за лишние 100 долларов.
Я понимаю. Я реализовывал эту идеому на Borland C++ а спустя много лет я получил на собеседовании вопрос как реализовать swap на Java. Вот это заставляет задуматься. Вообще swap достоин отдельного топика.
Но это все таки не функция. Я с этим согласен. Ближе к некому макросу языка.
VolgaVolga, возможно. Но я-бы предпочёл простые объяснения. А позже - более сложные. Тем более что тут наклёвывается толи формула полной вероятности толи Байес.
Если основывать разработку на User Experience - то 99% пользователей дальше первой страницы листать не будут. Допустим landing page банковского кабинета показывает на 1 странице движение средств на счетах клиента сортированные по дате. Вот первые 10 записей можно материализовать для каждого клиента и положить их в отдельную табличку. Или если модернизировать подходы - то положить JSON в Redis. И в этом случае база данных даже не будет задействована. А уж если клиент оказался нудный и дотошный и полезет листать вторую страницу - то тогда можно и запустить курсор с сортировкой.
В таком узком варианте - наверное нет. Просто функция всегда лучше когда она имеет аргументы и результат. Ее можно тестировать по другому. В данном случае тест вроде property based.
swap(swap(a,b)) = pair(a,b)
Ее можно использовать в рекурсии (обработка деревьев).
Василий Васильков, ну обычно любой бинарник (артифакт) имеет рукотворную природу. Человек его создал. Упаковал в пакет для дистрибуции в Windows/Linux репозитариях. Подписал своими подписями. И положил в правильное место где все могут загрузить и проверить сертификаты на достоверность. После этого бинарь попадает в антивирусные базы. Проверяется и получает хеши где написано что бинарь чистый. И ему можно доверять.
Вот. А если вы создали технологию которая позволяет 100500 раз в сутки фабриковать бинарники. То надо подумать как эту технологию защитить от хакерских атак. Ведь не очень сложно подать ей на вход скрипт который будет собран и выполнен на доверенном сервере. С браузерами вот - такая же история. Их пристально изучают с каждой новой версией и злоумышленники и безопасники. И смысл этого изучения - просто предотвратить запуск бинарника любой ценой. Вот. Как только кто-то получит возможность исполнять произвольные бинарники в браузере - все! Капец вашим деньгам! Скопируют все из Моих Документов а остаток диска зашифруют. Вобщем веселые праздники после нового года будут обеспечены.
Но это я так. Ворчу. Вобщем если скажите что предусмотрели защиту - то хорошо.
У меня - дежа-вю или мне кажется что этот вопрос уже возникал где-то в хабре.
И вообще хороший художник - должен быть голодным.
Хороший разработчик софта под нагрузкой - должен ее разрабатывать для слабых конфигураций.
Вот такая у меня консервативная и хозяйственная позиция по этому вопросу. И это я не то чтобы прикинулся старым олдом и пришел учить молодых. Я и сам к себе такое же требование ставлю.
Dr. Bacon, это очень странный trafe-off. Вы где-то сэкономили на user-sessions но проиграли в execution plan.
Вобщем я согласен с вами что веб-разработка имеет свою специфику но я считаю что этот вопрос глубого не исследован. Мне как базовику и как человеку который очнень любит и ценит SQL/DBMS очень не хотелось бы использовать подход основанный на многократном execution сортированного курсора особенно тогда, когда этого можно было бы избежать.
Я категорически против советов читать Кнута. Это чтиво - специфическое. И чтобы его читать надо тоже иметь некую подготовку. Или может быть если автор - математик то тогда Кнут ему покажется более понятным. С моей точки зрения Кнут перегружает читателя ненужными вещами которые конечно развивают фантазию но могут не понадобиться аж никогда. Чего стоит только его виртуальный процессор MMIX в котором в качестве дисковых устройств есть (!) накопители на магнитной ленте. Офигеть актуально. Но это так. Шутки ради я сказал. А если без шуток то все исходники в книге господин Кнут пишет ни на Modula ни на Object Pascal и даже не на Блок-схемах а именно на кодах для виртуального процессора MMIX. Вот такие дела. Да. В реальной жизни никакого MMIX не существует понятное дело.
Вообще для быстрого и эффективного вхождения в Алгоритмы и Структуры Данных (АСД) я-бы предложил Вирта и Седжвика.
Кнута - можете читать. Ближе к пенсии. Или на пенсии. Возле камина. Теплыми вечерами.
Jacen11, да. Вся литература по хеш-таблицам оперирует именно таким определением O(1) для хеш-таблиц. Ситуация промаха мимо ключа которую вы описываете - достаточно редкая. И я не просто так говорил о Java-реализации HashMap. В дефолтном конструкторе (99% которого используется) таблица создается с коэффициентом заполнения 0.75. А при такой пропорции ключей и бакетов вероятность коллизии очень мала. Поэтому вашу формулу O(1) или O(n) здесь нужно применять с сильной поправкой на теор-вер. А теор-вер там уже во много раз сложнее и проще его не вычислять а доказывать практически. Тоесть просто симуляцией работы хеш-таблицы.
Разумеется мои рассуждения адресованы Вам а не автору. Ему это можно пропустить т.к. обычно на собеседовании когда говорят о O(n) не копают каждую структуру данных. Нет времени на это.
Ну а вы - изучайте для себя структуры данных Java. Это полезно.
Кажется курсор в Postgres поддерживает опцию SCROLL. Тоесть можно делать перемотку вперед и назад.
В этом случае вам не нужно на каждый page down делать еще один запрос. Просто продолжаете
перемотку следующих 10 записей.
Автор попробуй перегрузи весь стек. И все приложения.