Running MySQL as a Demon
This small blog demonstrates the steps required to start-up MySQL as a demon at boot time. The first step is to copy the mysql file from the installation directory (/opt/mysql/mysql/bin)
to the /etc/init.d directory and ensure that it’s executable (chmod 755 mysql).
Java tips, observations, bugs and problems from the world of Spring, Weblogic, Oracle, MySQL and many other technologies...
Monday, 28 February 2011
Sunday, 27 February 2011
Installing MySQL on Solaris (Part 2 - Changing Passwords)
Change the Passwords
Don’t forget to change the passwords for the root and unknown users:
Labels:
Database,
Installation,
MySQL
Saturday, 26 February 2011
Installing MySQL on Solaris (Part 1 - Installing the files)
To install MySQL on Solaris, you first need to download it from the MySQL Community Server website.
Before installing MySql, the first job is to create the mysql group by typing:
groupadd mysql
Next, create the mysql user by typing:
useradd -g mysql mysql
Labels:
Database,
Installation,
MySQL
Friday, 25 February 2011
Modulo and Negative Numbers
Did you know that the modulo of a negative number is negative? In the presumed words of Micheal Caine it seems that “not a lot of people know that”. For example its obvious that:
5 % 2 = 1
but it isn’t so obvious that:
5 % 2 = 1
but it isn’t so obvious that:
Labels:
certification,
Java,
modulo
Thursday, 24 February 2011
An Easy Singleton
Writing a Singleton class can be a bit of a chore, you have to remember to do several things such as making your constructor private, implementing a proper
There is a quicker way, however, you can cheat and implement a singleton using an Enum:
getInstance()
factory method and making it thread safe by making your instance variable volatile.There is a quicker way, however, you can cheat and implement a singleton using an Enum:
Wednesday, 23 February 2011
When Object Design Goes Wrong...
There are a good many well documented 'code smells' and 'anti-patterns', but I've always found the following couple of items useful...
Labels:
Java,
Object Orientation,
OO
Tuesday, 22 February 2011
OO Revision - a blast from the past
I recently came across this object revision list, taken from Booch's Object Oriented Analysis and Design which I bought in 1995 and referencing OMT. It was written using my previous first language of C++, something I've not used in a good while. It was good to read through it after all these years, giving the critic of time, just to figure out what's changed over the years.
Labels:
Object Orientation,
OO
Monday, 21 February 2011
Sunday, 20 February 2011
Remote Access to MySQL databases
One way in which MySQL differs from other databases such as Oracle, is that by default, only accounts on the same machine as the database are allowed to access the database. This means that, although it’s not heavily documented, all user names consist of two parts: the user and the machine name (or IP address); hence on the local machine, a user called ‘fred’ is really, by default, called ‘fred@localhost’ - although the ‘localhost’ part is usually hidden.
Labels:
Database,
Grant,
MySQL,
Privileges
Saturday, 19 February 2011
Caffeine Power
Caffeine - the programmers drug (well at least one of them). You many have noticed that the majority of programming groups use caffeine heavily, but why is this? Well it keeps you awake and allows you to do your often boring job (not all programming tasks are interesting), it speeds up your thoughts and pumps blood more quickly round your body.
Labels:
Caffeine
Friday, 18 February 2011
Locus of Control
As a software manager, one of your main aims is to have well-motivated staff. There are many theories about motivation from Maslow’s Needs to ones that involve lots of “ra-ra” shouting.
Labels:
Team Management
Thursday, 17 February 2011
Exceptions and Overriding
When you extend a class and override a method, the Java compiler insists that all exception classes thrown by your overridden method must be the same as, or subclasses of, the exception classes thrown by the original method in the base class.
The code below demonstrates a base class being overridden by various subclasses.
Labels:
certification,
Exceptions,
Java
Wednesday, 16 February 2011
Maven and Eclipse Integration (m2eclipse)
A good way to do eclipse / Maven integration is to use m2eclipse from Sonatype. To install this eclipse plugin, go to Help | Install New Software, when the dialogue will appear. Then click ‘Add...’ button and add the following URL: http://m2eclipse.sonatype.org/sites/m2e together with some description or other. Finally, click Next and follow the instructions...
Tuesday, 15 February 2011
Eclipse and Subversion Integration
A good way to do eclipse / Subversion integration is to use Collabnet’s Desktop for eclipse. To install this plug-in go to Help | Install New Software, when the dialogue will appear. Then click Add...’ button and then add the following URL: http://downloads.open.collab.net/eclipse/update-site/e3.5/ together with some description or other... finally press Next and continue as directed.
Labels:
eclipse,
Java,
Subversion
Sunday, 13 February 2011
Adding Log4j to a Weblogic Domain Configuration
One of the things I often have to do is install Weblogic Server for development purposes, which often means making manual changes to an installation created by the install wizard and the way to do this is to modify the setDomainEnv file. There are two copies of this for every Weblogic installation: one for Windows, and the other for Unix. Given that I generally do most development under Windows, then I’ll be using setDomainEnv.cmd in this example, which demonstrates how to add log4j to the installation.
Saturday, 12 February 2011
Implementing the equals() hashCode() Contract
The Java documentation for the Object.equals() method states that: "it is generally necessary to override the hashCode method whenever this method is overridden, so as to maintain the general contract for the hashCode method, which states that equal objects must have equal hash codes." This is rather vague, is it necessary, or just a good idea to implement hashCode() when you override equals()?
Labels:
certification,
equals hashCode contract,
equals(),
hashCode(),
Java
Friday, 11 February 2011
String and the StringBuilder Usage
One common mistake you often see is code that relies on the repeated concatenation of strings using the String class. String concatenation using the String class okay when all you need to do is concatenate one string to another, but when it comes down to concatenating multiple strings, this method generates serious time penalties.
Labels:
certification,
Java,
String,
StringBuilder
Thursday, 10 February 2011
Wednesday, 9 February 2011
Floating Point Numbers
Floating point numbers have the following range:
- Double.NEGATIVE_INFINITY or Float.NEGATIVE_INFINITY
- Negative Values
- -0.0
- 0.0
- Positive Numbers
- Double.POSITIVE_INFINITY or Float.POSITIVE_INFINITY
Labels:
certification,
Java
Tuesday, 8 February 2011
What do all the different HashMaps do?
It seems strange to me that the Java API has been allowed to grow to the point where there’s so much overlapping functionality. If, as a Java API developer, you were allowed to ‘refactor mercilessly’ then there would be whole swathes of classes that would suddenly find themselves deprecated.
Monday, 7 February 2011
Using java.util.Collections - 2
Yesterday’s blog, contained a quick example of using Collections.reverse(), which, from experience, is something that you don’t have to do that often; so today’s post demonstrates a more useful example. Now, one thing you often need to do is to write a method that returns a Collection (eg a List, Set, Map etc.) to its caller.
Labels:
certification,
Collections,
encapsulation,
Java
Sunday, 6 February 2011
Using java.util.Collections - 1
One of the most useful classes is the java.util.Collections consisting of static methods that operate on or return collections. So if you need to reverse or sort a list, for example, then don't write the code yourself just look here!
Labels:
certification,
Collections,
Java
Saturday, 5 February 2011
Simplify your Beans
One of the boring grunty tasks that you always seems to end up having to do is to implement a
toString()
method on your plain old Java beans, data transfer objects or value objects. That’s because at some point during your development cycle you’ll need to know the values returned by each of your ‘getter’ methods in order to visually verify its state.
Labels:
Java,
Reflection,
toString
Friday, 4 February 2011
The Serializable and Externalizable Iterfaces
The difference between Serializable and Externalizable interfaces and when to use each one...
public interface Externalizable extends SerializableExternalization is similar to Serialize except that an object is responsible for saving its own state using methods calls:
Labels:
certification,
Java,
Serializable
Thursday, 3 February 2011
Serializing an Object
1) Serializable does not define any methods. It tells the JVM that a class can be serialized.
2) If your class extends a class that doesn't implement Serializable then that super class must have a default (no argument) constructor to initialise the itself during de-serialization.
3) If you try to serialize a class that doesn't implement Serializable then a NotSerializableException run time exception is thrown.
4) Serialization is done through a classes that implement the ObjectOutputStream and the corresponding ObjectInputStream interface.
2) If your class extends a class that doesn't implement Serializable then that super class must have a default (no argument) constructor to initialise the itself during de-serialization.
3) If you try to serialize a class that doesn't implement Serializable then a NotSerializableException run time exception is thrown.
4) Serialization is done through a classes that implement the ObjectOutputStream and the corresponding ObjectInputStream interface.
Labels:
certification,
Java,
Serializable
Wednesday, 2 February 2011
Use the WeakHashMap
A WeakHashMap is a hashmap implementation that uses weakly reachable keys. What this boils down to is this... when an object is added to a normal hash map then the key is strongly referenced by the thread that added it to
the map. In the case of a WeakHashMap a WeakReference class is used to wrap the key to the object. The WeakHashMap then uses it's own ReferenceQueue so that it is notified of keys that have been garbage collected. Once there are no other references to the key then the object will be removed from the WeakHashMap automatically. The big idea here is to stop problems with memory leaks that can occur in hash maps if the programmer forgets to remove an object from the map once the program has finished with it.
the map. In the case of a WeakHashMap a WeakReference class is used to wrap the key to the object. The WeakHashMap then uses it's own ReferenceQueue so that it is notified of keys that have been garbage collected. Once there are no other references to the key then the object will be removed from the WeakHashMap automatically. The big idea here is to stop problems with memory leaks that can occur in hash maps if the programmer forgets to remove an object from the map once the program has finished with it.
Labels:
certification,
Java,
WeakHashMap
Tuesday, 1 February 2011
Method arguments are always passed by value
This includes object references which also passed by value and copied. However in this case the object itself is not copied and you end up with two references to the same object.
Consider the output from the code below:
Consider the output from the code below:
Labels:
certification,
Java
Subscribe to:
Posts (Atom)