23 Ağustos 2012 Perşembe

Google’ın Autocomplete Algoritması ve JSuggestField Bileşeni


Google arama motorunda herhangi bir konuda arama yaparken bize tavsiyeler sunması autocomplete algoritması sayesindedir. Bu algoritma belki de son zamanların en güzel algoritmalarından birisidir.


İşte bu işi yapan Java da bir class vardır. Bu classı kullanmak için  buradan jar dosyasını indirmek gerekiyor.  Daha sonra bu jar dosyasını projemize eklememiz gerekiyor.

                                               
Burada kullanacağımız sınıf JSuggestField classıdır. Onunda kullanımı için aşağıda ki kodlara bir göz atabilirsiniz.
package suggestionjava;

import ch.rakudave.suggest.JSuggestField;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.util.Vector;
import javax.swing.JFrame;

public class SuggestionJava {
    public static void main(String[] args) {
        Vector<String> v=new Vector<>();
        Dimension d=new Dimension(60,20);
        JFrame f=new JFrame();
        v.add("Mesut");
        v.add("Emre");
        v.add("Emirhan");
        v.add("Hüsamettin");
        v.add("İlker");
        v.add("Muhammed");
        JSuggestField sg =new JSuggestField(f);
        sg.setSuggestData(v);
        sg.setPreferredSize(d);
        f.setVisible(true);
        f.setLocationRelativeTo(null);
        f.setSize(200, 100);
        f.setLayout(new FlowLayout());
        f.add(sg);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       
    }
}
Bu classın constructoru gereği içine bir frame ve bir Vector atabiliriz. Ya da sadece Frame de alabiliriz. Biz yalnızca Frame nesnesi alıp daha sonra setSuggestData() metodu ile Vector nesnesi ekledik. Program çalışında karşımıza bir textField gelecek. Netekim bu class JTextField classında türetilmiştir. Pencere ki textField’in en ve boy uzunluğunu ayarlamak için Dimension nesnesinden yararlanılır.  Bu nesne 11. Satırda tanımlanmıştır.
Vector nesnesine gördüğünüz gibi veri ekledik. Daha önceki yazılarımda bu classdan bahsetmiştim. Dinamik bir dizi gibi düşünebiliriz. add() metodu ile bu dinamik diziye eleman ekleyebiliriz. Bu elemanların String nesnesi olması şarttır. Programın görüntüsü aşağıda ki gibidir.

                                                                       

21 Ağustos 2012 Salı

MULTITHREADING


Birçok programlama dili aynı anda hangi işlemlerin yapılacağını programcıya bırakmaz. Fakat bunu düzenlemek için işlemlerin yapılma sırasını yani önce hangisinin sonra hangisinin yapılacağını programcıya bırakır.
Java dili programcılarına bu kolaylığı sağladı. Programcı yazdığı uygulamada iş bölümlemesi yapabilecekti.Multithreading uygulamaların performanslarını ciddi bir biçimde etkileyerek artış sağlar.Şimdi bu konuyu bir örnek üzerinde inceleyelim.

package multithreading;

public class threadyazdir extends Thread{
   
    private int beklemesuresi;

    public threadyazdir(String ad) {
        super(ad);
        beklemesuresi=(int)(Math.random()*6001);//6 saniye
    }

    @Override
    public void run() {
        try {
            System.err.println(getName()+" "+beklemesuresi+" kadar bekleyecek.");
            Thread.sleep(beklemesuresi);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Threadlere isim vererek istediğimizi istediğimiz zaman başlatabiliriz. Başlatmak için start() metodunu kullanmak yeterlidir.