목록분류 전체보기 (37)
기억하기 프로젝트
최근에 쓰레드 관련 프로그램을 작성하면서, 부족하다고 느꼈던 부분을 다시 공부해 보자는 마음으로 스레드의 개념을 다시 들춰보았다. Thread보통 스레드를 공부하게 되면 동시에 나오는 개념이 프로세스인 것 같다. 프로세스는 운영체제로부터 자원을 할당받아 실행되는 흐름이라고 본다면, 스레드는 그 프로세스가 할당받은 자원을 이용하는 개념이라고 보면 될 듯 하다.또한, 한 개의 프로세스는 한 가지의 일을 하지만 스레드를 사용하면 한 프로세스 내에서 동시다발적으로 일을 수행할 수 있다. 그렇기 때문에, 빠른 처리가 필요하거나 많은 데이터를 처리해야할 때 스레드를 이용한 프로그램 소스를 흔히 볼 수 있다.먼저, 간단한 예제를 통해 확인해보도록 하자.public class MyThread extends Thread..
L4에서 수동으로 서버 내리거나 올릴 때- /sbin/ifconfig -a 명령어를 통해, L4로묶여있는 링크명 알아내서 이것이 만약 x라고 하면 /sbin/ifdown x 라는 명령어로 L4에서 해당 서버를 내린다.다시 서버를 올리기 위해서는 /sbin/ifup x 라는 명령어를 날려야 한다./sbin/ifdown, /sbin/ifup 명령어 모두 root권한에서 수행이 가능하므로 명령어 날릴 때 sudo를 붙여주어야 한다. L4의 목적L4 스위치의 목적은 로드밸런싱인데 스위치로 들어온 패킷을 적절하게 분배 및 전송해주는 기능을 한다.TCP/UDP 패킷 정보를 분석해서 해당 패킷이 사용하는 서비스 종류 별로 처리하고(HTTP, FTP, SMTP ...)세션관리, 서버/방화벽 로드밸런싱, 네트워크 서비스..
톰캣 Document Root 설정방법server.xml 설정을 보면 태그 내의 appBase설정과, 그 하위 태그인 태그의 docBase 설정이 있다.둘 다 도큐먼트 루트 설정으로 보이는데, 어떤 차이가 있을까? 하고 문서를 찾아보았다. 1. 기본 Document Root톰캣의 기본 Document Root는 webapps/ROOT 이다. (default설정 - http://localhost:8080/ -> webapps/ROOT) 태그 속성인 appBase는 $CATALINA_HOME 디렉토리 밑 상대경로를 인자로 받는다.예를들어, appBase="webapps"로 설정한다면 $CATALINA_HOME/webapps 로 기본 도큐먼트 루트가 설정된다. - 태그가 생략되어 있으면 ROOT를 자동으로 D..
쉘 스크립트 첫 라인의 #!/bin/sh (여기서 '#'는 주석이 아님~) : 스크립트 파일의 실행을 bash쉘로 한다는 말을 뜻함이 라인을 기재하지 않아도 실행된다면, 리눅스 배포판은 기본적으로 bash쉘로 설정되어 있어서 bash쉘 상에서 무리없이 동작하는 경우이다.#!/bin/sh을 미리 선언해줘서 bash쉘 파일임을 미리 알려주는 것이다른 쉘 간에 오류를 피하는 방법이다. : 결론적으로, /bin 하위의 sh가 심볼릭 링크로 bash를 지정하고 있으므로, #!/bin/sh#!/bin/bash 둘 다 동일하게 실행된다고 볼 수 있다. 참고하여 요약 :) http://blog.whenji.com/278
내 머리도 휘발성 메모리 ㅜㅜ 자꾸 잊어서, 다시 한 번 기억하며 기록해 보자! MyISAM VS InnoDB Mysql의 스토리지 엔진으로 가장 많이 사용하는 MyISAM, InnoDB의 차이를 알아보자.결론적으로 얘기하자면 트랜잭션 처리가 필요하고 대용량의 데이터를 다루기 위해서는 InnoDB가 효율적이고, 반면 트랜잭션 처리가 필요없고 운영에 Read only 기능이 많은 서비스일수록 MyISAM 엔진이 효율적이다.한마디로 MyISAM은 SELECT가 많은서비스에, InnoDB는 데이터의 변화가 많은 서비스에 적합하다 할 수 있다. 좀 더 풀어서 이야기 해 보자. 1. MyISAMMyISAM은 항상 테이블에 ROW COUNT를 가지고 있기 때문에 SELECT count(*) 명령시 빠르고, SELE..
최근에 팀 내의 DB이전 작업으로, 기존에 사용중이던 시노님과 DB Link 정리작업을 했었다. 작업도중 시노님과 DB Link의 차이와 특징에 대해 정확하게 알고싶어서 "뇌를 자극하는 오라클 프로그래밍" 책을 참고하여 정리해 보았다. 먼저 시노님의 특징부터 알아보자.시노님 : 데이터베이스에서 다른 객체들에 대한 가명을 가진 객체로써, 오라클에서의 Synonym은 스키마 오브젝트들의 별칭(alias)을 뜻한다.예를 들어, HR스키마의 EMPLOYEE테이블의 데이터를 DEV 사용자가 조회하기 위해서는, 스키마가 다른 테이블이기 때문에 다음과같이 EMPLOYEE 테이블명 앞에 스키마명도 함께 정의해야 한다.SELECT * FROM HR.EMPLOYEE(단, DEV사용자가 SELECT권한을 부여받았다는 전제 ..
Apache MPM 이란Multi Processing Module 다중처리 모듈을 뜻하며, apache가 받은 요청을 분배하는 방식을 말한다.많은 MPM 종류들 중, 대표적인 두 가지를 말하자면 prefork방식과, worker방식이 있는데리눅스 기반에서 apache를 처음 설치하면 default(기본으로)는 prefork 방식으로 설정 되어있다. prefork 방식한 자식 프로세스 당 하나의 쓰레드를 사용하는 방법으로, 기본 사용 메모리가 worker보다 높으며, 프로세스간 메모리를 공유하지 않는 독립형태이므로 안정적이다. worker 방식한 자식 프로세스 당 여러개의 쓰레드를 사용하는 방법으로, 기본 사용 메모리는 prefork보다 낮으며, 쓰레드간에 메모리를 서로 공유한다.
Java 5 HotSpot VM 이후부터 새로 추가된 기능 중 하나가JVM이 시작될 때 시스템 설정을 기반으로 자동으로 Java Heap메모리영역의 크기, garbage collector를 선정하는 기능이다. 이 기능을 통해서 애플리케이션의 활동과 객체 할당 비율에 따라서 GC가 동적으로 자바 힙 크기를 조절하며, New의 Eden과 Survivor. Old 영역의 비율을 자동적으로 조절하는 것을 의미한다.이 기능은 다음과 같은 옵션으로 적용이 가능하며,-XX:+UserParallelGC , -XX:+UserParallelOldGc 이 기능을 제거하기 위해서는 -XX:-UserAdaptiveSizePolicy 라는 옵션을 적용하여 끌 수 있다. ("자바 성능 튜닝 이야기 - 이상민" JVM은 어떻게 구동..
Spring web.xml파일 알아보기독립 웹 모듈로 만들어진 스프링 어플리케이션에 application context는 2개가 들어간다. 하나는 ContextLoaderListener에 의해서 만들어지는 Root WebApplicationContext, 다른 하나는 DispatcherServlet에 의해서 만들어지는 WebApplicationContext이다. 1. Root WebApplicationContext이름 그대로 최상단에 위치한 Context로 1)서비스 계층이나 DAO를 포함한, 웹 환경에 독립적인 빈들을 담아둔다.2)서로 다른 서블릿컨텍스트에서 공유해야 하는 빈들을 등록해놓고 사용할 수 있다.3)Servlet context에 등록된 빈들을 이용 불가능하고servlet context와 공통..
JSP 컴파일 과정 JSP를 [서블릿 기반의] 서버측 스크립트 언어라고 칭하는 이유는, jsp로 작성된 스크립트가 (실행시,) 자동으로 서블릿 코드로 변환되어 컴파일되고 실행되기 때문이다.그렇기때문에 따로 서블릿을 컴파일 하지 않아도 알아서 변환, 컴파일, 실행될 수 있고, 이를 위해서는 JSP Container 프로세스를 거쳐야 한다.그럼 지금부터 더욱 자세히 JSP 컴파일 과정을 살펴보자. 먼저, 클라이언트로부터 웹 어플리케이션에 요청이 들어오면 JSP Container 프로세스를 통해 서블릿 객체의 존재유무와, jsp파일 변경 유무를 확인하고, 만약 서블릿 객체가 존재하지 않거나 jsp 컴파일 후 파일 변경이 일어났다고 판단이 되면 jsp파일을 서블릿 소스로 변환하여(*.java파일로), 서블릿 컴..