.NET файлов с отображенной памятью

Простое обновление к API версии Java 8

public Map<String, List<String>> splitQuery(URL url) {
    if (Strings.isNullOrEmpty(url.getQuery())) {
        return Collections.emptyMap();
    }
    return Arrays.stream(url.getQuery().split("&"))
            .map(this::splitQueryParameter)
            .collect(Collectors.groupingBy(SimpleImmutableEntry::getKey, LinkedHashMap::new, **Collectors**.mapping(Map.Entry::getValue, **Collectors**.toList())));
}

и toList () необходимо использовать с коллекторами, которые не были указаны в верхнем ответе. В противном случае это приведет к ошибке компиляции в IDE

13
задан CSharpAtl 10 December 2008 в 19:13
поделиться

4 ответа

Если Вы ищете библиотеку Memory Mapped для C#, посмотрели на обертка filemap Tomas Restrepo. Это лицензируется под LGPL.

10
ответ дан 1 December 2019 в 17:59
поделиться

Файлы С отображенной памятью могут использоваться, когда Вы имеете большой объем данных и не хотите нести расходы маршалинга его через границы процесса. Я использовал его для подобной цели. Необходимо быть довольно довольны небезопасными и прикрепленными понятиями памяти в.NET для использования в своих интересах MMFs. , По-видимому , блок кэширования Библиотеки Предприятия содержит код, который переносит базовый API C#. Я видел по крайней мере еще одну реализацию в другом месте.

, Если можно жить со стоимостью маршалинга, это, вероятно, легче и более изящно для использования некоторого решения для дистанционной работы.NET.

3
ответ дан 1 December 2019 в 17:59
поделиться

Вы могли бы хотеть просто бросить его в Кэш [] объект. Можно установить истечение кэша на основе реального файла. Затем каждый раз, когда Вы изменяете фактический файл, содержание будет пустым для объекта в кэше, и можно перезагрузить его. Это не может быть соответствующим, если Вы имеете дело с большим количеством байтов.

byte[] fileBytes = Cache["fileBytes"];
if (null == fileBytes) {
   // reload the file and add it to the cache.
   string fileLocation = Server.MapPath("path/to/file.txt");
   // Just a same of some bytes.
   fileBytes = new byte[10];
   Cache.Insert(fileLocation, fileBytes, new System.Web.Caching.CacheDependency(fileLocation));
}

я предполагаю, что у меня нет определенного ответа о рабочих характеристиках кэша и больших объемах данных. http://www.alachisoft.com/ncache/asp-net-cache.html состояния, которые Вы получаете между 2 и 3 концертами пространства кэша, которое должно быть совместно использовано Вашим приложением и кэшем.

1
ответ дан 1 December 2019 в 17:59
поделиться

Я знаю, что это немного поздно, но фреймворк .NET 4.0 теперь поддерживает файлы с привязкой к памяти из коробки:

http://blogs.msdn.com/salvapatuel/archive/2009/06/08/working-with-memory-mapped-files-in-net-4.aspx

30
ответ дан 1 December 2019 в 17:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: