Jump to content
Forumu Destekleyenlere Katılın ×
Paticik Forumları
2000 lerden beri faal olan, çok şukela bir paylaşım platformuyuz. Hoşgeldiniz.

Java Sorularım (Takıldıkça Soru Eklenecek)


Öne çıkan mesajlar

  • 1 ay sonra ...
Mesaj tarihi:
Yani topik açmayıp burdan devam ediyorum, Aslında tam bir java sorunundan ziyade memory sorunu.

Şimdi programım txt dosyalarından unique verileri alıp arraylere atıyor. Bu arrayler string. Sonra onları kendi içinde kıyaslıyor ayrıştırıyor falan.
Dosyalar biraz büyük totalde 300mblık txt dosyaları,
biraz googleadım bakındım falan bi kaç bişey buldum onları sorucam

Heap size ı 1024 yaptım, gene yemiyor. daha üstüne çıkamıyorum
Eclipse Memory Analyzerı kullanarak, beni tüketenin stringler oldugunu görebiliyorum. Tam anlamasamda 168 tane string object üretmişim ve shallow heap e 4032 diyor. Bu daha programın yarısı yani orda patladı.

Aslında, yaklaşık 10 tane array var.

Sonra şeyi gördüm, string kullanmayaın falan diyorlar orda burda.
nedir nedendir?
char mı kullanmam gerek daha mı efişint?
yani string yerine ne kullanabilirim?

bir de,
10x boyutlu 1 array mi yoksa 1x boyutlu 10 array mi daha memory açısından iyidir?
Mesaj tarihi:
Array signature java da sen farketmesende memory address den ibaret. 1 array icin e 10 milyon adam koymakla, 1 elemanli 10 milyon array yaratmak arasinda tabii ki fark var ama senin durumunda dusunmen gereken sey array size lari degil, 't' aninda memory de ne kadar obje/primitive tutmak olmali.

Elinde file system var, parca parca buffer i doldurup yapacaklarini yapip buffer ini bosaltip bastan doldur. O yapacaklarini yapma phase in de yine file system i kullanmaktan cekinme.
Mesaj tarihi:
168 String oldugundan eminmisin? Her bir String in lenght i fezaya vurmus demektir, onun icinde gezmek de iskence olur. Datayi parcala, tek string e delimiter la koyacagina.
Mesaj tarihi:
Bir onerim olacak, her zaman ingilizce yazmayi aliskanlik hale getiriniz, ilerisi icin. Turkce variable class vs naming kullanmayin. 2 kisi ayni seviyede diyelim, dusunmeden ingilizce yazani alirlar. Ingilizce bilmenize de gerek yok zaten az bi ingilizce bilgisi ile olur zaten
Mesaj tarihi:
168 den emi değilim de işte o programda öyle yazıyordu SS koyarım bir ara.

Yaptığım aslında şu

abece|hedede|31311|osmanto diye giden şeylervar. "|" lardan 8 tane var. Bunları stream edip okutuyorum bir array'e.
Sonra bu string arrayin içinde "|"lerin lokasyonlarını bulup, 8 parçaya bölüyorum ve 8 farklı string arraye atıyorum.

bu noktada input aldıgım 4 farklı txt dosyası var, hepsini aynı array içinde devamına gelicek biçimde birleştirmeye çalışıyorum.
Eğer bunu yapmazsam, dediğin gibi 4 ayrı farklı array olursa ve bunların 1 tanesını aynı anda kullanırsam sorun kalkar mı?
Mesaj tarihi:
Evet, elindeki data yi disk e part part yazacak sekilde parcala. Zaten attigin adimlar belli su anda, memory de tutacagina file io yaparsan, heap i catlatmazsin.

Ama tam olarak ne yapmak istedigini, en azindan yapis yolundan anlayamadim. Daha effective bir yolu olsa gerek. Odev vs. ise buraya definition i yazarsan uzerine daha rahat yorum yapabilirim.

Edit: "abece|hedede|31311|osmanto diye giden şeylervar. "|" lardan 8 tane var. Bunları stream edip okutuyorum bir array'e. "

Stream edip okutuyorum dedigin, komple 300 mb lik dosyadaki her line da '|' delimeter olan adamlari memory ye aliyorum diyorsan, seni catlatan bu.

Eline BufferedRead al, line line oku, elinde her koydugun unique olan bi Collection tut, buna pasla. Burdaki trick, bir sonraki line i file dan okumadan yuruttugun logic in bitmis olmasi.

Baktinki, unique adamlari tutan collection sisti fezaya gitti, bu noktada file system e bu collection i cache le, onun uzerinden iterate et.
Mesaj tarihi:
oo güzel şeyler, tamamdır deniyorum en yakın zamanda.

şu anda tüm dosyayı arraye bufferlayıp sonra işlem yapıyorum, onu değiştireyim. Sonra diğer dediklerini yaparım.


o da olmazsa, stringi ufaltmanın yolları varmış onları buldum googledan onu denicem.

Çok saolasın
( bu arada kodu kopyalarım bi ara, ödev değilde hobi birazda iş benimkisi )
Mesaj tarihi:
önerdiğiniz gibi parçalara böldüm, tabi bölünce başka bir sorunla kaşılaştım,

iki tane string arrayim var, ikisinin içinde de stringler var. Bir çeşit v lookup gibi, ilkinin içinde var olan ikincide varsa bişiler yap diyorum.

şöyle yaptım. Hızlı olsun diye equals kullandım.
Şu şekil


for(int p=1;p<FirstCount;p++){

for(int q=1;q<SecondCount;q++){

if(FirstArray[q].equals(SecondArray[p])
{
falan fıstık
}
}
}


ama bu yavaş. Yani, saatler sürecek bu gidişle. Daha hızlı nasıl yapabilirim?
Mappingle ilgili bir şeyler duydum ama baştan yazmama gerekicek sanırım herşeyi, öyle mi?
Daha farklı bir search olayı var mı? belki daha hızlı bi eşleşme sistemi olan bişi vardır.

helpp
Mesaj tarihi:
Yok, array doldurmayacaktin hani.

BufferedReader ile readLine yapacaktin, o line daki adamlari delimite edip her bir string icin sadece unique string leri tuttugun bir Collection icine yazacaktin.

Array iteration her zaman costly dir, index mantigi olmadigi icin butun elemanlarin icersinde iterate etmen gerekir.

Bunu bir incele, performans icin.

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/HashSet.html

HashSet de ise icine data koyarkan costly operation yaparken, contains(Object obj) gibi normal de costly olmasini bekledigin bir operation gayet hizli olacaktir.

Madem incrementing read yapmayacaksin, iteration yerine Collection.contains kullanmaya bak, performans artisi olacaktir.

Mapping den kastin, large data map reduce etc. gibi seylerse bulasma simdilik.
Mesaj tarihi:
baktım onlara bugün, yalnız bir sıkıntım var onlarla ilgili.

Hashset epey hızlı ama unique olmayan değerleri sırasız atıyor içine.
Linkedhashsette de sıra var ama gene aynı değerleri siliyor.

Yapmak istediğim, tam olarak şu.
2 txt dosyam var.
1. dosyam böyle

İsim Soyisim Cinsiyet
osman hamdi erkek


2. dosyam böyle
İsim Boy Kilo
osman 1.80 95

ikisinide okutup, eğer 2. dosyada osman ismine rastlarsam boy ve kilo ( collection, array artık her neyse ) yerine 1. osman'a denk düşecek bir şekilde sıralamak.
Array veya arraylistten kaçışım yok gibi duruyor yanılıyor muyum?
bunu hashsette yapabilir miyim?
Mesaj tarihi:
hm, iyice dağıtmaya karar verdim. Çünkü zaten tek bi export alma imkanım yok.

İşlemleri hashsette yapıp ayıkladıklarımı array'e atıp orda eşlicem (baya parçalanmış olacak).

collection fikri için tenks =)
  • 2 hafta sonra ...
Mesaj tarihi:
APACHE POI ile

(a,b) büyüklügünde bir matrix seklinde excel nasil yaratiyoruz ?

Bu excel apiler beni yordu.


A tane row
B tane column olsun ben icini gene A,B buyuklugundeki string elemanlardan olan matrixle doldurayim.


Strgin[][] matrixi apache poi ile excele yazmak istiyorum yani...
Mesaj tarihi:
Sadete gel sen ^^

direk bana a ve b dimensionlu bir matrix yaratin ya poi ile pls ^^ her turlu aptal saptal seyi hallettim sadece topladigim bilgileri matrixe aticam ama mala bagladim surekli tek tek row ve cell yaratiyorum komplett hepsini olusturamiyor muyuz ?


Cok fazla da apache poi tutoriali bulamadim ise yarayan.
Mesaj tarihi:
şey lazım bana
baum yapmam gerek
boolsche formeln diye abschlussaufgabem var


şu şekil outputu olan bi program yazmam gerek


bool> and v1 v2
#0 = (v1 and v2)
bool> or #0 false
#1 = ((v1 and v2) or false)
bool> simplify #1
#2 = (v1 and v2)
bool> show #1
#1 = ((v1 and v2) or false)
bool> not v3
#3 = (not v3)
bool> subst #1 v2 #3
#4 = ((v1 and (not v3)) or false)
bool> subst #4 v1 true
#5 = ((true and (not v3)) or false)
bool> simplify #5
#6 = (not v3)
bool> list
#0 = (v1 and v2)
#1 = ((v1 and v2) or false)
#2 = (v1 and v2)
#3 = (not v3)
#4 = ((v1 and (not v3)) or false)
#5 = ((true and (not v3)) or false)
#6 = (not v3)



tree kullanın öyle yaratın demişler treelere başladım şimdi okumaya etmeye de el atabilicek var mı? treelerden elimden tutuvericek
Mesaj tarihi:
Benide bir sorum olacak. Bir Webservice icin Interface programliyorum. bu WebService ilerde bir sekilde update edilecektir. Simdi diyelim ki bu Webservice 1.3 verisonu olsun benim interface'imde 1.3 uygun olsun. ilerde 1.4 olacak. benimde dogal olarak ona uygun programlamam lazim. Tabiki benim interface'im 1.3 ayni zamanda uyumlu olmasi lazim. Bu Version gecislerini en temiz nasil yapabilirim. Her version icin ayri bir Lib yapilabilir. ama belki daha güzel bir cözüm vardir.
Mesaj tarihi:
Suark said:

galiba anlamadım ama ihtiyacın olan şey switch case deil mi? if te kullabilirsin tabi elseif elsif


abi yok tree structurela bi boolean case gibi bişey oluşturucam
uzun bişey ya v1 and true yazınca filan ona göre ayarlıyıcak o v2 yapıcak vs
×
×
  • Yeni Oluştur...