본문 바로가기

전체 글

(105)
직렬화와 역직렬화 직렬화 : 자바 애플리케이션의 메모리상에 존재하는 인스턴스를 바이너리 형태나 문자열로 만드는 것. 객체로부터 JSON파일을 만드는 과정이라고 볼 수 있다. 역직렬화 : 그 반대의 과정. JSON으로 객체를 만드는 과정이라고 볼 수 있다. 요청웹브라우저는 JSON.stringfy로 직렬화하여, 서버로 JSON파일을 보낸다.서버 스프링부트 애플리케이션은 Jackson컨버터에 의해 해당 파일을 역직렬화 한다. 응답서버 스프링부트 애플리케이션은 Jackson컨버터에 의해 객체를 직렬화하여 JSON파일을 클라이언트로 보낸다.웹 브라우저는 JSON.parse로 해당 파일을 역직렬화 한다.
스프링 프레임워크vs 스프링 부트 스프링 프레임워크란, 객체지향 프로그래밍을 위해 , 개발자들이 비즈니스 로직에 최대한 집중할 수 있도록 돕는프레임워크 이다. 중점을 둔 요소 세가지 : 의존성 주입 (DI, Dependency Injection)제어의 역전 (IOC, Inversion Of Control)관점지향 프로그래밍 (AOP, Aspect-Oriented Programming) 스프링 프레임워크는 애플리케이션 개발에 유용하지만 초기 설정이 어렵고 복잡하다는 단점이 있다.또한 별도의 WAS를 서버에 설치해야 배포가 가능하다.반면, 스프링부트는 초기 설정을 자동으로 도와주는 오토 컨피규레이션 기능이 있고 WAS를 내장하고 있어서 배포가 간편하다.  Maven, Gradle?라이브러리를 관리하거나 소스코드를 바이너리 코드로 컴파일하는 ..
서버와 클라이언트 서버와 클라이언트는 상대적인 개념이다서비스를 제공하는쪽이 서버이고, 서비스를 제공받는쪽이 클라이언트.  한꺼번에 수백만 명 이상의 사용자로부터 생기는 트래픽을 처리하기 위한 방법은 여러가지.가장 범용적이고 직관적인 방법 두 가지 : 로드밸런싱, 캐시  로드밸런싱이란, 서버에 가해지는 부하를 분산하는 것이다.사용자들의 트래픽을 여러 서버가 나눠 받도록 구성하며 일반적으로 네트워크 장비인 스위치를 할당해 로드밸런싱 할 수 있다. 스위치에서 어떤 서버로 로드밸런싱이 되도록 할지는 소프트웨어적으로 제어 할 수 있다.스위치라는 장비가 클라이언트의 트래픽을 먼저 받아서 여러 대의 서버로 분산해 주는 방식이 로드밸런싱 이다.부하분산 효과 외에도 스위치 뒤에 연결된 서버들을 필요에 따라 추가/삭제 할 수 있어 편리하다..
자바8 이상의 주요 문법 람다 표현식 임시로 사용할 임시 함수를 위한 표현식자바 기본 문법에선, 함수만 따로 선언할 수 없고 클래스 선언한다음 그 안에 함수를 선언해야 그 전체를 메서드로 구동할 수 가 있는데, 이러한 불편한 점을 보완하기 위해 등장 했다(var 1, var 2  . .) -> { 동작 1; 동작2; } 이런 형태!스트림 API컬렉션에 담긴 데이터를 처리하는 존재로써, 컬렉션에 추가된 메서드의 집합을 의미한다주요 메서드로는 forEach(), filter(), distinct(), map(), collect(), toList() 등이 있다Optionalnull 이 들어 있는 래퍼런스 변수의 멤버(필드나 메서드) 에 접근하려고 할 때 발생하는 예외인 NullPointerException을 유연하게 해결하기 위해 등..
equals() String 인스턴스의 값을 비교하려면, 동등성을 비교하는 메서드equals() 를 사용해야 한다. ('동일성' 은 같은 인스턴스를 참조함을 의미. 이것과 다름) equals()메서드는 Object클래스에서 상속된 것이므로, 오버라이딩 가능하며 클래스의 동등성 비교에 사용한다. 이때 hashCode() 메서드도 함께 오버라이딩 해주는 것이 좋다. : 컬렉션 중 Hash로 시작하는 컬렉션, HashMap, HashTable, HashSet 은 동일한 값을 비교하기 위해hashCode메서드와 equals메서드를 모두 사용한다.만약 equals메서드만 오버라이딩 한다면, hash로 시작하는 컬렉션에서 같은 값으로 판단해야 할 인스턴스들이마치 다른 인스턴스인 것처럼 동작할 것이다.
컬렉션 : List 자바에서 컬렉션이란 데이터의 집합을 의미한다.주요 컬렉션으로 List, Set, Map이 있는데, 이것은 모두 구현체가 아니고 인터페이스 이다.  : ArrayList는 List인터페이스의 구현체이다.
다형성 : 상속과 인터페이스 다형성은 자바의 객체지향 개념을 관통하는 아주 중요한 개념이다.다형성의 정의는 다음과 같다. 하나의 객체가 내부적으로 여러 타입을 가질 수 있고, 어떤 타입이 들어 있느냐에 따라 각기 다른 동작을 하는 성질을 의미한다.  예를들어 Car라는 인터페이스를 정의했다고 가정한다.그리고 이 인터페이스를 구현하는 Sonata클래스와 Avante클래스를 각각 정의했다.  그렇다면, 인터페이스인 Car 타입의 참조변수에 이것의 구현체인 Sonata와 Avante의 인스턴스를 모두 대입할 수 있는데이것을 가능하도록 하는 특성이 바로 다형성이다. 이 예시를 부모클래스-자식클래스 상황에 비교하여도 다형성은 동일하게 적용된다. 즉, 인터페이스(혹은 부모클래스) 의 참조 변수로 구현 클래스(혹은 자식클래스) 의 인스턴스를 넣..
JDK의 구성요소와 특징 SDK는 sofrware development kit 로 소프트웨어를 개발하기 위해 필요한 도구의 모음을 뜻한다. JDK는 SDK의 한 종류로, 자바 개발에 필요한 도구를 포함하는 소프트웨어 이다..java코드를 .class파일로 컴파일 해주는 자바 컴파일러와컴파일된 .class파일을 실행해 주는 JRE로 구성된다. JRE는 자바 애플리케이션을 실행할 수 있는 환경을 제공하는 소프트웨어를 말한다.JRE안에 있는 JVM이 사실 .class파일을 실행하는 주체이다.