@Builder스프링으로 Lombok을 사용하면 객체를 생성할 때, @Builder를 통해 객체를 생성하는 경우가 많습니다.생성자에 매개 변수가 많을 때, @Builder를 사용하면, 코드를 읽기가 훨씬 쉬워집니다.new 생성자를 통해 객체를 생성하면 User 객체에 필요한 파라미터가 무엇을 의미하는지 알아보기가 힙듭니다.빌더를 통해 객체를 생성하면, 파라미터로 무엇이 들어가는지 알아보기가 쉬워집니다.@Builderpublic User(String displayName, String password, String email) { this.displayName = displayName; this.password = password; this.email = email;} //new 생성..
final이번 포스팅은 자바에서 final 키워드에 대해 포스팅하려고 합니다.스프링 프로젝트를 하면 DI를 할 때나 static 키워드를 선언할 때, 변하지 않는다는 개념으로 사용하는데, 사용하면서도 계속 무슨 의미인지 헷갈리는 느낌이 있어 공부할 겸 포스팅해보려고 합니다. 클래스에서 final 선언클래스에 final을 선언하면 상속을 해 줄 수 없습니다..String, StringBuilder, StringBuffer 등에서 사용되는데 이 클래스를 상속받아 클래스의 기본 속성을 변경하는 것을 막기 위해 사용됩니다.메서드에서 final 선언메서드에서 final을 선언하면 오버라이딩을 할 수 없게 됩니다.이것 역시, 메서드를 변경하는 것을 막기 위함입니다.변수에서 final 선언변수에서 final을 선언하..
Variable오늘은 자바의 변수에 대해 포스팅하려 합니다.변수의 종류, 스코프, 라이프 타임에 대해 알아보겠습니다.변수의 종류자바의 변수 종류부터 알아보겠습니다.1. 인스턴스 변수(not static field)static 키워드 없이 클래스 안에 선언된 필드(변수).클래스의 인스턴스마다 변수의 값이 다름.stack에 저장된다.(객체는 heap에 저장, 참조 변수는 stack)2. 클래스 변수(static field)static 키워드가 붙은 필드.모든 클래스에서 공용으로 사용가능하다.JVM의 메모리 영역에 저장된다.3. 로컬 변수메서드에서 임시로 상태를 저장하는 변수.{}안에서만 사용가능하다.stack에 저장된다.4. 파라미터 변수메서드의 인자로 사용되는 변수.stack에 저장된다.int a; // ..
이번 포스팅은 StringBuffer를 알아보고 StringBuilder와의 차이에 대해 포스팅하려고 합니다.StringBuffer와 StringBuilder의 차이우선, StringBuffer는 StringBuilder와 마찬가지로 불변 객체가 아닙니다.따라서, 문자열을 수정할 경우 String처럼 새로운 객체가 생성되지 않습니다.차이점- 두 클래스의 차이점은 thread-safe한가 그렇지 않은가로 나눌 수 있습니다.- StringBuffer의 경우 thread-safe합니다. StringBufferd가 가진 메서드에 synchronized가 붙어 있는 것을 확인할 수 있습니다. 즉, 멀티 스레드인 상황에서 안전합니다.- 반면, StringBuilder의 경우는 thread-safe하지 않습니다. 멀..
오늘은 StringBuilder에 대해 포스팅하려고 합니다. 정확히는 String과 StringBuilder의 속도차이에 대해 이야기하려고 합니다.StringBuffer와 StringBuilder의 차이는 다음 포스팅에 알아보겠습니다!StringBuilderStringBuilder 클래스는 변경가능한 문자열의 객체를 생성합니다.즉, String처럼 문자를 수정할 때마다 새로운 객체를 생성하지 않습니다.하나의 객체로 문자열을 수정하는 것이 가능합니다.StringBuilder stringBuilder1 = new StringBuilder("test");System.out.println("stringBuilder1 = " + stringBuilder1); // stringBuilder1 = testString..
이번 포스팅은 String대해 포스팅하려고 합니다.알고리즘을 풀다보면, 연산 속도 때문에 String을 +를 사용해서 문자열을 연결하기 보다 StringBuilder를 사용하곤 합니다.그래서, 이러한 이유를 알아 보기위해 먼저 String에 대해 공부하며 포스팅하려고 합니다!먼저, String에 대해서 살펴보면, String 클래스는 불변 객체라는 것을 알고 있으셔야 합니다!String 객체 생성 방법그리고,String 변수를 만드는 방법은 2가지가 있습니다.방법 1: 리터럴 값을 직접 변수에 할당하는 방법방법 2: new 생성자를 통해 인스턴스를 생성하는 방법String str1 = "test"; // 방법 1String str2 = new String("test); // 방법 2System.out.p..
이번 포스팅은 프로젝트 중 발생한 문제를 해결하는 과정에서 알게된 Deep Copy(깊은 복사)와 Swallow Copy(얕은 복사)에 대해서 포스팅 해보겠습니다.프로젝트 개발 중, 정기 결제를 개발해야 하는 상황이었습니다. 사용한 order 객체를 그대로 복사해 첫 번째 order 객체와 동일한 order 객체의 정보를 이용하여 결제 요청을 보내야했습니다.저는 처음에 첫 결제 때 사용한 order 엔티티를 가지고 와서 그대로 사용하려 했지만 에러가 발생했습니다.org.hibernate.HibernateException: Found shared references to a collection이러한 에러가 나서 찾아보니 특정 영속 객체에서 참고하고 있는 객체를 다른 영속 객체에 주입시킬 경우에 발생하는 에..
스프링 컨테이너가 싱글톤 컨테이너의 역할을 하면서 일반적으로 스프링 컨테이너에 저장된 bean들을 싱글톤으로 관리합니다.물론, 설정에 따라 다를 순 있습니다.요청이 올 때마다 객체를 생성하는 것이 아니라 이미 만들어진 빈 하나를 공유해서 사용하는 것 입니다.이렇게 되면 불필요한 메모리 낭비를 방지할 수 있습니다. 하지만, 싱글톤 방식에서 주의할 점이 존재합니다.싱글톤 패턴이나, 싱글톤 컨테이너를 사용하는 경우, 인스턴스 하나를 공유하기 때문에 객체의 상태를 stateful하게 설계를 하면 안된다는 것 입니다. 즉,필드가 있어선 안 된다는 것을 의미합니다.만약 필드가 공유되게 된다면 심각한 오류가 발생할 수 있습니다.필드 공유 문제 상황Hello라는 클래스를 싱글톤 패턴으로 만들어 보았습니다.Hello..
- Total
- Today
- Yesterday
- fetch join
- StringBuilder
- http메서드
- 세션
- socket통신
- N + 1
- 항해99
- 네트워크
- 프로그래머스
- 정기결제
- 리트코드
- jpa
- AttributeConverter
- 싱글모듈
- 벌크헤드
- java
- 알고리즘
- 백준
- Http 버전
- 무상태성
- 외부API
- leetcode
- spring.
- 대용량데이터
- redisson
- 디자인패턴
- SpringBatch
- spring session
- 커넥션풀문제
- 분산락
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |