분류 전체보기
-
블로킹 TCP 서버/클라이언트 작성하기JAVA/NIO2 2014. 3. 11. 00:20
1. 서버 작성하기 - 새 서버 소캣 채널 생성하기스트림 지향 리스닝 소캣을 위한 서택가능 채널을 생성 java.nio.channels.ServerSocketChannel 클래스 에서 제공하며, 멀티스레드에서 사용해더 안전하다. ServerSocketChannel serverSocketChannel = ServerSocketChannel.open(); *새로 생성한 서버 소켓 채널은 바이딩되지도 연결되지도 않았음을 염두해 둬야 한다. 서버 소켓이 이미 열려있는지 또느 서버 소켓을 성공적으로 열었는지 ServerSocketChannel.isOpen() 메서드를 호출해서 확인 할수 있다. if(serverSocketChannel.isOpen()){ ... } - 블로킹 설정하기서버 소켓 채널을 성공적으로 열..
-
[NIO.2]블로킹(BIO) 논블로킹(NIO) 차이점JAVA/NIO2 2014. 3. 8. 00:55
블로킹 특징- I/O가 가득 수신할 때까지 주어진 스레드가 아무것도 하지 않느다고 가정 하는 것이다. 이 경우 메소드가 즉시 애플리케이션으로 제어를 반환 하지 않으므로 애플리케이션에서는 대기 하기 된다.블로킹과 동기는 같은 뜻이다. 논블로킹 특징- I/O 요청을 즉시 큐에 넣고 애플리케이션으로 제어를 반환한다.(메서드 역시 즉시 반환 된다.)요청은 추후 커널에서 처리 된다.또한 논블로킹과 비동기는 같은 것이 아니다. 논블로킹은 폴링(polling), 비동기는 병렬(parallel)에 가깝다. 참고 : http://stackoverflow.com/questions/2625493/asynchronous-vs-non-blocking
-
스레드 기본(3)JAVA/in 기초 2014. 3. 5. 01:27
동기화 스레드의 문제점스레드들이 여러 개 동시의 작업을 진행하기 때문에 공유자원의 문제가 발생한다. 동기화(Synchronization)의 정의줄서기(번갈아 가면서 순서대로 공유자원 사용하기) 동기화의 기법synchronized 블록(자원을 사용할 때 자원에 락(Lock)을 거는 방식)wait() 와 notify() 동기화가 보장되지 않는 예제 public class NotSyncDataMain { public static Data data = new Data(); public static void main(String[] args) { System.out.println("main 시작"); Tom t = new Tom(); Jane j = new Jane(); t.start(); j.start(); S..
-
스레드 기본(2)JAVA/in 기초 2014. 3. 5. 01:05
스레드의 상태 스레드의 제어 스레드를 만들고 시작하는 것보다 스레드를 제어 하는 것이 더 중요 하다. 스레드 제어의 기본 스레드를 제대로 제어하려면 스레드의 상태부터 알아야 한다. 스레드의 상태 시작 상태(Start 상태) 동작할 수 있는 상태(Runnable 상태) 동작 상태(Run 상태) 대기 상태(NotRunnable 상태) 종료 상태(Dead 상태) 제일 먼저 스레드를 만든 후 start()를 호출햇을 때 Start 상태가 된다. 그리고 바로 Runnable 상태로 진입하게 된다. Runnable 상태에서 CPU의 제어권을 할당 받는 순간 Run 상태가 되었다가 일정 시간 동안 작압을 한 후 Runnable 상태도 되돌아와서 자신의 순서가 되기를 기다린다. 결국 Runnable 상태에 있는 스레드..
-
static 변수는 하나의 프로세스에서 하나의 값만 가진다.JAVA/in 기초 2014. 3. 5. 01:03
static 변수는 하나의 값만을 가진다. static 변수를 가진 class 의 인스턴스를 새로 생성 하여도 static의 값들은 한 곳의 메모리만 바라보게 된다. 샘플 public class TestStaticInt { public static int i = 0; public static void main(String[] args) { TestStaticInt t1 = new TestStaticInt(); t1.i = 1; TestStaticInt t2 = new TestStaticInt(); t2.i = 2; TestStaticInt t3 = new TestStaticInt(); t3.i = 3; TestStaticInt.i = 4; System.out.println(t1.i); System.out..
-
스레드 기본(1)JAVA/in 기초 2014. 3. 5. 00:08
프로세스와 스레드의 개념 프로세스(Process)하나의 프로그램은 하나의 프로세스에 해당한다. 멀티태스킹(Multi-Taking)프로세스의 경우 운영체제에서 자동으로 관리 해주다.운영체제 차원의 프로세스 관리를 멀티 태스킹이라고 한다. 프로세스와 스레드(Thread)하나의 프로세스 내에는 여러 개의 스레드가 존재 할 수 있다. 스레드란?하나의 프로그램 내에서 실행되는 메소드같은 순간에 두 개의 매소드가 동시에 실행되면서 두 개의 스레드가 동작 하는 것이다. 스레드 프로그램을 할 때 주의해야 할 사항우선권(Priority) : 동시에 두개이상의 메소드가 실행되기 때문에 어느 메소드에게 작업할 권한을 많이 줄 것인지에 대해서 결정 하는 것.동기화(Synchronization) : 하나의 자원을 상대로 순서대..
-
[설치 & 셋팅 & 테스트]Mariadb 5.5카테고리 없음 2014. 3. 3. 13:03
1. 설치 방법 https://downloads.mariadb.org/ 에서 자신의 환경에 맞는 stable(안정화?) 된 version을 Download 받는다.(이 글을 쓰는 시점에서는 5.5 였다.)Windows 에는 zip 형식과 mis 형식이 있는데, mis는 설치형 zip는 압축을 풀고 설정이 필요 하다. 우선 나는 zip 형식으로 진행 한다. 압축파일을 원하는 위치에 풀어 놓으면 설치는 종료 이다. 주요 설정설치된 디렉토리에서 my-huge.inimy-innodb-heavy-4G.inimy-large.inimy-medium.inimy-small.ini중 원하는 환경 기준으로 my-cnf.ini 로 명칭을 변경한다. mysqld 를 실행하면 mariadb 가 실행된다.mysqld또는mysqld..
-
가변 인수(Varargs)JAVA/in 기초 2014. 2. 23. 23:56
자바 5.0에서 소개되는 기법 중에서 가변인수(varargs)라는 것이 있다.가변인수라는 것은 필요에 따라 매개변수(인수)를 가변적으로 조정할 수 있는 기술이다.가변인수가 없던 시절에는 가변인수 대신 컬렉션이나 배열을 이용해서 가변인수를 대체 하고 있었다. public class VarArgMain { public static void display(String... strs){ for(String s : strs){ System.out.println("가변인수형태: "+s); } } } 사용법 VarArgMain.display("A","b", "C", "D");