본문 바로가기

전체 글

(79)
[PATTERN] Proxy Pattern 프록시는 대리인이라는 뜻으로, 무엇인가를 대신 처리하는 의미입니다. 일종의 비서라고 생각하시면 됩니다. 사장님한테 사소한 질문을 하기보다는 비서한테 먼저 물어보는 개념이라고 생각할 수 있겠습니다. > https://blog.outsider.ne.kr/789에서 프록시 패턴의 정의를 작성한건데 다른 어느곳보다 제일 이해가 쉬웠다. 프록시 패턴의 쓰임 가상프록시 꼭 필요로 하는 시점까지 객체의 생성을 연기하고, 해당 객체가 생성된 것처럼 동작하도록 만들고 싶을때 사용하는 패턴입니다. 프록시 클래스에서 자잘한 작업들을 처리하고 리소스가 많이 요구되는 작업들이 필요할 때에만 주체 클래스를 사용하도록 구현하며 위에서 예로 들었다시피 해상도가 아주 높은 이미지를 처리해야 하는 경우 작업을 분산하는것을 예로 들 수 ..
[JAVA] Thread-Safe, Concurrent Collection class, Double Checked Locking synchronized 서버에 동시에 여러 request다 요청될 경우 data의 안정성과 신뢰성을 보장할 수 없습니다. 따라서 data의 thread-safe 를 하기 위해 자바에서는 synchronized 키워드를 제공해 스레드간 동기화를 시켜 data의 thread-safe를 가능케합니다. Synchronized 키워드는 변수와 함수에 사용해서 동기화 할 수 있습니다. 하지만 Synchronized 키워드를 너무 남발하면 오히려 프로그램 성능저하를 일으킬 수 있습니다. // 1. 메서드에서 사용하는 경우 public synchronized void method(){// 코드} // 2. 객체 변수에 사용하는 경우(block문) private Object obj = new Object(); publi..
[WEB개념] Class Loader & Hot Deploy Class Loader란? Class Loader는 자바 바이트코드를 읽어들여 클래스 객체를 생성하는 역할을 담당한다. 클래스 로딩 방식에는 load-time dynamic loading과 run-time dynamic loading이 있다. load-time dynamic loading은 클래스를 로딩하는 과정에서 다시 필요한 클래스를 로딩한다. 예를 들어 HelloWorld 클래스 내에 System.out.println이 있다면 java.lang.System을 로딩할 것이다. run-time dynamic loading은 클래스 내 코드를 실행하는 과정에서 필요한 클래스를 로딩한다. Class.forName()을 사용하는 경우가 대표적이다. 클래스 로딩의 순서는? Bootstrap Class Load..
[WEB개발보조] Eclipse, Tomcat 설정 확인 1. ip V6 > ip V4 아이피가 0:0:0:0:0:0:0:1 이라는건 ipv6의 주소를 가져온것으로 ipv4로 봤을때 127.0.0.1 이 맞다. localhost로 서버에 접속했을 때 생기는 현상이며, 10.10.10.1 과 같은 아이피로 접근했을때는 정상적으로 가져온다. 윈도우7 에선 기본적으로 IPv6를 리턴하므로 WAS 세팅으로 바꾸어 주면된다. WAS Arguments를 세팅해보자. eclipse에서 톰캣을 실행시 셋팅 메뉴의 Run -> Run Configurations -> Arguments 탭 -> -Djava.net.preferIPv4Stack=true 추가 2. Tomcat CaracterSet Eclipse에서 Tomcat 서버를 선택하고 마우스 오른쪽 버튼을 클릭한 다음 "P..
[JAVA] JMX(MBean), JOLOKIA JMX(Java Management Extensions) JMX(Java Management eXtensions)는 응용 프로그램(소프트웨어)/객체/장치 (프린터 등) 및 서비스 지향 네트워크 등을 감시 관리를 위한 도구를 제공하는 자바 API이다. JDK 1.5 이상부터 기본적으로 탑재된 기능 자바 어플리케이션의 모니터링과 관리 기능을 제공한다. Non-Java Resource와 하드웨어에 대해 wrapping한 인터페이스를 제공하며, API를 외부로 노출해 application 설정 및 통계데이터를 수집할 수 있는 기능을 제공한다. mBean으로 알려진 하나 이상의 사용자 JavaBean 오브젝트를 통해(혹은 리소스를 호출하는) 애플리케이션, 디바이스, 서비스를 원격으로 제어할 수 있다. mBean들..
[WEB개념] web was 분리이유 WEB서버와 WAS의 차이 WEB서버는 정적인 컨텐츠를 제공하는 서버이고 WAS는 동적인 컨텐츠를 제공하는 서버이다. 예전의 WAS에서는 정적인 웹서버 기능을 제공하지 않았지만 오랜 기간 WAS가 발전을 거듭하여 최근 WAS들은 동적인 컨텐츠 뿐만 아니라 정적인 컨텐츠도 제공해주고 있다. 그렇기 때문에, WEB서버 없이 WAS만 존재하는 것도 가능하다. 그런데도 왜 WEB서버와 WAS를 분리하는 걸까? 위에서 말했듯이 WAS만 있어도 서비스를 제공하는 데에는 문제가 없다. 그러나 주로 서버 구성 시에 WEB서버와 WAS를 분리하여 구성한다. 그 이유는 여러 가지가 있는데 그 중 몇 가지를 알아보자. 1. 기능을 분리하여 서버 부하를 방지한다. WAS가 혼자서 모든 요청을 처리할 수 있다고는 하지만 그만큼..
[PATTERN] Producer - Consumer 여러 개의 producer는 각각 동일한 작업을 해서 queue에 집어넣고, consumer에서는 queue에 있는 작업을 가져가서 각자 동일한 작업으로 수행합니다. 여기서 여러 개의 producer와 consumer들이 각각 동일한 작업을 수행하는 여러개의 쓰레드 혹은 프로세스로 구성이 되므로 병렬처리가 되는 것입니다. 실무에서 사용하는 예시로 에러기록을 쌓는 경우 사용됩니다. 만약 어플리케이션 서버에 수 많은 이용자가 에러를 발생시킨다면 이 에러를 처리하는 서버는 과부가하 걸리고 다른 요청을 처리 못하게 됩니다. 이때 프로바이더 컨슈머 패턴을 사용하면 어플리케이션 서버에서 오류가 발생하면 오류를 담아두는 객체를 생성하고 해당내용을 큐에 넣어둡니다. 큐는 어플리케이션 서버에서 주기적으로 읽어 오류가 있..
[LINUX] 자주 사용하는 & VI 단축키 & 기타 tar.gzzcvf : 압축하기   > tar -cvf [tar파일명][압축할 파일]zxvf : 압축풀기tvfz : 내용보기   > | wc -l 파일 수uvf : 압축파일에 추가 압축  > tar -uvf [tar파일명][압축할 파일] 잘못만들어진 파일삭제find . -inum 4531 -exec rm -f {} ₩; ls -al |  wc -l: 디렉토리 내 파일 수 cw: clear word awk: 파일로부터 레코드(record)를 선택하고, 선택된 레코드에 포함된 값을 조작하거나 데이터화하는 것을 목적으로 사용ex)ll>>   -rw-r--r--  1 root root   30 Aug 25 23:28 test.txtll | awk '{print $9}'>>   test.txt free -m:  ..