Source
Have you seen the infinite scrolling of content in some web pages? For example, in DZone.com when you scroll the page to the bottom, new links will be loaded automatically and it’ll give you the illusion that the page scrolls infinitely. Another good example is that Bing’s Image Search.
The technique is not hard to implement. With the use of a single servlet and JSP, we can implement a basic functionality with infinite scroll. Before dive into code details, have a look at this demo to get a feel of it: Infinite Scroll Demo
To implement this, we need a servlet which will serve the dynamic content and a JSP file which will have the UI and act as a client to receive the content. Below are the code for these two files. I’m leaving other common stuffs (like web.xml entry etc) to you.
Read more...
Development, HOW TO, Java, jQuery, JSP, Programming, Servlet, web
Источник
Чаще всего Memcache используется для хранения малых объектов (в больших количествах). По умолчанию, memcache не оптимально настроен именно на такое его использование. Поэтому, поговорим о том, как можно его подстроить для получения большей эффективности работы.
Для начала, рассмотрим в двух словах, какие принципы использует memcache для работы с памятью:
Memcache использует механизм SLAB для выделения памяти. Этот механизм основан на том, что доступная память делится на определенные сектора, называемые slabs, одинакового размера. Каждый slab содержит несколько чанков (chunk) - также одинакового размера. Когда memcache пытается получить память для нового объекта, он просто обращается к следующему пустому чанку. Поскольку все они имеют одинаковый размер, выделение памяти для нового объекта происходит максимально быстро - простой поиск следующего элемента списка - О(1).
Read more...
memcached, кеширование
Источник
В этой статье рассмотрим проблемы, которые могут возникать при кеширования тяжелых запросов. Под тяжелыми запросами следует понимать не только медленные, но и ресурсоемкие запросы (например, обращение к внешним XML источникам с последующей обработкой). Наиболее стандартные ситуации - это тяжелые SQL выборки на страницах с агрегационной информацией (популярные видео ролики, лучше фотки, самые активные пользователи и т.п.). На первый взгляд все просто - кешируем на час..два и забываем о этих запросах на долгое время. Какие проблемы могут возникнуть в ходе увеличения нагрузок?
Read more...
memcached, кеширование, Оптимизация
Источник
В данной статье рассматривается использование классов из стандартного пакета java.lang.ref , таких как SoftReference, WeakReference , PhantomReference .
Рассмотрим пример когда эти классы могут понадобиться.
Есть такая задача: необходимо реализовать загрузку объектов с серверной стороны на клиентскую сторону по требованию клиента. Для этого можно реализовать коллекцию объектов на клиенте, в которой будут сохраняться уже загруженные объекты, для того чтобы при повторном запросе этого же объекта не приходилось загружать его снова, а отдавать их из этой коллекции, т.е. реализация кеша на клиенте. С течением времени клиент загрузит много новых объектов, сохранит их в коллекцию, а ранее загруженные объекты становятся уже не актуальными и просто занимают место в памяти. Итого - необходим механизм очистки кеша.
Здесь можно пойти разными путями, рассмотрим некоторые:
1. можно следить за тем, когда объект перестает использоваться на клиенте и затем удалять его из коллекции. Однако, это решение требует многих изменений в логике работы клиента, и будет идеально чтобы другие классы работали с этими объектами прозрачно.
2. Использовать механизм "слабых ссылок" в Java.
Read more...
Java, PhantomReference, ReferenceQueue, SoftReference, WeakReference, Программирование, разработка
Источник
Сборка мусора в языке Java является предметом постоянных обсуждений и всевозможных заблуждений. В этом посте мы постараемся пролить свет на некоторые аспекты работы сборщика мусора в виртуальной машине Hotspot JVM.
Спецификация виртуальной машины не содержит каких-либо требований к механизму управления памятью (кроме того, что «память очищается автоматически с помощью механизма сборки мусора»), поэтому при реализации сборщика мусора разработчики ничем не ограничены. JDK 6 предоставляет 3 сборщика мусора: последовательный SerialGC, параллельный ParallelGC, совместный ConcMarkSweepGC.
Причина поддержки различных алгоритмов сборки мусора заключается в том, что виртуальная машина может использоваться для запуска приложений разного типа и размера на машинах с различными доступными ресурсами. Очевидно, алгоритмы сборки мусора для запуска пасьянса на домашнем компьютере могут быть неэффективны для большого серверного приложения, работающего на машине, имеющей в распоряжении гигабайты оперативной памяти и несколько десятков процессоров. Различные типы приложений могут иметь различные требования к работе сборщика мусора: для одних важно минимизировать длительность пауз в работе приложения, вызванных сборщиком мусора, другие приложения могут позволять более длительные паузы, увеличивается при этом общую производительность (throughput).
Read more...
GC, Hotspot, Java, JVM, Memoty, SerialGC, Программирование, разработка, Сборка мусора