전체 글

개발 공부 기록. https://github.com/junseoparkk
📗 Back-end/📗 Docker

[Docker] Spring boot + MySQL Docker로 띄우기

* 해당 글에선 docker-compose 방식이 아닌 직접 터미널에 명령어를 작성하면서 진행하였습니다.1️⃣ Spring boot 프로젝트1) 프로젝트 생성 및 설정https://start.spring.io/ 에서 프로젝트를 하나 생성한다.ProjectProject : Gradle - GroovyLanguage : JavaSpring Boot Version : SNAPSHOT 아닌 최신 버전 (여기선 3.2.3)Packaging : JarJava Version : 17DependenciesSpring WebThymeleafSpring Data JPALombokMySQL Driver build.gradleplugins { id 'java' id 'org.springframework.boot' versio..

📗 Back-end/📗 Spring

[Spring] @ServletComponentScan 동작 원리

1️⃣ 서블릿 등록 🔎 @ServletComponentScan 스프링 컨테이너에 빈을 등록할 때 '@ComponentScan'을 사용할 수 있다. 서블릿 역시 서블릿 컨테이너에 서블릿을 등록하기 위해선 '@ServletComponentScan'을 사용한다. 애플리케이션을 실행하는 클래스에 붙여 하위 경로에 존재하는 모든 서블릿 클래스를 등록한다. 사실 오늘 서블릿으로 MVC 패턴을 공부하다가 '@WebServlet'을 통해 서블릿을 등록했는데 인식을 못하는 문제가 있었다. 왜그런가 생각을 해보니 서블릿을 나타내는 애노테이션만 넣었을 뿐 이를 서블릿 컨테이너에 등록하는 애노테이션은 넣지 않았기 때문이다. 따라서 서블릿을 인식하지 못하는 문제가 생겼다면 애플리케이션 실행 클래스를 다시 살펴보길 바란다. 다음..

📗 Back-end/📗 Servlet & JSP

[Servlet] 서블릿으로 MVC 패턴 구현하기

1️⃣ MVC 패턴 구조 서블릿을 활용해 간단한 MVC 패턴을 구현해보자. 클라이언트가 특정 URL을 호출하면 컨트롤러는 해당 요청을 받는다. 클라이언트가 전달한 데이터를 모델에 담는다. 컨트롤러는 모델을 뷰로 전달한다. 뷰는 모델을 담아 필요한 화면을 클라이언트에게 전달한다. 위 흐름대로 로직을 작성해보자. 또한 컨트롤러는 서블릿 객체를, 모델은 HttpServletRequest 객체를, 뷰는 JSP로 구현할 것이다. HttpServletRequest 객체의 request 내부에는 데이터 저장소가 있다. 여기선 따로 모델 객체를 만들지 않고 이를 활용하자. 모델에 데이터 저장 : request.setAttribute() 모델의 데이터 조회 : request.getAttribute() 먼저 실습에 필요한..

📙 CS/📙 Network

[Network] 웹서버 & 웹 애플리케이션 서버

1️⃣ 웹(Web) 'www.xxx.com' 우리가 사용하는 대부분의 웹 주소 형식이다. 그렇다면 www는 무엇일까? 이는 'World Wide Web'의 줄임말로, 인터넷에 연결된 사용자들이 서로 정보를 공유할 수 있는 인터넷 상의 공간을 말한다. W3라고도 하며, 이를 '웹'이라고 부른다. 클라이언트 (Client) 클라이언트는 사용자 또는 사용자가 사용하는 디바이스(컴퓨터, 스마트 폰 등)를 나타냄 클라이언트는 서비스나 리소스에 접근하고 요청을 보내는 주체 사용자는 웹 브라우저를 통해 웹페이지를 요청하는 등 동작이 클라이언트의 역할 서버 (Server) 서버는 말 그대로 클라이언트에게 서비스를 제공하거나 리소스를 제공하는 컴퓨터 또는 소프트웨어 클라이언트의 요청에 응답하고 필요한 데이터 또는 서비스..

📙 CS/📙 Design Pattern

[Design Pattern] Factory Pattern (팩토리 패턴)

1️⃣ Factory Pattern, Factory Method Pattern 1) Factory Pattern (팩토리 패턴) 팩토리 패턴은 생성 패턴 중 하나로, 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이다. 이는 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 대한 구체적인 내용을 결정하는 패턴이다. 즉, 객체 생성을 Factory 클래스로 캡슐화하고, 이를 상속하는 하위 클래스를 통해 여러 방법으로 객체를 생성한다. 팩토리 패턴은 상위 클래스와 하위 클래스가 분리되기 때문에 느슨한 결합을 갖는다. 따라서 상위 클래스에서는 인스턴스 생성 방식에 관한 정보가 필요 없기 때문에 유연한 개발이 가능하다. 객체 생성 로직 또한 분리..

📙 CS/📙 OS

[OS] 운영체제와 컴퓨터 시스템 구조

1️⃣ 운영체제 (Operating System) 1) 운영체제의 개념 '운영체제(OP : Operating System)' 란 컴퓨터의 하드웨어 바로 위에 설치되어 사용자와 다른 소프트웨어, 하드웨어를 연결하는 소프트웨어 계층을 말한다. GUI (Graphical User Interface) : 사용자가 전자장치와 상호 작용할 수 있도록 하는 사용자 인터페이스의 한 종류. 프롬프트와 같은 단순 명령어 창이 아닌 아이콘을 마우스로 클릭하는 등의 동작으로 컴퓨터와 상호 작용할 수 있다. System call : 운영체제가 커널에 접근하기 위한 인터페이스. 유저 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출할 때 사용된다. Kernel : 운영체제의 핵심 부분이자 시스템콜 인터페이스를 제공. 보..

📙 CS/📙 Algorithm

[Algorithm] 유니온 파인드 (Union-Find)

1️⃣ 유니온 파인드 개념 유니온 파인드(Union-Find)는 두 개 이상의 노드가 있을 때 특정 2개의 노드를 연결해 하나의 집합으로 묶는 'union' 연산, 두 노드가 같은 집합에 속해 있는지 판단하는 'find' 연산으로 이루어진 알고리즘이다. 쉽게 말해 2개의 노드를 하나의 집합으로 만들 수 있고, 특정 노드가 속한 집합의 대표 노드를 찾을 수 있다. 아래는 각 연산에 대한 설명이다. Union 연산 : 각 노드가 속한 집합을 하나의 집합으로 합치는 연산이다. 노드 a, b가 각각 a ∈ A, b ∈ B 일 때 union(a, b) 는 A ∪ B 를 말한다. Find 연산 : 특정 노드 a에 대해 a가 속한 집합의 대표 노드를 반환하는 연산이다. 노드 a가 a ∈ A 일 때 find(a) 는 ..

📙 CS/📙 Network

[Network] HTTP vs HTTPS 비교

아래는 SSL/TLS 와 SSL/TLS handshake에 대한 글이다. HTTP와 HTTPS를 비교하기 앞서 해당 개념들을 알고 있다면 이해하기 더욱 쉬울 것이다. https://jnsodevelop.tistory.com/68 [Network] SSL/TLS 1. 개념 1) SSL (Secure Sockets Layer) SSL은 '보안 소켓 계층' 이라고 불리는 암호화 기반 인터넷 프로토콜이다. 1995년 Netscape 사에서 처음 개발되었으며, 인터넷 통신에서 개인 정보 보호, 인증, 데이터 jnsodevelop.tistory.com https://jnsodevelop.tistory.com/69 [Network] SSL/TLS handshake 네트워크를 공부했던 사람이라면 TCP 의 접속 과정인..

박갈
미 개발 구역