일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 의존성
- 백준
- Docker
- 우아한세미나
- 프리코스
- 우아한테크코스
- HTTP
- 레벨2
- CircuitBreaker
- REDIS
- 프로그래머스
- yml
- 스프링 부트
- 세션
- Paging
- MSA
- 자바
- JUnit5
- 코드리뷰
- 미션
- Spring Batch
- 우테코
- 스프링부트
- AOP
- JPA
- 서블릿
- AWS
- mock
- 트랜잭션
- Level2
- Today
- Total
목록백앤드 개발일지/자바 (9)
늘
클래스 변수와 인스턴스 변수의 일반적인 차이클래스 변수와 인스턴스 변수의 차이점이라면 많은 블로그들에서 설명해주고 있습니다.대표적으로 아래와 같죠.클래스 변수와 인스턴스 변수의 초기화 차이그렇다면 초기화하지않고 선언만 해주었을때 아래의 코드의 결과는 무엇이 나올까요? public class VariableTest { static int a; public static void main(String[] args) { System.out.println(a); }}결과는 0이 나옵니다. 만약 String 객체로 바꾼다면 null이 나오게 됩니다.그렇다면 인스턴스 변수로 바꾸면 어떻게 나올까요?네 초기화가 되어있지 않아서 컴파일에서 에러가 나옵니다.그렇다면 클래스 변수는 초기화를 하지..
Java8에서 추가된 Optional은 null을 관리하기 편하게 해주는 객체이다. Optional을 사용하다 보면. orElse() 나 .orElseGet()을 사용한다. 해당 차이점에 대해서 경험한 내용을 적어보려고 한다. orElse() Coupon coupon = couponRepository.findById(1L).orElse(new Coupon()); 위와 같이 Id가 1인 Coupon이 있으면 해당 Coupon을 반환하고 없으면 new Coupon()을 반환하는 로직이다. orElseGet() Coupon coupon = couponRepository.findById(1L).orElseGet(() -> new Coupon()); 위와 같이 람다를 통해 반환하는 모습을 볼 수있다. 즉, orE..
자바는 최상위에 Collection Framework를 가진다. 크게 Collection Framework하위에 Map과 Collection인터페이스로 나뉜다. 컬렉션 프레임워크는 컬렉션을 표현하고 조작하기 위한 통합 아키텍처로, 컬렉션이 구현 세부 사항과 독립적으로 조작될 수 있도록 합니다. 이러한 컬렉션 프레임워크 덕분에 데이터 구조와 알고리즘을 제공하여 직접 작성할 필요가 없는 장점이 있습니다. 또한 컬렉션 인터페이스를 구현함으로써 List, Set, Queue에서는 동일한 api를 사용합니다. ex) add(), clear()... Map Key와 Value의 형태로 이루어진 데이터 집합 순서를 보장하지 않는다. Key는 중복이 허용되지 않고, Value는 중복을 허용한다. 내부적으로 링크드리스트..
Reflection API란? 구체적인 클래스 타입을 알지 못해도 그 클래스의 정보(메서드, 타입, 변수 등등)에 접근할 수 있게 해주는 자바 API다. 사용하는 Library, Framework, API, Feature Jackson, GSON 등의 JSON Serialization Library Log4 j2, Logback 등의 Logging Framework Apache Commons BeanUtils 등의 Class Verification API Spring의 @Autorwired와 같은 DL, DI 기능 (: processInject(), inject() Method ) Spring Contatiner의 BeanFactory에서 사용 내부적으로 Spring의 ReflectionUtils라는 A..
테스트 더블 더블이란: 할리우드에서 배우들의 대역을 해주는 사람을 더블이라고 한다. 그래서 말 그대로 테스트할 때 실제 도메인(주연)을 사용하지 않고 Double(대역)을 사용해서 테스트를 한다고 생각하면 된다. 테스트 더블에는 크게 위와 같이 Dummy, Stub, Spy, Mock, Fake로 나눠진다. Dummy 인스턴스화 하여 구현한 가짜 객체 기능 구현이 안돼있다. Stub dummy를 이용하여 실제로 동작하는 것처럼 보이게 만드는 객체 기능 구현이 안돼 있다. 상태 검증을 위한 객체이다. 상태 검증이란 메서드가 수행된 후, 객체의 상태를 보며 올바르게 동작했는지 확인한다는 뜻입니다. 객체를 다양한 조건으로 값을 만들어주고 던져줘도 항상 동일한 값을 반환 Spy 스파이처럼 기록을 하는 역할을 가..
자바를 사용하다보면 List를 만드는데 여러가지 방법들을 사용해왔었다. 그 차이를 모르고 손에 익히는대로 사용했는데 이번에 정리를 하려고 한다. import java.util.ArrayList; // new ArrayList() import java.util.Arrays; // Arrays.asList() import java.util.List;// List.of() 차이점 1. 원소를 추가/삭제할 수 있나? 원소를 추가/삭제 set 사용 가능 new ArrayList() 가능 가능 Arrays.asList() 불가능 가능 List.of() 불가능 불가능 ArrayList()에 List값을 하나만 넣으려면 List.of()를 감싸서 넣으면 된다. 그렇지 않고 List.of()로 한 후 add를 하면 아래..
오랜만에 글을 작성하네요.. ㅎ🤣🤣 우테코 전에는 스프링으로 프로젝트를 하면서 필요한 자바 문법들을 찾아서 공부했다면, 우테코를 시작하면서는 자바 본연에 대해 공부를 하고 있는데요. 오늘은 java8 람다식과 스트림에 대해 알아보려고 합니다. 사실 자동차 경주 미션을 진행하면서 오랜만에 람다를 사용하면서 매번 찾아보면서 사용했던 람다를 한번 공부해보자는 생각으로 작성합니다. 람다식(Lambda Expression)🤡 문법 문법은 간단합니다. 코드를 보는게 이해가 더 빠를 것이라고 생각됩니다. public int sum(int a, int b) { return a + b; } //람다식 변환 (a, b) -> a + b; 장점 매우 깔끔하고 알아보기도 쉽다. 동작을 사용하기 위해서 클래스를 정의할 필요도 ..
동시성 내용이 어려워서 개인적으로 따로 한 번 정리를 해보았다. 13장 동시성📌 동시성과 깔끔한 코드는 양립하기 어렵다. 👀 여러 스레드를 동시에 돌리는 이유 & 어려움 이런 어려움에 대처하여 깨끗한 코드를 작성하는 방법 동시성을 테스트하는 방법과 문제점 동시성이 필요한 이유? 동시성은 결합을 없애는 전략이다. 무엇(what) 과 언제(when)를 분리하는 전략이다. 서블릿은 웹 혹은 EJB라는 컨테이너 아래서 돌아간다. 이들 컨테이너는 동시성을 부분적으로 관리한다. 웹 요청이 들어올 때마다 -> 웹 서버는 비동기식으로 서블릿을 실행한다. 프로그래머는 모든 웹 요청을 관리할 필요가 없다. 원칙적으로 각 서블릿 스레드는 다른 서블릿 스레드와 무관하게 자신만의 세상에서 돌아가기 때문이다. 동시성에 대한 오해..
프리코스를 진행하면서 새롭게 안 사실을 말하라고 하면 우선적으로 일급 컬랙션을 말할 것 같다. 긴 말은 생략하고 정의와 활용법 그리고 왜 사용하는 지를 알아보겠다!😄😄 일급컬렉션이란(First Class Collection)? - Collection을 Wrapping하면서, 그 외 다른 멤버 변수가 없는 상태를 일급 컬렉션이라고 한다. public class Cars{ List cars = new ArrayList(); Cars(List cars){ this.cars = cars; } ... } 역시 코드를 보는 게 이해하는 게 더 쉬울 것 같다! 위에 처럼 구현된 게 일급 컬렉션이다. 일급 컬렉션의 장점? 비즈니스에 종속적인 자료구조 Collection의 불변성을 보장 상태와 행위를 한 곳에서 관리 이..