728x90

BackEnd 학습 43

Java(자바) - 스트림

strame() 으로 스트림 객체를 받아 처리 체인 패턴으로 중간 처리와 최종 처리를 연계하여 사용 가능 최종 처리가 있어야 오리지널 및 중간 처리 스트림이 동작 내부 반복자 컬렉션 바깥에서 가져와 처리하는 외부 반복자와 달리 내부에서 처리하며 병렬 작업이 가능 중간 처리 매핑 mapToXXX() : 다른 요소로 변환 Function 함수형 인터페이스 사용 람다식으로 표현 asXXXStream() : 각 long 혹은 double요소로 변환 boxed() : wrapper 클래스로 변환 flastMapXXX : 복수 개의 요소들로 변환한 새로운 스트림 리턴 필터링 distinct() : 중복 제거 filter() : 조건 필터링 Predicate 함수형 인터페이스 사용 람다식으로 표현 정렬 sorted(..

BackEnd 학습/Java 2024.01.31

Java(자바) - 컬렉션 프레임워크

List 순서를 유지하고 저장 중복 저장 가능 객체를 인덱스로 관리 객체의 주소를 저장 ArrayList 제한 없이 객체 추가 가능 배열과 동일한 방식(삭제 혹은 삽입시 앞 혹은 뒤 객체들을 이동 시켜 인덱스 구성 맞춤) Collections.synchronizedList()메소드로 동기화 매핑 가능 Vector synchronized 메소드로 구성되어져 있어 멀티 스레드가 동시에 실행 불가 멀티 스레드 환경에서 안전하게 객체 추가 및 삭제 가능 LinkedList 인접 객체를 체인처럼 연결해서 관리 앞 뒤 링크만 변경하면 되므로 빈번한 삽입, 삭제 작업에 성능이 좋음 Set 순서를 유지하지 않고 저장 중복 저장 안됨 하나의 null만 저장 가능 HashSet hashCode()의 리턴값이 같고, equ..

BackEnd 학습/Java 2024.01.29

Java(자바) - Thread(스레드)

멀티 스레드 개념 프로세스(process) 실행 중인 하나의 애플리케이션 하나의 애플리케이션은 다중 프로세스 생성 가능 ex) chrome 2개 멀티 프로세스는 서로 독립적이며 하나의 프로세스에서 오류가 발생해도 다른 프로세스에 영향을 미치지 않음 멀티 태스킹(multi tasking) 두 가지 이상의 작업을 동시에 처리 스레드(thread) 하나의 코드 실행 흐름 멀티 스레드는 애플리케이션 내부에서의 멀티 태스킹이라 볼 수 있음 멀티 스레드는 하나의 프로세스 내부에서 생성되기 때문에 다른 스레드에 영향을 미칠 수 있음 모든 자바 애플리케이션은 메인스레드가 main() 메서드 실행으로 시작 싱글 스레드는 메인 스레드가 종료되면 프로세스도 종료 멀티 스레드는 실행 중인 스레드가 있으면 프로세스가 종료되지 ..

BackEnd 학습/Java 2024.01.25

Spring(스프링) - 스프링 MVC 기본기능

로깅 로깅 라이브러리를 통해서 콘솔에 로그를 출력 로그 라이브러리는 Logback, Log4J 등이 있고 이를 통합한 인터페이스가 SLF4J 임 구현체로 Logback 같은 라이브러리 사용 → 스프륑 부트에서 기본으로 제공 로그 포멧 시간, 로그 레벨, 프로세스 ID, 쓰레드 명, 클래스명, 로그 메시지 로그 레벨 TRACE > DEBUG > INFO > WARN > ERROR 기본 설정은 INFO logging.level.[groupname].[artifactname] = [level 지정] 프로젝트 단위 로깅 레벨 지정 log.debug(”debug log={}”, name) 으로 사용 문자열끼리 + 를 하게 되면 사용하지 않아도 연산이 일어나게 되서 리소스 낭비를 하게 됨 @RestControlle..

Spring(스프링) - 스프링MVC 구조이해

스프링 MVC 전체 구조 DispatcherServlet 프론트 컨트롤러 패턴으로 구현 스프링 MVC의 핵심 HttpServlet을 상속 서블릿으로 등록하면서 모든 경로에 대해서 매핑 urlPatterns=”/” 요청 흐름 서블릿이 호출되면 HttpServlet이 제공하는 service() 메서드 호출 스프링MVC는 DispatcherServlet의 부모인 FrameworkServlet에서 service() 메서드를 오버라이드 해 둠 FrameworkServlet.service()를 시작으로 여러 메서드가 호출되면서 DispatcherServlet.doDispatch()가 호출 됨 동작 순서 핸들러 조회 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러를 조회 핸들러 어댑터 조회 핸들러를 실행할 수 있는 ..

Spirng(스프링) - MVC 프레임워크 만들기

프론트 컨트롤러 패턴 특징 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 프론트 컨트롤러가 요청에 맞는 컨트롤러 찾아서 호출 공통 처리 가능 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 스프링 웹 MVC도 DispatcherServlet이 프론트 컨트롤러 패턴으로 구현되어져 있음 를 이용하면 하위 요청을 모두 받을 수 있음 단계별 도입 프론트 컨트롤로 도입 호출이 되면 프론트 컨트롤러에서 받아서 처리 frontController에서 처리 View 분리 각 View를 컨트롤러에서 직접 실행 하던것을 객체화 하여 경로만 넘겨주어 해당 객체에서 forward 수행을 함 MyView 객체에서 처리 Model 추가 각 컨트롤러에서는 논리 이름을 반환하고 프론트 컨트롤러에서 실제..

Spring(스프링) -서블릿, JSP, MVC패턴

Servlet으로 만들어진 HTML 서블릿과 자바만으로 HTML 생성 → 이 방식은 동적인 HTML 생성이 불편 자바코드로 HTML을 생성하는 것보다 HTML에 동적으로 변경해야 하는 부분만 자바 코드를 넣는 것이 더 효율적 → 템플릿 엔진 사용 템플릿 엔진으로 JSP, Thymeleaf 등이 있음 JSP로 만들어진 HTML JSP 안에서의 requst와 response는 그냥 사용이 가능 객체명을 request, response로 사용해야함 Java 코드는 안에 넣어 주어야 함 Java 코드 출력은 안에 넣어 주어야 함 실행할 때 .jsp까지 경로에 작성해 주어야 함 MVC 패턴 하나의 서블릿이나 JSP에서 뷰와 로직을 모두 처리하는 것은 하나의 곳에서 너무 많은 역할을 하고 유지보수가 어려워짐 뷰와 ..

Spring(스프링) - 서블릿

Hello Servlet @ServletComponentScan 서블릿을 찾아 자동으로 등록 해줌 @WebServlet name:서블릿 urlPatterns: url 매핑 servlet을 사용하기 위해서는 HttpServlet을 상속받아 사용 요청을 통해 매핑된 url이 실행되면 service 메서드를 실행 logging.level.org.apache.coyote.http11=debug; 개발용 로깅 설정 HttpServletRequest - 개요 서블릿은 HTTP요청 메시지를 편리하게 사용할 수 있도록 HTTP 요청 메시지를 파싱하고 그 결과를 HttpServletRequest 객체에 담아서 제공 Start line HTTP 메서드 URL 쿼리스트링 스키마, 프로토콜 헤더 헤더 조회 바디 form 파라..

Spring(스프링) - 웹 애플리케이션 이해

웹 서버, 웹 애플리케이션 서버 웹 - HTTP 기반 HTTP 메시지에 모든 것을 전송 웹 서버 HTTP 기반으로 동작 정적 리소스 제공, 기타 부가기능 정적 파일, CSS, JS 등 ex) nginx, apach 웹 애플리케이션 서버(WAS) HTTP 기반으로 동작 웹 서버 기능 포함(정적 리소스 제공) 프로그램 코드를 실행해서 애플리케이션 로직 수행 동적 HTML, HTTP API 서블릿, JSP ex) 톰캣 웹 서버, WAS 차이 웹 서버는 정적 리소스, WAS는 애플리케이션 로직 둘의 경계 모호 자바는 서블릿 컨테이너 기능을 제공하면 WAS WAS는 애플리케이션 코드를 실행하는데 더 특화 웹 시스템 구성 - WAS , DB WAS가 너무 많은 역할을 담당하면 서버 과부하 우려 가장 비싼 애플리케이..