Back-End (Web) 42

[Spring] 웹 개발의 흐름

웹 프로젝트 개발 단계 (쇼핑몰 프로젝트 예시)1. 프로젝트 계획 및 기획목표 정의:쇼핑몰의 주요 기능과 목표를 정의합니다.(예: 상품 검색, 장바구니, 결제 시스템 등)사용자 요구사항 분석:고객이 원하는 기능과 서비스를 파악합니다.(예: 반응형 디자인, 빠른 검색, 다양한 결제 수단 제공)와이어프레임 작성:웹사이트의 레이아웃 및 사용자 인터페이스를 설계합니다.(Figma, Sketch 등을 활용)기술 스택 결정:사용할 기술 스택을 선정합니다:프론트엔드: React백엔드: NestJS데이터베이스: RDS MySQL클라우드: AWS (EC2, S3, RDS, Nginx)CI/CD: GitLab2. 개발 환경 설정GitLab 프로젝트 생성:프론트엔드와 백엔드 코드를 저장할 레포지토리를 생성.AWS 계정 설정..

[JAVA] 열거형 ( Enum )

열거형 ( Enum )📌 상수들의 집합을 정의하는 자료형입니다.일반적으로 정수나 문자열로 정의할 수 있는 여러 상수들을 열거형을 사용하여 보다 의미 있게 묶을 수 있습니다.public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY // 0 1 2 3 4 5 6} 열거형을 사용하면 자동적으로 0부터 시작하는 정수값이 할당됩니다class Card{ enum Kind { A, B, C } enum Value { test1, test2 } if(Card.Kind.A==Card.Value.test1) {} // 이거 타입..

Back-End (Web)/JAVA 2024.11.22

[JAVA] HASH란 무엇인가

HASH📌 입력 데이터를 고정된 크기의 값으로 변환하는 함수 또는 그 과정을 의미합니다 다른 말로는 해시 값, 해시 코드, 체크섬 이라고 합니다.key와 value 쌍으로 데이터를 저장하며, 키를 해시 함수를 통해 고유한 인덱스에 대응시켜 빠르게 값을 조회합니다.  중복 허용을 안함, 순서 유지 안함, 빠른 검색, 삭제 가능해시 함수를 통해 시간복잡도가 1(반드시 1은 아닙니다. 충돌할 경우 달라지기도 합니다.)인 한번에 정보의 위치를 찾을 수 있는 자료구조형태(해시 테이블)를 제작하는 과정 꼭 주소로 구현할 필요는 없다 왼쪽의 index/data table의 경우 이차원 배열로 map은 아니다.map으로 만들경우 메서드 차제적으로 for문으로 index값을 일일히 찾을 필요 없이 바로 index(ke..

Back-End (Web)/JAVA 2024.11.21

[JAVA] 자바의 정렬

간단한 정렬 Sort 1. Arrays 클래스의 정렬java.util.Arrays 클래스는 배열을 정렬하는 데 사용됩니다.기본적으로 오름차순으로 정렬하며, 사용자 정의 기준으로 정렬하려면 Comparator를 사용합니다. 문자열의 경우 아스키코드 순 (알파벳 순)으로 오름차순 정렬되며, 한글도 가나다 순으로 정렬됩니다.import java.util.Arrays;public class Main { public static void main(String[] args) { int[] numbers = {5, 2, 8, 3, 1}; Arrays.sort(numbers); System.out.println(Arrays.toString(numbers)); // [1, 2,..

Back-End (Web)/JAVA 2024.11.21

[JAVA] 응용 정리

★Enum (열거형) Enum의 주요 메서드values(): 열거형에 정의된 모든 값을 배열로 반환.valueOf(String name): 이름으로 열거형 상수를 찾음.// 모든 값을 배열로 반환enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY}public class EnumValuesExample { public static void main(String[] args) { Day[] days = Day.values(); for (Day day : days) { System.out.println(day); // MONDAY, TUESDAY, ... 출력 ..

Back-End (Web)/JAVA 2024.11.15

[Spring] Spring 웹 애플리케이션 계층 구조

Spring 웹 애플리케이션 계층 구조📌  계층 구조는 애플리케이션을 여러 층으로 나누어 각 계층의 책임을 분리하여 관리하는 구조입니다. 이렇게 계층화하면 유지보수성, 확장성, 테스트 용이성 등이 향상됩니다. 대표적인 계층 구조는 Controller, Service, Repository, Domain(또는 Entity) 계층으로 나누어져 있습니다.네트워크 계층 구조와는 다른 개념입니다만, 계층구조라는 점에선 같습니다. 1. Controller 계층 (Web Layer)책임: 클라이언트의 HTTP 요청을 받아서 적절한 비즈니스 로직( 실제 문제를 해결하는 코드 = 문제 해결책 )을 처리할 서비스 계층에 전달하고, 처리 결과를 반환하는 계층입니다.역할:클라이언트(웹 브라우저, 모바일 앱 등)로부터 들어오는..

[Spring] 스프링 웹 개발 기초

웹 개발 방식📌 스프링에서 웹 개발 기초는 크게 세 가지 방식으로 나뉩니다: 정적 콘텐츠 제공 방식, MVC와 템플릿 엔진 방식, 그리고 API 방식입니다. 각 방식이 웹 애플리케이션에서 데이터를 제공하는 데 사용되는 방법이 다릅니다.   정적 콘텐츠 제공 방식📌 정적 콘텐츠는 서버에서 변하지 않는 고정된 데이터를 제공하는 방식입니다.HTML, CSS, JavaScript 파일 등과 같은 리소스를 정적 파일로서 서버가 직접 제공하므로, 사용자 요청 시 서버에서 바로 해당 파일을 전달해 줍니다.이런 방식은 스프링에서는 주로 /static, /public 폴더에 파일을 넣어 제공할 수 있습니다. 정적 콘텐츠는 빠르게 응답할 수 있지만동적인 데이터 제공이나 로직 처리가 불가능하다는 한계가 있습니다. 주로 ..

[JAVA] NULL

NULL📌참조 변수가 아무 객체도 가리키지 않음을 나타내는 특수한 값입니다.특징:객체가 생성되지 않았거나, 특정 객체를 참조하지 않는 상태를 나타냅니다.참조 타입(객체 타입)에만 사용할 수 있습니다. (예: String, Integer, 사용자 정의 클래스 등)원시 타입(예: int, float)에는 사용할 수 없습니다.null 값의 변수로 메서드를 호출하려고 하면 **NullPointerException**이 발생합니다.빈 공간 (Empty String)의미: 길이가 0인 문자열로, 내용이 없는 문자열을 의미합니다.표현: 빈 문자열은 "" (따옴표만 있는 문자열)로 표현됩니다.특징:문자열 객체가 존재하지만, 내용이 없습니다.메모리에는 문자열 객체가 생성되며, 이는 null과 다릅니다.isEmpty()..

Back-End (Web)/JAVA 2024.11.13

[JAVA] 쓰레드 & 람다 함수 & 스트림

프로세스📌 운영체제로부터 자원을 할당받는 작업의 단위 프로세스 작업 단위프로세스는 “실행 중인 프로그램”을 의미합니다.예를 들어 우리가 Java 프로그램을 실행시키면 이 프로그램은 프로세스라는 이름으로 운영체제 위에서 실행됩니다.즉, OS 위에서 실행되는 모든 프로그램은 OS가 만들어준 프로세스에서 실행됩니다.카카오톡, 브라우저, JAVA 프로그램 모두 프로세스로 실행되며크롬 브라우저를 2개 띄우면 크롬 브라우저 프로세스도 2개가 띄워진 것입니다.   프로세스 구조 📌 OS가 프로그램 실행을 위한 프로세스를 할당해 줄 때 프로세스 안에 프로그램 Code와 Data 그리고 메모리 영역(Stack, Heap)을 함께 할당해 줍니다. Code는 Java main 메소드와 같은 코드를 말합니다.Data는 프..

Back-End (Web)/JAVA 2024.11.13

[JAVA] Generic

Wrapper 객체📌 Java에서 기본 데이터 타입(primitive type)을 객체로 다룰 수 있도록 해주는 클래스들을 말합니다. 기본 데이터 타입은 객체가 아니기 때문에 객체로 다루어야 하는 경우에 Wrapper 클래스를 사용합니다.  박싱(기본 데이터를 Wrapper 클래스로 변경하는 행위)해서 객체화된 원시 값들은 이제 클래스처럼, 구현되어 있는 메소드들을 자유롭게 이용이 가능하고, 객체만 할 수 있는 것들을 할 수 있게 됩니다.generic을 알기 위해서는 Wrapper 객체를 이해하는 것이 좋습니다.좀 더 전문적인 설명으로, 기본 타입은 '값'의 의미로만 사용되지만 객체로서의 기능이 필요한 경우 추상화를 통해 객체의 속성을 부여한다. 즉, 기본 값을 객체화 해서 "감싼다"라는 의미로 이러한..

Back-End (Web)/JAVA 2024.11.12