Pages

Monday 29 August 2016

OOPs Concepts

A methodology or paradigm to design a program using classes and objects.

Object Oriented programming is a programming methodology that is associated with the concept of Class.

Objects and various other concepts revovling around these like Inheritance, Polymorphism, Abstraction, Encapsulation etc.

Abstraction
Hiding internal details and showing functionality is known as abstraction. Abstract class and interface can be used to achieve abstraction.
Example: watching TV, we don't know the internal processing.

Encapsulation
Binding (or wrapping) code and data together into a single unit is known as encapsulation.
Example: capsule, it is wrapped with different medicines.

A java class is the example of encapsulation. Java bean is the fully encapsulated class because all the data members are private here.

Advantage of OOPs over Procedure-oriented programming language
1)OOPs makes development and maintenance easier where as it is not easy to manage the projects if code grows as project size grows.

2)OOPs provides data hiding whereas in Procedure-oriented programming language a global data can be accessed from anywhere.

3)OOPs provides ability to simulate real-world event much more effectively.

Thursday 18 August 2016

Trapping Rain Water

Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.

Input: array[] = {2, 0, 2}
Output: 2
Structure is like below
| |
|_|
Output: 2

Input: array[] = {3, 0, 1, 0, 2, 0, 4}
Structure is like below
      |
|     |
|   | |
|_|_|_|
Output: 12

Approach:
Maximum water on any bar = Min(Max height bar on left, Max height bar on right) – Height of the bar.



Brute force: Time complexity O(n^2).
Dynamic programming: Time complexity O(n).

public class WaterInWarDP {

     private static int length;

     private static int maxWaterInWarDp(int[] barsInSea) {

           /* Maximum water on a bar = Min(Max left height, Max Right height). */

           /* Get Max left array.*/
           int[] maxLeft = getMaxLeftArray(barsInSea);

           /* Get Max Right array.*/
           int[] maxRight = getMaxRightArray(barsInSea);

           intwaterOnBars = 0;
           for(int i = 0; i < length; i++) {
                waterOnBars = waterOnBars
                  Math.min(maxRight[i],maxLeft[i])-barsInSea[i];
           }

           return waterOnBars;
     }

     private static int[] getMaxRightArray(int[] barsInSea) {
           int[] maxRight = newint[length];
           maxRight[length-1] = barsInSea[length-1];
           for(int i = length-2; i >=0; i--) {
                maxRight[i] = Math.max(barsInSea[i], maxRight[i+1]);
           }
           return maxRight;
     }

     private static int[] getMaxLeftArray(int[] barsInSea) {
           int[] maxLeft = newint[length];
           maxLeft[0] = barsInSea[0];
           for(int i = 1; i < length; i++) {
                maxLeft[i] = Math.max(barsInSea[i], maxLeft[i-1]);
           }
           return maxLeft;
     }
    
    
     public static void main(String[] args) {
           int[] barsInSea = {3,0,0,2,0,4};
           length = barsInSea.length;
           intmaxWater = maxWaterInWarDp(barsInSea);
           System.out.println("Maximum water : "+ maxWater);
     }
}

Monday 8 August 2016

Stateless protocol

No client state on the server.
A stateless protocol does not require the server to retain session information or status about each communications partnerfor the duration of multiple requests.

The session is stored on the client. Server does not store any state about the client session on the server side.

Stateless protocol is a communications protocol that treats each request as an independent transaction that is unrelated to any previous request so that the communication consists of independent pairs of request and response.

Examples
Stateless protocols include the Internet Protocol (IP) which is the foundation for the Internet, and the Hypertext Transfer Protocol (HTTP) which is the foundation of data communication for the World Wide Web.

HTTP is a Stateless protocol, meaning that each request message can be understood in isolation. Contrast this with a traditional FTP server that conducts an interactive session with the user. During the session, a user is provided a means to be authenticated and set various variables (working directory, transfer mode), all stored on the server as part of the user's state.

Advantages:
For a service which is used by 10's of thousands of concurrent users, We should make our service stateless.

It is an overall simpler implementation and you have a single code path instead of a bunch of server side logic to maintain a bunch of session state.

The stateless design simplifies the server design because there is no need to dynamically allocate storage to deal with conversations in progress.

If a client dies in mid-transaction, no part of the system needs to be responsible for cleaning up the present state of the server.

Disadvantage:
A disadvantage of statelessness is that it may be necessary to include additional information in every request, and this extra information will need to be interpreted by the server.

Stateful protocol
In contrast, a protocol which requires keeping of the internal state on the server is known as a stateful protocol.