Unique Skill

1           What is transient variable?


Transient variable can’t be serialize. For example if a variable is declared as transient in a Serializable class and the class is written to an ObjectStream, the value of the variable can’t be written to the stream instead when the class is retrieved from the ObjectStream the value of the variable becomes null.


 


2           Name the containers which uses Border Layout as their default layout?


Containers which use Border Layout as their default ones are, window, Frame and Dialog classes.


 


3           What do you understand by Synchronization?


Synchronization is a process of controlling the access of shared resources by the multiple threads in such a manner that only one thread can access one resource at a time. In non synchronized multithreaded application, it is possible for one thread to modify a shared object while another thread is in the process of using or updating the object’s value. Synchronization prevents such type of data corruption.


 


E.g. Synchronizing a function:


public synchronized void Method1 () {


     // Appropriate method-related code.


}


 


E.g. Synchronizing a block of code inside a function:


public myFunction (){


    synchronized (this) {


            // Synchronized code here.


         }


}


 


4           What is Collection API?


The Collection API is a set of classes and interfaces that support operation on collections of objects. These classes and interfaces are more flexible, more powerful, and more regular than the vectors, arrays, and hashtables if effectively replaces.


Collection


—-Set


——–HashSet


——–TreeSet


——–LinkedList


—-List


——–ArrayList


——–Vector


 


Map


—-Hashtable


—-HashMap


 


5           Is Iterator a Class or Interface? What is its use?


Iterator is an interface which is used to step through the elements of a Collection.


 


6           What is similarities/difference between an Abstract class and Interface?


6.1          Similarities


6.1.1     They can be used to implement the polymorphism.


6.1.2     Both of them can not be instantiated.


6.2          Differences


6.2.1     Interface can be used to implement the multiple inheritances while the abstract can not. Because the Java only provides the single inheritance.


6.2.2     There is no implementation in the interfaces. But in abstract class, you can implement some common logic.


6.2.3     In interface, there can be only public methods and public static fields.


6.2.4     The efficiency with interface is lower than abstract class. (If it refer to the  overrode function)


 


7           How to define an Interface?


7In Java Interface defines the methods but does not implement them. Interface can include constants. A class that implements the interfaces is bound to implement all the methods defined in Interface.


Emaple of Interface:


 


public interface sampleInterface {


    public void functionOne();


 


    public static long CONSTANT_ONE = 1000;


}


 


8           Explain the user defined Exceptions?


8User defined Exceptions are the separate Exception classes defined by the user for specific purposed. An user defined can created by simply sub-classing it to the Exception class. This allows custom exceptions to be generated (using throw) and caught in the same way as normal exceptions.


 


Example:


class myCustomException extends Exception {


     // The class simply has to exist to be an exception


}


 


9           Explain the new Features of JDBC 2.0 Core API?


The JDBC 2.0 API includes the complete JDBC API, which includes both core and Optional Package API, and provides inductrial-strength database computing capabilities.


 


New Features in JDBC 2.0 Core API:


9.1          Scrollable result sets – using new methods in the ResultSet interface allows programmatically move the to particular row or to a position relative to its current position. The methods is ResultSet.relative(…).


9.2          JDBC 2.0 Core API provides the Batch Updates functionality to the java applications.


9.3          Java applications can now use the ResultSet.updateXXX methods.


9.4          New data types – interfaces mapping the SQL3 data types


9.5          Custom  mapping of user-defined types (UTDs)


9.6          Miscellaneous features, including performance hints, the use of character streams, full precision for java.math.BigDecimal values, additional security, and support for time zones in date, time, and timestamp values. 


 


10       Explain garbage collection?


Garbage collection is one of the most important feature of Java. Garbage collection is also called automatic memory management as JVM automatically removes the unused variables/objects (value is null) from the memory. User program cann’t directly free the object from memory, instead it is the job of the garbage collector to automatically free the objects that are no longer referenced by a program. Every class inherits finalize() method from java.lang.Object, the finalize() method is called by garbage collector when it determines no more references to the object exists. In Java, it is good idea to explicitly assign null into a variable when no more in use. I Java on calling System.gc() and Runtime.gc(),  JVM tries to recycle the unused objects, but there is no guarantee when all the objects will garbage collected.


 


11       How you can force the garbage collection?


Garbage collection automatic process and can’t be forced. 


 


12       What is OOPS?


OOP is the common abbreviation for Object-Oriented Programming.  


 


13       Describe the principles of OOPS.


There are three main principals of oops which are called Polymorphism, Inheritance and Encapsulation. 


 


14       Explain the Encapsulation principle.


14Encapsulation is a process of binding or wrapping the data and the codes that operates on the data into a single entity. This keeps the data safe from outside interface and misuse. One way to think about encapsulation is as a protective wrapper that prevents code and data from being arbitrarily accessed by other code defined outside the wrapper. 


 


15       Explain the Inheritance principle.


15Inheritance is the process by which one object acquires the properties of another object. 


 


16       Explain the Polymorphism principle.


16.1       One name many forms.


16.2       One interface multiple implementations.


 


The meaning of Polymorphism is something like one name many forms. Polymorphism enables one entity to be used as as general category for different types of actions. The specific action is determined by the exact nature of the situation. The concept of polymorphism can be explained as “one interface, multiple methods”. 


 


17       Explain the different forms of Polymorphism.


From a practical programming viewpoint, polymorphism exists in three distinct forms in


 


Java:


Method overloading


Method overriding through inheritance


Method overriding through the Java interface


 


18       Access specifiers are keywords that determine the type of access to the member of a class.


Public


Protected


Defaults(Package)


Private


 


19       Describe the wrapper classes in Java.


Wrapper class is wrapper around a primitive data type. An instance of a wrapper class contains, or wraps, a primitive value of the corresponding type.


Following table lists the primitive types and the corresponding wrapper classes:


 


































Primitive


Wrapper


boolean


  java.lang.Boolean


byte


  java.lang.Byte


char


  java.lang.Character


double


  java.lang.Double


float


  java.lang.Float


int


  java.lang.Integer


long


  java.lang.Long


short


  java.lang.Short


void


  java.lang.Void


 


20       Read the following program:


public class test {


public static void main(String [] args) {


    int x = 3;


    int y = 1;


   if (x = y)


     System.out.println(“Not equal”);


  else


    System.out.println(“Equal”);


 }


}


 


What is the result?


   A. The output is “Equal”


   B. The output in “Not Equal”


   C. An error at ” if (x = y)” causes compilation to fall.


   D. The program executes but no output is show on console.


 


Answer: C


 


21       what is the class variables ?


When we create a number of objects of the same class, then each object will share a common copy of variables. That means that there is only one copy per class, no matter how many objects are created from it. Class variables or static variables are declared with the static keyword in a class, but mind it that it should be declared outside outside a class. These variables are stored in static memory. Class variables are mostly used for constants, variable that never change its initial value. Static variables are always called by the class name. This variable is created when the program starts i.e. it is created before the instance is created of class by using new operator and gets destroyed when the programs stops. The scope of the class variable is same a instance variable. The class variable can be defined anywhere at class level with the keyword static. It initial value is same as instance variable. When the class variable is defined as int then it’s initial value is by default zero, when declared boolean its default value is false and null for object references. Class variables are associated with the class, rather than with any object. 


 


22       What is the difference between the instanceof and getclass, these two are same or not ?


Instanceof is a operator, not a function while getClass is a method of java.lang.Object class. Consider a condition where we use


 


if(o.getClass().getName().equals(“java.lang.Math”)){ }


 


This method only checks if the classname we have passed is equal to java.lang.Math. The class java.lang.Math is loaded by the bootstrap ClassLoader. This class is an abstract class.This class loader is responsible for loading classes. Every Class object contains a reference to the ClassLoader that defines. getClass() method returns the runtime class of an object. It fetches the java instance of the given fully qualified type name. The code we have written is not necessary, because we should not compare getClass.getName(). The reason behind it is that if the two different class loaders load the same class but for the JVM, it will consider both classes as different classes so, we can’t compare their names. It can only gives the implementing class but can’t compare a interface, but instanceof operator can.


 


The instanceof operator compares an object to a specified type. We can use it to test if an object is an instance of a class, an instance of a subclass, or an instance of a class that implements a particular interface. We should try to use instanceof operator in place of getClass() method. Remember instanceof opeator and getClass are not same. Try this example, it will help you to better understand the difference between the two.


 


Interface one{


}


Class Two implements one {


}


Class Three implements one {


}


 


public class Test {


public static void main(String args[]) {


One test1 = new Two();


One test2 = new Three();


System.out.println(test1 instanceof one); //true


System.out.println(test2 instanceof one); //true


System.out.println(Test.getClass().equals(test2.getClass())); //false


}


}


 


23       Is “abc” a primitive value?


The String literal “abc” is not a primitive value. It is a String object.


 


24       What restrictions are placed on the values of each case of a switch statement?


During compilation, the values of each case of a switch statement must evaluate to a value     that can be promoted to an int value.


 


25       What modifiers may be used with an interface declaration? –


An interface may be declared as public or abstract.


 


26       What is the difference between a while statement and a do statement?


A while statement checks at the beginning of a loop to see whether the next loop iteration should occur. A do statement checks at the end of a loop to see whether the next iteration of a loop should occur. The do statement will always execute the body of a loop at least once.


 


27       What modifiers can be used with a local inner class?


A local inner class may be final or abstract.


 


28       What is the purpose of the File class?


The File class is used to create objects that provide access to the files and directories of a local file system.


 


29       Can an exception be rethrown?


Yes, an exception can be rethrown.


 


30       When does the compiler supply a default constructor for a class?


The compiler supplies a default constructor for a class if no other constructors are provided.


 


31       If a method is declared as protected, where may the method be accessed?


A protected method may only be accessed by classes or interfaces of the same package or by subclasses of the class in which it is declared.


 


32       Which non-Unicode letter characters may be used as the first character of an identifier?


The non-Unicode letter characters $ and _ may appear as the first character of an identifier


 


33       What restrictions are placed on method overloading?


Two methods may not have the same name and argument list but different return types.


 


34       What is casting?


There are two types of casting, casting between primitive numeric types and casting between object references. Casting between numeric types is used to convert larger values, such as double values, to smaller values, such as byte values. Casting between object references is used to refer to an object by a compatible class, interface, or array type reference.


 


35       What is the return type of a program’s main() method?


A program’s main() method has a void return type.


 


36       What class of exceptions are generated by the Java run-time system?


The Java runtime system generates RuntimeException and Error exceptions.


 


37       What class allows you to read objects directly from a stream?


The ObjectInputStream class supports the reading of objects from input streams.


 


38       What is the difference between a field variable and a local variable?


A field variable is a variable that is declared as a member of a class. A local variable is a variable that is declared local to a method.


 


39       How are this() and super() used with constructors?


this() is used to invoke a constructor of the same class. super() is used to invoke a superclass constructor.


 


40       What is the relationship between a method’s throws clause and the exceptions that can be thrown during the method’s execution?


A method’s throws clause must declare any checked exceptions that are not caught within the body of the method.


 


41       Why are the methods of the Math class static?


So they can be invoked as if they are a mathematical code library.


 


42       What are the legal operands of the instanceof operator?


The left operand is an object reference or null value and the right operand is a class, interface, or array type.


 


43       What are E and PI?


E is the base of the natural logarithm and PI is mathematical value pi. They are defined in the Math class.


 


44       Are true and false keywords?


The values true and false are not keywords. Both are the constant values like 0, 1, 2.


 


45       What is the difference between the File and RandomAccessFile classes?


The File class encapsulates the files and directories of the local file system. The RandomAccessFile class provides the methods needed to directly access data contained in any part of a file.


 


46       What happens when you add a double value to a String?


The result is a String object.


 


47       What is your platform’s default character encoding?


If you are running Java on English Windows platforms, it is probably Cp1252. If you are running Java on English Solaris platforms, it is most likely 8859_1.


 


48       Which package is always imported by default?


The java.lang package is always imported by default.


 


49       What interface must an object implement before it can be written to a stream as an object?


An object must implement the Serializable or Externalizable interface before it can be written to a stream as an object.


 


50       How can my application get to know when a HttpSession is removed?


Define a Class HttpSessionNotifier which implements HttpSessionBindingListener and implement the functionality what you need in valueUnbound() method. Create an instance of that class and put that instance in HttpSession.


 


51       What’s the difference between notify() and notifyAll()?


notify() is used to unblock one waiting thread; notifyAll() is used to unblock all of them. Using notify() is preferable (for efficiency) when only one blocked thread can benefit from the change (for example, when freeing a buffer back into a pool). notifyAll() is necessary (for correctness) if multiple threads should resume (for example, when releasing a “writer” lock on a file might permit all “readers” to resume).


 


52       Why can’t I say just abs() or sin() instead of Math.abs() and Math.sin()?


The import statement does not bring methods into your local name space. It lets you abbreviate class names, but not get rid of them altogether. That’s just the way it works, youll get used to it. It’s really a lot safer this way.


 


However, there is actually a little trick you can use in some cases that gets you what you want. If your top-level class doesn’t need to inherit from anything else, make it inherit from java.lang.Math. That *does* bring all the methods into your local name space. But you can’t use this trick in an applet, because you have to inherit from java.awt.Applet. And actually, you can’t use it on java.lang.Math at all, because Math is a “final” class which means it can’t be extended.


 


53       Why are there no global variables in Java?


Global variables are considered bad form for a variety of reasons: Adding state variables breaks referential transparency (you no longer can understand a statement or expression on its own: you need to understand it in the context of the settings of the global variables), State variables lessen the cohesion of a program: you need to know more to understand how something works. A major point of Object-Oriented programming is to break up global state into more easily understood collections of local state, When you add one variable, you limit the use of your program to one instance. What you thought was global, someone else might think of as local: they may want to run two copies of your program at once. For these reasons, Java decided to ban global variables.


 


54       What does it mean that a class or member is final?


A final class can no longer be subclassed. Mostly this is done for security reasons with basic classes like String and Integer. It also allows the compiler to make some optimizations, and makes thread safety a little easier to achieve. Methods may be declared final as well. This means they may not be overridden in a subclass. Fields can be declared final, too. However, this has a completely different meaning. A final field cannot be changed after it’s initialized, and it must include an initializer statement where it’s declared. For example, public final double c = 2.998; It’s also possible to make a static field final to get the effect of C++’s const statement or some uses of C’s #define, e.g. public static final double c = 2.998;


 


55       What does it mean that a method or class is abstract?


An abstract class cannot be instantiated. Only its subclasses can be instantiated. You indicate that a class is abstract with the abstract keyword like this:


public abstract class Container extends Component {


Abstract classes may contain abstract methods. A method declared abstract is not actually implemented in the current class. It exists only to be overridden in subclasses. It has no body. For example,


public abstract float price();


Abstract methods may only be included in abstract classes. However, an abstract class is not required to have any abstract methods, though most of them do. Each subclass of an abstract class must override the abstract methods of its superclasses or itself be declared abstract.


 


56       What is a transient variable?


Transient variable is a variable that may not be serialized.


 


57       How are Observer and Observable used?


Objects that subclass the Observable class maintain a list of observers. When an Observable object is updated it invokes the update() method of each of its observers to notify the observers that it has changed state. The Observer interface is implemented by objects that observe Observable objects.


 


58       Can a lock be acquired on a class?


Yes, a lock can be acquired on a class. This lock is acquired on the class’s Class object.


 


59       What state does a thread enter when it terminates its processing?


When a thread terminates its processing, it enters the dead state.


 


 


60       What is the difference between the >> and >>> operators?


The >> operator carries the sign bit when shifting right. The >>> zero-fills bits that have been shifted out.


 


61       Is sizeof a keyword?


The sizeof operator is not a keyword.


 


62       Does garbage collection guarantee that a program will not run out of memory?


Garbage collection does not guarantee that a program will not run out of memory. It is possible for programs to use up memory resources faster than they are garbage collected. It is also possible for programs to create objects that are not subject to garbage collection


 


63       Can an object’s finalize() method be invoked while it is reachable?


An object’s finalize() method cannot be invoked by the garbage collector while the object is still reachable. However, an object’s finalize() method may be invoked by other objects.



64       What value does readLine() return when it has reached the end of a file?


The readLine() method returns null when it has reached the end of a file.


 


65       Can a for statement loop indefinitely?


Yes, a for statement can loop indefinitely. For example, consider the following: for($$) ;


 


66       To what value is a variable of the String type automatically initialized?


The default value of an String type is null.


 


67       What is a task’s priority and how is it used in scheduling?


A task’s priority is an integer value that identifies the relative order in which it should be executed with respect to other tasks. The scheduler attempts to schedule higher priority tasks before lower priority tasks. Please see the method public final void setPriority(int newPriority) in class Thread.


 


68       What is the range of the short type?


The range of the short type is -(2^15) to 2^15 – 1.


 


69       What is the purpose of garbage collection?


The purpose of garbage collection is to identify and discard objects that are no longer needed by a program so that their resources may be reclaimed and reused.


 


70       What do you understand by private, protected and public?


These are accessibility modifiers. Private is the most restrictive, while public is the least restrictive. There is no real difference between protected and the default type (also known as package protected) within the context of the same package, However the protected keyword allows visibility to a derived class in a different package.


 


71       What is Downcasting?


Downcasting is the casting from a general to a more specific type, i.e. casting down the hierarchy


 


72       Can a method be overloaded based on different return type but same argument type ?


No, because the methods can be called without using their return type in which case there is ambiquity for the compiler


 


73       What happens to a static var that is defined within a method of a class ?


Can’t do it. You’ll get a compilation error


 


74       How many static init can you have ?


As many as you want, but the static initializers and class variable initializers are executed in textual order and may not refer to class variables declared in the class whose declarations appear textually after the use, even though these class variables are in scope.


 


75       What is the difference amongst JVM Spec, JVM Implementation, JVM Runtime ?


The JVM spec is the blueprint for the JVM generated and owned by Sun. The JVM implementation is the actual implementation of the spec by a vendor and the JVM runtime is the actual running instance of a JVM implementation


 


76       Describe what happens when an object is created in Java?


Several things happen in a particular order to ensure the object is constructed properly: Memory is allocated from heap to hold all instance variables and implementation-specific data of the object and its superclasses. Implemenation-specific data includes pointers to class and method data. The instance variables of the objects are initialized to their default values. The constructor for the most derived class is invoked. The first thing a constructor does is call the consctructor for its superclasses. This process continues until the constrcutor for java.lang.Object is called, as java.lang.Object is the base class for all objects in java. Before the body of the constructor is executed, all instance variable initializers and initialization blocks are executed. Then the body of the constructor is executed. Thus, the constructor for the base class completes first and constructor for the most derived class completes last.


 


77       Why does it take so much time to access an Applet having Swing Components the first time?


Because behind every swing component are many Java objects and resources. This takes time to create them in memory. JDK 1.3 from Sun has some improvements which may lead to faster execution of Swing applications.


 


78       What is Action Class?


78The Action is part of the controller. The purpose of Action Class is to translate the HttpServletRequest to the business logic. To use the Action, we need to  Subclass and overwrite the execute()  method. The ActionServlet (commad) passes the parameterized class to Action Form using the execute() method. There should be no database interactions in the action. The action should receive the request, call business objects (which then handle database, or interface with J2EE, etc) and then determine where to go next. Even better, the business objects could be handed to the action at runtime (IoC style) thus removing any dependencies on the model.   The return type of the execute method is ActionForward which is used by the Struts Framework to forward the request to the file as per the value of the returned ActionForward object.


 


79       Write code of any Action Class?


79 Here is the code of Action Class that returns the ActionForward object.


 


TestAction.java


 










package roseindia.net;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class TestAction extends Action
{
  public ActionForward execute(
    ActionMapping mapping,
    ActionForm form,
    HttpServletRequest request,
    HttpServletResponse response) throws Exception{
      return mapping.findForward(“testAction”);
  }
}



 


80       What is ActionForm?


80An ActionForm is a JavaBean that extends org.apache.struts.action.ActionForm. ActionForm maintains the session state for web application and the ActionForm object is automatically populated on the server side with data entered from a form on the client side.


 


81       What is Struts Validator Framework?


81Struts Framework provides the functionality to validate the form data. It can be use to validate the data on the users browser as well as on the server side. Struts Framework emits the java scripts and it can be used validate the form data on the client browser. Server side validation of form can be accomplished by sub classing your From Bean with DynaValidatorForm class. 


 


The Validator framework was developed by David Winterfeldt as third-party add-on to Struts. Now the Validator framework is a part of Jakarta Commons project and it can be used with or without Struts. The Validator framework comes integrated with the Struts Framework and can be used without doing any extra settings.


 


82       Give the Details of XML files used in Validator Framework?


The Validator Framework uses two XML configuration files validator-rules.xml and validation.xml. The validator-rules.xml defines the standard validation routines, these are reusable and used in validation.xml. to define the form specific validations. The validation.xml defines the validations applied to a form bean.


 


83       How you will display validation fail errors on jsp page?


83Following tag displays all the errors:


<html:errors/>


 


84       How you will enable front-end validation based on the xml in validation.xml?


84The <html:javascript> tag to allow front-end validation based on the xml in validation.xml. For  example the code: <html:javascript formName=”logonForm” dynamicJavascript=”true” staticJavascript=”true” /> generates the client side java script for the form “logonForm” as defined in the validation.xml file. The <html:javascript> when added in the jsp file generates the client site validation script.


 


85       What is RequestProcessor and RequestDispatcher?


The controller is responsible for intercepting and translating user input into actions to be performed by the model. The controller is responsible for selecting the next view based on user input and the outcome of model operations. The Controller receives the request from the browser, invoke a business operation and coordinating the view to return to the client.

The controller is implemented by a java servlet, this servlet is centralized point of control for the web application. In struts framework the controller responsibilities are implemented by several different components like



The ActionServlet Class
The RequestProcessor Class
The Action Class


The ActionServlet extends the javax.servlet.http.httpServlet class. The ActionServlet class is not abstract and therefore can be used as a concrete controller by your application.
The controller is implemented by the ActionServlet class. All incoming requests are mapped to the central controller in the deployment descriptor as follows.



<servlet>
   <servlet-name>action</servlet-name>
   <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
</servlet>



All request URIs with the pattern *.do are mapped to this servlet in the deployment descriptor as follows.

<servlet-mapping>
         <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
</servlet-mapping>



A request URI that matches this pattern will have the following form.



http://www.my_site_name.com/mycontext/actionName.do

The preceding mapping is called extension mapping, however, you can also specify path mapping where a pattern ends with /* as shown below.



<servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>/do/*</url-pattern>


</servlet-mapping>



A request URI that matches this pattern will have the following form.
http://www.my_site_name.com/mycontext/do/action_Name
The class org.apache.struts.action.requestProcessor process the request from the controller. You can sublass the RequestProcessor with your own version and modify how the request is processed.

Once the controller receives a client request, it delegates the handling of the request to a helper class. This helper knows how to execute the business operation associated with the requested action. In the Struts framework this helper class is descended of org.apache.struts.action.Action class. It acts as a bridge between a client-side user action and business operation. The Action class decouples the client request from the business model. This decoupling allows for more than one-to-one mapping between the user request and an action. The Action class also can perform other functions such as authorization, logging before invoking business operation. the Struts Action class contains several methods, but most important method is the execute() method.



public ActionForward execute(ActionMapping mapping,
            ActionForm form, HttpServletRequest request, HttpServletResponse response)    throws Exception; 



The execute() method is called by the controller when a request is received from a client. The controller creates an instance of the Action class if one doesn
already exist. The strut framework will create only a single instance of each Action class in your application.

Action are mapped in the struts configuration file and this configuration is loaded into memory at startup and made available to the framework at runtime. Each Action element is represented in memory by an instance of the org.apache.struts.action.ActionMapping class . The ActionMapping object contains a path attribute that is matched against a portion of the URI of the incoming request.



<action
        path= “/somerequest”
        type=”com.somepackage.someAction”
        scope=”request”
        name=”someForm”
        validate=”true”
        input=”somejsp.jsp”>
    <forward name=”Success” path=”/action/xys” redirect=”true”/>
   <forward name=”Failure” path=”/somejsp.jsp” redirect=”true”/>
</action>



Once this is done the controller should determine which view to return to the client. The execute method signature in Action class has a return type org.apache.struts.action.ActionForward class. The ActionForward class represents a destination to which the controller may send control once an action has completed. Instead of specifying an actual JSP page in the code, you can declaratively associate as action forward through out the application. The action forward are specified in the configuration file.



<action>
        path= “/somerequest”
        type=”com.somepackage.someAction”
        scope=”request”
        name=”someForm”
        validate=”true”
        input=”somejsp.jsp”
    <forward name=”Success” path=”/action/xys” redirect=”true”/>
    <forward name=”Failure” path=”/somejsp.jsp” redirect=”true”/>
</action>



The action forward mappings also can be specified in a global section, independent of any specific action mapping.



<global-forwards>
    <forward name=”Success” path=”/action/somejsp.jsp” />
    <forward name=”Failure” path=”/someotherjsp.jsp” />
</global-forwards>


public interface RequestDispatcher

Defines an object that receives requests from the client and sends them to any resource (such as a servlet, HTML file, or JSP file) on the server. The servlet container creates the RequestDispatcher object, which is used as a wrapper around a server resource located at a particular path or given by a particular name.
This interface is intended to wrap servlets, but a servlet container can create RequestDispatcher objects to wrap any type of resource.

getRequestDispatcher

public RequestDispatcher getRequestDispatcher(java.lang.String path)


Returns a RequestDispatcher object that acts as a wrapper for the resource located at the given path. A RequestDispatcher object can be used to forward a request to the resource or to include the resource in a response. The resource can be dynamic or static.
The pathname must begin with a “/” and is interpreted as relative to the current context root. Use getContext to obtain a RequestDispatcher for resources in foreign contexts. This method returns null if the ServletContext cannot return a RequestDispatcher.

Parameters:
    path – a String specifying the pathname to the resource 
Returns:
    a RequestDispatcher object that acts as a wrapper for the resource at the specified path 
See Also:
    RequestDispatcher, getContext(java.lang.String)


getNamedDispatcher

public RequestDispatcher getNamedDispatcher(java.lang.String name)


Returns a RequestDispatcher object that acts as a wrapper for the named servlet.
Servlets (and JSP pages also) may be given names via server administration or via a web application deployment descriptor. A servlet instance can determine its name using ServletConfig.getServletName().
This method returns null if the ServletContext cannot return a RequestDispatcher for any reason.

Parameters:
    name – a String specifying the name of a servlet to wrap 
Returns:
    a RequestDispatcher object that acts as a wrapper for the named servlet 
See Also:
   RequestDispatcher,getContext(java.lang.String),ServletConfig.getServletName()


 


86       Is struts threadsafe?Give an example?


86Struts is not only thread-safe but thread-dependant. The response to a request is handled by a light-weight Action object, rather than an individual servlet. Struts instantiates each Action class once, and allows other requests to be threaded through the original object. This core strategy conserves resources and provides the best possible throughput. A properly-designed application will exploit this further by routing related operations through a single Action.


 


87       Can we Serialize static variable?


Serialization is the process of converting a set of object instances that contain references to each other into a linear stream of bytes, which can then be sent through a socket, stored to a file, or simply manipulated as a stream of data. Serialization is the mechanism used by RMI to pass objects between JVMs, either as arguments in a method invocation from a client to a server or as return values from a method invocation. In the first section of this book, There are three exceptions in which serialization doesnot necessarily read and write to the stream.


 


These are,


1. Serialization ignores static fields, because they are not part of any particular object’s state.


2. Base class fields are only handled if the base class itself is serializable.


3. Transient fields. There are four basic things you must do when you are making a class serializable. They are,


Implement the Serializable interface.


Make sure that instance-level, locally defined state is serialized properly.


Make sure that superclass state is serialized properly.


Override equals( )and hashCode( ).


 


It is possible to have control over serialization process. The class should implement Externalizable interface. This interface contains two methods namely readExternal and writeExternal. You should implement these methods and write the logic for customizing the serialization process.


 


88       What are the uses of tiles-def.xml file, resourcebundle.properties file, validation.xml file?


tiles-def.xml is is an xml file used to configure tiles with the struts application. You can define the layout / header / footer / body content for your View.


 


The resourcebundle.properties file is used to configure the message (error/ other messages) for the struts applications.


 


The file validation.xml is used to declare sets of validations that should be applied to Form Beans.


 


89       What is the difference between perform() and execute() methods?


Perform method is the method which was deprecated in the Struts Version 1.1.  In Struts 1.x, Action.perform() is the method called by the ActionServlet. This is typically where your business logic resides, or at least the flow control to your JavaBeans and EJBs that handle your business logic. As we already mentioned, to support declarative exception handling, the method signature changed in perform. Now execute just throws Exception. Action.perform() is now deprecated; however, the Struts v1.1 ActionServlet is smart enough to know whether or not it should call perform or execute in the Action, depending on which one is available.


 


90       What are the various Struts tag libraries?


Struts is very rich framework and it provides very good and user friendly way to develop web application forms. Struts provide many tag libraries to ease the development of web applications. These tag libraries are:


1.1          Bean tag library – Tags for accessing JavaBeans and their properties.


1.2          HTML tag library – Tags to output standard HTML, including forms, text boxes, checkboxes, radio buttons etc..


1.3          Logic tag library – Tags for generating conditional output, iteration capabilities and flow management


1.4          Tiles or Template tag library – For the application using tiles


1.5          Nested tag library – For using the nested beans in the application


 


91       Can I setup Apache Struts to use multiple configuration files?


Yes Struts can use multiple configuration files. Here is the configuration example:


<servlet>


        <servlet-name>banking</servlet-name>


        <servlet-class>org.apache.struts.action.ActionServlet


        </servlet-class>


        <init-param>


        <param-name>config</param-name>


        <param-value>/WEB-INF/struts-config.xml,


                /WEB-INF/struts-authentication.xml,


                /WEB-INF/struts-help.xml


           </param-value>


    </init-param>


    <load-on-startup>1</load-on-startup>


</servlet>


 


92       What are the disadvantages of Struts?


92Struts is very robust framework and is being used extensively in the industry. But there are some disadvantages of the Struts:


High Learning Curve


Struts requires lot of efforts to learn and master it. For any small project less experience developers could spend more time on learning the Struts.


Harder to learn


       Struts are harder to learn, benchmark and optimize.


The name of class is not proper.


The Action should not be a class.


The ActionForm is redundant.


 


93       What are the difference between <bean:message> and <bean:write>?


<bean:message>, This tag is used to output locale-specific text (from the properties files) from a MessageResources bundle.


 


<bean:write>, This tag is used to output property values from a bean. <bean:write> is a commonly used tag which enables the programmers to easily present the data.


 


94       What is LookupDispatchAction?


94An abstract Action that dispatches to the subclass mapped execute method. This is useful in cases where an HTML form has multiple submit buttons with the same name. The button name is specified by the parameter property of the corresponding ActionMapping.


 


95       What are the components of Struts?


Struts is based on the MVC design pattern. Struts components can be categoried into Model, View and Controller.


Model: Components like business logic / business processes and data are the part of Model.


View: JSP, HTML etc. are part of View


Controller: Action Servlet of Struts is part of Controller components which works as front controller to handle all the requests.


 


96       What do you understand by JSP Actions?


JSP actions are XML tags that direct the server to use existing components or control the behavior of the JSP engine. JSP Actions consist of a typical (XML-based) prefix of “jsp” followed by a colon, followed by the action name followed by one or more attribute parameters.


 


There are six JSP Actions:


<jsp:include/>


 


<jsp:forward/>


 


<jsp:plugin/>


 


<jsp:usebean/>


 


<jsp:setProperty/>


 


<jsp:getProperty/> 


 


97       What is the difference between <jsp:include page = … > and <%@ include file = … >?


Both the tag includes the information from one page in another. The differences are as follows:


<jsp:include page = … >: This is like a function call from one jsp to another jsp. It is executed ( the included page is executed  and the generated html content is included in the content of calling jsp) each time the client page is accessed by the client. This approach is useful to for modularizing the web application. If the included file changed then the new content will be included in the output.


<%@ include file = … >: In this case the content of the included file is textually embedded in the page that have <%@ include file=”..”> directive. In this case in the included file changes, the changed content will not included in the output. This approach is used when the code from one jsp file required to include in multiple jsp files.


 


98       What is the difference between <jsp:forward page = … > and      response.sendRedirect(url)?


The <jsp:forward> element forwards the request object containing the client request information from one JSP file to another file. The target file can be an HTML file, another JSP file, or a servlet, as long as it is in the same application context as the forwarding JSP file.


sendRedirect sends HTTP temporary redirect response to the browser, and browser creates a new request to go the redirected page. The  response.sendRedirect kills the session variables.


 


99       Identify the advantages of JSP over Servlet


a) Embedding of Java code in HTML pages


b) Platform independence


c) Creation of database-driven Web applications


d) Server-side programming capabilities


 


Answer:  a)


 


100    Write the following code for a JSP page:


<%@ page language = “java” %>


 


<HTML>


<HEAD><TITLE>RESULT PAGE</TITLE></HEAD>


<BODY>


<%


 


PrintWriter print = request.getWriter();


print.println(“Welcome”);


 


%>


</BODY>


</HTML>


 


Suppose you access this JSP file, Find out your answer.


a) A blank page will be displayed.


b) A page with the text Welcome is displayed


c) An exception will be thrown because the implicit out object is not used


d) An exception will be thrown because PrintWriter can be used in servlets only


 


Answer, b)


 


101    What are implicit Objects available to the JSP Page?


Implicit objects are the objects available to the JSP page. These objects are created by Web container and contain information related to a particular request, page, or application. The JSP implicit objects are:


 












































Variable


Class


Description


application


javax.servlet.ServletContext


The context for the JSP page’s servlet and any Web components contained in the same application.


config


javax.servlet.ServletConfig


Initialization information for the JSP page’s servlet.


exception


java.lang.Throwable


Accessible only from an error page.


out


javax.servlet.jsp.JspWriter


The output stream.


page


java.lang.Object


The instance of the JSP page’s servlet processing the current request. Not typically used by JSP page authors.


pageContext


javax.servlet.jsp.PageContext


The context for the JSP page. Provides a single API to manage the various scoped attributes.


request


Subtype of javax.servlet.ServletRequest


The request triggering the execution of the JSP page.


response


Subtype of javax.servlet.ServletResponse


The response to be returned to the client. Not typically used by JSP page authors.


session


javax.servlet.http.HttpSession


The session object for the client.


 


102    What are all the different scope values for the <jsp:useBean> tag?


<jsp:useBean> tag is used to use any java object in the jsp page. Here are the scope values for <jsp:useBean> tag:


page, request, session and application


 


103    What is JSP Output Comments?


JSP Output Comments are the comments that can be viewed in the HTML source file.



Example
(Will be outputted into the html source code)
<!– This file displays the user login screen –>
and 
<!– This page was loaded on
<%= (new java.util.Date()).toLocaleString() %> –>


 


The following comments can not be viewed in html, so the servlet container ignores it.


<%–


 


<jsp:setProperty name=”user” property=”*” />


<jsp:setProperty name=”user” property=”modDate”


  value=”<%= new java.util.Date(  ) %>” />


<% boolean isValid = user.isValid(  ); %>


 


–%>


 


104    What types of comments are available in the JSP?


104There are two types of comments are allowed in the JSP. These are hidden and output comments. A hidden comments does not appear in the generated output in the html, while output comments appear in the generated output.


 


Example of hidden comment


<%– This is hidden comment –%>


Example of output comment


<!– This is output comment –>


 


 


105    What is expression in JSP?


Expression tag is used to insert Java values directly into the output. Syntax for the Expression tag is:


<%= expression %>


An expression tag contains a scripting language expression that is evaluated, converted to a String, and inserted where the expression appears in the JSP file. The following expression tag displays time on the output:


<%=new java.util.Date()%>


 


106    What is JSP declaration?


106JSP declarations are the JSP tags used to declare variables. Declaratives are enclosed in the <%! %> tag and ends in semi-colon. You declare variables and functions in the declaration tag and can use anywhere in the JSP. Here is the example of declaratives:


 


 


<%@page contentType=”text/html” %>


//JSP directive


 


<html>


<body>


<%!


int cnt=0;


private int getCount(){


//increment cnt and return the value


cnt++;


return cnt;


}


%>


//JSP declaration


 


<p>Values of Cnt are:</p>


 


<p><%=getCount()%></p>


//JSP expression


 


</body>


</html>


 


107    What is JSP Scriptlet?


JSP Scriptlet is jsp tag which is used to enclose java code in the JSP pages. Scriptlets begins with <% tag and ends with %> tag. Java code written inside scriptlet executes every time the JSP is invoked.


Example:


  <%


       //java codes


       String userName = null;


       userName = request.getParameter(“userName”);


   %>


    


108    What are the life-cycle methods of JSP?


Life-cycle methods of the JSP are,


1.1          jspInit(), The container calls the jspInit() to initialize the servlet instance. It is called before any other method, and is called only once for a servlet instance.


1.2          jspService(), The container calls the _jspservice() for each request and it passes the request and the response objects. _jspService() method cann’t be overridden.


1.3          jspDestroy(), The container calls this when its instance is about to destroyed. The jspInit() and jspDestroy() methods can be overridden within a JSP page.


 


109    What are JSP Custom tags?


JSP Custom tags are user defined JSP language element. JSP custom tags are user defined tags that can encapsulate common functionality. For example you can write your own tag to access the database and performing database operations. You can also write custom tag for encapsulate both simple and complex behaviors in an easy to use syntax and greatly simplify the readability of JSP pages.


 


110    What is JSP?


110JavaServer Pages (JSP) technology is the Java platform technology for delivering dynamic content to web clients in a portable, secure and well-defined way. The JavaServer Pages specification extends the Java Servlet API to provide web application developers.


 


111    What is the role of JSP in MVC Model?


111JSP is mostly used to develop the user interface, It plays are role of View in the MVC Model.


 


112    What do you understand by context initialization parameters?


The context-param element contains the declaration of a web application’s servlet context initialization parameters.


 


<context-param>


    <param-name>name</param-name>


    <param-value>value</param-value>


</context-param>


 


The Context Parameters page lets you manage parameters that are accessed through the ServletContext.getInitParameterNames and ServletContext.getInitParameter methods.


 


113    Can you extend JSP technology?


113JSP technology lets the programmer to extend the jsp to make the programming more easier. JSP can be extended and custom actions and tag libraries can be developed.


 


114    What do you understand by JSP translation?


JSP translators generate standard Java code for a JSP page implementation class. This class is essentially a servlet class wrapped with features for JSP functionality.


 


115    What you can stop the browser to cash your page?


Instead of deleting a cache, you can force the browser not to catch the page.


<%


response.setHeader(“pragma”,”no-cache”);//HTTP 1.1


response.setHeader(“Cache-Control”,”no-cache”);


response.setHeader(“Cache-Control”,”no-store”);


response.addDateHeader(“Expires”, -1);


response.setDateHeader(“max-age”, 0);


//response.setIntHeader (“Expires”, -1); //prevents caching at the proxy server


response.addHeader(“cache-Control”, “private”);


%>


put the above code in your page.


 


116    What will you handle the runtime exception in your jsp page?


The errorPage attribute of the page directive can be used to catch run-time exceptions automatically and then forwarded to an error processing page.


 


For example,


<%@ page errorPage=”customerror.jsp” %>


above code forwards the request to “customerror.jsp” page if an uncaught exception is encountered during request processing. Within “customerror.jsp”, you must indicate that it is an error-processing page, via the directive: <%@ page isErrorPage=”true” %>.


 


117    What is J2EE?


J2EE Stands for Java 2 Enterprise Edition. J2EE is an environment for developing and deploying enterprise applications. J2EE specification is defined by Sun Microsystems Inc. The J2EE platform is one of the best platform for the development and deployment of enterprise applications. The J2EE platform is consists of a set of services, application programming interfaces (APIs), and protocols, which provides the functionality necessary for developing multi-tiered, web-based applications.


 


118    What do you understand by a J2EE module?


A J2EE module is a software unit that consists of one or more J2EE components of the same container type along with one deployment descriptor of that type. J2EE specification defines four types of modules:


a) EJB


b) Web


c) Application client and


d) Resource adapter


  


In the J2EE applications modules can be deployed as stand-alone units. Modules can also be assembled into J2EE applications.


 


119    Tell me something about J2EE component?


J2EE component is a self-contained functional software unit supported by a container and configurable at deployment time. The J2EE specification defines the following J2EE components,


119.1   Application clients and applets are components that run on the client.


119.2   Java servlet and JavaServer Pages (JSP) technology components are Web components that run on the server.


119.3   Enterprise JavaBeans (EJB) components (enterprise beans) are business components that run on the server. J2EE components are written in the Java programming language and are compiled in the same way as any program in the language. The difference between J2EE components and “standard” Java classes is that J2EE components are assembled into a J2EE application, verified to be well formed and in compliance with the J2EE specification, and deployed to production, where they are run and managed by the J2EE server or client container.


 


120    What are the contents of web module?


120A web module may contain:


120.1   JSP files


120.2   Java classes


120.3   gif and html files and


120.4   web component deployment descriptors


 


121    Differentiate between .ear,  .jar and .war files.


These files are simply zipped file using java jar tool. These files are created for different purposes. Here is the description of these files:


.jar files: These files are with the .jar extenstion. The .jar files contains the libraries, resources and accessories files like property files.


.war files: These files are with the .war extension. The war file contains the web application that can be deployed on the any servlet/jsp container. The .war file contains jsp, html, javascript and other files for necessary for the development of web applications.


.ear files: The .ear file contains the EJB modules of the application.


 


122    What is the difference between Session Bean and Entity Bean?


Session is one of the EJBs and it represents a single client inside the Application Server. Stateless session is easy to develop and its efficient. As compare to entity beans session beans require few server resources.


 


A session bean is similar to an interactive session and is not shared; it can have only one client, in the same way that an interactive session can have only one user. A session bean is not persistent and it is destroyed once the session terminates.


 


An entity bean represents persistent global data from the database. Entity beans data are stored into database.


 


123    Why J2EE is suitable for the development distributed multi-tiered enterprise applications?


The J2EE platform consists of multi-tiered distributed application model. J2EE applications allows the developers to design and implement the business logic into components according to business requirement. J2EE architecture allows the development of multi-tired applications and the developed applications can be installed on different machines depending on the tier in the multi-tiered J2EE environment . The J2EE application parts are:


 


123.1   Client-tier components run on the client machine.


123.2   Web-tier components run on the J2EE server.


123.3   Business-tier components run on the J2EE server and the


123.4   Enterprise information system (EIS)-tier software runs on the EIS servers


 


124    Why do understand by a container?


Normally, thin-client multi-tiered applications are hard to write because they involve many lines of intricate code to handle transaction and state management, multithreading, resource pooling, and other complex low-level details. The component-based and platform-independent J2EE architecture makes J2EE applications easy to write because business logic is organized into reusable components. In addition, the J2EE server provides underlying services in the form of a container for every component type. Because you do not have to develop these services yourself, you are free to concentrate on solving the business problem at hand.


 


In short containers are the interface between a component and the low-level platform specific functionality that supports the component. The application like Web, enterprise bean, or application client component must be assembled and deployed on the J2EE container before executing.


 


125    What are the services provided by a container?


The services provided by container are as follows:


125.1   Transaction management for the bean


125.2   Security for the bean


125.3   Persistence of the bean


125.4   Remote access to the bean


125.5   Lifecycle management of the bean


125.6   Database-connection pooling


125.7   Instance pooling for the bean


   


126    What are types of J2EE clients?


J2EE clients are the software that accesses the services components installed on the J2EE container. Following are the J2EE clients:


a) Applets


b) Java-Web Start clients


c) Wireless clients


d) Web applications


  


127    What is Deployment Descriptor?


A deployment descriptor is simply an XML(Extensible Markup Language) file with the extension of .xml. Deployment descriptor describes the component deployment settings. Application servers reads the deployment descriptor to deploy the components contained in the deployment unit. For example ejb-jar.xml file is used to describe the setting of the EJBs.


 


128    What do you understand by JTA and JTS?


JTA stands for Java Transaction API and JTS stands for Java Transaction Service. JTA provides a standard interface which allows the developers to demarcate transactions in a manner that is independent of the transaction manager implementation. The J2EE SDK uses the JTA transaction manager to implement the transaction. The code developed by developers does not call the JTS methods directly, but only invokes the JTA methods. Then JTA internally invokes the JTS routines. JTA is a high level transaction interface used by the application code to control the transaction.


 


129    What is the difference between JTS and JTA?


In any J2EE application transaction management is one of the most crucial requirements of the application. Given the complexity of today’s business requirements, transaction processing occupies one of the most complex segments of enterprise level distributed applications to build, deploy and maintain.  JTS specifies the implementation of a Java transaction manager. JTS specifies the implementation of a Transaction Manager which supports the Java Transaction API (JTA) 1.0 This transaction manager supports the JTA, using which application servers can be built to support transactional Java applications. Internally the JTS implements the Java mapping of the OMG OTS 1.1 specifications. The Java mapping is specified in two packages: org.omg.CosTransactions and org.omg.CosTSPortability. The JTS thus provides a new architecture for transactional application servers and applications, while complying to the OMG OTS 1.1 interfaces internally. This allows the JTA compliant applications to interoperate with other OTS 1.1 complaint applications through the standard IIOP. Java-based applications and Java-based application servers access transaction management functionality via the JTA interfaces. The JTA interacts with a transaction management implementation via JTS. Similarly, the JTS can access resources via the JTA XA interfaces or can access OTS-enabled non-XA resources. JTS implementations can interoperate via CORBA OTS interfaces.


 


The JTA specifies an architecture for building transactional application servers and defines a set of interfaces for various components of this architecture. The components are: the application, resource managers, and the application server. The JTA specifies standard interfaces for Java-based applications and application servers to interact with transactions, transaction managers, and resource managers JTA transaction management provides a set of interfaces utilized by an application server to manage the beginning and completion of transactions. Transaction synchronization and propagation services are also provided under the domain of transaction management.


 


In the Java transaction model, the Java application components can conduct transactional operations on JTA compliant resources via the JTS. The JTS acts as a layer over the OTS. The applications can therefore initiate global transactions to include other OTS transaction managers, or participate in global transactions initiated by other OTS compliant transaction managers.


 


130    What is JAXP?


The Java API for XML Processing (JAXP) enables applications to parse and transform XML documents independent of a particular XML processing implementation. JAXP or Java API for XML Parsing is an optional API provided by Javasoft. It provides basic functionality for reading, manipulating, and generating XML documents through pure Java APIs. It is a thin and lightweight API that provides a standard way to seamlessly integrate any XML-compliant parser with a Java application.


 


131    What is J2EE Connector architecture?


131J2EE Connector Architecture (JCA) is a Java-based technology solution for connecting application servers and enterprise information systems (EIS) as part of enterprise application integration (EAI) solutions. While JDBC is specifically used to connect Java EE applications to databases, JCA is a more generic architecture for connection to legacy systems (including databases). JCA was developed under the Java Community Process as JSR 16 (JCA 1.0) and JSR 112 (JCA 1.5). As of 2006, the current version of JCA is version 1.5. The J2EE Connector API is used by J2EE tools developers and system integrators to create resource adapters.


 


132    What is difference between Java Bean and Enterprise Java Bean?


Java Bean as is a plain java class with member variables and getter setter methods. Java Beans are defined under JavaBeans specification as Java-Based software component model which includes the features like introspection, customization, events, properties and  persistence.


Enterprise JavaBeans or EJBs for short are Java-based software components that comply with Java’s EJB specification. EJBs are delpoyed on the EJB container and executes in the EJB container. EJB is not that simple, it is used for building distributed applications. Examples of EJB are Session Bean, Entity Bean and Message Driven Bean. EJB is used for server side programming whereas java bean is a client side. Bean is only development but the EJB is developed and then deploy on EJB Container.


 


133    Can Entity Beans have no create() methods?


Entity Beans can have no create() methods. Entity Beans have no create() method, when entity bean is not used to store the data in the database. In this case entity bean is used to retrieve the data from database.


 


134    What are the call back methods in Session bean?


Callback methods are called by the container to notify the important events to the beans in its life cycle. The callback methods are defined in the javax.ejb.EntityBean interface. The callback methods example are ejbCreate(), ejbPassivate() and ejbActivate().


  


135    What is bean managed transaction?


In EJB transactions can be maintained by the container or developer can write own code to maintain the transaction. If a developer doesn want a Container to manage transactions, developer can write own code to maintain the database transaction.


 


136    What are transaction isolation levels in EJB?


There are four levels of transaction isolation are:


* Uncommitted Read


* Committed Read


* Repeatable Read


* Serializable


 


The four transaction isolation levels and the corresponding behaviors are described below,


 





























Isolation Level


Dirty Read


Non-Repeatable Read


Phantom Read


Read Uncommitted


Possible


Possible


Possible


Read Committed


Not possible


Possible


Possible


Repeatable Read


Not possible


Not possible


Possible


Serializable


Not possible


Not possible


Not possible


 


137    Can a private method of a superclass be declared within a subclass?


Sure. A private field or method or inner class belongs to its declared class and hides from its subclasses. There is no way for private stuff to have a runtime overloading or overriding (polymorphism) features.


 


138    Why Java does not support multiple inheritence ?


Java does support multiple inheritance via interface implementation.


 


139    What is the difference between final, finally and finalize?


139.1   final – declare constant


139.2   finally – handles exception


139.3   finalize – helps in garbage collection


 


140    Where and how can you use a private constructor.


Private constructor can be used if you do not want any other class to instanstiate the object , the instantiation is done from a static public method, this method is used when dealing with the factory method pattern when the designer wants only one controller (fatory method ) to create the object.


 


141    In System.out.println(),what is System,out and println,pls explain?


System is a predefined final class,out is a PrintStream object and println is a built-in overloaded method in the out object.


 


142    What is meant by “Abstract Interface”?


First, an interface is abstract. That means you cannot have any implementation in an interface. All the methods declared in an interface are abstract methods or signatures of the methods.


 


143    Can you make an instance of an abstract class? For example – java.util.Calender is an abstract class with a method getInstance() which returns an instance of the Calender class.


No! You cannot make an instance of an abstract class. An abstract class has to be sub-classed. If you have an abstract class and you want to use a method which has been implemented, you may need to subclass that abstract class, instantiate your subclass and then call that method.


 


144    What is the output of x<y? a:b = p*q when x=1,y=2,p=3,q=4?


When this kind of question has been asked, find the problems you think is necessary to ask before you give an answer. Ask if variables a and b have been declared or initialized. If the answer is yes. You can say that the syntax is wrong. If the statement is rewritten as: x<y? a:(b=p*q); the return value would be variable a because the x is 1 and less than y = 2; the x < y statement return true and variable a is returned.


 


145    What is the difference between Swing and AWT components?


AWT components are heavy-weight, whereas Swing components are lightweight. Heavy weight components depend on the local windowing toolkit. For example, java.awt.Button is a heavy weight component, when it is running on the Java platform for Unix platform, it maps to a real Motif button.


 


146    Why does Java not support pointers?


Because pointers are unsafe. Java uses reference types to hide pointers and programmers feel easier to deal with reference types without pointers. This is why Java and C# shine.


 


147    Parsers? DOM vs SAX parser


Parsers are fundamental xml components, a bridge between XML documents and applications that process that XML. The parser is responsible for handling xml syntax, checking the contents of the document against constraints established in a DTD or Schema.


 


148    What is a platform?


A platform is the hardware or software environment in which a program runs. Most platforms can be described as a combination of the operating system and hardware, like Windows 2000/XP, Linux, Solaris, and MacOS.


 


149    What is the main difference between Java platform and other platforms?


The Java platform differs from most other platforms in that it’s a software-only platform that runs on top of other hardware-based platforms. The Java platform has two components:


 


149.1   The Java Virtual Machine (Java VM)


149.2   The Java Application Programming Interface (Java API)


 


150    What is the Java Virtual Machine?


The Java Virtual Machine is a software that can be ported onto various hardware-based platforms.


 


It is used to explain the java class codes and run in the OS.


 


151    What is the Java API?


The Java API is a large collection of ready-made software components that provide many useful capabilities, such as graphical user interface (GUI) widgets.


 


152    What is the package?


The package is a Java namespace or part of Java libraries. The Java API is grouped into libraries of related classes and interfaces; these libraries are known as packages.


 


153    What is native code?


The native code is code that after you compile it, the compiled code runs on a specific hardware platform.


 


154    Is Java code slower than native code? 


Not really. As a platform-independent environment, the Java platform can be a bit slower than native code. However, smart compilers, well-tuned interpreters, and just-in-time bytecode compilers can bring performance close to that of native code without threatening portability.


 


155    What is the serialization?


The serialization is a kind of mechanism that makes a class or a bean persistence by having its properties or fields and state information saved and restored to and from storage.


 


156    How to make a class or a bean serializable?


By implementing either the java.io.Serializable interface, or the java.io.Externalizable interface. As long as one class in a class’s inheritance hierarchy implements Serializable or Externalizable, that class is serializable.


 


157    How many methods in the Serializable interface?


There is no method in the Serializable interface. The Serializable interface acts as a marker, telling the object serialization tools that your class is serializable.


 


158    How many methods in the Externalizable interface?


There are two methods in the Externalizable interface. You have to implement these two methods in order to make your class externalizable. These two methods are readExternal() and writeExternal().


 


159    What is the difference between Serializable and Externalizable interface?


When you use Serializable interface, your class is serialized automatically by default. But you can override writeObject() and readObject() two methods to control more complex object serailization process. When you use Externalizable interface, you have a complete control over your class’s serialization process.


 


160    What is a transient variable?


A transient variable is a variable that may not be serialized. If you don’t want some field to be serialized, you can mark that field transient or static.


 


161    Which containers use a border layout as their default layout?


The Window, Frame and Dialog classes use a border layout as their default layout.


 


162    How are Observer and Observable used?


Objects that subclass the Observable class maintain a list of observers. When an Observable object is updated it invokes the update() method of each of its observers to notify the observers that it has changed state. The Observer interface is implemented by objects that observe Observable objects.


 


163    What is synchronization and why is it important?


With respect to multithreading, synchronization is the capability to control the access of multiple threads to shared resources. Without synchronization, it is possible for one thread to modify a shared object while another thread is in the process of using or updating that object’s value. This often causes dirty data and leads to significant errors.


 


164    What are synchronized methods and synchronized statements?


Synchronized methods are methods that are used to control access to an object. A thread only executes a synchronized method after it has acquired the lock for the method’s object or class. Synchronized statements are similar to synchronized methods. A synchronized statement can only be executed after a thread has acquired the lock for the object or class referenced in the synchronized statement.


 


165    How are Observer and Observable used?


Objects that subclass the Observable class maintain a list of observers. When an Observable object is updated it invokes the update() method of each of its observers to notify the observers that it has changed state. The Observer interface is implemented by objects that observe Observable objects


 


166    What are three ways in which a thread can enter the waiting state?


A thread can enter the waiting state by invoking its sleep() method, by blocking on I/O, by unsuccessfully attempting to acquire an object’s lock, or by invoking an object’s wait() method. It can also enter the waiting state by invoking its (deprecated) suspend() method.


 


167    Can a lock be acquired on a class?


Yes, a lock can be acquired on a class. This lock is acquired on the class’s Class object.


 


168    What’s new with the stop(), suspend() and resume() methods in JDK 1.2?


The stop(), suspend() and resume() methods have been deprecated in JDK 1.2.


 


169    What is the preferred size of a component?


The preferred size of a component is the minimum component size that will allow the component to display normally.


 


170    Which containers use a FlowLayout as their default layout?


The Panel and Applet classes use the FlowLayout as their default layout.


 


171    What is thread?


171A thread is an independent path of execution in a system.


 


172    What is multithreading?


Multithreading means various threads that run in a system.


 


173    How does multithreading take place on a computer with a single CPU?


The operating system’s task scheduler allocates execution time to multiple tasks. By quickly switching between executing tasks, it creates the impression that tasks execute sequentially.


 


174    How to create multithread in a program?


You have two ways to do so. First, making your class “extends” Thread class. Second, making your class “implements” Runnable interface. Put jobs in a run() method and call start() method to start the thread.


 


175    Can Java object be locked down for exclusive use by a given thread?


Yes. You can lock an object by putting it in a “synchronized” block. The locked object is inaccessible to any thread other than the one that explicitly claimed it.


 


176    Can each Java object keep track of all the threads that want to exclusively access to it?


Yes, the methods in Object wait and notify are used to access the synchronized objects.


  


177    What state does a thread enter when it terminates its processing?


When a thread terminates its processing, it enters the dead state.


 


178    What invokes a thread’s run() method?


After a thread is started, via its start() method of the Thread class, the JVM invokes the thread’s run() method when the thread is initially executed.


 


179    What is the purpose of the wait(), notify(), and notifyAll() methods?


The wait(), notify(), and notifyAll() methods are used to provide an efficient way for threads to communicate each other.


 


180    What are the high-level thread states?


The high-level thread states are ready, running, waiting, and dead.


 


181    What is the Collections API?


The Collections API is a set of classes and interfaces that support operations on collections of objects.


 


182    What is the List interface?


The List interface provides support for ordered collections of objects.


 


183    What is the Vector class?


The Vector class provides the capability to implement a growable array of objects


 


184    What modifiers may be used with an inner class that is a member of an outer class?


A (non-local) inner class may be declared as public, protected, private, static, final, or abstract.


 


185    If a method is declared as protected, where may the method be accessed?


A protected method may only be accessed by classes or interfaces of the same package or by subclasses of the class in which it is declared.


 


186    What is an Iterator interface?


The Iterator interface is used to step through the elements of a Collection.


 


187    How many bits are used to represent Unicode, ASCII, UTF-16, and UTF-8 characters?


Unicode requires 16 bits and ASCII require 7 bits. Although the ASCII character set uses only 7 bits, it is usually represented as 8 bits. UTF-8 represents characters using 8, 16, and 18 bit patterns. UTF-16 uses 16-bit and larger bit patterns.


 


188    What is the difference between yielding and sleeping?


When a task invokes its yield() method, it returns to the ready state. When a task invokes its sleep() method, it returns to the waiting state.


 


189    Is sizeof a keyword?


The sizeof operator is not a keyword. It is a just operator.


 


190    What are wrapped classes?


Wrapped classes are classes that allow primitive types to be accessed as objects.


 


191    Does garbage collection guarantee that a program will not run out of memory?


No, it doesn’t. It is possible for programs to use up memory resources faster than they are garbage collected. It is also possible for programs to create objects that are not subject to garbage collection.


 


192    What is the difference between preemptive scheduling and time slicing?


Under preemptive scheduling, the highest priority task executes until it enters the waiting or dead states or a higher priority task comes into existence. Under time slicing, a task executes for a predefined slice of time and then reenters the pool of ready tasks. The scheduler then determines which task should execute next, based on priority and other factors.


 


193    Name Component subclasses that support painting.


The Canvas, Frame, Panel, and Applet classes support painting.


 


194    What is a native method?


A native method is a method that is implemented in a language other than Java.


 


195    How can you write a loop indefinitely?


for($$)–for loop; while(true)–always true, etc.


 


196    Can an anonymous class be declared as implementing an interface and extending a class?
An anonymous class may implement an interface or extend a superclass, but may not be declared to do both.


 


197    What is the purpose of finalization?


The purpose of finalization is to give an unreachable object the opportunity to perform any cleanup processing before the object is garbage collected.


 


198    Which class is the superclass for every class?


Object.


 


199    What is the difference between the Boolean & operator and the && operator?


If an expression involving the Boolean & operator is evaluated, both operands are evaluated. Then the & operator is applied to the operand. When an expression involving the && operator is evaluated, the first operand is evaluated. If the first operand returns a value of true then the second operand is evaluated. The && operator is then applied to the first and second operands. If the first operand evaluates to false, the evaluation of the second operand is skipped.


Operator & has no chance to skip both sides evaluation and && operator does. If asked why, give details as above.


 


200    What is the GregorianCalendar class?


The GregorianCalendar provides support for traditional Western calendars.


 


201    What is the SimpleTimeZone class?


The SimpleTimeZone class provides support for a Gregorian calendar.


 


202    Which Container method is used to cause a container to be laid out and redisplayed?


invalidate();


 


203    What is the Properties class?


The properties class is a subclass of Hashtable that can be read from or written to a stream. It also provides the capability to specify a set of default values to be used.


 


204    What is the purpose of the Runtime class?


The purpose of the Runtime class is to provide access to the Java runtime system.


 


205    What is the purpose of the System class?


The purpose of the System class is to provide access to system resources.


 


206    Which package has light weight components?


javax.Swing package. All components in Swing, except JApplet, JDialog, JFrame and JWindow are lightweight components.


 


207    What are peerless components?


The peerless components are called light weight components.


 


208    What is the difference between the Font and FontMetrics classes?


The FontMetrics class is used to define implementation-specific properties, such as ascent and descent, of a Font object.


 


209    What happens when a thread cannot acquire a lock on an object?


If a thread attempts to execute a synchronized method or synchronized statement and is unable to acquire an object’s lock, it enters the waiting state until the lock becomes available.


 


210    What is the difference between the Reader/Writer class hierarchy and the InputStream/OutputStream class hierarchy?


The Reader/Writer class hierarchy is character-oriented, and the InputStream/OutputStream class hierarchy is byte-oriented.


 


211    What classes of exceptions may be caught by a catch clause?


A catch clause can catch any exception that may be assigned to the Throwable type. This includes the Error and Exception types


 


212    What is the difference between throw and throws keywords?


The throw keyword denotes a statement that causes an exception to be initiated. It takes the Exception object to be thrown as argument. The exception will be caught by an immediately encompassing try-catch construction or propagated further up the calling hierarchy. The throws keyword is a modifier of a method that designates that exceptions may come out of the mehtod, either by virtue of the method throwing the exception itself or because it fails to catch such exceptions that a method it calls may throw.



213    If a class is declared without any access modifiers, where may the class be accessed?


A class that is declared without any access modifiers is said to have package or friendly access. This means that the class can only be accessed by other classes and interfaces that are defined within the same package.


 


214    What is the Map interface?


The Map interface replaces the JDK 1.1 Dictionary class and is used associate keys with values.


 


215    Does a class inherit the constructors of its superclass?


A class does not inherit constructors from any of its superclasses.


 


216    Name primitive Java types.


The primitive types are byte, char, short, int, long, float, double, and boolean.


 


217    What is the purpose of the finally clause of a try-catch-finally statement?


The finally clause is used to provide the capability to execute code no matter whether or not an exception is thrown or caught.


 


218    What is the Locale class?


The Locale class is used to tailor program output to the conventions of a particular geographic, political, or cultural region The Locale class is used to tailor program output to the conventions of a particular geographic, political, or cultural region


 


219    What must a class do to implement an interface?


It must provide all of the methods in the interface and identify the interface in its implements clause.


 


220    What is an abstract method?


An abstract method is a method whose implementation is deferred to a subclass. Or, a method that has no implementation (an interface of a method).


 


221    What is a static method?


A static method is a method that belongs to the class rather than any object of the class and doesn’t apply to an object or even require that any objects of the class have been instantiated.


 


222    What is a protected method?


A protected method is a method that can be accessed by any method in its package and inherited by any subclass of its class.


 


223    What is the difference between a static and a non-static inner class?


A non-static inner class may have object instances that are associated with instances of the class’s outer class. A static inner class does not have any object instances.


 


224    What is an object’s lock and which object’s have locks?


An object’s lock is a mechanism that is used by multiple threads to obtain synchronized access to the object. A thread may execute a synchronized method of an object only after it has acquired the object’s lock. All objects and classes have locks. A class’s lock is acquired on the class’s Class object.


 


225    When can an object reference be cast to an interface reference?


An object reference be cast to an interface reference when the object implements the referenced interface.


 


226    What is the difference between a Window and a Frame?


The Frame class extends Window to define a main application window that can have a menu bar.


227    What do heavy weight components mean?


Heavy weight components like Abstract Window Toolkit (AWT), depend on the local windowing toolkit. For example, java.awt.Button is a heavy weight component, when it is running on the Java platform for Unix platform, it maps to a real Motif button. In this relationship, the Motif button is called the peer to the java.awt.Button. If you create two Buttons, two peers and hence two Motif Buttons are also created. The Java platform communicates with the Motif Buttons using the Java Native Interface. For each and every component added to the application, there is an additional overhead tied to the local windowing system, which is why these components are called heavy weight.


 


228    Which class should you use to obtain design information about an object?


The Class class is used to obtain information about an object’s design.


 


229    How can a GUI component handle its own events?


A component can handle its own events by implementing the required event-listener interface and adding itself as its own event listener.


 


230    How are the elements of a GridBagLayout organized?


The elements of a GridBagLayout are organized according to a grid. However, the elements are of different sizes and may occupy more than one row or column of the grid. In addition, the rows and columns may have different sizes.


 


231    What advantage do Java’s layout managers provide over traditional windowing systems?


Java uses layout managers to lay out components in a consistent manner across all windowing platforms. Since Java’s layout managers aren’t tied to absolute sizing and positioning, they are able to accommodate platform-specific differences among windowing systems.


 


232    What are the problems faced by Java programmers who don’t use layout managers?


Without layout managers, Java programmers are faced with determining how their GUI will be displayed across multiple windowing systems and finding a common sizing and positioning that will work within the constraints imposed by each windowing system.


 


233    What is the difference between static and non-static variables?


A static variable is associated with the class as a whole rather than with specific instances of a class. Non-static variables take on unique values with each object instance.


 


234    What is the difference between the paint() and repaint() methods?


The paint() method supports painting via a Graphics object. The repaint() method is used to cause paint() to be invoked by the AWT painting thread.


 


235    What is the purpose of the File class?


The File class is used to create objects that provide access to the files and directories of a local file system.


 


236    What restrictions are placed on method overloading?


Two methods may not have the same name and argument list but different return types.


 


237    What restrictions are placed on method overriding?


Overridden methods must have the same name, argument list, and return type. The overriding method may not limit the access of the method it overrides. The overriding method may not throw any exceptions that may not be thrown by the overridden method.


 


The overridden methods can decrease the visibility of the methods. The overridden methods can increase the thrown exceptions.


 


238    What is casting?


There are two types of casting, casting between primitive numeric types and casting between object references. Casting between numeric types is used to convert larger values, such as double values, to smaller values, such as byte values. Casting between object references is used to refer to an object by a compatible class, interface, or array type reference.


 


239    Name Container classes.


Window, Frame, Dialog, FileDialog, Panel, Applet, or ScrollPane


 


240    What class allows you to read objects directly from a stream?


The ObjectInputStream class supports the reading of objects from input streams.


 


241    How are this() and super() used with constructors?


this() is used to invoke a constructor of the same class. super() is used to invoke a superclass constructor.


 


242    How is it possible for two String objects with identical values not to be equal under the == operator?


The == operator compares two objects to determine if they are the same object in memory. It is possible for two String objects to have the same value, but located indifferent areas of memory.


 


243    What is the Set interface?


The Set interface provides methods for accessing the elements of a finite mathematical set. Sets do not allow duplicate elements.


 


244    What is the List interface?


The List interface provides support for ordered collections of objects.


 


245    What is the purpose of the enableEvents() method?


The enableEvents() method is used to enable an event for a particular object. Normally, an event is enabled when a listener is added to an object for a particular event. The enableEvents() method is used by objects that handle events by overriding their event-dispatch methods.


 


The method enableEvents() is in the Component class in AWT.


 


246    What is the difference between the File and RandomAccessFile classes?


The File class encapsulates the files and directories of the local file system. The RandomAccessFile class provides the methods needed to directly access data contained in any part of a file.


 


247    What interface must an object implement before it can be written to a stream as an object?


An object must implement the Serializable or Externalizable interface before it can be written to a stream as an object.


 


248    What is the ResourceBundle class?


The ResourceBundle class is used to store locale-specific resources that can be loaded by a program to tailor the program’s appearance to the particular locale in which it is being run.


 


249    What is the difference between a Scrollbar and a ScrollPane?


A Scrollbar is a Component, but not a Container. A ScrollPane is a Container. A ScrollPane handles its own events and performs its own scrolling.


 


250    What is a Java package and how is it used?


A Java package is a naming context for classes and interfaces. A package is used to create a separate name space for groups of classes and interfaces. Packages are also used to organize related classes and interfaces into a single API unit and to control accessibility to these classes and interfaces.


 


251    What are the Object and Class classes used for?


The Object class is the highest-level class in the Java class hierarchy. The Class class is used to represent the classes and interfaces that are loaded by a Java program.


 


252    What is Serialization and deserialization?


Serialization is the process of writing the state of an object to a byte stream. Deserialization is the process of restoring these objects.


 


253    Does the code in finally block get executed if there is an exception and a return statement in a catch block?


If an exception occurs and there is a return statement in catch block, the finally block is still executed. The finally block will not be executed when the System.exit(1) statement is executed earlier or the system shut down earlier or the memory is used up earlier before the thread goes to finally block.


 


254    How you restrict a user to cut and paste from the html page?


Using javaScript to lock keyboard keys. It is one of solutions.


 


255    Is Java a super set of JavaScript?


No. They are completely different. Some syntax may be similar.


 


256    What is a Container in a GUI?


A Container contains and arranges other components (including other containers) through the use of layout managers, which use specific layout policies to determine where components should go as a function of the size of the container.


 


257    How the object oriented approach helps us keep complexity of software development under control?


We can discuss such issue from the following aspects (Encapsulation, Inheritance and Porlymorphysm),


 


257.1   Objects allow procedures to be encapsulated with their data to reduce potential interference.


 


257.2   Inheritance allows well-tested procedures to be reused and enables changes to make once and have effect in all relevant places.


 


257.3   The well-defined separations of interface and implementation allows constraints to be imposed on inheriting classes while still allowing the flexibility of overriding and overloading.


 


258    What is polymorphism?


Polymorphism allows methods to be written that needn’t be concerned about the specifics of the objects they will be applied to. That is, the method can be specified at a higher level of abstraction and can be counted on to work even on objects of yet unconceived classes.


 


259    What is design by contract?


The design by contract specifies the obligations of a method to any other methods that may use its services and also theirs to it. For example, the preconditions specify what the method required to be true when the method is called. Hence making sure that preconditions are. Similarly, postconditions specify what must be true when the method is finished, thus the called method has the responsibility of satisfying the post conditions.


 


In Java, the exception handling facilities support the use of design by contract, especially in the case of checked exceptions. The assert keyword can be used to make such contracts.


 


260    What are use cases?


A use case describes a situation that a program might encounter and what behavior the program should exhibit in that circumstance. It is part of the analysis of a program. The collection of use cases should, ideally, anticipate all the standard circumstances and many of the extraordinary circumstances possible so that the program will be robust.


 


261    What is the difference between interface and abstract class?


261.1   interface contains methods that must be abstract; abstract class may contain concrete methods.


261.2   interface contains variables that must be static and final; abstract class may contain non-final and final variables.


261.3   members in an interface are public by default, abstract class may contain non-public members.


261.4   interface is used to “implements”; whereas abstract class is used to “extends”.


261.5   interface can be used to achieve multiple inheritance; abstract class can be used as a single inheritance.


261.6   interface can “extends” another interface, abstract class can “extends” another class and “implements” multiple interfaces.


261.7   interface is absolutely abstract; abstract class can be invoked if a main() exists.


261.8   interface is more flexible than abstract class because one class can only “extends” one super class, but “implements” multiple interfaces.


261.9   If given a choice, use interface instead of abstract class.


 


262    What is HTTPSession Class?


HttpSession Class provides a way to identify a user across across multiple request. The servlet container uses HttpSession interface to create a session between an HTTP client and an HTTP server. The session lives only for a specified time period, across more than one connection or page request from the user.


 


263    Why do u use Session Tracking in HttpServlet?


In HttpServlet you can use Session Tracking to track the user state. Session is required if you are developing shopping cart application or in any e-commerce application.


 


264    What are the advantage of Cookies over URL rewriting?


Sessions tracking using Cookies are more secure and fast. Session tracking using Cookies can also be used with other mechanism of Session Tracking like url rewriting.


 


Cookies are stored at client side so some clients may disable cookies so we may not sure that the cookies may work or not.


 


In url  rewriting requites large data transfer from and to the server. So, it leads to network traffic and access may be become slow.


 


265    What is Session Migration?


Session Migration is a mechanism of moving the session from one server to another in case of server failure. Session Migration can be implemented by:


265.1   Persisting the session into database


265.2   Storing the session in-memory on multiple servers.


 


266    How to track a user session in Servlets?


The interface HttpSession can be used to track the session in the Servlet. Following code can be used to create session object in the Servlet: HttpSession session = req.getSession(true);


 


267    How you can destroy the session in Servlet?


You can call invalidate() method on the session object to destroy the session. e.g. session.invalidate();


 


268    It is said that the code in a finally clause will never fail to execute, Is there any example where it fails to execute?


Here is the example code where the finally clause code will not execute.


 





  public class testFinally{
 
        public static void main(String[] args){
               System.out.println(“Executing the program”);
                 try {
                       System.out.println(“In the try block”);
                       System.exit(1);
                        } finally {
                       System.out.println(“In the finally.”);
 
                     }
             }
     }
             

 


269    Why there are no global variables in Java?


Global variables are globally accessible. Java does not support globally accessible variables due to following reasons:


 


269.1   The global variables breaks the referential transparency


269.2   Global variables creates collisions in namespace.


 


270    What platforms is the Java-technology software available on?


Sun provides ports of the Java 2 Platform for Windows 95, Windows 98, Windows NT, Windows 2000, Solaris-SPARC, Solaris-Intel, and Linux.


 


271    Where can I download latest version of Java?


Latest version of JDK can be downloaded from Sun web site http://www.java.sun.com.


 


272    Do I need to know C++ to learn Java?


No, you don’t need to know C or C++ to learn Java. Java is much simpler that C++.


 


273    What is the difference between Java and Java Script?


In Java and Java Script only the “Java” word is common. Java is programming language from Sun. JavaScript is a programming language from Netscape, which runs in their browsers.


 


274    Differentiate between applet and application.


Java applications runs as stand-alone application whereas applet runs in web browser. Application is a Java class that has a main() method. Applet class extends java.applet.Applet class.


   


275    How to convert String to Number in java program?


The valueOf() function of Integer class is is used to convert string to Number. Here is the code example:


 


String strId = “10”;


int id=Integer.valueOf(strId);


 


276    What is interface?


In Java Interface defines the methods but does not implement them. Interface can include constants. A class that implements the interfaces is bound to implement all the methods defined in Interface.


Example of Interface:


public interface sampleInterface {


    public void functionOne();


 


    public long CONSTANT_ONE = 1000;


}


 


277    How you can force the garbage collection?


Garbage collection automatic process and can’t be forced.


 


278    What is the use of Object and Class Classes?


The Object class is the superclass of all other classes and it is highest-level class in the Java class hierarchy. Instances of the class Class represent classes and interfaces in a running Java application. Every array also belongs to a class that is reflected as a Class object that is shared by all arrays with the same element type and number of dimensions. The primitive Java types (boolean, byte, char, short, int, long, float, and double), and the keyword void are also represented as Class objects.


 


279    What do you understand by a variable?


The variables plays very important role in computer programming. Variables enable programmers to write flexible programs. It is a memory location that has been named so that it can be easily be referred in the program. The variable is used to hold the data and it can be changed changed during the course of the execution of the program.


 


280    What do you understand by numeric promotion?


The Numeric promotion is the conversion of a smaller numeric type to a larger numeric type, so that integer and floating-point operations may take place. In the numerical promotion process the byte, char, and short values are converted to int values. The int values are also converted to long values, if necessary. The long and float values are converted to double values, as required.


 


281    What do you understand by casting in java language?


The process of converting one datatype to another in Java language is called Casting.


 


282    What are the types of casting?


There are two types of casting in Java, these are Implicit casting and explicit casting.


 


283    What is Implicit casting?


Implicit casting is the process of simply assigning one entity to another without any transformation guidance to the compiler. This type of casting is not permitted in all kinds of transformations and may not workout for all application scenarios.


 


Example:


 


int i = 4000;


long h = i; //Implicit casting


 


284    What is explicit casting?


Explicit casting in the process in which the complier are specifically informed to about transforming the object.


 


long ln = 700.20;


 


t = (int) ln; //Explicit casting


 


285    What do you understand by downcasting?


The process of Downcasting refers to the casting from a general to a more specific type, i.e. casting down the hierarchy


 


286    What do you understand by final value?


FINAL for a variable: value is constant. FINAL for a method: cannot be overridden. FINAL for a class: cannot be derived


 


287    What is a Servlet?


Java Servlets are server side components that provides a powerful mechanism for developing server side of web application. Earlier CGI was developed to provide server side capabilities to the web applications. Although CGI played a major role in the explosion of the Internet, its performance, scalability and reusability issues make it less than optimal solutions. Java Servlets changes all that. Built from ground up using Sun’s write once run anywhere technology java servlets provide excellent framework for server side processing.


 


288    What are the types of Servlet?


There are two types of servlets, GenericServlet and HttpServlet. GenericServlet defines the generic or protocol independent servlet. HttpServlet is subclass of GenericServlet and provides some http specific functionality linke doGet and doPost methods.


 


289    What are the differences between HttpServlet and Generic Servlets?


HttpServlet Provides an abstract class to be subclassed to create an HTTP servlet suitable for a Web site. A subclass of HttpServlet must override at least one method, usually one of these:


 


doGet, if the servlet supports HTTP GET requests


doPost, for HTTP POST requests


doPut, for HTTP PUT requests


doDelete, for HTTP DELETE requests


init and destroy, to manage resources that are held for the life of the servlet


getServletInfo, which the servlet uses to provide information about itself


 


There’s almost no reason to override the service method. service handles standard HTTP requests by dispatching them to the handler methods for each HTTP request type (the doXXX methods listed above). Likewise, there’s almost no reason to override the doOptions and doTrace methods.


 


290    Differentiate between Servlet and Applet.


Servlets are server side components that executes on the server whereas applets are client side components and executes on the web browser. Applets have GUI interface but there is not GUI interface in case of Servlets.


 


291    Differentiate between doGet and doPost method?


doGet is used when there are requirement of sending data appended to a query string in the URL. The doGet models the GET method of Http and it is used to retrieve the info on the client from some server as a request to it. The doGet cannot be used to send too much info appended as a query stream. GET puts the form values into the URL string. GET is limited to about 256 characters (usually a browser limitation) and creates really ugly URLs.


 


POST allows you to have extremely dense forms and pass that to the server without clutter or limitation in size. e.g. you obviously can’t send a file from the client to the server via GET. POST has no limit on the amount of data you can send and because the data does not show up on the URL you can send passwords. But this does not mean that POST is truly secure. For real security you have to look into encryption which is an entirely different topic


 


292    What are methods of HttpServlet?


The methods of HttpServlet class are :


292.1   doGet() is used to handle the GET, conditional GET, and HEAD requests


292.2   doPost() is used to handle POST requests


292.3   doPut() is used to handle PUT requests


292.4   doDelete() is used to handle DELETE requests


292.5   doOptions() is used to handle the OPTIONS requests and


292.6   doTrace() is used to handle the TRACE requests


 


293    What are the advantages of Servlets over CGI programs?


Java Servlets have a number of advantages over CGI and other API’s. They are:


293.1   Platform Independence


Java Servlets are 100% pure Java, so it is platform independence. It can run on any Servlet enabled web server. For example if you develop an web application in windows machine running Java web server. You can easily run the same on apache web server (if Apache Serve is installed) without modification or compilation of code. Platform independency of servlets provide a great advantages over alternatives of servlets.


293.2   Performance


Due to interpreted nature of java, programs written in java are slow. But the java servlets runs very fast. These are due to the way servlets run on web server. For any program initialization takes significant amount of time. But in case of servlets initialization takes place very first time it receives a request and remains in memory till times out or server shut downs. After servlet is loaded, to handle a new request it simply creates a new thread and runs service method of servlet. In comparison to traditional CGI scripts which creates a new process to serve the request. This intuitive method of servlets could be use to develop high speed data driven web sites.


293.3   Extensibility


Java Servlets are developed in java which is robust, well-designed and object oriented language which can be extended or polymorphed into new objects. So the java servlets takes all these advantages and can be extended from existing class the provide the ideal solutions.


293.4   Safety


Java provides a very good safety features like memory management, exception handling etc. Servlets inherits all these features and emerged as a very powerful web server extension.


293.5   Secure


Servlets are server side components, so it inherits the security provided by the web server. Servlets are also benefited with Java Security Manager.


 


294    What are the lifecycle methods of Servlet?


The interface javax.servlet.Servlet,  defines the three life-cycle methods. These are:


public void init(ServletConfig config) throws ServletException


public void service( ServletRequest req, ServletResponse res) throws ServletException, IOException


public void destroy()


 


The container manages the lifecycle of the Servlet. When a new request come to a Servlet, the container performs the following steps.


294.1   If an instance of the servlet does not exist, the web container


294.1.1      Loads the servlet class.


294.1.2      Creates an instance of the servlet class.


294.1.3      Initializes the servlet instance by calling the init method. Initialization is covered in Initializing a Servlet.


294.2   The container invokes the service method, passing request and response objects.


294.3   To remove the servlet, container finalizes the servlet by calling the servlet’s destroy method.


 


295    What are the type of protocols supported by HttpServlet?


It extends the GenericServlet base class and provides an framework for handling the HTTP protocol. So, HttpServlet only supports HTTP and HTTPS protocol.


 


296    What are the directory Structure of Web Application?


Web component follows the standard directory structure defined in the J2EE specification.


Java Source


Web Content


—-jsp, html, css, images


—-WEB-INF


————web.xml


————lib


————classes


 


297    What is ServletContext?


ServletContext is an Interface that defines a set of methods that a servlet uses to communicate with its servlet container, for example, to get the MIME type of a file, dispatch requests, or write to a log file. There is one context per “web application” per Java Virtual Machine. (A “web application” is a collection of servlets and content installed under a specific subset of the server’s URL namespace such as /catalog and possibly installed via a .war file.)


 


298    What is meant by Pre-initialization of Servlet?


When servlet container is loaded, all the servlets defined in the web.xml file does not initialized by default. But the container receives the request it loads the servlet. But in some cases if you want your servlet to be initialized when context is loaded, you have to use a concept called pre-initialization of Servlet. In case of Pre-initialization, the servlet is loaded when context is loaded. You can specify <load-on-startup>1</load-on-startup>


in between the <servlet></servlet> tag.


 


299    What mechanisms are used by a Servlet Container to maintain session information?


Servlet Container uses Cookies, URL rewriting, and HTTPS protocol information to maintain the session.


 


300    What do you understand by servlet mapping?


Servlet mapping defines an association between a URL pattern and a servlet. You can use one servlet to process a number of url pattern (request pattern). For example in case of Struts *.do url patterns are processed by Struts Controller Servlet.


 


301    What must be implemented by all Servlets?


The Servlet Interface must be implemented by all servlets.


 


302    What are the uses of Servlets?


302.1   Servlets are used to process the client request.


302.2   A Servlet can handle multiple requests concurrently and be used to develop high performance system


302.3   A Servlet can be used to load balance among several servers, as Servlet can easily forward request.


 


303    What are the objects that are received when a servlets accepts call from client?


The objects are ServletRequest and ServletResponse . The ServeltRequest encapsulates the communication from the client to the server. While ServletResponse encapsulates the communication from the Servlet back to the client.


 


304    What are design patterns?


A pattern is a proven (and recurring) solution to a problem in a context. Each pattern describes a problem which occurs over and over again in our environment, and describes its solution to this problem in such a way that we can use this solution a lots of times. In simple words, there are a lot of common problems which a lot of developers have faced over time. These common problems ideally should have a common solution too. It is this solution when documented and used over and over becomes a design pattern.


 


305    Can we always apply the same solution to different problems at hand?


No. Design patterns would study the different problems at hand. To these problems then it would suggest different design patterns to be used. However, the type of code to be written in that design pattern is solely the discretion of the Project Manager who is handling that project.


 


306    What should be the level of detail/abstraction which should be provided by a design pattern?


Design patterns should present a higher abstraction level though it might include details of the solution. However, these details are lower abstractions and are called strategies. There may be more than one way to apply these strategies in implementing the patterns.


 


307    What are the most common problems which one faces during the application design phase that are solved by design patterns?


 


307.1   Identifying components, internal structures of the components, and relationships between components.


307.2   Determining component granularity and appropriate interactions


307.3   Defining component interfaces.


 


308    How does one decide which Design pattern to use in our application?


We need to follow these steps:


 


308.1   We need to understand the problem at hand. Break it down to finer grained problems. Each design pattern is meant to solve certain kinds of problems. This would narrow down our search for design patterns.


308.2   Read the problem statement again along with the solution which the design pattern will provide. This may instigate to change a few patterns that we are to use.


308.3   Now figure out the interrelations between different patterns. Also decide what all patterns will remain stable in the application and what all need to change (with respect to Change Requests received from the clients).


 


309    What is Refactoring?


Learning different design patterns is not sufficient to becoming a good designer. We have to understand these patterns and use them where they have more benefits. Using too many patterns (more than required) would be over-engineering and using less design patterns than required would be under-engineering. In both these scenarios we use refactoring. Refactoring is a change made to the internal structure of the software to make it easier to understand and cheaper to modify, without changing its observable behaviour.


 


310    What are Antipatterns?


Though the use of patterns fulfils our objectives in the applications; there are also several instances where several applications did not fulfill their goals. The architects of these applications too need to document these wrong decisions. This helps us in repeating these mistakes in our future applications. Such documented mistakes are called antipatterns.


 


Thus antipatterns are negative solutions which cause more problems than what they address. For ex. We might use entity beans which have fine-grained interfaces which can directly be accessed from the client side. This would result in considerable RMI and transaction management overhead. It results in poor performance and un-scalable applications.


 


311    As we do development in tiers, how do we divide patterns in tiers?


The Sun Java Center has classified the patterns in three tiers. These are:


 


Presentation tier patterns for web-component tier,


Business tier patterns for business logic (EJB) tier, and


Integration tier patterns for connection to the databases.


 


The presentation tier patterns are:


 


Intercepting filter, Front Controller, View Helper, Composite View, Service-to-Worker, and Dispatcher View.


 


The business tier patterns are:


 


Business delegate, Value Object, Session Façade, Composite Entity, Value Object Assembler, Value List Handler, and Service Locator.


 


Integration tier patterns are:


 


Data Access Object (DAO) and Service Activator.


 


312    What is Intercepting Filter pattern?


Provides a solution for pre-processing and post-processing a request. It allows us to declaratively apply filters for intercepting requests and responses. For ex. Servlet filters.


 


313    What is Front Controller pattern?


It manages and handles requests through a centralized code. This could either be through a servlet or a JSP (through a Java Bean). This Controller takes over the common processing which happens on the presentation tier. The front controller manages content retrieval, security, view management and retrieval.


 


314    What is View Helper pattern?


There generally are two parts to any application – the presentation and the business logics. The “View” is responsible for the output-view formatting whereas “Helper” component is responsible for the business logic. Helper components do content retrieval, validation and adaptation. Helper components generally use Business delegate pattern to access business classes.


 


315    What is Composite View pattern?


This pattern is used for creating aggregate presentations (views) from atomic sub-components. This architecture enables says piecing together of elementary view components which makes the presentation flexible by allowing personalization and customization.


 


316    What is Service to Worker pattern?


This is used in larger applications wherein one class is used to process the requests while the other is used to process the view part. This differentiation is done for maintainability.


 


317    What is Dispatcher View pattern?


This is similar to Service to Worker pattern except that it is used for smaller applications. In this one class is used for both request and view processing.


 


318    What is Business Delegate pattern?


This pattern is used to reduce the coupling between the presentation and business-logic tier. It provides a proxy to the façade from where one could call the business classes or DAO class. This pattern can be used with Service Locator pattern for improving performance.


 


319    What is Value Object (VO) pattern?


Value Object is a serializable object which would contain lot of atomic values. These are normal java classes which may have different constructors (to fill in the value of different data) and getter methods to get access to these data. VOs are used as a course grained call which gets lots of data in one go (this reduces remote overhead). The VO is made serializable for it to be transferred between different tiers within a single remote method invocation.


 


320    What is Session Façade pattern?


This pattern hides the complexity of business components and centralizes the workflow. It provides course-grained interfaces to the clients which reduces the remote method overhead. This pattern fits well with declarative transactions and security management.


 


321    What is Value Object Assembler pattern?


This pattern allows for composing a Value Object from different sources which could be EJBs, DAOs or Java objects.


 


322    What is Value List Handler pattern?


This pattern provides a sound solution for query execution and results processing.


 


323    What is Service Locator pattern?


It provides a solution for looking-up, creating and locating services and encapsulating their complexity. It provides a single point of control and it also improves performance.


 


324    What is Data Access Object pattern?


It provides a flexible and transparent access to the data, abstracts the data sources and hides the complexity of Data persistence layer. This pattern provides for loose coupling between business and data persistence layer.


 


325    What is EJB Command pattern?


Session Façade and EJB Command patterns are competitor patterns. It wraps business logic in command beans, decouples the client and business logic tier, and reduces the number of remote method invocations.


 


326    What is Version Number pattern?


This pattern is used for transaction and persistence and provides a solution for maintaining consistency and protects against concurrency. Every time a data is fetched from the database, it comes out with a version number which is saved in the database. Once any update is requested on the same row of the database, this version is checked. If the version is same, the update is allowed else not.


 


327    What all patterns are used to improve performance and scalability of the application?


VO, Session Façade, Business Delegate and Service Locator.


 


328    What design patterns could be used to manage security?


Single Access Point, Check point and Role patterns.


 


329    How could Java classes direct program messages to the system console, but error messages, say to a file?


The class System has a variable out that represents the standard output, and the variable err that represents the standard error device. By default, they both point at the system console. This is how the standard output could be re-directed:


 


Stream st = new FileOutputStream(“output.txt”));


System.setErr(st);


 


//System.setOut(st);


 


330    Why would you use a synchronized block vs. synchronized method?


Synchronized blocks place locks for shorter periods than synchronized methods.


 


331    Explain the usage of the keyword transient?


This keyword indicates that the value of this member variable does not have to be serialized with the object. When the class will be de-serialized, this variable will be initialized with a default value of its data type (i.e. zero for integers).


 


332    How do you know if an explicit object casting is needed?


If you assign a superclass object to a variable of a subclass’s data type, you need to do explicit casting. For example:


 


Object a; Customer b; b = (Customer) a;


 


When you assign a subclass to a variable having a supeclass type, the casting is performed automatically.


 


333    What’s the difference between the methods sleep() and wait()


The code sleep(1000); puts thread aside for exactly one second. The code wait(1000), causes a wait of up to one second. A thread could stop waiting earlier if it receives the notify() or notifyAll() call. The method wait() is defined in the class Object and the method sleep() is defined in the class Thread.The sleep does not release the object lock while wait releases object lock.


 


334    Can you write a Java class that could be used both as an applet as well as an application?


Yes. Add a main() method to the applet.


 


335    What’s the difference between constructors and other methods?


Constructors must have the same name as the class and can not return a value. They are only called once while regular methods could be called many times.


 


336    Can you call one constructor from another if a class has multiple constructors?


Yes. Use this() syntax.


 


337    Explain the usage of Java packages.


This is a way to organize files when a project consists of multiple modules. It also helps resolve naming conflicts when different packages have classes with the same names. Packages access level also allows you to protect data from being used by the non-authorized classes


 


338    If a class is located in a package, what do you need to change in the OS environment to be able to use it?


You need to add a directory or a jar file that contains the package directories to the CLASSPATH environment variable. Let’s say a class Employee belongs to a package com.xyz.hr; and is located in the file c:\dev\com\xyz\hr\Employee.java. In this case, you’d need to add c:\dev to the variable CLASSPATH. If this class contains the method main(), you could test it from a command prompt window as follows:


 


c:\>java com.xyz.hr.Employee


 


339    What order does JVM search the path for the classes?


339.1   CLASSPATH


339.2   –classpath in java command


339.3   . the current directory


 


When you use CLASSPATH and –classpath, you must set the . (current directory) manually. Or the . (current director) is not searched.


 


340    What’s the difference between J2SDK 1.5 and J2SDK 5.0?


There’s no difference, Sun Microsystems just re-branded this version.


 


341    What would you use to compare two String variables – the operator == or the method equals()?


 


I’d use the method equals() to compare the values of the Strings and the == to check if two variables point at the same instance of a String object.


 


342    Does it matter in what order catch statements for FileNotFoundException and IOExceptipon are written?


Yes, it does. The FileNoFoundException is inherited from the IOException. Exception’s subclasses have to be caught first.


 


343    Can an inner class declared inside of a method access local variables of this method?


It’s possible if these variables are final.


Because the instance of the inner class have longer life cycle than the method. In addition, the final variant is special one, which will be stored beyond the method. So final variant inside the method can be access in method inner class.


 


344    What can go wrong if you replace && with & in the following code:


String a=null; if (a!=null && a.length()>10) {…}


 


A single ampersand here would lead to a NullPointerException.


 


345    What’s the main difference between a Vector and an ArrayList?


Java Vector class is internally synchronized and ArrayList is not.


 


346    When should the method invokeLater()be used?


This method is used to ensure that Swing components are updated through the event-dispatching thread.


 


347    How can a subclass call a method or a constructor defined in a superclass?


Use the following syntax: super.myMethod(); To call a constructor of the superclass, just write super(); in the first line of the subclass’s constructor.


 


348    What’s the difference between a queue and a stack?


Stacks works by last-in-first-out rule (LIFO), while queues use the FIFO rule


 


349    You can create an abstract class that contains only abstract methods. On the other hand, you can create an interface that declares the same methods. So can you use abstract classes instead of interfaces?


Sometimes. But your class may be a descendent of another class and in this case the interface is your only option.


 


350    What comes to mind when you hear about a young generation in Java?


Garbage collection.


 


351    What comes to mind when someone mentions a shallow copy in Java?


Object cloning.


 


352    If you’re overriding the method equals() of an object, which other method you might also consider?


hashCode()


 


353    You are planning to do an indexed search in a list of objects. Which of the two Java collections should you use: ArrayList or LinkedList?


ArrayList


 


354    How would you make a copy of an entire Java object with its state?


Have this class implement Cloneable interface and call its method clone().


 


355    How can you minimize the need of garbage collection and make the memory use more effective?


Use object pooling and weak object references.


 


356    How to use the weak object reference?


If there is no strong reference to one object, the object may be reclaim or may not be relaim. Then softReference.get() can be used to get the object again if the object is not claimed.


 


import java.awt.Graphics;


import java.awt.Image;


import java.applet.Applet;


import java.lang.ref.SoftReference;


 


public class DisplayImage extends Applet {


 


        SoftReference sr = null;


 


        public void init() {


            System.out.println(“Initializing”);


        }


 


        public void paint(Graphics g) {


            Image im = (


              sr == null) ? null : (Image)(


              sr.get());


            if (im == null) {


                System.out.println(


                “Fetching image”);


                im = getImage(getCodeBase(),


                   “truck1.gif”);


                sr = new SoftReference(im);


           }


           System.out.println(“Painting”);


           g.drawImage(im, 25, 25, this);


           im = null; 


        /* Clear the strong reference to the image */


        }


 


        public void start() {


            System.out.println(“Starting”);


        }


 


        public void stop() {


            System.out.println(“Stopping”);


        }


 


}


 


357    There are two classes: A and B. The class B need to inform a class A when some important event has happened. What Java technique would you use to implement it?


If these classes are threads, I’d consider notify() or notifyAll(). For regular classes you can use the Observer interface.


 


358    What access level do you need to specify in the class declaration to ensure that only classes from the same directory can access it?


You do not need to specify any access level, and Java will use a default package access level.


 


359    Is a class a subclass of itself?


A class is a subclass of itself.


 


360    What an I/O filter?


An I/O filter is an object that reads from one stream and writes to another, usually altering the data in some way as it is passed from one stream to another.


 


361    If an object is garbage collected, can it become reachable again?


Once an object is garbage collected, it ceases to exist. It can no longer become reachable again.


 


362    How does Java handle integer overflows and underflows?


It uses those low order bytes of the result that can fit into the size of the type allowed by the operation.


 


363    What is the difference between instanceof and isInstance?


instanceof is used to check to see if an object can be cast into a specified type without throwing a cast class exception. isInstance() Determines if the specified Object is assignment-compatible with the object represented by this Class. This method is the dynamic equivalent of the Java language instanceof operator. The method returns true if the specified Object argument is non-null and can be cast to the reference type represented by this Class object without raising a ClassCastException. It returns false otherwise.


 


364    What is Struts Flow?


Struts Flow is a port of Cocoon‘s Control Flow to Struts to allow complex workflow, like multi-form wizards, to be easily implemented using continuations-capable JavaScript. It provides the ability to describe the order of Web pages that have to be sent to the client, at any given point in time in an application. The code is based on a proof-of-concept Dave Johnson put together to show how the Control Flow could be extracted from Cocoon.


 


365    What is tunnelling?


Tunnelling is a route to somewhere. For example, RMI tunnelling is a way to make RMI application get through firewall. In CS world, tunnelling means a way to transfer data.


 


366    What is session hijacking?


If you application is not very secure then it is possible to get the access of system after acquiring or generating the authentication information. Session hijacking refers to the act of taking control of a user session after successfully obtaining or generating an authentication session ID. It involves an attacker using captured, brute forced or reverse-engineered session IDs to get a control of a legitimate user’s Web application session while that session is still in progress.


 


367    If a static method is synchronized, what object is used to synchronize?


The Class Object itself.


 


368    What is the usage of the parameterized type?


368.1   Validation at compile time.


368.2   Decrease the type cast.


 


369    What is the output?


public class Test {


    public static void main(String[] args) {


        loopByNum(5);


    }


 


    private static void loopByNum(int num) {


        loop:


            for  (int i = 1; i < 3; i ++) {


                for (int j = 0; j < 3; j++) {


                    if (num  == 5)


                        break loop;


                    System.out.println(“Test”);


                }   


            }


    }


}


 


Answer: No output.


 


370    GJ 程序的语法在表面上与 C++ 中的模板非常类似,但是二者之间有着本质的区别


首先,Java 语言中的泛型不能接受基本类型作为类型参数――它只能接受引用类型。这意味着可以定义 List<Integer>,但是不可以定义 List<int>


其 次,在 C++ 模板中,编译器使用提供的类型参数来扩充模板,因此,为 List<A> 生成的 C++ 代码不同于为 List<B> 生成的代码,List<A> List<B> 实际上是两个不同的类。而 Java 中的泛型则以不同的方式实现,编译器仅仅对这些类型参数进行擦除和替换。类型 ArrayList<Integer> ArrayList<String> 的对象共享相同的类,并且只存在一个 ArrayList 类。


371    What is the name of the configuration file in JSF?


faces-config.xml


 


372    If you declare the composite keys in hibernate configuration, how many classes do you really need?


One or Two.


372.1   The plain properties can be used as the composite keys.


<composite-id>


        <key-property name=”medicareNumber”/>


        <key-property name=”dependent”/>


</composite-id>


372.2   An encapsulated ID class can be used.


<composite-id class=”MedicareId” mapped=”true”>


        <key-property name=”medicareNumber”/>


        <key-property name=”dependent”/>


</composite-id>


 


373  What are new features in JDK 1.5?


373.1 泛型(Generic Java)


373.2 枚举(Enums)


373.3 可变参数(Varargs)


373.4 For-Each循环


373.5 自动装包/拆包(Autoboxing/unboxing)


 


374    What selectors can you use in CSS?


Html Selector: style=”color:red”


Class Selector: tag.Classname {property:value}


Id Selector: #IDname {property:value}


 


375    What does it mean by $, $$, $F, $A, $H, $W, $R?


$, Return the element with the specific id.


$$, Return the element with the specific CSS id.


$F, Return the value of element with the specific id.


$A, Return an array.


$H, Return an Hash.


$W, Split the string by whitespace.


$R, Return a range.


 


376    How does Prototype support Ajax?


376.1   Ajax.Request -> Ajax Response (Ajax Responders)


 


new Ajax.Request(‘/your/url’, {
  onSuccess: function(transport) {
    transport.headerJSON
  }
});


 


376.2 Ajax.Request -> Ajax.Updater -> Ajax.PeriodicalUpdater


 


Inherit from the previous one.


 


377    How does Ajax work?

function test(data) {
 // taking care of data
}
 
function handler() {
 if(this.readyState == 4 && this.status == 200) {
  // so far so good
  if(this.responseXML != null && this.responseXML.getElementById(‘test’).firstChild.data)
     // success!
   test(this.responseXML.getElementById(‘test’).firstChild.data);
  else
   test(null);
 } else if (this.readyState == 4 && this.status != 200) {
  // fetched the wrong page or network error…
  test(null);
 }
}
 
var client = new XMLHttpRequest();
client.onreadystatechange = handler;
client.open(“GET”, “test.xml”);
client.send();

 


378    What does Hibernate handle inheritance?


378.1   Table per class hierarchy <subclass> (descriminator)


378.2   Table per each class <join-subclass>


378.3   Table per concrete class with unions <union-subclass>


379    What states does Hibernate Object have?


New.


Persistent.


Detached.


 


380    What is the difference between save and update?


Save: Insert a new record.


Update: Update a detached record.


 


381    What is the difference between update and saveOrUpdate?


Update: Update a detached record.


SaveOrUpdate: Save a new record or update a detached record.


 


382    What is difference between persist and save?


Persist, the DB operation will be hanging on until the transaction is committed or flush is called.


Save, the DB operation will be executed immediately.


 


383    What is the difference between saveOrUpdateCopy, merge and saveOrUpdate?


saveOrUpdateCopy is an old version of merge.


Merge, return the non-persistent object.


With saveOrUpdate, return the persistent object.


 


384    What is the difference between lock and update?


Lock, Make a none-changed Object to persistent.


Update, make a changed Object to persistent.


 


385    What does Hibernate provide?


385.1   Component Mapping


385.1.1      A contained class which is value type.


385.2   Collection Mapping


385.2.1      One to one.


385.2.2      One to Many.


385.2.3      Many to One.


385.2.4      Many to Mang.


385.3   Inheritance Mapping


385.3.1      Table per class hierarchy <subclass> (descriminator)


385.3.2      Table per each class <join-subclass>


385.3.3      Table per concrete class with unions <union-subclass>


 


386     


MySQL Storage Engine 小记

这段时间在看《High Performance MySQL》,看到存储引擎这个地方感到很多细节比较陌生,所以总结小记一些

为了适应各种不同的运行环境,MYSQL提供了多种不同的存储引擎(Storage Engine ),在应用程序开发这个层面上,开发者可以根据不同的需求选择适合的Storage Engine 方案,更为灵活的是,你可以根据每张表将要存储数据的特点,选择不同的Storage Engine,也就是说,在一个MYSQL数据库中,可以混合使用多种不同的Storage Engine

首先小瞥一下MySQL的体系结构,在最高抽象层度下,可以用Garlan & Shaw的分层结构体系来表示(左)

其中应用层为所有RDBMS用户提供用户接口,逻辑层包括了所有核心功能的实现,物理层则负责将数据存储在硬件设备上。

图中右侧更为具体的描述了逻辑层的组成,查询处理子系统、事务管理子系统、恢复管理子系统和存储管理子系统共同组成了MySQL的逻辑层。相信Storage Engine的位置是在Storage Management处,既Storage Engine属于Storage Management子系统的一部分

为了让思路更清晰一些,下面给出一幅比较全面的体系结构图(或更确切的说是流程图,只是忽略了反馈)

上面三幅图来自于一篇非官方(不保证百分百的正确)的MySQL体系结构的报告,与《High Performance MySQL》一书中给出的MySQL大体结构(下图,基本对应于Logic Layer,从第一幅图右侧可以看出MySQL logic layer同样遵从分层体系结构)还是比较吻合的。

连接上图中第二层和第三层之间的接口是并不针对任何存储引擎的单一API,.大概由20个基本的类似“启动事务,返回结果集”等函数组成。存储引擎并不处理SQL,相互之间也不通信,它们的任务只是简单的响应高层传来的请求。

存储引擎各自的一些特点

上面提到的四种存储引擎都有各自适用的环境,这取决于它们独有的一些特征。主要体现在性能、事务、并发控制、参照完整性、缓存、 故障恢复,备份及回存等几个方面


目前比较普及的存储引擎是MyISAM和InnoDB.而MyISAM又是绝大部分Web应用的首选。MyISAM与InnoDB的主要的不同点在于性能和事务控制上。

MyISAM是早期ISAM(Indexed Sequential Access Method,我现在用的MySQL5.0已经不支持ISAM了)的扩展实现,ISAM被设计为适合处理读频率远大于写频率这样一种情况,因此ISAM以及后来的MyISAM都没有考虑对事物的支持,排除了TPM,不需要事务记录,ISAM的查询效率相当可观,而且内存占用很少。MyISAM在继承了这类优点的同时,与时俱进的提供了大量实用的新特性和相关工具。例如考虑到并发控制,提供了表级锁,虽然MyISAM本身不支持容错,但可以通过myisamchk进行故障恢复。而且由于MyISAM是每张表使用各自独立的存储文件(MYD数据文件和MYI索引文件),使得备份及恢复十分方便(拷贝覆盖即可),而且还支持在线恢复。

所以如果你的应用是不需要事务,处理的只是基本的CRUD操作,那么MyISAM是不二选择

InnoDB被设计成适用于高并发读写的情况.使用MVCC(Multi-Version Concurrency Control)以及行级锁来提供遵从ACID的事务支持。InnoDB支持外键参照完整性,具备故障恢复能力。另外 InnoDB的性能其实还是不错的,特别是在处理大数据量的情况下,用官方的话说就是: InnoDB的CPU效率是其他基于磁盘的关系数据库存储引擎所不能比的。不过InnoDB的备份恢复要麻烦一点,除非你使用了4.1以后版本提供的Mulit-tablespace支持,因为InnoDB和MyISAM不同,他的数据文件并不是独立对应于每张表的。而是使用的共享表空间,简单的拷贝覆盖方法对他不适用,必须在停掉MYSQL后对进行数据恢复。使用Per-Table Tablespacesd,使其每张表对应一个独立的表空间文件,则情况要简单很多。

一般来说,如果需要事务支持,并且有较高的并发读写频率,InnoDB是不错的选择。要是并发读写频率不高的话,其实可以考虑BDB,但由于在MySQL5.1及其以后版本中,将不再提供BDB支持。这个选项也就没有了

至于Heap和BDB(Berkeley DB),相对来说,普及率不如前两种,但在有些情况下,还是挺适用的

Heap存储引擎就是将数据存储在内存中,由于没有磁盘I./O的等待,速度极快。但由于是内存存储引擎,所做的任何修改在服务器重启后都将消失。
 
Heap挺适合做测试的时候使用


BDB是MySQL第一款事务安全的存储引擎。在Berkeley DB database library的基础上建立,同样是事务安全的,但BDB的普及率显然不及InnoDB,因为大多数在MySQL中寻找支持事务的存储引擎的同时也在找支持MVCC或是行级锁定存储引擎,而BDB只支持Page-level Lock。


 


 


附上一张《High Performance MySQL》 中的各存储引擎的特性表

































































Attribute


MyISAM


Heap


BDB


InnoDB


Transactions


No


No


Yes


Yes


Lock granularity


Table


Table


Page (8 KB)


Row


Storage


Split files


In-memory


Single file per table


Tablespace(s)


Isolation levels


None


None


Read committed


All


Portable format


Yes


N/A


No


Yes


Referential integrity


No


No


No


Yes


Primary key with data


No


No


Yes


Yes


MySQL caches data records


No


Yes


Yes


Yes


Availability


All versions


All versions


MySQL-Max


All Versions


 


mysql tuner-primer

mysql下tuner-primer使用说明
mysql tuner-primer是检测mysql的主配置文件my.cnf的有力工具,当然还有其他工具,比如mysqlreport,今天先介绍这个工具的使用。
下载并改变执行权限:
wget
http://www.day32.com/MySQL/tuning-primer.sh

chmod a+x tuning-primer.sh
./tuning-primer.sh
首先会要求输入服务器的用户名和密码,并提示保存在当前用户目录下配置文件。
再次执行脚本就会运行,不用输入用户名和密码,并给出参数配置,强悍就强悍在这!!!!
看看我的相关提示,
[root@slave1 tuning-primer]# ./tuning-primer.sh
– INITIAL LOGIN ATTEMPT FAILED –
Testing Stored for passwords: None Found
– RETRY LOGIN ATTEMPT FAILED –
Could not auto detect login info!
Do you have your login handy ? [y/N] : y
User: root
Password:
Would you like me to create a ~/.my.cnf file for you? [y/N] : y
        — MYSQL PERFORMANCE TUNING PRIMER —
             – By: Matthew Montgomery –
MySQL Version 5.1.22-rc-log i686
Uptime = 1 days 2 hrs 16 min 29 sec
Avg. qps = 348
Total Questions = 32946460
Threads Connected = 23
Warning: Server has not been running for at least 48hrs.
It may not be safe to use these recommendations
To find out more information on how each of these
runtime variables effects performance visit:
http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html
Visit
http://www.mysql.com/products/enterprise/advisors.html
for info about MySQL’s Enterprise Monitoring and Advisory Service
SLOW QUERIES
The slow query log is NOT enabled.
Current long_query_time = 10.000000 sec.
You have 44 out of 32946564 that take longer than 10.000000 sec. to complete
Your long_query_time seems to be fine
BINARY UPDATE LOG
The binary update log is enabled
The expire_logs_days is not set.
The mysqld will retain the entire binary log until RESET MASTER or PURGE MASTER LOGS commands are run manually
Setting expire_log_days will allow you to remove old binary logs automatically
See
http://dev.mysql.com/doc/refman/5.1/en/purge-master-logs.html
WORKER THREADS
Current thread_cache_size = 1024
Current threads_cached = 363
Current threads_per_sec = 0
Historic threads_per_sec = 0
Your thread_cache_size is fine
MAX CONNECTIONS
Current max_connections = 1500
Current threads_connected = 22
Historic max_used_connections = 391
The number of used connections is 26% of the configured maximum.
Your max_connections variable seems to be fine.
MEMORY USAGE
Max Memory Ever Allocated : 61 G
Configured Max Per-thread Buffers : 225 G
Configured Max Global Buffers : 2 G
Configured Max Memory Limit : 228 G
Physical Memory : 3.95 G
Max memory limit exceeds 90% of physical memory
KEY BUFFER
Current MyISAM index space = 2 G
Current key_buffer_size = 512 M
Key cache miss rate is 1 : 121
Key buffer fill ratio = 31.00 %
Your key_buffer_size seems to be too high.
Perhaps you can use these resources elsewhere
QUERY CACHE
Query cache is enabled
Current query_cache_size = 64 M
Current query_cache_used = 14 M
Current query_cache_limit = 2 M
Current Query cache Memory fill ratio = 23.29 %
Current query_cache_min_res_unit = 4 K
Query Cache is 23 % fragmented
Run “FLUSH QUERY CACHE” periodically to defragment the query cache memory
If you have many small queries lower ‘query_cache_min_res_unit’ to reduce fragmentation.
Your query_cache_size seems to be too high.
Perhaps you can use these resources elsewhere
MySQL won’t cache query results that are larger than query_cache_limit in size
SORT OPERATIONS
Current sort_buffer_size = 4 M
Current read_rnd_buffer_size = 15 M
Sort buffer seems to be fine
JOINS
Current join_buffer_size = 4.00 M
You have had 22509 queries where a join could not use an index properly
join_buffer_size >= 4 M
This is not advised
You should enable “log-queries-not-using-indexes”
Then look for non indexed joins in the slow query log.
OPEN FILES LIMIT
Current open_files_limit = 8192 files
The open_files_limit should typically be set to at least 2x-3x
that of table_cache if you have heavy MyISAM usage.
Your open_files_limit value seems to be fine
TABLE CACHE
Current table_open_cache = 2048 tables
Current table_definition_cache = 128 tables
You have a total of 400 tables
You have 588 open tables.
The table_cache value seems to be fine
You should probably increase your table_definition_cache value.
TEMP TABLES
Current max_heap_table_size = 16 M
Current tmp_table_size = 64 M
Of 53670 temp tables, 44% were created on disk
Effective in-memory tmp_table_size is limited to max_heap_table_size.
Perhaps you should increase your tmp_table_size and/or max_heap_table_size
to reduce the number of disk-based temporary tables
Note! BLOB and TEXT columns are not allow in memory tables.
If you are using these columns raising these values might not impact your
ratio of on disk temp tables.
TABLE SCANS
Current read_buffer_size = 127 M
Current table scan ratio = 407 : 1
read_buffer_size is over 8 MB there is probably no need for such a large read_buffer
TABLE LOCKING
Current Lock Wait ratio = 1 : 3135582
Your table locking seems to be fine

从编译到工具:几种Mysql的优化方法

一、在编译时优化mysql


如果你从源代码分发安装mysql,要注意,编译过程对以后的目标程序性能有重要的影响,不同的编译方式可能得到类似的目标文件,但性能可能相差很大,因此,在编译安装mysql适应仔细根据你的应用类型选择最可能好的编译选项。这种定制的mysql可以为你的应用提供最佳性能。 


技巧:选用较好的编译器和较好的编译器选项,这样应用可提高性能10-30%。(mysql文档如是说) 


1.1、使用pgcc(pentium gcc)编译器


该编译器(http://www.goof.com/pcg/)针对运行在奔腾处理器系统上的程序进行优化,用pgcc编译mysql源代码,总体性能可提高10%。当然如果你的服务器不是用奔腾处理器,就不必用它了,因为它是专为奔腾系统设计的。 


1.2、仅使用你想使用的字符集编译mysql


mysql目前提供多达24种不同的字符集,为全球用户以他们自己的语言插入或查看表中的数据。却省情况下,mysql安装所有者这些字符集,热然而,最好的选择是指选择一种你需要的。如,禁止除latin1字符集以外的所有其它字符集: 


—————————————————————————— 


%>./configure -with-extra-charsets=none [–other-configuration-options] 


—————————————————————————— 


1.3、将mysqld编译成静态执行文件


将mysqld编译成静态执行文件而无需共享库也能获得更好的性能。通过在配置时指定下列选项,可静态编译mysqld。 


—————————————————————————— 


%>./configure -with-mysqld-ldflags=-all-static [–other-configuration-options] 


—————————————————————————— 


1.4、配置样本


下列配置命令常用于提高性能: 


—————————————————————————— 


%>cflags=”-o6  -mpentiumpro -fomit-frame-pointer” cxx=gcc cxxflags=”-o6 -mpentiumpro  -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti”  ./configure –prefix=/usr/local –enable-assembler  –with-mysqld-ldflags=-all-static –disable-shared 


—————————————————————————— 


二、调整服务器


确保运用正确的编译固然重要,但这只是成功的第一步,配置众多的mysql变量同样对服务器的正常运行起关键作用。你可以将这些变量的赋值存在一个配置文件中,以确保它们在每次启动mysql时均起作用,这个配置文件就是my.cnf文件。


mysql已经提供了几个my.cnf文件的样本,可在/usr/local/mysqld/share/mysql/目录下找到。这些文件分别命名为my-small.cnf、 my-medium.cnf、my-large.cnf和my-huge.cnf,规模说明可在描述配置文件适用的系统类型标题中找到。如果在只有相当少内存的系统上运行mysql,而且只是偶尔的用一下,那么my-small.cnf会比较理想,因为它命令mysqld 只使用最少的资源。类似地,如果你计划构建电子商务超市,而且系统拥有2g内存,那么你可能要用到mysql-huge.cnf文件了。为了利用这些文件中的一个,你需要复制一个最适合需求的文件,改名为my.cnf。你可以选择使用配置文件三种作用范围的一种:


global:将my.cnf文件复制到服务器的/etc目录下,这使得配置文件中的变量作用于全局,即对所有服务器上的mysql数据库服务器有效。


local:将my.cnf文件复制到[mysql-install-dir]/var/目录下,使得my.cnf作用于特定的服务器。[mysql-install-dir]表示mysql安装目录。


user:你可以再限制作用于特定的用户,将my.cnf复制到用户的根目录下。


究竟如何设置my.cnf中的这些变量呢?更进一步说,你可以设置哪一个变量。虽然所用变量对mysql服务器相对通用,每一个变量与mysql的的某些组件有更特定的关系。如变量max_connects归在mysqld类别下。执行下列命令即可知道: 


——————————————————————


%>/usr/local/mysql/libexec/mysqld –help 


—————————————————————— 


它显示大量的选项及与mysqld相关的变量。你可以很容易地在该行文字之下找出变量: 


——————————————————————- 


possible variables for option –set-variable (-o) are 


——————————————————————- 


然后你可以如下设置my.cnf中的那些变量: 


——————————————————————- 


set-variable = max_connections=100 


——————————————————————- 


它设置mysql服务器的最大并发连接数为100。要确保在my.cnf文件中的[mysqld]标题下插入变量设置。 


三、表类型


很多mysql用户可能很惊讶,mysql确实为用户提供5种不同的表类型,称为dbd、heap、isam、merge和myiasm。dbd归为事务安全类,而其他为非事务安全类。 


3.1、事务安全 


dbd 


berkeley  db(dbd)表是支持事务处理的表,由sleepycat软件公司(http://www.sleepycat.com)开发。它提供mysql用户期待已久的功能-事务控制。事务控制在任何数据库系统中都是一个极有价值的功能,因为它们确保一组命令能成功地执行。 


3.2、非事务安全 


heap 


heap表是mysql中存取数据最快的表。这是因为他们使用存储在动态内存中的一个哈希索引。另一个要点是如果mysql或服务器崩溃,数据将丢失。 


isam 


isam表是早期mysql版本的缺省表类型,直到myiasm开发出来。建议不要再使用它。 


merge 


merge是一个有趣的新类型,在3.23.25之后出现。一个merge表实际上是一个相同myisam表的集合,合并成一个表,主要是为了效率原因。这样可以提高速度、搜索效率、修复效率并节省磁盘空间。 


myiasm 


这是mysql的缺省表类型。它基于iasm代码,但有很多有用的扩展。myiasm比较好的原因: 


myiasm表小于iasm表,所以使用较少资源。 


myiasm表在不同的平台上二进制层可移植。 


更大的键码尺寸,更大的键码上限。 


3.3、指定表类型


你可在创建表时指定表的类型。下例创建一个heap表: 


——————————————————————–


mysql>create table email_addresses type=heap ( 


->email char(55) not null, 


->name char(30) not null, 


->primary key(email) ); 


———————————————————————


bdb表需要一些配置工作,参见http://www.mysql.com/doc/b/d/bdb_overview.HTML。 


3.4、更多的表类型


为了使mysql管理工作更有趣,即将发布的mysql 4.0将提供两种新的表类型,称为innobase和gemeni。 


四、优化工具


mysql服务器本身提供了几条内置命令用于帮助优化。 


4.1、show 


你可能有兴趣知道mysql服务器究竟更了什么,下列命令给出一个总结: 


———————————–


mysql>show status; 


———————————–


它给出了一个相当长的状态变量及其值的列表。有些变量包含了异常终止客户的数量、异常终止连接的数量、连接尝试的次数、最大并发连接数和大量其他有用的信息。这些信息对找出系统问题和低效极具价值。 


show还能做更多的事情。它可以显示关于日志文件、特定数据库、表、索引、进程和权限表中有价值的信息。详见mysql手册。 


4.2、explain 


当你面对select语句时,explain解释select命令如何被处理。这不仅对决定是否应该增加一个索引,而且对决定一个复杂的join如何被mysql处理都是有帮助的。 


4.3、optimize 


optimize语句允许你恢复空间和合并数据文件碎片,对包含变长行的表进行了大量更新和删除后,这样做特别重要。optimize目前只工作于myiasm和bdb表。


Get Working day difference for 2 dates

CREATE DEFINER=`root`@`%` FUNCTION `getworkdaydiff`(b date, a date) RETURNS int(11)
DETERMINISTIC
COMMENT ‘Get Working day difference for 2 dates’
BEGIN
DECLARE freedays int;
SET freedays = 0;


SET @x = DATEDIFF(b, a);
IF @x<0 THEN
SET @m = a;
SET a = b;
SET b = @m;
SET @m = -1;
ELSE
SET @m = 1;
END IF;
SET @x = abs(@x) + 1;
/* days in first week */
SET @w1 = WEEKDAY(a)+1;
SET @wx1 = 8-@w1;
IF @w1>5 THEN
SET @w1 = 0;
ELSE
SET @w1 = 6-@w1;
END IF;
/* days in last week */
SET @wx2 = WEEKDAY(b)+1;
SET @w2 = @wx2;
IF @w2>5 THEN
SET @w2 = 5;
END IF;
/* summary */
SET @weeks = (@x-@wx1-@wx2)/7;
SET @noweekends = (@weeks*5)+@w1+@w2;
SET @result = @noweekends-freedays;
RETURN @result*@m;
END


mysql ip address convert (ip2bigint,bigint2ip)

Convert IP address  to bigint





CREATE FUNCTION `F_Ip2Int`(ip varchar(15)) RETURNS bigint(20)
BEGIN
  declare tmp bigint default 0;
  while instr(ip,’.’)>0 do
    set tmp = tmp*256+ left(ip,instr(ip,’.’)-1);
    set ip = right(ip,length(ip)-instr(ip,’.’));
  end while;
  set tmp = tmp*256+ip;
  return tmp;
END

Convert bigint to IP Address




CREATE FUNCTION `F_Int2Ip`(iip bigint) RETURNS varchar(15)
BEGIN

  return concat((iip & 0xFF000000)>>24, ‘.’,
                (iip & 0x00FF0000)>>16, ‘.’,
                (iip & 0x0000FF00)>>8, ‘.’,
                iip & 0x000000FF);

END


用mysqldumpslow分析mysql的slow query log

mysql有一个功能就是可以log下来运行的比较慢的sql语句,默认是没有这个log的,为了开启这个功能,要修改my.cnf或者在mysql启动的时候加入一些参数。如果在my.cnf里面修改,需增加如下几行

long_query_time = 1
log-slow-queries = /var/youpath/slow.log
log-queries-not-using-indexes

long_query_time 是指执行超过多久的sql会被log下来,这里是1秒。
log-slow-queries 设置把日志写在那里,可以为空,系统会给一个缺省的文件host_name-slow.log,我生成的log就在mysql的data目录
log-queries-not-using-indexes 就是字面意思,log下来没有使用索引的query。

把上述参数打开,运行一段时间,就可以关掉了,省得影响生产环境。

接下来就是分析了,我这里的文件名字叫host-slow.log。
先mysqldumpslow –help以下,俺主要用的是
-s ORDER what to sort by (t, at, l, al, r, ar etc), ‘at’ is default
-t NUM just show the top n queries
-g PATTERN grep: only consider stmts that include this string

-s,是order的顺序,说明写的不够详细,俺用下来,包括看了代码,主要有
c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒叙
-t,是top n的意思,即为返回前面多少条的数据
-g,后边可以写一个正则匹配模式,大小写不敏感的

mysqldumpslow -s c -t 20 host-slow.log
mysqldumpslow -s r -t 20 host-slow.log

上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。
mysqldumpslow -t 10 -s t -g “left join” host-slow.log
这个是按照时间返回前10条里面含有左连接的sql语句。

用了这个工具就可以查询出来那些sql语句是性能的瓶颈,进行优化,比如加索引,该应用的实现方式等。

MySQL-Cluster集群研究


MySQL-Cluster集群研究


from: discuz wiki

一、介绍

这篇文档旨在介绍如何安装配置基于2台服务器的MySQL集群。并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行。

注意!
虽然这是基于2台服务器的MySQL集群,但也必须有额外的第三台服务器作为管理节点,但这台服务器可以在集群启动完成后关闭。同时需要注意的是并不推荐在集群启动完成后关闭作为管理节点的服务器。尽管理论上可以建立基于只有2台服务器的MySQL集群,但是这样的架构,一旦一台服务器宕机之后集群就无法继续正常工作了,这样也就失去了集群的意义了。出于这个原因,就需要有第三台服务器作为管理节点运行。

另外,可能很多朋友都没有3台服务器的实际环境,可以考虑在VMWare或其他虚拟机中进行实验。

下面假设这3台服务的情况:







Server1: mysql1.vmtest.net 192.168.0.1
Server2: mysql2.vmtest.net 192.168.0.2
Server3: mysql3.vmtest.net 192.168.0.3


Servers1和Server2作为实际配置MySQL集群的服务器。对于作为管理节点的Server3则要求较低,只需对Server3的系统进行很小的调整并且无需安装MySQL,Server3可以使用一台配置较低的计算机并且可以在Server3同时运行其他服务。


二、在Server1和Server2上安装MySQL

http://www.mysql.com上下载mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz

注意:必须是max版本的MySQL,Standard版本不支持集群部署!

以下步骤需要在Server1和Server2上各做一次





# mv mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz /usr/local/
# cd /usr/local/
# groupadd mysql
# useradd -g mysql mysql
# tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# rm -f mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# mv mysql-max-4.1.9-pc-linux-gnu-i686 mysql
# cd mysql
# scripts/mysql_install_db –user=mysql
# chown -R root  .
# chown -R mysql data
# chgrp -R mysql .
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
# chkconfig –add mysqld


此时不要启动MySQL!


三、安装并配置管理节点服务器(Server3)

作为管理节点服务器,Server3需要ndb_mgm和ndb_mgmd两个文件:

http://www.mysql.com上下载mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz






# mkdir /usr/src/mysql-mgm
# cd /usr/src/mysql-mgm
# tar -zxvf mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# rm mysql-max-4.1.9-pc-linux-gnu-i686.tar.gz
# cd mysql-max-4.1.9-pc-linux-gnu-i686
# mv bin/ndb_mgm .
# mv bin/ndb_mgmd .
# chmod +x ndb_mg*
# mv ndb_mg* /usr/bin/
# cd
# rm -rf /usr/src/mysql-mgm


现在开始为这台管理节点服务器建立配置文件:






# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# vi config.ini




在config.ini中添加如下内容:






[NDBD DEFAULT]
NoOfReplicas=2
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
# Managment Server
[NDB_MGMD]
HostName=192.168.0.3 #管理节点服务器Server3的IP地址
# Storage Engines
[NDBD]
HostName=192.168.0.1 #MySQL集群Server1的IP地址
DataDir= /var/lib/mysql-cluster
[NDBD]
HostName=192.168.0.2 #MySQL集群Server2的IP地址
DataDir=/var/lib/mysql-cluster
# 以下2个[MYSQLD]可以填写Server1和Server2的主机名。
# 但为了能够更快的更换集群中的服务器,推荐留空,否则更换服务器后必须对这个配置进行更改。
[MYSQLD]
[MYSQLD]



保存退出后,启动管理节点服务器Server3:






# ndb_mgmd


启动管理节点后应该注意,这只是管理节点服务,并不是管理终端。因而你看不到任何关于启动后的输出信息。


四、配置集群服务器并启动MySQL

在Server1和Server2中都需要进行如下改动:






# vi /etc/my.cnf








[mysqld]
ndbcluster
ndb-connectstring=192.168.0.3 #Server3的IP地址
[mysql_cluster]
ndb-connectstring=192.168.0.3 #Server3的IP地址




保存退出后,建立数据目录并启动MySQL:






# mkdir /var/lib/mysql-cluster
# cd /var/lib/mysql-cluster
# /usr/local/mysql/bin/ndbd –initial
# /etc/rc.d/init.d/mysqld start



可以把/usr/local/mysql/bin/ndbd加到/etc/rc.local中实现开机启动。

注意:只有在第一次启动ndbd时或者对Server3的config.ini进行改动后才需要使用–initial参数!


五、检查工作状态

回到管理节点服务器Server3上,并启动管理终端:






# /usr/bin/ndb_mgm



键入show命令查看当前工作状态:(下面是一个状态输出示例)







[root@mysql3 root]# /usr/bin/ndb_mgm
— NDB Cluster — Management Client —
ndb_mgm> show
Connected to Management Server at: localhost:1186
Cluster Configuration
———————
[ndbd(NDB)]     2 node(s)
id=2    @192.168.0.1  (Version: 4.1.9, Nodegroup: 0, Master)
id=3    @192.168.0.2  (Version: 4.1.9, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1    @192.168.0.3  (Version: 4.1.9)
[mysqld(API)]   2 node(s)
id=4   (Version: 4.1.9)
id=5   (Version: 4.1.9)
ndb_mgm>




如果上面没有问题,现在开始测试MySQL:

注意,这篇文档对于MySQL并没有设置root密码,推荐你自己设置Server1和Server2的MySQL root密码。

在Server1中:






# /usr/local/mysql/bin/mysql -u root -p
> use test;
> CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER;
> INSERT INTO ctest () VALUES (1);
> SELECT * FROM ctest;



应该可以看到1 row returned信息(返回数值1)。

如果上述正常,则换到Server2上重复上面的测试,观察效果。如果成功,则在Server2中执行INSERT再换回到Server1观察是否工作正常。

如果都没有问题,那么恭喜成功!


六、破坏性测试

将Server1或Server2的网线拔掉,观察另外一台集群服务器工作是否正常(可以使用SELECT查询测试)。测试完毕后,重新插入网线即可。

如果你接触不到物理服务器,也就是说不能拔掉网线,那也可以这样测试:在Server1或Server2上:






# ps aux | grep ndbd



将会看到所有ndbd进程信息:






root      5578  0.0  0.3  6220 1964 ?        S    03:14   0:00 ndbd
root      5579  0.0 20.4 492072 102828 ?     R    03:14   0:04 ndbd
root     23532  0.0  0.1  3680  684 pts/1    S    07:59   0:00 grep ndbd




然后杀掉一个ndbd进程以达到破坏MySQL集群服务器的目的:






# kill -9 5578 5579



之后在另一台集群服务器上使用SELECT查询测试。并且在管理节点服务器的管理终端中执行show命令会看到被破坏的那台服务器的状态。

测试完成后,只需要重新启动被破坏服务器的ndbd进程即可:







# ndbd



注意!前面说过了,此时是不用加–inital参数的!



至此,MySQL集群就配置完成了!

 

文章来源:http://www.mysqlpub.com/viewthread.php?tid=194&extra=page%3D1

提高mysql性能的方法!


提高mysql性能的方法!


来自:chinaunix  作者:uunguymadman007风云使者

一、问题的提出
在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍,可见对于一个系统不是简单地能实现其功能就可,而是要写出高质量的SQL语句,提高系统的可用性。

在多数情况下,Oracle使用索引来更快地遍历表,优化器主要根据定义的索引来提高性能。但是,如果在SQL语句的where子句中写的SQL代码不合理,就会造成优化器删去索引而使用全表扫描,一般就这种SQL语句就是所谓的劣质SQL语句。在编写SQL语句时我们应清楚优化器根据何种原则来删除索引,这有助于写出高性能的SQL语句。

二、SQL语句编写注意问题
下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍。在这些where子句中,即使某些列存在索引,但是由于编写了劣质的SQL,系统在运行该SQL语句时也不能使用该索引,而同样使用全表扫描,这就造成了响应速度的极大降低。

1. IS NULL 与 IS NOT NULL
不能用null作索引,任何包含null值的列都将不会被包含在索引中。即使索引有多列这样的情况下,只要这些列中有一列含有null,该列就会从索引中排除。也就是说如果某列存在空值,即使对该列建索引也不会提高性能。

任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。

2. 联接列

对于有联接的列,即使最后的联接值为一个静态值,优化器是不会使用索引的。我们一起来看一个例子,假定有一个职工表(employee),对于一个职工的姓和名分成两列存放(FIRST_NAME和LAST_NAME),现在要查询一个叫比尔.克林顿(Bill Cliton)的职工。

下面是一个采用联接查询的SQL语句,

select * from employss
where
first_name||”||last_name =’Beill Cliton’

上面这条语句完全可以查询出是否有Bill Cliton这个员工,但是这里需要注意,系统优化器对基于last_name创建的索引没有使用。

当采用下面这种SQL语句的编写,Oracle系统就可以采用基于last_name创建的索引。

Select * from employee
where
first_name =’Beill’ and last_name =’Cliton’

遇到下面这种情况又如何处理呢?如果一个变量(name)中存放着Bill Cliton这个员工的姓名,对于这种情况我们又如何避免全程遍历,使用索引呢?可以使用一个函数,将变量name中的姓和名分开就可以了,但是有一点需要注意,这个函数是不能作用在索引列上。下面是SQL查询脚本:

select * from employee
where
first_name = SUBSTR(‘&&name’,1,INSTR(‘&&name’,’ ‘)-1)
and
last_name = SUBSTR(‘&&name’,INSTR(‘&&name’,’ ‘)+1)

3. 带通配符(%)的like语句

同样以上面的例子来看这种情况。目前的需求是这样的,要求在职工表中查询名字中包含cliton的人。可以采用如下的查询SQL语句:

select * from employee where last_name like ‘%cliton%’

这里由于通配符(%)在搜寻词首出现,所以Oracle系统不使用last_name的索引。在很多情况下可能无法避免这种情况,但是一定要心中有底,通配符如此使用会降低查询速度。然而当通配符出现在字符串其他位置时,优化器就能利用索引。在下面的查询中索引得到了使用:

select * from employee where last_name like ‘c%’

4. Order by语句

ORDER BY语句决定了Oracle如何将返回的查询结果排序。Order by语句对要排序的列没有什么特别的限制,也可以将函数加入列中(象联接或者附加等)。任何在Order by语句的非索引项或者有计算表达式都将降低查询速度。

仔细检查order by语句以找出非索引项或者表达式,它们会降低性能。解决这个问题的办法就是重写order by语句以使用索引,也可以为所使用的列建立另外一个索引,同时应绝对避免在order by子句中使用表达式。

5. NOT

我们在查询时经常在where子句使用一些逻辑表达式,如大于、小于、等于以及不等于等等,也可以使用and(与)、or(或)以及not(非)。NOT可用来对任何逻辑运算符号取反。下面是一个NOT子句的例子:

… where not (status =’VALID’)

如果要使用NOT,则应在取反的短语前面加上括号,并在短语前面加上NOT运算符。NOT运算符包含在另外一个逻辑运算符中,这就是不等于(<&gt$$)运算符。换句话说,即使不在查询where子句中显式地加入NOT词,NOT仍在运算符中,见下例:

… where status <&gt$$’INVALID’

再看下面这个例子:

select * from employee where salary<&gt$$3000;

对这个查询,可以改写为不使用NOT:

select * from employee where salary<3000 or salary&gt$$3000;

虽然这两种查询的结果一样,但是第二种查询方案会比第一种查询方案更快些。第二种查询允许Oracle对salary列使用索引,而第一种查询则不能使用索引。

6. IN和EXISTS

有时候会将一列和一系列值相比较。最简单的办法就是在where子句中使用子查询。在where子句中可以使用两种格式的子查询。

第一种格式是使用IN操作符:

… where column in(select * from … where …);

第二种格式是使用EXIST操作符:

… where exists (select ‘X’ from …where …);

我相信绝大多数人会使用第一种格式,因为它比较容易编写,而实际上第二种格式要远比第一种格式的效率高。在Oracle中可以几乎将所有的IN操作符子查询改写为使用EXISTS的子查询。

第二种格式中,子查询以‘select ‘X’开始。运用EXISTS子句不管子查询从表中抽取什么数据它只查看where子句。这样优化器就不必遍历整个表而仅根据索引就可完成工作(这里假定在where语句中使用的列存在索引)。相对于IN子句来说,EXISTS使用相连子查询,构造起来要比IN子查询困难一些。

通过使用EXIST,Oracle系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间。Oracle系统在执行IN子查询时,首先执行子查询,并将获得的结果列表存放在在一个加了索引的临时表中。在执行子查询之前,系统先将主查询挂起,待子查询执行完毕,存放在临时表中以后再执行主查询。这也就是使用EXISTS比使用IN通常查询速度快的原因。

同时应尽可能使用NOT EXISTS来代替NOT IN,尽管二者都使用了NOT(不能使用索引而降低速度),NOT EXISTS要比NOT IN查询效率更高。

mysqlbinlog 資料庫處理二進制日誌檔案的實用工具

當然,系統剛弄好是沒有開啟 mysqlbinlog 的功能,至少在 CentOS4.4 上面我還要去開啟,不過 ubuntu 系統預設就已經開啟了,不過沒關係,只要利用下面方法就可以達到了


修改 my.cnf [ CentOS: /etc/my.cnf Ubuntu: /etc/mysql/my.cnf ],加入下面語法



# Replication Master Server (default)
# binary logging is required for replication
log-BIN=mysql-BIN


不過話說當你開啟這個功能之後,你會發現在 /var/lib/mysql/ 底下多出很多檔案



-rw-rw—-   1 mysql mysql  33164904  117 15:44 mysql-bin.000001
-rw-rw—-   1 mysql mysql      4007  117 15:50 mysql-bin.000002
-rw-rw—-   1 mysql mysql  70288989  129 22:38 mysql-bin.000003
-rw-rw—-   1 mysql mysql     16665  129 22:41 mysql-bin.000004
-rw-rw—-   1 mysql mysql      4792  129 22:42 mysql-bin.000005
-rw-rw—-   1 mysql mysql  56274069  210 06:25 mysql-bin.000006
-rw-rw—-   1 mysql mysql 893963240  329 09:21 mysql-bin.000007
-rw-rw—-   1 mysql mysql 666605284  329 09:39 mysql-bin.000008
-rw-rw—-   1 mysql mysql    151946  329 10:02 mysql-bin.000009
-rw-rw—-   1 mysql mysql   3450785  329 22:38 mysql-bin.000010

上面就是產生 mysqlbinlog 檔案,當然如果你要觀看那一個檔案下指令吧



shell> mysqlbinlog binlog.0000003


裏面的語法包跨 每個語句花費的時間、客戶發出的線程ID、發出線程時的時間戳,也可以遠端觀看


當讀取遠程二進制日誌時,可以通過連接參數選項來指示如何連接伺服器,但它們經常被忽略掉,除非您還指定了–read-from-remote-server選項。這些選項是–host、–password、–port、–protocol、–socket和–user。


底下來說明一下用法~


1. 指定恢復時間語法


假如你今天早上9點不小心砍掉哪個資料庫的資料表,你可以利用下面語法來恢復



mysqlbinlog –stop-date=“2007-03-29 8:59:59”  /var/lib/mysql/bin.000001 | mysql -u root -p

如果你想恢復後面9點以後sql語法 可以使用



mysqlbinlog –start-date=“2007-03-29 9:00:00”  /var/lib/mysql/bin.000001 | mysql -u root -p

或者是 你想恢復 9點到10點之間的sql語法,則下面語法是您想要的



mysqlbinlog –start-date=“2007-03-29 9:00:00”  –stop-date=“2007-03-29 10:00:00” /var/lib/mysql/bin.000001 | mysql -u root -p

其實你也可以不要執行,先把sql語法輸出到 /tmp/restore.sql



mysqlbinlog –start-date=“2007-03-29 9:00:00”  –stop-date=“2007-03-29 10:00:00” /var/lib/mysql/bin.000001 &gt; /tmp/restore.sql

當然 你也可以指定你要輸出的 database,免的檔案很大



database=db_name,-d db_name
host=host_name,-h host_name