Вы можете использовать операцию reduce
:
Arrays.stream(info).reduce((s1, s2) -> s1.size + s2.size);
Или sum
, как показано @nullpointer:
Arrays.stream(info).mapToInt(StackInfo::getSize).sum();
Без сомнения я принимаю решение вручить JQuery серверами Google API. Я не пошел с jsapi методом, так как я не усиливаю никакой другой Google API, однако если бы это когда-нибудь изменялось затем, то я рассмотрел бы это...
Сначала: серверы API Google распределяются во всем мире вместо моего единственного местоположения сервера: Более близкие серверы обычно означают более быстрое время отклика для посетителя.
1115-секундный: Многие люди принимают решение разместить JQuery на Google, поэтому когда посетитель приезжает в мой сайт, у них может уже быть сценарий JQuery в их локальном кэше. Предварительно кэшируемое содержание обычно означает более быстрое время загрузки для посетителя.
Треть: Моя хостинговая компания обвиняет меня за используемую пропускную способность. Никакой смысл, использующий 18k на сеанс пользователя, если посетитель может получить тот же файл в другом месте.
я понимаю, что помещаю часть доверия на Google, чтобы служить корректному файлу сценария, и быть онлайн и быть доступным. До этой точки я не был разочарован использованием Google и продолжу эту конфигурацию, пока это не имеет смысл не к.
Одна вещь, на которую стоит указать... , Если у Вас есть смесь безопасных и небезопасных страниц на Вашем сайте, Вы могли бы хотеть динамично изменить источник Google для предотвращения обычного предупреждения, что Вы видите при загрузке небезопасного содержания в защищенной странице:
Вот то, что я придумал:
<script type="text/javascript">
document.write([
"\<script src='",
("https:" == document.location.protocol) ? "https://" : "http://",
"ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js' type='text/javascript'>\<\/script>"
].join(''));
</script>
9/8/2010 ОБНОВЛЕНИЯ - Некоторые предложения были сделаны уменьшить сложность кода путем удаления HTTP и HTTPS и просто использовать следующий синтаксис:
<script type="text/javascript">
document.write("\<script src='//ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js' type='text/javascript'>\<\/script>");
</script>
, Кроме того, Вы могли также изменить URL для отражения jQuery главное число, если бы Вы хотели удостовериться, что последняя Основная версия библиотек jQuery была загружена:
<script type="text/javascript">
document.write("\<script src='//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js' type='text/javascript'>\<\/script>");
</script>
Наконец, если бы Вы не хотите использовать Google и предпочли бы jQuery, Вы могли бы использовать следующий исходный путь (имейте в виду, что jQuery не поддерживает соединения SSL):
<script type="text/javascript">
document.write("\<script src='http://code.jquery.com/jquery-latest.min.js' type='text/javascript'>\<\/script>");
</script>
Если я ответственен за 'живой' сайт, я лучше знаю обо всем, что продолжается и в мой сайт. По этой причине я размещаю версию минуты jQuery сам или на том же сервере или на статическом/внешнем сервере, но так или иначе местоположение, где только я (или моя программа/прокси) могу обновить библиотеку после наличия, проверяло/тестировало каждое изменение
Я просто включаю последнюю версию от сайта jQuery: http://code.jquery.com/jquery-latest.pack.js Это удовлетворяет моим потребностям, и я никогда не должен волноваться об обновлении.
EDIT:For главное веб-приложение, конечно, управляйте им; загрузите его и служите ему сами. Но для моего персонального сайта, я не мог заботиться меньше. Вещи волшебно не исчезают, они обычно удерживаются от использования сначала. Я не отстаю от него достаточно для знания, что измениться для будущих выпусков.
Я должен голосовать-1 за библиотеки размещенный на Google. Они собирают данные, стиль аналитики Google, с их обертками вокруг этих библиотек. Как минимум я не хочу клиентский браузер, делающий больше, чем я прошу, чтобы это сделало, а тем более что-либо еще на странице. В худшем это - "новая версия Google" того, чтобы не быть злым - использование незаметного JavaScript для сбора большего количества данных использования.
Примечание: если они изменили эту практику, супер. Но в прошлый раз, когда я рассмотрел использование их размещенных библиотек, я контролировал исходящий трафик HTTP на своем сайте, и периодическое обращается к серверам Google, не было что-то, что я ожидал видеть.
Я мог бы быть олдскульным об этом, но я все еще осуждаю использование горячих ссылок. Google Maybe является исключением, но в целом, это - действительно просто благовоспитанность для хостинга файлов на собственном сервере.
Здесь существует несколько проблем. Во-первых, асинхронный метод загрузки Вы указали:
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load('jquery', '1.3.1');
google.setOnLoadCallback(function() {
// do stuff
});
</script>
имеет несколько проблем. Теги script приостанавливают загрузку страницы, в то время как они получены (при необходимости). Теперь, если они не спешат загружаться, это плохо, но jQuery является маленьким. Настоящая проблема с вышеупомянутым методом состоит в том, что, потому что загрузка jquery.js происходит независимо для многих страниц, они закончат загружаться и рендеринг, прежде чем jQuery загрузился так, любой jQuery, разрабатывающий Вас, делают будет видимое изменение для пользователя .
другой путь:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
Попытка некоторые простые примеры как, имейте простую таблицу и измените фон ячеек к желтому с setOnLoadCallback () метод по сравнению с $ (документ) .ready () со статической загрузкой jquery.min.js. Второй метод не будет иметь никакого значимого мерцания. Первое будет. Лично я думаю, что это не хороший пользовательский опыт.
Как пример выполняет это:
<html>
<head>
<title>Layout</title>
<style type="text/css">
.odd { background-color: yellow; }
</style>
</head>
<body>
<table>
<tr><th>One</th><th>Two</th></tr>
<tr><td>Three</td><td>Four</td></tr>
<tr><td>Five</td><td>Six</td></tr>
<tr><td>Seven</td><td>Nine</td></tr>
<tr><td>Nine</td><td>Ten</td></tr>
</table>
<script src="http://www.google.com/jsapi"></script>
<script>
google.load("jquery", "1.3.1");
google.setOnLoadCallback(function() {
$(function() {
$("tr:odd").addClass("odd");
});
});
</script>
</body>
</html>
(необходимо) видеть, что таблица появляется, и затем строки идут желтые.
вторая проблема с google.load () метод - то, что это только размещает ограниченный диапазон файлов. Это - проблема для jQuery, так как это - чрезвычайно сменный зависимый. При попытке включать плагин jQuery с <script src="...">
тег и google.load()
, то плагин, вероятно, перестанет работать с сообщениями "jQuery, не определяется", потому что он еще не загрузился. Я действительно не вижу путь вокруг этого.
третья проблема (с любым методом) состоит в том, что они - одна внешняя загрузка. Принятие Вас имеет некоторые плагины и Ваш собственный код JavaScript, который Вы до минимума двух внешних запросов для загрузки JavaScript. Вы - вероятно, более обеспеченное получение jQuery, все соответствующие плагины и Ваш собственный код и помещение его в один уменьшенный файл.
Библиотеки Ajax Google From Should You Use API для Хостинга? :
относительно времени загрузки, Вы на самом деле загружаете два сценария - jsapi сценарий и mootools сценарий (сжатая версия сверху). Таким образом, это - два соединения, а не один. По моему опыту, я нашел, что время загрузки было на самом деле в 2-3 раза медленнее, чем загрузка из моего собственного персонального общего сервера, даже при том, что это прибывало из Google, и моя версия сжатого файла была несколькими K больше, чем Google. Это, даже после того, как файл загрузился и (по-видимому) кэшировался. Таким образом для меня, так как пропускная способность не имеет значения очень, не будет иметь значение.
Наконец у Вас есть потенциальная проблема параноидального браузера, отмечающего запрос как своего рода попытка XSS. Это обычно не проблема с настройками по умолчанию, но в корпоративных сетях, где пользователь не может управлять, какой браузер они используют уже не говоря о настройках безопасности, у Вас может быть проблема.
Так в конце я не могу действительно видеть, что я использую Google AJAX API для jQuery, по крайней мере (более "полные" API являются другой историей до некоторой степени), очень кроме отправить примеры здесь.
Профессионалы: Хост на Google обладает преимуществами
Недостатки:
, интересно, можно ли ВКЛЮЧАТЬ от Google и затем проверить присутствие некоторой Глобальной переменной или somesuch, и если загрузка отсутствия из сервера?
Я не хотел бы общедоступного сайта, который я разработал для зависимости от любого внешнего сайта, и таким образом, я размещу jQuery сам.
Вы готовы иметь отключение электричества на Вашем сайте, когда другой (Google, jquery.com, и т.д.) понижается? Меньше зависимостей является ключом.
Если Вы хотите использовать Google, прямая ссылка может быть более быстро реагирующей. Каждой библиотеке перечислили путь для файла прямого доступа. Это - путь jQuery
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js"></script>
, Просто перечитывает Ваш вопрос, есть ли причина Ваш, используют https? Это - списки Google тега script в их примере
<script src="http://www.google.com/jsapi"></script>
jQuery 1.3.1 минуты только 18k в размере. Я не думаю, что это - слишком много хита для выяснения относительно начальной загрузки страницы. Это будет кэшироваться после этого. В результате я размещаю его сам.
Одна причина, которую Вы могли бы хотеть разместить на внешнем сервере, состоит в том, чтобы работать вокруг ограничений браузера параллельных соединений с конкретным сервером.
Однако, учитывая, что файл jQuery Вы используете, не будет, вероятно, изменяться очень часто, кэш браузера втолкнет и выскажет то мнение, спорное по большей части.
Вторая причина разместить его на внешнем сервере состоит в том, чтобы понизить трафик к Вашему собственному серверу.
Однако, учитывая размер jQuery, возможности - это, будет небольшая часть Вашего трафика. Необходимо, вероятно, попытаться оптимизировать фактическое содержание.
В дополнение к людям, которых советы разместить его на собственном сервере, я предложил сохранить им на отдельном домене (например, static.website.com), чтобы позволить браузерам загружать его в отдельный от другого довольного поток. Эта подсказка также работает на весь статический материал, скажите изображения и CSS.
В заголовке:
(function() {
var jsapi = document.createElement('script'); jsapi.type = 'text/javascript'; jsapi.async = true;
jsapi.src = ('https:' == document.location.protocol ? 'https://' : 'http://') + 'www.google.com/jsapi?key=YOUR KEY';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('head')[0]).appendChild(jsapi);
})();
Конец текста:
<script type="text/javascript">
google.load("jquery", "version");
</script>