++/CS 16

[TIL] CS공부 5일차

Annotation이란 무엇이고 구체적으로 어떤 것이 있는지 예시를 들어 설명해주실 수 있을까요? 어노테이션은 주석이라는 의미로, 다른 프로그램에 유용한 정보를 제공하기 위해 사용됩니다. 프로그램 빌드 시 코드를 자동으로 생성할 수 있도록 정보를 제공하고, 런타임에 특정 기능을 실행하도록 정보를 제공합니다. 어노테이션을 사용함으로써 코드를 더 간결하게 하여 코드작성 시 생산성이 증가하며 유지보수하기 쉽다는 장점이 있습니다. 종류 및 예시 @Component 개발자가 직접 작성한 클래스를 인스턴스화하여 Bean으로 등록하기 위해 사용합니다. 실제로 프로젝트에서 토큰을 생성하고 인증하는 TokenProvider 클래스와 JwtAuthenticationFilter에 적용하여 사용하였습니다. @Bean 개발자가..

++/CS 2024.03.09

[TIL] CS공부 4일차

Java Map의 내부 구현은 어떻게 이루어져 있을지 추측해보실 수 있을까요? Map은 기본적으로 key-value를 쌍으로 데이터를 저장하는 자료 구조로, 순서가 보장되지 않으며 key값의 중복은 불가능 합니다. HashMap key를 이용하여 key에 해당하는 value값을 빠르게 찾기 위해 사용됩니다. 해시 함수를 이용해 각 key를 index로 변환하고, index를 통해 bucket에 접근, 해당 index에 key와 value 값을 저장합니다. TreeMap 이진 검색 트리 기반으로 구현되며 각 Node들이 연결된 형태로, 모든 key-value 쌍은 정렬되어 있어 범위 검색이나 정렬이 필요한 경우에는 TreeMap을 사용하는 것이 좋습니다. LinkedHashMap HashMap을 상속받아 ..

++/CS 2024.03.08

[TIL] CS공부 3일차

JVM의 스택과 힙 메모리 영역에 대해 아는 만큼 설명해 주실 수 있을까요? 자바 프로그램이 실행되면 JVM은 OS로부터 메모리를 할당받아 용도에 따라 여러 영역으로 나누어 관리합니다. 스택 메모리 영역은 정적으로 할당된 메모리 영역으로 기본 자료형 데이터 값이 저장되는 공간이며 각 스레드마다 별도로 할당됩니다. 후입선출(LIFO)의 형태로 동작하며, 메서드가 호출되면 필요한 메모리 공간을 할당받고 메서드가 종료되면 사용하던 메모리를 반환합니다. 힙은 동적으로 할당하여 사용하는 영역으로 모든 스레드에서 공유됩니다. new 연산자에 의해 생성되는 참조형 데이터 타입의 객체나 배열이 생성되는 공간으로 객체를 참조하는 레퍼런스 변수는 stack 영역에 저장됩니다. Heap 영역과는 달리 호출이 끝나더라도 삭제..

++/CS 2024.03.07

[TIL] CS공부 2일차

JPA의 더티 체킹이란 무엇인가요? Dirty는 데이터의 변경된 부분을 뜻하며 Dirty Checking은 데이터의 변경된 부분을 검사하는 것을 뜻합니다. 대표적으로 데이터 update 시 사용되는데, 따로 update에 관한 쿼리를 작성하지 않아도 dirty checking을 통해 변경된 부분을 감지하여 데이터 업데이트를 수행하기 때문에 코드의 복잡성을 줄일 수 있습니다. 더티 체킹은 영속성 컨텍스트가 관리하는 엔티티에만 적용되며, Transaction이 커밋되기 전까지 변경사항을 추적하여 스냅샷을 만들어놓고 Transaction이 커밋된 시점에서 스냅샷과 비교해 변경된 사항이 감지되면 update 쿼리를 데이터베이스로 전달하여 엔티티의 변경된 상태를 반영합니다. 하지만 Dirty Checking으로 ..

++/CS 2024.03.06

[TIL] CS공부 1일차

Call by reference란 무엇이고 보통 어떻게 쓰이나요? Call by reference는 함수 호출 방법 중 하나로 참조에 의한 호출이라고 합니다. 함수 호출 시 인수로 전달되는 변수의 값 주소를 참조하는 방식으로 별도 메모리를 사용하지 않고 주소만 참조하기 때문에 빠르다는 장점이 있으나, 호출된 함수에서 해당 값이 변경될 경우 원래 값에도 영향을 준다는 단점이 있습니다. Call by reference와 달리 Call by value는 값에 의한 호출로, 값을 복사하여 처리하는 방식입니다. 원래 값이 보존될 수 있다는 장점이 있지만 복사로 인해 메모리 사용량 증가한다는 단점이 있습니다. C언어에서는 포인터 변수(*)를 파라미터로 지정하고 함수 호출 시 주소연산자(&)를 이용해 매개변수의 주소..

++/CS 2024.03.05

주니어 자바 개발자를 위한 100가지 질문(1) - 기초

인프런에서 매일 뉴스레터처럼 메일을 보내주는데, 단어짱이라고 해서 IT 용어들을 하나씩 알려준다. 한 번에 이런 용어나 개념을 정리할 방법이 없을까 찾다가 커리어리에서 컬리 백엔드 개발자인 조서희 님이 정리해서 올려준 100가지 질문을 발견! 무엇이든지 공부할 때 나의 언어로 바꿔서 흡수하는 과정도 굉장히 필요한 것 같다. 💻 JDK와 JRE의 차이점은 무엇입니까? 더보기 ✅ JRE는 자바 실행 환경으로 자바 프로그램을 실행하는 데 필요한 것이고, JDK는 자발 개발 도구로 자바 애플리케이션을 개발하기 위해 필요한 기능으로 JRE를 포함합니다. JRE(Java Runtime Environment) - 자바 실행 환경으로 단순히 실행하기 위한 목적이라면 JRE만으로도 가능하나 컴파일 에러가 날 가능성이 있..

++/CS 2023.12.20