programming study 73

Enumeration, Iterator

Enumeration Thread에 안전한 구조 / vector, Hashtable에 사용 / 다음 내용이 있는지 확인하는 hasNext(), 그 값을 가져오는 next(), 해당 컬렉션의 값을 삭제하는 remove() 메서드 제공 Iterator은 Thread에 안전하지 않은 구조 / ArrayList, HashSet 에 사용 / 다음 내용이 있는지 확인하는 hasMoreElement(), 그 값을 가져오는 nextElement() 메서드 제공, 해당 컬렉션의 값을 삭제하는 메서드는 없음 장점 Iterator는 모든 컬렉션 프레임워크에 공통으로 사용 가능 컬렉션 프레임워크에서 쉽게 값을 가져오고 제거할 수 있음 2,3개의 메소드만 알면 되어서 사용하기 매우 쉽다 단점은 처음부터 끝까지의 단방향 반복만 ..

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 (1)

목록 웹서버 (Web Server) 웹 어플리케이션 서버 (WAS, Web Application Server) 웹서버, WAS 구성 방법 서블릿 서블릿 컨테이너 서블릿 컨테이너의 동시 요청을 위한 Multi Thread 처리 쓰레드 풀 백엔드 개발자로서 해야 할 것 ( 생각해보면 좋은 내용 ) : SSR 기술, 서버 요청 종류 자바 웹 기술 : Spring boot, Spring MVC, Thymeleaf가 요즘 많이 사용되기 때문에 주로 학습 서블릿 사용하기 http요청에따른 스프링 동작 흐름 HttpRequestServlet 역할 HTTP 요청 메세지를 통해 클라이언트에서 서버로 전달하는 방법 3가지 HttpServletResponse - 기본 사용법 MVC 패턴이란? 실습(서블릿 등록 방법, jsp..

윈도우에서 MySQL Workbench 연결 오류

윈도우에서 MySQL Workbench 연결 오류 1. 우클릭 Edit Connection 2. Manage Server Connections 창 열림 3. Test Connection 클릭 4. 연결 오류 Faild to Connect to MySQL at localhost:3306 with user root Unable to connect to localhost 해결 1. 윈도우 키에서 "컴퓨터 관리" 검색해서 들어간다 2. 왼쪽 목록에서 "서비스 및 응용 프로그램" 하위의 "서비스"를 클릭한다. 3. 오른쪽 서비스 목록에서 MySQL80을 찾아서 실행한다. 4. 다시 MySQL Workbench에서 Test Connection을 해본다.

HTTP 웹 기초

Protocol 컴퓨터와 컴퓨터가 인터넷을 통해서 통신할 때 필요한 통신 규약 TCP/IP 인터넷 환경에서 데이터를 전송하는 통신 규약 TCP와 IP의 특성을 합친 것으로 IP주소체계를 통해 TCP특성을 이용해 신뢰성 높은 데이터 송수신을 보장하는 규약입니다. IP (Internet Protocol) 다른 컴퓨터와 구별할 수 있도록 할당되는 IP주소를 통해 패킷 단위로 네트워크 간 전송하는 규약입니다. 신뢰성과 연결성(연결되어있다는 보장)이 없어 데이터 손실이 발생 할 수 있기 때문에 TCP와 함께 사용합니다. TCP ( Transmission Control Protocol ) IP가 그저 목적지를 제대로 찾아가는 것에 중점을 둔다면 TCP는 3 way handshake 방식을 사용하여 통신하고자 하는 ..

Spring Boot 환경에서 Quartz Scheduler 사용하기

공부하게 된 이유 배치서버 작업 경험 중 배치서버가 이미 다 구현 된 상태이기 때문에 배치서버에 사용되는 Quartz 라이브러리를 잘 알지 못 해도 문제가 없었던 적이 있다. 배치작업 기능을 추가하는데 있어서 비지니스 로직을 추가하면 되는 상황이었다. 그렇지만 면접 준비를 하면서 작업 했던 환경에 대해서 설명을 요구할 수 있다고 생각해서 Quartz 라이브러리에 대해서 공부 해보기로 했다. 보통 대용량 데이터에 대한 작업을 순차적으로 처리하는데 사용되는 spring batch와 정해진 시간에 지정된 횟수만큼 반복적으로 특정 작업을 실행시키는 스케줄러 라이브러리인 quartz를 같이 사용한다고 한다. 그러나 spring boot 환경에서 spring batch 없이 quartz만 사용하여 batch ser..

spring 기본 요약 (사용 이유, 객체지향, IOC/DI/container, 빈 등록, 의존관계 주입, 스코프 등)

배경 레거시 소스를 파악하거나 프로젝트를 새로 만들 떄 spring에 대한 개념이 부족하면 어려움이 있다고 판단해서 spring에 대해서 공부하기로 하였습니다. 아래는 inflearn에서 김영한 spring 강의를 듣고 추가로 검색하면서 정리한 내용입니다. 목록 [이론] 스프링은 여러 뜻으로 사용됩니다. 스프링을 사용하는 이유는? 객체지향이란? 객체지향에서 다형성이란? 객체 지향 설계의 5가지 원칙 ( SOLID ) IoC, DI 그리고 컨테이너 싱글톤 패턴 컴포넌트 스캔과 의존관계 자동 주입 자동 빈 등록, 수동 빈 등록의 올바른 실무 운영 기준 의존관계 옵션처리 주입 대상이 되는 빈이 2개 이상이라면? 주입 대상이 되는 빈들을 모두 받고 싶을 때 (List, map) 빈 생명주기에 따른 콜백 기능 빈..

SOLID 원칙 적용

SOLID 원칙 적용 안된 예시 클라이언트 객체가 추상화된 인터페이스뿐만 아니라 구현 클래스도 의존하고 있는 상황. -> DIP 위반, SRP 위반 기능 추가시 클라이언트에서 구현클래스 사용부분을 새로운 구현 클래스로 갈아 끼워야 해서 클라이언트 객체도 수정해야함. -> OCP 위반 OrderServiceImpl.java에서 FixDiscountPolicy 부분을 주석처리하고 RateDisCountPolicy 구현체를 사용하도록 수정해야함 // DiscountPolicy disCountPolicy = new FixDiscountPolicy(); DiscountPolicy disCountPolicy = new RateDiscountPolicy(); SOLID 원칙 적용 예시 클라이언트 객체에 있던 구현클래..

spring-AOP

AOP 기본 형태 [Spring] AOP란? 용어 정리, 사용 방법 (tistory.com) @Aspect public class 어노테이션 이름 { @Around("execution(어노테이션 적용 대상 표현식)") //@Around("@annotation(TestAnnotation)") pivate Object 메서드 이름 (ProceedingJoinPoint joinPoint) throws Throwable { Object joinPoint = joinPoint.proceed(); return joinPoint } } 1) Target : 핵심 기능을 담고 있는 모듈로 부가기능의 대상을 의미 2) Aspect : 공통적으로 정의될 기능을 의미 @Aspect 어노테이션 - 공통 기능 메서드가 있는 클..