Иван Бессонов @ibessonov
Математик, программист
Information
- Rating
- Does not participate
- Location
- Санкт-Петербург, Санкт-Петербург и область, Россия
- Date of birth
- Registered
- Activity
Specialization
Пишу базу данных
Lead
Java
High-loaded systems
Математик, программист
Согласен с вами, лейаут хипа испорчен. Объект
ClassLoader
, переданный в конструктор, записался в чью-то чужую память и стал бомбой замедленного действия.Но даже если бы я выделил правильное количество байт, всё равно почти любые манипуляции с этим объектом приводили бы к краху. В JVM ведь по факту никакого нового класса нет, а методы в
java.lang.Class
почти все нативные.Понятное дело, что приведённая задача решения не имеет. Вся 6-я часть может восприниматься как шутка.
Верно, любой
<? extends X>
можно заменить введением дополнительного типа в сигнатуру метода, но я такой подход считаю менее удобным.В каком то смысле информация действительно теряется, но в данном контексте она и не нужна. Если нужно сохранение типа, то можно написать такой код:
Но я приводил пример не с этой целью. Рассмотрим такой код:
Метод принимает ассоциативный массив "параметров", значения которых могут иметь произвольные типы. Но если вдруг у нас в коде есть объект типа
Map<String, String>
, то мы не сможем передать его в методquery
(типы не совпадают).При этом если изменить сигнатуру метода на
void query(Map<String, ? extends Object> parameters)
, то в него легко можно будет передатьMap
с любым типом значений, включаяMap<String, String>
.EDIT: поправил формулу в публикации
Чем он лучше такой банальной проверки?
Но, к сожалению, класс
Class
(как минимум) слишком часто используется без параметра. Получается, что компилятор вынуждает нас писать<?>
в месте неизвестного типа вместо того, чтобы разрешить вообще игнорировать параметр.И да, обстоятельства бывают разные и часто в проектах можно встретить raw types
Например, в случае 3, на мой взгляд, спецификация идёт вразрез со здравым смыслом, да и в случае 1 тоже.
А в последнем, если поменять местами ограничения, то отвалятся референсы для другого типа, так что хорошим решением это тоже не назовёшь.
Теория Относительности тут совсем непричём.
Настоятельно советую ознакомиться с законом больших чисел, ну или просто почитать основы мат статистики. Получиться то всё может, но вероятность этого настолько ничтожно мала, что её никто не рассматривает.
Задаюсь тем же вопросом :)
Обязательно отпишитесь, когда дочитаете «оригинальную статью»!
Вызывает сомнение тот факт, что эксперимент показывает 50% в том случае, когда ответ «классического физика» равен 66% (то есть при выборе возможно совпадающих дверей, абсолютно случайных). Я не нашёл ссылку на научную публикацию, в которой подтверждалась бы такая вероятность, а просто оригиналу статьи (https://www.wired.com/2014/01/bells-theorem) я верю с трудом.
Если я верно понял, автор производил вычисления факториалов примерно до 1000000, то есть результаты были не настолько большими, чтобы использовать Алгоритма Фюрера (если верить википедии). А так да, теоретическую оценку наверняка можно улучшить.
На практике я не заморачивался и использовал то умножение, какое было реализовано за меня в BigInteger.
Спасибо за замечание.
Спасибо!
Не совсем, понадобится таблица простых чисел от 2 до n.
Решето Эратосфена составляется за O(n * log log n), это меньше, чем время вычисления факториала. Отдельного способа проверки на простоту алгоритм не требует.
Боюсь, что это вопрос не ко мне. Вероятнее всего различные алгоритмы вычисления факториала имеют соревновательный характер.
Хранить массив может быть очень затратно по памяти, особенно если нужны значения порядка 1000000! (вдруг они кому-то нужны). На практике я такого не встречал и сам всегда хранил кэшированные значения в обычном массиве (во время решения задач по программированию).
Простых чисел от 1 до n всего O(n / log n), вычисление lp происходит за O(log n).
Сложностью же перемножения простых чисел в соответствующих степенях будет O(n (log n)2 log log n) — это уже не очевидная оценка, её доказательство есть по второй ссылке.
Это уже написание интерпретатора внутри хаскеля. Можно, конечно, но это не тот результат, который хотелось бы иметь)