목록Back (34)
호비시의 끄적끄적
POJO 란? Plain Old Java Object 의 약자로 말 그대로 해석하자면, 오래된 방식의 자바 객체라는 뜻이다. POJO는 Java 가 무거운 프레임 워크를 사용하게 됨에 따라 해당 프레임 워크에 종속된 무거운 객체를 만들게 된 것에 반발하여 만든 개념이다. ORM이 나왔을 때, ORM 기술을 사용하고 싶다면 Hibernate와 같은 ORM 프레임워크를 사용해야한다. 자바 객체가 ORM 기술을 사용하기 위해 Hibernate에 의존하는 순간 POJO라고 할 수 없다. 특정 기술에 종속, 의존하기 때문이다. 왜 POJO를 지향해야 하는가? Java의 특징은 객체지향 프로그램이다. 객체지향 프로그래밍은 특정 기술에 종속, 의존하지 않아야 한다. 의존하게 된다면 확장성이 떨어지게 되고, 유지보수가..
Spring WebFlux란? Spring WebFlux는 Spring 5에서 새롭게 추가된 모듈이다. WebFlux는 클라이언트, 서버에서 Reactive 한 스타일의 어플리케이션 개발을 도와주는 모듈이며, reactive-stack web framework이며, non-blocking reactive stream을 지원한다. Reactive Programming 이란? 리엑티브 프로그래밍은 데이터 흐름과 변화 전파에 중점을 둔 프로그래밍 패러다임이다. 프로그래밍 언어로 정적이거나 동적인 데이터 흐름을 쉽게 표현할 수 있어야 하며, 데이터 흐름을 통해 하부 실행 모델이 자동으로 변화를 전파할 수 있는 것을 의미한다. Rx 프로그래밍의 핵심은 3가지 Observable, Observer, Schedule..
JVM ? Java Virtural Machine의 줄임말. 자바를 실행하기 위한 가상기계 Java의 특징으로는 OS에 종속되지 않는다는 점이 있는데, 이를 가능하게 하는 것이 JVM이다. JVM 구성요소 클래스 로더(Class Loader) 실행 엔진(Execution Engine) 인터프리터(Interpreter) JIT 컴파일러(Just In Time) 가비지 콜렉터(Garbage Collector) 런타임 데이터 영역(Runtime Data Area) 클래스 로더 JVM 내로 클래스파일을 로드하고, 링크를 통해 배치하는 작업을 수행하는 모듈 런타임 시 동적으로 클래스를 로드, jar 파일 내에 저장된 클래스들을 JVM 위에 탑재한다. 실행 엔진 클래스를 실행시키는 역할 클래스 로더가 JVM내의 런..
객체지향 프로그램이란 OOP(Object Oriented Programing)란 컴퓨터 프로그래밍 페러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜서 상태와 행위를 가진 객체를 만들고, 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 절차지향 프로그래밍의 한계를 극복하고자 나온 페러다임 장점 코드 재사용성 유지보수 쉬움 대형프로젝트에 적합 단점 처리속도가 느림 객체가 많으면 용량이 커질 수 있음 설계시 많은 시간과 노력이 필요 키워드 클래스 + 인스턴스 추상화 캡슐화 상속 다형성 클래스와 인스턴스란? 클래스 : 속성과 행위를 변수와 메서드로 정의한것, 객체를 만들기 위한 메타정보 인스턴스(객체) : 클래스에서 정의한 것을 토대로 실제 메모리에 할당 된 것 추상화..
아파치(Apache) 아파치 소프트웨어 재단의 오픈소스 프로젝트 WS (Web Server) 80번 포트로 클라이언트 요청(GET, POST, 등)이 왔을 때만 응답함. 정적인 데이터만 처리(HTML, CSS 등) 기본적으로 멀티 프로세스로 구현되어 있음. 설정에 따라 멀티 쓰레드를 같이 운용 가능 톰캣 (Tomcat) 동적 웹을 만들기 위한 웹 컨테이너. 서블릿 컨테이너 WAS (Web Application Server) 8080 포트로 처리 JSP, 서블릿 처리, HTTP 요청 수신 및 응답 동적인 데이터 처리가능(DB 연결, 데이터 조작, 다른 응용프로그램과 상호작용) 요청을 처리하기 위한 쓰레드 풀을 관리함. 요청이 오면 해당 쓰레드 풀에서 쓰레드를 꺼내 요청을 처리함.
maven 과 gradle maven과 gradle은 모두 빌드 관리 툴이다. 프로젝트 생성, 테스트, 빌드, 배포 등의 작업을 위한 프로그램이다. 외부 라이브러리들을 손쉽게 import 할 수 있다. maven 아파치 메이븐은 자바용 프로젝트 관리 도구이다. 아파치 Ant의 대안으로 만들어졌다. 아파치 라이센스로 배포되는 오픈 소스 소프트웨어이다. POM Project Object Model 프로젝트의 정보를 담고 있는 파일 pom.xml로 관리 프로젝트 정보 빌드 설정 빌드 환경 pom 연관정보 gradle 빌드, 프로젝트 구성/관리, 테스트, 배포 도구 안드로이드 앱의 공식 빌드 시스템 빌드 속도가 Maven에 비해 10~100배 가량 빠름 JAVA, C/C++M Python 등을 지원 빌트툴인 A..
AOP란? Aspect Oriented Programming 의 약자로 관점 지향 프로그래밍이라 부른다. 객체 지향 프로그래밍 만으로는 중복을 줄일 수 없는 부분이 생겨, 종단면(관점)에서 바라보고 처리한다. 주로 Logging, Transection, Error Handler 등 비지니스단의 메서드에서 세밀하게 조정할 때 사용한다. Sequence Diagram AOP 사용 전 AOP 사용 후 AOP의 주요 개념 Aspect 흩어진 관심사를 묶어서 모듈화 한것 Target Aspect 가 가지고 있는 Advice가 적용되는 대상(class, method) 등 Advice 어떤 일을 해야할 지에 대한 정보 Join Point 메서드 실행 지점. Advice가 적용될 위치를 나타낸다 Point Cut Jo..
DI Dependency Injection 의존성 주입을 말한다. DI란 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴으로, 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 다이나믹하게 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해준다. 즉, 각 객체간의 의존성을 스프링 컨테이너(Spring Container)가 자동으로 연결해주는 것으로, 개발자가 빈(Bean) 설정파일에 의존관계가 필요한 정보를 추가해주면, 스프링 컨테이너가 자동적으로 연결해 준다 의존성이란 한 객체가 다른 객체를 사용할 때 의존성이 있다고 한다. 의존성 주입은 IoC(Inversion of Control: 제어의 역전)원칙 하에 객체 간의 결합을 약하게 해주고 유지보수가 ..