본문 바로가기

전체 글70

[Java] Java GC 쉽게 이해하기 ✋🏻 들어가며.. 기존에는 책 내용을 그대로 작성하고(거의 필사수준,,) 나 자신이 이해하기 위해서 블로그 글을 작성했다면, 이제는 남에게 설명하듯이 블로그 글을 작성하려 합니다. 이전 글들과 서술 방식이 다를 수 있습니다. GC란 우리는 Java 프로그래밍을 하면서 new라는 키워드를 사용하여 객체를 생성합니다. 이 때 new가 붙은 객체는 Heap 영역에 동적으로 메모리를 할당해줍니다. 이렇게 동적으로 할당된 메모리는 더 이상 사용하지 않으면 해제되어야 합니다. 해제하지 않으면 메모리를 계속해서 점유하고 있으므로 OutOfMemmory Exception 이 발생할 수 있습니다. 이렇게 동적으로 할당된 메모리를 해제해주는 작업을 하는 것이 GC입니다. 정리하자면 다음과 같습니다. GC란 Garbage .. 2021. 10. 15.
면접 질문 정리 (1) 본 글은 면접 예상 질문을 정리하는 글로 계속해서 추가할 예정입니다. 🎃 질문에 대해 두루뭉실하지 않게 명확하고 정확한 답변을 할 수 있도록 하는 것이 목표입니다. 1. Reference Type(참조 자료형)과 Primitive Type(기본 자료형)의 차이점은 무엇인가요? 참조 자료형은 new라는 예약어를 사용해서 초기화를 해야하지만 기본 자료형은 바로 값을 입력해 초기화를 할 수 있습니다. 참조 자료형은 생성시 Heap 메모리에 생성이 되고, 기본 자료형은 Stack 메모리에 생성이 됩니다. 2. 오버로딩과 오버라이딩의 차이점은 무엇인가요? 오버로딩은 한 클래스 내에 같은 이름의 메소드를 여러 개 정의하는 것입니다. 이름은 같지만 매개변수 또는 타입이 달라야 합니다. 오버라이딩은 상속을 받은 클래스.. 2021. 10. 13.
[8주차] 멘토링 키워드 📝 java8의 기본 GC가 무엇인지, 그리고 그 이외에 다른 GC에 대해서 GC (Garbage Collecton) 란? 더이상 사용하지 않는 객체 등을 메모리에서 해제(삭제)하는 JVM의 작업 Java 7, 8은 기본 GC로 Parallel GC를 사용하고, Java 9, 10 은 G1 GC를 사용한다고 한다. Serial GC 순차적인 GC 라는 의미로, Mark-Sweep-Compaction 알고리즘이 한 번에 하나씩만 동작한다. 가장 오래된 GC이며, 요즘에는 사용되지 않고, 사용해서도 안된다. Stop-The-World 시간이 너무 길기 때문이다. Parallel GC Serial GC가 하나의 스레드로 Mark-Sweep-Compaction을 수행한다면, Parallel GC는 여러 개의 스.. 2021. 10. 6.
[백준] 9012 - 괄호 문제 : https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 입력 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 주어진다. 입력의 첫 번째 줄에는 입력 데이터의 수를 나타내는 정수 T가 주어진다. 각 테스트 데이터의 첫째 줄에는 괄호 문자열이 한 줄에 주어진다. 하나의 괄호 문자열의 길이는 2 이상 50 이하이다. 출력 출력은 표준 출력을 사용한다. 만일 입력 괄호 문자열이 올바른 괄호 문자열(V.. 2021. 10. 5.
[백준] 10773 - 제로 문제 : https://www.acmicpc.net/problem/10773 10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net 입력 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경우 해당 수를 쓴다. 정수가 "0"일 경우에 지울 수 있는 수가 있음을 보장할 수 있다. 출력 재민이가 최종적으로 적어 낸.. 2021. 10. 5.
[Spring] PSA - 일관성 있는 서비스 추상화 본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다. 이 전글에서는 스프링 프레임 워크의 DI와 AOP에 대해 살펴봤다. 이제 마지막으로 살펴볼 스프링 삼각형의 요소는 PSA(Portable Service Abstraction). 즉, 일관성 있는 서비스 추상화다. 서비스 추상화의 예로 JDBC를 들 수 있다. JDBC라고 하는 표준 스펙이 있기에 오라클이든, MySQL이든 Connection, Statement, ResultSet을 이용해 공통된 방식으로 코드를 작성할 수 있다. 데이터베이스 종류에 관계없이 같은 방식으로 제어할 수 있는 이유는 디자인 패턴에서 설명했던 어댑터 패턴을 활용했기 때문이다. 이처럼 어댑터 패턴을 적용해 같은 일을 하는 다수의 기술을 공통의.. 2021. 10. 4.
[Spring] AOP 에 대해서 (2) 본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다. 이전글 : [Spring] AOP 에 대해서 (1) [Spring] AOP 에 대해서 (1) 본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다. 스프링의 3대 프로그래밍 모델 중 첫 번째인 DI를 지난 글에서 살펴봤다. 두 번째는 AOP이다. AOP는 Aspec yeoonjae.tistory.com 👌🏻 일단 덤벼 보자 - 용어편 용어 영한 사전 Aspect 관점, 측면, 양상 Advisor 조언자, 고문 Advice 조언, 충고 JoinPoint 결합점 PointCut 자르는 점 위의 표의 용어를 하나씩 알아보자. 🤷‍♂️ PointCut - 자르는 점? Aspect 적용 위치.. 2021. 10. 4.
[Spring] AOP 에 대해서 (1) 본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다. 스프링의 3대 프로그래밍 모델 중 첫 번째인 DI를 지난 글에서 살펴봤다. 두 번째는 AOP이다. AOP는 Aspect-Oriented Programming의 약자이고, 이를 번역하면 관점 지향 프로그래밍이 된다. 스프링 DI가 의존성(new)에 대한 주입이라면 스프링 AOP는 로직(code) 주입이라고 할 수 있다. 위의 그림을 보면 입금, 출금, 이체 모듈에서 로깅, 보안, 트랜잭션 기능이 반복적으로 나타나는 것을 볼 수 있다. 프로그램을 작성하다 보면 이처럼 다수의 모듈에 공통적으로 나타나는 부분이 존재한다. 바로 이것을 횡단 관심사(cross-sutting concern)라고 한다. 코드 = 핵심 관심사 + .. 2021. 10. 3.
[Spring] IoC/DI 제어의 역전/의존성 주입 (3) 본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다. 이전글 : [Spring] IoC/DI 제어의 역전/의존성 주입 (2) [Spring] IoC/DI 제어의 역전/의존성 주입 (2) 본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다. 이전글 : [Spring] IoC/DI 제어의 역전/의존성 주입 (1) [Spring] IoC/DI 제어의 역전/의존성 주입 (1) 본 글은 yeoonjae.tistory.com 이전 글에선 스프링의 XML파일과 @Autowired 어노테이션을 이용해 의존성을 주입하는 방법을 살펴보았다. 이번 글에서는 스프링의 @Resource 어노테이션을 통한 의존성 주입을 살펴보자. 스프링을 통한 의존성 주입 .. 2021. 10. 3.
[Spring] IoC/DI 제어의 역전/의존성 주입 (2) 본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다. 이전글 : [Spring] IoC/DI 제어의 역전/의존성 주입 (1) [Spring] IoC/DI 제어의 역전/의존성 주입 (1) 본 글은 📚 스프링 입문을 위한 자바 객체지향의 원리와 이해 를 읽고 정리한 내용입니다. 스프링을 이해하는 데에 POJO(Plain Old Java Object)를 기반으로 스프링 삼각형이라는 애칭을 가진 IoC/DI , A yeoonjae.tistory.com 이전 글에선 스프링 없이 의존성을 주입하는 방법을 살펴보았다. 이번 글에서는 스프링을 통한 의존성 주입을 살펴보자. 스프링을 통한 의존성 주입 - XML 파일 사용 의사코드 자바로 표현 ApplicationContext cont.. 2021. 10. 2.