일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- @Aspect
- 자바의 정석 기초편 ch1
- 코드로 시작하는 자바 첫걸음
- jpa - 객체지향 쿼리 언어
- 타임리프 - 기본기능
- 자바의 정석 기초편 ch12
- 스프링 mvc2 - 검증
- 스프링 db1 - 스프링과 문제 해결
- 스프링 mvc2 - 타임리프
- 스프링 db2 - 데이터 접근 기술
- 자바의 정석 기초편 ch2
- 자바의 정석 기초편 ch7
- 스프링 고급 - 스프링 aop
- 자바의 정석 기초편 ch4
- 자바의 정석 기초편 ch11
- 자바의 정석 기초편 ch14
- 스프링 mvc1 - 스프링 mvc
- 스프링 입문(무료)
- 자바의 정석 기초편 ch13
- 자바의 정석 기초편 ch9
- 게시글 목록 api
- 자바의 정석 기초편 ch3
- 자바의 정석 기초편 ch6
- 자바의 정석 기초편 ch5
- 자바의 정석 기초편 ch8
- jpa 활용2 - api 개발 고급
- 스프링 mvc2 - 로그인 처리
- 2024 정보처리기사 시나공 필기
- 스프링 mvc1 - 서블릿
- 2024 정보처리기사 수제비 실기
- Today
- Total
목록유튜브 공부/JAVA의 정석 기초편(유튜브) (75)
나구리의 개발공부기록
1) collect() - 최종연산Collector를 매개변수로 하는 스트림의 최종연산 (Collector는 인터페이스)Collector를 구현한 Collectors클래스의 메서드를 인수로 사용할 수 있음Object collect(Collector collector) // Collector를 구현한 클래스의 객체를 매개변수로Object collect(Supplier supplier, BiConsumer accumulator, BiConsumer combiner) // 잘 안쓰임2) Collector - 인터페이스수집(collect)에 필요한 메서드를 정의해 놓은 인터페이스supplier(), accumulator()가 핵심 public interface Collector { // T(요소)를 ..
1) OptionalT타입 객체의 래퍼클래스이며 간접적으로 null을 다루고 코드를 간결하게 함null을 직접 다루는 것은 위험(NullPointerException 발생) 하기 때문에 null체크을 항상 체크해야하는데 if문으로 항상 null을 체크하게되면 코드가 지저분해지게 되어 Optional을 반환타입으로 자주 사용함public final class Optional { private final T value // 모든 종류의 객체를 저장 가능(참조형), null포함 ...} (1) Optional객체를 생성하는 다양한 방법of는 null을 허용하지 않고 ofNullable은 null을 허용String str = "abc";Optional optVal = Optional.of(str)..
1) 스트림의 연산들(1) 스트림의 중간연산 요약중간연산설명Stream distinct()중복을 제거Stream filter(Predicate predicate) (조건식 입력)조건에 안 맞은 요소를 제외Stream limit(long maxSize)스트림의 일부를 잘라냄Stream skip(long n)스트림의 일부를 건너뜀Stream peek (Consumer action) (forEach 와 비슷)스트림의 요소에 작업수행Stream sorted() (기본정렬)Stream sorted(Comparator comparator) (정렬기준을 입력)스트림의 요소를 정렬StreamDoubleStreamInt StreamLongStreammap(Function mapper)mapToDouble(ToDouble..
1) 스트림(Stream)Java8부터 적용됨데이터의 연속적인 흐름, 즉 메서드 체인 방식으로 데이터들의 연산결과를 반환다양한 데이터 소스(컬렉션, 배열)를 표준화된 방법으로 다루기 위하여 나옴(1) 동작 방식데이터소스 [컬렉션(List,Set,Map), 배열]Stream 생성중간연산(여러번)최종연산(한번)결과반환List list = Arrays.asList(1, 2, 3, 4, 5);Stream intStream = list.stream(); // 컬렉션Stream strStream = Stream.of(new String[]{"a", "b", "c"}); // 배열Stream evenStream = Stream.iterate(0, n -> n + 2); // 0,2,4,6, ...Stream rand..
1) java.util.function패키지자주 사용되는 다양한 함수형 인터페이스를 제공함각 함수형 인터페이스별로 가지고있는 추상메서드가 다르며 반환값, 매개변수가 있는것도있고 없는것도 있음함수형 인터페이스메서드설 명java.lang.Runnable void run() 매개변수, 반환값 없음Supplier T get()-> T매개변수 없음, 반환값 있음ConsumerT ->void accept(T t) 매개변수 있음, 반환값 없음(supplier와 반대)FunctionT ->R apply(T t)-> R하나의 매개변수를 받아 결과를 반환(일반적인 함수)PredicateT ->boolean test(T t)-> boolean조건식을 표현, 매개변수는 하나, 반환 타입은 boolean (1) Predicat..
** 참고자바는 JDK 1.8부터 함수형 언어의 기능을 탑재하여 객체지향과 함수형을 동시에 지원함빅데이터가 뜨면서 함수형 언어가 각광 받기 시작하여 OOP언어들도 함수형 언어의 기능을 탑재하기 시작함 (Haskell,Erlang,Scala등등)1) 람다식(Lambda Expression)함수(메서드)를 간단한 '식(expression)'으로 표현하는 방법이며 코드의 간결성과 가독성을 높임람다식은 익명 함수(이름이 없는 함수,anonymous function) 중 하나임(1) 람다식 작성하기메서드의 이름과 반환타입을 제거 후 '->'를 블록 { } 앞에 추가반환값이 있는 경우, 식이나 값만 적고 return을 생략할 수 있으며 문장 끝에 세미콜론을 안적음매개변수의 타입이 추론이 가능하면 생략 가능(대부분 ..
1) 쓰레드의 동기화(synchronization)한 쓰레드가 진행중인 작업을 다른 쓰레드가 간섭하지 못하게 막는 것멀티 쓰레드 프로세스에서는 쓰레드의 작업이 다른쓰레드에 영향을 미칠 수 있음진행중인 작업이 다른 쓰레드에게 간섭받지 않게하려면 '동기화'가 필요하며 동기화를 하려면 간섭받지 않아야 하는 문장들을 '임계 영역'으로 설정해야함임계영역은 락(lock)을 얻은 단 하나의 쓰레드만 출입가능함(객체 1개에 락 1개)(1) synchronized를 이용한 동기화synchronized로 임계영역(lock이 걸리는 영역)을 설정할 때 메서드 전체를 임계영역으로 설정하거나 특정영역을 임계영역으로 지정할 수 있음임계영역은 한번에 한 쓰레드만 사용할 수 있기 때문에 영역을 최소하는 것이 좋으며 임계영역이 많을 ..
1) static void sleep() 자기자신에게 동작하며 현재 쓰레드를 지정된 시간동안 멈추게 함예외처리를 필수로 해야하며 InterruptedException이 발생하면 깨어남특정 쓰레드를 지정해서 멈추게 하는 것은 불가능하며 자기자신의 쓰레드만 적용// 코드 예시static void sleep(long millis) // 천분의 일초 단위 1000 = 1초static void sleep(long millis, int nanos) // 천분의 일초 + 나노초(10의 -9제곱)// 예외처리 항상 필수try { Thread.sleep(1, 500000); // 쓰레드를 0.0015초 동안 멈추게 한다} catch(InterruptedException e) {} // Exception의 자손 -> 예..
1) 쓰레드의 우선순위(priority of thread)작업의 중요도에 따라 쓰레드의 우선순위를 다르게 설정하여 특정 쓰레드가 더 많은 작업시간을 갖게 할 수 있음그러나 희망사항에 불가함(마음대로 진행 되지는 않음) - OS의스케줄러가 참고해서 진행 함void setPriority(int newPriority) //쓰레드의우선순위를 지정한 값으로 변경int getPriority() // 쓰레드의 우선순위를 반환public static final int MAX_PRIORITY = 10 //최대 우선순위public static final int MIN_PRIORITY = 1 //최소 우선순위public static final int NORM_PRIORITY = 5 //보통 우선순위 (1) 예제실행 해보면 ..
1) 쓰레드(1) 프로세스(process - 공장, 작업환경)실행중인 프로그램자원(resource - 메모리, CPU 등등)과 쓰레드로 구성되어 있음(2) 쓰레드(thread - 일꾼) 프로세스 내의 실제 작업을 수행하며 모든 프로세스는 최소한 하나의 쓰레드를 가지고 있음싱글 쓰레드 프로세스 = 자원 + 쓰레드멀티 쓰레드 프로세스(쓰레드가 여러개인 것) = 자원 + 쓰레드 + 쓰레드 + ... + 쓰레드(3) 싱글쓰레드인 2프로세스 vs 1프로세스 + 2 쓰레드하나의 새로운 프로세스를 생성하는 것보다 하나의 새로운 쓰레드를 생성하는 것이 비용이 적게 듦자바가 성장한 계기로 과거 웹서버에서 웹프로그램을 작성할 때 CGI(싱글쓰레드) 와 Java Servlet(멀티쓰레드)를 사용 했으나 1999년말 웹사용량..