Bilinmesi Gereken Konular
Gönderilme zamanı: 14 Ara 2022, 09:56
Bilinmesi gereken bazı konuları rastladıkça buraya ekleyeceğim.
● Snapshot Versiyon Nedir?
https://stackoverflow.com/questions/590 ... we-need-it
JAVA
● Java ile kodlama yaparken tipini bilmediğimiz bazı text verileri ondalıklı sayı olarak görüp double'a çevirebileceğimizi düşünebiliriz. Ancak baktığımız veriler double'a çevrilebilir gibi görünse de görmemiş olduğumuz bazı veriler başka formatta olabilir. Örneğin bazı veriler hesap makinelerindeki gibi bilimsel gösterim ile tutuluyor olabilir. Örneğin 9.0122222900391E-5 şeklinde tutulan bir veri 9.0122222900391×10^-5 anlamına gelir.
şeklinde veriyi alabilir veya
şeklinde double'a çevirebiliriz.
● Yukarıdaki maddedeki bilgiyi kullandığımız bir durumla ilgili kod yazalım. Bize "0.98123\-0.01\0.012E-4\0.00232\-0.002789\-0.989" gibi bir veri gelmiş olsun. Bu string'deki sayılara en yakın tamsayıların "1, 0, 0, 0, 0, -1" dizisiyle uyuşup uyuşmadığına bakalım.
Basit bir görünüm için hata kontrollerini çıkarıyorum.
● Elimizde String tipinde bir path olsun. Bunu bir diziye herhangi bir şekilde bölmek istediğimizde String değişkenimize ait split() metoduyla karşılaşırız. Ancak bu metot regex parametre alır. Örneğin normalde "C:\\bir\\dosya\\yolu\\" şeklinde bir path'imiz varsa bunu parametre olarak "C:\\\\bir\\\\dosya\\\\yolu\\\\" şeklinde yazmamız gerekir. Bunu yapmadan aşağıdaki şekilde çözebiliriz.
veya bir dizini alt klasörlerine diziye ayırmak için platform bağımsız şu satırı kullanabiliriz:
● Listede filtreleme işlemi yapmak istiyoruz. Bir araba sınıfımız olsun ve hızı 150'den büyük olanları bir listeye atalım.
Araba.java
Main.java
veya metod yazma gibi bir imkanımız yoksa filter satırını aşağıdaki gibi lambda expression ile yazabiliriz.
● Bir obje listesinden objenin sadece bir alanından oluşan bir liste oluşturmak istiyorsak map kullanırız. Yukarıdaki Araba.java'yı kullanalım ve yeni bir main sınıfı yazalım. Araba sınıfının sadece isimlerini içeren bir String listesi oluşturalım.
Main.java
● instanceof keyword'ü: Bir objenin bir sınıfın örneği olup olmadığını kontrol etmek için kullanılır.
Örneğin Canlı sınıfından implement edilmiş Hayvan ve Bitki sınıflarınız var.
https://www.javatpoint.com/downcasting- ... f-operator
● Log seviyeleri bir üsttekileri de içerecek şekildedir. Örneğin WARN seçildiyse WARN, ERROR, FATAL log'ları basılır
TRACE
DEBUG
INFO
WARN
ERROR
FATAL
https://sematext.com/blog/logging-levels/
● Boolean obje tipindeki değişkenleri şu şekilde basitçe kontrol edebiliriz. NullPointerException almayız:
MAVEN
● Ekip olarak çalışırken yeni versiyon çıkılmadan bir kütüphane deploy edildiğinde sorun yaşayabilirsiniz. Kullandığınız bir dependency'nin versiyonu aynen olması gerektiği gibi. Ama bazı metotlar hata veriyor. Başka bilgisayarda çalışıyor, sizin bilgisayarınızda çalışmıyor.
Siz bir 1.2.3-X5 versiyonu build almış olabilirsiniz, başkası da bir 1.2.3-X5 versiyonu build almış olabilir. İkisi merge alınmış, deploy edilmiş ve uzak makinede var. Ancak sizin bilgisayarınızda sadece sizin önceden oluşturduğunuz build var. clean install yapmanıza rağmen sorun çözülmüyor. Bu durumda ben m2 klasöründeki 1.2.3-X5 versiyonunu siliyorum. Ardından (IntelliJ üzerinde) File/Invalide Caches/Invalidate and Restart'a tıklıyorum. Tekrar açıldığında 1.2.3-X5 versiyonu uzak makineden çekiliyor ve sorunsuz çalışıyor.
Nerede Maven'ın bu m2 dosyası?
Windows için %homepath%\.m2 klasöründe (Örnek: C:\Users\kullanici\.m2)
Linux için $HOME/.m2 klasöründe (Örnek: /home/kullanici/.m2)
Dosyanın m2'den sonraki yolu şöyle olacaktır: m2\repository\my\company\mysomething\1.2.3-X5
● Snapshot Versiyon Nedir?
https://stackoverflow.com/questions/590 ... we-need-it
JAVA
● Java ile kodlama yaparken tipini bilmediğimiz bazı text verileri ondalıklı sayı olarak görüp double'a çevirebileceğimizi düşünebiliriz. Ancak baktığımız veriler double'a çevrilebilir gibi görünse de görmemiş olduğumuz bazı veriler başka formatta olabilir. Örneğin bazı veriler hesap makinelerindeki gibi bilimsel gösterim ile tutuluyor olabilir. Örneğin 9.0122222900391E-5 şeklinde tutulan bir veri 9.0122222900391×10^-5 anlamına gelir.
Kod: Tümünü seç
BigDecimal bd = new BigDecimal("9.0122222900391E-5");
Kod: Tümünü seç
double d = new BigDecimal(coordinate).doubleValue();
● Yukarıdaki maddedeki bilgiyi kullandığımız bir durumla ilgili kod yazalım. Bize "0.98123\-0.01\0.012E-4\0.00232\-0.002789\-0.989" gibi bir veri gelmiş olsun. Bu string'deki sayılara en yakın tamsayıların "1, 0, 0, 0, 0, -1" dizisiyle uyuşup uyuşmadığına bakalım.
Basit bir görünüm için hata kontrollerini çıkarıyorum.
Kod: Tümünü seç
String gelenVeri = "0.98123\-0.01\0.012E-4\0.00232\-0.002789\-0.989";
List<Integer> kiyaslanacakListe= Arrays.asList(1, 0, 0, 0, 0, -1);
String[] ayrilmisVeri= gelenVeri.split("\\\\");
List<Integer> ayrilmisIntegerVeriListe = new ArrayList<>();
for (String veri : ayrilmisVeri){
double d = new BigDecimal(veri).doubleValue();
int i = (int) Math.round(d);
ayrilmisIntegerVeriListe.add(i);
}
boolean ayrilmisIntegerVeriListe.equals(kiyaslanacakListe);
Kod: Tümünü seç
String pathStr = "C:\\bir\\dosya\\yolu\\klasor";
String bolunecekPath = "C:\\bir\\dosya\\yolu\\";
String[] bolunmusDizinler = pathStr.split(Pattern.quote(bolunecekPath));
Kod: Tümünü seç
String[] subDirs = pathStr.split(Pattern.quote(File.separator));
● Listede filtreleme işlemi yapmak istiyoruz. Bir araba sınıfımız olsun ve hızı 150'den büyük olanları bir listeye atalım.
Araba.java
Kod: Tümünü seç
public class Araba{
private String isim;
private int hiz;
Araba(String isim, int hiz){
this.isim = isim;
this.hiz = hiz;
}
public int getHiz(){
return this.hiz;
}
public String getIsim(){
return this.isim;
}
public boolean hizi150denBuyukMu() {
return this.hiz > 150;
}
}
Kod: Tümünü seç
import java.util.List;
import java.util.Arrays;
import java.util.stream.Collectors;
public class Main
import java.util.List;
import java.util.Arrays;
import java.util.stream.Collectors;
public class Main
{
public static void main(String[] args) {
Araba togg = new Araba("TOGG", 180);
Araba devrim = new Araba("DEVRİM", 140);
List<Araba> arabalar = Arrays.asList(togg, devrim);
List<Araba> hizi150denBuyukArabalar = arabalar
.stream()
.filter(Araba::hizi150denBuyukMu)
.collect(Collectors.toList());
for(Araba araba : hizi150denBuyukArabalar){
System.out.println(araba.getIsim() + " " + araba.getHiz());
}
}
}
Kod: Tümünü seç
.filter(araba -> araba.getHiz() > 150)
Main.java
Kod: Tümünü seç
import java.util.List;
import java.util.Arrays;
import java.util.stream.Collectors;
public class Main
{
public static void main(String[] args) {
Araba togg = new Araba("TOGG", 180);
Araba devrim = new Araba("DEVRİM", 140);
List<Araba> arabalar = Arrays.asList(togg, devrim);
List<String> arabalarinIsimleri = arabalar
.stream()
.map(Araba::getIsim)
.collect(Collectors.toList());
for(String arabaIsmi : arabalarinIsimleri){
System.out.println(arabaIsmi);
}
}
}
● instanceof keyword'ü: Bir objenin bir sınıfın örneği olup olmadığını kontrol etmek için kullanılır.
Örneğin Canlı sınıfından implement edilmiş Hayvan ve Bitki sınıflarınız var.
Kod: Tümünü seç
Canlı h = new Hayvan();
Canlı b = new Bitki();
if(h instanceof Hayvan){
// Buraya girer
}
if(b instanceof Hayvan){
// Buraya girmez
}
● Log seviyeleri bir üsttekileri de içerecek şekildedir. Örneğin WARN seçildiyse WARN, ERROR, FATAL log'ları basılır
TRACE
DEBUG
INFO
WARN
ERROR
FATAL
https://sematext.com/blog/logging-levels/
● Boolean obje tipindeki değişkenleri şu şekilde basitçe kontrol edebiliriz. NullPointerException almayız:
Kod: Tümünü seç
if ( Boolean.TRUE.equals(something) ) {
}
● Ekip olarak çalışırken yeni versiyon çıkılmadan bir kütüphane deploy edildiğinde sorun yaşayabilirsiniz. Kullandığınız bir dependency'nin versiyonu aynen olması gerektiği gibi. Ama bazı metotlar hata veriyor. Başka bilgisayarda çalışıyor, sizin bilgisayarınızda çalışmıyor.
Kod: Tümünü seç
<dependency>
<groupId>my.company</groupId>
<artifactId>mysomething</artifactId>
<version>1.2.3-X5</version>
</dependency>
Nerede Maven'ın bu m2 dosyası?
Windows için %homepath%\.m2 klasöründe (Örnek: C:\Users\kullanici\.m2)
Linux için $HOME/.m2 klasöründe (Örnek: /home/kullanici/.m2)
Dosyanın m2'den sonraki yolu şöyle olacaktır: m2\repository\my\company\mysomething\1.2.3-X5