1. Model 1 방식 디자인코드 (HTML)와 자바코드(비즈니스 로직)를 구분하지 않고, 하나의 JSP 파일 내에 기술하여 개발하는 방식장점 : 쉬운 개발, 낮은 학습 비용단점 (1) 디자인코드와 자바코드의 경계가 명확하지 않아 높은 복잡도 (2) 디자인코드와 자바코드가 하나의 파일에서 관리되기 때문에 자바코드를 수정할 때도 디자이너와 별도 협업이 요구 (3) 비즈니스 로직의 재사용성이 낮으며, 중복 존재 (4) 유지보수의 어려움 존재 2. Model2 방식 MVC 패턴을 적용하여 각각의 역할을 나누어서 개발이 가능 - Model : 비즈니스 로직을 담당하는 영역 (Model 1 방식과는 달리 디자인코드와 비즈니스로직을 분리) - View : 사용자가 사용하는 영역이며, Model에서 생성된 Data..
1. Stack, Heap 메모리 차이점? Stack : 스레드가 독립적으로 가지고 있는 영역, 메소드의 호출 정보, 지역변수 정보 보유. Stack 영역은 독립적이기 때문에 각각의 메소드가 독립적으로 호출 가능 - PC Register, Native Method Stack도 스레드가 독립적으로 보유Heap : 스레드가 공통적으로 사용하고 있는 공유 영역, 참조 객체 정보 보유. Method Area는 스레드가 공유해서 사용하고 있으며, 클래스로더가 바이트코드를 처음으로 적재하는 공간으로서, 클래스와 관한 모든 정보들을 보유하고 있다. 리플렉션은 Method Area 정보를 이용해서 수행 2. sleep() 과 wait() 차이 synchronized 키워드 내부에서 sleep()은 lock은 해제하지 ..
1. HTTP METHOD PUT vs PATCH PUT은 요청된 자원을 수정할 때, 자원내 필드를 전체 수정할 때 사용 (만약 일부만 전달할 경우, 그외 필드들은 NULL or 초기값 처리) - 예 : 필드에 name, age, height가 존재할 때, 'name=DOBY'만 전달할 경우, age와 height는 0으로 초기화 PATCH는 요청된 자원을 수정할 때, 자원내 필드를 일부 수정할 때 사용 참고로 HEAD는 GET 방식과 동일하지만, BODY가 존재하지 않음. 웹 서버 정보확인, 버전확인, 최종 수정일자 확인을 위한 용도 2. HTTP METHOD GET vs POST GET은 Http Request Message의 Header 부분의 URL에 담겨서 전송되며, BODY는 비어있는 상태 U..
1. SSH, 사용이유? SSH는 패킷을 암호화를 하여 전송하기 때문에 원격 관리에서 보안적인 측면에서 도움을 줄 수 있는 프로그램반면에, 텔넷은 패킷을 전송할 때, 암호화 되지 않는 Plain Text로 전달을 하기 때문에 Sniffer를 이용하여 가로챌 수 있는 보안의 위험 존재 그렇기 때문에 SSH를 사용하면 강력한 인증방법과 안전하지 못한 네트워크에서 안전하게 통신할 수 있는 기능을 제공. 또한, 사용 방법이 쉬움 2. AWS 3. 배포 방법 배포는 최종 사용자에게 서비스를 제공하는 것을 의미. 배포는 다음과 같은 절차로 진행 (1) SSH 통해 서버에 접속 (2) 처음에 배포를 할 경우에는 자바가 설치되어 있지 않기 때문에 자바 설치 (3) github 에서 배포할 프로젝트를 불러오고, 빌드 -..
1. 함수형 프로그래밍이란? 함수형 프로그래밍 : 부수 효과를 없애고 순수 함수를 만들어 모듈화 수준을 높이는 프로그래밍 패러다임 - 부수 효과 : 객체의 상태를 변화 시키는 것 (파라미터 포함) - 순수 함수 : 부수효과가 없는 함수. 동일한 인자를 주었을 때 항상 같은 값을 리턴하는 함수, 외부의 상태를 변경하지 않는 함수 - 모듈화 : 기능을 분할하고 추상화하여 소프트웨어의 성능을 향상시키고 유지보수를 효과적으로 하기 위한 구현 기법 2. 함수형 프로그래밍을 OOP에서 사용하는 이유? 함수적 프로그램은 코드의 동작을 추론하기 쉽다. 함수를 호출하는 코드를 함수 구현문으로 대체할 수 있기 때문에 개발자는 구현문을 통해 추론이 가능하다. 멀티스레드에서 안전성 지원. 쓰레드간 객체를 안전하게 공유할 수 ..
1. HTTP StatusCode 1xx : 조건부 응답 2xx : 클라이언트 요청을 정상적으로 처리하고, 클라이언트에게 전달한 경우 (예 : 200 OK) 3xx : 클라이언트의 요청을 처리한 후, 추가적인 동작을 수행해야 하는 경우 301 (영구이동) : 해당 URL이 영구적으로 새로운 URL로 변경되었음을 의미 검색엔진 크롤러는 301 요청을 만나면 컨텐트가 완전히 새로운 URL로 영원히 이동했다고 판단 페이지랭킹이나 링크에 대한 점수를 새로운 URL에 전달 302 (임시이동) : 요청한 리소스가 임시적으로 새로운 URL로 이동했음(Temporarily Moved)을 의미 검색엔진은 페이지랭킹이나 링크에 대한 점수를 새로운 URL로 옮기지 않으며 기존 URL을 그대로 유지 즉, 검색엔진이 기존 UR..
1. JPA 는 무엇인가?! JPA는 자바 ORM 기술에 대한 API 표준 명세를 의미한다. - ORM : 객체와 관계형 데이터베이스를 매핑하는 방법 ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 해결 (자바의 객체와 RDB의 엔티티에서 발생하는 차이) - API : 웹 애플리케이션에서 다른 서비스에 요청을 보내고, 응답을 받기 위해 정의된 명세 결국은 JPA는 객체와 관계형 데이터베이스를 매핑하는 표준 기술을 이용해서 데이터베이스에 요청을 보내고 응답을 받기 위한 방법을 의미 (1) 생산성 : CRUD용 SQL을 개발자가 직접 작성하지 않아도 추상화된 메소드를 통해 확인 가능 (2) 패러다임 불일치 해결 : 객체가 가지고 있는 특성을 엔티티와 호환을 맞추는 것에서 미묘한 차이가 ..
1. IOC /DI 작업을 수행하는 쪽에서 객체를 직접 생성하는 것이 아닌, 주입받는 방식을 통해 제어 흐름 구조를 바꾸는 것을 의미한다. 즉, 모든 종류의 작업을 사용하는 쪽에서 제어하는 구조이다. 의존성을 주입하는 방식에는 아래 두가지가 존재한다. - DL (Dependency Lookup) : 의존성 검색 저장소에 저장되어 있는 Bean에 접근하기 위해 개발자들이 컨테이너에서 제공하는 API를 이용해서 Bean을 검색하는 방식 - DI (Dependency Injection) : 의존성 주입 : 클래스에서 필요한 의존 객체를 컨테이너가 자동으로 제공해주는 방식 : Bean 설정 정보를 바탕으로 컨테이너가 자동으로 연결해주는 방식 (DL의 컨테이너 의존성을 줄인 방식) : DI 기반으로 개발을 하면 ..
1. 스프링 정의 자바 엔터프라이즈 개발을 편리하게 해주는 오픈소스 경량급 애플리케이션 프레임워크 (1) 자바 엔터프라이즈 개발을 편리하게 해주는 편리한 개발이란 개발자가 복잡하고 실수하기 쉬운 로우레벨 기술에 많은 신경을 쓰지 않고 비즈니스 로직을 효과적으로 구현할 수 있도록 지원하는 것을 의미한다. (2) 경량급 스프링은 가변고 단순한 환경에서도 복잡한 EJB와 고가의 WAS를 갖춰야만 가능했던 엔터프라이즈 개발의 고급 기술을 사용할 수 있다.스프링이 가볍다는 것은 기술수준이 가볍다는 것이 아닌, 단순한 환경에서도 생산성과 품질성이 뛰어난 개발을 지원할 수 있가는 것이다. (3) 애플리케이션 프레임워크 프레임워크는 애플리케이션 특정 계층에서 주로 동작하는 한가지 기술에만 집중되지만, 애플리케이션 프레..
1. AOP 정의 AOP는 애플리케이션 전체에 걸쳐 사용되는 기능을 재사용할 수 있도록 지원한다. AOP는 Aspect Oriented Programming의 약자이다.관점 지향 프로그래밍이라고 하는데, 여기서 말하는 관점은 기존에 자바를 개발했던 핵심 모듈에 대한 관점에서 부가 기능의 관점으로 바꾸어 프로그래밍을 한다는 것이다. 하나의 애플리케이션을 개발하기 위해서는 비즈니스 로직과 비즈니스 로직을 지탱하는 인프라 로직이 필요하다.OOP는 비즈니스 로직의 중복성 제거의 목표를 두고, AOP는 인프라 로직의 중복을 제거하는 것에 목표를 두고 있다. - 비즈니스 로직 : 데이터의 상태값을 조작하는 로직 (회원가입, 회원정보 수정 ...) - 인프라 로직 : 데이터에 대한 저장, 변경은 하지 않으면서 성능을..