전체 글

전체 글

    [Framework] Light4J(light-java)

    음.. 프레임워크에 대해 알아보고자 하는데 익히 알고있는 웹 서비스를 하기 위한 프레임워크. 즉, Web framework의 종류엔.. 널리 알려진것들이 몇개 있는데 Spring, Spring-boot, undertow, latpack 등등이 있다 근데 워낙 최근 성능에 대한 관심이 많아져서 찾아보다보니 그 중, light-4j(예전엔 프레임워크 이름이 light-java 였다) 에 대해 알아보게 되었다. 하여.. 성능이 뭐 얼마나 차이날까 해서 봤는데 FrameworkLanguageMax ThroughputAvg LatencyTransferGo FastHttpGo1,396,685.8399.98ms167.83MBLight JavaJava1,344,512.652.36ms169.25MBActFramework..

    [JAVA] Object Pooling

    오브젝트 풀링(apache commons pool 이용) 하는 방법. 오브젝트 풀링에 대한건.. 간단하게 설명하면 많은 수의 오브젝트가 생성되는것을 방지하고자, Pool에 오브젝트들을 담아두고 사용 및 반납을 하는 방식이다. 도서관에 책을 대여하고, 반납하면서 특정 개수의 책만 사용하는 것을 생각하면 된다. 만약, 그런 시스템이 없다면 필요 할때마다 도서관에서는 책을 새로 신청해야 할 것이다. 용도 및 장점 : 잦은 오브젝트 할당으로 인한 over-head 감소 1. pom.xml에 apache commons pool 라이브러리를 maven import commons-pool commons-pool 1.6 2. 풀링해볼 객체의 구현체인 Person 클래스를 만듬. package gompang.domain..

    [Spring] Springboot JUnit 테스트 시 설정

    1. pom.xml 설정 1) Junit 4.12 버전 이상 junit junit 4.12 test 2) Spring-boot starter-test org.springframework.boot spring-boot-starter-test 1.5.3.RELEASE 테스트 클래스 구성 import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; impor..

    [logger] Logback xml 설정 및 디펜던시 설정

    매번 찾는 수고로움을 덜기위해 기술해둠. 내용logback 설정console appender highlight 설정필요 디펜던시 기술logger 사용법 1. logback.xml %d{yyyy-MM-dd HH:mm:ss.SSS} %highlight(%-5level) %magenta(%-4relative) --- [ %thread{10} ] %cyan(%logger{20}) : %msg%n labatory.log labatory.%d{yyyy-MM-dd}.log 30 %d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %-4relative --- [ %thread{10} ] %logger{35} - %msg%n 2. pom.xml 디펜던시 ch.qos.logback logback-core 1..

    [DB] DBCP 구현 - DB Connection Pooling

    Spring에서는 xml혹은 java 설정으로 DBCP를 구성할 수 있지만, Spring 혹은 해당 웹 프레임워크를 사용하지 않는 프로젝트에서는 DB Connection에 관한 풀링을 자체로 만들어야 한다. 현재는 Apache Storm 쪽에서 DB 작업을 하기 위한 구성 중, 성능상 문제가 없는 DBCP 커넥션 설정 방법을 공유하고자 함. DBManager 를 사용하고자 하면 Singleton으로 받아와서 사용해야 함. DBCP에 대한 설명은 간단하게 아래 그림과 같음. (출처) 사실 DBCP 설정 등에 대해서도 쓸게 많은데.. 많은고로 귀찮기 때문에 이번엔 구현만 설명하고자 한다 Connection을 미리 생성해두고, Connection을 가져와서 사용하고 다시 반납을 하게 되면 매번 새로운 Conn..

    [Springboot] JPA(Hibernate) 공부 편

    일단.. JPA랑 Hibernate는 같은 놈이라기보단 인터페이스와 구현체로 볼 수 있다 Springboot 패키지에 springboot-starter-jpa 라는 놈이 있는데, 이를 사용하면 JPA를 쉽게 사용할 수 있다. 이 JPA 구현체로 Hibernate를 사용하는 것이다. JPA의 구현체에는 여러가지 기법이 있는데 그 중 가장 유명한 방식을 사용 하는 것(하도 JPA Hibernate라고 하니, 두개가 같은 건지, 같이 꼭 붙어다녀야 하는건지 항상 의문이었다) Hibernate는 ORM 이라 불린다. ORM(Object Relationship Mapper)는 말 그대로 무언가를 매핑해주는 매퍼를 말하는데,DB상에 존재하는 데이터를 JAVA의 POJO로 인식을 하여 접근하게 해주는 역할을 한다. ..

    [Spring] JSON Object 관련

    이전 포스팅에도 Spring에서 객체를 Wrapping해주는 JSON Mapper에 대해 기술한 적이 있는데 좀더 자세히 사용법을 알아보고자 작성해본다. JAVA에서 객체를 박싱/언박싱할때 사용하는 라이브러리는 주로 다음과 같다 org-jsongsonjacksonjson-simpleminimal-json일단 왜 JSON 라이브러리가 중요한가 보면, JSON(Javascript Object Notation)은 현재 여러 플랫폼에서 통용되는 데이터 타입이라고 볼 수 있는데,서버 클라이언트에 사용되는 주요 메세지 포맷이다. 데이터를 송/수신할때 직접 byte단위로 보내도 되지만, 이럴 경우 언어별로 각기 다른 처리를 해줘야 하는 수고로움이 들기도 하고사람이 알아보기 힘든 면이 있다.(JSON의 경우 사람이 알..

    맥에서 VisualVM 사용하기

    VisualVM은 매우 유용한.. 프로그램인데, JAVA의 어플리케이션에 대한 리소스 사용량 및 Thread 상태와 Heap Dump를 남길 수 있는 기능을 제공한다. 윈도우에서는 그냥 jdk를 설치하면 해당 path에 /bin/visualjvm.exe가 생겨서 path만 지정하면 사용할 수 있지만, 맥북에서는 설치되는 path가 뭔가 복잡하여 직관적으로 알아보기가 어려운 것 같다. 그래서 직접 visualvm을 받아서 구동해도 무방한데, 일단 URL링크를 따라가서 visualVM을 받도록 하자. (사실 이렇게 안하고 jdk를 설치할때 설치된 visualVM을 심볼릭 링크로 따서 복사하는 방법도 있긴 하지만.. 이건 뭐 디펜던시가 있는 프로그램도 아니고, 쓰다 지워도 무방한 프로그램이라 그냥 받아서 설치..

    [JAVA] ExecutorService 관련 공부

    ExecutorService 관련 공부 1. ExecutorService에 관하여 ExecutorService는 병렬작업 시 여러개의 작업을 효율적으로 처리하기 위해 제공되는 JAVA의 라이브러리이다. 통상적으로 작업을 분리하고 수행하는 작업을 손수 구현하고자 하면.. 각기 다른 Thread를 생성해서 작업을 처리하고, 처리가 완료되면 해당 Thread를 제거하는 작업을 진행해야 한다. 이러한 일련의 작업을 이 클래스를 이용해서 쉽게 처리가 가능하다. 흔히 말하는 ThreadPool을 구현하기가 매우 용이하므로, Java에서 쓰레드풀을 생성해서 사용하고자 하면 (손수 구축이 아닌.. 보장된 동작을 원한다면 이를 사용하길 적극 추천) 반드시 사용을 고려해봐야 할 유틸리티성 클래스이다. ExecutorSer..

    [Spring] Annotation 관련

    @Controller // 일반적인 MVC Controller의 컨트롤러.. 이를 사용한 클래스는 객체를 자동으로 Wrapping 해주지 않는다. @RestController // 위의 Controller와 같은 역할을 하지만(Servlet Request, Response 핸들링), // Rest에 적합한 Controller로써, @RequestBody, @ResponseBody를 사용하지 않아도 알아서 Convert를 해서 핸들링한다. @RequestBody // Request로 받은 Input을 자동적으로 JSON으로 Wrapping해서 가져온다. @ResponseBody // Response로 나가는 output을 자동적으로 JSON으로 Wrapping해서 내보낸다. // 아래는.. 게시판을 만들면..