Java 28

학습 // Java // Stream // API

업데이트 :: 2018.09.27 Stream APIStream APIpackage docs.stream; import java.util.*; import java.util.stream.IntStream; /** * # Stream PipeLine * * #리덕션 * - 대량의 데이터를 가공해서 축소 * - 필터링/매핑/정렬/그룹핑등 중간과정이 필요 * * # 스트림 파이브라인 * - 리덕션을 스트림에서 처리 * * # API - 중간처리 * 필터링 * - distinct() :: 중복제거 * - filter() :: 매개값으로 주어진 Predicate가 true를 리턴하는 요소만 필터링 * 매핑 * - flatMapXXX() :: 요소를 대체하는 복수개의 요소들로 구성된 새로운 스트림 리턴 * - fl..

Java/Java 개념 2018.09.27

학습 // Java // Stream // 개념

업데이트 :: 2018.09.27 Stream 개념Stream 개념/** * #Stream * * #Stream의 특징 * - 람다식으로 요소 처리 코드를 제공 * - 내부 반복자를 사용해서 병렬 처리가 쉬움 * - 외부반복자 :: 개발자가 코드로 직접 컬렉션의 요소를 반복하는 것 * - 내부반복자 :: 컬렉션 내부에서 요소들을 반복하는 것 * - 스트림은 중간 처리와 최종처리를 할 수 있음 * */ public class Doc_Stream { public static void main(String[] args) { stream(); elementAOfStream(); elementBOfStream(); elementCOfStream(); } /** * Stream 객체 출력 샘플 * * @date 2..

Java/Java 개념 2018.09.27

Java // 구현 // Client Socket // NIO Blocking

- NIO Blocking으로 구현된 클라이언트 소켓 추상 클래스- "route()" 메소드를 재정의해서 사용해야 합니다.- Singleton 객체로 구현- Queue를 이용해서 다수의 데이터를 동시에 보내도 처리할 수 있도록 구현 public abstract class MySocket { /* Field */ private static MySocket instance; public SocketChannel socketChannel; public Charset charset = Charset.forName("UTF-8"); private Queue postQueue = new LinkedList(); // 전송할 데이터를 담아두는 Queue private int bufferSize; private boo..

Java/Java 구현 2018.08.06

Java // 개념 // byte array <=> char array <=> string // Converting(변환)

업데이트 :: 2018.08.06 01. byte array to string02. string to byte array03. string to char array01. byte array to string바이트단위의 패킷을 전송하고 싶을때byte[] bytes = new byte[]{ 1, 2 }; String data = new String(data, "UTF-8"); data는 2바이트의 크기를 가진 유니코드 스트링02. string to byte arrayString data = getRequest(); // 데이터를 수신했다가정 byte[] bytes = data.getBytes(); 유니코드를 다시 바이트배열(1바이트)로 변환해서 사용03. string to char arrayString da..

Java/Java 개념 2018.08.06

Java // 개념 // Scheduling // Thread & Timer & ScheduledExecutorService

업데이트 :: 2018.08.03 Thread이용방법Timer & TimeTaskScheduledExecutorServiceTimer는 스레드가 기다리는 걸까 ?Thread이용방법Thread.sleep(1000); 다음방법은 간단하지만 프로그램의 성능을 저하 할 수 있음메인스레드라면 스레드가 잡여 후속 작업을 수행하지 못함Thread t = new Thread() { public void run() { Thread.sleep(1000); } }; 다음방법은 워크스레드를 사용해서 프로그램이 멈추진 않음하지만 해당 워커스레드는 다음작업이 오기전까지 기다려야함Timer & TimeTask태스크를 시작할때 취소할때를 통제처음 시작할때 타이밍을 원하는데로 할수있음다음 코드는 비동기로 동작 ("async test"..

Java/Java 개념 2018.08.03

Java // 구현 // Client SocketChannel (in Server) // NIO NonBlocking

- NIO NonBlocking 기반 서버의 클라이언트 추상클래스- NonBlocking이라서 receive() 메소드에 스레드를 할당하지 않아도 Selector가 메소드를 실행- "route()"와 "terminate()"를 메소드 오버라이딩해서 처리 public abstract class Client { /* Field */ public SocketChannel socketChannel; public SelectionKey selectionKey; public Selector selector; public String response; private Charset charset = Charset.forName("UTF-8"); /* Constructor */ public Client(SocketCha..

Java/Java 구현 2018.08.03

Java // 구현 // Server Socket // NIO NonBlocking

- NIO NonBlocking 기반 서버- Selector가 Blocking 되어 있지 않는 "accept() 와 receive()"를 수신시 매칭해주는 중재자 역할을 함- 클라이언트의 생성과 중지는 "startClient() & stopClient()"의 메소드 오버라이딩이 필요- 싱글톤으로 전역접근가능- 제네릭으로 특정 클라이언트 처리 /* ServerOthello - singleton */ public abstract class Server { private static Server instance; /* Field */ public ExecutorService executorService; public ServerSocketChannel serverSocketChannel; public Sele..

Java/Java 구현 2018.08.03

Java FX // 구현 // Scene // SceneManager

Scene을 싱글톤 전역객체로 관리하기Scene을 어디서든 사용할 수 있도록 Singleton 처리 합니다. primaryStage에 대한 접근이나, Scene을 이용하는 경우 다음 SceneManager를 통해 할 수 있습니다. public class SceneManager { private static SceneManager instance; Stage stage; Scene scene; Share share; public SceneManager( Stage stage ) { if(SceneManager.instance != null) return; SceneManager.instance = this; this.stage = stage; this.share = new Share(); this.stag..

Java/JavaFX 구현 2018.08.03