전체 글 171

4. Lombok과 application.properties

1. Lombok: 코드 절약하기! 자바 프로젝트를 진행하는데 거의 필수적으로 필요한 메서드/생성자 등을 자동 생성해줌으로써 코드를 절약할 수 있도록 도와주는 라이브러리입니다. @Getter@Setter@NoArgsConstructor@AllArgsConstructorpublic class Memo { private String username; private String contents;} @Getter, @Setter : get메서드와 set메서드 자동 생성@NoArgsConstructor: 기본 생성자 자동 생성@AllArgsConstructor: 모든 필드를 파라미터로 가진 오버로딩된 생성자 자동 생성 @RequiredArgsConstructorpublic class Memo { ..

3. HTTP란 무엇일까?

HTTP란 무엇일까? 데이터를 주고 받는 양식을 정의한 "통신 규약" 중 하나가 HTTP입니다.매우 범용적인 양식을 가지고 있어 전 세계에서 제일 널리 쓰이는 통신 규약입니다.  HTTP에서는 언제나 Request, Response라는 개념이 존재합니다.서버와 브라우저의 관계로 가볍게 말해보면 아래와 같이 동작합니다.브라우저는 서버에게 자신이 원하는 페이지(URL 등의 정보)를 **요구(Request)**합니다.서버는 브라우저가 원하는 페이지가 있는지 확인하고, 있다면 해당 페이지에 대한 데이터를 실어 응답**(Response)**해줍니다. 없다면 없는 페이지에 대한 데이터를 반환합니다.브라우저는 서버에게 전달 받은 데이터를 기반으로 브라우저에 그려줍니다.   브라우저에서 F12를 눌러 개발자 도구에서 ..

2. 서버란 무엇일까?

1. 네트워크란? 네트워크는 여러대의 컴퓨터 또는 장비가 서로 연결되어서 정보를 주고 받을 수 있게 도와주는 기술입니다.컴퓨터, 라우터, 스위치, 허브 등의 장비들이 각각의 역할을 수행하여 정보를 주고 받습니다.서로 정보를 주고 받기 위해서는 IP 주소, 서브넷 마스크, 게이트웨이등의 정보를 설정하고 네트워크 프로토콜을 이용하여 통신을 하게 됩니다.  2. Client와 Server  Client 즉, 브라우저에서 서버에 정보를 요청하는 과정을 간략하게 표현한 부분입니다.보시는 것처럼 사용자는 브라우저를 이용하여 서버에 정보를 요청하고 응답을 받습니다.사용자의 요청이 서버에 도달하기 위해서는 해당 서버의 정보가 필요합니다.사용자의 요청이 해당 서버에 정확하게 도달할 수 있게 제공되는 정보가 IP 주소입니..

1. 그레이들(Gradle)이란 무엇일까?

Gradle: 빌드 자동화 시스템 우리가 작성한 Java 코드를 설정에 맞게 자동으로 Build해 줍니다.Build: 소스 코드를 실행 가능한 결과물로 만드는 일련의 과정Gradle을 사용하면 간편하게 Java 소스 코드를 실행한 가능한 jar 파일로 만들어줍니다.   build.gradlebuild.gradle은 Gradle 기반의 빌드 스크립트입니다.이 스크립트를 작성하면 소스 코드를 빌드하고 라이브러리들의 의존성을 쉽게 관리할 수 있습니다.groovy 혹은 kotlin 언어로 스크립트를 작성할 수 있습니다. 외부 라이브러리들을 dependencies 부분에 작성하면 Gradle이 해당 라이브러리들을 Maven Repository 와 같은 외부 저장소에서 자동으로 다운로드해옵니다.Maven Repos..

Spring MVC 와 3 Layer Architecture

Spring MVC와 3-Layer Architecture는 서로 다른 개념이지만, 둘 다 애플리케이션의 구조와 설계를 다루고 있어서 혼동이 될 수 있습니다. 이 둘의 관계와 차이점을 명확히 이해하면, 더 효과적으로 애플리케이션을 설계할 수 있습니다. 먼저 각 개념에 대해 설명한 후, 그 관계를 짚어볼게요.1. Spring MVC (Model-View-Controller)Spring MVC는 웹 애플리케이션에서 요청과 응답을 처리하기 위한 프레임워크로, 웹 애플리케이션의 구조를 Model, View, Controller로 나누는 디자인 패턴을 따릅니다. 이는 프론트엔드와 백엔드의 역할을 명확히 구분하여 코드의 모듈성과 유지보수성을 높이는 역할을 합니다.Model: 데이터와 비즈니스 로직을 담당합니다. 데..

API와 HTTP 메서드

API 요약Application Programming Interface, 소프트웨어 간 상호작용을 가능하게 하는 인터페이스 또는 프로토콜. API의 역할:API는 두 시스템 간의 연결을 제공하여 서로 데이터를 교환하거나 기능을 호출할 수 있게 합니다.개발자들은 API를 통해 복잡한 내부 시스템을 직접 구현하지 않고도, 다른 시스템의 기능을 활용할 수 있습니다.사용 예:웹 API: 웹 애플리케이션이나 서버가 인터넷을 통해 다른 서버나 서비스와 통신하기 위해 주로 사용됩니다. 예를 들어, 날씨 앱이 날씨 정보를 제공하는 서버의 API를 통해 실시간 날씨 데이터를 받아오는 경우.운영 체제 API: 운영 체제(API)를 통해 애플리케이션이 시스템 리소스(파일 시스템, 메모리 등)에 접근할 수 있습니다.동작 방식..

@PathVariable vs @RequestParam

@PathVariable설명: @PathVariable은 URL 경로의 일부로 전달되는 값을 매핑할 때 사용합니다. RESTful 스타일의 API 설계에서 자주 사용되며, 리소스의 특정 부분을 식별하는 데 유용합니다.예시 : @GetMapping("/users/{userId}")public String getUser(@PathVariable("userId") Long userId) { // userId를 사용하여 사용자 데이터를 처리 return "User ID: " + userId;}  이 경우, /users/123라는 요청을 받으면 userId에 123이 매핑됩니다. 장점:RESTful 설계에 적합: URL 경로 자체에 리소스의 식별자를 포함할 수 있어 명확한 API 설계를 할 수 있습니다..

가장 가까운 같은 글자

https://school.programmers.co.kr/learn/courses/30/lessons/142086 for 문을 돌려서 문자가 같은지 비교하며 같을 때 둘의 인덱스의 차를 리스트에 넣어야겠다고 생각했습니다. 그런데 문제의 요구사항을 충족하기 위해서는 역순으로 접근해야 했습니다. 요구사항에 따르면 앞에 같은 문자가 있을 때 뒤의 문자가 영향을 받기 때문입니다 역순으로 생각한다면 뒤에 같은 문자가 있을 때 앞에 문자가 영향을 받게 됩니다. 즉 자주 쓰는 방식으로 for(int i = 0; i  정답 :  import java.util.ArrayList;import java.util.Collections;import java.util.List;class Solution { public L..

헤더와 바디

백엔드 개발에서 **HTTP 헤더(Header)**와 **HTTP 바디(Body)**는 클라이언트와 서버 간에 데이터를 주고 받는 중요한 부분입니다. HTTP 요청(Request)과 응답(Response) 둘 다 헤더와 바디를 가지며, 각 부분에 어떤 데이터를 넣을지에 대한 규칙은 일반적으로 다음과 같습니다.  구분헤더 (Header)바디 (Body)역할요청 또는 응답에 대한 메타데이터 제공 (데이터 처리 방식, 인증 정보 등)실제 전송하는 데이터 자체 (JSON, XML, 파일 등)데이터유형짧고 구조화된 정보 (인증, 토큰, 쿠키, 콘텐츠 형식 등)대량의 데이터 (사용자 정보, 이미지, 동영상 등)보안 주로 인증, 세션 등 보안 관련 정보 포함 (Authorization 헤더, Cookie 등)사용자가..

Defendenceis

각종 의존성 정리Spring Web:역할: Spring Web은 스프링 프레임워크에서 웹 애플리케이션을 구축하기 위한 모듈입니다. 주로 HTTP 요청 및 응답을 처리하고, 웹 API 또는 MVC(Model-View-Controller) 패턴으로 웹 애플리케이션을 만들 때 사용됩니다.주요 기능: 서블릿 API 지원, RESTful 웹 서비스 구현, 웹 요청 핸들링, 컨트롤러 및 요청 매핑. Thymeleaf:역할: Thymeleaf는 서버 사이드 템플릿 엔진으로, HTML, XML 등의 파일을 처리하고, 데이터와 결합해 동적인 웹 페이지를 생성하는 데 사용됩니다.주요 기능: 템플릿 파일에 데이터 바인딩, HTML 태그와의 자연스러운 통합, 스프링 MVC와의 통합을 통해 뷰를 렌더링. Spring Secur..