Объяснение выбора представления новой строки различия Unix, Mac, DOS/Windows?

Кто-либо знает исходное объяснение или историю, различных платформ каждый выбор другого, уже подобного до некоторой степени, представление новой строки? Должны быть некоторые проектные решения, сделанные первоначально. (Я не полагаю, что это - весь случайный выбор...),

  • Unix/Mac OS X: LF (\n)
  • Mac OS 9 и прежде: CR (\r)
  • DOS/Windows: CRLF (\r\n)
7
задан bryantsai 19 January 2010 в 02:13
поделиться

2 ответа

Это вызвано характером отложенных выражений # {} (обратите внимание, что «устаревшие» стандартные выражения $ {} ведут себя точно так же при использовании Facelets вместо JSP). Отложенное выражение вычисляется не немедленно , а создается в виде объекта StartExpression , и метод получения, расположенный за выражением, выполняется каждый раз, когда код вызывает StartExpression # getValue () .

Обычно это вызывается один или два раза за цикл запрос-ответ JSF в зависимости от того, является ли компонент входным или выходным компонентом ( узнайте об этом здесь ). Однако при итерации компонентов JSF (таких как < h: dataTable > и < ui: repeat > ) этот счетчик может подниматься (значительно) выше, или здесь и там в логическом выражении, таком как атрибут reended . JSF (в частности, EL) вообще не будет кэшировать вычисленный результат выражения EL, поскольку оно может возвращать различные значения для каждого вызова (например, когда оно зависит от текущей итерируемой строки данных).

Оценка EL-выражения и вызов метода получения - очень дешевая операция, поэтому об этом вообще не стоит беспокоиться. Однако история меняется при выполнении дорогостоящей БД/бизнес-логики в методе получения по какой-либо причине. Это будет повторяться каждый раз!

Методы получения в бобах-подкладках JSF должны быть разработаны таким образом, чтобы путь, что они исключительно возвращают уже подготовленное свойство и ничего более, точно в соответствии со спецификацией Javabeans . Они вообще не должны выполнять какую-либо дорогостоящую логику БД/бизнеса. Для этого следует использовать методы прослушивателя @ PostConstruct и/или (действия) компонента. Они выполняются только один раз в определенный момент жизненного цикла JSF на основе запросов, и это именно то, что вы хотите.

Ниже приводится краткое описание всех способов настройки/загрузки свойства.

public class Bean {

    private SomeObject someProperty;

    @PostConstruct
    public void init() {
        // In @PostConstruct (will be invoked immediately after construction and dependency/property injection).
        someProperty = loadSomeProperty();
    }

    public void onload() {
        // Or in GET action method (e.g. <f:viewAction action>).
        someProperty = loadSomeProperty();
    }           

    public void preRender(ComponentSystemEvent event) {
        // Or in some SystemEvent method (e.g. <f:event type="preRenderView">).
        someProperty = loadSomeProperty();
    }           

    public void change(ValueChangeEvent event) {
        // Or in some FacesEvent method (e.g. <h:inputXxx valueChangeListener>).
        someProperty = loadSomeProperty();
    }

    public void ajaxListener(AjaxBehaviorEvent event) {
        // Or in some BehaviorEvent method (e.g. <f:ajax listener>).
        someProperty = loadSomeProperty();
    }

    public void actionListener(ActionEvent event) {
        // Or in some ActionEvent method (e.g. <h:commandXxx actionListener>).
        someProperty = loadSomeProperty();
    }

    public String submit() {
        // Or in POST action method (e.g. <h:commandXxx action>).
        someProperty = loadSomeProperty();
        return "outcome";
    }

    public SomeObject getSomeProperty() {
        // Just keep getter untouched. It isn't intented to do business logic!
        return someProperty;
    }

}

Обратите внимание, что не следует использовать конструктор компонента или блок инициализации для задания, поскольку оно может вызываться несколько раз, если используется рамка управления компонентом, использующий прокси, например CDI.

Если для вас действительно нет других способов, из-за некоторых ограничительных требований к конструкции, то следует ввести ленивую загрузку внутри метода геттера. То есть если свойство имеет значение null , то загрузите и назначьте его свойству, иначе верните его.

    public SomeObject getSomeProperty() {
        // If there are really no other ways, introduce lazy loading.
        if (someProperty == null) {
            someProperty = loadSomeProperty();
        }

        return someProperty;
    }

Таким образом, дорогостоящая БД/бизнес-логика не будет без необходимости выполняться для каждого отдельного вызова получателя.

См. также:

-121--572153-

Opera является крупнейшим браузером, о котором мне известно, что я предпринял инициативу по поддержке этих новых функций. Проверьте этот фрагмент, взятый непосредственно из dotjay.co.uk .

Речевой модуль CSS 3 в настоящее время поддерживается в:

Opera (только для Windows XP или 2000) - поддержка некоторых речи CSS 3 свойства. Я быстро проверил это и это в основном работает! Обратите внимание, что некоторые из поддерживаемые свойства требуют -xv- префикс для работы в Opera, например -xv-voice-balance: right. Расширение FireVox для

Firefox - поддержка значения ключевых слов нескольких речи CSS 3 свойства. Однако, проведя испытания это с Firefox 3, поддержка в настоящее время сломан (ноябрь 2008). Учиться подробнее о поддержке FireVox: Технические сведения о поддержке свойств речи в CLC-4-TTS. Примечание о FireVox и Firefox: Firefox не анализирует свойства aural/speech CSS, поэтому Поддержка FireVox достигается путем синтаксического анализа непосредственно CSS.

Также проверьте эту ссылку в css3.info .

-121--4461182-

Джефф Этвуд опубликовал эту тему в «Великий раскол в новой линии»

Википедия охватывает историю новой линии .

Вкратце, CR + LF - это ссылка на дни использования электрической пишущей машинки, когда для перемещения курсора влево сначала используется возврат каретки, а для перемещения вниз по линии - линейная подача. Иногда вы просто используете один или другой для написания специальных символов, таких как подчеркивание или зачеркивание.

CRLF

Компьютеры использовали эту номенклатуру, поскольку она была полезна для взаимодействия с машинами teletype . Поэтому MS-DOS и впоследствии Windows используют CRLF.

LF

Очевидно, что Multics и впоследствии Unix взяли свой ключ из 1963-64 проекта проекта стандартов ISO, который указал, что CRLF или LF могут представлять новую линию, и пошли с одним символом LF.

CR

Я все еще немного озадачен историей принятия CR яблоками. Я смотрю на это... До сих пор, я думаю, что это связано яблоком ранним различением между ввод и возврат клавиши . В первые дни ключ возврата соответствует возврату каретки, а ключ ввода - подаче строки, а не одному ключу «ввода», который выполняет двойную функцию, как в мире Windows. Для пользователей пишущих машинок, которые обычно используют возврат каретки для специального форматирования, это, возможно, имело смысл разделить их, и яблоко фактически использовало ключ возврата для специальных опций форматирования.

Где я не так уверен, как, когда они отказались от этого, они остановились только на использовании CR, но я полагаю, что это даты этого раннего решения использовать CR для ключа возврата... но я могу быть не прав.

9
ответ дан 6 December 2019 в 23:05
поделиться

Ну, \r\n - Возврат вагона, затем Linefeed, это та же самая последовательность клавиш, которая используется для запуска новой строки из левого столбца на пишущей машинке.

2
ответ дан 6 December 2019 в 23:05
поделиться
Другие вопросы по тегам:

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