Я считаю, что переменные должны быть в AppSettings для Autofac, чтобы найти их.
Вы можете добавить их после прочтения из файла Json: мы делаем это в конструкторе контроллера (у нас есть разные разделы конфигурации для разных ботов)
AddConfigurationSetting("MicrosoftAppId", appId);
AddConfigurationSetting("MicrosoftAppPassword", appPassword);
private static void AddConfigurationSetting(string name, string value)
{
if (!ConfigurationManager.AppSettings.AllKeys.Contains(name))
{
ConfigurationManager.AppSettings[name] = value;
}
}
Я не уверен, почему Ваш код скомпилировал бы для начала.
Вы, как предполагается, не используете [] в списке массива для доступа к участникам. arraylist является просто списком, который внутренне хранится в массиве. Необходимо использовать список, получают операцию (который все еще был бы O (1)). Запись numlist [индекс] означает, что у Вас есть массив объектов в numlist. Вы не можете переопределить [] операция как в C++.
Кроме того, интервал составляет 32 бита в Java. Наличие массива длины, больше, чем 2^32 (таким образом, Вам были бы нужны долгие индексы), маловероятно, и я даже не уверен, что спецификация позволяет его.
Поймите с 32-разрядным международным индексом со знаком к длинному [] обращение к 16 ГБ RAM.
Если Вы действительно серьезно относитесь к получению к большим началам с решетом, Вы не собираетесь сходить с рук несколько вещей в своем текущем impl:
Простое решение: рассмотрение этого num
никогда не больше, чем 100 в Вашем примере кода, просто изменитесь, это - тип к int
.
Но другие точек упомянули об адресном пространстве, также положительные стороны.
Допустимые пределы Java выстраивают к в большей части Целого числа. Элементы MAX_VALUE. В то время как a List
может содержать больше элементов (это верно для Collection
s в целом), можно только добавить/получить/удалить/установить их использующий int
индекс.
Принятие Вас имеет память для этого много элементов (очень вряд ли, я думаю), Вы могли записать свою собственную структуру данных, состоящую из "связанных" массивов. get()
и set()
методы взяли бы a long
индексируйте и выясните соответствующий массив и int
индекс в том массиве.
Кроме того, я предложил бы использовать булевские переменные для представления состояния каждого числа, вместо того, чтобы хранить/удалять каждое число явно. Это было бы лучше потому что (1) булевские переменные занимают меньше места, чем longs и (2) смещение элементов (как выполнено ArrayList
) во время элемента удаление может быть дорогим.
По крайней мере, теоретический максимальный размер массивов Java является Целым числом. MAX_VALUE. Это вызвано тем, что тип индекса массива является согласно спецификации интервалом. В действительности это зависит от Вашей памяти все же.
Таким образом, если Ваш алгоритм действительно зависит от наличия такого большого массива, Вам не повезло с массивами Java.
Как я сомневаюсь, Вам будет нужно все пространство, которое Вы могли записать своему собственному классу набора, который действует как массив, но не нуждается в такой же памяти. Это свернуло бы wholes в адресном пространстве (так сказать). Конечно, это могло бы изменить поведение во время выполнения, которое Вы ожидаете от алгоритма.
jScience Библиотека имеет большой вектор по имени Float64Vector. В то время как я никогда не использовал этот Класс, он мог бы соответствовать Вашим потребностям. Никакие обещания.
Править: Zach Scrivena указал в комментариях, что Float64Vector определен размеры к ints. Я признаю ошибку.