March 28, 2020

Changing DNS

Top DNS Servers

  • Primary DNS: 8.8.8.8
  • Secondary DNS: 8.8.4.4
  • Primary DNS: 208.67.222.222
  • Secondary DNS: 208.67.220.220
  • Primary DNS: 1.1.1.1
  • Secondary DNS: 1.0.0.1
  • Primary DNS: 9.9.9.9
  • Secondary DNS: 149.112.112.112

How do I make the switch on my computer?

Okay, this is where things can get a bit tricky, but it should be manageable for everyone. 
If you’re a Windows user

PHOTO: Screengrab

  • Go to Start Menu 
  • Click Settings
  • Click Network & Internet
  • Click Change adapter options
  • Double-click on Ethernet or Wi-Fi, depending on how you’re connected
  • In the pop-up window, click Properties
  • Double-click on Internet Protocol Version 4 (TCP/IPv4)
  • Choose Use the following DNS server addresses
  • Key in the digits of your chosen public DNS server, with the Preferred DNS server being the primary one, while the Alternate DNS server is your secondary one
  • Click OK to make the changes, exit the Control Panel

March 1, 2020

Design Thinking .. Summarized

Design Thinking
ref: https://www.cio.com/article/3528292/what-is-design-thinking-an-agile-method-for-innovation.html

Definition
Design thinking is an agile, iterative process for approaching design and innovation that centers on users’ desires and needs, and enables your company to pivot as the industry changes and technology evolves. Design thinking acknowledges that there isn’t one way to solve a problem. As such, the design thinking methodology encourages questioning, experimenting, observing and innovating in an environment that embraces diverse opinions and ideas.

Design thinking principles

  • Wicked problems:  “wicked problems” stands for ill-defined or tricky issues that have unclear solutions and require creative thinking or non-traditional strategies to solve.
  • Problem framing: With design thinking, there is more than one way to view a problem. Problems aren’t taken at face value. Instead, they’re recontextualized and re-interpreted to find a solution.
  • Solution-focused thinking: Instead of focusing on problems, a design thinking model looks at solutions first, which can help improve understanding of the problem.
  • Abductive reasoning: This form of logical inference starts with an observation or set of observations and then asks you to find the simplest, most likely explanation for the problems observed. It’s an important style of reasoning that is used in design thinking to reframe problems or ideas to find several ways to address the problem or opportunity.
  • Co-evolution of problem and solution: When design thinkers work on a problem, they switch between thinking about the problem and looking at ideas for a solution to help come up with even more solution ideas.
  • Representations and modelling: Computer models and physical prototypes are used to identify requirements, which can sometimes be abstract, and to enable your team to test, refine and evaluate new ideas.

Design thinking process
There are four main phases of design thinking that your team will cycle through while developing solutions and products. Rather than a detailed prescription to follow, design thinking offers a loose structure that you can interpret as needed for your business needs.

Inspiration: This is usually the first phase of the design process during which you will try to understand the problem or opportunity. You’ll want to establish objectives, benchmarks, key points of contact, requirements, technology needs and how your solution or product will fit into the industry market.

Empathy: Empathy is arguably one of the most important phases and principles of design thinking. When designing solutions, products, services or hardware you need to truly understand the perspective of the client or end-user.

Ideation: This phase involves developing as many ideas as possible using both divergent and convergent thinking. You’ll alternate between divergent thinking, which involves a diverse group of people who engage in structured brainstorming, and convergent thinking, which zeroes in on the best ideas to select one to follow through with.

Implementation and prototyping: Once you have established a few of the best ideas, it’s time for modeling and prototyping by creating actual products and services that can be tested, evaluated and refined.

July 5, 2012


9 Beliefs of Remarkably Successful People

The most successful people in business approach their work differently than most. See how they think--and why it works.
man holding a picture of a blooming tree
Getty
 
17K
Share
I'm fortunate enough to know a number of remarkably successful people. Regardless of industry or profession, they all share the same perspectives and beliefs.
And they act on those beliefs:
1. Time doesn't fill me. I fill time.
Deadlines and time frames establish parameters, but typically not in a good way. The average person who is given two weeks to complete a task will instinctively adjust his effort so it actually takes two weeks.
Forget deadlines, at least as a way to manage your activity. Tasks should only take as long as they need to take. Do everything as quickly and effectively as you can. Then use your "free" time to get other things done just as quickly and effectively.
Average people allow time to impose its will on them; remarkable people impose their will on their time.
2. The people around me are the people I chose.
Some of your employees drive you nuts. Some of your customers are obnoxious. Some of your friends are selfish, all-about-me jerks.
You chose them. If the people around you make you unhappy it's not their fault. It's your fault. They're in your professional or personal life because you drew them to you--and you let them remain.
Think about the type of people you want to work with. Think about the types of customers you would enjoy serving. Think about the friends you want to have.
Then change what you do so you can start attracting those people. Hardworking people want to work with hardworking people. Kind people like to associate with kind people. Remarkable employees want to work for remarkable bosses.
Successful people are naturally drawn to successful people.
3. I have never paid my dues.
Dues aren't paid, past tense. Dues get paid, each and every day. The only real measure of your value is the tangible contribution you make on a daily basis.
No matter what you've done or accomplished in the past, you're never too good to roll up your sleeves, get dirty, and do the grunt work.  No job is ever too menial, no task ever too unskilled or boring.
Remarkably successful people never feel entitled--except to the fruits of their labor.
4. Experience is irrelevant. Accomplishments are everything.
You have "10 years in the Web design business." Whoopee. I don't care how long you've been doing what you do. Years of service indicate nothing; you could be the worst 10-year programmer in the world.
I care about what you've done: how many sites you've created, how many back-end systems you've installed, how many customer-specific applications you've developed (and what kind)... all that matters is what you've done.
Successful people don't need to describe themselves using hyperbolic adjectives like passionate, innovative, driven, etc. They can just describe, hopefully in a humble way, what they've done.
5. Failure is something I accomplish; it doesn't just happen to me.
Ask people why they have been successful. Their answers will be filled with personal pronouns: I, me, and the sometimes too occasional we.
Ask them why they failed. Most will revert to childhood and instinctively distance themselves, like the kid who says, "My toy got broken..." instead of, "I broke my toy."
They'll say the economy tanked. They'll say the market wasn't ready. They'll say their suppliers couldn't keep up.
They'll say it was someone or something else.
And by distancing themselves, they don't learn from their failures.
Occasionally something completely outside your control will cause you to fail. Most of the time, though, it's you. And that's okay. Every successful person has failed. Numerous times. Most of them have failed a lot more often than you. That's why they're successful now.
Embrace every failure: Own it, learn from it, and take full responsibility for making sure that next time, things will turn out differently.
6. Volunteers always win.
Whenever you raise your hand you wind up being asked to do more.
That's great. Doing more is an opportunity: to learn, to impress, to gain skills, to build new relationships--to do something more than you would otherwise been able to do.
Success is based on action. The more you volunteer, the more you get to act. Successful people step forward to create opportunities.
Remarkably successful people sprint forward.
7. As long as I'm paid well, it's all good.
Specialization is good. Focus is good. Finding a niche is good.
Generating revenue is great.
Anything a customer will pay you a reasonable price to do--as long as it isn't unethical, immoral, or illegal--is something you should do. Your customers want you to deliver outside your normal territory? If they'll pay you for it, fine. They want you to add services you don't normally include? If they'll pay you for it, fine. The customer wants you to perform some relatively manual labor and you're a high-tech shop? Shut up, roll 'em up, do the work, and get paid.
Only do what you want to do and you might build an okay business. Be willing to do what customers want you to do and you can build a successful business.
Be willing to do even more and you can build a remarkable business.
And speaking of customers...
8. People who pay me always have the right to tell me what to do.
Get over your cocky, pretentious, I-must-be-free-to-express-my-individuality self. Be that way on your own time.
The people who pay you, whether customers or employers, earn the right to dictate what you do and how you do it--sometimes down to the last detail.
Instead of complaining, work to align what you like to do with what the people who pay you want you to do.
Then you turn issues like control and micro-management into non-issues.
9. The extra mile is a vast, unpopulated wasteland.
Everyone says they go the extra mile. Almost no one actually does. Most people who go there think, "Wait... no one else is here... why am I doing this?" and leave, never to return.
That's why the extra mile is such a lonely place.
That's also why the extra mile is a place filled with opportunities.
Be early. Stay late. Make the extra phone call. Send the extra email. Do the extra research. Help a customer unload or unpack a shipment. Don't wait to be asked; offer. Don't just tell employees what to do--show them what to do and work beside them.
Every time you do something, think of one extra thing you can do--especially if other people aren't doing that one thing. Sure, it's hard.
But that's what will make you different.
And over time, that's what will make you incredibly successful.

May 11, 2012

Failed to read wsdl file from url

javax.xml.ws.WebServiceException: weblogic.wsee.wsdl.WsdlException: Failed to read wsdl file from url due to -- java.net.ConnectException: Tried all: '1' addresses, but could not connect over HTTP to server: 'sinuxu31', port: '7909'


When the above error occurs, you must check the following.


1) Check that you can view the wsdl URL using a browser
  • If the WSDL URL is not accessible then the server hosting the web service is unavailable. 
  • Check if you are blocked by any firewall rules.
  • You can use the following command in UNIX to get the wsdl file
    • wget -O google-wget.txt http://www.google.com 
    • cat google-wget.txt
 2) If the WSDL URL is accessible via Browser then check the connectivity to the external server from the server where Web service client is hosted.
  • Try ping the external server to check whether able to reach the server in the network
    • ping <external_server_host_name></external_server_host_name>
  • If the ping is not working, check that hosting server is on the network
  • Check if there is any firewall rule set to blocking the network traffic from the calling server
  • Telnet to the external server to check whether the Connection to the server is established properly
    • telnet <external_server_host_name> <port_number></port_number></external_server_host_name>
  • If telnet fails, check whether the port is opened from the calling server to get a connection to the external server
  • Do  a nslookup for the external server to check whether the DNS server name mappings
    • nslookup 
    • > <external_server_host_name>
  • If the nslookup fails, check the DNS server name mappings are done properly.

JMS Message Destination Error

In this example i am trying to create a Point to Point messaging service. i am using JEE 5 and Glassfish. I encountered the following error message when using annotations.

SEVERE: NAM0007 : Message Destination Reference java:comp/env/jms/p2pQueue has not been linked to a Message Destination
15-Sep-2009 17:02:38 com.sun.enterprise.appclient.MainWithModuleSupport
WARNING: ACC003: Application threw an exception.
javax.naming.NamingException: Message Destination Reference java:comp/env/jms/p2pQueue has not been resolved
at com.sun.enterprise.naming.NamingManagerImpl.bindObjects(NamingManagerImpl.java:521)
at com.sun.enterprise.appclient.AppContainer.preInvoke(AppContainer.java:137)
at com.sun.enterprise.appclient.MainWithModuleSupport.(MainWithModuleSupport.java:383)
at com.sun.enterprise.appclient.MainWithModuleSupport.(MainWithModuleSupport.java:259)
at com.sun.enterprise.appclient.Main.main(Main.java:200)



This is caused by the following incorrect @Resource references.

@Resource(name = "jms/p2pQueue")
private static Queue p2pQueue;
@Resource(name = "jms/QueueConnectionFactory")
private static ConnectionFactory p2pQueueFactory;


The correct annotation should be

@Resource(mappedName = "jms/p2pQueue")
private static Queue p2pQueue;
@Resource(
mappedName = "jms/QueueConnectionFactory")
private static ConnectionFactory p2pQueueFactory;




February 8, 2010

Using Log4j and Streaming the Logs as per instance/file

The following setup can be used to generate a simple logging mechanism which will log the information on a per instance per file basis.

A simple log4j.properties file setup.

 
#### Use two appenders, one instance logs to X another to Y
log4j.logger.X=debug, X
log4j.logger.Y=debug, Y

log4j.appender.X.layout=org.apache.log4j.SimpleLayout
log4j.appender.X=org.apache.log4j.FileAppender
log4j.appender.X.File=exampleX.log

log4j.appender.Y.layout=org.apache.log4j.SimpleLayout
log4j.appender.Y=org.apache.log4j.FileAppender
log4j.appender.Y.File=exampleY.log

A Java code that decides which logger to use.

import java.math.BigDecimal;
import java.text.DecimalFormat;

public class FormatNumber
{    public static void main (String args[])
    {
        BigDecimal b = new BigDecimal("-1232323222.1049");
        BigDecimal c = b.setScale(4,BigDecimal.ROUND_HALF_DOWN);

        DecimalFormat format = new DecimalFormat("#,##0.00");
        String o = format.format(c);

        BigDecimalRounder g = new BigDecimalRounder("-1232323222.1049","Y");
        c = g.roundUpToScale(2, BigDecimal.ROUND_HALF_UP);
    }
}

import java.math.BigDecimal;
import java.util.Enumeration;
import org.apache.log4j.Appender;
import org.apache.log4j.Logger;

public class BigDecimalRounder extends BigDecimal
{
    private Logger log = null;
    public BigDecimalRounder(String decimal, String name)
    {
        super(decimal);
        log = Logger.getLogger(name);
    }

    public BigDecimal roundUpToScale(int scale, int roundingMode)
    {
        BigDecimal returnDecimal = null;
        if (super.scale() >= scale)
        {
            int j = super.scale();
            while (j >= scale)
            {
                returnDecimal = super.setScale(j, roundingMode);
                log.debug("log to file: " + returnDecimal.toString());
                j--;
            }
        }
        return returnDecimal;
    }
}



June 24, 2009

Temporary Tablespaces

What are Temporary Tablespaces: (reference: http://www.orafaq.com/node/2)

Temporary tablespaces are used to manage space for database sort operations and for storing global temporary tables. For example, if you join two large tables, and Oracle cannot do the sort in memory (see SORT_AREA_SIZE initialisation parameter), space will be allocated in a temporary tablespace for doing the sort operation. Other SQL operations that might require disk sorting are: CREATE INDEX, ANALYZE, Select DISTINCT, ORDER BY, GROUP BY, UNION, INTERSECT, MINUS, Sort-Merge joins, etc.

The DBA should assign a temporary tablespace to each user in the database to prevent them from allocating sort space in the SYSTEM tablespace. This can be done with one of the following commands:

SQL> CREATE USER scott DEFAULT TABLESPACE data TEMPORARY TABLESPACE temp;
SQL> ALTER USER scott TEMPORARY TABLESPACE temp;

Note that a temporary tablespace cannot contain permanent objects and therefore doesn't need to be backed up.

What are TEMPFILES?

Unlike normal data files, TEMPFILEs are not fully initialised (sparse). When you create a TEMPFILE, Oracle only writes to the header and last block of the file. This is why it is much quicker to create a TEMPFILE than to create a normal database file.

TEMPFILEs are not recorded in the database's control file. This implies that one can just recreate them whenever you restore the database, or after deleting them by accident. This opens interesting possibilities like having different TEMPFILE configurations between permanent and standby databases, or configure TEMPFILEs to be local instead of shared in a RAC environment.

One cannot remove datafiles from a tablespace until you drop the entire tablespace. However, one can remove a TEMPFILE from a database. Look at his example:

SQL> ALTER DATABASE TEMPFILE '/oradata/temp02.dbf' DROP INCLUDING DATAFILES;

If you remove all tempfiles from a temporary tablespace, you may encounter error: ORA-25153: Temporary Tablespace is Empty. Use the following statement to add a TEMPFILE to a temporary tablespace:

SQL> ALTER TABLESPACE temp ADD TEMPFILE '/oradata/temp03.dbf' SIZE 100M;

Except for adding a tempfile, as illustrated in the above example, you cannot use the ALTER TABLESPACE statement for a locally managed temporary tablespace (operations like rename, set to read only, recover, etc. will fail).

How does one create Temporary Tablespaces?

Oracle provides various ways of creating TEMPORARY tablespaces (mainly to provide backward compatibility). One should use the most recent method available:

- Prior to Oracle 7.3 - CREATE TABLESPACE temp DATAFILE ...;
- Oracle 7.3 & 8.0 - CREATE TABLESPACE temp DATAFILE ... TEMPORARY;
- Oracle 8i and above - CREATE TEMPORARY TABLESPACE temp TEMPFILE ...;

Oracle 8i and 9i example:

SQL> CREATE TEMPORARY TABLESPACE temp
TEMPFILE '/oradata/mytemp_01.tmp' SIZE 20M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 16M;

For best performance, the UNIFORM SIZE must be a multiple of the SORT_AREA_SIZE parameter.

Oracle 9i example using OMF (Oracle Managed Files):

SQL> CREATE TEMPORARY TABLESPACE temp;

Default Temporary Tablespaces:

In Oracle 9i and above, one can define a Default Temporary Tablespace at database creation time, or by issuing an "ALTER DATABASE" statement:

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp;

The default Default Temporary Tablespace is SYSTEM. Each database can be assigned one and only one Default Temporary Tablespace. Using this feature, a Temporary Tablespace is automatically assigned to users. The following restrictions apply to default temporary tablespaces:

- The Default Temporary Tablespace must be of type TEMPORARY
- The DEFAULT TEMPORARY TABLESPACE cannot be taken off-line
- The DEFAULT TEMPORARY TABLESPACE cannot be dropped until you create another one.

To see the default temporary tablespace for a database, execute the following query:

SQL> SELECT * FROM DATABASE_PROPERTIES where PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';

All new users that are not explicitly assigned a TEMPORARY TABLESPACE, will get the Default Temporary Tablespace as its TEMPORARY TABLESPACE. Also, when you assign a TEMPORARY tablespace to a user, Oracle will not change this value next time you change the Default Temporary Tablespace for the database.

Other Considerations:

Some performance considerations for temporary tablespaces:

- Always use temporary tablespaces instead of permanent content tablespaces for sorting (no logging and uses one large sort segment to reduce recursive SQL and ST space management enqueue contention).
- Ensure that you create your temporary tablespaces as locally managed instead of dictionary managed (Use sort space bitmap instead of sys.fet$ and sys.uet$ for allocating space).
- Always use TEMPFILEs instead of DATAFILEs (reduce backup and recovery time + other advantages as described above)
- Stripe your temporary tablespaces over multiple disks to alleviate possible disk contention and to speed-up sorting operations (user processes can read/write to it directly).

Monitoring Temporary Tablespaces and Sorting:

Unlike datafiles, tempfiles are not listed in V$DATAFILE and DBA_DATA_FILES. Use V$TEMPFILE and DBA_TEMP_FILES instead.

One can monitor temporary segments from V$SORT_SEGMENT and V$SORT_USAGE

DBA_FREE_SPACE does not record free space for temporary tablespaces. Use V$TEMP_SPACE_HEADER instead:

SQL> select TABLESPACE_NAME, BYTES_USED, BYTES_FREE from V$TEMP_SPACE_HEADER;

TABLESPACE_NAME BYTES_USED BYTES_FREE
------------------------------ ---------- ----------
TEMP 52428800 52428800

SQL> select sum(free_blocks) from V$SORT_SEGMENT where tablespace_name = 'TEMP';
SQL> select inst_id, tablespace_name, total_blocks, used_blocks, free_blocks
from gv$sort_segment;

June 12, 2009

Good Design Thoughts


1. Encapsulate what varies --> identify the sections that vary and separate them from what stays the same
2. Favour composition over inheritance --> use "has-a" it is better than "is-a"
3. program to interface not implementations
4. Strive for loosely coupled designs between objects that interact (think mediator/observer)
5. Classes should be open for extension but closed for modification (think decorator pattern wrap around to extend)
6. Depend on abstracts not on concrete classes (an example would be factory method)
7. only talk to your friends (avoid having large number of classes coupled together)
8. dont call us, we will call you (template method - let superclass re-direct to subclasses)
9. A class should have only 1 reason to change

Inheritance vs Aggregation vs Composition


Inheritance - "Is A" Strongest Relationship

We depend on the functionalities of a Super Class

Aggregation - "Has A / Is Part Of" - Weaker Relationship

As shown in the example Aggregation occurs when the part of outlives the whole. e.g the listener instance could be alive even after WebServer instance is garbage collected


Aggregation Example ("has a"):



Composition - "Uses A" - Stronger Relationship

In a composition relationship the listener instance lifespan lasts till the WebServer instance is garbage collected.


Composition Example ("uses a"):







WSDL Styles Samples

==============================================
RPC LITERAL
==============================================








==============================================
RPC ENCODED
==============================================









==============================================
DOCUMENT LITERAL
==============================================












June 5, 2009

WSDL Styles

There are 5 types of WSDL styles.
  • RPC/Literal
  • RPC/Encoded
  • Document/Literal
  • Document/Encoded
  • Document Literal Wrapped Mode
Irrespective of the style differences, it can be applied to any technology.




WSDL Styles

Advantage

Disadvantage

RPC/Encoded

The WSDL is simple and straightforward

The operation name appears in the message, so the receiver has an easy time dispatching this message to the implementation of the operation.

The type encoding info (such as xsi:type="xsd:int") is usually just overhead which degrades throughput performance.

Message cannot be easily validated as very few lines contain things defined in a schema; the rest of the soap:body contents comes from WSDL definition

RPC/encoded is not WS-I compliant.

RPC/Literal

The WSDL is still simple and straightforward

The operation name still appears in the message.

The type encoding info is eliminated.

RPC/literal is WS-I compliant.

Message cannot be easily validated as very few lines contain things defined in a schema; the rest of the soap:body contents comes from WSDL definition

Document/Encoded

NIL

Nobody follows this style. It is not WS-I compliant

Dcoument/Literal

There is no type encoding info.

Message can be validated with any XML validator. Everything within the soap:body is defined in a schema.

Document/literal is WS-I compliant,

The WSDL is getting a bit more complicated.It is not easily understood by humans

The operation name in the
SOAP message is lost. Without the name, dispatching can be difficult, and sometimes impossible.

WS-I only allows one child of the soap:body in a
SOAP message.

Document/Literal Wrapped Mode

There is no type encoding info.

Everything that appears in the soap:body is defined by the schema,
Message can be validated with any XML validator.

Once again, you have the method name in the
SOAP message.

Document/literal is WS-I compliant, and the wrapped pattern meets the WS-I restriction that the
SOAP message's soap:body has only one child.

The WSDL is even more complicated.

Reference: http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/

April 14, 2009

What is Multi Factor Authentication (MFA)

Multifactor authentication (MFA) is a security system in which more than one form of authentication is implemented to verify the legitimacy of a transaction. In contrast, single factor authentication (SFA) involves only a user ID and password.

In two-factor authentication, the user provides dual means of identification, one of which is typically a physical token, such as a card, and the other of which is typically something memorized, such as a security code.

Additional authentication methods that can be used in MFA include biometric verification such as fingerscanning, iris recognition, facial recognition and voice ID. In addition to these methods, smart cards and other electronic devices can be used along with the traditional user ID and password.

April 4, 2009

Handling Different timezones in distributed environment

This was a captivating discussion on how timezones in distributed environment should be handled. There are a couple of good strategies recommended.

Scenario:
Having db server in different time zone and process server / engine, which is going to run lively like auctions/bidding in different time zone.

Recommended Solution

Store dates in GMT format and format them as required at the various endpoints.
  • User prefered timezone - used whenever date displayed to user, entered by user and validated.
  • User machine timezone - could be used to determine user preferred timezone and local logging in case of rich client
  • Server timezone - used for local logging
  • Database timezone - should be irrelevant.
  • Common timezone (GMT normally but it does not really matter) - used for dates stored in database, interserver communication, centralized logging, etc)

September 17, 2008

Unix Processes

Below are some of the common unix commands that can be used to list the processes and cpu usage.

ps -ef |less
  • list all running process (-e)
  • full details (-f)
  • page by page (| less)
top
  • list top 15 cpu intensive processes
  • -o option sorts the information by cpu, time, res
prstat -avm
  • reports active process statistics
  • all process (-a)
  • -m report microstate process information

September 15, 2008

WinZip Open Source alternative

If you ever needed an alternative tool for WinZip or WinRar, try 7-Zip.
  • High compression ratio in new 7z format with LZMA compression
  • Supported formats:
    • Packing / unpacking: 7z, ZIP, GZIP, BZIP2 and TAR
    • Unpacking only: RAR, CAB, ISO, ARJ, LZH, CHM, MSI, WIM, Z, CPIO, RPM, DEB and NSIS
  • For ZIP and GZIP formats, 7-Zip provides a compression ratio that is 2-10 % better than the ratio provided by PKZip and WinZip
  • Strong AES-256 encryption in 7z and ZIP formats
  • Self-extracting capability for 7z format
http://www.7-zip.org/download.html

September 12, 2008

Dynamic DNS

This free service from DynDNS allows you to create a hostname that binds to your Dynamic IP or Static IP. Best of All the Service is Absolutely free.. Check it out soon..

http://www.dyndns.com/services/dns/dyndns/

September 9, 2008

Java Collections Quick Lookup


Class

Map

Set

List

Ordered

Sorted

HashMap

x



No

No

HashTable

x



No

No

TreeMap

x



Sorted

By natural order or custom comparison rules

LinkedHashMap

x



By insertion order or last access order

No

HashSet


x


No

No

TreeSet


x


Sorted

By natural order or custom comparison rules

LinkedHashSet


x


By insertion order

No

ArrayList



x

By index

No

Vector



x

By index

No

LinkedList



x

By index

No

PriorityQueue




Sorted

By to-do order