FrontController 패턴
·
Spring
본격적으로 스프링 웹 MVC를 공부하기 전에 스프링 웹 MVC의 핵심인 FrontController에 대해 알아보자 FrontController 패턴 특징 1. 프론트 컨트롤러 서블릿 하나로 클라이언트의 요청을 받음 2. 프론트 컨트롤러가 요청에 맞는 컨트롤러를 찾아서 호출 3. 입구를 하나로 4. 공통 처리 가능 5. 프론트 컨트롤러를 제외한 나머지 컨트롤러는 서블릿을 사용하지 않아도 됨 프론트 컨트롤러 도입 - v1 1. 클라이언트가 HTTP요청을 한다. 2. Front Conrtoller가 그 요청을 받아, HTTP요청에서 매핑된 정보를 매핑 정보에서 찾는다. 3. 매핑 정보에서 찾을 Controller를 호출한다. 4. Controller에서 View(JSP)로 forward한다. 5. JSP가 ..
MVC 패턴
·
Spring
MVC는 1.Model 2. View 3. Controller 의 약자이다. 컨트롤러: HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행한다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담는다. 모델: 뷰에 출력할 데이터를 담아둔다. 뷰가 필요한 데이터를 모두 모델에 담아서 전달해주는 덕분에 뷰는 비즈니스 로직이나 데이터 접근을 몰라도 되고, 화면을 렌더링 하는 일에 집중할 수 있다. 뷰: 모델에 담겨있는 데이터를 사용해서 화면을 그리는 일에 집중한다. 여기서는 HTML을 생성하는 부분을 말한다. 우리는 외부에서 직접 JSP에 접근할 수 없도록 설계를 해야한다(보안문제) WEB-INF > 이 경로안에 JSP가 있으면 외부에서 직접 JSP를 호출할 수 없다. 우리가 기대하는 것은 항..
관심사의 분리
·
Spring
OrderService의 할인정책을 위한 코드 public class OrderServiceImpl implements OrderService{ private final MemberRepository memberRepository = new MemoryMemberRepository(); private DiscountPolicy discountPolicy; @Override public Order createOrder(Long memberId, String itemName, int itemPrice) { Member member = memberRepository.findById(memberId); int discountPrice = discountPolicy.discount(member, itemPrice..
A star pathfinder
·
인공지능
https://github.com/nexmin0805/A_star_Pathfinder GitHub - nexmin0805/A_star_Pathfinder Contribute to nexmin0805/A_star_Pathfinder development by creating an account on GitHub. github.com 이 코드는 A* 경로 찾기 알고리즘을 시각화하는 프로그램입니다. Pygame 라이브러리를 사용하여 그래픽 사용자 인터페이스를 구현하였습니다. 이 프로그램은 사용자가 장애물을 생성하거나 랜덤하게 생성할 수 있고, 마우스를 드래그하여 시작점 및 도착점을 설정할 수 있게 해주며, 두 가지 휴리스틱 방식(맨하탄 거리, 유클리드 거리) 중 하나를 선택하여 A* 알고리즘을 실행할 수 있습..
SOLID(좋은 객체 지향 설계의 5가지 원칙)
·
Spring
클린 코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리했다. 1. SRP: 단일 책임 원칙(Single responsibility principle) 2. OCP: 개방-폐쇄 원칙(Open/closed principle) 3. LSP: 리스코프 치환 원칙(Liskov substitution principle) 4. ISP: 인터페이스 분리 원칙(Interface segregation principle) 5. DIP: 의존관계 역전 원칙(Dependency inversion principle) 1. SRP: 단일 책임 원칙 -한 클래스는 하나의 책임만 가져야 한다. -하나의 책임이라는 것은 모호하다. -클 수도 있고, 작을 수 있다. -문맥과 상황에 따라 다르다. -중요한 기준은 변경..
13. 데이터베이스 사용
·
Spring
이번시간엔 스프링에서 데이터베이스를 사용하는 방법을 알아보겠습니다. https://www.h2database.com/html/download-archive.html Archive Downloads www.h2database.com 우선 다음 링크로 들어가서 1.4.200 버전을 설치해줍니다. Windows Installer를 이용해도 되지만 저희는 Zip을 다운받아주겠습니다. h2파일의 bin파일로 들어가서 chmod 755 h2.sh . ./h2.sh 터미널에 다음 두개의 명령어를 입력해줍니다. 그럼 다음과 같은 콘솔이 실행됩니다. 테이블 생성하기 create table member ( id bigint generated by default as identity, name varchar(255), pr..
12. 회원 관리 예제 - 웹 MVC 개발(2. 회원 조회)
·
Spring
이번시간에는 회원 웹 기능 - 조회 를 만들어보겠습니다. MemberController에 다음 코드를 넣어주겠습니다. @GetMapping("/members") public String list(Model model){ List members = memberService.findMembers(); model.addAttribute("members", members); return "members/memberList"; } 그리고 members에 memberList를 만든 후 다음 html코드를 넣어줍니다. # 이름 이름을 등록하고 조회해보면 다음과 같이 잘 출력됩니다. 이 코드가 중요합니다. ${members}는 모델(controller) 안에 있는 값을 꺼내는 것입니다. th:each는 타임리프 문법으..
11. 회원 관리 예제 - 웹 MVC 개발(1. 회원 등록)
·
Spring
이번 시간에는 홈 화면을 추가해보겠습니다. 우선 controller에서 HomeCotroller파일을 만들어주고, 아래 코드를 넣어줍니다. package hello.hellospring.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; @Controller public class HomeController { @GetMapping("/") public String home(){ return "home"; } } 다음은 template에서 home.html파일을 만들고 다음 코드를 넣어줍니다. Hello Spring 회원 기능 회원 가입 회원..
10. 자바 코드로 직접 스프링 빈 등록하기
·
Spring
이번 시간엔 자바 코드로 직접 스프링 빈에 등록하는 법을 배워보겠습니다. 먼저, SpringConfig라는 파일을 하나 만들어주겠습니다. @Configuration이라는 애노테이션을 써보겠습니다. package hello.hellospring.service; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class SpringConfig { @Bean public MemberService memberService(){ return new MemberService(); } } 이 코드를 실행하면 Configurat..
11. 프로젝트 관리
·
소프트웨어공학
1. 즉흥적인 개발 프로세스 즉흥적으로 프로그래밍해보고 사용자가 원하면 수정하는 식으로 작업하여 소프트웨어를 완성하는 방법. 즉 사용자가 만족할 때까지 소프트웨어를 고친다. 2. 폭포수 모델 폭포수 모델은 즉흥적인 개발 프로세스의 문제점을 개선한 것이다. 특히 요구와 설계, 품질 보증의 중요성을 반영한 소프트웨어 공학의 전통적인 개발 방법이다. 폭포수 모델은 각 단계가 끝나기 전, 다음 단계로 진입할 수 있는 기초가 마련되었는지 검토하고 확인하는 품질 보증을 실시한다. 만약 문제를 발견하면 전 단계로 되돌아가 수정한다. 3. 점증적 모델 점증적 모델은 폭포수 모델의 문제점을 보완한 방법이다. -시스템을 컴포넌트로 나누어 점증적으로 개발한다. 각 컴포넌트는 폭포수 모델을 따라 개발한 후 전체 시스템에 통합..
4. 스레드와 멀티스레딩
·
운영체제
01 프로세스의 문제점 프로세스 생성 오버헤드 - 프로세스를 위한 메모리 할당, 부모프로세스로부터 복사 - PCB 생성, 매핑 테이블(페이지 테이블) 생성 등 프로세스 컨텍스트 스위칭 오버헤드 - CPU 레지스터들을 컨텍스트로 PCB에 저장, 새 프로세스 컨텍스트를 PCB에서 CPU로 옮기는 시간 - CPU가 참고할 매핑 테이블(페이지 테이블)의 교체 시간 - CPU 캐시에 새 프로세스의 코드와 데이터가 채워지는데 걸리는 시간 등 프로세스 사이 통신의 어려움 - 프로세스가 다른 프로세스의 메모리에 접근 불가 - 프로세스 사이의 통신을 위한 제 3의 방법 필요 - 커널 메모리나 커널에 의해 마련된 메모리 공간을 이용하여 데이터 송수신 신호, 소켓, 메시지 큐, 세마포, 공유메모리, 메모리맵 파일 등 - 코..