본문 바로가기

TIL(Today I Learned)

(137)
TIL-231027(WAS, WS) 📝오늘 공부한 것 WAS, WS 공부 커리어톤 참여하기 프로그래머스 문제풀기 📌 WAS vs WS 처음 Spring을 공부할 때 Apache Tomcat에 대해서 배웠었다. 'Apache는 WS이고, Tomcat은 WAS이다. SpringBoot에는 Apache Tomcat이 내장되어 있는 것이 장점이고, 개발자가 따로 신경쓸 필요가 없기 때문에 편하다.'라는 정도만 알고 지나갔었다. 스프링 개념에 대해서 공부를 하다보니 WS와 WAS가 자주 등장하여 공부를 해보고자 한다. 📍 WS (Web Server) HTTP 프로토콜을 기반으로 하여 클라이언트의 요청을 서비스하는 기능을 담당한다. 1) 정적인 컨텐츠 제공 WAS를 거치지 않고 바로 자원 제공 2) 동적인 컨텐츠 제공을 위한 요청 클라이언트의 요청(..
TIL-231026(REST API) 📝오늘 공부한 것 REST API 공부 커리어톤 참여하기 프로그래머스 문제풀기 📌 REST API 📍 API (Application Programming Interface) 애플리케이션이나 디바이스가 서로간에 연결하여 통신할 수 있는 방법을 정의하는 규칙을 정의 개발자는 다른 애플리케이션이 프로그래밍 방식으로 애플리케이션과 통신할 수 있도록 API를 표시하거나 생성 가장 기본적인 수준에서 API는 하나의 애플리케이션이나 서비스가 다른 애플리케이션이나 서비스 내의 리소스에 액세스할 수 있게 해주는 매커니즘이다. 캐싱, 즉 리소스 검색 방법 또는 리소스의 출처에 대해 자세히 알 필요가 없다는 장점이 있다. 클라이언트 : 웹에서 정보에 액세스하려는 사용자 API를 사용하는 사람이거나 소프트웨어 시스템일 수 있..
TIL-231025(URI, URL, URN) 📝오늘 공부한 것 URL, URI, URN 공부 커리어톤 참여하기 프로그래머스 문제풀기 📌 URI, URL, URN 지금까지는 URI가 나올 때마다 URL과 비슷한 것이라고만 이해한 채 넘어가고는 하였다. 이제는 URI가 무엇인지, URL과의 차이점이 무엇인지에 대해 공부해보고자 한다. 📍 URI (Uniform Resource Identifier) - 통합 자원 식별자 인터넷상의 리소스 '자원 자체'를 식별하는 방법 Uniform - 리소스를 식별하는 통일된 방식 Resource - URI로 식별이 가능한 모든 종류의 자원(웹 브라우저 파일 및 그 이외의 리소스 포함) Identifier - 다른 항목과 구분하기 위해 필요한 정보 URI이 존재는 인터넷에서 요구되는 기본조건으로서 인터넷 프로토콜에 항상..
TIL-231024(자바 프로그램 실행 과정) 📝오늘 공부한 것 자바 프로그램 실행 과정 공부 커리어톤 참여하기 프로그래머스 문제풀기 📌 자바 프로그램 실행 과정 📍 Java Compiler 자바 소스파일을 JVM이 해석할 수 있는 자바 바이트 코드(.class)로 변경한다. 일반적인 윈도우 프로그램의 경우, Compile이후 Assembly 언어로 구성된 파일이 생성된다. 📍 Compile 컴파일은 사람이 이해하는 언어를 기계어로 바꾸는 과정이다. =원시코드에서 목적코드로 바꾸는 과정 일반적으로 소스파일을 컴파일한 파일을 목적파일이라고 하는데 C, C++과 같은 언어는 목적파일이 바이너리 코드의 형태를 갖는다. 하지만 자바에서는 바이너리 코드가 아닌 바이트코드를 가진 바이트파일로 변환이 된다. - 소스파일 : 개발자가 작성하는 고레벨언어인 소스코드..
TIL-231023(PUT vs PATCH) 📝오늘 공부한 것 PUT vs PATCH 공부 커리어톤 참여하기 프로그래머스 문제풀기 📌 PUT & PATCH 프로젝트를 진행하면서 PUT을 사용해야할지 PATCH를 사용해야 하는지 헷갈릴 때가 많았다. 'PUT은 모든 필드를 보내야하고, PATCH는 부분만 보내면 될 때 사용한다.'라고 생각을 했었다. 정확하게 개념이 잡히지 않아 PUT과 PATCH에 대해서 공부를 해보고자 한다. [ PUT ] 요청 payload를 사용해 새로운 리소스를 생성하거나, 대상 리소스를 나타내는 데이터를 대체한다. PUT 메서드는 request payload로 전달받은 값을 그대로 entity에 반영하기 때문에 request는 항상 전체 entity를 포함하고 있어야 한다(일부 필드만을 가지고 있으면 안된다.). 요청한 U..
TIL-231021(자바의정석 Chapter12 '지네릭스, 열거형, 애너테이션') 📝오늘 공부한 것 자바 스터디 📌 자바의 정석 스터디 [ 지네릭스 ] 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능 지네릭스의 장점 타입 안정성을 제공한다. 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해 진다. 지네릭 클래스의 선언 지네릭스의 제한 지네릭 클래스의 객체를 생성할 때 객체별로 다른 타입을 지정하는 것은 적절하다. 그러나 static멤버에 타입 변수 T를 사용할 수 없다. T는 인스턴스변수로 간주되기 때문이다. → static멤버는 타입 변수에 지정된 타입, 즉 대입된 타입의 종류에 관계없이 동일한 것이어햐 하기 때문이다. 지네릭 타입의 배열을 생성하는 것도 허용되지 않는다. 지네릭 배열 타입의 참조변수를 선언하는 것은 가능하지만, ‘ne..
TIL-231020(자바 Record) 📝오늘 공부한 것 Record 공부 커리어톤 참여하기 프로그래머스 문제풀기 이력서 수정하기 📌 Record record는 불변 데이터 객체를 쉽게 생성할 수 있게 해주는 새로운 타입의 Java 클래스이다. boilerplate code란 최소한의 변경으로 여러 곳에서 재사용되며, 반복적으로 비슷한 형태를 띄는 코드를 말한다.(getter, equals, hasCode, toString 등) 이러한 boilerplate code는 lombok이나 IDE로 코드를 간결하게 만들 수는 있지만 근본적으로 자바가 가지고 있는 한계를 해결할 수는 없다. 이를 극복하기 위해 추가한 기능이 record이다. record 레코드명(컴포넌트1, 컴포넌트2, ...) { } [ record의 목표 ] 객체 지향의 사상에 맞..
TIL-231019(Filter와 Interceptor) 📝오늘 공부한 것 Filter와 Interceptor 공부 커리어톤 참여하기 프로그래머스 문제풀기 이력서 수정하기 📌Filter와 Interceptor 웹 개발을 하다보면, 공통적으로 처리해야 할 업무들이 많다. 예를 들어, 로그인 관련 처리, 권한 체크, XSS(Cross site script)방어, 분기처리, 로그, 페이지 인코딩 변환 등이 있다. 공통업무에 관련된 코드를 모든 페이지 마다 작성 해야한다면 중복된 코드가 많아지게 되고 프로젝트 단위가 커질수록 서버에 부하를 줄 수도 있으며, 소스 관리도 되지 않는다. 이렇게 많은 로직에서 공통으로 관심이 있는 부분을 공통 관심사라고 한다. 웹과 관련된 공통 관심사를 처리할 때는 HTTP의 헤더나 URL 정보가 필요한데 서블릿 필터나, 스프링 인터셉터는..