Случайны выбор дневника Раскрыть/свернуть полный список возможностей


Найдено 6110 сообщений
Cообщения с меткой

коллекции - Самое интересное в блогах

Следующие 30  »
Александр_Рубцов

Приглашаю на экскурсию в Тульский музей самоваров...

Понедельник, 18 Июля 2016 г. 22:57 (ссылка)

Это цитата сообщения Просто_Борис Оригинальное сообщение

Приглашаю на экскурсию в Тульский музей самоваров...

Этот громадный самовар установлен на шоссе при въезде в Тулу.

привъезде в Тулу (406x600, 103Kb)

Самовар уже давно превратился в один из символов Тулы и России, в красивый и оригинальный сувенир. В 1990 году в Туле открылся музей, посвященный истории возникновения и развития самоварного промысла. Среди экспонатов музея есть и старинный предшественник самовара, «сбитенник». В этом сосуде на Руси издавна готовили травяной напиток с пряностями и медом. Он назывался «сбитень» и был очень популярен во всех слоях общества. Со временем чай вытеснил старинный русский напиток, и многие рецепты его приготовления были утрачены. Сегодня в Тульском музее можно увидеть этот уникальный сосуд, один из немногих, дошедших до наших дней с конца 18 века.

музей (600x450, 47Kb)

Своим появлением самовар обязан чаю. В Россию чай был завезен в XVII веке из Азии и применялся в то время как лекарство среди знати.
Появился самовар не сразу. Его прадедушкой был сбитенник. До нашего времени сохранились сбитенники XVIII века, а вот когда родился первый из них, неизвестно.

В течении столетий менялись фасоны самоваров. К концу XIX века их число доходило до 165. При такой разнотипности процесс производства полностью механизировать невозможно.

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

Смеркалось, на столе, блистая,
Шипел вечерний самовар,
Китайский чайник нагревая;
Под ним клубился легкий пар.
Разлитой Ольгиной рукою,
По чашкам темною струею
Уже душистый чай бежал…


0_5b84d_611691e4_XL[1] (428x600, 153Kb)
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
starovar

Футболка bmw sauber f1 logo puma из коллекции bmw sauber f1 team

Пятница, 17 Июля 2015 г. 22:01 (ссылка)

Футболка bmw sauber f1 logo puma из коллекции bmw sauber f1 team.


Читать далее
Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
rss_rss_hh_new

[Из песочницы] Одна из задач при собеседовании и попытка найти правильное решение

Среда, 13 Июля 2016 г. 16:13 (ссылка)

Решил поменять специальность и попробовать себя в JAVA. При этом стал проходить достаточно много тестов он-лайн от компаний, на собеседование которых хотел бы попасть. Попалась достаточно интересная задача, возможно, она интересна только начинающим, а кому-то станет очевидной и примитивной, тем не менее я пробовал получить разнообразные варианты решения ее на различных форумах.



Суть задачи такова. Необходимо написать метод, который принимает в качестве аргументов две коллекции ArrayList одинакового размера, например, одна a = [a1, a2, a3, ....], а вторая b = [b1, b2, b3 ...]. Метод должен превратить коллекцию а в следующий вид: a = [a1, b1, a2, b2, a3, b3....]. При этом решение должно быть экономным к ресурсам и процессорному времени.



Первый вариант, который может быть придуман фактически в лоб и этот вариант я тоже видел на форуме:



    static void merge4(ArrayList a, ArrayList b) {
int size = a.size();
int count = 0;
for (int i = 0; icode>


Когда тестировал метод, который принимает две коллекции с количеством элементов 1 000 000, то еле дождался результата. Получил 76 867 мс, печально, хотя вполне ожидаемо, когда каждая вставка методом add, сопровождается копированием массива, что находится правее… При миллионе элементов это, увы, очень плохой вариант.



Потом второй вариант, который можно придумать, тоже скорее всего в лоб, это использование промежуточной коллекции, типа:



	static void merge3(ArrayList a, ArrayList b) {
ArrayList c = new ArrayList(a.size()*2);
for (int i=0; icode>


Это заняло около 6 мс. Однако вполне очевидно, что данный способ не вполне экономен в части Memory.



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



	static void merge2(ArrayList a, ArrayList b) {
int size = b.size();
for (int i = 0; i < size; i++) {
a.add(null);
}
for (int i = b.size(); i > 0; i--) {
a.set((i << 1) - 1, b.get(i - 1));
a.set((i << 1) - 2, a.get(i - 1));
}
}


Время выполнения составило 16 мс. Время ухудшилось, причем значительно. Но плюс естественно есть — это отсутствие промежуточной коллекции. Причем здесь решил «выпендриться», показав, что я знаю как побитовыми операциями я могу сделать умножение на 2. По факту, вряд ли я получил тут экономию процессорного времени, но даже если и получил, то она едва заметна в данном случае.



Последний вариант, я думал оптимизировал за счет того, что использую метод a.ensureCapacity(size * 2) с мыслями, что как минимум я избавлюсь от одного лишнего копирования массива, потому что при превышении текущего размера Array коллекция увеличивает число нового массива в 1,5 больше от текущего, а так как нам нужна в итоге коллекция с удвоенным числом элементов, то это потом приведет еще к одному увеличению размера массива, которое нам по факту не нужно (т.е. чуточку экономит ресурсы Memory), т.е. по факту выглядело бы это так:



	static void merge1(ArrayList a, ArrayList b) {

int size = b.size();
a.ensureCapacity(size * 2);
for (int i = 0; i < size; i++) {
a.add(null);
}

for (int i = b.size(); i > 0; i--) {
a.set((i << 1) - 1, b.get(i - 1));
a.set((i << 1) - 2, a.get(i - 1));
}

}


Выгода по времени не существенна, но вроде 1мс есть. Но плюс все-таки есть. Пусть в каждой из коллекций, передаваемых в метод было size элементов, то при вызове метода merge1 там будет size*2 элементов. Для метода merge1 в принципе при вызове a.size() покажет такой же результат, но в основе этой коллекции до вызова метода trimToSize() будет массив с количеством элементов 1,5*1,5*size, т.е. мы сэкономили уток ресурсов.



Вообщем, ближе к самому оптимальному варианту решения задачи с учетом условия задачи, которое как минимум я нашел:



	static void merge0(ArrayList a, ArrayList b) {
a.addAll(b);
for (int i = b.size(); i > 0; i--) {
a.set((i << 1) - 1, b.get(i - 1));
a.set((i << 1) - 2, a.get(i - 1));
}
}


Итог 5 мс, и, как мне кажется, перерасхода ресурсов тоже нету.



Задача оказалась достаточно интересной, для ее решения мне дали 30 минут.



Однако, сама постановка задачи вроде и имеет цель оценить знания внутренней реализации коллекции, но в то же время все-таки изменять один из передаваемых параметров в методе является дурным тоном, поэтому стоило бы ее переформулировать немного ее в другом контексте.
Original source: habrahabr.ru (comments, light).

https://habrahabr.ru/post/305612/

Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество
Russian_Portrait

Кто блюдёт русское искусство

Среда, 13 Июля 2016 г. 15:16 (ссылка)
rupo.ru/m/4836/?_utl_t=li






коллекционеры коллекции русское искусство



Когда коллекционировать традиционные активы стало скучно, многие российские олигархи решили найти отдохновение в собирательстве предметов искусства. Со временем, коллекции бизнесменов разрослись настолько, что многим из них пришлось построить собственные музеи. И не только в России...



 





Метки:   Комментарии (0)КомментироватьВ цитатник или сообщество

Следующие 30  »

<коллекции - Самое интересное в блогах

Страницы: [1] 2 3 ..
.. 10

LiveInternet.Ru Ссылки: на главную|почта|знакомства|одноклассники|фото|открытки|тесты|чат
О проекте: помощь|контакты|разместить рекламу|версия для pda