Wednesday, May 26, 2010

How does Java allocate stack and heap memory? Explain re-entrant, recursive and idempotent.

Each time an object is created in Java it goes into the area of memory known as heap. The primitive variables like
int and double are allocated in the stack, if they are local method variables and in the heap if they are member
variables (i.e. fields of a class). In Java methods local variables are pushed into stack when a method is invoked
and stack pointer is decremented when a method call is completed. In a multi-threaded application each thread
will have its own stack but will share the same heap. This is why care should be taken in your code to avoid any
concurrent access issues in the heap space. The stack is threadsafe (each thread will have its own stack) but the
heap is not threadsafe unless guarded with synchronisation through your code.


A method in stack is reentrant allowing multiple concurrent invocations that do not interfere with each other. A
function is recursive if it calls itself. Given enough stack space, recursive method calls are perfectly valid in Java
though it is tough to debug. Recursive functions are useful in removing iterations from many sorts of algorithms. All
recursive functions are re-entrant but not all re-entrant functions are recursive. Idempotent methods are methods,
which are written in such a way that repeated calls to the same method with the same arguments yield same
results. For example clustered EJBs, which are written with idempotent methods, can automatically recover from a
server failure as long as it can reach another server.

(from http://javapeople.blogspot.com/2007/02/how-does-java-allocate-stack-and-heap.html)

Sunday, July 26, 2009

Server virtualization

На данный момент доступны следующие(основные) технологии реализующие виртуализацию на уровне ядра операционной системы(это, конечно, не полный список):

  • Xen (Novell© support , partal use in Hyper-v)[не поддерживает Windows guest OS ]
  • Hyper-V (Microsoft© virtualization system)
  • Jail (FreeBSD)[только BSD]
  • OpenVZ [только GNU/Linux]
  • KVM (IBM© support,RedHat© support)
  • Oracle VM (Oracle©)

Из выше перечисленных только KVM(тут самая широкая поддержка), Hyper-V і Oracle VM поддерживают разные операционные системы(Linux, Windows, Frebsd) в качестве виртуальных мишин.

Oracle VM, наверно, хороший, полагаясь на бренд, но минимильная подписка на него составляет ~600$. В архитектурных описаниях я не нашел ничего впечатляющего в этом продукте, по большой части потому что большая часть их закрыта, Продукт продвигается в большой мере для кластирных стем и на сколько удалось понять не поддерживает Windows как и большинство технологий аппаратных виртуализаций.

Hyper-V технология, которая впервые была представлена в Windows Server 2008 представляет собой интересный но не достаточно оправдавший себя продукт виртуализации, но это касается только R1. В Windows server 2008 R2 предлагается новая версия этого продукта, при этом над ним довольно хорошо поработали, как собственно над всем R2(другая реализация ядра). Теперь он собой представляет намного более интересны продукт. Часть его позаимствована от linux, а также Microsoft предложил свой вклад в ядро linux (примерно 20 000 строк кода). Этот код (патчи) должны позволить существенно увеличить производительность Hyper-V. Предположительно, Hyper-V является довольно хорошим продуктом для виртуализации, но одно “но”, существенное- патчи еще не применены и находятся на стадии рассмотрения, Windows Server 2008 R2 еще не вышел и находится в стадии RTM (7600 build) - то есть продукт готов но в мир еще не ушел как релиз, но использовать можна уже (некоторые компании уже используют как сервера VDS).

KVM(Kernel Virtual Machine). Очень удачная технология виртуализации разрабатываемая Qumranet активно поддерживаемая RedHat© і IBM©. Представляет собой реализацию виртуализации на уровне ядра. KVM имеет самую широкую поддержку гостевых операционных систем. Технология была выбрана вендерами после долгого скитания с Xen. В KVM присутствует реальная поддержка апаратной виртуализации (работа нескольких OS на одном и том же реальном процессоре или другом оборудовании сервера) в отличие от Hyper-V который, на текущий момент дает только виртуально представление о аппаратной части. В сентябре 2008 года Red Hat© купила Qumranet. По этому продукты Red Hat© (Red Hat Enterprise Server®) становятся довольно интересны в плане коммерческой поддержки и уровня интеграции. Стоит отметить что KVM также доступна для других дистрибутивов в полной мере.

Виртуализация на уровне ядра требует соответствующее серверное оборудование, речь идет о процессорах поддерживающих технологии Intel VT (Virtualization Technology) либо AMD SVM (Secure Virtual Mashine) {AMD-V}.


Wednesday, June 17, 2009

Sunday, December 28, 2008

Ajaxa Security


Ajax Security

From: joewalker,
2 years ago


Ajax Security
View SlideShare presentation or Upload your own. (tags: xss web)



A talk from the Ajax Experience



SlideShare Link

Saturday, October 18, 2008

yop!

Start now!