URL без идентификатора

Когда вы оцениваете код, очень ясно, что (==) сравнивается в соответствии с адресом памяти, а equals (Object o) сравнивает hashCode () экземпляров. Вот почему сказано, что не разорвать контракт между equals () и hashCode (), если вы не столкнетесь с неожиданностями позже.

    String s1 = new String("Ali");
    String s2 = new String("Veli");
    String s3 = new String("Ali");

    System.out.println(s1.hashCode());
    System.out.println(s2.hashCode());
    System.out.println(s3.hashCode());


    System.out.println("(s1==s2):" + (s1 == s2));
    System.out.println("(s1==s3):" + (s1 == s3));


    System.out.println("s1.equals(s2):" + (s1.equals(s2)));
    System.out.println("s1.equal(s3):" + (s1.equals(s3)));


    /*Output 
    96670     
    3615852
    96670
    (s1==s2):false
    (s1==s3):false
    s1.equals(s2):false
    s1.equal(s3):true
    */
5
задан Hrvoje Hudo 16 August 2008 в 16:24
поделиться

4 ответа

Используя идентификационные подарки та же загадка, действительно - Вы просто проверяете на другое значение в своей базе данных. Часть "некоторого-названия-продукта" Вашего URL выше является также чем-то уникальным. Некоторые люди называют их краткими заголовками (Wordpress, также постоянные ссылки). Таким образом вместо того, чтобы запросить базу данных для строки, которая имеет конкретный идентификатор, Вы запрашиваете базу данных для строки, которая имеет конкретный краткий заголовок. Вы не должны знать, что идентификатор получает запись.

3
ответ дан 14 December 2019 в 13:52
поделиться

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

1
ответ дан 14 December 2019 в 13:52
поделиться

Wordpress имеет поле в wp_posts таблице для краткого заголовка. При создании сообщения оно создает краткий заголовок из заголовка сообщения (если это - то, как Вам настроили его), заменяя пробелы тире (или я думаю, что можно установить его на символы нижнего подчеркивания). Это также вынимает апострофы, запятые или этажерку. Я полагаю, что это также ограничивает полную длину краткого заголовка, также.

Так, короче говоря, это динамично не декодирует URL в заголовок сообщения - существует поле в таблице, которая соответствует версии URL названия сообщения непосредственно.

1
ответ дан 14 December 2019 в 13:52
поделиться

Как Вы можете или не можете знать, URL переписываются с mod_rewrite модулем Apache. Как упомянуто здесь, Wordpress, в фоновом режиме, присваивает краткий заголовок после очистки названия заголовка или сообщения.

Но, для ответа на вопрос, что Вы описываете, - функция "Pretty Permalinks" Wordpress, и можно узнать больше о нем в кодексе Wordpress. Более новые версии Wordpress делают перезапись внутренне (никакое редактирование .htaccess, wp_rewrite вместо этого). Который является, почему Вы будете видеть тот же ruleset для любой структуры постоянной ссылки.

Хотя, если Вы, некоторое рытье Вас может найти, что старые переписывают правила. Например:

RewriteRule ^([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$ /index.php?year=$1&monthnum=$2&day=$3 [QSA,L]

Возьмет URL как /2008/01/01/ и направьте его к /index.php?year=2008&monthnum=01&day=01 (и загрузите категорию даты).

Но, как упомянуто, страница как product-name существует только потому, что Wordpress уже санировал заголовок сообщения и сохранил его как поле в базе данных.

1
ответ дан 14 December 2019 в 13:52
поделиться
Другие вопросы по тегам:

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