목록JAVA (6)
우리네 장

최근에 4월 우아한 개발자 tech에서 virtual thread 관련 발표를 했었어용.해당 기술 설명에 ForkJoinPool 이야기가 나왔는데, 나온 김에 정리하려고 합니다! ForkJoinPool을 개발자가 직접적으로 다룰 일은 많지 않겠지만, 언급했던 virtual thread나 혹은 parallel stream에 default로 사용되기 때문에 개념적으로 알고 있는게 좋을거 같아요! 사실 해당 개념에 대한 좋은 글은 널리고 널렸기 때문에 간략하게 제 공부용으로 포인트만 남기도록 하겠습니다 ㅎ.ㅎ ForkJoinPool ? 얘도 말 그대로 pool 이에요 ..thread pool의 일종입니다. pool 안에 있는 각각의 thread가 하나의 worker가 되는거겠죠?? 기존에 저희가 알던 일반..

byteBuddy 라이브러리를 이용해서 바이트 코드를 조작하는 실습을 해보았다. 일단, 기본으로 클래스의 바이트 코드를 변경하는 예제를 확인해보자. try{ new ByteBuddy().redefine(Moja.class) .method(ElementMatchers.named("pop")) .intercept(FixedValue.value("Rabbit!")) .make() .saveIn(new File("D:/study/boot/ModiByteCd/target/classes")); }catch( IOException ) { } Moja라는 클래스를 재정의 할 것인데, pop이라는 이름의 메소드와 일치하는 메소드를 찾아서 처리 중간에 가로채, 고정 값인 Rabbit!을 출력해준다는 의미이다. 그런데, 위..
습관적으로 사용하던 static final을 왜 쓰는지 적절한 static practice에 대해 알아보자! 여러 자료를 바탕으로 작성한 글이기에 이의 제기는 아주 좋습니다 Static 변수 정의에 대해서 먼저 말해보자면, 임의의 클래스 A의 인스턴스들이 공유하여 접근하는 공유자원 이라고 말할 수 있다. 즉 그 인스턴스 들이 해당 변수에 대하여 모두 같은 주소 값을 가지는 것을 의미한다. static 변수는 인스턴스 변수와 달리 인스턴스에 속하지 않고, 클래스에 더 가까운 변수이다. 그래서 클래스가 load 될 때 메모리를 할당 받으며 초기화 된다. 즉, 클래스의 생성자 실행 여부와 상관 없이 위 과정이 진행된다는 의미이다. 그럼 제목처럼 static 변수를 사용하기에 적절한 방법은 무엇일까...? 언제..

"Inside the Java Vitual Machine" 이라는 Contents를 참고하여 작성한 글입니다. class의 byte code가 실행되면서 코드적으로 참조하는 특정 클래스의 method에 대한 정보를 어디서 가져오는 지에 대한 의문에서 시작 하였습니다. 단순히 생각하면 Method Area 어디쯤에 있다고 판단이 들었으나, 확실히 짚고 넘어가고자 하여 위 컨텐츠를 참조하여 정리하였고, 오역으로 인해 잘못된 정보가 있을 수 있습니다. instance variable vs class variable - class variable : static 변수를 의미한다. 이때의 static 변수는 non-final을 의미한다. final static 변수는 변수보다는 상수에 가까우며 둘은 다르게 처리된..

😏 Servlet 이란 ? 😏 java EE 표준 플랫폼에 따른 java program servlet 단독으로 기동될 수 없다. 🎅 Servlet Container이란 ? 🎅 서블릿 컨테이너도 결국에는 java program 사용자 요청 시 마다 java thread를 생성 ( 처리 후에는 소멸 ) [ JSP와 servlet 실행 환경 구성 ] - 웹 서버와 서블릿 간의 통신 지원 ( AJP protocol 기반 ) - 통신을 위한 socket을 관리하고 stream을 조작, 리스닝 포트 설정 - 웹 서버로부터 들어온 Http Request를 바탕으로 HttpRequest와 HttpResponse 객체를 생성 - web.xml 설정에 따라 요청을 처리할 적절한 servlet을 매핑 시켜 줌 ( web.x..

context.xml은 tomcat 버전이 올라가면서 server.xml에서 떨어져 나온 설정파일이다. server.xml은 서버에 대한 설정파일로 톰캣 서버 하나 당 하나씩 존재한다. webapplication 여러 개가 하나의 톰캣 서버에서 돌아가고 있을 경우, 모든 application에 공통으로 적용할 설정에 대해 정의 할 때 사용한다 ( ex. 보안 관련 설정 ) context.xml은 webapplication 당 하나씩 존재하는데 web.xml과 한 쌍으로 존재한다. 별개의 webapplication 마다 server와 관련된 설정을 다르게 해주고 싶을 때 정의하여 사용한다. ( ex. 데이터 소스 관련 설정 ) Server 아래 conf/나 webapplication의 META-INF/ 아..