Spring의 IoC(제어의 역전)와 DI(의존성 주입) 이해하기
·
TIL/스파르타 TIL
Spring의 IoC(제어의 역전)와 DI(의존성 주입) 이해하기Spring 프레임워크에서 가장 중요한 개념 중 하나는 IoC(제어의 역전, Inversion of Control)와 DI(의존성 주입, Dependency Injection)입니다. 이 두 가지 개념은 Spring이 객체들 간의 의존성을 관리하는 방식에 대해 설명하며, 객체지향 프로그래밍의 중요한 원칙 중 하나인 유연한 코드 구조를 만들기 위해 사용됩니다.1. IoC (제어의 역전)IoC는 제어 흐름을 개발자가 아닌 프레임워크가 담당하는 것을 의미합니다. 전통적인 애플리케이션에서는 객체를 개발자가 직접 생성하고, 객체 간의 의존성을 개발자가 직접 관리합니다. 하지만 IoC를 도입하면 객체의 생성과 관리, 의존성 주입 등을 개발자가 아닌 컨..
[내일배움캠프] Spring 1차 숙제 (튜터님께 받은 피드백)
·
TIL/스파르타 TIL
튜터님께 받은 피드백1. 로그인 후 인증 흐름 개선 (세션 인증 vs 토큰 인증)문제: 현재 로그인 후 인증 흐름이 자연스러워 보이지만, 사용자가 직접 http://localhost:8080/calendar.html에 접근하면 로그인 없이 캘린더를 사용할 수 있습니다.해결책: 세션 인증 방식 또는 토큰 인증 방식을 도입하여 인증된 사용자만 캘린더 페이지에 접근할 수 있도록 해야 합니다. 특히 JWT (JSON Web Token) 기반의 인증 방식을 사용하는 것이 RESTful API와 함께 가장 많이 사용되는 방식입니다.블로그 주제: "Spring Boot에서 JWT 기반 인증 구현하기" 또는 "세션 기반 인증과 토큰 기반 인증의 차이점 및 구현 방법"2. Request Parameter로 패스워드 전송..
왜 게임에서 상대방이 나를 먼저 발견하게 되는가?
·
네트워크/네트워크 관련지식
OR 왜 게임에서 상대방을 먼저 발견하게 되는가?서버 통신 속도가 중요한 이유 온라인 게임을 플레이하다 보면 가끔 "왜 상대방이 나보다 먼저 날 봤지?"라는 생각을 하게 될 때가 있습니다. 이 현상은 게임 내에서 중요한 요소로 작용하며, 서버와의 통신 속도(네트워크 레이턴시)와 깊은 관련이 있습니다. 오늘은 왜 이런 현상이 발생하는지, 그리고 서버 통신 속도가 게임 플레이에 어떤 영향을 미치는지에 대해 설명하겠습니다.1. 네트워크 레이턴시(Latency)란?네트워크 레이턴시란 사용자가 자신의 행동을 서버에 전달하고, 그 결과를 다시 화면에 표시할 때까지 걸리는 시간을 의미합니다. 쉽게 말해, 내가 키보드를 눌렀을 때 그 명령이 서버에 도달하고, 서버가 처리한 결과를 다시 화면에서 볼 때까지의 지연 시간이..
[내일배움캠프] Spring 1차 숙제
·
TIL/스파르타 자바공부기간
스케줄 관리 API 명세서Base URLhttp://localhost:8080/1. 모든 일정 조회EndpointGET /api/schedules설명모든 일정을 조회합니다.RequestMethod: GETHeaders:Content-Type: application/jsonResponseStatus: 200 OKContent-Type: application/jsonResponse Body Example[ { "id": 1, "date": "2024-10-01", "title": "회의" }, { "id": 2, "date": "2024-10-02", "title": "프로젝트 마감" }]2. 특정 날짜의 일정 조회EndpointGET /api/schedules/{da..
[내일배움캠프] 본캠프 TIL Spring 입문(3)
·
TIL/스파르타 TIL
Spring에서 클라이언트와 서버 간에 데이터를 전송할 때, 주로 JSON 형태로 데이터를 주고받는 방식이 많이 사용됩니다. 이는 RESTful 웹 서비스 구현에서 가장 흔한 데이터 교환 형식이기 때문입니다. 클라이언트와 서버 사이에서 Spring이 데이터를 어떻게 처리하고 전송하는지 살펴보겠습니다.1. Spring에서 데이터 전송 흐름Spring에서는 클라이언트와 서버 간의 데이터 전송을 처리할 때, 다음과 같은 단계를 거칩니다:1.1. 클라이언트 요청 (Request)클라이언트는 서버에 HTTP 요청을 보냅니다. 이 요청은 주로 GET, POST, PUT, DELETE와 같은 HTTP 메서드를 사용합니다.요청 데이터는 쿼리 파라미터, URL 경로 변수, HTTP 요청 본문(주로 JSON 형식)으로 전..
[내일배움캠프] 본캠프 TIL Spring 입문(2)
·
TIL/스파르타 TIL
Spring에서 정적 페이지와 동적 페이지는 각각 다른 방식으로 다뤄지며, 역할도 명확히 구분됩니다. 이 두 가지를 나누어 관리하는 이유는 서버 자원의 효율적 사용과 응답 속도 향상 그리고 개발 및 유지보수의 용이성 때문입니다.1. 정적 페이지 (Static Page)1) 정의정적 페이지는 미리 만들어진 HTML, CSS, JavaScript 파일을 그대로 제공하는 웹 페이지입니다. 서버는 이 파일들을 단순히 클라이언트에게 전송하기만 하고, 서버에서 별도의 데이터 처리나 로직 실행 없이 요청한 파일 그대로 응답됩니다.2) Spring에서 정적 페이지 처리 방법Spring에서는 기본적으로 정적 리소스(static resources)를 처리할 수 있도록 설정되어 있습니다. 이러한 정적 파일들은 프로젝트의 특..
[내일배움캠프] 본캠프 TIL Spring 입문(1)
·
TIL/스파르타 TIL
1. MVC 패턴이란?Spring MVC (Model-View-Controller)는 웹 애플리케이션을 개발할 때 사용하는 구조적인 패턴 중 하나로, 애플리케이션의 각 부분을 구분하여 효율적으로 관리할 수 있게 해줍니다. 이를 쉽게 설명하자면:Model (모델): 애플리케이션의 데이터와 그 데이터를 처리하는 로직을 담고 있습니다. 데이터베이스에서 정보를 가져오거나 사용자가 입력한 데이터를 처리하는 역할을 합니다. 예를 들어, 사용자의 정보나 상품 목록 같은 것들이 모델에 해당합니다.View (뷰): 사용자가 볼 수 있는 화면을 담당합니다. 즉, HTML, CSS, JavaScript 등을 사용하여 데이터를 시각적으로 표현합니다. View는 Model에서 가져온 데이터를 사용자에게 보여주는 역할을 합니다...
[내일배움캠프] 본캠프 코드카타 18번 문제
·
TIL/스파르타 코드카타
문자열을 정수로 변환하는 방법문제 설명문자열 s를 숫자로 변환하는 함수 solution을 작성합니다. 주어진 문자열은 1자 이상 5자 이하의 길이를 가지며, 맨 앞에는 부호(+ 또는 -)가 올 수 있습니다. 문자열은 부호와 숫자로만 구성되어 있으며, 잘못된 입력은 없다고 가정합니다.입력 예시"1234" → 1234"-1234" → -1234해결 방법자바에서는 문자열을 정수로 변환하는 간단한 방법으로 Integer.parseInt() 메서드를 사용할 수 있습니다. 이 메서드는 문자열의 부호를 자동으로 인식하고 올바른 정수로 변환해줍니다.코드 구현아래는 solution 메서드의 구현 예시입니다:class Solution { public int solution(String s) { retur..
인터넷 속도가 원래 속도로 안 나올때(ex. 1기가로 안나옴)
·
네트워크/네트워크 관련지식
기가인터넷을 신청한다고 해서 기가 인터넷 속도가 나오지는 않습니다.많은 사람들이 이를 모르고 그냥 쓰고 있다가대용량의 파일을 다운받다가 속도가 나지 않는 다는 것을 발견하는 경우가 많습니다.몇 가지 점검을 통해 기가인터넷이 비활성화 되어있지 않는지 확인할 필요가 있습니다. 0. 인터넷이 설치된 건물이 너무 오래되지 않았는가?건물 자체가 너무 오래된 경우 기가 인터넷을 지원하지 않을 수도 있다고 합니다. 1. 랜선 버전 (카테고리) 확인빨간 색으로 되어있는 부분이 랜선이다랜선에서 기가인터넷을 지원해줘야 합니다.일반적으로 CAT5e부터 기가인터넷을 지원한다고 알려져있으며랜선의 카테고리를 확인하는 방법은 랜선의 고무 부분을 직접 확인해보시면 반드시 써있습니다.안정적인 기가인터넷 사용을 목표로 한다면 CAT6이..
[내일배움캠프] 두번째 과제, ERD 다이어그램: BaseballGameCLI
·
TIL/스파르타 자바공부기간
1. CLI 버전BaseballInput, BaseballMain, BaseballScoreManager, BaseballAnswer 클래스들 간의 관계를 ERD (Entity-Relationship Diagram) 형식으로 표현하는 것은 객체지향 프로그래밍에서 클래스 간의 관계를 시각적으로 나타내는 것과 유사합니다. ERD는 데이터베이스의 테이블과 관계를 나타내는 데 사용되지만, 여기서는 각 클래스를 엔티티로, 클래스 간의 관계를 일종의 "연결"로 표현할 수 있습니다.각 클래스의 역할BaseballInput: 플레이어의 입력을 처리하고 검증.BaseballMain: 게임의 메인 흐름을 관리하고, 각 클래스의 객체를 호출하여 게임 로직을 진행.BaseballScoreManager: 게임 점수와 기록을 관..