이상 현상(Anomaly)
이상현상 데이터베이스에서 정규화를 수행하지 않으면, 데이터의 중복이 발생하고 전체적인 무결성이 저하됩니다. 이러한 원인은 데이터 이상 현상(Anomaly)에 의해 발생하며, 이상 현상으로 인해 현실세계의 실제 값과 데이터베이스에 저장된 값이 일치하지 않는 문제가 발생합니다. 이상현상 종류 삽입이상 특정 데이터가 존재하지 않아 중요한 데이...
이상현상 데이터베이스에서 정규화를 수행하지 않으면, 데이터의 중복이 발생하고 전체적인 무결성이 저하됩니다. 이러한 원인은 데이터 이상 현상(Anomaly)에 의해 발생하며, 이상 현상으로 인해 현실세계의 실제 값과 데이터베이스에 저장된 값이 일치하지 않는 문제가 발생합니다. 이상현상 종류 삽입이상 특정 데이터가 존재하지 않아 중요한 데이...
포트번호란?? 포트 번호는 컴퓨터 네트워크에서 서비스 또는 프로세스를 식별하는 번호입니다. TCP/IP 프로토콜을 사용하는 네트워크에서 각 서비스나 프로세스는 특정 포트 번호에 할당됩니다 특정 프로그램이 ‘포트 번호’를 사용하게 됩니다. ⭢ 프로그램 하나가 포트 번호 하나만 사용할 수 있다. 다시 말해, 하나의 포트는 하나의 프로세스만 사용 가...
React? React는 View를 개발하는데 초점이 맞춰져있습니다. 오로지 DOM 객체의 갱신 및 이벤트 응답에만 관심을 갖게 됩니다. 리액트는 JSX라는 JavaScript의 확장 문법을 사용하여 UI를 선언합니다. JSX는 HTML과 JavaScript를 조합하여 컴포넌트의 UI를 표현하므로, 가독성이 뛰어나며 컴포넌트를 작성하기 쉽...
정규화 데이터베이스 설계에서 중복을 최소화하고 데이터의 무결성을 유지하기 위한 프로세스입니다. 주로 관계형 데이터베이스에서 사용되며 데이터의 불필요한 중복을 제거하여 데이터의 일관성을 유지하고 데이터베이스 구조를 최적화합니다. 제 1정규화 제 1정규화란, 하나의 속성에 하나의 값을 가지도록 하는 과정입니다. 제 1정규화 전 각 과목(...
변수란? 데이터를 담아두는 공간이며 프로그램에서 사용되는 데이터를 일정 기간 동안 기억하여 필요한 때에 다시 사용하기 위해 데이터에 고유의 이름인 식별자를 명시한 것입니다. 식별자 : 어떤 대상을 유일하게 식별할 수 있는 이름 변수명 : 변수에 명시한 고유한 식별자 변수값 : 변수로 참조할 수 있는 데이터 값 변수 선언 주의점 변수 이...
S3란? Amazon S3(Simple Storage Service)는 아마존 웹 서비스(AWS)가 제공하는 클라우드 스토리지 서비스입니다. S3는 파일, 데이터 및 다양한 유형의 미디어 등을 저장하고 관리하는 데 사용되는 웹 기반 스토리지 시스템입니다. S3 사용이유 S3는 저장 용량이 무한대이고 파일 저장에 최적화되어 있습...
static이란? Static은 ‘정적인, 고정된’이라는 뜻을 가지고 있습니다. static이 앞에 붙는 변수나 메서드는 어떤 객체에 소속되는 것이 아닌, 클래스에 고정되어 있는 변수나 메서드입니다. static의 특징? 메모리에 고정적으로 할당됩니다. 객체 생성 없이 사용할 수 있습니다. 프로...
Call by Value (값에 의한 호출) 함수가 호출될 때, 메모리 공간 안에서는 함수를 위한 별도의 임시 공간이 생성됩니다. 함수 호출시 인자로 전달되는 변수의 값을 복사하여 함수의 인자로 전달합니다. 복사된 인자는 함수 안에서 지역적으로 사용되는 local value의 특성을 가집니다. 따라서 함수 안에서 인자의 값이 변경되어도, 외...
Hash란? 임의의 데이터를 고정된 길이의 데이터로 매핑하는 함수를 말합니다. 이러한 해시 함수를 적용하면 어떠한 크기의 입력 데이터도 항상 일정한 길이의 해시값을 출력합니다. key의 길이 > hash의 길이 따라서 입력 데이터의 크기에 상관없이 동일한 길이의 해시값을 갖게 됩니다. 암호화에서의 Hash 많은 기관에서 사용자 ID...
📃 문제 🔨 풀이 public class Solution { public String solution(String my_string, String overwrite_string, int s) { StringBuilder result = new StringBuilder(my_string); for (in...
📃 문제 🔨 풀이 public class Solution { public long solution(int price, int money, int count) { long totalCost = 0; for (int i = 1; i <= count; i++) { ...
상속 Inheritance 상속은 부모 클래스의 특징을 자식 클래스가 물려받는 것입니다. 기본 클래스(base class)의 특징을 파생 클래스(derived class)가 상속받는다라고 합니다. 부모클래스 // 부모 클래스 Parent 정의 class Parent { private int privateMember = 10; ...
추상화란? 추상화는 클래스들의공통적인 요소를 뽑아서 상위 클래스를 만들어내는 것입니다. 반드시 상위 클래스일 필요는 없어서, 공통적인 속성과 기능을 정의한 하위 클래스를 생성할 수도 있습니다. 추상화는 공통적인 속성과 기능을 정의함으로써 코드의 중복을 줄이고, 클래스 간 관계를 효과적으로 설정하고, 유지/보수를 용이하게 하는 것입니다. 자바...
분명히 안다고 생각했는데 면접때 제대로 대답을 못해서 다시 정리하는 다형성이란? 다형성(polymorphism)이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미합니다. 자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조 할 수 있도록 하여 구현하고 있습니다. 다형성은 상속, 추상화와 더...
Redis 데이터 타입과 함수 문자열 String SET(key, value): 지정된 키에 값을 설정합니다. GET(key): 지정된 키의 값을 반환합니다. DEL(key): 지정된 키와 해당 값을 삭제합니다. INCR(key): 지정된 키의 값을 1씩 증가시킵니다. 값이 숫자로 저장되어 있어야 합니다. DECR(key): 지정된 ...
RedisTemplate? Spring 프레임워크에서 Redis와 상호 작용하기 위한 클래스입니다. ReedisTemplate을 사용하여 Redis의 다양한 데이터 구조를 다루는 데 사용됩니다. Redis는 문자열, 리스트, 해시, 집합, 정렬된 집합 등의 다양한 데이터 구조를 지원합니다 구성 요소 RedisConnectionFactory...
메세지 큐란? Queue 란 선입선출(First in First out) 구조를 가진 자료구조입니다. Queue 는 2개의 끝을 가지며 각각은 입구와 출구입니다. 새로운 데이터는 입구로 들어오고 나가는 데이터는 출구에서 나갑니다. 메세지 큐(Message Queue) 란 대용량의 데이터를 처리하기 위해 분산 처리할때 쓰는 것입니다. 프로...
C언어 기본구조 #include 문 #define 문 int main(void) { 명령문; ... return 문; } ========= **include ** #include <stdio.h> // 표준 입력/출력 함수를 포함하는 헤더 파일 #include는 소스코드 파일 내에서 다...
C언어 특징 C언어는 현재 사용하고 있는 거의 모든 컴퓨터 시스템에서 사용할 수 있는 프로그래밍 언어입니다. C언어는 저급 언어와 고급 언어의 특징을 모두 가지고 있는 절차 지향 프로그래밍 언어(procedure-oriented programming language)입니다. 장점 C언어로 작성된 프로그램은 다양한 하드웨어로의 ...
Garbage Collection(가비지 컬렉션)이란? 자바의 메모리 관리 방법 중의 하나로 JVM(자바 가상 머신)의 Heap 영역에서 동적으로 할당했던 메모리 중 필요 없게 된 메모리 객체(garbage)를 모아 주기적으로 제거하는 프로세스를 말합니다. 장점 Java(파이썬, 자바스크립트 등등)에서는 가비지 컬렉터가 메모리 관...
준비사항 먼저 회원가입을 진행합니다. 유치원 정보를 알아보기 위해 유치원 현황 데이터를 선택했습니다. 인증키를 확인합니다. SAMPLE URL 예시가 나와있습니다. 저는 서울 도봉구 유치원에 현황을 알아보도록 하겠습니다. 요청인자를 넣어서 URL을 만든 뒤 요청을 하였더니 데이터가 나옵니...
운영체제란? 프로그램 실행에 마땅히 필요한 요소들을 가리켜 시스템 자원, 혹은 줄여서 자원이라고 합니다. CPU, 메모리, 보조기억장치, 입출력장치 등과 같은 컴퓨터 부품들은 모두 자원이라고 볼 수 있습니다. 실행할 프로그램에 필요한 자원을 할당하고, 프로그램이 올바르게 실행되도록 돕는 특별한 프로그램이 바로 운영체제(operating sy...
변소 선언과 출력 <?php // 변수 선언 $name = "John"; $age = 25; // 변수 출력 echo "이름: " . $name . ", 나이: " . $age; ?> 조건문과 반복문 <?php // 조건문 $score = 85; if ($score >= 90) { ...
조인이란? 데이터를 불러 올 때 하나의 테이블만 사용하는 것이 아니라 두개 이상의 테이블을 합쳐서 필요한 데이터를 추출할 때 사용하는 것이 조인입니다. 즉, 여러 개의 테이블을 연결하여 하나의 테이블을 만드는 과정이라고 할 수 있습니다. INNER JOIN 조인 대상 테이블들 간에 일치하는 행만을 반환하며, 일치하지 않는 행은 결과에 포함...
지네릭스란? Box : 지네릭 클래스 T : 타입변수, 타입매개변수 Box : 원시 타입 지네릭스는 컴파일 시의 타입체크를 해주는 기능입니다. 객체의 타입을 컴파일 시에 체크하기 때문에 타입의 안정성을 높이고 형변환의 번거로움이 줄어듭니다. class Box<T> { T item; void setItem...
📃 문제 🔨 풀이 class Solution { public int[] solution(int[] num_list) { int[] answer = new int[num_list.length]; for(int i = 0;i<num_list.length;i++){ answer[i]=...
📃 문제 🔨 풀이 import java.util.*; class Solution { public int solution(int[] numbers) { Arrays.sort(numbers); return numbers[numbers.length-1]* numbers[numbers.lengt...
📃 문제 🔨 풀이 class Solution { public int[] solution(int[] numbers) { int[] answer =new int[numbers.length]; for(int i = 0; i < numbers.length; i++) { an...
문자열 함수 CONCAT(str1, str2): 두 문자열을 결합합니다. SUBSTR(str, start, length): 문자열의 일부를 추출합니다. INSTR(str, substr): 문자열에서 하위 문자열의 위치를 찾습니다. UPPER(str), LOWER(str), INITCAP(str) : 문자열을 대문자 또...
검색 조건 쿼리 리스트 조회 public List<EntityClass> retrieveAllEntities() { JPAQueryFactory queryFactory = new JPAQueryFactory(entityManager); List<EntityClass> result = queryF...
즉시로딩(Eager Loading)이란? 특정 엔티티를 조회할 때 연관된 모든 엔티티를 같이 로딩하는 것을 즉시 로딩(Eager Loading)이라고 합니다. 이와 같은 즉시 로딩은 연관된 엔티티를 모두 가져온다는 장점이 있지만, 실무에서 엔티티간의 관계가 복잡해질수록 조인으로 인한 성능 저하를 피할 수 없게 됩니다. 지연로딩(Lazy Lo...
QueryDSL이란? QueryDSL은 쿼리생성에 특화된 프레임워크를 의미합니다. JPA는 객체지향어플리케이션과 관계형DB 사이의 패러다임 불일치를 해결하는 프레임워크입니다. 개발자는 객체지향 관점으로 개발하고, JPA는 자동으로 SQL 쿼리문을 생성합니다. SQL문이 자동으로 생성되니 개발자는 SQL 관점 프로그래밍을 하지 않아도 됩니다. ...
컬렉션 프레임워크란? 컬렉션이란 여러 데이터의 집합을 의미합니다. 즉, 여러 데이터를 그룹으로 묶어놓은 것을 컬렉션이라고 합니다. 컬렉션을 다루는 데에 있어 편리한 메서드들을 미리 정의해 놓은 것을 컬렉션 프레임워크이라고 합니다. 컬렉션 프레임워크의 구조 주요 인터페이스로 List, Set, Map을 제공합니다. List List는 데...
함수형 인터페이스 표준 API 함수형 인터페이스(functional interface)는 추상메서드가 1개만 정의된 인터페이스를 말합니다. 이 인터페이스 형태의 목적은 자바에서 람다 표현식(Lambda Expression)을 이용해 함수형 프로그래밍을 구현하기 위해서 입니다. 함수적 인터페이스 표준 API는 java.util.function 패키...
📃 문제 🔨 풀이 class Solution { public int[] solution(int[] num_list) { int[] answer = {0,0}; for(int i=0; i<num_list.length ; i++){ int num = num_list[...
컴파일이란? 컴퓨터가 이해할 수 있는 언어로 바꾸어주는 과정을 말하며 java의 경우 컴파일의 결과로 자바가상머신(JVM)에서 실행가능한 “.class”파일이 생깁니다. 즉, 소스코드를 컴퓨터가 이해할 수 있는 기계어로 변환하는 작업을 말합니다. 빌드란? 사용자가 작성한 소스코드 파일(.java)을 컴파일해서 컴파일된 코드(.class)가...
리플렉션(Reflection)이란? 리플렉션은 구체적인 클래스 타입을 알지 못하더라도 그 클래스의 메서드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API입니다 자바는 정적인 언어라 부족한 부분이 많은데 이 동적인 문제를 해결하기 위해서 리플렉션을 사용합니다. 정적 언어: 컴파일 시점에 타입을 결정 ex) Java, C, C++ 등.....
인덱스(INDEX)란? DB에서 검색 속도를 높이기 위해 사용되는 기술입니다. INDEX는 DB에서 테이블의 특정 컬럼에 대한 데이터 구조이며, 전체 데이터를 스캔하지 않고 원하는 데이터를 찾기 때문에 검색 속도를 향상시킬 수 있습니다. 테이블의 모든 데이터를 검색하면 시간이 오래 걸리기 때문에 데이터와 데이터의 위치를 포함한 자료구조를 ...
Enum class란? Enum은 열거형이라고 불리며,서로 연관된 상수들의 집합을 의미합니다. Enumeration은 ”열거, 목록, 일람표” 라는 뜻을 가지고 있으며, 보통 한글로는 열거형이라고 부릅니다. 프로그래밍을 하다보면 여러개의 묶음 데이터를 다루게 되지만 데이터 주제에 따라 한정된 값만 가지는 경우가 있습니다. 예를 들어 요일에는 “...
String과 StringBuilder,StringBuffer의 차이점 Java에서 String 객체는 한번 값이 할당되면 그 공간은 변하지 않습니다. 할당된 공간이 변하지 않는 특성을 불변(Immutable)성이라고 하고, 할당된 공간이 변하는 특성을 가변(mutable)성이라고 합니다. String 불변성을 갖는다. → Immutable ...
== 연산자 두 개의 주소가 서로 같은지 비교합니다. String str1 = "hello"; String str2 = "hello"; System.out.println(str1 == str2);//true String str3 = new String("hello"); String str4 = new String("hello"); System....
PHP란? PHP는 웹을 위해서 만들어졌습니다. 서버 측에서 실행되는 프로그래밍 언어로 HTML을 프로그래밍적으로 생성해주고, 데이터베이스와 상호작용 하면서 데이터를 저장하고, 표현합니다. 정적으로 미리 저장된 파일이 그대로 전달되어 구현된 HTML의 코드 내부 안에 동적인 기능이 구현 가능한 PHP 코드를 넣어 웹페이지의 기능들을 실행할...
Entity 란? Entity 클래스는 실제 DataBase의 테이블과 1 : 1로 매핑되는 클래스로, DB의 테이블내에 존재하는 컬럼만을 속성(필드)으로 가져야 합니다. Entity 클래스는 상속을 받거나 구현체여서는 안되며, 테이블내에 존재하지 않는 컬럼을 가져서도 안됩니다. DTO (Data Transfer Object) DTO(Data...
웹 스토리지(Web Stroage) 웹 스토리지 (web storage)는 서버가 아닌, 클라이언트에 데이터를 저장할 수 있도록 지원하는 HTML5의 새로운 기능입니다. 웹스토리지와 쿠키의 기능 자체는 유사하지만 쿠키는 약 4KB까지 저장할 수 있지만, 웹 스토리지는 모바일은 최대 2.5KB, 웹 브라우저는 최대 5KB까지 저장할 수 있습니다. ...
ajax를 이용해서 이메일 중복체크를 해보려고 합니다! JSP <input type="button" value="중복확인"onclick="checkEmail()"></label> 버튼을 클릭했을 때 checkEamil()함수를 호출합니다. ajax function checkEmail() { var...
문제발생 ajax로 뷰를 만들다가 오류가 발생했다. 컨트롤러 @PostMapping(value = "/signup") public ResponseEntity<String> submitSignUp(@Valid @RequestBody MemberDto.PostDto postDto) throws Messa...
JSP,ajax로 회원가입을 해보려고 합니다. 이메일 인증은 따로 포스트 했습니다! 이메일 인증구현 바로가기 메뉴바에 있는 로그인을 누르면 로그인 폼에 있는 회원가입을 통해서 회원가입폼으로 이동가능합니다. 컨트롤러 @GetMapping("/signIn") public String signin() { return...
JSP로 view를 만들려고 한다. 컨트롤러 @GetMapping("/home") public String home() { return "home"; } /home으로 이동하면 hoem.jsp로 이동한다. 홈화면 <%@ page language="java" contentType="text/html; cha...
OAuth2란? 특정 애플리케이션(Client)에서 사용자의 인증을 직접 처리하는 것이 아니라 사용자 정보를 보유하고 있는 신뢰할 만한 써드 파티 애플리케이션(GitHub, Google, Facebook 등)에서 사용자의 인증을 대신 처리해 주고 Resource에 대한 자격 증명용 토큰을 발급한 후, Client가 해당 토큰을 이용해 써드 파티 ...
📃 문제 🔨 풀이 SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMD FROM DOCTOR WHERE MCDP_CD='CS' OR MCDP_CD='GS' ORDER BY HIRE_YMD DESC, DR_NAME; 의사이름, 아이디, ...
📃 문제 🔨 풀이 SELECT MAX(PRICE) AS MAX_PRICE FROM PRODUCT; MAX를 이용해서 가장 큰 값 알아냄
📃 문제 🔨 풀이 class Solution { public int[] solution(int money) { int[] answer = new int[2]; answer[0] = money / 5500; answer[1] = money % 5500; ...
📃 문제 🔨 풀이 class Solution { public int solution(int n, int k) { int answer = 0; answer= n*12000 + (k-n/10)*2000; return answer; } } 10인분당 음료수하나가 서비스이므로 ...
📃 문제 🔨 풀이 class Solution { public int solution(int[] array, int n) { int answer = 0; for(int i=0; i<array.length; i++){ if(array[i]==n) answer ++; }...
Servlet 란? Servlet이란 자바를 사용하여 웹을 만들기 위해 필요한 기술입니다. 클라이언트가 어떠한 요청을 하면 결과를 다시 전송해주는 역할을 합니다. 동작원리 HTTP요청이 오면 WAS(Web Aplication Server)는 Request, Response 객체를 새로 만들어서 서블릿 객체 호출하고 ...
JSP (JavaServer Pages ) 란? JSP 란 JavaServer Pages 의 약자이며 HTML 코드에 JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구입니다. JSP가 실행되면 자바 서블릿(Servlet)으로 변환되며 웹 어플리케이션 서버에서 동작되면서 필요한 기능을 수행하고 생성된 데이터를 웹페이지와 함께 클라이...
타입 변환 (Type Conversion) 하나의 타입을 다른 타입으로 바꾸는 것을 타입 변환 혹은 형변환 이라고 합니다. 프로그램에서 값의 대입이나 연산을 수행할 때는 같은 타입끼리만 가능합니다. 메모리에 할당받은 바이트의 크기가 상대적으로 작은 타입에서 큰 타입으로의 타입 변환은 생략할 수 있습다. 메모리에 할당받은 바이트의 크기가 큰 타입...
배열(Array) 배열은 메모리 상에 데이터(원소)를 연속하게 배치한 자료구조입니다. 배열을 구성하는 각각의 값을 배열 요소(element)라고 하며, 배열에서의 위치를 가리키는숫자를 인덱스(index)라고 합니다. 배열 선언&초기화 배열을 선언할때 미리 공간의 갯수(길이)를 지정해야 한다. 미리 지정을 하므로 공간의 제약이 생겨...
스프링 컨테이너(Spring Container)공식문서 스프링 컨테이너는 스프링 프레임워크의 핵심 컴포넌트이다. 스프링 컨테이너는 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공한다. 스프링에서는 자바 객체를 빈(Bean)이라 한다. 즉, 스프링 컨테이너는 내부에 존재하는 빈의 생명주기를 관리(빈의 생성, 관리,...
프로세스(Process)란? 운영체제로부터 자원을 할당받는 작업의 단위입니다. 실행 중인 프로그램으로, 메모리상의 독립적인 공간을 가집니다. 예를 들어 카카오를 실행하고, 구글과 유투브, 이클립스를 실행할 때 이는 각각의 프로세스를 실행시키는 것입니다. 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조...
HTTP 상태 코드는 웹 서버가 클라이언트에게 전송하는 세 자리 숫자로 된 코드로, 클라이언트에게 현재 요청이나 응답의 상태를 알려줍니다. 상태 코드는 특정한 의미를 가지며, 성공, 리다이렉션, 클라이언트 오류, 서버 오류 등 다양한 상황을 나타냅니다. 상태 코드는 HTTP 헤더에 포함되어 있습니다. 1xx (Informational...
HTTP (Hypertext Transfer Protocol)는 웹에서 데이터를 전송하는 데 사용되는 프로토콜로, 클라이언트와 서버 간의 통신을 담당합니다. HTTP 메서드는 클라이언트가 서버에게 요청을 어떻게 처리해야 하는지를 나타내는데, 각각의 메서드는 특정한 동작을 수행합니다. GET 서버에서 특정 리소스(웹 페이지, 이미지, 텍스트...
API란? 프론트엔드 측의 브라우저는 요청을 백엔드 측 서버에 보냅니다. 브라우저가 보낸 이 요청을 서버가 알아채기 위해서는 둘 사이에 약속된 신호가 있어야 합니다. 여기에 사용되는 것이 바로 API(Application Programming Interface)입니다. REST API란 HTTP URI(Uniform Resource ...
Continuous Integration (CI - 지속적 통합) CI는 빌드/테스트 자동화 과정입니다. 개발자를 위한 자동화 프로세스인 지속적인 통합을 의미합니다. 여러 개발자들이 동시에 작업하는 경우, 코드 충돌이나 통합 오류를 방지하기 위해 코드베이스를 자주 통합합니다. CI는 자동화된 빌드 및 테스트 프로세스를 사용하여 코드 변경 사...
인스턴스란? EC2는 컴퓨터를 한 대 빌리는 것이므로 컴퓨터로 할 수 있는 모든 일을 할 수 있습니다. 아마존이 전 세계에 만들어 놓은 데이터 센터(인프라)에 만들어져 있기 때문에 컴퓨터를 조작하기 위해 네트워크(인터넷)를 통해서 컴퓨터를 제어해야 한다는 차이점이 있을 뿐 일반적인 컴퓨터와 다른 점은 없습니다. 아마존 EC2를 통해서 할 수...
❓배포란? 배포란 개발한 서비스를 사용자들이 이용 가능하게 하는 일련의 과정입니다. Development 단계는 각자의 컴퓨터에서 코드를 작성하고 테스트하는 과정입니다. 개발 단계이기 때문에 실제 데이터를 이용하지 않고 더미 데이터를 이용해서 테스트합니다. Integration 단계는 각자의 컴퓨터에서 작성한 코드를 합치는 과정입니다. ...
RDS는 Relational Database Service의 약자로 AWS에서 제공하는 관계형 데이터베이스 서비스입니다. EC2 인스턴스에 데이터베이스를 설치하여 데이터를 관리하는 것은 자동으로 관리를 담당하는 부분이 매우 적기 때문에, 사용자가 일일이 시간을 투자하여 데이터베이스 엔진의 설치와 버전 관리, 데이터 백업을 해야 합니다. ...
EC2란 Elastic Compute Cloud의 약자로서 아마존 웹 서비스에서 제공하는 클라우드 컴퓨팅 서비스입니다. 클라우드 컴퓨팅은 인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스를 제공하는 서비스입니다. 아마존에서 가상의 컴퓨터를 한 대 빌리는 것과 같습니다 EC2 서비스도 사용한 만큼 비용을 지불하기 때문...
AMI는 소프트웨어 구성이 기재된 템플릿입니다. 이미지 종류로는 단순히 운영체제(윈도우, 우분투 리눅스 등)만 깔려있는 템플릿을 선택할 수도 있고, 아예 특정 런타임이 설치되어 있는 템플릿이 제공되는 경우도 있습니다. (우분투 + node.js, 윈도우 + JVM 등)
그리디알고리즘이란? 단순 무식하게, 현재 상황에서 최선의 선택만을 하는 알고리즘이다. 그리디 알고리즘은 매 순간 최선의 선택만을 하므로,이후의 상황에 대해서는 전혀 고려하지 않는다 그리디 알고리즘은 모든 상황을 고려하는 것이 아니기 때문에 시간을 크게 절약할 수 있다. 그리디 알고리즘의 조건 그리디 알고리즘을 사용하기 위해서는 크게 2가지...
추상클래스 미완성 설계도라고 할 수 있습니다. 왜냐하면 미완성 메서드(추상메서드)를 포함하고 있기 때문입니다. 추상클래스로 인스턴스를 생성할 수 없습니다.(미완성이기 때문) 추상클래스는 상속을 통해서 자손클래스에 의해서만 완성될 수 있습니다. 클래스 선엄부에 abstract를 붙이면 추상클래스가 됩니다. abstract class 클래스 이...
시간복잡도란? 효율적인 방법을 고민한다는 것 효율적인 알고리즘이란 입력값이 커짐에 따라 증가하는 시간의 비율을 최소화한 알고리즘을 구성 주어진 문제를 해결하기 위한 연산 횟수 일반적으로 수행시간은 1억번의 연산을 1초의 시간으로 간주하여 예측 시간 복잡도는 주로 빅-오 표기법을 사용해 나타낸다. 시간 복잡도 유형 Big-Ω(빅-오메가): ...
Tree란? 그래프의 여러 구조 중 단방향 그래프의 한 구조로, 하나의 뿌리로부터 가지가 사방으로 뻗은 형태가 나무와 닮아 있다고 해서 트리 구조라고 부릅니다. 용어정리 노드(Node) : 트리 구조를 이루는 모든 개별 데이터 루트(Root) : 트리 구조의 시작점이 되는 노드 부모 노드(Parent node) : 노드가 상하관계로...
먼저 들어간 데이터(data)가 먼저 나오는 FIFO(First In First Out) 혹은 LILO(Last In Last Out)가 특징 이 자료 구조는 입력과 출력의 방향이 고정되어 있으며, 두 곳으로 접근이 가능 Queue에 데이터를 넣는 것을 ‘enqueue’, 데이터를 꺼내는 것을 ‘dequeue’라고 함 Queue의 특징 1. F...
OOP는 Object Oriented Programming의 줄임말입니다. 객체(Object) / Oriented(지향) / Programming(프로그래밍) 객체 지향 프로그래밍이란 인간 중심적 프로그래밍 패러다임(견해, 사고법)이라고 할 수 있습니다. 즉, 현실 세계를 프로그래밍으로 옮겨와 프로그래밍하는 것을 말합니다. 객체지향의...
클래스는 객체를 생성하는 데 사용되는 설계도이며, 객체는 클래스를 기반으로 생성된 실체입니다. 클래스는 객체를 생성하는 데 사용되는 설계도입니다. 클래스는 속성(멤버 변수)과 동작(메서드)으로 구성됩니다. 클래스는 객체가 가져야 할 속성과 행동을 정의합니다. 객체는 클래스를 기반으로 생성된 실체입니다. 객체는 클래스에서 정의한 멤버 변수와...
자바에서는 실행 중인 프로그램을 위해 메모리를 여러 영역으로 구분하여 관리함 1. 메서드 영역(Method Area) 클래스 파일을 읽어들여 클래스에 대한 정보를 저장하는 곳입니다. 클래스에 대한 정보, 클래스 변수(static 변수), 상수(constant) 등이 저장됩니다. JVM이 시작될 때 생성되며, 모든 스레드에서 공유합니다. 프로그...
생성자는 객체가 생성될 때 자동으로 호출되는 메소드입니다. 생성자는 객체의 초기화를 수행하고, 객체가 사용될 준비가 된 상태로 만듭니다. 클래스 이름과 동일한 이름을 가집니다. 자바에서는 기본 생성자를 자동으로 제공합니다. 만약 클래스에 생성자가 정의되어 있지 않으면, 컴파일러는 기본 생성자를 자동으로 추가합니다. ...
메서드 오버로딩 같은 이름의 메서드를 여러 개 정의하는 것입니다. 이때 메서드의 매개변수의 개수나 타입이 다르면, 컴파일러는 해당 매개변수에 맞는 메서드를 선택합니다. 메서드 이름이 같아야 함 매개변수의 개수, 타입, 순서가 달라야 함 반환 타입과 접근 제어자는 메서드 오버로딩과 관련이 없음 메서드 오버라이딩 상위 클래스의 메...
재귀함수란? 재귀 함수(Recursive function)는 함수가 자기 자신을 호출하는 것을 의미 재귀적인 호출은 종종 복잡한 문제를 해결할 때 유용함 예를 들어, 트리 구조를 탐색하거나, 팩토리얼 계산, 피보나치 수열 등의 알고리즘에서 많이 사용 재귀 함수는 종료 조건과 재귀 호출의 두 부분으로 구성 종료 조건은 재귀 호출이 중단되어야 ...
Stack이란? 데이터(data)를 순서대로 쌓는 자료 구조 자료 구조 Stack의 특징은 입력과 출력이 하나의 방향으로 이루어지는 제한적 접근에 있음 이런 Stack 자료 구조의 정책을 LIFO(Last In First Out) 혹은 FILO(First In Last Out)이라고 함 Stack에 데이터를 넣는 것을 ‘PUSH’,...
JDBC API 인터넷 보급, DB 산업 성장을 하면서 등장했습니다. Java 어플리케이션은 다양한 관계형 데이터베이스 시스템과 상호 작용할 수 있습니다. 단점 중복 코드가 많습니다. Connection 관리를 계속 해줘야 합니다. SQLMapper Spring JDBC 위치 기반이 아닌 이름 기반의 파라미터 사용을 허...
JAVA의 웹 프레임워크로 JAVA 언어를 기반으로 사용함 JAVA로 다양한 어플리케이션을 만들기 위한 프로그래밍 틀 웹 애플리케이션 개발을 위한 Framework에는 Spring뿐만 아니라, Django, Express, Flask, Lalavel 등 다양한 Framework를 통해 개발이 가능함 Spring Framework만의 장점 ...
프로젝트가 커지고 필요한 기술들이 늘어나며 특정 기술과 환경에 종속되는 경우가 자주 발생하여 작성된 코드의 유지/보수가 어렵고, Java에서의 상속(extends)의 특성상 이미 특정 클래스를 상속하게 되어 정작 다른 상위 클래스를 상속해서 기능을 확장하기 어려운 경우도 많이 생겼습니다. 결국 좋은 객체지향 설계를 할 수 있는 Java 언어를...
IOC란? Library는 애플리케이션 흐름의 주도권이 개발자에게 있고, Framework은 애플리케이션 흐름의 주도권이 Framework에 있음 IoC(Inversion of Control)는 애플리케이션 흐름의 주도권이 뒤바뀐 것 프레임 워크 없이 개발 할 때에는 객체의 생명주기를 프로그래머가 직접 관리함 외부 라이브러리를 사용할 때도 직...
AOP(Aspect Oriented Programming)공식문서 AOP를 한글로 번역하면 관심 지향 프로그래밍 정도로 해석할 수 있음 AOP에서의 Aspect는 애플리케이션에 필요한 기능 중에서 공통적으로 적용되는 공통 기능에 대한 관심과 관련이 있음 ## 공통 관심 사항과 핵심 관심 사항 면 애플리케이션 전반에 걸쳐 공통적으로 사용되는 기...
❤ 정수 타입 정수 타입은 숫자를 나타내는 타입으로, byte, short, int, long 분류 타입 별로 차지하는 메모리 공간의 크기와 표현할 수 있는 범위 타입 메모리 표현 범위 byte 1byte -128(-27) ~ 127(27...
🧐 인메모리(In-memory) DB란 일반적인 데이터베이스는 삭제를 하지 않는 이상 데이터베이스 서버를 내렸다가 다시 가동해도 데이터베이스 안에 데이터가 그대로 유지합니다. 반면에 인메모리(In-memory) DB는 이름 그대로 메모리 안에 데이터를 저장하는 데이터베이스 메모리는 휘발성이기 때문에 컴퓨터 전원을 끄면 메모리에 저장되어 있...
🧐 트랜잭션(Transaction)이란? 트랜잭션(Transaction)이란, 데이터베이스의 상태를 변화시키기 해서 수행하는 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미 합니다. 질의어(SQL)를 이용하여 데이터베이스를 접근 하는 것을 의미합니다. 데이터베이스의 상태를 변경시킨다는 이야기는 SELECT, UPDATE, I...
🔴 변수란 ? 하나의 값을 저장할 수 있는 메모리 공간(RAM) 변수에는 오직 하나의 값만 저장할 수 있으므로, 새로운 값을 저장하면 기존의 값은 사라짐 🟠 변수의 선언 int(변수의 타입) age(변수 이름); 변수 타입은 변수에 저장될 값이 어떤 타입 인지를 지정 변수 이름은 변수에 붙인 이름 → 메모리 공간에 이름을 붙여주는 것 ...
기본형타입 (Primitive Type) 계산을 위해 실제 값을 저장합니다. 기본형 타입에는 논리형 (boolean) 문자형(char) 정수형(byte, short, int, long) 실수형(float, double)로 나뉩니다. 모든 값은 stack에 저장됩니다. null을 가질 수 없습니다. 참조형 타입 (Reference Type...
🧐heap이란? 자바에서 heap은 동적으로 할당된 객체들을 저장하는 메모리 영역 자바 가상 머신(JVM)은 heap을 관리하고 객체 생성, 참조, 참조 해제를 자동으로 처리 자바에서 변수나 배열은 스택(stack) 메모리 영역에 저장 객체는 heap 영역에 저장 객체를 생성할 때, 자바는 heap 영역에서 충분한 크기의 메모리를 할당하고 객...
🧐Java란? 자바는 1996년 1월에 세상에 나온 객체지향 프로그래밍(Object Oriented Programming, OOP) 언어입니다. 운영체제에 독립적으로 실행이 가능하기 때문에, Write Once, Run Anywhere이라는 슬로건을 내세움 다양한 운영체제가 공존하는 웹 환경에 적합한 언어로서, 현재까지도 전 세계에서 많이 쓰이는...
❓서비스란? Service는 도메인 업무 영역을 구현하는 비즈니스 로직을 처리하는 것을 의미 @Service public class MemberService { } 컨트롤러와 리포지토리 사이의 미들웨어임 Model이 테이터페이스에서 받아온 데이터를 전달받아 가공하는 역할 Controller에서 전달받은 사용자의 요청사항...
IP란? 인터넷에 연결되어 있는 장치(컴퓨터, 스마트폰, 타블릿, 서버 등등)들은 각각의 장치를 식별할 수 있는 주소를 가지고 있는데 이를 ip라고 한다. 예) 115.68.24.88, 192.168.0.1 도메인(domain)이란? ip는 사람이 이해하고 기억하기 어렵기 때문에 이를 위해서 각 ip에 이름을 부여할 수 있게 했는데, 이것을 도...
@Component // (1) public class MemberMapper { // (2) MemberPostDto를 Member로 변환 public Member memberPostDtoToMember(MemberPostDto memberPostDto) { return new Member(0L, ...
Jakarta Bean Validation이라는 유효성 검증을 위한 표준 스펙에서 지원하는 내장 애너테이션들임 Jakarta Bean Validation은 여러분들이 라이브러리처럼 사용할 수 있는 API가 아닌 스펙(사양, Specification) 자체 즉, 이러이러한 애너테이션들을 이런 식으로 구현해서 사용하라는 일종의 기능 명세를 의미합니다...
SQL Mapper는 개발자가 직접 SQL문을 작성해 데이터베이스 데이터를 다루는 Persistence Framework이다. 객체와 테이블 간의 관계를 직접 매핑하는 것이 아닌, SQL문을 실행해 쿼리 수행 결과를 어떤 객체에 매핑할지 바인딩 하는 방법이다. 따라서 DBMS에 종속적인 방법이라고 할 수 있다. 대표적으로 MyBatis가 있다. ...
JSON이란? 경량 데이터 교환 형식으로, 사람이 읽고 쓰기에 용이하며 기계가 분석하고 생성하기도 쉬운 형식 특히 웹 애플리케이션에서 서버와 클라이언트 사이에 데이터를 주고 받을 때 자주 사용 JSON은 JavaScript에서 객체를 만들 때 사용하는 문법에서 차용되었지만, 다른 프로그래밍 언어에서도 일반적으로 사용 JSON은 데이터 포맷일 ...
DTO란? DTO(Data Transfer Object)란 계층간 데이터 교환을 위해 사용하는 객체(Java Beans)이다. DTO가 필요한 이유 클라이언트의 Request Body를 하나의 객체로 모두 전달받을 수 있기 때문에 코드 자체가 간결해진다. Request Body의 데이터 유효성(Validation) 검증이 단순해진다. ...
쿠키 기반 자격 증명 방식 쿠키는 크롬이나 사파리 같은 브라우저에 저장되는 작은 텍스트 조각입니다. 브라우저는 사용자의 컴퓨터에 설치된 소프트웨어이므로 쿠키는 사용자가 갖고 있는 정보라고 할 수 있습니다. 사용자는 브라우저의 설정 화면이나 개발자 도구에서 쿠키를 확인하고 수정, 삭제할 수 있습니다 쿠키는 당사자뿐만 아니라 제 3자가 조회하는...
💡 JWT 공식 사이트 : https://jwt.io/ JWT(JSON Web Token)는 데이터를 안전하고 간결하게 전송하기 위해 고안된 인터넷 표준 인증 방식으로써 토큰 인증 방식에서 가장 범용적으로 사용되며 JSON 포맷의 토큰 정보를 인코딩 후, 인코딩 된 토큰 정보를 Secret Key로 서명(Sign)한 메시지를 Web Toke...
방향 : 단방향, 양방향(객체참조) DB 테이블은 외래 키(Foreign key)하나로 조인(Join)을 사용해서 양방향으로 쿼리가 가능 따라서 DB에는 방향의 개념이 없습니다. 그러나 객체의 경우, 참조용 필드를 가지고 있는 객체만 연관된 객체를 조회할 수 있으므로 방향의 개념이 존재합니다. ...
ORM 기술은 객체(Object)와 DB테이블을 매핑하여 데이터를 객체화하는 기술입니다. ORM은 SQL문의 수행 결과를 매핑하는 것이 아닌 DB 테이블의 데이터 그 자체와 객체를 매핑합니다. 또한 개발자가 직접 SQL을 작성하지 않아도 자동으로 SQL문을 만들어내기 때문에 DBMS에 종속 X 대표적으로 JPA가 존재합니다. 장점 개...
JPA 공식문서 JPA는 기술 명세 자바 어플리케이션에서 관계형 데이터베이스를 사용하는 방식을 정의한 인터페이스이다 Hibernate는 JPA의 구현체 JPA와 Hibernate는 마치 자바의 interface와 해당 interface를 구현한 class와 같은 관계이다 Spri...
객체 지향 프로그래밍에서는 클래스와 객체로 데이터를 다루지만, 데이터베이스는 테이블과 열로 데이터를 저장합니다. 객체와 데이터베이스 간의 차이를 해결하며 데이터를 변환하고 전달하기 위해서는, 매핑이 필요합니다!! 객체와 테이블 간의 매핑은 객체-관계 매핑(Object-Relational Mapping, ORM) 기술을 통해 이루어집니다...
1.객체-테이블 매핑 @Entity: 클래스를 엔티티(테이블)로 매핑합니다.(필수) @Table: 엔티티와 매핑될 테이블의 정보를 설정합니다. @Column: 필드를 열(컬럼)로 매핑하며, 열의 속성을 설정합니다. @Id: 엔티티의 기본 키(primary key) 필드를 지정합니다.(필수) @GeneratedValue: 기...
@Entity는 JPA(Java Persistence API)에서 사용되는 애너테이션 이 애너테이션은 클래스를 엔티티로 지정하여 데이터베이스의 테이블과 매핑하는 데 사용 @Entity 애너테이션을 클래스에 추가하면 해당 클래스는 데이터베이스의 테이블과 매핑되는 엔티티로 인식됨. 클래스의 객체는 데이터베이스의 레코드와 매핑되며, 객체의 필드는 테이...
@Builder는 빌더 패턴(Builder pattern)을 자동으로 생성해주는 기능을 제공합니다. 빌더 패턴은 객체 생성을 유연하게 하고 가독성을 높이기 위한 디자인 패턴입니다. @Builder 어노테이션을 사용하면 해당 클래스에 대한 빌더 클래스를 자동으로 생성해줍니다. 빌더 클래스를 사용하면 객체 생성 시에 메서드 체인을 이용하여 손쉽게 필...
Controller란? Controller은 MVC에서 C에 해당 하며 주로 사용자의 요청을 처리 한 후 지정된 뷰에 모델 객체를 넘겨주는 역할 즉 사용자의 요청이 진입하는 지점이며 요청에 따라 어떤 처리를 할지 결정을 Service에 넘겨줌 REST API 기반의 애플리케이션에서는 컨트롤러를 애플리케이션이 제공해야 될 기능을 리소스(Reso...
@RequestMapping Spring Framework에서 웹 애플리케이션의 컨트롤러 클래스나 메서드에 부여되는 어노테이션 중 하나로, HTTP 요청과 특정 컨트롤러 메서드를 매핑(연결)하는 역할을 함 이 어노테이션을 사용하여 클라이언트의 HTTP 요청을 특정 메서드로 라우팅하고 해당 메서드를 실행하도록 설정할 수 있음 @RequestMa...
@RequestParam HTTP 요청의 쿼리 파라미터를 메서드의 매개변수로 주입합니다. 예를 들어, http://example.com/path?name=value와 같은 URL에서 name 파라미터 값을 메서드에 주입할 수 있습니다. javaCopy code @RequestMapping("/example") public String example...
Spring MVC Spring MVC란? Model 어플리케이션이 무엇을 할 것인지 정의하는 부분입니다. 즉 DB와 연동하여 사용자가 입력한 데이터나 사용자에게 출력할 데이터를 다룸 View 사용자에게 시각적으로 보여주는 부분입니다. (UI) Controller ...
@Controller vs @RestController @Controller와 @RestController는 Spring Framework에서 사용되는 두 가지 주요 애노테이션이다. 이 두 애노테이션은 웹 애플리케이션에서 엔드포인트를 정의하는 데 사용되며, 각각의 목적과 특징이 다르다. @Controller @Controller는 HTML 뷰를...
HTTP 멀티파트 요청 처리 파일 업로드를 구현할 때, 사용자는 웹폼을 통해 파일을 선택하고 서버에 전송합니다. 이때, 웹 브라우저는 HTTP 메시지를 생성하며, 이 메시지의 Content-Type 속성은 multipart/form-data로 설정됩니다 서버는 이를 처리하기 위해 멀티파트 메시지를 받아 각 파트로 분리하여...
❓ Spring Security란? Spring MVC 기반 애플리케이션의 인증(Authentication)과 인가(Authorization or 권한 부여) 기능을 지원하는 보안 프레임워크입니다. Spring Security로 할 수 있는 보안 강화 기능 다양한 유형(폼 로그인 인증, 토큰 기반 인증, OAuth 2 기반 인증, LDA...
문제발생 리뷰에 대한 평점기능을 구현하고 Postman으로 테스트를 했는데 갑자기 스택오버플로우라는 에러가 발생했다 해결방법 스택오버플로우 사이트를 클론코딩을 했지만 스택오버플로우가 뭔지 잘 몰랐던 나는 검색을 하기 시작했다. 스택오버플로우가 뭐지?? Stack Overflow는 Stack 영역의 메모리가 지정된 범위를 넘어갈 때 발생하...
1. 계층형 아키텍처이란? 계층형 아키텍처는 소스코드의 역할과 관심사에 따라 이를 “계층”으로 분리한 아키텍처이다. 계층형 아키텍처에서는 일반적으로 소스코드의 역할과 관심사를 다음과 같은 계층들로 분류한다. 1) API Layer (표현 계층(Presentation Layer)) 사용자와의 요청/응답 등 상호작용 처리에 관심...
핸들러 메서드(Handler Method)는 웹 애플리케이션에서 클라이언트의 요청을 처리하고 응답을 생성하는 역할을 하는 메서드입니다 스프링 프레임워크의 컨트롤러(Controller) 클래스 내에 정의되며, 클라이언트의 요청을 해당 메서드가 처리하여 원하는 결과를 반환합니다. 핸들러 메서드는 주로 HTTP 요청을 처리하는 데 사용되며, 다양...
멘토님에게 작성날짜, 수정날짜칼럼이 모든 테이블에 들어 가도록 만들면 좋겠다는 피드백을 받았다. 이미 DB설계를 마친 상황에서 모든 테이블에 하나씩 추가를 하는 것은 비효울적이라고 생각이 들어서 BaseEntity를 만들고 다른 Entity에서 상속 받는 것으로 문제를 해결하는 의견을 내었다. 다행히 팀원분들이 동의를 해주어서 검색을 해가며 ...
Nginx란? 웹 서버 및 리버스 프록시 서버로 널리 사용되는 소프트웨어입니다. Nginx는 경량이면서도 높은 성능을 제공하는 특징으로 유명합니다. 특히 동시접속 처리에 특화된 웹 서버 프로그램입니다 Nginx를 사용하는 이유 초당 10개의 트래픽만 받아도 벅찬 서버에 초당 30개의 트래픽이 들어온다면 -> 서버가 멈추면서 ...
❓Cloud Computing이란? 클라우드 컴퓨팅은 인터넷을 통해 서버, 저장소, 데이터베이스, 네트워킹, 소프트웨어, 분석 및 인텔리전스를 포함한 컴퓨팅 서비스를 제공하는 것을 말합니다. 이를 통해 더 빠른 혁신, 유연한 자원, 규모의 경제를 제공합니다. 클라우드 컴퓨팅은 일반적으로 인프라스...
이메일 인증 보안을 위해 이메일 인증 기능을 넣었습니다. 사용자가 회원가입을 진행합니다. 사용자의 정보를 데이터베이스에 저장하고, 계정 상태를 MEMBER_TEMP로 설정합니다. 사용자의 계정에 대한 고유한 메일키를 생성합니다 회원의 이메일주소로 이메일을 보내고, 생성된 메일키를 이메일 링크를 클릭하면 서버에서 인증키를 확인하고 회원의 상...