12 Haziran 2017 Pazartesi

WebSocket Endpoint Sınıfı

Giriş
Şu satırı dahil ederiz.
import javax.websocket.CloseReason;
import javax.websocket.Endpoint;
import javax.websocket.EndpointConfig;
import javax.websocket.OnMessage;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
JSR 356 yani Java API for WebSocket ile tanımlı.

Tanımlama
JSR 356 anotasyon veya arayüz kalıtımı yaklaşımlarından birisinin tercih edilmesini istiyor.
Örnek
@ServerEndpoint anotasyonu ile şöyle yaparız.
@ServerEndpoint(value = "/ws/log")
public class LogEndPoint{
...
}
Örnek
Kalıtım ile şöyle yaparız.
public class LogEndPoint extends Endpoint {
...
}
doOnMessage metodu
İmzası şöyle
@OnMessage
public void doOnMessage(String message, Session session);
onClose metodu
İmzası şöyle
@Override
public void onClose(Session session, CloseReason closeReason);
onError metodu
İmzası şöyle
@Override
public void onError(Session session, Throwable throwable);
onOpen metodu
İmzası şöyle
@Override
public void onOpen(Session session, EndpointConfig config);

8 Haziran 2017 Perşembe

ByteArrayInputStream Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.io.ByteArrayInputStream;
InputStream sınıfından kalıtır.

isAvailable metodu
Şöyle yaparız.
int size = = is.available();
read metodu
Şöyle yaparız.
int size = is.available();
byte[] buf = new byte[size];
int len = is.read(buf, 0, size);

7 Haziran 2017 Çarşamba

DataInputStream Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.io.DataInputStream;
Bu sınıf sadece BigEndian okuyabilir. C# dilindeki BinaryReader sınıfına benzer.

constructor
socket stream'ini sarmalarız.
DataInputStream din = new DataInputStream(socket.getInputStream());
FileStream nesnesini sarmalarız.
try (DataInputStream input = new DataInputStream(new FileInputStream("a.dat"));
    ) {
  ...
}
readDouble metodu
Şöyle yaparız.
double ans = din.readDouble();
readFully metodu
Eğer okunacak byte sayısı biliniyorsa, döngü kurmaya gerek kalmadan okuma yapmak mümkün.
Belirtilen dizi büyüklüğü kadar veri okur.
int recordIntLen = din.readInt();
byte[] record = new byte[recordIntLen - 4];
din.readFully(record);
readFully metody - offset 
Şöyle yaparız.
din.readFully(record, 1, 128); //blocks until 128 bytes are read from the socket
readInt metodu
Şöyle yaparız.
int msgIntLen = din.readInt();
readLong metodu
Şöyle yaparız.
long fileSize = din.readLong();
readUnsignedByte metodu
Şöyle yaparız.
int id = din.readUnsignedByte();
readUTF metodu
Şöyle yaparız.
String stringUTF = din.readUTF();


5 Haziran 2017 Pazartesi

LinkedHashSet Sınıfı

Giriş
Şu satırı dahil ederiz.
import java.util.LinkedHashSet;
Açıklaması şöyle
Provides a predictable order of enumeration.

Sınıfımın şu metodları gerçekleştirmesi gerekir.
class Point
{
  public boolean equals(Object p)
  {...}

  public int hashCode()
  {...}
}
Equals metodunun imzası şöyledir ve buna dikkat etmek gerekir.
public boolean equals(Object obj)
Şöyle değildir.
public boolean equals(Point obj)
constructor
Şöyle yaparız.
Set<String> set = new LinkedHashSet<String>();
add metodu
Şöyle yaparız.
set.add("1");
contains metodu
Şöyle yaparız.
String y=...;
set.contains (y);

3 Haziran 2017 Cumartesi

Bean Validation @NotNull Anotasyonu

Giriş
Şu satırı dahil ederiz.
import javax.validation.Valid;
import javax.validation.constraints.NotNull;
constructor
Şöyle yaparız.
@NotNull
@Size(min=2, max=20)
private String lastname;
message Alanı
Şöyle yaparız
@NotNull(message = "First Name cannot be null")
private String firstName;
Spring ile kullanırken şöyle yaparız.
@RequestMapping(value = "/addUser", method = RequestMethod.POST)
public String addUser(@Valid User user, BindingResult result) {

  if (result.hasErrors()) {
    return "errorPage";
  } else {
    return "Done";
  }
}