개발/Spring

    자바 소켓

    자바에서 TCP 통신을 하려면 Socket 클래스를 사용하면 된다. java.net 패키지에는 네트워크 관련 클래스들이 선언되어 있다. 이 소켓 클래스는 데이터를 보내는 쪽에서 객체를 생성하여 사용한다. 데이터를 받는 쪽에서 클라 요청을 받으면 요청에 대한 소켓 객체를 생성하여 데이터를 처리한다. 이 소켓 클래스는 서버 쪽이든 클라쪽이든 원격에 있는 장비와의 연결 상태를 보관하고 있다. 서버에서는 ServerSocket 이라는 클래스를 사용하여 데이터를 받는다. 이 클래스는 별도의 new 키워드가 아닌 ServerSocket 클래스에서 제공하는 메소드에서 클라 요청이 생기면 Socket 객체를 생성해서 전달해준다. ServerSocket() -> 서버 소켓 객체만 생성한다. ServerSocket(int..

    자바 컬렉션 Map

    자바에서 MAp은 키과 밸류로 이뤄져 있다. Map에서 다른 데이터와 구분하기 위한 값의 이름을 키라고 한다. 키과 밸류가 1:1로 저장된다., 그런데 이 키는 해당 Map에서 중복되지 않는다. 만약 키가 다르고, 값이 동일하다면 맵에서는 다른 것으로 간주한다. 모든 데이터는 키와 밸류가 존재한다. 키가 없이 값만 저장될 수 없다. 값 없이 키만 저장할 수도 없다. 키는 해당 Map에서 고유해야만 한다 값은 Map에서 중복되어도 전혀 상관 없다. Map은 java.util패키지의 Map이라는 인터페이스로 선언되어 있고, 구현해 놓은 클래스들도 많이 있다. put : 데이터를 넣을 때 get : 데이터를 확인할 때 remove : 데이터를 삭제할 때 Map을 구현한 주요 클래스들을 살펴보자 Map인터페이스..

    자바 문자열 String

    자바에서 String의 비중은 매우 크다 팀에서 운영하는 시스템ㄱ솨 다른 팀에서 운영하는 시스템의 장애를 진단하고, 성능 튜닝 및 측정을 하는 것이다. 그런데, 진단 작업을 하면서 어떤 객체가 가장 많이 생성되는지 점검하는 경우가 있다. 그럴 때 보면 String 관련 객체는 항상 탑 5안에 든다

    자바 컬렉션 Set

    Collection을 확장한 배열과 비슷한 역할을 하는 3개의 인터페이스가 존재한다. List Set Queue Set는 순서에 상관 없이, 어떤 데이터가 존재하는지를 확인하기 위한 용도로 많이 사용된다. 다시 말해서 중복되는 것을 방지하고, 원하는 값이 포함되어 있는지를 확인하는 것이 주 용도다. 예) 1분간 사용자가 요청한 로그가 있고, 1분간 동일한 서버에 요청하는 중복 사용자 수는 매우 많다. 이러한 경우 배열로 확인하려고 한다면, indexOf()라는 메소드로 해당 객체가 존재하는지 확인후에 add() 메소드로 추가하는 작업을 반복해야만 한다. 하지만 Set을 구현한 클래스를 사용하면 그냥 데이터를 추가만 해주면 된다. 그러면 자동으로 데이터가 중복되지 않고 저장된다. 이 때 순서는 중요하지 않..

    스프링 입문을 위한 자바 객체지향 원리와 이해 - 1장

    사람을 사랑한 기술 스프링을 비롯한 모든 신기술은 갑자기 하늘에서 뚝 떨어진 것이 아니다. 스프링은 과거로부터 현재까지 프로그래밍 발전사에서 그 정점에 있다고 해도 과언이 아니다. 기계어 - 0과 1의 행진 / 너무나 비인간적인 언어 컴퓨터 CPU 속도가 2GHz라면 컴퓨터는 1초당 대략 20억번 전구 스위치를 껐다 킬수 있다. 메모리가 1GB라면 당신의 컴퓨터는 대략 80억개의 전구를 관리한느 성능을 갖춘 것이다. 어셈블리어 - 0과 1의 행진을 벗어나 인간 지향으로 / 기계어 니모닉 기계어는 컴퓨터가 이해하는 유일한 언어지만, 인간은 눈높이를 그 수준까지 낮추기에는 나무 낮다. "기계들의 명령어들을 일상 용어로 표현하고 이걸 기계가 알 수 있는 기계어로 번역하면 어떨까?" 그래서 만들어진 것이 기계어..

    스프링이란?

    자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크이다. 애플리켕션 개발을 빠르고 효율적으로 할 수 있도록 애플리케이션 바탕이 되는 틀과 공통 프로그래밍 모델, 기술 API 등을 제공해준다. 애플리케이션의 기본 틀 - 스프링 컨테이너 스프링은 스프링 컨테이너 또는 애플리케이션 컨텍스트라고 불리는 스플이 런타임 엔진을 제공한다. 컨테이너는 설정 정보를 참고해서 애플리케이션을 구성하는 오브젝트를 생성하고 관리한다. 독립적으로 동작할 수도 있지만 보통 웹 모듈에서 동작하는 서비스나 서블릿으로 등록해서 사용한다. 스프링을 사용하려면 먼저 스프링 컨테이너를 다루는 방법과 스프링 컨테이너가 애플리케이션 오브젝트를 이용할 수 있도록 설정 정보를 작성하는 방법을 알아야 한다. 공통 프로그래밍 모델 -..

    스프링 입문을 위한 자바 객체지향 원리와 이해 - 프롤로그

    객체 지향에 대한 이해는 스프링 프레임워크를 이해하기 위한 필수 조건이다. 자연계의 운동을 정확히 묘사하기 위해서는 아이슈타인의 상대성 이론이 필요하다. 하지만 빛에 비해 현저히 느린 자연계의 운동을 근사적으로 더 이해하기 쉬운 뉴턴의 운동 법칙으로 묘사할 수 있다. 정확하고 세밀한 것은 물론 중요하지만, 하지만 때로는 추상화해서 간략화 한 것이 이해하기 쉬울 때가 있다. 현재 실무 자바 프로그래밍 환경에서는 오픈소스가 대세다. 그 중심에 스프링 프레임워크가 있다. 전 세계적으로 인기가 많고, ㅡㄱ히 국가 ㅊICT 프로젝트에 사용하는 ㅓㄴ자정부프레임워크를 스프링 기반으로 만들어 배포하고, 공공프로젝트에서 이를 사용하도록 권장하고 있다. 전자정부 표준프레임워크는 버전별로 스프링의 어떤 버전을 기준으로 했다..

    자바 컬렉션 List

    자료구조 : Data Structure. 어떤 정보를 담는 것을 의미. 어떻게 보면 DTO도 자료를 담는 한 방식이라고 볼 수 있다. 하나의 데이터가 아닌 여러 데이터를 담을 때 사용한다. 자바에서의 데이터를 담는 자료 구조는 크게 다음과 같다. 순서가 있는 목록형 순서가 중요하지 않은 셋형 먼저 들어온 것이 먼저 나가는 큐형 키값으로 저장되는 맵형 자바에서는 "목록","세트", "큐"는 Collection이라는 인터페이스를 구현하고 있다. 이 Collection 인터페이스는 java.util 패키지 안에 선언되어 있으며, 여러 개의 객체를 하나의 객체에 담아 처리할 때 공통적으로 사용되는 여러 메소드들을 선언해 놓았다. 이 목록에서 유일하게 맵 만이 Collection과 관련 없는 별도의 인터페이스로 ..

    Spring 라이브러리

    1, Gradle은 의존관계가 있는 라이브러리를 함께 다운로드 한다. spring-boot-starter-web spring-boot-starer-tomcat: 톰캣 (웹서버) spring-webmvc : 스프링 웹 MVC spring-boot-start-thymeleaf : 타임리프 템플릿 엔진(View) spring-boot-start(공통) : 스프링 부트 + 스프링 코어 + 로깅 테스트 라이브러리 junit : 테스트 프레임워크 mockito : 목 라이브러리 assertj : 테스트 코드를 좀 더 편리하게 작성하게 도와주는 라이브러리 spring-test : 스프링 통합 테스트 지원

    아파치 톰캣

    아파치 소프트웨어 재단에서 개발하는 자바 기반의 서블릿 컨테이너 이자, 웹서버, JSP/Spring으로 우베사이트를 구축한다면 톰캣은 거의 반드시 사용하게 된다. 지금은 오라클에 인수된 썬 마이크로시스템즈에서 1990년대 자바 웹 애플리케이션 표준인 JSP/서블릿을 개발하기 시작했고, 이것의 표준 구현으로 개발하던 것을 나중에 오픈소스화 하여 공개한 것으로 시작되었다. 그 이수 2005년 아파치 소프트웨어 재단이 관리하고 있다. 톰캣에는 오로지 서블릿/JSP및 HTTP 처리 엔진만 들어있으며, 여기에 J2EE API를 추가하여 엔터프라이즈 버전으로 배포중인 웹애플리케이션 서버도 있다. 서블릿 : 자바 웹 애플리케이션의 구성 요소중 하나이고, 자바를 통해 동적인 처리를 하는 역할을 담당함. WAS에서 동작..