반응형

전체 글 111

소켓(Socket) 포트(Port) 뜻과 차이

HOST 네트워크에 연결된 모든 종류의 장치를 노드(Node)라고 부르는데, 노드 중에서도 네트워크 주소(IP 주소)가 할당된 애들을 호스트(Host)라고 부른다. 스마트폰이든 데스크톱이든 노트북이든 인터넷에 연결돼 있으면 다 호스트라고 보면 된다. 이 호스트들끼리 서로 데이터를 주고받는다. ​ 실제로 데이터를 주고받는 것은 호스트 내 프로세스다 ​ 프로그램, 애플리케이션, 앱, 소프트웨어를 모두 프로세스로 용어를 통일해서 설명하겠다. 한 컴퓨터나 스마트폰 내에는 여러 개의 프로세스들이 존재하며 이 프로세스들은 동시에 혹은 마치 동시라고 느껴지게끔 동작한다. 예를 들어볼까? 음악을 들으면서 인터넷을 하거나, 게임을 하면서 영화를 다운로드하는 것 등등이 한 호스트에서 동시에 여러 프로세스들이 동작하는 예이..

ETC 2022.09.20

어노테이션(Annotation) 이란?

자바 개발을 하다 보면 클래스 또는 메서드 또는 변수 앞에 @Override 같은 @ 표시를 많이 봤을 것입니다. 이 어노테이션은 JEE5(Java Platform, Enterprise Edition 5)부터 새롭게 추가된 요소입니다. 이 어노테이션으로 인해 데이터의 유효성 검사 등을 쉽게 알 수 있고, 이와 관련한 코드가 깔끔해지게 됩니다. 일단 어노테이션의 용도는 다양한 목적이 있지만 메타 데이터의 비중이 가장 크다 할 수 있습니다. 메타-테이터(Meta-Data) : 데이터를 위한 데이터를 의미하며, 풀어 이야기하면 한 데이터에 대한 설명을 의미하는 데이터. (자신의 정보를 담고 있는 데이터) Java에서 기본적으로 제공하는 어노테이션 종류 @Override 선언한 메서드가 오버라이드 되었다는 것을..

java 2022.07.11

Spring AOP, AOP 용어 정리

AOP란? AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것이다. (여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다.) 객체지향의 기본원칙을 적용하여도 핵심기능에서 부가기능을 분리해서 모듈화하는 것은 매우 어렵다. AOP는 애플리케이션에서의 관심사의 분리(기능의 분리), 핵심적인 기능에서 부가적인 기능을 분리한다. 분리한 부가기능을 에스펙트(Aspect)라는 독특한 모듈형태로 만들어서 설계하고 개발하는 방법이다. OOP를 적용하여도 핵심기능에서 부가기능을 쉽게 분리된 모듈로 작성하기 어려운..

Spring 2022.07.05

[Spring Boot] @SpringBootApplication

스프링부트 메인 클래스에는 @SpringBootApplication 라는 어노테이션이 붙어있다. @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } 메인 클래스에 붙어 있는 @SpringBootApplication은 크게 3가지가 합쳐진 것이라고 생각할 수 있다. @SpringBootConfiguration @ComponentScan @EnableAutoConfiguration 스프링 부트 어플리케이션은 Bean을 2번 등록한다. 처음에 ComponentScan으로 등록하고, 그 후에 EnableAuto..

Spring 2022.06.30

@WebServlet, @Controller 의 차이

@WebServlet javax.servlet.annotation@Target(value=TYPE) @Retention(value=RUNTIME) @Documented public @interface WebServlet 서블릿을 선언할 때 사용되는 Annotation 이 Annotation이 표시된 클래스는 Servlet Container에 의해 처리된다. 속성 값을 통해 해당 Servlet과 매핑될 URL 패턴을 지정한다. @Controller org.springframework.stereotype@Target(value=TYPE) @Retention(value=RUNTIME) @Documented @Component public @interface Controller 이 Annotation이 표시된 ..

Spring 2022.06.01

J2EE란?

J2EE (Java 2 Enterprise Edition) J2EE란? J2EE는 자바 기술로 기업환경의 어플리케이션을 만드는데 필요한 스펙들을 모아둔 스펙 집합입니다. J2EE를 만든 것은 Sun Microsystems이고 SUN에서 J2EE 스펙을 시범적으로 구현해두기는 하지만, IBM, BEA, Oracle, HP, Iona등 여러 벤더들도 그 스펙을 구현할 수 있으며 J2EE 호환성을 검증하는 기구의 검증을 통과하기만 하면 J2EE 호환 제품으로 시장에 출시할 수 있습니다. 그리고 이런 벤더들은 J2EE 스펙을 개선하는 과정에도 활발히 참여하기 때문에, J2EE는 사실상 SUN의 독점적인 기술이라기 보다는 Java진영으로 불리는 여러 Vendor들과 개발자들이 같이 만들어 가고 공유하는 기술로 보..

java 2022.05.30

JVM 메모리 구조

JVM(Java Virtual Machine)이란? 자바를 싱행하기 위한 가상 기계이다. 즉 자바를 실행하기 위한 가상 컴퓨터이다. 자바로 작성된 어플리케이션은 모두 이 가상 JVM에서만 실행되기 때문에 자바 어플리케이션이 실행되기 위해서는 JVM이 필요 자바 바이트 코드를 실행할 수 잇는 주체 운영체제 위에서 동작하는 프로세스로 자바 코드를 컴파일해서 얻은 바이트 코드를 해당 운영체제가 이해할 수 있는 기계어로 바꿔 실생시켜주는 역할을 한다. 가상기계란? 소프트웨어로 구현된 하드웨어 JVM의 구성 Class Loader, Execution Engine, Garbage Collector, Runtime Data Area 로 구성되어있다. Class Loader 자바에서 소스를 작성하면 Person.jav..

java 2022.05.25

Web Server? WAS?

웹서버 (Web Server) Web Server란? Web Server는 두가지로 구분되고 있다 하드웨어 서버가 설치되어 있는 PC 소프트웨어 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠(.html .jpeg .css 등)를 제공하는 컴퓨터 프로그램 Web Server가 하는 일은? HTTP 프로토콜을 기반으로 하여 클라이언트(웹 브라우저 또는 웹 크롤러)의 요청을 서비스 하는 기능을 담당 정적인 컨텐츠 제공 정적인 컨텐츠 : HTML, CSS 등등 WAS를 거치지 않고 바로 자원을 제공한다 동적인 컨텐츠를 위한 요청 전달 클라이언트의 요청(Request)를 WAS에 보내고, 결과를 클라이언트에게 다시 전달(Response)한다. Web Server 종류 Ex) Apache Serv..

ETC 2022.05.20

스프링 컨테이너란?

#스프링 컨테이너의 역할 스프링 컨테이너는 자바 객체의 생명 주기를 관리하며, 생성된 자바 객체들에게 추가적인 기능을 제공하는 역할을 합니다. 여기서 말하는 자바 객체를 스프링에서는 빈(Bean)이라고 부릅니다. 스프링 컨테이너로 인해서 IoC와 DI의 원리를 적용할 수 있습니다. 개발자는 new 연산자, 인터페이스 호출, 팩토리 호출 방식으로 객체를 생성하고 소멸시킬 수 있는데, 스프링 컨테이너가 이 역할을 대신해 줍니다. 즉, 제어 흐름을 외부에서 관리 할 수 있게 합니다. 또한, 객체들 간의 의존 관계를 스프링 컨테이너가 런타임 과정에서 알아서 만들어 줍니다. #스프링 컨테이너란? ApplicationContext 를 스프링 컨테이너라고 한다. 더 정확하게는 BeanFactory , Applicat..

Spring 2022.04.26

LocalDateTime( yyyyMMddHHmmssSSS)

오류 발생 String to LocalDateTime 로 타입을 변경하던 중 오류가 발생 DateTimeFormatter DATE_FORMAT_YYYYMMDDHHMMSSSSS = DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS", Locale.KOREA); LocalDateTime nowDateTime = LocalDateTime.now(); LocalDateTime localCursorDate = LocalDateTime.parse(nowDateTime, DATE_FORMAT_YYYYMMDDHHMMSSSSS); 해당 formatter를 사용해서 변환을 하니 해당 타입으로 변경이 불가능하다는 오류가 발생했습니다. Text '20000101000000000&#39..

ETC 2022.04.13

Spring을 사용하는 이유 ( 객체 지향의 원칙 )

Spring Core spring 개발 이유 EJB(Enterprise Java Bean) 기존 사용 개발툴을 사용하던 사람들이 너무 불편함을 호소했고, 그중 로드 존슨이라는 사람이 EJB의 문제점을 지적하면서 개발되기 시작했다. EJB 컨테이너를 활용해서 객체지향 설계를 하게 될 경우, 서비스 로직을 구현하는 영역보다 객체지향언어의 원칙을 지키기 위한 로직이 더 많아지는 경우가 다반사였다. 이를 좀 더 쉽게 활용하기 위해서 스프링이 개발되었다.실제로 프레임워크의 이름이 spring인 이유는 EJB를 사용하던 시절(겨울)을 지나서 새로운 시대(봄)이 오기를 바라는 마음으로 명명 spring EJB 컨테이너 대체. 보다 간결하고 사용성이 좋다(단순했다). 현재 사실상 표준 기술 스프링은 자바 언어 기반의 ..

Spring 2022.04.12
반응형