기본 콘텐츠로 건너뛰기

3월, 2018의 게시물 표시

Blocking Method와 ThreadPool

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

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          public   void   service (ServletRequest request, ServletResponse response)                         throws  ServletException, IOException {                Connection

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()메서드를 재정의 해야 한다.        - 클라이언트와 연결을 수행하는 네트워크 관련 코드를 찾아 볼수 없고,        - 멀티 스레드 관련 코드 또한 찾을 수 없다.          웹서버와 톰캣 애플리케이션이  대신 처리하기 때문.

3.24 남양호 배스낚시

드디어 기다리고 기다리던 봄이 왔다!!😀 추위고자라 겨울땐 낚시 생각을 일체 하지 못해서 그런지  출발전 마음이 설렜다. 아직 시기가 일러서 그런건지  내 낚시 실력이 없는건지 조과 수는 총 1마리.... 그래도 처음으로 3짜를 건져 올려 기분이 좋았다.  (핸드폰 충전한다고 차에 두고와서 사진도 못찍음..) 채비는 다운샷, 프리리그, 스피너베이트 등등 있는거 다 해봤지만 역시 초봄엔 미노우의 계절이라고 했던가 플로팅 미노우에 반응이 있었다. 미노우로 처음 배스를 잡아보는건데 역시나 흥분되고 처음으로 3짜라 그런가 배스 힘빼기할때 손맛이.. 스바라시!! 첫 포인트에서 첫 조과 후  여기저기 쑤시고 다니다가 결국 용왕님께 미노우와, 새로산 메탈바이브를 재물로 바쳤다ㅠㅠ 미노우에 매력을 느껴 주말에 미노우 대량 지름신이 올것 같다. 남쪽 나라는 배스가 엄청 올라오고 있다는데 아직 남양호는 배스가 쉘로우에 붙지 않은것 같다.  다음 출조를 기다리며, 나는 미노우 쇼핑을 하러 가야겠다. 끝

모니터...

그동안 나와 함께했던  WOW 게임을 접기위해... 데스크탑을 동생에게 나눔했다... 노트북으로 작업하려니 모니터가 하나 필요한것 같아 구매를 하려하는데 고민이다. 1. 24인치 vs 27인치   30인치 넘어가는건 내 책상이 허용을 못해서 패스하기로하고...  노트북 맥북과 씽크패드 모두 13인치인지라 어떤게 보기 좋을지가 고민이다 2. Full-HD vs QHD vs 그이상  사실 맥북프로를 산 이유가 모니터 화질 때문이다. 윈도우의 작은 픽셀이 보이는것이 신경쓰인다ㅋㅋㅋ....😅  24, 27인치에서 3000번때 해상도를 쓰면 글씨볼떄 눈알 빠진다고는 하는데, 직접 봐보질 못하니 이거 고민이다.  내가 존경하는 분이  DELL Ultra HD P2415Q +  맥북 프로면 딱이라곤 하셧느데, 눈알이 빠질까봐 걱정이 된다 4월달이 넘어가기 전에 모니터를 구입할 것이고 그 무엇을 구매하든 후회말고 잘 쓰도록 해보자!!

메이븐을 알아보자

메이븐의 정의, 구조, 특징등을 정리하였다. 1. 메이븐이란?  - 아파치 메이븐은 자바용 프로젝트 관리 도구 이다.  - 아파치 앤트의 대안으로 만들어졌다.  1) 특징    - 빌드 절차 간소화    - 동일한 빌드 시스템 제공    - 프로젝트 정보 제공  2). 메이븐 디렉터리 구조 <출처 : 위키백과>  3) ANT와의 차이점    - ANT는 사용자가 일일이 파일 구조를 만들아여한다. ANT가 자유도가 높다.    - 메이븐은 정해진 라이프 사이클에 작업을 수행하고, 전반적 프로젝트 관리 기능을 포함한다. (Build Tool + Project Manager)     4) grale과 차이점   - XML 대신 groovy 스크립트를 사용해 동적인 빌드를 한다.    - Maven은 멀티프로젝트에서 상속 구조이고, gradle은 주입방식이다. 2. 플러그인  - 메이븐은 플러그인을 구동해주는 프레임 워크이다. 작업은 플러그인에서 수행한다.   - 메이븐은 여러 플러그인으로 구성되 있고, 각각 플러그인은 하나 이상의 Goal(명령, 작업)을 포함한다.    cf) Goal이란?  메이븐의 실행단위 이다.   - 플러그인과 골의 조합으로 실행한다.      ex) mvn <plugin>:          <goal> = mvn archetype:generate 3. 라이프사이클  - 프로젝트 생성에 필요한 단계(phases)들을 Build Lifecycle이라 정의하고, default, clean, site 세 가지로 정의한다. cf) phase : 실행단위로 goal과 바인딩 됨.   1) Clean    - 빌드 시 생성되었던 산출물들을 삭제한다.     - pre-clean : clean 작업 전에 사전 작업진행    - clean : 이전 빌드에서 생성된 모든 파일 삭제    - pos