목록분류 전체보기 (53)
Kim ByeungHyun

인덱스 데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료구조 책에 비유 데이터는 책의 내용 데이터가 저장된 레코드의 주소는 인덱스 목록에 있는 페이지 번호 인덱스를 만드는 이유 DBMS(Database Management System)도 데이터베이스 테이블의 모든 데이터를 검색해서 원하는 결과를 가져 오려면 시간이 오래 걸리기에, 칼럼의 값과 해당 레코드가 저장된 주소를 키와 값의 쌍으로 인덱스를 만들어 두는 것 인덱스는 항상 정렬된 상태를 유지하기에 원하는 값을 탐색하기엔 빠르지만 새로운 값을 추가, 삭제하는 경우에는 실행 속도가 느려짐. → 결론적으로, 인덱스는 데이터의 저장 성능을 희생하고 그 대신에 데이터의 읽기 속도를 높임 DBMS의 인덱스 관리 1. B+- Tree 인덱..

데이터를 보내기 위해 사용하는 프로토콜이 있는데, 그 프로토콜들이 TCP와 UDP입니다. OSI 7layer와 TCP/IP 4layer에 대한 사진 TCP(Transmission Control Protocol) TCP를 해석하면 전송을 제어하는 프로토콜(규약)이라는 뜻 → 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜 TCP는 연결형 서비스를 지원하는 프로토콜로 인터넷 환경에서 기본으로 사용합니다. TCP의 특징 연결 지향 방식 3-way handshaking 과정을 통해 연결을 설정하고 4-way handshakeing을 통해 해제한다. 흐름 제어 및 혼잡 제어 높은 신뢰성을 보장한다. UDP보다 속도가 느리다 전이중(Full-Duplex), 점대점(Point to P..
클래스 들이 다른 클래스에 의존하는 경우가 있다. 예로 SpellChecker라는 클래스에서 dictionary라는 유틸리티 클래스르 사용한다고 가정해보겠다. 1. 정적 유틸리티 클래스 // 사용은 이렇게 SpellChecker.isValid(word) 2. 싱글턴 // 사용은 이렇게 SpellChecker.INSTANCE.isValid(word) 두 방법 모두 확장에 유연하지 않고 테스트가 어렵다. 사전은 굉장히 여러 종류가 있는데(한국어 사전, 영어 사전, 특수 어휘용 사전등) dictionary 하나로만 이 역할을 모두 수행하기에는 어렵고, SpellCheacker는 dictionary 하나만 사용할 수 있기 때문이다. 사용하는 자원에 따라 동작이 달라지는 클래스는 위 두 방법이 적합하지 않다 fi..

mvc패턴은 디자인 패턴중 하나로, 디자인 패턴부터 설명하자면 프로그램이나 어떤 특정한 것을 정리하여 규약을 통해 쉽게 쓸 수 있는 형태로 만든것. 좀더 쉽고 편리하게 사용할 수 있게 만든 특정한 방법들을 디자인 패턴이라고 함. 스트래티지 패턴, 옵저버 패턴 등등 여러가지가 있고 그 중 하나가 MVC패턴. MVC Model, Vie, Contoller의 약자. 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴이다. Contoller를 조작하면 controller는 model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 view를 제어해서 사용자에게 전달하게 된다. 모델, Model 애플리케이션의 정보, 데이터를 나타낸다. 데이터베이스, 처음의..
Annotation이란? 사전적 의미로는 주석이라는 뜻이다. 자바에서 Annotation은 코드 사이에 주석처럼 쓰이며 특별한 의미, 기능을 수행하도록 하는 기술이다. - 프로그램에게 추가적인 정보를 제공해주는 메타데이터라고 볼 수 있다. - meta data : 데이터를 위한 데이터 애노테이션 사용 순서 애노테이션을 정의한다. 클래스에 애노테이션을 배치한다. 코드가 실행되는 중에 Reflection을 이용하여 추가 정보를 획득하여 기능을 실시한다. Reflection이란? Reflection이란 프로그램이 실행 중에 자신의 구조와 동작을 검사하고, 조사하고, 수정하는 것이다. Reflection은 프로그래머가 데이터를 보여주고, 다른 포맷의 데이터를 처리하고, 통신을 위해 serialization(직렬..

Swagger Swagger란 서버로 요청되는 URL 리스트를 HTML화면으로 문서화 및 테스트 할 수 있는 라이브러리이다. 간단하게 설명하면 Swagger는 API Spec 문서이다. API를 엑셀이나 가이드 문서를 통해 관리하는 방법은 주기적인 업데이트가 필요하기 때문에 관리가 쉽지 않고 시간이 오래 걸린다. 그래서 Swagger를 사용해 API Spec 문서를 자동화해주어 간편하게 API문서를 관리하면서 테스트할 수 있다. @ApiOperation(value = "전체 글가져오기", notes = "BD에 저장된 게시글을 전부 조회합니다") @ApiImplicitParams({ @ApiImplicitParam(name = "name", value = "value", defaultValue = "de..

@Async는 spring에서 제공하는 Thred Pool을 활용하는 비동기 메소드 지원 어노테이션이다. 비동기로 작동하길 원하는 method위에 @Async를 붙여주면 사용할 수 있다. @Async public void send(Member receiver, AlarmType alarmType, String message, Long articlesId, String title) { Notification notification = notificationRepository.save(createNotification(receiver, alarmType, message, articlesId, title)); String receiverId = String.valueOf(receiver.getMemberId(..
Server-Sent Event sse를 사용하면 웹페이지가 서버에서 업데이트를 가져올 수 있습니다. - 단방향 메시징 웹 페이지가 자동으로 서버로부터 업데이트를 받는것 입니다. 지원 브라우저 브라우저 구글 Chrome 마이크로소프트 Edge FireFox Safari Opera 버전 6.0 9.0 6.0 5.0 11.5 SSE는 HTTP를 기반으로 하므로 HTTP/2와 자연스럽게 맞고 결합합니다. HTTP/2는 다중화된 스트림을 기반으로 효율적인 전송 계층을 처리하고 SSE는 응용 프로그램에 API를 제공하여 활성화 합니다. 푸시. 즉석에서 HTTP/2를 통한 멀티플렉싱을 얻을 수 있습니다. 연결이 끊어지면 클라이언트와 서버에 알립니다. Server-Sent Event를 사용 할 수 있는 애플리케이션의..