동기 (Synchronous) vs 비동기(Asynchronous) 동기와 비동기의 차이를 간략하게 보면 직렬식, 병렬식 구조라고 볼 수 있다. 즉 동기가 직렬식이며 비동기가 병렬식으로 작동한다. 왼쪽이 동기식 방식이며 하나의 태스크가 끝날 때까지 기다렸다가 다음 태스크가 실행된다. 총 실행 시간으로 따지자면 '동기' 방식이 더 느리다. 오른쪽이 비동기식 방식이다. 한번에 여러 태스크가 동시에 병렬적으로 실행된다. 동기 (Synchronous) 요청과 결과가 한 자리에 동시에 나타나는 것으로 사용자가 서버로 요청을 보냈을 경우 요청에 대한 응답을 리턴받기 전까지는 다른 것을 하지 못하고 기다려야 한다. 특정 프로그램을 구동시키는 데 시간이 5분 소요된다고 하면, 이 프로그램이 구동되는 5분동안 컴퓨터는 ..
DI(Dependency Injection)란? 스프링에서 의존성 주입(DI)이란, 객체간 의존성을 개발자가 객체 내부에서 직접 호출(new연산자)하는 대신, 외부(스프링 컨테이너)에서 객체를 생성해서 넣어주는 방식이다. 외부에서 두 객체 간의 관계설정을 해주는 디자인 패턴으로, 인터페이스를 사이에 두어 클래스 레벨에서는 의존관계가 고정되지 않도록 하고, 런타임 시 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 한다. DI 방법 3가지 생성자 주입 setter 주입 필드 주입 생성자 주입(Constructor Injection) 생성자 주입은 아래와 같이 Constructor에 @Autowired Annotation을 붙여 의존성을 주입받을 수 있다. @Component public ..
조인(Join)이란? 조인이란 하나의 테이블이 아닌 두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 것을 말한다. 조인의 종류 중 대표적인 내부 조인, 왼쪽 조인, 오른쪽 조인, 합집합 조인이 있다. 조인의 필요성 - 관계형 데이터베이스의 구조적 특징으로 정규화를 수행하면 의미 있는 데이터의 집합으로 테이블이 구성되고 각 테이블끼리는 관계(Relationship)을 갖게 된다. - 이와 같은 특징으로 관계형 데이터베이스는 저장 공간의 효율성과 확장성이 향상되게 된다. - 다른 한편으로는 서로 관계있는 데이터가 여러 테이블로 나뉘어 저장되므로 각 테이블에 저장된 데이터를 효과적으로 검색하기 위해 조인이 필요하다. 내부조인(Inner Join) 내부조인이란 왼쪽 테이블과 오른쪽 테이블의 두 행이 모두 ..
final 키워드란? 자바에서 final 키워드는 크게 변수, 메서드, 클래스 에 사용할 수 있다. 변수에 final 을 사용하면, 해당 변수는 더이상 '재할당' 할 수 없게 된다. 메서드에 사용하면, 해당 메서드는 '오버라이드' 될 수 없다. 마지막으로 클래스에 사용되면, 해당 클래스는 '상속' 할 수 없게된다. 즉, 부모 클래스가 될 수 없다는 의미이다. 이렇게 Java에서는 불변성을 확보할 수 있도록 final 키워드를 제공하고 있다. final 변수 변수에 final 를 붙이면 해당 변수는 첫 초기화 이후, 재할당이 불가능해진다. final int num = 100; num = 50 // error : java: cannot assign a value to final variable num 이렇게..
데이터베이스를 설계를 하면서 PK, UK, FK 를 많이 들어 봤을 것이다. 데이터베이스에서 자주 쓰이는 키의 종류이다. 이것에 대해 정확하게 한번 개념 정리하고 가면 좋을 것 같아서 정리 하고자 한다. PK(Primary Key) 주 식별자키로 테이블의 모든 데이터를 식별하는 컬럼이다. - 중복이나, NULL 불가 - 테이블 생성시 단 한개의 PK설정 - 고유 인덱스 자동 생성이 가능 FK(Foreign Key) 외부 식별자키(= 참조키)로 테이블 간의 관계를 의미한다. 두 테이블 간의 종속이 필요한 관계이면, 그 접점이 되는 컬럼을 FK로 지정하여 서로 참조 할 수 있도록 관계를 맺어준다. 테이블 간의 잘못된 매핑을 방지하는 역할도 한다. - FK 선언한 테이블이 하위 테이블 - 참조하는 테이블은 부..
정규화(Normalization)란? 데이터베이스 정규화는 관계형 데이터베이스 데이터 모델의 중복을 최소화하고 데이터의 일관성, 유연성을 확보하기 위한 목적으로 데이터를 분해하는 과정을 뜻한다. 정규화를 하는 목적은 데이터들을 조금 더 효율적으로 관리하는 것에 있다. 정규화의 장점 데이터베이스 변경 시 이상 현상(Anomaly)을 제거할 수 있다. 정규화된 데이터베이스 구조에서는 새로운 데이터 형의 추가로 인한 확장 시, 그 구조를 변경하지 않아도 되거나 일부만 변경해도 된다. 데이터베이스와 연동된 응용 프로그램에 최소한의 영향만을 미치게 되어 응용프로그램의 생명을 연장시킨다. 정규화의 단점 릴레이션의 분해로 인해 릴레이션 간의 JOIN연산이 많아진다. 질의에 대한 응답 시간이 느려질 수도 있다. 데이터..
프로그래밍을 하면서 가장 많이 접하는 프로그래밍 언어인 C, Java, Python 의 각 특징을 알아 보려고 한다. 해당 내용은 실제 기술 면접시 받았던 질문이며, 부족함을 느껴서 정리하고자 한다. 또한 개발 직무를 하면서 각 프로그래밍 언어의 특징을 알고 사용하면 좋을 것 같아서 간략하게 정리하고자 한다. C언어의 특징 1. C언어로 작성된 프로그램은 다양한 하드웨어로의 이식성이 좋다. 2. C언어는 절차 지향 프로그래밍 언어로, 코드가 복잡하지 않아 상대적으로 유지보수가 쉽다. 3. C언어는 저급 언어의 특징을 가지고 있으므로, 어셈블리어 수준으로 하드웨어를 제어할 수 있다. 4. C언어는 코드가 간결하여, 완성된 프로그램의 크기가 작고 실행 속도가 빠르다. Java 란? 자바는 C언어에 객체 지향..
쿠키, 세션, 캐시 개념을 알기 전에 우선 HTTP 의 특징을 간략하게 먼저 보자. HTTP 의 특징 1 . Stateless ( 무상태성 ) 클라이언트의 상태 정보를 가지지 않는 서버 처리 방식. 클라이언트와 첫번째 통신에서 데이터를 주고 받았다 해도, 다음에 이전 데이터를 유지하지 않는다. 2 . Connectionless ( 비연결성 ) 클라이언트가 서버에 요청을 했을 때,그 요청에 맞는 응답을 보낸 후 연결을 끊는 방식 +) HTTP 1.1 버전에서 연결을 유지하고, 재활용 하는 기능이 Default 로 추가되었다. (keep-alive 값으로 변경 가능 ) 상태 유지 (Stateful)의 필요성 HTTP 요청은 Stateless하기 때문에 정보가 유지 되지 않는다. 우리가 페이지를 이동하더라도 ..
MVC 구조란? MVC 구조는 Model, View, Controller 로 구성된 구조이다. MVC 구조를 이용하게 되면 웹페이지를 구성하는 요소들(시각적인 요소, 데이터를 담당하는 요소) 드 ㄹ끼리의 간섭없이 각각 독립적으로 개발함으로서 큰 효율을 낼 수 있다는 장점이 있다. Model 이란? Model 은 데이터를 처리하는 역할을 담당한다. Controller 에서 명령을 받고 Database 에서 데이터를 저장하거나 삭제, 업데이트, 변환 등의 작업을 수행한다. Model은 3가지의 규칙을 가지고 있다. 1. 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 한다. 즉, 화면 안의 네모박스에 글자가 표현이 되도록 사용자가 설정을 하였다면, 네모박스의 위치, 크기, 글자의 내용, 글자의 위치 등..
𝟙. Bubble Sort (버블 정렬, 거품 정렬) 버블 정렬은 정렬하면 쉽게 생각 할수 있는 정렬 알고리즘이다. 버블 정렬은 두 개의 인접한 원소를 비교하여 정렬하는 방식이다. 버블 정렬은 데이터를 '비교'하면서 찾기 때문에 '비교 정렬'이며 정렬의 대상이 되는 데이터 외에 추가적인 공간을 필요로 하지 않기 때문에 '제자리 정렬(in-place sort)'이기도 하다. 정확히는 데이터를 서로 교환하는 과정(swap)에서 임시 변수를 필요로 하나, 이는 충분히 무시할 만큼 적은 양이기 때문에 제자리 정렬로 보는 것이다. 시간 복잡도는 O(N^2) 이다. 버블 정렬 진행 과정 초기배열이 위와 같이 주어졌을 때, 모든 원소들이 위와 같은 과정으로 비교 과정이 진행 되며, 숫자가 클때는 두 숫자가 스왑이 된..
- 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 |