Прокси-исключения в 12.04 LTS [дубликат]

Это было одно из самых сложных и широко обсуждаемых решений в Группе экспертов JSR-335. С одной стороны, представляется вполне разумным, что абстрактный абстрактный метод может быть разумной целью преобразования для лямбда. И, если ваша ментальная модель «лямбда-это просто компактные анонимные классы», тогда это было бы вполне разумной идеей.

Однако, если вы натягиваете эту строку на некоторое время, вы понимаете, что она тащит с у вас много сложностей и ограничений - ради использования меньшинства.

Одна из худших вещей, которые тащит с собой, - это значение имен внутри тела лямбды, а в качестве особого случая - значение this. Внутри внутреннего класса существует ужасно сложное правило поиска («поиск гребня»), поскольку имена внутри внутреннего класса могут относиться к членам супертипа или быть захваченным из лексической среды. (Например, многие ошибки и головоломки вращаются вокруг, используя this, а не Outer.this, во внутренних телах класса.) Если бы мы разрешили преобразование лямбда в абстрактные классы SAM, у нас было бы два плохих выбора; загрязнять все лямбды со сложной сложностью определения внутреннего класса или разрешать преобразование в объекты абстрактного класса, но ограничивать доступ таким образом, чтобы тело лямбда не могло ссылаться на членов базового класса (что вызовет его собственную путаницу). получившееся правило получается очень чистым: кроме форматов лямбда-параметров имена (в том числе this, которые являются только именем) внутри тела лямбды означают то, что они означают сразу за пределами лямбда-тела.

Другая проблема, связанная с переходом lambdas во внутренние классы, связана с идентификацией объекта и сопутствующей потерей оптимизации VM. У выражения внутреннего класса (например, new Foo() { }) гарантируется уникальный идентификатор объекта. Не совершая так сильно идентификацию объекта для lambdas, мы освобождаем виртуальную машину, чтобы сделать много полезных оптимизаций, которые она в противном случае не могла бы сделать. (В результате лямбда-связь и захват уже быстрее, чем для анонимных классов, и до сих пор существует глубокий трубопровод оптимизации, который мы еще не применили.)

Кроме того, если у вас есть одно- метод абстрактного класса и хотите иметь возможность использовать lambdas для их создания, есть простой путь для этого - определить фабричный метод, который использует функциональный интерфейс в качестве аргумента. (Мы добавили фабричный метод для ThreadLocal в Java 8, который делает это.)

Последний гвоздь в гробу для «lambdas - просто удобный синтаксис для объектов», взгляд мира появился после того, как мы сделали анализ существующих кодовых баз и их использование интерфейсов с одним абстрактным методом и абстрактных классов. Мы обнаружили, что только очень небольшой процент был основан на абстрактных классах. Было глупо обременять все лямбды сложностью и проблемами производительности подхода, который только выиграл бы менее 1% использования. Поэтому мы приняли «смелое» решение отказаться от этого варианта использования, чтобы воспользоваться преимуществами, которые это обеспечило для других 99 +%.

15
задан hingev 13 May 2012 в 18:27
поделиться

3 ответа

У меня была та же проблема с 12,04 и решение, данное на , этот поток работал на меня.

2
ответ дан Community 22 October 2019 в 14:35
поделиться

Вы используете или gconf-редактор/system/http_proxy/ignore_hosts
или dconf-редактор (и вручную перешли к системе-> http_proxy-> ignore_hosts).

Вопреки тому, что записали другие, нет никакой потребности повторно войти в систему для изменений для вступления в силу.
, Кроме того, настройки, сделанные для/system/http_proxy/ignore_hosts также, вступают в силу для https.

13
ответ дан user640811 22 October 2019 в 14:35
поделиться

Спасибо nvk, это наконец работало на меня также, но существует выгода:

В dconf-редакторе существует текст справки, который читает что-то как, 'если никакая конфигурация для https будет дан, прокси-сервер, настроенный для , то http будет использоваться для https также'. Это не верно, по крайней мере, для Ubuntu 12.04 . Я должен был добавить сервер для всех протоколов, даже будучи тем же для http, ftp и https. После того, как я сделал это, и после того, как выходить из системы и в снова, прокси (включая исключения) вступили в силу для всех приложений.

однако, я думаю 'нормальные' параметры сети, GUI мог быть сделан лучше добавлением дополнительного поля ввода для исключений прокси в части настроек прокси. Я надеюсь видеть это в будущем обновлении Ubuntu.

2
ответ дан Community 22 October 2019 в 14:35
поделиться
Другие вопросы по тегам:

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