본문 바로가기

Programing/JVM(Java, Kotlin)

(96)
후벼파는 스프링 - ApplicationContext의 디폴트 스프링 튜토리얼에 보면 ApplicationContext 인터페이스는 BeanFactory 인터페이스의 서브-인터페이스이며, 스프링의 AOP 기능 등과 통합을 더 쉽게 한다라고 적혀있다. 또한 웹 어플리케이션을 위하여 WebApplicationContext를 소개하고 있다. 그런데 HttpServletBean를 상속하고 있는 FrameworkServlet의 경우 WebApplicationContext 인터페이스의 구현체를 XmlWebApplicationContext를 사용하고 있었다.public abstract class FrameworkServlet extends HttpServletBean { /* ... */ public static final Class DEFAULT_CONTEXT_CLASS = ..
후벼파는 스프링 - @RequestMapping의 원리 예전에 "Spring 3.0 시작 - Hello World 동작원리"라는 글에서 Spring MVC 템플릿을 분석하여 정리한 적이 있다.그 당시에는 대강 org.springframework.web.servlet.DispatcherServlet에서 초기화를 해준다고 하는데, 어떤 원리로 동작하는지 내부 구현이 궁금해서 소스를 찾아보았다. 1) 시작은 web.xml 내용은 크게 리스너 클래스를 등록하는 부분과 애플리케이션 요청을 처리할 서블릿에 대한 것으로 구분할 수가 있는데, 내가 관심을 가지고 있는 @RequestMapping은 후자랑 관련이 있다. 결국 /라는 HTTP GET요청이 @RequestMapping(value = "/", method = RequestMethod.GET) 로 지정되어 있는 메..
[면접 문제] 1로 설정된 비트의 수를 반환하는 함수 작성 문제: 주어진 정수를 컴퓨터에서 내부적으로 표현할 때 1로 설정된 비트의 수를 반환하는 함수를 작성하라. 방법1. 이진 문자열로 바꾸어 1인 문자를 센다.친구에게 문제를 내보니 십진법을 이진법으로 변환하여 1의 갯수를 세려고 하고 있었다.코드로 짠다면 아래와 같은 형태가 될 것이다. (여기서 숫자를 이진 문자열로 바꾸는 것은 Integer 클래스의 toBinaryString유틸리를 이용했다. 면접 같았으면 이것을 직접짰어야 했을 것이다.)public static int countBit0(int value) { String strValue = Integer.toBinaryString(value); int count = 0; for (int i=0; i>를 쓰게 되면 음수의 경우 왼쪽의 비트가 1로 채워진다..
[후벼파는 자바] GC(가비지 컬렉션) 이 글을 읽기전에 괜찮은 글을 먼저 읽어보자. 하나는 영문이고 하나는 한글이다.영어 - Java SE 6 HotSpot[tm] Virtual Machine Garbage Collection Tuning: Java SE 6 HotSpot / Java 8 Understanding Java Garbage Collection and What You Can Do About It: Gil Tene (링크)한글 - Java Garbage Collection: 네이버개발자블로그 / Garbage Collection 모니터링 방법 / Garbage Collection 튜닝 OpenJDK를 받아보자. 여기는 openjdk-7u40-fcs-src-b43-26_aug_2013 기준이다.openjdk/hotspot/src/sh..
Gradle Project 사용해보기 STS(Spring Tool Suite) 3.6.3.RELEASE 기준기본적으로 빌드 관리는 메이븐(Maven)이 해주도록 되어 있다. Gradle 프로젝트를 하기 위해서는 추가 설치가 필요했다. https://github.com/spring-projects/eclipse-integration-gradle/blob/master/README.md#installation-instructions를 참고한다. 1. Dashboard를 띄운다. ([Help] 메뉴 > [Dashboard])2. Extensions 탭 선택(아래)3. Gradle" 또는 "Groovy"를 키워드로 검색(Find) 한다.4. Gradle Support를 체크하고 Install을 누른다.5. Install 창에서 Gradle IDE 창..
[Java] 배열 최대 할당 가능 크기? 물론 시스템 마다 메모리 설정이 다를 테니 단정 지을 수 없다.바이너리 검색 기법(?)을 이용해서 범위 내에서 왔다갔다 하니 현재 시스템에서 사용가능한 최대 크기를 구할 수 있었다.(물론 이 수치는 시스템마다 혹은 JVM 구현체나 버전에 따라 바뀔 수 있는 사항이므로 주의!)10483639 20483639 o 25000000 o 26250000 o 27000000 o 27250000 o 27450000 o 27475000 o 27480000 o 27482500 o 27483000 o 27483050 o 27483075 o 27483080 o 27483082 o 27483083 o 27483084 o 27483085 x 27483100 x 27483150 x 27483250 x 27483500 x 2748..
[MVC] 파일 업로드 xml 설정 이용 - Spring MVC를 이용한 파일업로드 (링크)Spring3 file upload 구현::dukeom (링크)Spring 4 MVC Single and Multiple File Upload Example with Tomcat (링크)Uploading Files::spring.io (링크) Spring Boot을 이용, Servlet 3.0 containers 필요(톰켓이라면 6.x에서 안된다는 말)
String, StringBuffer, StringBuilder의 차이점과 장단점? 한성이가 StringBuffer와 StringBuilder의 차이에 대해서 물어봐서 ThreadSafe 한지 안한지 차이라고 확인해주었다.그런데 인터넷에 "String, StringBuffer, StringBuilder의 차이점과 장단점은 뭔가요?"를 글을 보다가 미물님이 테스트한 글을 보게 되었다. 테스트의 요지는 StringBuffer랑 문자열을 +로 붙이는 것의 비교였다.왠지 컴파일 될 때 최적화가 되어 문자열이 하나로 합쳐지는 것이 아닌가 의심이 되었다. 테스트 JDK는 1.7.0_45이다.그래서 아래와 같은 간단한 클래스를 만들어보았다.class Test{ public static void main(String[] args) { String str1 = "Hello"; String str2 = ..