Что такое dll?

Если вы не хотите повторять три раза по списку или не хотите создавать слишком много промежуточных объектов Content, вам нужно будет собрать поток со своей собственной реализацией:

public static Content collectToContent(Stream stream) {
    return stream.collect(
        Collector.of(
            () -> new StringBuilder[] {
                    new StringBuilder(),
                    new StringBuilder(),
                    new StringBuilder() },
            (StringBuilder[] arr, Content elem) -> {
                arr[0].append(arr[0].length() == 0 ? 
                        elem.getA() : 
                        ", " + elem.getA());
                arr[1].append(arr[1].length() == 0 ? 
                        elem.getB() : 
                        ", " + elem.getB());
                arr[2].append(arr[2].length() == 0 ? 
                        elem.getC() : 
                        ", " + elem.getC());
            },
            (arr1, arr2) -> {
                arr1[0].append(arr1[0].length() == 0 ?
                        arr2[0].toString() :
                        arr2[0].length() == 0 ?
                                "" :
                                ", " + arr2[0].toString());
                arr1[1].append(arr1[1].length() == 0 ?
                        arr2[1].toString() :
                        arr2[1].length() == 0 ?
                                "" :
                                ", " + arr2[1].toString());
                arr1[2].append(arr1[2].length() == 0 ?
                        arr2[2].toString() :
                        arr2[2].length() == 0 ?
                                "" :
                                ", " + arr2[2].toString());
                return arr1;
            },
            arr -> new Content(
                    arr[0].toString(), 
                    arr[1].toString(), 
                    arr[2].toString())));
}

Этот коллекционер сначала создает массив из трех пустых StringBuilder объектов. Затем определяет накопитель, который добавляет свойство каждого элемента Content к соответствующему StringBuilder. Затем он определяет функцию слияния, которая используется только тогда, когда поток обрабатывается параллельно, что объединяет два ранее накопленных частичных результата. Наконец, он также определяет функцию финишера, которая преобразует объекты 3 StringBuilder в новый экземпляр Content, причем каждое свойство соответствует накопленным строкам предыдущих шагов.

Пожалуйста, проверьте Stream.collect() и Collector.of() javadocs для дополнительной справки.

85
задан 3 revs, 3 users 100% 26 June 2009 в 04:31
поделиться

5 ответов

DLL является динамически подключаемой библиотекой. Это - набор кода и/или данных, которые могут использоваться несколькими приложениями (или другие библиотеки/модули).

Так, например, общепринятые методики для обработки файлов работа с компонентами графического интерфейса пользователя и т.д. сделана доступной в библиотеках, таким образом, несколько приложений могут использовать ту же функциональность. Это не только уменьшает потребность создать тот же материал многократно, но это также гарантирует, что, например, стандартные диалоги то же между приложениями.

Библиотеки могут быть загружены во времени выполнения и таким образом совместно использованы различными параллельными приложениями. Это называют динамическим подключением.

В некоторых случаях библиотека может быть включена в рамках самого приложения. Это известно как статическое подключение. Статическое подключение делает развертывание легче за счет гибкости, поскольку другое приложение каждый загрузит ту же копию DLL.

Однако статическое подключение является не всегда опцией. Например, Вы не можете статически связать приложение.NET. У пользователя должны быть библиотеки.NET для запуска приложения.NET и библиотек (или блоки, как их называют в.NET), загружаются во времени выполнения.

DLLs создаются теми же инструментами, используемыми для создавания приложений. Определенные детали зависят очень от используемых инструментов.

53
ответ дан Brian Rasmussen 24 November 2019 в 08:23
поделиться

Динамически подключаемая библиотека.

, Чтобы дать Вам пример, Если Вам загрузили чужой DLL в Вас приложение, можно использовать биты программирования от него.

можно загрузить DLL, который генерирует случайные числа, которые всегда запускаются с "5" или что-то.

В Вас программа можно назвать CrazyDLL.GenerateRandomNumbersSorta (), и это возвратит число.

Для примера реального мира, у меня есть DLL, который комбинирует 4 текстовых поля (Вы использовали бы их для ввода IP-адресов), и он автоматически только принимает, что числа меньше чем 256 и дескрипторы, нажимающие клавишу Backspace, переходят к предыдущему текстовому полю.

я создал DLL с тем кодом и теперь всем, что я должен сделать, перетащить больше тех наборов текстового поля IP-адреса, не имея необходимость копировать весь тот код много раз.

тот же DLL также имеет функцию для преобразования IP-адресов к шестнадцатеричным строкам и другого полезного кода.

6
ответ дан 3 revs, 2 users 96% 24 November 2019 в 08:23
поделиться

От MSDN Library:

динамически подключаемая библиотека (DLL) А является модулем, которые содержат функции и данные, которые могут использоваться другим модулем (приложение или DLL).

1
ответ дан Nemanja Trifunovic 24 November 2019 в 08:23
поделиться

DLL = Динамичный Загрузка Библиотека ссылок. Поскольку Вам сказали, это - в основном набор функций, классов C++ и/или глобальных переменных. Можно загрузить DLL статически (т.е. ОС загружает его автоматически, когда программа запускается), или динамично (программа явно загружает его), в которой точке функции и материал в DLL доступны программе.

Создание того подобно созданию EXE, кроме не должно быть main() функция. Существуют директивы компоновщика, чтобы сказать компоновщику создавать DLL, а не EXE.

главная причина Вы хотели бы сделать, это должно инкапсулировать некоторый код в одном месте и использовать его от нескольких exe's, вместо того, чтобы связать код в каждого.

А несколько историческая причина состоит в том, что Ваш exe может быть меньшим, так как часть кода физически расположена в другом файле. Это означает, что сумма пространства, поднятого в памяти Вашим exe, может быть меньшей. В современных системах это - меньше проблемы, чем она раньше была, хотя это все еще могла бы быть проблема о Windows Mobile.

1
ответ дан Graeme Perrow 24 November 2019 в 08:23
поделиться

DLL = Библиотека динамической компоновки

Имя на самом деле достаточно описывает то, что они делают.

Библиотека

Позволяет изолировать код для конкретной проблемной области в одном месте. Затем поделитесь этим между несколькими приложениями. Библиотеку можно в любой момент заменить другой, чтобы исправить ошибки или добавить функциональность.

Ссылка

Вы можете «привязать» библиотеку к приложению, чтобы логика библиотеки не компилировалась непосредственно в приложение.

Динамический

Библиотека может загружаться по запросу. Вместо того, чтобы загружать в память гигантский единственный EXE-файл, ОС может загружать только необходимые части. Кроме того, если DLL используется совместно между приложениями, ОС может оптимизировать загрузку библиотеки и использовать ее между приложениями.

26
ответ дан 24 November 2019 в 08:23
поделиться
Другие вопросы по тегам:

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