본문 바로가기
728x90

전체 글249

[모던 자바 인 액션] 람다 표현식 3.3 ~ 3.4 람다활용 : 실행 어라운드 패턴 특정 기능을 수행하기 전과 후에 수행해야 할 일을 정의하고 재사용할 수 있도록 하는 패턴 트랜잭션, 로깅, 캐싱, 성능측정 등과 같은 공통적인 기능을 수행하는데 사용. 핵심 로직을 감싸는 공통 로직을 캡슐화한 디자인 패턴. 함수형 인터페이스 java.util.function 패키지 Supplier => T get() => 매개변수는 없고 반환값만 있음. (공급자) Predicate 인터페이스 => boolean test(T t) => 조건식을 표현하는데 사용, 매개변수 하나이며 반환 타입은 boolean Consumer 인터페이스 => void accept(T t) => Supplier 와 반대로 매개변수만 있고, 반환값이 없음(소비자) Function 인터페이스 => R.. 2023. 1. 29.
자바 오토박싱 & 언박싱 기억나는대로 간략히 적음. 오토박싱 int -> Integer 로 변경해주는것(기본형을 래퍼클래스로) 근데 이를 자동으로 해주는 것 언박싱 Integer -> int 형으로 변경해주는것.(래퍼클래스를 기본형으로) 근데 이를 자동으로 해주는 것 JDK 1.5 버전부터 나옴. 기본형 + 참조형을 실행하면 컴파일되면서 코드를 알아서 변경해준다. 간단한 예제.(모던 자바 인 액션) List list = new ArrayList(); for (int i = 300; i < 400; i++) { list.add(i); //이 부분 오토박싱됨. //list.add(new Integer(i)); } int integer = list.get(0); //오토언박싱 //Integer integer = list.get(0);.. 2023. 1. 29.
[모던 자바 인 액션] 람다 표현식 3.1 ~ 3.2 람다와 스트림을 잘하고싶어서..기억 정리 겸 올림. 람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것 람다 표현식에는 이름은 없지만, 파라미터 리스트, 바디, 반환 형식, 발생할 수 있는 예외 리스트를 가질 수 있다. 여러가지 람다 표현식 () -> {} 파라미터가 없고 void 를 반환 () -> "Jeong" 파라미터가 없으며 문자열을 반환 () -> { return "Jeong" } 파라미터가 없으면 명시적으로 return 문을 이용해 문자열을 반환 람다 표현식에는 return이 함축되어 있다.return 문을 명시적으로 사용하지 않아도 된다. 어디에, 어떻게 람다를 사용할까 함수형 인터페이스라는 문맥에서 람다 표현식을 사용할 수 있다. 함수형 인터페이스 https:.. 2023. 1. 29.
자바 @FunctionalInterface 는 무엇인가? @FunctionalInterface 는 함수형 인터페이스임을 가르키는 어노테이션이다. @FunctionalInterface 로 인터페이스를 선언했지만 실제로 함수형 인터페이스가 아니면 컴파일러가 에러를 발생시킨다. 추상 메서드가 1개가 아닐시 "Multiple nonoverriding abstract methods found in interface Foo(인터페이스 Foo에 오버라이드 하지 않은 여러 추상 메서드가 있음) 같은 에러가 발생할 수 있음. 2023. 1. 29.
자바 시그니처? 생각난 김에 적어본다.. 자바 시그니처 메소드 이름과 매개변수 타입, 리턴 타입으로 이루어진 것을 말한다. 같은 이름의 메소드를 여러개 정의하는 것을 허용, 이는 오버로딩 이라 한다. 자바 컴파일러는 메서드 이름, 파라미터를 이용하여 구분함. 2023. 1. 29.
함수형 인터페이스 간략히 알아보자. 함수형 인터페이스 1개의 추상 메서드를 갖는 인터페이스 자바 8 버전 이후에는 Default 메서드 사용 가능 구현된 함수형 인터페이스는 @FunctionalInterface 를 표시하여 검증할 수 있다. 맞지 않는 경우 에러가 발생(필수로 명시하지 않아도 됨 => 의도 전달 목적 검증 목적) https://jeong0427.tistory.com/manage/posts/ Single Abstract Method(SAM) 이라고도 불림. 아래는 간단한 함수형 인터페이스를 이용한 람다문법. @FunctionalInterface interface Worker { void work(); } public class FITest { static void execute(Worker worker) { worker.wo.. 2023. 1. 29.
자바 프레디케이트란?예제코드와 함께..간단히 알아보자. 모던 자바 인 액션 공부하다 살펴 봄. 프레디케이트(predicate)란 무엇인지 간단히 알아봄. 함수형 인터페이스로 입력된 값을 확인하여 false, true 를 반한하는 메소드 test()를 가지고 있음 public class Ch01 { public static boolean isGreenApple(Apple apple) { return "green".equals(apple.getColor()); } public static boolean isHeavyApple(Apple apple) { return apple.getWeight() > 150; } public static List filterApples(List inventory, Predicate p) { List result = new Arra.. 2023. 1. 29.
자바 cpu 개수 구하기 cpu 개수구하기 => int availableProcessors = Runtime.getRuntime().availableProcessors(); System.out.println(availableProcessors); Executors.newCachedThreadPool 처럼 필요시 알아서 생성되는 스레드도 있으니 확인해보자. ExecutrService 를 통한 스레드 작업을 할때 이용해 봐야겠다. 참고하면 좋은 곳: https://m.blog.naver.com/mals93/220743747346 2023. 1. 28.
[RealMysql 8.0]04아키텍처 4.2.7 ~ 4.2.7.4 InnoDB 버퍼 풀 InnoDb 스토리지 엔진에서 가장 핵심적인 부분으로 "디스크의 데이터 파일이나 인덱스 정보를 메모리에 캐시해 두는 공간"이다 쓰기 작업을 지연시켜 일괄 작업할 수 있게 해주는 버퍼 역할도 같이 한다. 일반적인 application 에서는 insert, update, delete 처럼 데이터 변경하는 쿼리는 데이터 파일의 여러곳에 위치한 레코드를 변경하기 때문에, 랜덤한 디스크 작업이 발생하지만, 버퍼 풀을 통해 이러한 변경된 데이터를 모아서 처리하면 랜덤한 디스크 작업의 횟수를 줄일 수 있다. 버퍼 풀의 크기 설정 운영체제와 각 클라이언트 스레드가 사용할 메모리도 충분히 고려해서 설정해야 한다. 초기설정 후 모니터링을 통하여 조금씩 줄이거나 늘리는걸 추천 운영체제 전체 메모리 8G.. 2023. 1. 28.
728x90