프로그래밍 언어/Java 120

java spring vs python fast api 비교

이번 포스팅에서는 python fast api를 개발하기 전 python fast api와 java spring의 차이점에 대해 비교하며 공부한 것을 정리하려고 합니다. 1. 파이썬과 자바의 차이 자바는 컴파일 언어인 한편, 파이썬은 인터프리터 언어입니다. 컴파일 언어: 코드가 실행되기 전 컴파일러를 거쳣서 기계어로 모두 변환되어 실행되는 프로그래밍 언어 인터프리터 언어: 개발자가 작성한 코드를 기계어로 변환하는 과정없이 한줄씩 해석하여 명령을 바로 처리하는 프로그래밍 언어 2. java spring vs python fast API Fast API 1. 비동시성을 지원합니다. - 하나의 단계가 시작하면, 그 것이 끝날 때까지 기다리지 않고 다른 단계를 시작합니다. 2. type annotation을 지..

[Java] 자바 스트림 collect() 정리 및 사용 예제

[Java] 자바 스트림 collect() 정리 및 사용 예제 collect() 개요 스트림의 최종 연산자 중 가장 복잡하지만, 가장 유용하게 활용될수 있는 것이 바로 collect()이다. collect() 또한 reduce()와 유사하다. 하지만 추가적으로 어떻게 수집할 것인가에 대한 방법이 정의되어 있는데, 이를 구현하는 것이 collector 이다. collector는 Collector 인터페이스를 구현한 것이고, 직접 구현할 수도 있지만, 미리 작성된 것을 사용하기도 한다. Collectors 클래스는 미리 작성된 다양한 collector를 반환하는 static 메서드를 가지고 있다. 구현된 collector를 collect() 메서드의 인자로 넣어 사용한다. collect() 스트림의 최종연산..

[Java] 자바 스트림 중간 연산, 최종 연산

자바 스트림 연산 스트림의 연산 스트림은 다양한 연산으로 복잡한 작업을 간단하게 처리할 수 있게 해준다. 스트림의 연산에는 중간 연산과 최종 연산이 있는데 중간 연산은 연산결과를 스트림으로 반환해 계속 연속으로 연결할 수 있다. 반면 최종 연산은 스트림의 요소를 소모하면서 연산을 하므로 단 한번만 연산이 가능하다. 스트림의 연산은 "지연된 연산"이라는 특징을 갖는다. 최종 연산이 수행되기 전까지는 중간 연산이 수행되지 않는다는 것이다. 스트림의 중간 연산 중간 연산 설명 Stream distinct() 중복 제거 Stream filter() 조건에 안맞는 요소 제외 Stream limit() 스트림의 일부를 잘라낸다 Stream skip() 스트림의 일부를 건너뛴다. Stream peek() 스트림의 요..

[Java] 자바 Optional 정리

자바 Optional 정리 Optional 개요 Optional은 제네릭 클래스로 T타입의 객체를 감싸는 래퍼 클래스이다. 연산의 결과로 Optional 객체를 반환한다. 이 객체 안에 멤버변수로 값을 넣고 사용한다. 이러면 반환된 결과가 null인지를 직접 체크하지 않아도 된다. 기존 코드 예제 String str = "abcd"; if (str != null) { System.out.println(str); } str이 null일 가능성이 있으므로, if문을 통해 체크해주어야 한다. 이런 번거로움을 해결해주는 것이 바로 Optional 클래스이다. 동작과정: Optional 객체 안에 멤버변수로 값을 저장해 놓고, 이를 get() 등의 메서드로 가져온다. Optional 객체 생성 of() 멤버변수의..

[Java] 자바 스트림으로 변환과 스트림 생성 방법

자바 스트림 스트림 사용 이유 기존에 컬렉션이나 배열의 데이터를 다룰 때 Iterator와 반복문을 사용해 코드를 작성했다. 하지만 길기도 할 뿐더러 재사용성도 떨어진다. 뿐만 아니라 데이터 소스마다 방식이 다르다는 문제도 있다. 각 컬렉션 클래스에는 같은 기능의 메서드가 중복 정의되어있다. List를 정렬할 때는 Collections.sort()를 사용해야 하고, 배열을 정렬할 때는 Arrays.sort()를 사용한다. 이러한 문제를 해결하기 위해 나온 것이 스트림이다. 기존의 코드 예제 public class StreamEx1 { public static void main(String[] args) { String[] strArr = {"aaa", "bbb", "ddd"}; List strList =..

[Java] 함수형 인터페이스(Functional Interface) 활용

함수형 인터페이스(Functional Interface) 함수형 인터페이스 개요 함수형 인터페이스는 추상메서드가 1개인 인터페이스를 의미한다. 하지만 대부분의 경우 개발자가 함수형 인터페이스를 직접 구현하는 경우는 없다. Function 패키지에서 다양한 함수형 인터페이스를 이미 제공하고 있기 때문이다. 기본 함수형 인터페이스 함수형 인터페이스 메서드 설명 Runnable void run() 매개변수X, 반환값X Supplier T get() 매개변수X, 반환값O Consumer void accept(T t) 매개변수O, 반환값X Function R apply(T t)) 매개변수O, 반환값O Predicate boolean test(T t) 조건식 표현에 사용 매개변수 하나, 반환 타입 boolean R..

[Java] 람다 식

람다 식 람다식이란? 메서드를 하나의 식(expression)으로 표현한 것이다. 람다식은 함수를 간략하게 표현할 수 있게 해준다. 이름과 반환값이 없어지므로, "익명 함수"라고도 한다. 람다식 장점 간략하게 표현해준다는 것 외에도 많은 장점이 있다. 자바에서 모든 메서드는 클래스에 포함되어야 하므로, 메서드를 사용하려면 클래스를 만들고, 객체를 생성해 메서드를 호출한다. 하지만 람다식을 활용하면 그러한 과정을 생략하고, 람다식으로 메서드의 역할을 할 수 있다. 또한 람다식은 메서드의 매개변수로 전달될 수 있고, 메서드의 결과로 반환될 수도 있다. 람다식으로 인해 메서드를 변수처럼 다루는 것이 가능해진 것이다. 람다식 작성하는 방법 1. 메서드의 이름을 지우고 방향표를 넣는다. 2. {} 안의 문장이 하..

[Java] 자바 동기화 synchronized, wait(), notify()

자바 쓰레드의 동기화 쓰레드의 동기화 멀티 쓰레드의 경우, 같은 프로세스 내의 자원을 공유하기 때문에 쓰레드 간 서로의 작업에 영향을 줄 수 있다. 이를 방지하기 위해 한 쓰레드가 작업 중인 것을 다른 쓰레드가 간섭하지 못하도록 막는 것을 쓰레드의 동기화라고 한다. 쓰레드의 동기화를 위해 공유 데이터를 사용하는 코드 영역을 임계 영역으로 지정해놓고, 공유 데이터가 가지고 있는 lock을 획득한 단 하나의 쓰레드만 이 영역 내의 코드를 수행할 수 있게 함으로써 쓰레드의 동기화를 할 수 있다. 쓰레드의 동기화 방법 synchronized를 통해 동기화를 위한 임계영역을 설정할 수 있다. 코드 예제 class SynchronizedEx1_1 { public synchronized void showBalance..

[Java] 자바 쓰레드 정리

자바 쓰레드 정리 프로세스와 쓰레드 프로세스는 실행 중인 프로그램이다. 프로그램을 실행하면 OS로부터 자원을 받아 프로세스가 된다. 이런 프로세스 안에는 데이터, 메모리 등의 자원과 쓰레드가 존재한다. 프로세스 안의 자원을 활용해 실제 작업을 수행하는 게 바로 쓰레드이다. 프로세스에는 최소 하나 이상의 쓰레드가 존재하고, 여러 개의 쓰레드를 가진 프로세스를 "멀티 쓰레드" 프로세스라고 한다. 프로세스는 공장, 쓰레드는 일꾼이라고 이해하면 쉽다. 쓰레드의 구현 쓰레드를 구현하기 위해 두 가지 방식이 있다. Thread 클래스를 상속받는 방법, Runnable 인터페이스를 구현하는 방법이다. 자바에서는 부모가 하나뿐이므로, 멀티 쓰레드도 사용하고, 다른 클래스도 유연하게 상속받기 위해 인터페이스를 구현하는 ..

[Java] 어노테이션(annotation) 정리

어노테이션(annotation) 정리 어노테이션이란? 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것을 어노테이션이라고 한다. 주석처럼 프로그래밍 언어에 영향을 미치지 않으면서도 다른 프로그램에 유용한 정보를 제공하는 기능을 한다. 예를 들어, 소스 코드 중 특정 메서드만 테스트하기를 원하면 "@Test" 어노테이션을 붙여, 테스트 프로그램에 알리는 역할을 하지만 메서드가 포함된 프로그램 자체에 영향을 미치진 않는다. @Test public void method() { } 표준 어노테이션 자바에서 기본적으로 제공하는 어노테이션이다. 어노테이션 설명 @Override 컴파일러에게 오버라이딩하는 메서드라는 것을 알린다. @Deprecated 앞으로 사용하지 않을 것을 ..

728x90