SOLID BASIC

    JSON이란 무엇일까?

    JSON (JavaScript Object Notation) JavaScript Object Notation라는 의미의 축약어로 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 DATA 교환 형식 Javascript에서 객체를 만들 때 사용하는 표현식을 의미한다. JSON 표현식은 사람과 기계 모두 이해하기 쉬우며 용량이 작아서, 최근에는 JSON이 XML을 대체해서 데이터 전송 등에 많이 사용한다. JSON은 데이터 포맷일 뿐이며 어떠한 통신 방법도, 프로그래밍 문법도 아닌 단순히 데이터를 표시하는 표현 방법일 뿐이다. JSON 특징 서버와 클라이언트 간의 교류에서 일반적으로 많이 사용된다. 자바스크립트 객체 표기법과 아주 유사하다. 자바스크립트를 이용하여 JSON 형식의 문서를 쉽게 자바스크립트 ..

    API란?

    API란? API는 애플리케이션 소프트웨어를 빌드하고 통합하기 위한 정의 및 프로토콜 세트인 애플리케이션 프로그래밍 인터페이스(Application Programming Interface)를 뜻한다. 인터페이스(Interface) 인터페이스(interface)는 컴퓨터 시스템끼리 정보를 교한하는 공유 경계를 의미한다, 터치 스크린과 같은 일부 컴퓨터 하드웨어 장치들은 인터페이스를 통해 데이터를 송수신 할 수 있으며, 마우스나 마이크론 폰가 같은 장치들은 오직 시스템에 데이터를 전송만 하는 인터페이스를 제공한다. 인터페이스는 말 그대로 어떤 기계간의 장치끼리 정보를 교환하기 위한 수단이나, 방법을 의미한다. 예를 들어서 우리가 집에서 TV를 켜기 위해서 리모콘을 들고 TV에 리모콘 전원 버튼을 누름으로써 ..

    MVC란 무엇일까? | MVC 패턴

    MVC란 무엇일까? | MVC 패턴

    MVC 패턴이란? MVC란 Model-View-Controller의 약자로 애플리케이션을 세 가지 역할로 구분한 개발 방법론이다. 아래의 그림처럼 사용자가 Controller를 조작하면 Controller는 Model을 통해 데이터를 가져오고 그 데이터를 바탕으로 View를 통해 시각적 표현을 제어하여 사용자에게 전달하게 된다. 이러한 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시작적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있게 된다. 위의 개념을 WEB에 적용 시! 사용자가 웹사이트에 접속 (Users) Controller는 사용자가 요청한 웹페이지를 서비스하기 위해서 모델을 호출 (Mani..

    로깅(Logging)이란?

    운영 중인 웹 어플리케이션이 문제가 발생했을 경우, 문제의 원인을 파악하려면 문제가 발생했을 때 당시의 정보가 필요하다. 이런 정보를 얻기 위해서 Exception이 발생했거나, 중요 기능이 실행되는 부분에서는 적절한 로그를 남겨야한다. 로깅이란? 정보를 제공하는 일련의 기록인 로그(log)를 생성하도록 시스템을 작성하는 활동. 프린트 줄 넣기(printlning)는 간단한, 보통은 일시적인, 로그를 생성하기만 한다. 시스템 설계자들은 시스템의 복잡성 때문에 로그를 이해하고 사용해야 한다. 로그가 제공하는 정보의 양은, 이상적으로는 프로그램이 실행되는 중에도, 설정 가능해야한다. 일반적인 로그 기록의 이점 로그는 재현하기 힘든 버그에 대한 유용한 정보를 제공할 수 있다. 로그는 성능에 관한 통계와 정보를..

    [JAVA] 단위 테스트 | JUnit이 무엇일까?

    [JAVA] 단위 테스트 | JUnit이 무엇일까?

    단위 테스트란? 단위 테스트(Unit Test)는 프로그램의 기본 단위인 모듈(Module)을 테스트하는 것이다. 구현 단계에서 각 모듈의 개발을 완료한 후 명세서의 내용대로 정확히 구현되었는지를 테스트하는 것이다. 테스트가 가능한 최소 단위로 나눠서 테스트를 수행하며 개발 수명주기(Development LifeCycle)의 정황과 시스템에 의존적이면서도 시스템의 다른 부분에서 격리하여 독립적으로 수행해야 하는 테스트이다. 단위테스트를 하기 위해서는 가짜 프로그램, 객체(Mock Object)를 만들어서 활용할 수 있으며, 정교하게 테스트 하기 위해서는 테스트 케이스(Test Case) 작성은 필수라 할 수 있다. 종류 : JUnit(Java), DBUnit(DB), CppUnit(C++), NUnit(..

    톰캣이 무엇을 의미할까? 아파치란?

    톰캣이 무엇을 의미할까? 아파치란?

    스프링을 공부하다가 영한님이 언급하시는 톰캣 서버에 대해 의문이 생겨서 기록하려 한다. 어렴풋이는 알고 있지만, 정확하게는 몰랐던 톰캣, 아파치에대해 확실하게 알아보자! 아파치(apache)란? 세계에서 가장 많이 쓰는 웹 서버중 하나이며, 아파치 소프트웨어 재단에서 관리하는 HTTP 웹 서버이다. Apache는 Apache재단에서 만든 HTTP서버로 워낙 다양한 추가기능에, 구축이 쉽다는 이유 때문에 많이 쓰고 있다. 대부분의 중소기업들은 무료이기 때문에 많이 쓰인다. 톰캣이란(Tomcat)? 톰캣은 아파치 소프트웨어 재단의 웹 어플리케이션 서버(와스)로서, 자바 서블릿을 실행키고 JSP코드가 포함되어 있는 웹 페이지를 만들어준다. 자바 서블랫과 JSP 규격의 '참조용 구현'으로 평가되고 있는 톰캣은,..

    [JAVA] 람다식(Lambda Expression)

    람다식 람다식은 다른말로 익명 메소드라고도 한다. 인터페이스 중에서 메소드를 하나만 가지고 있는 인터페이스를 함수형 인터페이스라고 한다. 쓰레드를 만들때 사용하는 Runnable 인터페이스의 경우 run()메소드를 하나만 가지고 있다. Runnable을 이용하여 쓰레드를 만드는 방법 public class LambdaExam1 { public static void main(String[] args) { new Thread(new Runnable(){public void run(){ for(int i = 0; i < 10; i++){ System.out.println("hello"); } }}).start(); } } 쓰레드가 실행되면 쓰레드 생성자 안에 넣은 run()메소드가 실행된다. 자바는 메소드만 ..

    [JAVA] 쓰레드(Thread)란 무엇일까? | 쓰레드와 메서드, 동기화

    [JAVA] 쓰레드(Thread)란 무엇일까? | 쓰레드와 메서드, 동기화

    쓰레드란? 동시에 여러가지 작업을 동시에 수행할 수 있게하는것 동시에 여러가지 작업을 수행할 수 있습니다. 프로세스란 현재 실행되고 있는 프로그램을 말합니다. 자바 프로그램은 JVM에 위해 실행된다. 이 JVM도 프로그램중에 하나이다. 운영체제 입장으로 보면 자바도 하나의 프로세스로 실행을 하는 것입니다. 워드프로세서가 하나의 프로세스라면, 하나의 프로세스 안에서도 여러개의 흐름이 동작할 수 있다. 이것은 Thread라고 말을 합니다. 자바 그램이 여러개의 작업을 동시에 하게 만들고 싶다면 Thread를 공부해야 합니다. 쓰레드 만들기(extend Thread) 자바에서 Thread를 만드는 방법은 크게 Thread 클래스를 상속받는 방법과 Runnable인터페이스를 구현하는 방법이 있다. Thread를..

    [JAVA] 어노테이션 (annotation) | 커스텀 어노테이션 만드는 방법을 알아보자

    어노테이션 어노테이션은 클래스나 메소드위에 붙는다. @(at)기호로 이름이 시작한다. 어노테이션을 클래스나 메타코드에 붙인 후, 클래스가 컴파일되거나 실행될 때 어노테이션의 유무나 어노테이션에 설정된 값을 통하여 클래스가 좀 더 다르게 실행되게 할 수 있다. 이런 이유로 어노테이션을 일정의 설정파일처럼 설명하는 경우도 있다. 어노테이션은 자바가 기본으로 제공해주는 것도 있고, 사용자가 직접 만들 수도 있다. 사용자가 직접 작성하는 어노테이션을 Custom 어노테이션이라고 말한다. 커스텀 어노테이션을 이용하는 방법 어노테이션을 정의한다. 어노테이션을 클래스에서 사용한다. (타겟에 적용) 어노테이션을 이용하여 실행. 패키지 익스플로러에서 [new - Annotation]을 이용하여 Count100이라는 어노..

    [JAVA] IO 자바 입출력

    자바 IO는 크게 byte단위 입출력과 문자 단위 입출력클래스로 나뉜다. byte단위 입출력클래스는 모두 InputStream과 OutputStream이라는 추상클래스를 상속받아 만들어집니다. 문자(char)단위 입출력클래스는 모두 Reader와 Writer라는 추상클래스를 상속받아 만들어집니다. 4가지 추상클래스(InputStream,OutputStreamReader,Reader,Writer)를 받아들이는 생성자가 있다면, 다양한 입출력방법을 제공하는 클래스입니다. 4가지 클래스를 받아들이는 생성자가 없다면, 어디로부터 입력받을 것인지, 어디에 쓸것인지를 나타내는 클래스입니다. 파일로 부터 입력받고 쓰기 위한 클래스 : FileInputStream, FileOutputStream, FileReader,..