Неизменяемые объекты - это объекты, которые нельзя изменить программно. Они особенно хороши для многопоточных сред или других сред, в которых более одного процесса могут изменять (изменять) значения в объекте.
Просто для пояснения, однако, StringBuilder на самом деле является изменяемым объектом, а не неизменным. Обычная строка Java является неизменной (это означает, что после ее создания вы не можете изменить базовую строку без изменения объекта).
Например, допустим, что у меня есть класс ColoredString, который имеет значение String и цвет String:
public class ColoredString {
private String color;
private String string;
public ColoredString(String color, String string) {
this.color = color;
this.string = string;
}
public String getColor() { return this.color; }
public String getString() { return this.string; }
public void setColor(String newColor) {
this.color = newColor;
}
}
В этом примере ColoredString называется изменяемой, поскольку вы можете изменить ( mutate) одно из его ключевых свойств без создания нового класса ColoredString. Причина, по которой это может быть плохо, например, допустим, у вас есть приложение с графическим интерфейсом, которое имеет несколько потоков, и вы используете ColoredStrings для печати данных в окне. Если у вас есть экземпляр ColoredString, который был создан как
new ColoredString("Blue", "This is a blue string!");
, то вы ожидаете, что строка всегда будет синей. Однако, если бы другой поток получил этот экземпляр и вызвал его
blueString.setColor("Red");
Вы бы внезапно и, вероятно, неожиданно получили «красную» строку, когда хотели «синюю». Из-за этого неизменные объекты почти всегда предпочтительнее при передаче экземпляров объектов вокруг. Когда у вас есть случай, когда изменяемые объекты действительно необходимы, тогда вы обычно охраняете объект, только передавая копии из вашей конкретной области контроля.
Напомним, что в Java java.lang.String является неизменным объектом (его нельзя изменить после его создания), а java.lang.StringBuilder является изменяемым объектом, поскольку его можно изменить без создания новый экземпляр.
Поисковые системы будут рассматривать субдомены больше как отдельные домены, поэтому во многих случаях использование вложенных папок является правильным решением, так что вы не растекаетесь слишком сильно.
использование обоих - это правильный путь. плохая идея, так как поисковые системы попытаются проиндексировать оба, и один будет отмечен как повторяющийся контент.
Вот статья из SEOMoz, объясняющая это более подробно: http://www.seomoz.org/blog/understanding-root-domains-subdomains-vs-subfolders-microsites
Лично я исхожу из логики, что субдомен является другое приложение / сайт, принадлежащий одной компании. Подпапка является частью того же приложения / сайта.
Вероятно, для вашего рейтинга страниц / списков поисковых систем лучше, если у вас есть «один большой сайт», а не множество различных слабо связанных доменов. Если содержание сайтов заметно отличается, например личный сайт может иметь поддомен галереи или блога, в котором контент четко отделен от основного сайта - тогда это, вероятно, имеет смысл для поддомена, иначе я бы придерживался папок.
ps Примечание, не знаю, если это Важно, но веб-браузеры открывают только два соединения одновременно с веб-сайтом при загрузке различных файлов, составляющих страницу. Так что есть причина для субдомена в этом случае, когда он активно ускоряет (хотя на быстром сайте, минимально) время загрузки страницы.
Почему не оба? Попросите Demandb.com/foo и foo.demandb.com перейти в одно и то же место.
Технически субдомен - это другой сервер. Компания, в которой я работаю, имеет домен с несколькими поддоменами, где каждый поддомен расположен на другом (виртуальном или реальном) компьютере / сервере. Таким образом, если один из них выйдет из строя, остальные просто продолжат работу.
С точки зрения разработчика, субдомен заставит все внутри субдомена быть другим приложением, в то время как в подпапке подпапка и подпапки могут быть частью приложение в корневой папке. Когда я создаю веб-приложения, эти веб-приложения часто сначала тестируются на тестовом сервере во вложенной папке. После прохождения тестов они перемещаются в корень своего собственного поддомена.
Когда две подпапки связаны друг с другом, они часто являются частью одного приложения, поэтому было бы лучше оставить их в их собственная подпапка, чтобы им было проще делиться файлами cookie и сеансами.
2 комментария:
Это зависит от того, для какого контента вы хотите создать подпапку / -домены.
Связано ли это с вашим исходным сайтом? Тогда вам обязательно следует использовать подпапку, поскольку она принадлежит к тому же домену. Если вы используете подпапки, гораздо лучше, чтобы ссылочная масса распространялась.
Что касается рейтинга страниц, лучше использовать подпапки.
Поддомены считаются новым сайтом. Подпапок нет, и они получат более высокий рейтинг, если ваш исходный сайт мощный.
Вы можете использовать как поддомены, так и подпапки, если хотите, но не забудьте использовать канонический тег, чтобы избежать дублирования контента.
Два соответствующие ссылки, которые объясняют это дальше:
http://www.searchmarketingstandard.com/when-to-use-subdomains-vs-subfolders http: //www.searchenginejournal. com / subdomains-or-subfolders-which-are-better-for-seo / 6849 /
Если ваш сайт можно легко разделить на поддомены, и каждый поддомен может работать независимо, сделайте это! Затем вы можете легко масштабировать свое приложение, развернув разные серверы (или кластеры) для каждого поддомена.
Примеры: Craigslist: по регионам (seattle.craigslist.org, sfbay.craigslist.org и т. Д.) Livejournal: от сообщества / пользователя
Технически это можно сделать с папками, но для этого требуется ферма веб-прокси, тогда как субдомены могут быть созданы с помощью простых записей DNS.
Это также зависит от ваших потребностей, нужна ли вам отдельная система входа в систему для поддоменов, потому что это невозможно, если вы используете подпапку. Подпапка разделяет тот же сеанс. Для субдоменов необходимо установить общие файлы cookie для всех доменов.