Skip to main content

Posts

Showing posts from 2016

Hibernate Template vs Entity Manager while Persisting a List of Entites

I did a test for comparison between  org.springframework.orm.hibernate3.HibernateTemplate and   javax.persistence.EntityManager . I am sharing the result of my analysis. use case : Persistence of a List of Entities. environment : Linux 64-bit, jdk_1.8 When I run the test I found that Entity Manager performing better when persisting large size of list. An image can tell better than thousands words. So find the below image to see the performance difference between the frameworks. Data Table: Graph Chart:

Best Way to use ArrayList in Java

                      I n the following post we are goning to discuss a little variation in use of ArrayList in java. We will see how we can improve the performance by just a small change. First of all run the below java code on your machine. import java.util.ArrayList; import java.util.List; public class Test{ public static void main(String... args) { int s = 10000000; String v = "PROGRAMMING"; long t1,t2; //Segment-1 t1 = System.currentTimeMillis(); List<String> l1 = new ArrayList<>(); for(int i=0; i<s; ++i){ l1.add(v); } t2 = System.currentTimeMillis(); System.out.println("Time for above segment-1 : "+(t2-t1)+" ms"); //Segment-2 t1 = System.currentTimeMillis(); List<String> l2 = new ArrayList<>(s); for(int i=0; i<s; ++i){ l2.add(v); } t2 = System.currentTimeMillis(); System.out.println("Time for above segment-2 : "+(t2-t1)+" ms"); } } I executed it

About Software Design and Development

When we plan to design a software we need to focus certain things. Here are some important points we can go through. Functional Decomposition: Functional decomposition is natural way to deal with complexity. The challenges with this approach: to dealing with change and bugs originate with changes to code. Low cohesion, tight coupling Focus on function leads to a cascade of changes from which it is difficult to escape. The Problem of Requirements: Requirements always change. Requirements are incomplete. Requirements are usually wrong. Requirements (and users) are misleading. Requirements do not tell the whole story. Deal with Changes(Use Functional Decomposition): Shift responsbility from yourself to

Builder Pattern : Java Code Example

Builder Pattern Builder Pattern is used when the increase of object constructor parameter combination leads to an exponential list of constructors. It is a solution to the telescoping constructor anti-pattern. Let's describe the pattern by using a sample requirement. Problem: We need to create a class for a Customer in a Bank and need following attributes in the Customer object. {Name, Father's Name, Date Of Birth, Mobile, Email, PAN, Permanent Address, Correspondence Address, Account, Branch} Constraint : Name,Date Of Birth,Account can not be null or empty There are 10 attributes in the objects So there will be total 2^10(1024) possible constructor and It is not practical to write all required constructors. One alternative could be to use Setter method but it will not work if any attribute has final modifier and would be difficult to fulfill the constraint that some attributes can not be null or empty. Now We will see how Builder Design Pattern helps to solve

How to Create a Namespace in Aerospike Database

                      T his post is about creating a namespace in Aerospike. I could not find any concrete method to create a namespace like create database in MySQL and MongoDB. So I am suggesting a way to create a namespace in Aerospike Database. Step-1: Locate config file aerospike.conf and open it in your favorite editor and make sure you have permission to modify the file. In my system the path of file /etc/aerospike/aerospike.conf (Default in Ubuntu). Here the content of the file. # Aerospike database configuration file. service { user root group root paxos-single-replica-limit 1 # Number of nodes where the replica pidfile /var/run/aerospike/asd.pid service-threads 4 transaction-queues 4 transaction-threads-per-queue 4 proto-fd-max 15000 } logging { # Log file must be an absolute path. file /var/log/aerospike/aerospike.log { context any info } } network { service { address any port 3000 } heartbeat { mode multicast address 239.1.99.222 p

Books : Every Computer Science Student Should Read Before Leaving College

Awesome books for Computer Science students: =================================================================== ------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------ -------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------    ------------------------------------------------------------------------------------------------------------------------  -------------------------------------------------------------------------------------------------------------------------

com.mongodb.MongoCommandException: Command failed with error 18: 'Authentication failed.' on server

If you are trying to connect Mongo DB Server and it insanely throwing following error. com.mongodb.MongoTimeoutException : Timed out after 1000 ms while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}. Client view of cluster state is {type=UNKNOWN, servers=[{address=192.168.1.10:27010, type=UNKNOWN, state=CONNECTING, exception={ com.mongodb.MongoSecurityException: Exception authenticating MongoCredential {mechanism=null, userName='user123', source='admin', password=<hidden>, mechanismProperties={}}}, caused by {com.mongodb.MongoCommandException: Command failed with error 18 : 'Authentication failed.' on server 192.168.1.10:27010 . The full response is { "ok" : 0.0, "code" : 18, "errmsg" : "Authentication failed." }}}] If you start looking the error content First you encounter with Timeout Exception which may mislead you. It is basically an authentication error. I

WARN AEROSPIKE_ERR_CLIENT Socket write error: 111

If you are just typing aql on terminal and following error throwing while your aerospike server has been started successfully. WARN AEROSPIKE_ERR_CLIENT Socket write error: 111 It may happen because you had connected some other server before, Now you are trying to connect to your localhost or different server. To remove the above error just type full command: aql -h 127.0.0.1 -p 3000                           ( put server ip in case of other server rather than localhost) instead of jus aql.

com.aerospike.client.AerospikeException$Serialize: Error Code -1:

If you are trying to save a  whole simple java object into Aerospike database and your are getting the following annoying errors. com.aerospike.client.AerospikeException$Serialize: Error Code -1: java.io.NotSerializableException: com.sangnak-science. Person at com.aerospike.client.Value$BlobValue.estimateSize(Value.java:977) at com.aerospike.client.command.Command.estimateOperationSize(Command.java:767) at com.aerospike.client.command.Command.setWrite(Command.java:76) at com.aerospike.client.command.WriteCommand.writeBuffer(WriteCommand.java:56) at com.aerospike.client.command.SyncCommand.execute(SyncCommand.java:47) at com.aerospike.client.AerospikeClient.put(AerospikeClient.java:339) at com.yatra.Aerospike.main(Aerospike.java:57) Caused by: java.io.NotSerializableException: com.yatra.Person at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) at com.aerospike.client.

Java Code Example For Aerospike Simple Operations [Read, Write, Delete]

                      I n the following post we will see sample java code to perform simple operation (read, write and delete Records) from Aerospike Database System. The code are self explanatory, follow the comments in code for better understanding. You only need a jar for java client which you can download from aerospike official website. Main Class import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.aerospike.client.AerospikeClient; import com.aerospike.client.AerospikeException; import com.aerospike.client.Bin; import com.aerospike.client.Host; import com.aerospike.client.Key; import com.aerospike.client.Record; import com.aerospike.client.Value; import com.aerospike.client.policy.ClientPolicy; import com.aerospike.client.policy.WritePolicy; public class Aerospike { public static void main(String... args){ //Get host Host host = new Host("127.0.0.1",3000); //create client and write policy Clien

Proxy Pattern : Real Life Example and Java Code Example

Proxy Pattern The proxy pattern defines how to get object level access control by acting as a pass through entity or a placeholder object. There are three types in the proxy pattern. (1) Remote Proxy: Remote proxy represents an object locally which belongs to a different remote location. Real Life Example: ATM is remote proxy for the banks. (2) Virtual Proxy: When an object is complex or heavy, We can use a virtual proxy object as a skeleton representation for the original object. Real Life Example: Bank Cheques are the Virtual Proxy for the Currency Notes. (3) Protection Proxy: When we use a proxy to restrict the access of object it's called Protection proxy. Real Life Example: Proxy servers used in office and organizations to block the access of some websites and networks Java Code Example: Below is the java code example for the ATM Bank Implementation(Remote Proxy). The below code is not very good and secure for sophisticated banking system and

Volatile Qualifier in C : Explained by Example

                      V olatie qualifier can be used by keyword volatile in C/C++. You can define a variable as volatile by adding volatile qualifier just before data type.eg volatile int a; Volatile specifies a variable whose value may be changed by processes outside the current program. The meaning of outside of the current program may be Operating System or separate thread in case of multi threading processing. When we defines a variable as volatile, It does two things 1) The system always reads the current value of a volatile object from the memory location rather than keeping its value in temporary register at the point it is requested, even if a previous instruction asked for a value from the same object. 2) It stops Compiler to perform some optimizations. As we know that Compiler do some kind of optimizations on the source code before compilation. Below examples explain how a volatile qualifier affects the Compiler optimizations. Suppose There is the following So