기본 콘텐츠로 건너뛰기

Blocking Method와 ThreadPool

Blocking Method  블로킹 메서드는 다른 쓰레드로 제어권을 양도 하지 않고, 할당된 Task가 완료될 때까지 제어권을 넘겨주지 않으려 할 때 사용 하는 메서드 이다.  Java에서 대표적인 블로킹 메소드는 InputStream 클래스의 read()와 ServerSocket 클래스의 accept()가 있다. 단점   - 블로킹 메서드의 단점 중 하나는 무한 대기에 빠질 수 있다는 점이다. 이로 인해 대기중인 다른 쓰레드가 살행되지 않는 경우가 생길 수 있다. Blocking I/O   - java에서  블로킹 소켓은 ServerSocket, Socket 두 가지 클래스를 사용한다.    - 클라이언트 연결 요청시 서버는 accept하고 클라이언트와 연결된 소켓을 새로 생성하는데 이 때 해당 메서드가 완료되기 전까지 스레드에 블로킹이 된다.    - 클라이언트가 연결된 소켓으로 서버에 데이터 전송시 서버는 read를 호출하고 다 읽을 때 까지 스레드가 블로킹 된다.  병렬처리 문제   - 데이터 입출력에서 스레드의 블로킹이 발생해 동시에 여러 클라이언트에 대한 처리가 불가하다.   - 이를 해결위해 연결된 클라이언트 별로 각자 쓰레드를 할당하는 방법이 있다.   - 클라이언트 접속요청 오면 서버는 새로운 스레드를 하나 생성하고 클라이언트에게 I/O 처리를 넘겨준다.   - 동시 요청은 해결되었으나, 동시 접속으로 인한 스레드 생성, 할당, 제거하는 시간이 길어진다.   - 또한 계속되는 스레드 생성은 힙 메모리의 부족을 야기할 수 있다. 스레드 풀(Thread Pool)    - 스레드 증가로인한 메모리 부족을 피하기 위해 일정개수의 스레드를 풀에 미리 생성한다.   - 클라이언트 요청이 들어오면 일단 작업 큐에 들어가게하고, 스레드 풀에서 ...

java.sql.SQLException: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long

eclipse로 mysql 연동해 작업진행 시 다음 메시지가 나왔다. java.sql.SQLException: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long package  jdbc. spms . servlets ; import   java.io.IOException ; import   java.io.PrintWriter ; import   java.sql.Connection ; import   java.sql.DriverManager ; import   java.sql.ResultSet ; import   java.sql.Statement ; import   javax.servlet.GenericServlet ; import   javax.servlet.ServletException ; import   javax.servlet.ServletRequest ; import   javax.servlet.ServletResponse ; import   javax.servlet.annotation.WebServlet ; @WebServlet ( "/member/list" ) public   class   MemberListServlet   extends  GenericServlet {          private   static   final   long  serialVersionUID =  1L ;          @Override  ...

Java Socket 네트워크

1. 네트워킹  - 클라이언트/ 서버    - 자바에서 IP주소 다루기 위한 클래스로  InetAddress를 제공한다.    -URL : 여러 서버들이 제공하는 자원에 접근할 수 있는 주소    - URLConnection : 어플리케이션과 URL간 통신연결 최상위 클래스. 추상클래스임. 2. TCP 소켓 프로그래밍  - 서버와 클라이언트간 일대일 통신.  - 1) 서버 프로그램은 서버소켓을 사용해 서버 컴퓨터의 특정 포트에 클라이언트 연결요청 처리 준비     2) 클라이언트 프로그램은 접속할 서버의 ip주소와 포트 정보를 가지고 소켓 생성해 서버에 연결 요청     3) 서버소켓은 클라이언트 요청을 받으면 서버에 새로운 소켓을 생성해 클라이언트의 소켓과 연결되도록 함.     4) 두 소켓끼리 일대일 통신.  - 서버 소켓은 연결 요청이 올때마다 새로운 소켓 생성만 한다.  - 여러개의 소켓이 하나의 포트 공유 가능하지만, 서버소켓은 포트를 독점한다.  - 소켓은 입력/출력스트림을 가지고 있어 스트림들은 연결된 상대편 소켓의 스트림과 연결된다. 소스는 깃허브 - java source 자료

NS 다크호스배스(H대) , 레보 STX3 구입

해비커버에 사용할 릴과 대를 주문했다. 로드는 창고에 오래 묵혀져 있던 놈인가. 하얀가루가 많이 묻어 있고. 보증서가 없다...??? 이제 ML, M, H대 총 3대가 되었다. 이번주 새로온 놈들 연습하러 출조나해야즤 ㅎㅎ

모니터 구매

필립스 제품 243V7Q IPS 24인치를 구매 했다 역시나 내 책상엔 27인치 보단 24인치가 적당한듯하다. 배젤이 얇아서 그런가 더욱 넓어 보인다 그러나 역시 문제는 텍스트가 흐리게 보인다는 것. <13인치 씽크패드 화면> <필립스 24인치 화면> 배경색과 폰트가 확실히 차이나게 흐리게 보인다ㅠ_ㅠ HDMI 2.0으로 바꿔봐도 같은증상. 원래그런 것인지 설정을 잘 못만진 것인지 이번주 화질 연구좀 해야 겠다. 그래도 작업시 더욱 원활해 진것 같아 뿌듯하다ㅎㅎ

웹어플리케이션 특징

웹 어플리케이션 이해 1. 웹어플리케이션 아키텍처의 특징  1) 웹 어플리케이션 서버 구조    - 클라이언트와의 통신은 웹 서버가 전담. 이로인해 네트워크 및 멀티 스레드 프로그래밍으로 부터 탈출.    - 애플리케이션 서버는 애플리케이션 실행 및 관리에 집중. - NginX / Apatch : Path에 따라 어느 WAS로 갈지 설정할 수 있다. - 앞단 웹서버의 장점 : 오류시 대응이 빠르고, 운영이 편해진다. - 웹서버(정적) → WAS(동적)  WAS는 웹어플리케이션 여러개를 배치할 수 있다. 웹어플리케이션 끼리는 서로 정보공유가 안된다.  2) 웹 어플리케이션 특징    - 웹 환경에선 비즈니스 로직과 UI 로직을 모두 서버에 배치해 기능이 추가 되거나 변경 되더라도 서버쪽만 바꾸면 된다.     - 다만 클라이언트는 애플리케이션을 실행할 때마다 UI 로직을 내려받아야 하기 때문에 너트워크 오버헤드가 발생한다.       이를 해결하려 AJAX라는 기술 등장. 같은 화면에서 데이터만 바뀔 시, 화면은 그래로 두고 데이터만 받아오는 것.    - 실행과정 :     - C/S 환경에선 다중 클라이언트 동시 요청처리 위해 서버는 멀티 스레드 프로그래밍을 해야했다.      - 하지만 웹 환경에선 웹 브라우저와 웹 서버가 그 부분을 대신 처리해준다.     - 서버 소스        - 크라이언트가 보낸 데이터를 받아 연산 수행 후 결과 출력하는 클래스       - HttpServlet 클래스를 상속받고 있다. doGet()메서드를 재정의 해야 한다....