분류 전체보기

제네릭 (Generic) 자바 제네릭(Generic)은 "데이터의 클래스 타입을 내부에서 지정하는 것이 아닌 외부에서 사용자에 의해 지정되는 것"을 의미한다. ArrayList list1 = new ArrayList(); ArrayList list2 = new ArrayList(); ArrayList list3 = new ArrayList(); 위와 같이 List마다 안에 들어갈 객체들이 각각 다를 경우 제네릭을 통해 다양한 자료구조를 사용할 수 있다. 만약 제네릭이 없었다면 String클래스, Integer 클래스 등 하나하나 타입에 맞게 자료구조를 만들어야 한다. 하지만, 제네릭은 이러한 문제를 해결해 준다. 특징 제네릭은 다이아몬드 표기법으로 타입 파라미터를 지정한다. 데이터 타입은 클래스 혹은 인..
HTTP Method는 클라이언트와 서버 사이에 이뤄지는 요청과 응답 데이터를 전송하는 방식이다. 서버에 주어진 리소스에 수행하길 원하는 행동, 서버가 수행해야 할 동작을 지정하는 요청을 보내는 방법이다. 총 9가지가 있으며 주로 GET, POST, PUT, PATCH, DELETE를 사용한다. 주요 메서드 GET : 리소스 조회 POST : 요청 데이터 처리, 주로 등록에 사용 PUT : 리소스를 대체(덮어쓰기), 해당 리소스가 없으면 생성 PATCH : 리소스 부분 변경 (PUT이 전체 변경, PATCH는 일부 변경) DELETE : 리소스 삭제 기타 메서드 HEAD : GET과 동일하지만 메시지 부분(body 부분)을 제외하고, 상태 줄과 헤더만 반환 OPTIONS : 대상 리소스에 대한 통신 가능..
Primary Key(기본 키) SQL 데이터베이스에서 특정 레코드를 유일하게 식별하기 위해 사용되는 필드 또는 필드의 집합 테이블에서 각 레코드를 식별하는 데 사용되며, 테이블의 각 레코드에는 Primary Key 값이 반드시 있어야 한다. 특징 각 레코드에 대해 고유하기 때문에 중복이 불가능하다. NULL 값이 허용되지 않는다. 레코드를 식별하는 데 사용, 테이블 당 하나의 기본키만 가질 수 있지만 경우에 따라 1개 이상의 기본키를 정의할 수도 있다. (다수 열 기본 키, 복합 기본 키) 생성 // 방법 1 CREATE TABLE USER ( id INT PRIMARY KEY, name VARCHAR, password VARCHAR ); // 방법 2 CREATE TABLE USER ( id INT ..
좋은 설계란 시스템의 요구 사항이나 변경사항이 있을 때, 영향을 받는 범위가 적은 구조를 말한다. 그래서 시스템에 예상하지 못한 변경사항이 발생하더라도, 유연하게 대처하고 이후에 확장성이 있는 시스템 구조를 만들 수 있다. 객체 지향 프로그래밍을 설계하면서 SOLID OOP 설계 원칙을 적용하게 되면, 코드를 확장하고 유지보수가 쉬워지며, 불필요한 복잡성을 제거해 개발의 생산성을 높일 수 있다. SOLID SOLID 원칙이란 객체 지향 설계에서 지켜줘야 할 5개의 소프트웨어 개발 원칙을 말한다.(SRP, OCP, LSP, ISP, DIP) SRP(Single Responsibility Principle) : 단일 책임 원칙 OCP(Open-Closed Principle) : 개방 폐쇄 원칙 LSP(Lis..
0. SQL SQL(Structured Query Language)는 구조적인 질의 언어라는 것이다. SQL을 통해서 데이터베이스의 제어, 관리를 할 수 있다. SQL은 하는 역할에 따라 3가지로 나눌 수 있다. DDL : 데이터 정의 언어 DML : 데이터 조작 언어 DCL : 데이터 제어 언어 1. DDL(Database Definition Language) 데이터 베이스 스키마를 정의하거나 조작하기 위해 사용되는 언어이다. 스키마, 도메인, 인덱스, 뷰, 테이블 등을 다음 명령어로 정의, 변경, 삭제한다. CREATE : 새로운 데이터베이스를 생성 ALTER : 기존 데이터베이스 객체 변경 DROP : 기존 데이터베이스 객체 삭제 TRUNCATE : 데이터를 되돌릴 수 없도록 제거 2. DML(Da..
쿼리 최적화 SQL을 최적화할 수 있는 7가지 방법 1. SELECT 시에는 꼭 필요한 칼럼만 불러와야 한다. 많은 필드 값을 불러올수록 DB느 더 많은 로드를 부담하게 되기 때문에 칼럼 중에 불필요한 값을 가진 필드가 있다면 과감히 제외하고, 필요한 열만 불러오는 것이 좋다. 2. 조건 부여 시, 별도의 연산을 걸지 않는 것이 좋다. Full Table Scan을 하는지 파악을 하면서 쿼리를 작성하는 것이 좋다. 예) 평점이 2점대를 찾을 때(만점이 5점) FLOOR(avg/2) = 2 → Full Table Scan을 한 뒤 연산 진행 avg BETWEEN 4 and 5 → index를 활용해서 빠른 탐색 가능 3. LIKE 사용 시 와일드카드 문자열(%)을 String 앞부분에는 배치하지 않는 것이..
CI/CD란 CI는 개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미한다. CD는 지속적인 서비스 제공(Continuous Delivery) 및 배포(Deployment)를 의미한다. 두 가지 의미 모두 파이프라인의 추가 단계에 대한 자동화를 뜻하지만 때로는 얼마나 많은 자동화가 이루어지고 있는지를 설명하기 위해 별도로 사용되기도 한다. CI/CD의 개념만을 두고 보자면 자동화와 직접적으로 관련이 있지는 않다. 하지만 그럼에도 자동화라는 키워드는 CI/CD라는 단어에 항상 따라붙으며, CI/CD는 DevOps 엔지니어의 핵심 업무라고 불리기도 한다. CI (지속적 통합, Continuous Integration) 애플리케이션의 버그 수정이나 새로운 코드 변경..
객체 지향 프로그래밍(OOP) 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체로 만들고, 객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 객체란? 객체는 프로그램에서 사용되는 데이터 도는 식별자에 의해 참조되는 공간을 의미하며 값을 저장할 변수(상태)와 작업을 수행할 메서드(행위)를 서로 연관된 것들끼리 묶어서 만든 것이다. 객체 지향 프로그래밍은 레고와 비슷하다. 객체가 레고의 조각이 될 것이고, 레고의 조각을 조립해서 무언가를 만드는 방식이 객체 지향 프로그래밍이라고 할 수 있다. 장점 코드 재사용이 용이 : 남이 만든 클래스를 가져와서 이용할 수 있고 상속을 통해 확장해서 사용할 수 있다. 유지보수 용이 : 수정해야 할 부분이 클래스 내부에 멤버 변수 혹은 메서드..
HTTP(HyperText Transfer Protocol)와 HTTPS(HyperText Transfer Protocol Security)는 웹에서 데이터를 전송하는 프로토콜이다. 이 둘의 주요 차이는 보안(Security)에 관한 것이다. HTTP 웹 서핑을 할 때 서버에서 자신의 브라우저로 데이터를 전송해 주는 용도로 많이 사용되며, 서버-클라이언트 모델에 맞춰 데이터를 주고받기 위한 프로토콜이다. 인터넷 초기에 모든 웹 사이트에서 기본적으로 사용되었던 프로토콜이며 80번 포트를 기본적으로 사용하고 있다. HTTP는 암호화가 되지 않은 평문 데이터를 전송하는 프로토콜이기 때문에 HTTP로 비밀번호나 주민등록번호 같이 중요한 정보를 주고받으면 제 3자가 정보를 조회할 수 있다. 이런 보안의 문제를 해..
들어가기 전... HTTP 프로토콜의 특징 Connectionless(비연결지향) HTTP 프로토콜은 클라이언트에서 서버에 요청(request)을 보내면 서버는 클라이너트에 응답(response)을 하고 연결을 끊는 특징이 있다. Stateless(상태정보 유지 안 함) HTTP 통신은 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보를 유지하지 않는 특징이 있으며, 이를 Stateless 하다고 한다. 그래서 HTTP프로토콜의 특징이자 약점을 보완하기 위해 쿠키(Cookie)와 세션(Session)을 사용한다. 통신이 끊어지면 상태정보가 유지되지 않기 때문에 매번 페이지를 이동할 때마다 로그인을 다시 하거나, 장바구니에 담고 결제 페이지로 넘어갔을 때 상품 정보가 존재하지 않거나 하는 문제..
들어가기 전 OSI 7 계층에서 전송 계층에서 사용되는 프로토콜(규약)이다. 전송 계층은 송신자와 수신자를 연결하는 통신서비스를 제공하는 계층으로, 데이터의 전달을 담당한다. 그리고 데이터를 보내기 위해 사용되는 프로토콜이 있는데, 바로 TCP와 UDP이다. TCP(Transmission Control Protocol) 전송을 제어하는 프로토콜이라는 뜻으로, 인터넷상에서 데이터를 메시지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜이다. TCP/IP 프로토콜이라고 불리기도 하는데, 메신저에서 친구와 채팅을 하거나, 이메일을 보내는 등 TCP 프로토콜을 사용한다. TCP는 연결 기반이므로 데이터를 전송하는 동안 수신자와 발신자 사이에 연결을 설정하고 이를 유지한다. 특징 연결형 서비스로 가상 회선 방..
CORS(Cross-Origin Resource Sharing) 직역하면 교차 출처 리소스 공유이다. 한 출처에 있는 자원에서 다른 출처에 있는 자원에 접근하도록 하는 개념 다른 출처에 있는 자원을 요청한다고 하면, 이를 교차 출처 요청이라고 부른다. 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제. 웹 애플리케이션은 리소스가 자신의 출처와 다를 때 교차 출처 HTTP 요청을 실행한다. - MDN 출처? 위 URL 구조에서 "Protocol, Host, Port" 3가지가 같으면 동일 출처(Origin)라고 한다. (Port는 80, 443 이면 생략이 가능하다) 예를 들어 "https://sk..
개요 한정된 수량을 준비된 재고보다 훨씬 많은 유저들이 동시에 구매를 시도할 때, 어떻게 하면 재고수량을 넘지 않게 구매가 완료될 수 있을까?? 200개의 재고를 총 10,000명의 유저가 요청했을 때 오버셀링이 일어나지 않아야 한다. Race Condition 여러 개의 프로세스가 공유 자원에 동시 접근할 때 실행 순서에 따라 결괏값이 달라질 수 있는 현상 A스레드가 구매를 요청하여 3개 남은 재고를 1 감소시키려 한다. 이때 B스레드도 3개 남은 재고를 확인하고 1 감소시키려 DB에 접근한다. 먼저 요청한 A스레드는 3에서 2로 잘 감소시키고 트랜잭션을 마쳤다. 하지만 B스레드는 3개의 재고를 확인하고 1 감소시켰기 때문에 마찬가지로 3에서 2로 감소시키고 재고를 2로 UPDATE 하였다. 3개의 재..
정규화(Normalization) 정규화란 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다. 이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 된다. 이를 구분하여 정규형이 높아질수록 이상현상은 줄어들게 된다. 즉, 테이블 간에 중복된 데이터를 허용하지 않는다는 것이다. 중복된 데이터를 허용하지 않음으로써 무결성을 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있다. 이상현상(Anomly) 삭제 이상 튜플 삭제 시 같이 저장된 다른 정보까지 연쇄적으로 삭제되는 현상 "장미란"이라는 학생의 정보를 지울 경우 "체육관 103" 강의실 정보도 같이 사라지게 되어 다른 튜플들이 "체육관 103"을 사용하지 못하는 경우에 발생한다. 삽입 이상 튜플 삽입 시 특정 속성에 해당..
Database, DBMS, SQL Database란 일반적으로 컴퓨터 시스템에 전자 방식으로 저장된 구조화된 정보 또는 데이터의 체계적인 집합 DBMS(DataBase Management System)란 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고 데이터베이스를 관리해 주는 소프트웨어 SQL(Strucured Query Languate)란 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이며 관계형 데이터베이스 관리 시스템이서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안 RDBMS DBMS 앞에 R이 붙어있는데, 이 R은 Relational의 약자로 RDBMS는 관계형 데이터베..
개발의 WinG
'분류 전체보기' 카테고리의 글 목록 (4 Page)