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는 인프라 로직의 중복을 제거하는 것에 목표를 두고 있다. - 비즈니스 로직 : 데이터의 상태값을 조작하는 로직 (회원가입, 회원정보 수정 ...) - 인프라 로직 : 데이터에 대한 저장, 변경은 하지 않으면서 성능을..
1. 테스트 주도 개발 (TDD) 해야하는 이유 ...? TDD 에는 요구조건에 대한 명확한 이해, 안전한 테스트, 리팩토링 세 가지 장점을 제공한다.(TDD는 새로운 기능에 대해 테스트 코드를 먼저 작성하고, 테스트를 통과할 수 있는 개발 코드를 이후에 작성하는 방식으로 진행) 첫째, 테스트를 작성하기 이전에는 요구사항을 명확히 알아야만 테스트 시나리오를 작성할 수 있기 떄문에 개발자는 요구사항에 만족하는 코드를 구현 가능하다. 둘째, 전체 테스트 코드를 구동함으로써 새로운 기능이 추가가 됬을 때, 이전 기능에 대해 영향을 미칠 수 있는 가능성 제거 가능하다. 셋째, 객체지향적인 설계 가능하다. (Divide and Conquer) 객체 지향은 각각의 개념을 객체로 추상화하여, 객체들과의 연관관계를 생..
1. Thread Class 와 Executor 인터페이스 차이점은 ...? Executor 인터페이스는 Java 4부터 도입된 동시성 프레임워크로서, 메모리 측면에서의 효율성있는 동시성을 지원하기 위한 인터페이스이다.스레드를 생성하는 과정에서 메모리의 자원을 많이 소비하게 되는데, Executor 인터페이스는 스레드를 미리 생성하고, 그 수를 제한하며, 사용된 스레드를 재사용함으로써 자원을 효율성을 높여주고 있다. Executor 인터페이스는 테스크를 정의한 객체를 생성하고, Executor 인터페이스에 태스크 객체를 제공하는 방식으로 동작한다. 테스크 객체를 제공하면 작업큐에 테스트가 저장되고, Executor에 미리 생성된 스레드는 작업큐에 있는 작업을 순차적으로 처리한다. 그리고 작업이 완료되면 ..
1. GC ...? 가비지 컬렉션이란, 기존에 할당된 메모리를 재사용하는 메커니즘으로서, 모든 작동 중인 코드에서 더이상 참조하지 않는 Unreachalbe 객체를 찾은 후,반환하는 목적을 가진다. 가비지 컬렉션은 두가지 가설을 바탕으로 설계되었다. - 대부분의 객체는 금방 참조하지 않는(Unreachable) 상태가 된다. - 오래된 객체에서 최근에 생성된 객체로의 참조는 아주 드물게 존재한다. (이와 같은 경우 Old area Card Table을 이용해 제어) 2. Minor GC ...? Minor GC는 Young 영역에서의 GC를 의미한다. Young 영역은 처음 객체가 생성되었을 때 저장되어지는 Eden 영역과 2개의 Survivor 영역으로 구성되있다.Old 영역에서 New 영역의 객체를 ..