1. 컴포넌트와 모듈의 차이 ① 컴포넌트: 런타임 개체 단위 ② 모듈: 실질적으로 구현이 된 단위 ※ 서버 / 클라이언트 구조에서 서버 1개 · 클라이언트 100개라면? → 모듈: 서버 1 + 클라이언트 1 = 2개 → 컴포넌트: 서버 1 + 클라이언트 100 = 101개 2. 자바란? "Write once, Run anywhere" 라는 특성의 객체지향 언어 3. 자바의 구동원리 ① 컴파일러가 코드를 검증하고 JVM이 읽는 바이트 코드 (.class) 로 변환한다. ② JVM 으로 바이트 코드를 가져온다. ③ 바이트 코드가 올바른지 검증한다. ④ 인터프리트한다. ⑤ 바이트 코드를 바이너리 코드로 변경하고 JVM 의 클래스 영역에 저장한다. ⑥ 런타임 과정에서 클래스들의 static 변수를 자동으로 초기..
스프링 프레임워크 핵심은 IOC (제어의 역전), DI (의존성 주입) 이다. 스프링 빈 스프링 빈의 특징 스프링 빈은 Singleton 으로 생성해 메모리나 성능 최적화에 유리하다. IOC (제어의 역전) 객체의 제어권을 다른 대상에게 위임한 것으로, 개발자 (또는 애플리케이션 코드) 가 아닌 프레임워크가 객체의 생성부터 소멸까지 관리하게 되는 것을 말한다. DI (의존성 주입) 한 클래스와 다른 클래스 사이의 의존 관계를 컨테이너가 빈을 가지고 자동으로 연결해주는 것을 말한다. AOP (관점 지향 프로그래밍) 프록시 패턴 기반의 구현체를 사용한다. 중복 제거, 객체 간 복잡도 증가에 대한 해결책이 될 수 있다. POJO 마틴 파울러는 EJB 에서 돌아서서 POJO 로 돌아와야 한다고 이야기했다. 비즈..
객체 지향 프로그래밍 캡슐화 항상 요구 사항은 추가되거나 변경될 수 있다 1. 객체의 의인화 현실 세계와는 다르게 가상 세계에서의 객체는 능동적이다. 2. 클래스 설계 - 객체가 형태를 갖추면 비슷한 객체들끼리 타입으로 묶어 클래스를 추상화한다. - 외부와 내부를 구분 지어야 한다. 외부와의 협력은 public 인터페이스를 통해서만 한다. - 객체가 능동적이기 위해서는 외부로부터의 간섭을 최소화해야 한다. 3. 객체의 특징 1. 캡슐화 - 객체의 세부적인 상태는 감추고 메시지는 오직 public 인터페이스로만 주고받는다. 2. 단일 책임 - 모든 객체는 맡은 일을 외부의 도움 없이 할 수 있어야 한다. 3. 응집도 - 밀접하게 연관되어 있는 일만 수행하고 관련이 없는 일은 다른 객체에게 위임해야 한다. ..
Array - 조회: 논리적 저장 순서 = 물리적 저장 순서 (random access O(1) 가능) - 삭제, 삽입: 접근 O(1) + shift O(n) = O(n) Linked List - 조회: 논리적 저장 순서 != 물리적 저장 순서 O(n) - 삭제, 삽입: O(n) Stack - LIFO or FILO Queue - Heap 구현하기 Stack 2개로 Queue 구현하기 하나는 입력만 받고, 다른 하나는 pop 만 하게 한 후, pop 하는 쪽이 비면 입력 받는 stack 에 원소가 있다면 pop 시켜서 가져오게끔 구현하면 된다. Tree - 포화 이진 트리: 모든 노드가 2개의 자식 노드를 갖는 트리 - 완전 이진 트리: 위에서 아래로, 왼쪽에서 오른쪽으로 차곡차곡 채워져 있는 트리 - ..
프로세스와 스레드 프로세스는 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 실행중인 프로그램을 말한다. 운영체제로부터 주소 공간, 파일, 메모리 등을 할당받으며 이를 총칭하여 프로세스라고 부른다. 더 구체적으로는 프로세스는 함수 매개 변수와 복귀 주소, 로컬 변수와 같은 임시 자료를 갖는 프로세스 스택과 전역 변수들을 갖는 데이터 섹션을 포함한다. 또 동적으로 할당되는 메모리의 영역인 힙을 포함한다. 프로세스는 PCB(Process Control Block) 이라고 하는 중요한 정보를 저장해놓는 공간을 갖고 있다. CPU 를 할당 받고 작업하는 도중에 반환해야 하는 상황이 생기면 PCB 에 작업 상황을 저장해놓고 반환한 후에 나중에 CPU 할당 받았을 때 PCB 로부터 작업 상황을 불러와서..
🚩 Introduction 스터디 중 코테에 가끔 등장하는 유형인 웹 브라우저 탐색 문제를 풀게 되었다. 구글링을 해도 답이 많지 않고, 푼 사람도 적은 문제라 도움이 될까 싶어 올린다. 📌 문제 https://www.acmicpc.net/problem/23294 23294번: 웹 브라우저 1 첫째 줄에 접속할 수 있는 웹페이지의 종류의 수 N, 사용자가 수행하는 작업의 개수 Q 와 최대 캐시 용량 C 이 순서대로 주어진다.(1 ≤ N, Q ≤ 2,000, 1 ≤ C ≤ 200,000) 둘째 줄에는 N개의 정수 CAPi www.acmicpc.net 📝 설명 간단히 뒤로 가기와 앞으로 가기에 있는 페이지 번호들을 각각 Deque 과 Stack 에 넣어서 풀었다. volume 이라는 변수로 현재 사용되는 캐..
Introduction 스프링 부트로 프로젝트를 진행하던 도중, 분명 레포지토리 클래스 위에 @Repository 어노테이션을 붙였는데 레포지토리 클래스를 찾을 수 없다는 문구와 함께 에러가 발생했다. 오류 내용 이 문제를 해결하고자 'debug' 옵션과 함께 다시 실행해보았다. logging: level: root: WARN org: springframework: web: DEBUG hibernate: ERROR application.yml 파일에 위 코드를 추가해주었다. 발견한 원인 로그에서 발견한 내용은 사실상 'debug' 옵션을 켜기 전과 같은 설명을 하고 있었다. 아래는 쓰여 있던 내용이다. No qualifying bean of type 'com.example.fcmproject.reposi..
- Total
- Today
- Yesterday
- 역직렬화
- 인증/인가
- 도커
- docker
- google cloud
- 코딩 테스트
- DeSerialization
- spring security
- JPA
- 코테
- 깃랩
- LazyInitializationException
- @RequestBody
- Java Data Types
- Jackson
- gitlab
- N+1
- ResponseEntity
- 프로그래머스
- 기지국 설치
- 가상 서버
- JOIN FETCH
- 서버 호스팅
- Spring Boot
- 지연 로딩
- ci/cd
- 알고리즘
- JPQL
- DTO
- json web token
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |