티스토리

지금 느낌 그대로
검색하기
블로그 홈

블로그 홈

지금 느낌 그대로

style-tech.tistory.com/m
신고

지금 느낌 그대로 님의 블로그입니다.

구독자
0
방명록 방문하기
구독하기

주요 글 목록

  • Thread 별로 가지는 저장공간 ThreadLocal ThreadLocal 이란? ThreadLocal은 쓰레드 별로 가지는 각각의 저장공간을 제공하는 컨테이너입니다. 멀티 스레드환경에서 쓰레드별로 고유한 저장공간을 제공하여, 하나의 서비스를 여러 쓰레드가 공유하는 경우에 활용할 수 있습니다. 예를들어, 사용자 인증이 완료되면 서버의 자원을 반환하는 기능이 있다고 합시다. 멀티쓰레드 환경에서 이 기능은 하나의 쓰레드에서 인증이 완료되었다고 해도, 다른 쓰레드에서 인증이 완료되지 않았다면 다음 단계로 넘어가서는 안됩니다. 하지만 Spring 프레임워크를 통해 만든 서비스라면, Spring Bean은 싱글톤 패턴을 이용해 생성되기 때문에 하나의 객체를 공유합니다. 아마 따로 처리를 하지 않는다면 인증이 완료되지 않은 쓰레드에서도 서버의 자원에 접근이 가능할 것.. 공감수 0 댓글수 0 2023. 9. 8.
  • 람다 캡처링(Capturing Lambda) 의미 람다 표현식(Lambda Expression)은 기본적으로 (파라미터) -> 동작의 구조를 가집니다. 전달받은 파라미터를 가지고 동작을 정의하는 표현식입니다. 람다 캡처링은 전달받은 파라미터가 아닌 람다식 외부에서 정의된 변수를 람다식 내부에 저장하고 사용하는 것을 의미합니다.이 때 람다식 외부에 정의된 변수를 자유 변수(free variable) 이라고 합니다. public int concatStr(List strs) { String seperator = " and "; return strs.stream().collect(Collectors.joining(seperator)); } 람다식 내부에서 사용되는 지역 변수의 제약 조건 람다는 인스턴스 변수와 정적 변수를 람다식 내부에 저장하는 방식(Ca.. 공감수 0 댓글수 0 2023. 9. 4.
  • Garbage Collection - 2 : Garbage Collector 종류 개요 Garbage Collection - 1에서 가비지 컬렉션의 절차에 대해서 이야기 했었습니다. https://style-tech.tistory.com/23 Garbage Collection - 1 개념 JAVA로 작성한 코드를 컴파일하고 실행하려면 CPU로부터 메모리를 할당받아야합니다. Java는 JVM에서 이 과정을 수행합니다. 그리고 JVM에서 CPU로부터 메모리를 할당받습니다. 하지만 실행될 style-tech.tistory.com 가비지 컬렉션을 하는 과정에서 Stop The World 현상이 발생하고 애플리케이션이 지연되는 시간이 있다고 이야기했습니다. 지연현상은 자바의 발전과 애플리케이션의 크기가 증가하면서 Heap 영역의 크기가 커졌고, Heap 영역을 비우는 시간이 길어졌습니다. 가비.. 공감수 0 댓글수 0 2023. 8. 28.
  • Garbage Collection - 1 : GC 과정 개념 JAVA로 작성한 코드를 컴파일하고 실행하려면 CPU로부터 메모리를 할당받아야합니다. Java는 JVM에서 이 과정을 수행합니다. 그리고 JVM에서 CPU로부터 메모리를 할당받습니다. 하지만 실행될 프로그램에서 사용될 메모리를 미리 정확하게 할당하기는 어렵습니다. 실행환경에 따라 필요한 메모리는 동적으로 변화하기 때문입니다. 그래서 JVM은 메모리를 동적으로 할당받습니다. 그리고 동적으로 할당했던 메모리 영역 중 필요 없게 된 메모리 영역을 주기적으로 삭제합니다. 이것을 Garbage Collection이라고 부릅니다. C나 C++같은 프로그래밍언어에서는 Garbage Collection과 같은 일을 하는 요소가 없어서 개발자가 직접 필요한 순간마다 메모리할당과 해제를 해줘야합니다. 그래서 개발자 .. 공감수 0 댓글수 0 2023. 8. 27.
  • JVM(JAVA Virtual Machine) 개념 JAVA는 OS에 종속적이지 않다 자바를 처음 접했을 때 들었던 말입니다. 실제로, 제가 윈도우 환경에서 개발한 프로젝트들을 컴파일해서 리눅스 서버에 올려도 동일한 버전의 자바만설치되어 있다면 자연스럽게 동작합니다. 그래서 JVM은 자바 프로그램 실행환경을 만들어주는 소프트웨어라고 할 수 있습니다. JVM은 JRE에 포함되어 있습니다. JVM은 어떻게 운영체제에 관계없이 JAVA가 동작하도록 실행환경을 구성하는 건지 알아보겠습니다. 우선 C언어의 경우 윈도우환경과 리눅스환경에서 어떻게 동작하는지 알아보겠습니다. C언어로 작성된 Test.c 파일을 윈도우 컴파일러가 컴파일을 하면 Test.exe 파일이 생성됩니다. 하지만 Test.exe 파일은 윈도우에서만 동작합니다. 리눅스에서는 동작하지 않습니다... 공감수 0 댓글수 0 2023. 8. 27.
  • static import static import 사용하는 이유 일반적으로 다른 클래스의 static 멤버에 접근하기 위해서는 이 멤버가 어디에서 왔는지 레퍼런스를 명시해야한다. 다음 예시를 보자. double a = Math.cos(Math.PI * theta) 위의 코드에서 cos과 pi는 Math 클래스로부터 왔음을 나타내고 있다. 여기서 문제는 Math가 반복적으로 등장한다는 점이다. 수식이 짧을 때는 큰 상관이 없겠지만, 수식이 길어지고 Math가 자주 등장한다면 가독성과 생산성이 많이 떨어질 수 밖에 없다. 이 반복적으로 등장하는 Math를 줄이려면 다음과 같은 방법들이 있다. 인터페이스를 생성해 정적 멤버(여기선 cos과PI)를 인터페이스에 기술하고 이 인터페이스를 상속받는다. → 이것은 좋은 방법이 아니다. 이 방.. 공감수 0 댓글수 0 2020. 12. 26.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.