개발자 유자❤

IT/JAVA

[자바의 정석] CH 14. 함수형 인터페이스(Functional Interface)

함수형 인터페이스 👉 추상 메소드를 딱 하나만 가지고 있는 인터페이스 (SAM (Single Abstract Method) 인터페이스) - @FunctionalInterface 애노테이션을 가지고 있는 인터페이스 - 람다식을 다루기 위한 인터페이스 - 인터페이스를 구현한 익명 객체를 람다식으로 대체 가능 (람다식의 매개변수 타입과 개수, 반환값이 일치하기 때문) 💡 자바의 람다식은 함수형 인터페이스로만 접근이 되기 때문이다. @FunctionalInterface public interface MyFunction { public abstract void doSomething(String text); } MyFunction func = new MyFunction() { @Override public void..

IT/JAVA

[자바의 정석] CH 14. 람다식

람다식 👉 람다식 : 메서드를 하나의 식으로 표현한 것. 메서드의 이름과 반환값이 없어지므로, 람다식을"익명함수"라고도 부름. - 기존 메서드는 클래스와 객체 생성이 필요하지만 람다식은 그 자체로 메서드의 역할을 대신할 수 있음. int [] arr = new int[5]; Arrays.setAll(arr, (i) -> (int)(Math.random()*5)+1); 람다식 작성하기 1. 메서드에서 이름과 반환타입을 제거하고 매개변수 선언부와 몸통 {} 사이에 -> 추가해줌. int max(int a, int b) { return a>b?a:b; } => (int a, int b) -> { return a > b ? a : b ; } 2. 반환값이 있는 메서드의 경우, return문 대신 식으로 대신 할..

IT/JAVA

[JAVA] REST API 란?

💡 REST란 REST(Representational State Transfer) 의 약자 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. 즉 자원(resuorce)의 표현(representation)에 의한 상태 전달 자원 : 해당 소프트웨어가 관리하는 모든 것 자원의 표현 : 그 자원을 표현하기 위한 이름 상태 전달 : 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달한다. JSON 혹은 XML를 통해 데이터를 주고 받는 것이 일반적이다. REST는 기본적으로 웹의 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다. 👉 REST : HTTP URI(Uniform Resource Identi..

IT/JAVA

[JAVA] HTTP 요청 메서드 (GET, POST, PUT, DELETE)

HTTP는 요청 메서드를 정의하며, 주어진 리소스에 수행하길 원하는 행동을 나타낸다. 간혹 요청 메서드를 "HTTP 동사"라고 부르기도 한다. ✔ GET 은 "가져온다" 라는 개념이고 POST는 "수행한다" 라는 개념 💡 GET 👉 GET method는 클라이언트에서 서버로 어떠한 리소스로부터 정보를 요청하기 위해 사용되는 메서드 => 데이터를 읽거나, 검색할 때 사용되는 method! => GET은 요청을 전송할 대 URL 주소 끝에 파라미터로 포함되어 전송되며, 이 부분을 쿼리 스트링(QueryString)이라고 부른다. ex) www.example-url.com/resources?name1=value1&name2=value2 ✔ GET 요청은 idempotent (멱등성)한다. ✔ GET 요청은 캐..

IT/JAVA

[JAVA] 인터페이스 vs 추상클래스

💡 추상클래스 : 미완성 설계도! 상속을 통해 자식 클래스에서 완성하도록 유도하는 클래스 추상클래스는 하위 클래스들의 공통점들을 모아 추상화하여 만든 클래스 추상클래스는 다중 상속이 불가능하며 단일 상속만 허용한다. 추상클래스는 추상 메서드 외에 일반클래스와 같이 필드, 메서드, 생성자를 가질 수 있다. 추상화를 하면서 중복되는 클래스 멤버들을 통합 및 확장할 수 있다. 추상클래스는 클래스간의 연관 관계를 구축하는 것에 초점을 둔다. super() 메서드 이용해서 추상 클래스 생성자 호출 가능하다. 추상클래스를 상속받는 모든 자식 클래스에서 반드시 메소드를 구체화해야한다는 규칙이 있다. abstract class 클래스명 { public abstract void 메서드이름(); } 💡 인터페이스 : 기본..

IT/JAVA

[자바의 정석] CH13. Thread

프로세스 : 실행 중인 프로그램 스레드 : 프로세스의 자원을 이용해서 실제 작업을 수행하는 것 멀티스레드 장점 CPU의 사용률을 향상시킨다. 자원을 보다 효율적으로 사용할 수 있다. 사용자에 대한 응답성이 향상된다. 작업이 분리되어 코드가 간결해진다. 쓰레드를 구현하는 방법 1. Thread 클래스를 상속받는 방법 - 단점 : 다른 클래스를 상속받지 못함 class MyThread extends Thread { public void run() {} } 2. Runnable 인터페이스를 구현하는 방법 - 장점 : 재사용성이 높고 코드의 일관성 유지 가능 class MyThread implements Runnable { public void run() {} } class Ex13_1 { public stat..

IT/JAVA

[JAVA] MVC 패턴?

MVC 패턴 정의 MVC 패턴은 Model - View - Controller 의 약어 => 코드 간 종속성을 줄이고 구성 요소 간의 역할을 명확하게 함 Model 모델(Model)은 데이터를 처리하는 영역 실제 프로젝트에서는 데이터베이스와 연동하는 DAO(Data Access Object) 와 데이터 구조를 표현하는 DTO(Data Transfer Object - getter/setter 로 구성), VO로 구성된다. 모델은 View와 Controller에 의존하지 않아야 한다는 특징이 있다. 효과적인 DB 연동 구현을 위해 JPA를 사용하는 경우 DAO는 생략 되거나 구현 범위가 축소될 수 있다. DAO : 실제 DB에 접근해서 데이터에 대한 CRUD 수행할 객체, 서비스와 데이터베이스를 연결해주는 ..

IT/JAVA

[자바의 정석] CH12. 애너테이션

애너테이션 프로그램 소스코드 안에 다른 프로그램 위한 정보를 미리 약속된 형식으로 포함시킨 것 JDK에서 제공하는 애너테이션은 java.lang.annotation 패키지에 포함되어 있다. @Override 컴파일러에게 오버라이딩하는 메서드라는 것을 알림 @Deprecated 앞으로 사용하지 않을 것을 권장하는 대상에 붙임 @SuppressWarnings 컴파일러의 특정 경고메시지가 나타나지 않게 해줌. @SafeVarargs 지네릭스 타입의 가변인자에 사용. @FunctionalInterface 함수형 인터페이스라는 것을 알림. @Native native 메서드에서 참조되는 상수 앞에 붙인다. 메타 애너테이션 : 에너테이션을 만들 때 사용하는 애너테이션 @Target 애너테이션이 적용가능한 대상을 지정..

IT/JAVA

[자바의 정석] CH12. 열거형(enum)

열거형 : 상수를 선언할 때 편리하게 선언가능 기존의 상수 값이 바뀌면, 해당 상수를 참조하는 모든 소스를 다시 컴파일 해야 하지만 열거형 상수를 사용하면 그럴 필요 없다. class Card { enum Kind { CLOVER, HEART, DIAMOND, SPADE } // 0부터 순차적으로 적용 } 사용하는 방법 Card.Kind.CLOVER - 열거형을 이용해서 상수를 정의하는 경우 값을 비교하기 전에 타입을 먼저 비교하므로 타입이 다르면 컴파일 에러 발생함. - 열거형 상수 간의 비교에는 ==을 사용할 수 있다. - 하지만 비교연산자 는 사용할 수 없고, compareTo() 는 사용가능하다. - enum Direction { EAST(1), WEST(-3) } 이런식으로 임의의 값..

IT/JAVA

[JAVA] Static이란?

Static : 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미 : Static 키워드를 통해 Static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리라는 장점을 지니지만, Garbage Collector의 관리 영역 밖에 존재하므로 자주 사용하게 되면 성능 상 악영향 줄 수 있다. Static 변수 특징 : static 변수는 클래스 변수이다. 객체를 생성하지 않고도 static 자원에 접근이 가능하다. : Java에서 Static 변수는 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 변수, 메모리에 한번 할당되므로 여러 객체가 해당 메모리를 공유하게 된다. : 인스턴스를 생성하지 않고도 사용할 수 있다. : static 메소드 안에서는 static 멤버들만 사용할 수 있..

유자나라
'IT/JAVA' 카테고리의 글 목록 (2 Page)