일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 토비의 스프링 정리
- gradle
- 자바
- list
- spring
- K8s
- Stack
- Collection
- 스프링
- 백준
- Real MySQL
- 이스티오
- 쿠버네티스
- Java
- 토비의 스프링
- MSA
- thread
- redis
- 보조스트림
- mysql
- SpringBoot
- JPA
- 스트림
- Stream
- IntellJ
- jvm
- OS
- 자바 ORM 표준 JPA 프로그래밍
- GC
- Kotlin
- Today
- Total
목록Java (58)
인생을 코딩하다.
자바 초심자 입장에서 은근히 간과할 수 있는 내용일수도 있다고 생각하여 글을 작성해보았습니다. 저 또한 자바 성능 튜닝 이야기를 처음 읽었을때 "앗 차!" 했던 내용이였습니다. 혹시나 자바를 처음 시작하신 분들에게 도움이 되었으면 하는 마음에 이 글을 바칩니다. 보통 가장 많이 쓰는 for문 public static void example(List numbers) { for (int i = 0; i < numbers.size(); i++) { .... } } 만약 numbers의 size가 10만 이라고 가정하면, 위의 코드는 불필요한 size()메서드를 10만번 반복 하는 것입니다. public static void example(List numbers) { int numbersSize = number..
요즘 읽기 좋은 코드, 헙업할 때 좋은 코드란 뭘까에 관해 많이 고민중이고.. 공부하려고 하는중인데 그래서 디자인 패턴에 관해 정확히 알아둬야 겠다는 생각이 들어 공부하고 지식 공유합니다. 디자인 패턴이란 진짜 간단히 말하면 알아보기 쉽게, 즉 효율적인 의사소통을 위한 코드? 그러한 방법들을 몇 가지의 일종의 패턴으로 분류해 놓은 것 또 템플릿 메소드 패턴이란 디자인 패턴 중 하나 템플릿 메서드를 공부하기 전에, 추상 클래스,추상 메서드에 관해 모른다면 먼저 공부해보시길 바라며... 템플릿 메서드란? 프레임워크에서 설계를 할 때, 흔하게 사용되는 방법 중 하나 - 어떤 작업을 처리할 때 일부분을 서브 클래스로 캡술화(Aihyungil.java, ManualHyungil.java)하여 전체 일을 수행하는 ..
stream API는 특정 조건을 만족하는 요소들을 얻을 수 있도록 세가지 매칭 매소드를 제공한다. allMatch() -> 요소들이 매개값으로 주어진 조건에 맞는지 검사 /** * 이 스트림의 어떤 요소도 제공된 술어와 일치하지 않는지 여부를 반환한다. * 필요하지 않은 경우 모든 요소에 대한 술어를 평가할 수 없음 * 결과를 결정한다. 스트림이 비어 있으면 {@code true}이(가) * 반환되고 술어는 평가되지 않는다. * * 이것은 단락 회로 입니다. * 터미널 운영. * * @api참고 * 이 방법은 의 보편적 정량화를 평가한다. * 스트림의 요소에 대한 부정 술어(모든 x ~P(x)) 만약 * 하천은 비어 있으며, 수량화는 빈칸으로 만족한다고 함 * 및 는 항상 {@code true}이며, ..
NullPointerException 문제를 해결할 수 있는 방법을 제공한다. 간단히 말하면 기본적으로 null값을 피하고 싶을때 쓴다. (예를 들면 String이나 객체 등에서 null값이 생길 때) 예를 들면, 객체가 있는데 멤버 함수나 멤버 변수를 호출할 때, 그 객체가 살아있는 줄 알았는데 죽어있네?..객체가 null값일 때 멤버 변수 혹은 멤벼 변수에 접근하면 NullPointerException이 발생해서 프로그램이 죽어버린다. 이런 현상을 최대한 막았으면 좋겠다고 생각할때 나온게 Optional이다. 옵셔널은 제네릭이다. -> 옵셔널이라는 클래스 초기화 목적 Optional cls1 = Optional.empty(); null값도 허용한다. String str = null; Optional ..
스트림 자료의 대상과 관계없이 동일한 연산을 수행할 수 있는 기능(자료의 추상화) 배열, 컬렉션에 동일한 연산이 수행되어 일관성 있는 처리 가능 한번 생성하고 사용한 스트림은 재사용 할 수 없음 스트림 연산은 기존 자료를 변경하지 않음 중간 연산과 최종 연산으로 구분 됨 최종 연산이 수행되어야 모든 연산이 적용되는 지연 연산 스트림 연산 - 중간 연산 중간 연산 - filter(), map() 조건에 맞는 요소를 추출 (filter()) 하거나 요소를 변환함 (map()) 문자열의 길이가 5 이상인 요소만 출력하기 sList.stream().filter(s -> s.length() >= 5).forEach(s -> System.out.println(s)); 스트림 생성. 중간연산. 최종연산 고객 클래스에..
람다식이란? 자바에서 함수형 프로그래밍을 구현하는 방식 클래스를 생성하지 않고 함수의 호출만으로 기능을 수행 함수형 인터페이스를 선언함 자바 8부터 지원되는 기능 함수형 프로그래밍이란? 순수 함수를 구현하고 호출 매개 변수만을 사용하도록 만든 함수로 외부 자료에 부수적인 영향이 발생하지 않도록 함 입력 받은 자료를 기반으로 수행되고 외부에 영향을 미치지 않으므로 병렬처리등에 가능 안정적인 확장성 있는 프로그래밍 방식 람다식 문법 매개 변수 하나인 경우 괄호 생략 가능(두 개인 경우는 괄호를 생략할 수 없음) str -> {System.out.println(str);} 증괄호 안의 구현부가 한 문장인 경우 중괄호 생략 str -> System.out.println(str); 중괄호 안의 구현부가 한 문장이..
1. 프로세스 메모리 애플리케이션이 메모리에 로드되어 실행될 때, 이것을 운영체제 프로세스(process)라고 부른다. 프로세스가 차지하는 메모리는 몇 개의 세그먼트로 나뉘어진다. 1) Stack Segment 메소드가 호출되면, Stack Segment 영역에 그 메소드 공간이 할당된다. 이 공간에 그 메소드의 파라미터 변수, 지역 변수가 생성된다. 메소드가 리턴될 때, 이 메모리 공간도 제거된다. 재귀 호출이 무한 루프에 빠지면, Stack Segment 영역이 부족해져서 Stack Overflow Error가 발생한다. Stack Overflow Error의 원인은 대부분 재귀 호출이 무한 루프에 빠진 것이다. 2) Data Segment Data Segment 영역에 생성되는 변수는 다음과 같다...