동기 (Synchronous) vs 비동기(Asynchronous) 동기와 비동기의 차이를 간략하게 보면 직렬식, 병렬식 구조라고 볼 수 있다. 즉 동기가 직렬식이며 비동기가 병렬식으로 작동한다. 왼쪽이 동기식 방식이며 하나의 태스크가 끝날 때까지 기다렸다가 다음 태스크가 실행된다. 총 실행 시간으로 따지자면 '동기' 방식이 더 느리다. 오른쪽이 비동기식 방식이다. 한번에 여러 태스크가 동시에 병렬적으로 실행된다. 동기 (Synchronous) 요청과 결과가 한 자리에 동시에 나타나는 것으로 사용자가 서버로 요청을 보냈을 경우 요청에 대한 응답을 리턴받기 전까지는 다른 것을 하지 못하고 기다려야 한다. 특정 프로그램을 구동시키는 데 시간이 5분 소요된다고 하면, 이 프로그램이 구동되는 5분동안 컴퓨터는 ..
DI(Dependency Injection)란? 스프링에서 의존성 주입(DI)이란, 객체간 의존성을 개발자가 객체 내부에서 직접 호출(new연산자)하는 대신, 외부(스프링 컨테이너)에서 객체를 생성해서 넣어주는 방식이다. 외부에서 두 객체 간의 관계설정을 해주는 디자인 패턴으로, 인터페이스를 사이에 두어 클래스 레벨에서는 의존관계가 고정되지 않도록 하고, 런타임 시 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 한다. DI 방법 3가지 생성자 주입 setter 주입 필드 주입 생성자 주입(Constructor Injection) 생성자 주입은 아래와 같이 Constructor에 @Autowired Annotation을 붙여 의존성을 주입받을 수 있다. @Component public ..
𝟙. Bubble Sort (버블 정렬, 거품 정렬) 버블 정렬은 정렬하면 쉽게 생각 할수 있는 정렬 알고리즘이다. 버블 정렬은 두 개의 인접한 원소를 비교하여 정렬하는 방식이다. 버블 정렬은 데이터를 '비교'하면서 찾기 때문에 '비교 정렬'이며 정렬의 대상이 되는 데이터 외에 추가적인 공간을 필요로 하지 않기 때문에 '제자리 정렬(in-place sort)'이기도 하다. 정확히는 데이터를 서로 교환하는 과정(swap)에서 임시 변수를 필요로 하나, 이는 충분히 무시할 만큼 적은 양이기 때문에 제자리 정렬로 보는 것이다. 시간 복잡도는 O(N^2) 이다. 버블 정렬 진행 과정 초기배열이 위와 같이 주어졌을 때, 모든 원소들이 위와 같은 과정으로 비교 과정이 진행 되며, 숫자가 클때는 두 숫자가 스왑이 된..
HTTP Method 란? HTTP 메서드란 클라이언트와 서버 사이에 이루어지는 요청(Request)과 응답(Response) 데이터를 전송하는 방식을 일컫는다. 쉽게 말하면 서버에 주어진 리소스에 수행하길 원하는 행동, 서버가 수행해야 할 동작을 지정하는 요청을 보내는 방법이다. 주요 메소드 GET : 리소스 조회 POST: 요청 데이터 처리, 주로 등록에 사용 PUT : 리소스를 대체(덮어쓰기), 해당 리소스가 없으면 생성 PATCH : 리소스 부분 변경 (PUT이 전체 변경, PATCH는 일부 변경) DELETE : 리소스 삭제 기타 메소드 HEAD : GET과 동일하지만 메시지 부분(body 부분)을 제외하고, 상태 줄과 헤더만 반환 OPTIONS : 대상 리소스에 대한 통신 가능 옵션(메서드)을..
동일성 (Identity) 동일성은 비교 대상의 두 객체의 메모리 주소가 같음을 의미하는 것 이다. 자바에서 동일성은 비교연산자 == 로 확인할 수 있다. Number number1 = new Number(1); Number number2 = number1; System.out.println(number1 == number2); number2 는 Number 의 인스턴스를 새로 생성하지 않고, number1 을 대입받는다. 즉 number1 와 number2 는 같은 메모리 주소에 위치한 같은 객체를 바라보고 있다. 객체는 각자의 고유한 식별자를 가지고 있는데, 이 식별자가 같다면 동일하다고 판단한다. 동등성 (Equality) 동등성은 동등하다는 뜻으로 두 개의 객체가 같은 정보를 갖고 있는 경우를 의..
List vs Set List 와 Set은 크게 Ordered collection vs Unordered collection / 중복 가능 여부로 나누어 볼수 있다. 그 이유는 List는 순서가 있는 Collection이다. List에 데이터를 넣는 순서가 보장되며, 그렇기 때문에 index로 특정 아이템을 가져올 수 있다. 또한 데이터 중복이 가능하다. Set는 순서를 보장하지 않는 Collection이다. 그렇기 때문에 index로 특정 아이템을 가져올 수 없다. 또한 데이터 중복이 불가능하다. List - 입력 순서를 유지하며, 데이터의 중복을 허용 - 인덱스를 통해 저장 데이터에 접근이 가능 Set - 입력 순서를 유지하지 않으며, 데이터의 중복 허용하지 않음 - 데이터에 null 입력 가능하나,..
Redis 란? Redis는 오픈 소스로서 NoSQL로 분류되기도 하고, Memcached와 같이 인 메모리 솔루션으로 분류되기도 한다. 성능은 Memcached에 버금가면서 다양한 데이터 구조체를 지원함으로써 DB, Cache, Message Queue, Shared Memory 용도로 사용될 수 있다. 한편, Redis는 Remote Dictionary Server의 약자로 외부에서 사용 가능한 Key-Value 쌍의 해시 맵 형태의 서버라고 생각할 수 있다. 그래서 별도의 쿼리 없이 Key를 통해 빠르게 결과를 가져올 수 있다. 또한, 디스크에 데이터를 쓰는 구조가 아니라 메모리에서 데이터를 처리하기 때문에 작업 속도가 상당히 빠르다. 즉, 레디스(Redis)는 고성능 키-값 저장소로서 문자열, 리..
스택 (Stack) 이란? 스택은 쌓다라는 의미로, 데이터를 차곡차곡 쌓아 올린 형태의 자료구조이다. 데이터가 순서대로 쌓이며, 가장 마지막에 삽입된 자료가 가장 먼저 삭제되는 구조를 가지고 있다. 가장 대표적인 예시로는 프링글스 과자를 생각하면 된다. 스택은 정해진 방향으로만 쌓을 수 있으며, top으로 정한 곳을 통해서만 접근 할 수 있다. 새로 삽입 되는 자료는 top이 가리키는 가장 맨 위에 쌓이게 되며, 자료를 삭제할 때도 top을 통해서 삭제가 가능하다. 여기서 삽입연산을 Push, 삭제 연산을 Pop 라고 하며 이러한 스택 구조를 후입 선출(LIFO - Last In First Out) 구조라고 한다. 스택(stack)의 사용 사례 - 웹 브라우저 방문 기록(뒤로가기) - 실행 취소(undo..
소프트웨어 개발 프로세스 모델이란? 소프트웨어 개발 프로세스 모델은 소프트웨어 개발 생명주기를 기반으로 정해진다. 소프트웨어 개발 생명 주기 관련 글을 ➡️ 여기 를 참고하면 된다. 소프트웨어 개발 프로세스 모델의 종류 6가지는 아래와 같다. 폭포수 모델 V 모델 프로토타입 모델 나선형 모델 진화적 모델 애자일(Agile) 모델 폭포수 모델 (waterfall model) 폭포수 모델(waterfall model)은 순차적인 소프트웨어 개발 프로세스(소프트웨어를 만들기 위한 프로세스)로, 개발의 흐름이 마치 폭포수처럼 지속적으로 아래로 향하는 것처럼 보이는 데서 이름이 붙여졌다. 이 폭포수 모델의 흐름은 소프트웨어 요구사항 분석 단계에서 시작하여, 소프트웨어 설계, 소프트웨어 구현, 소프트웨어 시험, 소..
소프트웨어를 체계적으로 관리하고 관리하기 위해 개발 과정을 단계별로 나누어 구분 한 것을 소프트웨어 개발단계, 소프트웨어 생명주기 라고 한다. 일반적으로 6단계로 구분하며, 이 단계에 대해서 알아보고자 한다. 1️⃣ 1단계 : 요구사항 분석 문제 분석 단계 개발할 소프트웨어의 기능과 제약조건, 목표 등을 소프트웨어 사용자와 함께 명확히 정의 개발할 소프트웨어의 성격을 정확히 이해하고, 개발 방법과 필요한 갭라 자원 및 예산을 예측 요구명세서 작성 2️⃣ 2단계 : 시스템 명세 시스템이 무엇을 수행해야 하는가를 정의하는 단계 입력자료, 처리내용, 생성되는 출력이 무엇인지를 정의 시스템 기능 명세서 작성 3️⃣ 3단계 : 설계 시스템 명세 단계에서 정의한 기능을 실제로 수행하기 위한 방법을 논리적으로 결정하..
- Total
- Today
- Yesterday
- 코테준비
- 프로그래머스 카카오
- 알고리즘공부
- 취준
- 제로베이스 백준 장학금
- 개발자 면접 준비
- 알고리즘 공부
- 백엔드 개발자 기술 면접 준비
- 취업준비
- 코딩테스트공부
- 프로그래머스 자바
- 개발자 취준
- 백엔드 개발자 취업 준비
- 백준
- 자바
- 프로그래머스
- 코딩테스트 공부
- 알고리즘
- 코테공부
- 기술 면접 준비
- 코딩테스트
- 코딩테스트 준비
- 취업 준비
- 개발자 취업 준비
- 백엔드 개발자
- 제로베이스 백엔드 스쿨
- 자바공부
- java
- 코테 준비
- 주니어 개발자 취업 준비
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |