목록2025/04 (10)
배움과 기록의 장
* 김영한님의 '스프링 핵심 원리 - 기본편' 인프런 강의 수강 후 복습을 위해 작성한 글입니다. 작성자의 이해에 따라 쉽게 풀어쓰거나 재구성 될 수 있습니다. 1️⃣ 스프링이란?스프링은 자바 언어 기반의 프레임워크로, 자바의 가장 큰 특징인 객체 지향을 살려 좋은 객체 지향적 애플리케이션을 개발할 수 있도록 돕는 도구이다. 스프링은 이러한 객체 지향 프로그래밍을 위한 노력으로, 다음과 같은 핵심원리를 도입하였다.IoC (Inversion of Control, 제어의 역전)DI (Dependency Injection, 의존성 주입)컨테이너이번 글에서는 각 핵심 원리에 대해 살펴보며, 스프링은 이러한 개념들을 통해 어떻게 객체 지향 프로그래밍을 하고자 하였는지 이해해보자. 2️⃣ 객체 지향 프로그래밍..
🌿 시스템 콜이란사용자 프로그램이 운영체제 커널이 제공하는 서비스를 사용하기 위해 요청하는 인터페이스 사용자 프로그램은 직접 하드웨어 자원에 접근할 수 없기 때문에, 파일 입출력, 프로세스 생성, 네트워크 통신 등과 같은 작업을 하기 위해서 시스템 콜을 통해 운영체제 커널에 요청한다. 다음과 같이 6가지 유형으로 분류할 수 있다. 프로세스 제어(Process Control) : fork(), exec(), exit(), wait()파일 조작 (File Manipulation) : open(), read(), write(), close()장치 조작 (Device Manipulation) : ioctl(), read(), write()정보 유지 (Information Maintenance) : getpid..
2023.2.13 작성 🔸 HTTP 헤더1) HTTP 헤더란?- Http 메시지의 구성요성 중 하나 - 클라이언트의 요청이나 서버의 응답에 포함되어, 부가적인 정보를 HTTP 메시지에 포함할 수 있도록 해줌 2) HTTP의 사용목적?- 클라이언트와 서버 관점에서의 HTTP 헤더 예시내부적으로 가장 많이 사용되는 헤더 정보: 'Content-Type''Content-Type'은 클라이언트와 서버가 주고받는 HTTP 메시지 바디의 데이터 형식이 무엇인지 알려준다.클라이언트와 서버는 'Content-Type'이 명시된 데이터 형식에 맞는 데이터를 주고 받는다. ex.우리는 'application/json'- 개발자들이 실무에서 사용하는 HTTP 헤더 예시개발자들이 직접 코드레벨에서 HTTP 헤더를 컨트롤 ..
2023.2.13 작성 🔸 JDBC란?- Java 기반 애플리케이션의 코드레벨에서 데이터베이스에 있는 데이터를 사용할 수 있게 데이터베이스에 접근할 수 있도록 Java에서 제공하는 표준 사양- Java 초창기(JDK 1.1) 버전부터 제공- 자바개발자는 JDBC API를 사용해서 다양한 벤더(Oracle, MS SQL, MySQL 등)의 데이터베이스와 연동가능( 데이터 액세스 기술의 기본이 되는 저수준(low level) API이기 때문에, JDBC의 구체적인 API 사용법을 알 필요는 없다. 하지만 Sping Data JDBC나 Spring Data JPA 같은 기술에서도 내부적으로는 JDBC를 사용하기 때문에, JDBC 동작 흐름 정도는 알아두면 Spring에서 지원하는 데이터 엑세스 기술을 사용하..
2023.2.13 작성 🔸 API 계층 구현Spring MVC에서 클라이언트 요청의 최종목적지인 API계층, 즉 Controller 클래스를 설계하고 구현한다. 🔸 프로젝트 환경 구성1. 샘플 프로젝트 소개1) 애플리케이션 이름: 커피주문 웹 애플리케이션 (커피 주문을 위해 필요한 정보를 제공하기 위한 서버용 웹애플리케이션)2) 애플리케이션 경계(앱 기능을 특정 범위로 제한하는 것) : 커피만 주문할 수 있도로 기능 제한3) 커피 주문을 위해 필요한 정보: Coffee , Member, Order4) 커피 주문 앱에서 제공할 기능: 주인이 커피정보를 등록,수정,조회,삭제하는 기능 등 2. 샘플 프로젝트 환경 구성- Project: Gradle-Groovy- Language: Java- Sprin..
2023.2.13 작성 🔸 Spring MVC (spring-webmvc 모듈) 란?- 서블릿(Servlet) API를 기반으로 클라이언트의 요청을 편리하게 처리해주는 모듈/프레임워크- 서블릿이란? 클라이언트의 요청을 처리하도록 특정 규약에 맞추어 Java코드로 작성하는 클래스 파일- 아파치 톰캣은 이러한 서블릿들이 웹 애플리케이션으로 실행이 되도록 해주는 서블릿 컨테이너 중 하나 1) Model - 클라이언트에게 응답으로 돌려주는 작업의 처리결과 데이터 2) View - Model 데이터를 이용해 클라이언트 애플리케이션의 화면에 보여지는 리소스를 제공하는 역할 - Spring MVC에 포함된 다양한 view기술과 view 형태 HTML 페이지 출력 : HTML를 직접 렌더링해서 클라이언트 ..
2023.1.12 작성 🔸 JSON 개념 숙지- JSON(JavaScript Object Notation) 이란? 데이터 교환을 위해 만들어진 객체 형태의 포맷 - JSON을 사용하는 이유 자바 언어를 이용하여 Map에 데이터를 저장한 후 이것을 다른 사용자에게 전송할 때, 상대 사용자도 자바 프로그램이어야 Map의 데이터를 읽을 수 있다. 하지만 모두가 같은 언어로 된 프로그램을 사용하지 않으니, 이런 경우에 데이터를 전송하r고 읽기 위해 만들어진 포맷이 JSON - JSON 형태로 변경하는 방법 jackson라이브러리에서 제공하는 ObjectMapper클래스를 사용하여 JSON형태로 변환Map message = new HashMap(){{ put("받는사람", "coco"); ..
2023.1.12 작성 🔸 재귀함수란 - 자기 자신을 호출하는 함수 🔸 재귀함수의 장점- 불필요한 반복문 사용 안해도 돼서 코드가 쉽고 간결해짐, 수정 용의- 변수를 여러개 사용할 필요 없음 🔸 재귀함수의 단점- 코드의 흐름을 직관적으로 파악하기 어려움- 반복하여 매서드 호출 시, 지역변수, 매개변수, 반환값 모두 process stack에 저장하여 비교적 메모리를 많이 사용함- 메서드 종료 후 복귀 시 컨텍스트 스위칭 비용 발생 🔸 재귀함수 사용을 위한 조건 - recursive를 위한 문제 쪼개기 (재귀적 사고.. 헷갈리더라 자주해봐야함) -> recursive case- 재귀함수 탈출/종료 조건이 필요함 -> base case 🔸 재귀 함수 사용이 적합한 상황 (vs 반복문)- 문제를 비..
2023.1.4 작성 🔸 예외처리 exception handling 란?- 예기치 않게 발생하는 에러에 대응할 수 있는 코드를 사전에 작성하여 프로그램의 비정상적인 종료를 방지하고, 정상적인 실행 상태를 유지할 수 있도록 하는 것-내부적인 요인(개발자의 코드작성 에러) , 외부적인 요인(하드웨어ex.메모리 문제, 네트워크의 연결끊김, 사용자 조작 오류)-발생 시점에 따라 컴파일에러, 런타임 에러로 구분 (+ 논리적인 오류가 있을 경우에 발생하는 논리적 에러까지 있음) 🔸 컴파일 에러 (Compile Time Error)-신택스 에러 syntax errors-자바 컴파일러가 오류를 감지 🔸 런타임 에러 (Run Time Error)-프로그램 실행 시 만나게 되는 에러-주로 개발자가 컴퓨터가 수행할 수..
2023.1.4 작성 🔸 제네릭과 제네릭의 장점-클래스나 메서드의 코드를 작성할 때, 타입을 구체적으로 지정하는 것이 아니라, 추후에 지정할 수 있도록 일반해두는 것, 특정 데이터 타입에 얽매이지 않게!-c++ 할 때 배운 템플릿 같은 거임-제네릭에 들어가는 타입으로 기본 타입이 아닌 래퍼클래스로 들어간다. int는 기본타입이고, int의 래퍼클래스는 Integer이므로 int가 아닌 Interger로 들어간다.-래퍼클래스(wrapper class)에 대한 자세한 내용은 검색해보기~ 100을 참조변수로 참조하며 객체의 값으로 받는 느낌? 🔸 제네릭 클래스 정의와 사용-정의 예시 타입 매개변수는 임의의 문자로 지정 자주 사용하는 타입 매개변수 T:Type, K:Key, V:Value, E:Eleme..