11 Ekim 2012 Perşembe

EnumMap nedir? EnumMap Kullanımı

EnumMap JDK 5 sürümüyle gelen bir özellik. Diger Map'ler gibi işlemekte fakat key olarak enum değer almaktadır.
.equals() ve .hashCode() metodlarını override edebiliyorsunuz.

Enummap'in önemli noktaları :
1) kullanılan bütün keyler aynı enum tipinde olmalı
2) Null bir enum key ekleyemezsin, buna izin vermez ve NullPointerException fırlatır.  fakat null value ekleyebilirsin.
3) EnumMap synchronized değildir. manuel olarak synchronized edilmesi gerekmektedir, istenildiği takdirde.
4) Eğer datanız enum tipinde ise EnumMap kullanmanız performans açısından HashMap kullanmaktan daha iyi sonuç verecekir.

Java'da EnumMap nasıl kullanılır


import java.util.EnumMap;
import java.util.Iterator;

/**
 * Java program to demonstrate How to use EnumMap in Java
 * If Key Object is Enum than it’s best to EnumMap to get better performance.
 * Most of IDE like Netbeans and Eclipse suggest you to use EnumMap instead of HashMap
 * or any other Map implementation when key object is Enum.
 *
 * @author Javarevisited
 */

public class EnumMapExample{

    public enum STATE{
        NEW, RUNNING, WAITING, FINISHED;
    }

    public static void main(String args[]) {
    
        // Java EnumMap Ornek 1: STATE enum tipinde, key'le enumMap yaratma
        EnumMap stateMap = new EnumMap(STATE.class);
    
        // Java EnumMap Örnek 2:
        //EnumMap'in içine degerleri yerleştirme
        //Girilen sıralamadan farklı olarak enum key'leri ekliyoruz. Sıralama "  NEW, RUNNING, WAITING, FINISHED"
    // yukarıda girilen sıranın bir önemi yok
        stateMap.put(STATE.RUNNING, "Program is running");
        stateMap.put(STATE.WAITING, "Program is waiting");
        stateMap.put(STATE.NEW, "Program has just created");
        stateMap.put(STATE.FINISHED, "Program has finished");
    
        // Java EnumMap Örnek 3:
        //EnumMap'in boyutunu yazdırma
        System.out.println("EnumMap'in boyutu: " + stateMap.size());
    
        // Java EnumMap Örnek 4:
        //İlk tanımlanan sıralamayla gelecek şekilde enum değerleri yazdırmak
        System.out.println("EnumMap: " + stateMap);
    
        // Java EnumMap Örnek 5:
        //Map'ten değer (value) almak
        System.out.println("EnumMap key : " + STATE.NEW +" value: " + stateMap.get(STATE.NEW));
    
        // Java EnumMap Örnek 6:
        //Iteratokullanma
        Iterator enumKeySet = stateMap.keySet().iterator();
        while(enumKeySet.hasNext()){
            STATE currentState = enumKeySet.next();
            System.out.println("key : " + currentState + " value : " + stateMap.get(currentState));
        }
    
        //Java EnumMap Örnek 7:
    //EnumMap'in verilen anahyatı içerip içermediği kontrol ediliyor
        System.out.println("State bu key'e sahip mi :" + STATE.NEW + " : "
                            +  stateMap.containsKey(STATE.NEW));
    
        //Java EnumMap Example 8: Verilen değer'e (value) sahip mi?
        System.out.println("Değer var mı :" + STATE.NEW + " : " + stateMap.containsValue(null));

    }

}


Çıktı:
Örnek 3 : 
EnumMap'in boyutu: 4

Örnek 4 : 
EnumMap: {NEW=Program has just created, RUNNING=Program is running, WAITING=Program is waiting, FINISHED=Program has finished}

Örnek 5 : 
EnumMap key : NEW value: Program has just created

Örnek 6 : 
key : NEW value : Program has just created
key : RUNNING value : Program is running
key : WAITING value : Program is waiting
key : FINISHED value : Program has finished

Örnek 7 :
State bu key'e sahip mi  :NEW : true

Örnek 8 :
Değer var mı :NEW : false

------
kaynak : http://javarevisited.blogspot.sg

8 Ekim 2012 Pazartesi

Ubuntu'dan postgresql-8.4'ü tamamen kaldırmak

remove komutu postgresql sistemdem tamamen kaldırmıyor.
Bu yüzen şöyle bir yol izlemem gerekti;

sudo apt-get --purge remove postgresql-8.4 postgresql-client-8.4 postgresql-contrib-8.4

 eğer hangi dosyaları kaldıracağınızı bilmiyorsanız
sudo apt-get --purge remove postgresql-* da diyebilirsiniz.

devamında ise, postgres'in kurulduğu dizinlerideki dosyları da silelim. Aslında diğer versiyonlar için de aynı yolu izleyebilirsiniz

sudo rm -rf /var/lib/postgresql/ 
sudo rm -rf /etc/postgresql/
sudo rm -rf /var/log/postgresql/

Ubuntu 12.04'te postgresql yüklemek

Postgres bütün işletim sistemlerinde (Linux, UNIX (AIX, BSD, HP-UX, SGI IRIX, Mac OS X, Solaris, Tru64) çalışan bir veritabanı sistemidir.
ayrıca bütün program dilleri (C/C++, Java, .Net, Perl, Python, Ruby, Tcl, ODBC, ve digerleri) için de bir arayüze sahiptir.

postgresql yüklemek (install) etmek için :

son versiyon için;
sudo apt-get install postgresql postgresql-client postgresql-client-common postgresql-common  postgresql-contrib

herhangi bir versiyonu yüklemek istiyorsanız;
sudo apt-get install postgresql-8.4 postgresql-client-8.4  postgresql-contrib-8.4

Ben 8.4 versiyonunu kuracağım için 8.4 üzerinden anlatacağım;

Ubuntu kullandığım için postgres'i "/etc/" altına kuruyor. Ve ".conf" dosyalarını "/etc/postgresql/8.4/main/" altında bulabiliriz.

.conf uzantılı dosyaları açmak için ise terminal'den "sudo gedit /etc/postgresql/8.4/main/postgresql.conf" komutunu kullanabiliriz. Buradaki gedit text program adıdır.
user oluşturmak için :

sudo su postgres -c psql template1
postgres=# ALTER USER postgres WITH PASSWORD 'postgres';
postgres=# \q

\q : quit demek

Ubuntudaki postgres kullanıcısının şifresini değiştirmek için, yukarıda girdiğiniz şifreyi giriniz. Bu şifreler aynı zamanda Java'da bulunan *-ds.xml deki ayarlara girilen kullanıcı adı ve şifre ile aynı olmalı :

sudo passwd -d postgres
sudo su postgres -c passwd

Enter new UNIX password:
Retype new UNIX password:

sıra ".conf dosyalarını düzenlemeye geldi.
veritabanınıza ulaşacak kişilere izin vermek için aşağıdaki dosyayı düzenlemeniz gerekmektedir. kimseye bir izin vermeyecekseniz zaten olması gereken değerle default olarak geliyor.
sudo gedit /etc/postgresql/8.4/main/pg_hba.conf

asıl düzenlenmesi gereken dosya aşağıdaki dosyadır. Dosyayı gedit programi ile acabileceğiniz gibi normal yollardan da açabilirsiniz.

sudo gedit /etc/postgresql/8.4/main/postgresql.conf

#listen_addresses = 'localhost'
değerini aşağidaki şekilde değiştirelim, yani # işaretini kaldıralım ki aktif olsun.

listen_addresses = '*'

* = All demek, isterseniz default degeriyle de kalabilir.

bir de

#password_encryption = on
değerini
password_encryption = on

olarak değiştirip kaydedip kapatın.

* yapılan değişikliklerden sonra postgres'i reload etmek için
sudo service postgresql-8.4 reload

* restartetmek için
sudo   service postgresql-8.4 restart
veya
sudo /etc/init.d/postgresql-8.4 restart

pgAdmin III programınızdan yeni vertabanınızı ekleyebilir, restore ve drop edebilirsiniz. Aynı işlemleri terminalden de yapabilirsiniz tabi ki.